semantifold 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -15
- package/build/index.d.ts +52 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +60 -8
- package/build/src/artifact-path.d.ts +23 -1
- package/build/src/artifact-path.d.ts.map +1 -1
- package/build/src/artifact-path.js +45 -3
- package/build/src/artifacts.d.ts.map +1 -1
- package/build/src/artifacts.js +66 -1
- package/build/src/backends/android.d.ts +49 -0
- package/build/src/backends/android.d.ts.map +1 -0
- package/build/src/backends/android.js +1274 -0
- package/build/src/backends/c-validation.d.ts.map +1 -1
- package/build/src/backends/c-validation.js +7 -3
- package/build/src/backends/cpp-validation.d.ts.map +1 -1
- package/build/src/backends/cpp-validation.js +7 -3
- package/build/src/backends/csharp.js +7 -1
- package/build/src/backends/dart-runtime.d.ts +2 -0
- package/build/src/backends/dart-runtime.d.ts.map +1 -0
- package/build/src/backends/dart-runtime.js +41 -0
- package/build/src/backends/dart.d.ts +20 -0
- package/build/src/backends/dart.d.ts.map +1 -0
- package/build/src/backends/dart.js +321 -0
- package/build/src/backends/effects.d.ts +60 -0
- package/build/src/backends/effects.d.ts.map +1 -0
- package/build/src/backends/effects.js +746 -0
- package/build/src/backends/go.js +18 -4
- package/build/src/backends/identifiers.d.ts +36 -4
- package/build/src/backends/identifiers.d.ts.map +1 -1
- package/build/src/backends/identifiers.js +160 -10
- package/build/src/backends/index.d.ts.map +1 -1
- package/build/src/backends/index.js +27 -4
- package/build/src/backends/ios.d.ts +68 -0
- package/build/src/backends/ios.d.ts.map +1 -0
- package/build/src/backends/ios.js +1503 -0
- package/build/src/backends/java.d.ts.map +1 -1
- package/build/src/backends/java.js +429 -36
- package/build/src/backends/javascript.d.ts +6 -0
- package/build/src/backends/javascript.d.ts.map +1 -1
- package/build/src/backends/javascript.js +380 -24
- package/build/src/backends/kotlin-runtime.d.ts +3 -0
- package/build/src/backends/kotlin-runtime.d.ts.map +1 -0
- package/build/src/backends/kotlin-runtime.js +29 -0
- package/build/src/backends/kotlin.d.ts +33 -0
- package/build/src/backends/kotlin.d.ts.map +1 -0
- package/build/src/backends/kotlin.js +138 -0
- package/build/src/backends/native-validation.d.ts +2 -2
- package/build/src/backends/native-validation.d.ts.map +1 -1
- package/build/src/backends/native-validation.js +2 -2
- package/build/src/backends/ordered-expressions.d.ts.map +1 -1
- package/build/src/backends/ordered-expressions.js +39 -7
- package/build/src/backends/php-stdlib-support.d.ts +19 -0
- package/build/src/backends/php-stdlib-support.d.ts.map +1 -0
- package/build/src/backends/php-stdlib-support.js +227 -0
- package/build/src/backends/php.d.ts.map +1 -1
- package/build/src/backends/php.js +448 -33
- package/build/src/backends/program.d.ts +83 -0
- package/build/src/backends/program.d.ts.map +1 -0
- package/build/src/backends/program.js +1309 -0
- package/build/src/backends/python.js +7 -1
- package/build/src/backends/ruby.d.ts.map +1 -1
- package/build/src/backends/ruby.js +310 -24
- package/build/src/backends/rust-runtime.d.ts +7 -0
- package/build/src/backends/rust-runtime.d.ts.map +1 -0
- package/build/src/backends/rust-runtime.js +32 -0
- package/build/src/backends/rust-validation.d.ts +9 -0
- package/build/src/backends/rust-validation.d.ts.map +1 -0
- package/build/src/backends/rust-validation.js +78 -0
- package/build/src/backends/rust.d.ts +24 -0
- package/build/src/backends/rust.d.ts.map +1 -0
- package/build/src/backends/rust.js +344 -0
- package/build/src/backends/scalars.d.ts +14 -6
- package/build/src/backends/scalars.d.ts.map +1 -1
- package/build/src/backends/scalars.js +167 -17
- package/build/src/backends/shared.d.ts +23 -4
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +2174 -62
- package/build/src/backends/stdlib-support.d.ts +14 -0
- package/build/src/backends/stdlib-support.d.ts.map +1 -0
- package/build/src/backends/stdlib-support.js +237 -0
- package/build/src/backends/swift-runtime.d.ts +3 -0
- package/build/src/backends/swift-runtime.d.ts.map +1 -0
- package/build/src/backends/swift-runtime.js +14 -0
- package/build/src/backends/swift.d.ts +8 -0
- package/build/src/backends/swift.d.ts.map +1 -0
- package/build/src/backends/swift.js +127 -0
- package/build/src/backends/typescript.d.ts.map +1 -1
- package/build/src/backends/typescript.js +344 -24
- package/build/src/backends/wasm.d.ts +43 -0
- package/build/src/backends/wasm.d.ts.map +1 -0
- package/build/src/backends/wasm.js +2164 -0
- package/build/src/backends/writer.d.ts +255 -4
- package/build/src/backends/writer.d.ts.map +1 -1
- package/build/src/backends/writer.js +491 -3
- package/build/src/diagnostic.d.ts +4 -3
- package/build/src/diagnostic.d.ts.map +1 -1
- package/build/src/diagnostic.js +5 -3
- package/build/src/frontends/c.d.ts.map +1 -1
- package/build/src/frontends/c.js +5 -3
- package/build/src/frontends/cpp.d.ts.map +1 -1
- package/build/src/frontends/cpp.js +5 -3
- package/build/src/frontends/csharp.d.ts.map +1 -1
- package/build/src/frontends/csharp.js +7 -3
- package/build/src/frontends/dart.d.ts +10 -0
- package/build/src/frontends/dart.d.ts.map +1 -0
- package/build/src/frontends/dart.js +913 -0
- package/build/src/frontends/index.d.ts +3 -1
- package/build/src/frontends/index.d.ts.map +1 -1
- package/build/src/frontends/index.js +15 -5
- package/build/src/frontends/java.d.ts +110 -1
- package/build/src/frontends/java.d.ts.map +1 -1
- package/build/src/frontends/java.js +1725 -70
- package/build/src/frontends/javascript-typescript.d.ts +69 -1
- package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
- package/build/src/frontends/javascript-typescript.js +1825 -93
- package/build/src/frontends/kotlin.d.ts +10 -0
- package/build/src/frontends/kotlin.d.ts.map +1 -0
- package/build/src/frontends/kotlin.js +685 -0
- package/build/src/frontends/php.d.ts +118 -1
- package/build/src/frontends/php.d.ts.map +1 -1
- package/build/src/frontends/php.js +1583 -76
- package/build/src/frontends/program.d.ts +74 -0
- package/build/src/frontends/program.d.ts.map +1 -0
- package/build/src/frontends/program.js +989 -0
- package/build/src/frontends/ruby.d.ts +68 -1
- package/build/src/frontends/ruby.d.ts.map +1 -1
- package/build/src/frontends/ruby.js +1446 -101
- package/build/src/frontends/rust-parser.d.ts +11 -0
- package/build/src/frontends/rust-parser.d.ts.map +1 -0
- package/build/src/frontends/rust-parser.js +15 -0
- package/build/src/frontends/rust.d.ts +14 -0
- package/build/src/frontends/rust.d.ts.map +1 -0
- package/build/src/frontends/rust.js +715 -0
- package/build/src/frontends/scalars.d.ts +10 -0
- package/build/src/frontends/scalars.d.ts.map +1 -1
- package/build/src/frontends/scalars.js +28 -2
- package/build/src/frontends/swift.d.ts +10 -0
- package/build/src/frontends/swift.d.ts.map +1 -0
- package/build/src/frontends/swift.js +860 -0
- package/build/src/frontends/types.d.ts +186 -0
- package/build/src/frontends/types.d.ts.map +1 -0
- package/build/src/frontends/types.js +634 -0
- package/build/src/language-registry.d.ts +46 -4
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +177 -13
- package/build/src/mapping.d.ts +2 -2
- package/build/src/mapping.d.ts.map +1 -1
- package/build/src/mapping.js +31 -10
- package/build/src/semantic/capabilities.d.ts +66 -0
- package/build/src/semantic/capabilities.d.ts.map +1 -0
- package/build/src/semantic/capabilities.js +649 -0
- package/build/src/semantic/effects.d.ts +26 -0
- package/build/src/semantic/effects.d.ts.map +1 -0
- package/build/src/semantic/effects.js +764 -0
- package/build/src/semantic/generics.d.ts +23 -0
- package/build/src/semantic/generics.d.ts.map +1 -0
- package/build/src/semantic/generics.js +61 -0
- package/build/src/semantic/lifetime.d.ts +37 -0
- package/build/src/semantic/lifetime.d.ts.map +1 -0
- package/build/src/semantic/lifetime.js +527 -0
- package/build/src/semantic/provenance.d.ts +9 -2
- package/build/src/semantic/provenance.d.ts.map +1 -1
- package/build/src/semantic/provenance.js +462 -20
- package/build/src/semantic/scalars.d.ts +11 -0
- package/build/src/semantic/scalars.d.ts.map +1 -1
- package/build/src/semantic/scalars.js +16 -1
- package/build/src/semantic/stdlib.d.ts +254 -0
- package/build/src/semantic/stdlib.d.ts.map +1 -0
- package/build/src/semantic/stdlib.js +880 -0
- package/build/src/semantic/types.d.ts +3108 -178
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +730 -15
- package/build/src/semantic/validate.d.ts +85 -5
- package/build/src/semantic/validate.d.ts.map +1 -1
- package/build/src/semantic/validate.js +2576 -98
- package/build/src/stdlib-facades.d.ts +304 -0
- package/build/src/stdlib-facades.d.ts.map +1 -0
- package/build/src/stdlib-facades.js +1167 -0
- package/build/src/stdlib-negotiation.d.ts +69 -0
- package/build/src/stdlib-negotiation.d.ts.map +1 -0
- package/build/src/stdlib-negotiation.js +403 -0
- package/build/src/stdlib-providers.d.ts +72 -0
- package/build/src/stdlib-providers.d.ts.map +1 -0
- package/build/src/stdlib-providers.js +339 -0
- package/build/src/toolchains.d.ts +55 -1
- package/build/src/toolchains.d.ts.map +1 -1
- package/build/src/toolchains.js +15 -4
- package/docs/android.md +79 -0
- package/docs/architecture.md +47 -13
- package/docs/dart.md +60 -0
- package/docs/goals.md +3 -3
- package/docs/ios.md +121 -0
- package/docs/kotlin.md +42 -0
- package/docs/language-support.md +238 -26
- package/docs/multi-file-modules.md +52 -0
- package/docs/parser-qualification.md +121 -8
- package/docs/plans/2026-09-05-standard-library-portability.md +10 -10
- package/docs/rust.md +88 -0
- package/docs/source-maps.md +17 -7
- package/docs/specification.md +5 -0
- package/docs/standard-library-portability.md +39 -8
- package/docs/swift.md +44 -0
- package/docs/testing.md +381 -4
- package/docs/webassembly.md +52 -0
- package/index.js +66 -8
- package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +2 -2
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/README.md +45 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/binding.gyp +30 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/grammar.js +1630 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/package.json +64 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/highlights.scm +159 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/injections.scm +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/tags.scm +60 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/grammar.json +9405 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/node-types.json +5399 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/parser.c +192569 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/scanner.c +393 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/array.h +290 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter-rust.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter.json +53 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +3 -2
- package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +5 -4
- package/package.json +5 -2
- package/src/artifact-path.js +47 -2
- package/src/artifacts.js +67 -0
- package/src/backends/android.js +1370 -0
- package/src/backends/c-validation.js +6 -1
- package/src/backends/cpp-validation.js +6 -1
- package/src/backends/csharp.js +3 -0
- package/src/backends/dart-runtime.js +41 -0
- package/src/backends/dart.js +326 -0
- package/src/backends/effects.js +705 -0
- package/src/backends/go.js +14 -2
- package/src/backends/identifiers.js +166 -9
- package/src/backends/index.js +27 -2
- package/src/backends/ios.js +1612 -0
- package/src/backends/java.js +454 -36
- package/src/backends/javascript.js +389 -23
- package/src/backends/kotlin-runtime.js +29 -0
- package/src/backends/kotlin.js +144 -0
- package/src/backends/native-validation.js +1 -1
- package/src/backends/ordered-expressions.js +40 -6
- package/src/backends/php-stdlib-support.js +239 -0
- package/src/backends/php.js +469 -32
- package/src/backends/program.js +1408 -0
- package/src/backends/python.js +3 -0
- package/src/backends/ruby.js +326 -23
- package/src/backends/rust-runtime.js +34 -0
- package/src/backends/rust-validation.js +75 -0
- package/src/backends/rust.js +335 -0
- package/src/backends/scalars.js +141 -16
- package/src/backends/shared.js +2314 -115
- package/src/backends/stdlib-support.js +234 -0
- package/src/backends/swift-runtime.js +14 -0
- package/src/backends/swift.js +132 -0
- package/src/backends/typescript.js +349 -23
- package/src/backends/wasm.js +2208 -0
- package/src/backends/writer.js +545 -2
- package/src/diagnostic.js +4 -2
- package/src/frontends/c.js +4 -2
- package/src/frontends/cpp.js +4 -2
- package/src/frontends/csharp.js +4 -2
- package/src/frontends/dart.js +963 -0
- package/src/frontends/index.js +14 -4
- package/src/frontends/java.js +1977 -69
- package/src/frontends/javascript-typescript.js +2046 -102
- package/src/frontends/kotlin.js +713 -0
- package/src/frontends/php.js +1725 -79
- package/src/frontends/program.js +1062 -0
- package/src/frontends/ruby.js +1624 -98
- package/src/frontends/rust-parser.js +18 -0
- package/src/frontends/rust.js +714 -0
- package/src/frontends/scalars.js +31 -1
- package/src/frontends/swift.js +893 -0
- package/src/frontends/types.js +750 -0
- package/src/language-registry.js +182 -12
- package/src/mapping.js +33 -9
- package/src/semantic/capabilities.js +671 -0
- package/src/semantic/effects.js +737 -0
- package/src/semantic/generics.js +58 -0
- package/src/semantic/lifetime.js +517 -0
- package/src/semantic/provenance.js +412 -19
- package/src/semantic/scalars.js +17 -0
- package/src/semantic/stdlib.js +921 -0
- package/src/semantic/types.js +810 -14
- package/src/semantic/validate.js +2934 -209
- package/src/stdlib-facades.js +1211 -0
- package/src/stdlib-negotiation.js +446 -0
- package/src/stdlib-providers.js +377 -0
- package/src/toolchains.js +16 -3
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import { unsupportedCapability } from "../diagnostic.js";
|
|
3
|
-
/** @type {Record<import("../semantic/types.js").
|
|
3
|
+
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, RegExp>} */
|
|
4
4
|
const identifierPatterns = {
|
|
5
|
+
android: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
6
|
+
dart: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
7
|
+
kotlin: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
8
|
+
swift: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
|
|
9
|
+
rust: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
5
10
|
cpp: /^[A-Za-z][A-Za-z0-9_]*$/u,
|
|
6
11
|
c: /^[A-Za-z][A-Za-z0-9_]*$/u,
|
|
7
12
|
csharp: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
@@ -11,10 +16,47 @@ const identifierPatterns = {
|
|
|
11
16
|
php: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
12
17
|
python: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
|
|
13
18
|
ruby: /^[a-z_][A-Za-z0-9_]*$/u,
|
|
14
|
-
typescript: /^[A-Za-z_$][A-Za-z0-9_$]*$/u
|
|
19
|
+
typescript: /^[A-Za-z_$][A-Za-z0-9_$]*$/u,
|
|
20
|
+
wasm: /^(?:[$_]|\p{XID_Start})(?:[$_]|\p{XID_Continue})*$/u
|
|
15
21
|
};
|
|
16
|
-
/** @type {Record<import("../semantic/types.js").
|
|
22
|
+
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, Set<string>>} */
|
|
17
23
|
const reservedWords = {
|
|
24
|
+
android: new Set([
|
|
25
|
+
"as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is", "null",
|
|
26
|
+
"object", "package", "return", "super", "this", "throw", "true", "try", "typealias", "typeof", "val", "var", "when",
|
|
27
|
+
"while", "_", "main", "println", "Long", "Boolean", "String", "Math", "ArithmeticException"
|
|
28
|
+
]),
|
|
29
|
+
dart: new Set([
|
|
30
|
+
"Function", "Never", "Object", "RangeError", "String", "abstract", "as", "assert", "async", "await", "base",
|
|
31
|
+
"bool", "break", "case", "catch", "class", "const", "continue", "covariant", "default", "deferred", "do",
|
|
32
|
+
"double", "dynamic", "else", "enum", "export", "extends", "extension", "external", "factory", "false", "final",
|
|
33
|
+
"finally", "for", "get", "hide", "if", "implements", "import", "in", "int", "interface", "is", "late", "library",
|
|
34
|
+
"main", "mixin", "native", "new", "null", "num", "of", "on", "operator", "part", "print", "required", "rethrow",
|
|
35
|
+
"return", "sealed", "set", "show", "static", "super", "switch", "sync", "this", "throw", "true", "try", "typedef",
|
|
36
|
+
"var", "void", "when", "while", "with", "yield", "BigInt", "_"
|
|
37
|
+
]),
|
|
38
|
+
kotlin: new Set([
|
|
39
|
+
"as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is", "null",
|
|
40
|
+
"object", "package", "return", "super", "this", "throw", "true", "try", "typealias", "typeof", "val", "var", "when",
|
|
41
|
+
"while", "_", "main", "println", "Long", "Boolean", "String", "Math", "ArithmeticException"
|
|
42
|
+
]),
|
|
43
|
+
swift: new Set([
|
|
44
|
+
"Any", "Self", "Type", "Protocol", "actor", "any", "as", "associatedtype", "associativity", "async", "await", "borrowing",
|
|
45
|
+
"break", "case", "catch", "class", "consume", "consuming", "continue", "convenience", "copy", "default", "defer", "deinit",
|
|
46
|
+
"didSet", "distributed", "do", "dynamic", "else", "enum", "extension", "fallthrough", "false", "fileprivate", "final", "for",
|
|
47
|
+
"func", "get", "guard", "if", "import", "in", "indirect", "infix", "init", "inout", "internal", "is", "isolated", "lazy",
|
|
48
|
+
"let", "macro", "mutating", "nil", "nonisolated", "nonmutating", "open", "operator", "optional", "override", "package",
|
|
49
|
+
"postfix", "precedence", "precedencegroup", "prefix", "private", "protocol", "public", "repeat", "required", "rethrows", "return",
|
|
50
|
+
"safe", "self", "sending", "set", "some", "static", "struct", "subscript", "super", "switch", "throws", "true", "try",
|
|
51
|
+
"typealias", "unowned", "unsafe", "var", "weak", "where", "while", "willSet", "yield", "_", "Bool", "Int", "Int64", "String",
|
|
52
|
+
"Swift", "main", "print"
|
|
53
|
+
]),
|
|
54
|
+
rust: new Set([
|
|
55
|
+
"as", "async", "await", "break", "const", "continue", "crate", "dyn", "else", "enum", "extern", "false", "fn", "for", "if", "impl", "in",
|
|
56
|
+
"let", "loop", "match", "mod", "move", "mut", "pub", "ref", "return", "self", "Self", "static", "struct", "super", "trait", "true", "type",
|
|
57
|
+
"unsafe", "use", "where", "while", "abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized", "virtual",
|
|
58
|
+
"yield", "try", "union", "_", "main", "String", "std", "i64", "bool"
|
|
59
|
+
]),
|
|
18
60
|
cpp: new Set([
|
|
19
61
|
"alignas", "alignof", "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break", "case", "catch", "char", "char8_t", "char16_t", "char32_t", "class", "compl", "concept", "const", "consteval", "constexpr", "constinit", "const_cast", "continue", "co_await", "co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq", "private", "protected", "public", "register", "reinterpret_cast", "requires", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch", "template", "this", "thread_local", "throw", "true", "try", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq", "std", "string", "numeric_limits",
|
|
20
62
|
// The qualified libstdc++ <string> include chain also exposes these global names.
|
|
@@ -105,15 +147,67 @@ const reservedWords = {
|
|
|
105
147
|
"override", "package", "private", "protected", "public", "readonly", "require", "return", "satisfies", "set",
|
|
106
148
|
"static", "string", "super", "switch", "symbol", "this", "throw", "true", "try", "type", "typeof", "undefined",
|
|
107
149
|
"unique", "unknown", "using", "var", "void", "while", "with", "yield"
|
|
108
|
-
])
|
|
150
|
+
]),
|
|
151
|
+
wasm: new Set()
|
|
109
152
|
};
|
|
110
153
|
const phpInvalidParameterBindings = new Set([
|
|
111
154
|
"GLOBALS", "_COOKIE", "_ENV", "_FILES", "_GET", "_POST", "_REQUEST", "_SERVER", "_SESSION", "this"
|
|
112
155
|
]);
|
|
113
156
|
const phpInvalidAssignedBindings = new Set(["GLOBALS", "this"]);
|
|
157
|
+
/** @type {Readonly<Partial<Record<import("../semantic/types.js").BackendLanguage, Set<string>>>>} */
|
|
158
|
+
const reservedTypeNames = Object.freeze({
|
|
159
|
+
java: new Set(["Boolean", "Integer", "Main", "Math", "Object", "String", "System"]),
|
|
160
|
+
javascript: new Set(["Array", "Boolean", "Map", "Math", "Number", "Object", "Reflect", "String"]),
|
|
161
|
+
php: new Set([
|
|
162
|
+
"addressinfo", "allowdynamicproperties", "appenditerator", "argumentcounterror", "arithmeticerror", "arrayaccess",
|
|
163
|
+
"arrayiterator", "arrayobject", "assertionerror", "attribute", "backedenum", "badfunctioncallexception",
|
|
164
|
+
"badmethodcallexception", "cachingiterator",
|
|
165
|
+
"callbackfilteriterator", "closedgeneratorexception", "closure", "compileerror", "countable", "dateerror", "dateexception",
|
|
166
|
+
"dateinterval", "dateinvalidoperationexception", "dateinvalidtimezoneexception", "datemalformedintervalstringexception",
|
|
167
|
+
"datemalformedperiodstringexception", "datemalformedstringexception", "dateobjecterror", "dateperiod", "daterangeerror",
|
|
168
|
+
"datetime", "datetimeimmutable", "datetimeinterface", "datetimezone", "deflatecontext", "delayedtargetvalidation",
|
|
169
|
+
"deprecated", "directory", "directoryiterator", "divisionbyzeroerror", "domainexception", "emptyiterator", "error",
|
|
170
|
+
"errorexception", "exception", "ffi", "fiber", "fibererror", "filesystemiterator", "filteriterator", "finfo", "generator",
|
|
171
|
+
"globiterator", "hashcontext", "infiniteiterator", "inflatecontext", "internaliterator", "invalidargumentexception",
|
|
172
|
+
"iterator", "iteratoraggregate", "iteratoriterator", "jsonexception", "jsonserializable", "lengthexception",
|
|
173
|
+
"libxmlerror", "limititerator", "logicexception", "multipleiterator", "nodiscard", "norewinditerator",
|
|
174
|
+
"opensslasymmetrickey", "opensslcertificate", "opensslcertificatesigningrequest",
|
|
175
|
+
"outofboundsexception", "outofrangeexception", "outeriterator", "overflowexception", "override", "parentiterator",
|
|
176
|
+
"parseerror", "pdo", "pdoexception", "pdorow", "pdostatement", "phar", "phardata", "pharexception", "pharfileinfo",
|
|
177
|
+
"php_user_filter", "phptoken", "propertyhooktype", "rangeexception", "recursivearrayiterator", "recursivecachingiterator",
|
|
178
|
+
"recursivecallbackfilteriterator",
|
|
179
|
+
"recursivedirectoryiterator", "recursivefilteriterator", "recursiveiterator", "recursiveiteratoriterator",
|
|
180
|
+
"recursiveregexiterator", "recursivetreeiterator", "reflection", "reflectionattribute", "reflectionclass",
|
|
181
|
+
"reflectionclassconstant", "reflectionconstant", "reflectionenum", "reflectionenumbackedcase", "reflectionenumunitcase",
|
|
182
|
+
"reflectionexception", "reflectionextension", "reflectionfiber", "reflectionfunction", "reflectionfunctionabstract",
|
|
183
|
+
"reflectiongenerator", "reflectionintersectiontype", "reflectionmethod", "reflectionnamedtype", "reflectionobject",
|
|
184
|
+
"reflectionparameter", "reflectionproperty", "reflectionreference", "reflectiontype", "reflectionuniontype",
|
|
185
|
+
"reflectionzendextension", "reflector", "regexiterator", "requestparsebodyexception", "returntypewillchange",
|
|
186
|
+
"roundingmode", "runtimeexception", "seekableiterator", "sensitiveparameter", "sensitiveparametervalue", "serializable",
|
|
187
|
+
"sessionhandler", "sessionhandlerinterface", "sessionidinterface", "sessionupdatetimestamphandlerinterface", "shmop",
|
|
188
|
+
"socket", "sodiumexception", "spldoublylinkedlist", "splfileinfo",
|
|
189
|
+
"splfileobject", "splfixedarray", "splheap", "splmaxheap", "splminheap", "splobjectstorage", "splobserver",
|
|
190
|
+
"splpriorityqueue", "splqueue", "splstack", "splsubject", "spltempfileobject", "stdclass", "streambucket", "stringable",
|
|
191
|
+
"sysvmessagequeue", "sysvsemaphore", "sysvsharedmemory", "throwable", "traversable", "typeerror", "underflowexception",
|
|
192
|
+
"unexpectedvalueexception", "unhandledmatcherror", "unitenum", "valueerror", "weakmap", "weakreference"
|
|
193
|
+
]),
|
|
194
|
+
ruby: new Set([
|
|
195
|
+
"ArgumentError", "Array", "BasicObject", "Binding", "Class", "ClosedQueueError", "Comparable", "Complex", "Data", "Dir",
|
|
196
|
+
"Encoding", "EncodingError", "Enumerable", "Enumerator", "EOFError", "Errno", "Exception", "FalseClass", "Fiber",
|
|
197
|
+
"FiberError", "File", "FileTest", "Float", "FrozenError", "GC", "Hash", "IO", "IOError", "IndexError", "Integer",
|
|
198
|
+
"Interrupt", "Kernel", "KeyError", "LoadError", "LocalJumpError", "Marshal", "MatchData", "Math", "Method", "Module",
|
|
199
|
+
"Mutex", "NameError", "NilClass", "NoMemoryError", "NoMethodError", "NotImplementedError", "Numeric", "Object",
|
|
200
|
+
"ObjectSpace", "Proc", "Process", "Queue", "Ractor", "Random", "Range", "Rational", "Regexp", "RegexpError", "RubyVM",
|
|
201
|
+
"RuntimeError", "ScriptError", "SecurityError", "Signal", "SignalException", "SizedQueue", "StandardError", "StopIteration",
|
|
202
|
+
"String", "Struct", "Symbol", "SyntaxError", "SystemCallError", "SystemExit", "SystemStackError", "Thread", "ThreadError",
|
|
203
|
+
"ThreadGroup", "Time", "TracePoint", "TrueClass", "TypeError", "UnboundMethod", "UncaughtThrowError", "Warning",
|
|
204
|
+
"ZeroDivisionError"
|
|
205
|
+
]),
|
|
206
|
+
typescript: new Set(["Array", "Boolean", "Map", "Math", "Number", "Object", "ReadonlyArray", "ReadonlyMap", "Reflect", "String"])
|
|
207
|
+
});
|
|
114
208
|
/**
|
|
115
209
|
* Validates an identifier against the target backend's deliberately narrow lexical contract.
|
|
116
|
-
* @param {import("../semantic/types.js").
|
|
210
|
+
* @param {import("../semantic/types.js").BackendLanguage} language - Target language.
|
|
117
211
|
* @param {unknown} name - Candidate semantic identifier.
|
|
118
212
|
* @param {string} role - Identifier role for diagnostics.
|
|
119
213
|
* @param {import("../semantic/types.js").SourceLocation | undefined} location - Originating location.
|
|
@@ -123,10 +217,15 @@ export function validateTargetIdentifier(language, name, role, location) {
|
|
|
123
217
|
if (typeof name != "string")
|
|
124
218
|
unsupportedCapability(language, `${role} identifier`, location);
|
|
125
219
|
const reservedName = language == "php" ? name.toLowerCase() : name;
|
|
126
|
-
|
|
220
|
+
const syntaxLanguage = language == "ios" ? "swift" : language;
|
|
221
|
+
if (!identifierPatterns[syntaxLanguage].test(name) || reservedWords[syntaxLanguage].has(reservedName) ||
|
|
127
222
|
language == "python" && name.normalize("NFKC") != name ||
|
|
128
223
|
language == "c" && !isCIdentifier(name) ||
|
|
129
|
-
language == "
|
|
224
|
+
language == "rust" && !isRustIdentifier(name) ||
|
|
225
|
+
language == "cpp" && !isCppIdentifier(name) ||
|
|
226
|
+
language == "dart" && !isDartIdentifier(name) ||
|
|
227
|
+
language == "swift" && (!isSwiftIdentifier(name) || name.normalize("NFC") != name) ||
|
|
228
|
+
language == "kotlin" && (!isKotlinIdentifier(name) || name.normalize("NFC") != name)) {
|
|
130
229
|
unsupportedCapability(language, `${role} identifier '${name}'`, location);
|
|
131
230
|
}
|
|
132
231
|
}
|
|
@@ -142,7 +241,7 @@ export function isCIdentifier(name) {
|
|
|
142
241
|
}
|
|
143
242
|
/**
|
|
144
243
|
* Validates a binding identifier against target restrictions beyond general identifier syntax.
|
|
145
|
-
* @param {import("../semantic/types.js").
|
|
244
|
+
* @param {import("../semantic/types.js").BackendLanguage} language - Target language.
|
|
146
245
|
* @param {unknown} name - Candidate semantic identifier.
|
|
147
246
|
* @param {string} role - Binding role for diagnostics.
|
|
148
247
|
* @param {import("../semantic/types.js").SourceLocation | undefined} location - Originating location.
|
|
@@ -153,12 +252,29 @@ export function validateTargetBindingIdentifier(language, name, role, location)
|
|
|
153
252
|
const invalidTypeScriptBinding = language == "typescript" && (name == "arguments" || name == "eval");
|
|
154
253
|
const invalidPhpVariable = language == "php" && typeof name == "string" &&
|
|
155
254
|
((role == "parameter" && phpInvalidParameterBindings.has(name)) ||
|
|
156
|
-
((role == "local" || role == "assignment target") && phpInvalidAssignedBindings.has(name)));
|
|
255
|
+
((role == "local" || role == "assignment target" || role == "catch binding") && phpInvalidAssignedBindings.has(name)));
|
|
157
256
|
const invalidRubyBinding = language == "ruby" && typeof name == "string" && /^_[1-9]$/u.test(name);
|
|
158
257
|
if (invalidTypeScriptBinding || invalidPhpVariable || invalidRubyBinding) {
|
|
159
258
|
unsupportedCapability(language, `${role} identifier '${name}'`, location);
|
|
160
259
|
}
|
|
161
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Validates a nominal record/type declaration name for the original-five targets.
|
|
263
|
+
* @param {import("../semantic/types.js").BackendLanguage} language - Backend language.
|
|
264
|
+
* @param {unknown} name - Candidate type name.
|
|
265
|
+
* @param {import("../semantic/types.js").SourceLocation | undefined} location - Declaration location.
|
|
266
|
+
* @returns {void}
|
|
267
|
+
*/
|
|
268
|
+
export function validateTargetTypeIdentifier(language, name, location) {
|
|
269
|
+
if (typeof name != "string" || !/^[A-Z][A-Za-z0-9_]*$/u.test(name)) {
|
|
270
|
+
unsupportedCapability(language, `record type identifier '${String(name)}'`, location);
|
|
271
|
+
}
|
|
272
|
+
const reservedName = language == "php" ? name.toLowerCase() : name;
|
|
273
|
+
const syntaxLanguage = language == "ios" ? "swift" : language;
|
|
274
|
+
if (reservedWords[syntaxLanguage].has(reservedName) || reservedTypeNames[language]?.has(reservedName)) {
|
|
275
|
+
unsupportedCapability(language, `record type identifier '${name}'`, location);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
162
278
|
/**
|
|
163
279
|
* Protects C++ keywords, the actual included C library names/macros and the scaffold namespace.
|
|
164
280
|
* @param {string} name - Caller scalar binding or function name.
|
|
@@ -167,4 +283,38 @@ export function validateTargetBindingIdentifier(language, name, role, location)
|
|
|
167
283
|
export function isCppIdentifier(name) {
|
|
168
284
|
return isCIdentifier(name) && !name.includes("__") && !reservedWords.cpp.has(name);
|
|
169
285
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDhFQUE4RTtBQUM5RSxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsQ0FBQyxFQUFFLDBCQUEwQjtJQUM3QixNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQyxVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLEdBQUcsRUFBRSwyQkFBMkI7SUFDaEMsTUFBTSxFQUFFLCtDQUErQztJQUN2RCxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFVBQVUsRUFBRSw2QkFBNkI7Q0FDMUMsQ0FBQTtBQUVELG1GQUFtRjtBQUNuRixNQUFNLGFBQWEsR0FBRztJQUNwQixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWCxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFB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QVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVM7UUFDbkcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDMUcsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDcEcsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxRyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQ3RHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDekcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRO0tBQzdELENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3RHLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN0RCxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUNwRyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVE7UUFDekgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDNUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQzFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQ2pILFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUNoSCxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDL0csV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07UUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztLQUNsQyxDQUFDO0lBQ0YsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1YsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3RHLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLO1FBQ3JHLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztLQUMxQixDQUFDO0lBQ0YsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQzVHLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSztRQUM1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVB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LElBQUksZ0JBQWdCLElBQUksR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBSTtJQUNsQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7dW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5cbi8qKiBAdHlwZSB7UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2UsIFJlZ0V4cD59ICovXG5jb25zdCBpZGVudGlmaWVyUGF0dGVybnMgPSB7XG4gIGNwcDogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGM6IC9eW0EtWmEtel1bQS1aYS16MC05X10qJC91LFxuICBjc2hhcnA6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgZ286IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgamF2YTogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIGphdmFzY3JpcHQ6IC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qJC91LFxuICBwaHA6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgcHl0aG9uOiAvXig/Ol98XFxwe1hJRF9TdGFydH0pKD86X3xcXHB7WElEX0NvbnRpbnVlfSkqJC91LFxuICBydWJ5OiAvXlthLXpfXVtBLVphLXowLTlfXSokL3UsXG4gIHR5cGVzY3JpcHQ6IC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qJC91XG59XG5cbi8qKiBAdHlwZSB7UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2UsIFNldDxzdHJpbmc+Pn0gKi9cbmNvbnN0IHJlc2VydmVkV29yZHMgPSB7XG4gIGNwcDogbmV3IFNldChbXG4gICAgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcImFuZFwiLCBcImFuZF9lcVwiLCBcImFzbVwiLCBcImF1dG9cIiwgXCJiaXRhbmRcIiwgXCJiaXRvclwiLCBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGFyOF90XCIsIFwiY2hhcjE2X3RcIiwgXCJjaGFyMzJfdFwiLCBcImNsYXNzXCIsIFwiY29tcGxcIiwgXCJjb25jZXB0XCIsIFwiY29uc3RcIiwgXCJjb25zdGV2YWxcIiwgXCJjb25zdGV4cHJcIiwgXCJjb25zdGluaXRcIiwgXCJjb25zdF9jYXN0XCIsIFwiY29udGludWVcIiwgXCJjb19hd2FpdFwiLCBcImNvX3JldHVyblwiLCBcImNvX3lpZWxkXCIsIFwiZGVjbHR5cGVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJkeW5hbWljX2Nhc3RcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cGxpY2l0XCIsIFwiZXhwb3J0XCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZyaWVuZFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJtdXRhYmxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibm9leGNlcHRcIiwgXCJub3RcIiwgXCJub3RfZXFcIiwgXCJudWxscHRyXCIsIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yX2VxXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlZ2lzdGVyXCIsIFwicmVpbnRlcnByZXRfY2FzdFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIiwgXCJzaXplb2ZcIiwgXCJzdGF0aWNcIiwgXCJzdGF0aWNfYXNzZXJ0XCIsIFwic3RhdGljX2Nhc3RcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0ZW1wbGF0ZVwiLCBcInRoaXNcIiwgXCJ0aHJlYWRfbG9jYWxcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlZGVmXCIsIFwidHlwZWlkXCIsIFwidHlwZW5hbWVcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidXNpbmdcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2NoYXJfdFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieG9yX2VxXCIsIFwic3RkXCIsIFwic3RyaW5nXCIsIFwibnVtZXJpY19saW1pdHNcIixcbiAgICAvLyBUaGUgcXVhbGlmaWVkIGxpYnN0ZGMrKyA8c3RyaW5nPiBpbmNsdWRlIGNoYWluIGFsc28gZXhwb3NlcyB0aGVzZSBnbG9iYWwgbmFtZXMuXG4gICAgXCJXRU9GXCIsIFwid2ludF90XCJcbiAgXSksXG4gIGM6IG5ldyBTZXQoW1xuICAgIFwiYXV0b1wiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNoYXJcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVmYXVsdFwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlcm5cIixcbiAgICBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwiaW50XCIsIFwibG9uZ1wiLCBcInJlZ2lzdGVyXCIsIFwicmVzdHJpY3RcIiwgXCJyZXR1cm5cIiwgXCJzaG9ydFwiLCBcInNpZ25lZFwiLFxuICAgIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidHlwZWRlZlwiLCBcInVuaW9uXCIsIFwidW5zaWduZWRcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGlsZVwiLFxuICAgIFwiYm9vbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcIlRSVUVcIiwgXCJGQUxTRVwiLCBcImludDY0X3RcIiwgXCJ1aW50NjRfdFwiLCBcInNpemVfdFwiLCBcInB0cmRpZmZfdFwiLCBcIm1haW5cIiwgXCJOVUxMXCIsIFwiSU5UNjRfQ1wiLCBcIlVJTlQ2NF9DXCIsXG4gICAgXCJJTlQ2NF9NSU5cIiwgXCJJTlQ2NF9NQVhcIiwgXCJQVFJESUZGX01BWFwiLCBcIkNIQVJfQklUXCIsIFwic3RkaW5cIiwgXCJzdGRvdXRcIiwgXCJzdGRlcnJcIiwgXCJtYWxsb2NcIiwgXCJmcmVlXCIsIFwiZXhpdFwiLFxuICAgIFwiZndyaXRlXCIsIFwiZmZsdXNoXCIsIFwibWVtY3B5XCIsIFwibWVtY21wXCIsIFwiRklMRVwiLCBcImZwb3NfdFwiLCBcImRpdl90XCIsIFwibGRpdl90XCIsIFwibGxkaXZfdFwiLCBcIndjaGFyX3RcIiwgXCJtYXhfYWxpZ25fdFwiLFxuICAgIFwib2Zmc2V0b2ZcIiwgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcIm5vcmV0dXJuXCIsIFwidHJ1ZVwiLCBcImZhbHNlXCIsIFwiYXNzZXJ0XCIsIFwic3RhdGljX2Fzc2VydFwiLCBcImVycm5vXCIsXG4gICAgXCJFT0ZcIiwgXCJCVUZTSVpcIiwgXCJGT1BFTl9NQVhcIiwgXCJGSUxFTkFNRV9NQVhcIiwgXCJMX3RtcG5hbVwiLCBcIlNFRUtfQ1VSXCIsIFwiU0VFS19FTkRcIiwgXCJTRUVLX1NFVFwiLCBcIlRNUF9NQVhcIixcbiAgICBcIkVYSVRfRkFJTFVSRVwiLCBcIkVYSVRfU1VDQ0VTU1wiLCBcIk1CX0NVUl9NQVhcIiwgXCJNQl9MRU5fTUFYXCIsIFwiUkFORF9NQVhcIixcbiAgICBcInJlbW92ZVwiLCBcInJlbmFtZVwiLCBcInRtcGZpbGVcIiwgXCJ0bXBuYW1cIiwgXCJmY2xvc2VcIiwgXCJmb3BlblwiLCBcImZyZW9wZW5cIiwgXCJzZXRidWZcIiwgXCJzZXR2YnVmXCIsXG4gICAgXCJmcHJpbnRmXCIsIFwiZnNjYW5mXCIsIFwicHJpbnRmXCIsIFwic2NhbmZcIiwgXCJzbnByaW50ZlwiLCBcInNwcmludGZcIiwgXCJzc2NhbmZcIiwgXCJ2ZnByaW50ZlwiLCBcInZmc2NhbmZcIiwgXCJ2cHJpbnRmXCIsXG4gICAgXCJ2c2NhbmZcIiwgXCJ2c25wcmludGZcIiwgXCJ2c3ByaW50ZlwiLCBcInZzc2NhbmZcIiwgXCJmZ2V0Y1wiLCBcImZnZXRzXCIsIFwiZnB1dGNcIiwgXCJmcHV0c1wiLCBcImdldGNcIiwgXCJnZXRjaGFyXCIsXG4gICAgXCJwdXRjXCIsIFwicHV0Y2hhclwiLCBcInB1dHNcIiwgXCJ1bmdldGNcIiwgXCJmcmVhZFwiLCBcImZnZXRwb3NcIiwgXCJmc2Vla1wiLCBcImZzZXRwb3NcIiwgXCJmdGVsbFwiLCBcInJld2luZFwiLCBcImNsZWFyZXJyXCIsXG4gICAgXCJmZW9mXCIsIFwiZmVycm9yXCIsIFwicGVycm9yXCIsIFwiYXRvZlwiLCBcImF0b2lcIiwgXCJhdG9sXCIsIFwiYXRvbGxcIiwgXCJzdHJ0b2RcIiwgXCJzdHJ0b2ZcIiwgXCJzdHJ0b2xkXCIsIFwic3RydG9sXCIsXG4gICAgXCJzdHJ0b2xsXCIsIFwic3RydG91bFwiLCBcInN0cnRvdWxsXCIsIFwicmFuZFwiLCBcInNyYW5kXCIsIFwiYWxpZ25lZF9hbGxvY1wiLCBcImNhbGxvY1wiLCBcInJlYWxsb2NcIiwgXCJhYm9ydFwiLCBcImF0ZXhpdFwiLFxuICAgIFwiYXRfcXVpY2tfZXhpdFwiLCBcInF1aWNrX2V4aXRcIiwgXCJnZXRlbnZcIiwgXCJzeXN0ZW1cIiwgXCJic2VhcmNoXCIsIFwicXNvcnRcIiwgXCJhYnNcIiwgXCJsYWJzXCIsIFwibGxhYnNcIiwgXCJkaXZcIiwgXCJsZGl2XCIsXG4gICAgXCJsbGRpdlwiLCBcIm1ibGVuXCIsIFwibWJ0b3djXCIsIFwid2N0b21iXCIsIFwibWJzdG93Y3NcIiwgXCJ3Y3N0b21ic1wiLCBcIm1lbW1vdmVcIiwgXCJzdHJjcHlcIiwgXCJzdHJuY3B5XCIsIFwic3RyY2F0XCIsXG4gICAgXCJzdHJuY2F0XCIsIFwic3RyY21wXCIsIFwic3RyY29sbFwiLCBcInN0cm5jbXBcIiwgXCJzdHJ4ZnJtXCIsIFwibWVtY2hyXCIsIFwic3RyY2hyXCIsIFwic3RyY3NwblwiLCBcInN0cnBicmtcIiwgXCJzdHJyY2hyXCIsXG4gICAgXCJzdHJzcG5cIiwgXCJzdHJzdHJcIiwgXCJzdHJ0b2tcIiwgXCJtZW1zZXRcIiwgXCJzdHJlcnJvclwiLCBcInN0cmxlblwiXG4gIF0pLFxuICBjc2hhcnA6IG5ldyBTZXQoW1xuICAgIFwiX19hcmdsaXN0XCIsIFwiX19tYWtlcmVmXCIsIFwiX19yZWZ0eXBlXCIsIFwiX19yZWZ2YWx1ZVwiLCBcImFic3RyYWN0XCIsIFwiYWRkXCIsIFwiYWxpYXNcIiwgXCJhbGxvd3NcIiwgXCJhbmRcIiwgXCJhc1wiLFxuICAgIFwiYXNjZW5kaW5nXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIiwgXCJib29sXCIsIFwiYnJlYWtcIixcbiAgICBcImJ5XCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGVja2VkXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjaW1hbFwiLCBcImRlZmF1bHRcIixcbiAgICBcImRlbGVnYXRlXCIsIFwiZGVzY2VuZGluZ1wiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXF1YWxzXCIsIFwiZXZlbnRcIiwgXCJleHBsaWNpdFwiLCBcImV4dGVuc2lvblwiLCBcImV4dGVyblwiLFxuICAgIFwiZmFsc2VcIiwgXCJmaWVsZFwiLCBcImZpbGVcIiwgXCJmaW5hbGx5XCIsIFwiZml4ZWRcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZvcmVhY2hcIiwgXCJmcm9tXCIsIFwiZ2V0XCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLFxuICAgIFwiZ3JvdXBcIiwgXCJpZlwiLCBcImltcGxpY2l0XCIsIFwiaW5cIiwgXCJpbml0XCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwiaW50ZXJuYWxcIiwgXCJpbnRvXCIsIFwiaXNcIiwgXCJqb2luXCIsIFwibGV0XCIsIFwibG9ja1wiLFxuICAgIFwibG9uZ1wiLCBcIm1hbmFnZWRcIiwgXCJuYW1lb2ZcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXdcIiwgXCJuaW50XCIsIFwibm90XCIsIFwibm90bnVsbFwiLCBcIm51bGxcIiwgXCJudWludFwiLCBcIm9iamVjdFwiLCBcIm9uXCIsXG4gICAgXCJvcGVyYXRvclwiLCBcIm9yXCIsIFwib3JkZXJieVwiLCBcIm91dFwiLCBcIm92ZXJyaWRlXCIsIFwicGFyYW1zXCIsIFwicGFydGlhbFwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLFxuICAgIFwicmVjb3JkXCIsIFwicmVmXCIsIFwicmVtb3ZlXCIsIFwicmVxdWlyZWRcIiwgXCJyZXR1cm5cIiwgXCJzYnl0ZVwiLCBcInNjb3BlZFwiLCBcInNlYWxlZFwiLCBcInNlbGVjdFwiLCBcInNldFwiLCBcInNob3J0XCIsIFwic2l6ZW9mXCIsXG4gICAgXCJzdGFja2FsbG9jXCIsIFwic3RhdGljXCIsIFwic3RyaW5nXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVvZlwiLCBcInVpbnRcIiwgXCJ1bG9uZ1wiLFxuICAgIFwidW5jaGVja2VkXCIsIFwidW5tYW5hZ2VkXCIsIFwidW5zYWZlXCIsIFwidXNob3J0XCIsIFwidXNpbmdcIiwgXCJ2YWx1ZVwiLCBcInZhclwiLCBcInZpcnR1YWxcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGdvOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJicmVha1wiLCBcImRlZmF1bHRcIiwgXCJmdW5jXCIsIFwiaW50ZXJmYWNlXCIsIFwic2VsZWN0XCIsIFwiY2FzZVwiLCBcImRlZmVyXCIsIFwiZ29cIiwgXCJtYXBcIiwgXCJzdHJ1Y3RcIiwgXCJjaGFuXCIsXG4gICAgXCJlbHNlXCIsIFwiZ290b1wiLCBcInBhY2thZ2VcIiwgXCJzd2l0Y2hcIiwgXCJjb25zdFwiLCBcImZhbGx0aHJvdWdoXCIsIFwiaWZcIiwgXCJyYW5nZVwiLCBcInR5cGVcIiwgXCJjb250aW51ZVwiLCBcImZvclwiLFxuICAgIFwiaW1wb3J0XCIsIFwicmV0dXJuXCIsIFwidmFyXCJcbiAgXSksXG4gIGphdmE6IG5ldyBTZXQoW1xuICAgIFwiX1wiLCBcImFic3RyYWN0XCIsIFwiYXNzZXJ0XCIsIFwiYm9vbGVhblwiLCBcImJyZWFrXCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIixcbiAgICBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0c1wiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsIFwiZmluYWxseVwiLCBcImZsb2F0XCIsIFwiZm9yXCIsXG4gICAgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5zdGFuY2VvZlwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImxvbmdcIiwgXCJtb2R1bGVcIiwgXCJuYXRpdmVcIiwgXCJuZXdcIixcbiAgICBcIm5vbi1zZWFsZWRcIiwgXCJudWxsXCIsIFwib3BlblwiLCBcIm9wZW5zXCIsIFwicGFja2FnZVwiLCBcInBlcm1pdHNcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHJvdmlkZXNcIiwgXCJwdWJsaWNcIixcbiAgICBcInJlY29yZFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2VhbGVkXCIsIFwic2hvcnRcIiwgXCJzdGF0aWNcIiwgXCJzdHJpY3RmcFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3luY2hyb25pemVkXCIsXG4gICAgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0aHJvd3NcIiwgXCJ0b1wiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaXRpdmVcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidXNlc1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLFxuICAgIFwid2hlblwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1xuICAgIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlYnVnZ2VyXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLFxuICAgIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmdW5jdGlvblwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsIFwiaW50ZXJmYWNlXCIsIFwibGV0XCIsIFwibmV3XCIsIFwibnVsbFwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmV0dXJuXCIsIFwic3RhdGljXCIsXG4gICAgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcIl9faGFsdF9jb21waWxlclwiLCBcImFic3RyYWN0XCIsIFwiYW5kXCIsIFwiYXJyYXlcIiwgXCJhc1wiLCBcImJyZWFrXCIsIFwiY2FsbGFibGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNsb25lXCIsXG4gICAgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjbGFyZVwiLCBcImRlZmF1bHRcIiwgXCJkaWVcIiwgXCJkb1wiLCBcImVjaG9cIiwgXCJlbHNlXCIsIFwiZWxzZWlmXCIsIFwiZW1wdHlcIiwgXCJlbmRkZWNsYXJlXCIsXG4gICAgXCJlbmRmb3JcIiwgXCJlbmRmb3JlYWNoXCIsIFwiZW5kaWZcIiwgXCJlbmRzd2l0Y2hcIiwgXCJlbmR3aGlsZVwiLCBcImVudW1cIiwgXCJldmFsXCIsIFwiZXhpdFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsIFwiZm5cIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImZ1bmN0aW9uXCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImluY2x1ZGVcIixcbiAgICBcImluY2x1ZGVfb25jZVwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnN0ZWFkb2ZcIiwgXCJpbnRlcmZhY2VcIiwgXCJpc3NldFwiLCBcIml0ZXJhYmxlXCIsIFwibGlzdFwiLCBcIm1hdGNoXCIsIFwibWl4ZWRcIiwgXCJuYW1lc3BhY2VcIixcbiAgICBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcIm9yXCIsIFwicGFyZW50XCIsIFwicHJpbnRcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsXG4gICAgXCJyZXF1aXJlX29uY2VcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwic3RhdGljXCIsIFwic3dpdGNoXCIsIFwidGhyb3dcIiwgXCJ0cmFpdFwiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ1bnNldFwiLCBcInVzZVwiLCBcInZhclwiLFxuICAgIFwidm9pZFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcHl0aG9uOiBuZXcgU2V0KFtcbiAgICBcIkZhbHNlXCIsIFwiTm9uZVwiLCBcIlRydWVcIiwgXCJhbmRcIiwgXCJhc1wiLCBcImFzc2VydFwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2xhc3NcIixcbiAgICBcImNvbnRpbnVlXCIsIFwiZGVmXCIsIFwiZGVsXCIsIFwiZWxpZlwiLCBcImVsc2VcIiwgXCJleGNlcHRcIiwgXCJleGVjXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJnbG9iYWxcIiwgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbnRcIiwgXCJpc1wiLCBcImxhbWJkYVwiLCBcIm1hdGNoXCIsIFwibm9ubG9jYWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInBhc3NcIiwgXCJwcmludFwiLFxuICAgIFwicmFpc2VcIiwgXCJyZXR1cm5cIiwgXCJzdHJcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIiwgXCJfXCIsIFwiX19kZWJ1Z19fXCJcbiAgXSksXG4gIHJ1Ynk6IG5ldyBTZXQoW1xuICAgIFwiQkVHSU5cIiwgXCJFTkRcIiwgXCJfX0VOQ09ESU5HX19cIiwgXCJfX0VORF9fXCIsIFwiX19GSUxFX19cIiwgXCJfX0xJTkVfX1wiLCBcImFsaWFzXCIsIFwiYW5kXCIsIFwiYmVnaW5cIiwgXCJicmVha1wiLCBcImNhc2VcIixcbiAgICBcImNsYXNzXCIsIFwiZGVmXCIsIFwiZGVmaW5lZD9cIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJlbHNpZlwiLCBcImVuZFwiLCBcImVuc3VyZVwiLCBcImZhbHNlXCIsIFwiZm9yXCIsIFwiaWZcIiwgXCJpblwiLCBcIm1vZHVsZVwiLFxuICAgIFwibmV4dFwiLCBcIm5pbFwiLCBcIm5vdFwiLCBcIm9yXCIsIFwicmVkb1wiLCBcInJlc2N1ZVwiLCBcInJldHJ5XCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN1cGVyXCIsIFwidGhlblwiLCBcInRydWVcIiwgXCJ1bmRlZlwiLFxuICAgIFwidW5sZXNzXCIsIFwidW50aWxcIiwgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImFic3RyYWN0XCIsIFwiYW55XCIsIFwiYXNcIiwgXCJhc3NlcnRzXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIixcbiAgICBcImNvbnN0cnVjdG9yXCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIixcbiAgICBcImZhbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdldFwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5mZXJcIiwgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcImtleW9mXCIsIFwibGV0XCIsIFwibW9kdWxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV2ZXJcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwib2ZcIixcbiAgICBcIm92ZXJyaWRlXCIsIFwicGFja2FnZVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLCBcInJlcXVpcmVcIiwgXCJyZXR1cm5cIiwgXCJzYXRpc2ZpZXNcIiwgXCJzZXRcIixcbiAgICBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3ltYm9sXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVcIiwgXCJ0eXBlb2ZcIiwgXCJ1bmRlZmluZWRcIixcbiAgICBcInVuaXF1ZVwiLCBcInVua25vd25cIiwgXCJ1c2luZ1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pXG59XG5cbmNvbnN0IHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncyA9IG5ldyBTZXQoW1xuICBcIkdMT0JBTFNcIiwgXCJfQ09PS0lFXCIsIFwiX0VOVlwiLCBcIl9GSUxFU1wiLCBcIl9HRVRcIiwgXCJfUE9TVFwiLCBcIl9SRVFVRVNUXCIsIFwiX1NFUlZFUlwiLCBcIl9TRVNTSU9OXCIsIFwidGhpc1wiXG5dKVxuY29uc3QgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MgPSBuZXcgU2V0KFtcIkdMT0JBTFNcIiwgXCJ0aGlzXCJdKVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbiBpZGVudGlmaWVyIGFnYWluc3QgdGhlIHRhcmdldCBiYWNrZW5kJ3MgZGVsaWJlcmF0ZWx5IG5hcnJvdyBsZXhpY2FsIGNvbnRyYWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBJZGVudGlmaWVyIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIikgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyYCwgbG9jYXRpb24pXG5cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcblxuICBpZiAoIWlkZW50aWZpZXJQYXR0ZXJuc1tsYW5ndWFnZV0udGVzdChuYW1lKSB8fCByZXNlcnZlZFdvcmRzW2xhbmd1YWdlXS5oYXMocmVzZXJ2ZWROYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwicHl0aG9uXCIgJiYgbmFtZS5ub3JtYWxpemUoXCJORktDXCIpICE9IG5hbWUgfHxcbiAgICBsYW5ndWFnZSA9PSBcImNcIiAmJiAhaXNDSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiY3BwXCIgJiYgIWlzQ3BwSWRlbnRpZmllcihuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFByb3RlY3RzIHRoZSBleGFjdCBDIGhlYWRlciBlbnZpcm9ubWVudCBhbmQgaW1wbGVtZW50YXRpb24tcmVzZXJ2ZWQgbmFtZXNwYWNlIGluIGVpdGhlciBkaXJlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNwZWxsaW5nIGlzIHNhZmUgaW4gdGhlIGNhbm9uaWNhbCB0cmFuc2xhdGlvbiB1bml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuYy50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmMuaGFzKG5hbWUpICYmXG4gICAgIS9eKD86c2VtYW50aWZvbGRffFNFTUFOVElGT0xEX3xTZW1hbnRpZm9sZHxhdG9taWNffElOVFswLTlfQS1aXXxVSU5UWzAtOV9BLVpdfElOVE1BWF98VUlOVE1BWF98U0laRV98UFRSRElGRl98U0lHX0FUT01JQ198V0NIQVJffFdJTlRffENIQVJffFNDSEFSX3xVQ0hBUl98U0hSVF98VVNIUlRffExPTkdffFVMT05HX3xMTE9OR198VUxMT05HXykvdS50ZXN0KG5hbWUpICYmXG4gICAgIS9eKD86dT9pbnQoPzo4fDE2fDMyfDY0fG1heHxwdHJ8X2xlYXN0WzAtOV0rfF9mYXN0WzAtOV0rKV90KSQvdS50ZXN0KG5hbWUpXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgYmluZGluZyBpZGVudGlmaWVyIGFnYWluc3QgdGFyZ2V0IHJlc3RyaWN0aW9ucyBiZXlvbmQgZ2VuZXJhbCBpZGVudGlmaWVyIHN5bnRheC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgc2VtYW50aWMgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIC0gQmluZGluZyByb2xlIGZvciBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IGxvY2F0aW9uIC0gT3JpZ2luYXRpbmcgbG9jYXRpb24uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0QmluZGluZ0lkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKSB7XG4gIHZhbGlkYXRlVGFyZ2V0SWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pXG5cbiAgY29uc3QgaW52YWxpZFR5cGVTY3JpcHRCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJ0eXBlc2NyaXB0XCIgJiYgKG5hbWUgPT0gXCJhcmd1bWVudHNcIiB8fCBuYW1lID09IFwiZXZhbFwiKVxuICBjb25zdCBpbnZhbGlkUGhwVmFyaWFibGUgPSBsYW5ndWFnZSA9PSBcInBocFwiICYmIHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgJiZcbiAgICAoKHJvbGUgPT0gXCJwYXJhbWV0ZXJcIiAmJiBwaHBJbnZhbGlkUGFyYW1ldGVyQmluZGluZ3MuaGFzKG5hbWUpKSB8fFxuICAgICAgKChyb2xlID09IFwibG9jYWxcIiB8fCByb2xlID09IFwiYXNzaWdubWVudCB0YXJnZXRcIikgJiYgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MuaGFzKG5hbWUpKSlcbiAgY29uc3QgaW52YWxpZFJ1YnlCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJydWJ5XCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiAvXl9bMS05XSQvdS50ZXN0KG5hbWUpXG5cbiAgaWYgKGludmFsaWRUeXBlU2NyaXB0QmluZGluZyB8fCBpbnZhbGlkUGhwVmFyaWFibGUgfHwgaW52YWxpZFJ1YnlCaW5kaW5nKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogUHJvdGVjdHMgQysrIGtleXdvcmRzLCB0aGUgYWN0dWFsIGluY2x1ZGVkIEMgbGlicmFyeSBuYW1lcy9tYWNyb3MgYW5kIHRoZSBzY2FmZm9sZCBuYW1lc3BhY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBzY2FsYXIgYmluZGluZyBvciBmdW5jdGlvbiBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgYSBjYW5vbmljYWwgQysrMjAgdHJhbnNsYXRpb24gdW5pdCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDcHBJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlzQ0lkZW50aWZpZXIobmFtZSkgJiYgIW5hbWUuaW5jbHVkZXMoXCJfX1wiKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5jcHAuaGFzKG5hbWUpXG59XG4iXX0=
|
|
286
|
+
/**
|
|
287
|
+
* Protects the edition-2021 scalar, entry and exact helper environment in both directions.
|
|
288
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
289
|
+
* @returns {boolean} Whether ordinary Rust syntax can represent the name safely.
|
|
290
|
+
*/
|
|
291
|
+
export function isRustIdentifier(name) {
|
|
292
|
+
return identifierPatterns.rust.test(name) && !reservedWords.rust.has(name) && !name.startsWith("semantifold_");
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
|
|
296
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
297
|
+
* @returns {boolean} Whether ordinary unescaped Swift syntax can preserve the name.
|
|
298
|
+
*/
|
|
299
|
+
export function isSwiftIdentifier(name) {
|
|
300
|
+
return identifierPatterns.swift.test(name) && !reservedWords.swift.has(name) && !name.startsWith("semantifold_");
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Protects Kotlin keywords, JVM scalar/scaffold names, and target-only helper names.
|
|
304
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
305
|
+
* @returns {boolean} Whether ordinary unescaped Kotlin syntax can preserve the name.
|
|
306
|
+
*/
|
|
307
|
+
export function isKotlinIdentifier(name) {
|
|
308
|
+
return identifierPatterns.kotlin.test(name) && !reservedWords.kotlin.has(name) && !name.startsWith("semantifold_") &&
|
|
309
|
+
!name.startsWith("SEMANTIFOLD_");
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Protects Dart keywords, VM scalar/scaffold names, and compiler-owned helpers.
|
|
313
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
314
|
+
* @returns {boolean} Whether ordinary Dart syntax can preserve the name.
|
|
315
|
+
*/
|
|
316
|
+
export function isDartIdentifier(name) {
|
|
317
|
+
return identifierPatterns.dart.test(name) && !reservedWords.dart.has(name) &&
|
|
318
|
+
!name.startsWith("_semantifold") && name.normalize("NFC") == name;
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDZGQUE2RjtBQUM3RixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxNQUFNLEVBQUUsbUNBQW1DO0lBQzNDLEtBQUssRUFBRSwrQ0FBK0M7SUFDdEQsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQyxHQUFHLEVBQUUsMEJBQTBCO0lBQy9CLENBQUMsRUFBRSwwQkFBMEI7SUFDN0IsTUFBTSxFQUFFLDJCQUEyQjtJQUNuQyxFQUFFLEVBQUUsMkJBQTJCO0lBQy9CLElBQUksRUFBRSw2QkFBNkI7SUFDbkMsVUFBVSxFQUFFLDZCQUE2QjtJQUN6QyxHQUFHLEVBQUUsMkJBQTJCO0lBQ2hDLE1BQU0sRUFBRSwrQ0FBK0M7SUFDdkQsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QixVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLElBQUksRUFBRSxxREFBcUQ7Q0FDNUQsQ0FBQTtBQUVELGtHQUFrRztBQUNsRyxNQUFNLGFBQWEsR0FBRztJQUNwQixPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZixJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTTtRQUM5RyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFR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LEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTTtRQUMxSSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDMUksT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNO0tBQ3JFLENBQUM7SUFDRixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWCxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxT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LE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDMUcsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDcEcsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxRyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQ3RHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDekcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRO0tBQzdELENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3RHLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN0RCxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUNwRyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVE7UUFDekgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDNUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQzFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQ2pILFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUNoSCxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDL0csV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07UUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztLQUNsQyxDQUFDO0lBQ0YsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1YsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3RHLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLO1FBQ3JHLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztLQUMxQixDQUFDO0lBQ0YsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQzVHLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSztRQUM1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztRQUN6RyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFP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RUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDbEcsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQ3BHLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVc7S0FDcEYsQ0FBQztJQUNGLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNaLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNO1FBQzNHLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVE7UUFDeEcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN6RyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTztLQUM1QyxDQUFDO0lBQ0YsVUFBVSxFQUFFLElBQUksR0FBRyxDQUFDO1FB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QUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3Vuc3VwcG9ydGVkQ2FwYWJpbGl0eX0gZnJvbSBcIi4uL2RpYWdub3N0aWMuanNcIlxuXG4vKiogQHR5cGUge1JlY29yZDxFeGNsdWRlPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZSwgXCJpb3NcIj4sIFJlZ0V4cD59ICovXG5jb25zdCBpZGVudGlmaWVyUGF0dGVybnMgPSB7XG4gIGFuZHJvaWQ6IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBkYXJ0OiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAga290bGluOiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAgc3dpZnQ6IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1c3Q6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgY3BwOiAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvdSxcbiAgYzogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGNzaGFycDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBnbzogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBqYXZhOiAvXltBLVphLXpfJF1bQS1aYS16MC05XyRdKiQvdSxcbiAgamF2YXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHBocDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBweXRob246IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1Ynk6IC9eW2Etel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgdHlwZXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHdhc206IC9eKD86WyRfXXxcXHB7WElEX1N0YXJ0fSkoPzpbJF9dfFxccHtYSURfQ29udGludWV9KSokL3Vcbn1cblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCI+LCBTZXQ8c3RyaW5nPj59ICovXG5jb25zdCByZXNlcnZlZFdvcmRzID0ge1xuICBhbmRyb2lkOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIGRhcnQ6IG5ldyBTZXQoW1xuICAgIFwiRnVuY3Rpb25cIiwgXCJOZXZlclwiLCBcIk9iamVjdFwiLCBcIlJhbmdlRXJyb3JcIiwgXCJTdHJpbmdcIiwgXCJhYnN0cmFjdFwiLCBcImFzXCIsIFwiYXNzZXJ0XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIixcbiAgICBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImNvdmFyaWFudFwiLCBcImRlZmF1bHRcIiwgXCJkZWZlcnJlZFwiLCBcImRvXCIsXG4gICAgXCJkb3VibGVcIiwgXCJkeW5hbWljXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsIFwiZXh0ZW5zaW9uXCIsIFwiZXh0ZXJuYWxcIiwgXCJmYWN0b3J5XCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLFxuICAgIFwiZmluYWxseVwiLCBcImZvclwiLCBcImdldFwiLCBcImhpZGVcIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImlzXCIsIFwibGF0ZVwiLCBcImxpYnJhcnlcIixcbiAgICBcIm1haW5cIiwgXCJtaXhpblwiLCBcIm5hdGl2ZVwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJudW1cIiwgXCJvZlwiLCBcIm9uXCIsIFwib3BlcmF0b3JcIiwgXCJwYXJ0XCIsIFwicHJpbnRcIiwgXCJyZXF1aXJlZFwiLCBcInJldGhyb3dcIixcbiAgICBcInJldHVyblwiLCBcInNlYWxlZFwiLCBcInNldFwiLCBcInNob3dcIiwgXCJzdGF0aWNcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bmNcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWRlZlwiLFxuICAgIFwidmFyXCIsIFwidm9pZFwiLCBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiLCBcIkJpZ0ludFwiLCBcIl9cIlxuICBdKSxcbiAga290bGluOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIHN3aWZ0OiBuZXcgU2V0KFtcbiAgICBcIkFueVwiLCBcIlNlbGZcIiwgXCJUeXBlXCIsIFwiUHJvdG9jb2xcIiwgXCJhY3RvclwiLCBcImFueVwiLCBcImFzXCIsIFwiYXNzb2NpYXRlZHR5cGVcIiwgXCJhc3NvY2lhdGl2aXR5XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvcnJvd2luZ1wiLFxuICAgIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN1bWVcIiwgXCJjb25zdW1pbmdcIiwgXCJjb250aW51ZVwiLCBcImNvbnZlbmllbmNlXCIsIFwiY29weVwiLCBcImRlZmF1bHRcIiwgXCJkZWZlclwiLCBcImRlaW5pdFwiLFxuICAgIFwiZGlkU2V0XCIsIFwiZGlzdHJpYnV0ZWRcIiwgXCJkb1wiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4dGVuc2lvblwiLCBcImZhbGx0aHJvdWdoXCIsIFwiZmFsc2VcIiwgXCJmaWxlcHJpdmF0ZVwiLCBcImZpbmFsXCIsIFwiZm9yXCIsXG4gICAgXCJmdW5jXCIsIFwiZ2V0XCIsIFwiZ3VhcmRcIiwgXCJpZlwiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5kaXJlY3RcIiwgXCJpbmZpeFwiLCBcImluaXRcIiwgXCJpbm91dFwiLCBcImludGVybmFsXCIsIFwiaXNcIiwgXCJpc29sYXRlZFwiLCBcImxhenlcIixcbiAgICBcImxldFwiLCBcIm1hY3JvXCIsIFwibXV0YXRpbmdcIiwgXCJuaWxcIiwgXCJub25pc29sYXRlZFwiLCBcIm5vbm11dGF0aW5nXCIsIFwib3BlblwiLCBcIm9wZXJhdG9yXCIsIFwib3B0aW9uYWxcIiwgXCJvdmVycmlkZVwiLCBcInBhY2thZ2VcIixcbiAgICBcInBvc3RmaXhcIiwgXCJwcmVjZWRlbmNlXCIsIFwicHJlY2VkZW5jZWdyb3VwXCIsIFwicHJlZml4XCIsIFwicHJpdmF0ZVwiLCBcInByb3RvY29sXCIsIFwicHVibGljXCIsIFwicmVwZWF0XCIsIFwicmVxdWlyZWRcIiwgXCJyZXRocm93c1wiLCBcInJldHVyblwiLFxuICAgIFwic2FmZVwiLCBcInNlbGZcIiwgXCJzZW5kaW5nXCIsIFwic2V0XCIsIFwic29tZVwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN1YnNjcmlwdFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwidGhyb3dzXCIsIFwidHJ1ZVwiLCBcInRyeVwiLFxuICAgIFwidHlwZWFsaWFzXCIsIFwidW5vd25lZFwiLCBcInVuc2FmZVwiLCBcInZhclwiLCBcIndlYWtcIiwgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2lsbFNldFwiLCBcInlpZWxkXCIsIFwiX1wiLCBcIkJvb2xcIiwgXCJJbnRcIiwgXCJJbnQ2NFwiLCBcIlN0cmluZ1wiLFxuICAgIFwiU3dpZnRcIiwgXCJtYWluXCIsIFwicHJpbnRcIlxuICBdKSxcbiAgcnVzdDogbmV3IFNldChbXG4gICAgXCJhc1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJjcmF0ZVwiLCBcImR5blwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmblwiLCBcImZvclwiLCBcImlmXCIsIFwiaW1wbFwiLCBcImluXCIsXG4gICAgXCJsZXRcIiwgXCJsb29wXCIsIFwibWF0Y2hcIiwgXCJtb2RcIiwgXCJtb3ZlXCIsIFwibXV0XCIsIFwicHViXCIsIFwicmVmXCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcIlNlbGZcIiwgXCJzdGF0aWNcIiwgXCJzdHJ1Y3RcIiwgXCJzdXBlclwiLCBcInRyYWl0XCIsIFwidHJ1ZVwiLCBcInR5cGVcIixcbiAgICBcInVuc2FmZVwiLCBcInVzZVwiLCBcIndoZXJlXCIsIFwid2hpbGVcIiwgXCJhYnN0cmFjdFwiLCBcImJlY29tZVwiLCBcImJveFwiLCBcImRvXCIsIFwiZmluYWxcIiwgXCJtYWNyb1wiLCBcIm92ZXJyaWRlXCIsIFwicHJpdlwiLCBcInR5cGVvZlwiLCBcInVuc2l6ZWRcIiwgXCJ2aXJ0dWFsXCIsXG4gICAgXCJ5aWVsZFwiLCBcInRyeVwiLCBcInVuaW9uXCIsIFwiX1wiLCBcIm1haW5cIiwgXCJTdHJpbmdcIiwgXCJzdGRcIiwgXCJpNjRcIiwgXCJib29sXCJcbiAgXSksXG4gIGNwcDogbmV3IFNldChbXG4gICAgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcImFuZFwiLCBcImFuZF9lcVwiLCBcImFzbVwiLCBcImF1dG9cIiwgXCJiaXRhbmRcIiwgXCJiaXRvclwiLCBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGFyOF90XCIsIFwiY2hhcjE2X3RcIiwgXCJjaGFyMzJfdFwiLCBcImNsYXNzXCIsIFwiY29tcGxcIiwgXCJjb25jZXB0XCIsIFwiY29uc3RcIiwgXCJjb25zdGV2YWxcIiwgXCJjb25zdGV4cHJcIiwgXCJjb25zdGluaXRcIiwgXCJjb25zdF9jYXN0XCIsIFwiY29udGludWVcIiwgXCJjb19hd2FpdFwiLCBcImNvX3JldHVyblwiLCBcImNvX3lpZWxkXCIsIFwiZGVjbHR5cGVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJkeW5hbWljX2Nhc3RcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cGxpY2l0XCIsIFwiZXhwb3J0XCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZyaWVuZFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJtdXRhYmxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibm9leGNlcHRcIiwgXCJub3RcIiwgXCJub3RfZXFcIiwgXCJudWxscHRyXCIsIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yX2VxXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlZ2lzdGVyXCIsIFwicmVpbnRlcnByZXRfY2FzdFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIiwgXCJzaXplb2ZcIiwgXCJzdGF0aWNcIiwgXCJzdGF0aWNfYXNzZXJ0XCIsIFwic3RhdGljX2Nhc3RcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0ZW1wbGF0ZVwiLCBcInRoaXNcIiwgXCJ0aHJlYWRfbG9jYWxcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlZGVmXCIsIFwidHlwZWlkXCIsIFwidHlwZW5hbWVcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidXNpbmdcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2NoYXJfdFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieG9yX2VxXCIsIFwic3RkXCIsIFwic3RyaW5nXCIsIFwibnVtZXJpY19saW1pdHNcIixcbiAgICAvLyBUaGUgcXVhbGlmaWVkIGxpYnN0ZGMrKyA8c3RyaW5nPiBpbmNsdWRlIGNoYWluIGFsc28gZXhwb3NlcyB0aGVzZSBnbG9iYWwgbmFtZXMuXG4gICAgXCJXRU9GXCIsIFwid2ludF90XCJcbiAgXSksXG4gIGM6IG5ldyBTZXQoW1xuICAgIFwiYXV0b1wiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNoYXJcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVmYXVsdFwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlcm5cIixcbiAgICBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwiaW50XCIsIFwibG9uZ1wiLCBcInJlZ2lzdGVyXCIsIFwicmVzdHJpY3RcIiwgXCJyZXR1cm5cIiwgXCJzaG9ydFwiLCBcInNpZ25lZFwiLFxuICAgIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidHlwZWRlZlwiLCBcInVuaW9uXCIsIFwidW5zaWduZWRcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGlsZVwiLFxuICAgIFwiYm9vbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcIlRSVUVcIiwgXCJGQUxTRVwiLCBcImludDY0X3RcIiwgXCJ1aW50NjRfdFwiLCBcInNpemVfdFwiLCBcInB0cmRpZmZfdFwiLCBcIm1haW5cIiwgXCJOVUxMXCIsIFwiSU5UNjRfQ1wiLCBcIlVJTlQ2NF9DXCIsXG4gICAgXCJJTlQ2NF9NSU5cIiwgXCJJTlQ2NF9NQVhcIiwgXCJQVFJESUZGX01BWFwiLCBcIkNIQVJfQklUXCIsIFwic3RkaW5cIiwgXCJzdGRvdXRcIiwgXCJzdGRlcnJcIiwgXCJtYWxsb2NcIiwgXCJmcmVlXCIsIFwiZXhpdFwiLFxuICAgIFwiZndyaXRlXCIsIFwiZmZsdXNoXCIsIFwibWVtY3B5XCIsIFwibWVtY21wXCIsIFwiRklMRVwiLCBcImZwb3NfdFwiLCBcImRpdl90XCIsIFwibGRpdl90XCIsIFwibGxkaXZfdFwiLCBcIndjaGFyX3RcIiwgXCJtYXhfYWxpZ25fdFwiLFxuICAgIFwib2Zmc2V0b2ZcIiwgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcIm5vcmV0dXJuXCIsIFwidHJ1ZVwiLCBcImZhbHNlXCIsIFwiYXNzZXJ0XCIsIFwic3RhdGljX2Fzc2VydFwiLCBcImVycm5vXCIsXG4gICAgXCJFT0ZcIiwgXCJCVUZTSVpcIiwgXCJGT1BFTl9NQVhcIiwgXCJGSUxFTkFNRV9NQVhcIiwgXCJMX3RtcG5hbVwiLCBcIlNFRUtfQ1VSXCIsIFwiU0VFS19FTkRcIiwgXCJTRUVLX1NFVFwiLCBcIlRNUF9NQVhcIixcbiAgICBcIkVYSVRfRkFJTFVSRVwiLCBcIkVYSVRfU1VDQ0VTU1wiLCBcIk1CX0NVUl9NQVhcIiwgXCJNQl9MRU5fTUFYXCIsIFwiUkFORF9NQVhcIixcbiAgICBcInJlbW92ZVwiLCBcInJlbmFtZVwiLCBcInRtcGZpbGVcIiwgXCJ0bXBuYW1cIiwgXCJmY2xvc2VcIiwgXCJmb3BlblwiLCBcImZyZW9wZW5cIiwgXCJzZXRidWZcIiwgXCJzZXR2YnVmXCIsXG4gICAgXCJmcHJpbnRmXCIsIFwiZnNjYW5mXCIsIFwicHJpbnRmXCIsIFwic2NhbmZcIiwgXCJzbnByaW50ZlwiLCBcInNwcmludGZcIiwgXCJzc2NhbmZcIiwgXCJ2ZnByaW50ZlwiLCBcInZmc2NhbmZcIiwgXCJ2cHJpbnRmXCIsXG4gICAgXCJ2c2NhbmZcIiwgXCJ2c25wcmludGZcIiwgXCJ2c3ByaW50ZlwiLCBcInZzc2NhbmZcIiwgXCJmZ2V0Y1wiLCBcImZnZXRzXCIsIFwiZnB1dGNcIiwgXCJmcHV0c1wiLCBcImdldGNcIiwgXCJnZXRjaGFyXCIsXG4gICAgXCJwdXRjXCIsIFwicHV0Y2hhclwiLCBcInB1dHNcIiwgXCJ1bmdldGNcIiwgXCJmcmVhZFwiLCBcImZnZXRwb3NcIiwgXCJmc2Vla1wiLCBcImZzZXRwb3NcIiwgXCJmdGVsbFwiLCBcInJld2luZFwiLCBcImNsZWFyZXJyXCIsXG4gICAgXCJmZW9mXCIsIFwiZmVycm9yXCIsIFwicGVycm9yXCIsIFwiYXRvZlwiLCBcImF0b2lcIiwgXCJhdG9sXCIsIFwiYXRvbGxcIiwgXCJzdHJ0b2RcIiwgXCJzdHJ0b2ZcIiwgXCJzdHJ0b2xkXCIsIFwic3RydG9sXCIsXG4gICAgXCJzdHJ0b2xsXCIsIFwic3RydG91bFwiLCBcInN0cnRvdWxsXCIsIFwicmFuZFwiLCBcInNyYW5kXCIsIFwiYWxpZ25lZF9hbGxvY1wiLCBcImNhbGxvY1wiLCBcInJlYWxsb2NcIiwgXCJhYm9ydFwiLCBcImF0ZXhpdFwiLFxuICAgIFwiYXRfcXVpY2tfZXhpdFwiLCBcInF1aWNrX2V4aXRcIiwgXCJnZXRlbnZcIiwgXCJzeXN0ZW1cIiwgXCJic2VhcmNoXCIsIFwicXNvcnRcIiwgXCJhYnNcIiwgXCJsYWJzXCIsIFwibGxhYnNcIiwgXCJkaXZcIiwgXCJsZGl2XCIsXG4gICAgXCJsbGRpdlwiLCBcIm1ibGVuXCIsIFwibWJ0b3djXCIsIFwid2N0b21iXCIsIFwibWJzdG93Y3NcIiwgXCJ3Y3N0b21ic1wiLCBcIm1lbW1vdmVcIiwgXCJzdHJjcHlcIiwgXCJzdHJuY3B5XCIsIFwic3RyY2F0XCIsXG4gICAgXCJzdHJuY2F0XCIsIFwic3RyY21wXCIsIFwic3RyY29sbFwiLCBcInN0cm5jbXBcIiwgXCJzdHJ4ZnJtXCIsIFwibWVtY2hyXCIsIFwic3RyY2hyXCIsIFwic3RyY3NwblwiLCBcInN0cnBicmtcIiwgXCJzdHJyY2hyXCIsXG4gICAgXCJzdHJzcG5cIiwgXCJzdHJzdHJcIiwgXCJzdHJ0b2tcIiwgXCJtZW1zZXRcIiwgXCJzdHJlcnJvclwiLCBcInN0cmxlblwiXG4gIF0pLFxuICBjc2hhcnA6IG5ldyBTZXQoW1xuICAgIFwiX19hcmdsaXN0XCIsIFwiX19tYWtlcmVmXCIsIFwiX19yZWZ0eXBlXCIsIFwiX19yZWZ2YWx1ZVwiLCBcImFic3RyYWN0XCIsIFwiYWRkXCIsIFwiYWxpYXNcIiwgXCJhbGxvd3NcIiwgXCJhbmRcIiwgXCJhc1wiLFxuICAgIFwiYXNjZW5kaW5nXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIiwgXCJib29sXCIsIFwiYnJlYWtcIixcbiAgICBcImJ5XCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGVja2VkXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjaW1hbFwiLCBcImRlZmF1bHRcIixcbiAgICBcImRlbGVnYXRlXCIsIFwiZGVzY2VuZGluZ1wiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXF1YWxzXCIsIFwiZXZlbnRcIiwgXCJleHBsaWNpdFwiLCBcImV4dGVuc2lvblwiLCBcImV4dGVyblwiLFxuICAgIFwiZmFsc2VcIiwgXCJmaWVsZFwiLCBcImZpbGVcIiwgXCJmaW5hbGx5XCIsIFwiZml4ZWRcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZvcmVhY2hcIiwgXCJmcm9tXCIsIFwiZ2V0XCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLFxuICAgIFwiZ3JvdXBcIiwgXCJpZlwiLCBcImltcGxpY2l0XCIsIFwiaW5cIiwgXCJpbml0XCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwiaW50ZXJuYWxcIiwgXCJpbnRvXCIsIFwiaXNcIiwgXCJqb2luXCIsIFwibGV0XCIsIFwibG9ja1wiLFxuICAgIFwibG9uZ1wiLCBcIm1hbmFnZWRcIiwgXCJuYW1lb2ZcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXdcIiwgXCJuaW50XCIsIFwibm90XCIsIFwibm90bnVsbFwiLCBcIm51bGxcIiwgXCJudWludFwiLCBcIm9iamVjdFwiLCBcIm9uXCIsXG4gICAgXCJvcGVyYXRvclwiLCBcIm9yXCIsIFwib3JkZXJieVwiLCBcIm91dFwiLCBcIm92ZXJyaWRlXCIsIFwicGFyYW1zXCIsIFwicGFydGlhbFwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLFxuICAgIFwicmVjb3JkXCIsIFwicmVmXCIsIFwicmVtb3ZlXCIsIFwicmVxdWlyZWRcIiwgXCJyZXR1cm5cIiwgXCJzYnl0ZVwiLCBcInNjb3BlZFwiLCBcInNlYWxlZFwiLCBcInNlbGVjdFwiLCBcInNldFwiLCBcInNob3J0XCIsIFwic2l6ZW9mXCIsXG4gICAgXCJzdGFja2FsbG9jXCIsIFwic3RhdGljXCIsIFwic3RyaW5nXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVvZlwiLCBcInVpbnRcIiwgXCJ1bG9uZ1wiLFxuICAgIFwidW5jaGVja2VkXCIsIFwidW5tYW5hZ2VkXCIsIFwidW5zYWZlXCIsIFwidXNob3J0XCIsIFwidXNpbmdcIiwgXCJ2YWx1ZVwiLCBcInZhclwiLCBcInZpcnR1YWxcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGdvOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJicmVha1wiLCBcImRlZmF1bHRcIiwgXCJmdW5jXCIsIFwiaW50ZXJmYWNlXCIsIFwic2VsZWN0XCIsIFwiY2FzZVwiLCBcImRlZmVyXCIsIFwiZ29cIiwgXCJtYXBcIiwgXCJzdHJ1Y3RcIiwgXCJjaGFuXCIsXG4gICAgXCJlbHNlXCIsIFwiZ290b1wiLCBcInBhY2thZ2VcIiwgXCJzd2l0Y2hcIiwgXCJjb25zdFwiLCBcImZhbGx0aHJvdWdoXCIsIFwiaWZcIiwgXCJyYW5nZVwiLCBcInR5cGVcIiwgXCJjb250aW51ZVwiLCBcImZvclwiLFxuICAgIFwiaW1wb3J0XCIsIFwicmV0dXJuXCIsIFwidmFyXCJcbiAgXSksXG4gIGphdmE6IG5ldyBTZXQoW1xuICAgIFwiX1wiLCBcImFic3RyYWN0XCIsIFwiYXNzZXJ0XCIsIFwiYm9vbGVhblwiLCBcImJyZWFrXCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIixcbiAgICBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0c1wiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsIFwiZmluYWxseVwiLCBcImZsb2F0XCIsIFwiZm9yXCIsXG4gICAgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5zdGFuY2VvZlwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImxvbmdcIiwgXCJtb2R1bGVcIiwgXCJuYXRpdmVcIiwgXCJuZXdcIixcbiAgICBcIm5vbi1zZWFsZWRcIiwgXCJudWxsXCIsIFwib3BlblwiLCBcIm9wZW5zXCIsIFwicGFja2FnZVwiLCBcInBlcm1pdHNcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHJvdmlkZXNcIiwgXCJwdWJsaWNcIixcbiAgICBcInJlY29yZFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2VhbGVkXCIsIFwic2hvcnRcIiwgXCJzdGF0aWNcIiwgXCJzdHJpY3RmcFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3luY2hyb25pemVkXCIsXG4gICAgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0aHJvd3NcIiwgXCJ0b1wiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaXRpdmVcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidXNlc1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLFxuICAgIFwid2hlblwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1xuICAgIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlYnVnZ2VyXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLFxuICAgIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmdW5jdGlvblwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsIFwiaW50ZXJmYWNlXCIsIFwibGV0XCIsIFwibmV3XCIsIFwibnVsbFwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmV0dXJuXCIsIFwic3RhdGljXCIsXG4gICAgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcIl9faGFsdF9jb21waWxlclwiLCBcImFic3RyYWN0XCIsIFwiYW5kXCIsIFwiYXJyYXlcIiwgXCJhc1wiLCBcImJyZWFrXCIsIFwiY2FsbGFibGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNsb25lXCIsXG4gICAgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjbGFyZVwiLCBcImRlZmF1bHRcIiwgXCJkaWVcIiwgXCJkb1wiLCBcImVjaG9cIiwgXCJlbHNlXCIsIFwiZWxzZWlmXCIsIFwiZW1wdHlcIiwgXCJlbmRkZWNsYXJlXCIsXG4gICAgXCJlbmRmb3JcIiwgXCJlbmRmb3JlYWNoXCIsIFwiZW5kaWZcIiwgXCJlbmRzd2l0Y2hcIiwgXCJlbmR3aGlsZVwiLCBcImVudW1cIiwgXCJldmFsXCIsIFwiZXhpdFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsIFwiZm5cIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImZ1bmN0aW9uXCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImluY2x1ZGVcIixcbiAgICBcImluY2x1ZGVfb25jZVwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnN0ZWFkb2ZcIiwgXCJpbnRlcmZhY2VcIiwgXCJpc3NldFwiLCBcIml0ZXJhYmxlXCIsIFwibGlzdFwiLCBcIm1hdGNoXCIsIFwibWl4ZWRcIiwgXCJuYW1lc3BhY2VcIixcbiAgICBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcIm9yXCIsIFwicGFyZW50XCIsIFwicHJpbnRcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsXG4gICAgXCJyZXF1aXJlX29uY2VcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwic3RhdGljXCIsIFwic3dpdGNoXCIsIFwidGhyb3dcIiwgXCJ0cmFpdFwiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ1bnNldFwiLCBcInVzZVwiLCBcInZhclwiLFxuICAgIFwidm9pZFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcHl0aG9uOiBuZXcgU2V0KFtcbiAgICBcIkZhbHNlXCIsIFwiTm9uZVwiLCBcIlRydWVcIiwgXCJhbmRcIiwgXCJhc1wiLCBcImFzc2VydFwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2xhc3NcIixcbiAgICBcImNvbnRpbnVlXCIsIFwiZGVmXCIsIFwiZGVsXCIsIFwiZWxpZlwiLCBcImVsc2VcIiwgXCJleGNlcHRcIiwgXCJleGVjXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJnbG9iYWxcIiwgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbnRcIiwgXCJpc1wiLCBcImxhbWJkYVwiLCBcIm1hdGNoXCIsIFwibm9ubG9jYWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInBhc3NcIiwgXCJwcmludFwiLFxuICAgIFwicmFpc2VcIiwgXCJyZXR1cm5cIiwgXCJzdHJcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIiwgXCJfXCIsIFwiX19kZWJ1Z19fXCJcbiAgXSksXG4gIHJ1Ynk6IG5ldyBTZXQoW1xuICAgIFwiQkVHSU5cIiwgXCJFTkRcIiwgXCJfX0VOQ09ESU5HX19cIiwgXCJfX0VORF9fXCIsIFwiX19GSUxFX19cIiwgXCJfX0xJTkVfX1wiLCBcImFsaWFzXCIsIFwiYW5kXCIsIFwiYmVnaW5cIiwgXCJicmVha1wiLCBcImNhc2VcIixcbiAgICBcImNsYXNzXCIsIFwiZGVmXCIsIFwiZGVmaW5lZD9cIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJlbHNpZlwiLCBcImVuZFwiLCBcImVuc3VyZVwiLCBcImZhbHNlXCIsIFwiZm9yXCIsIFwiaWZcIiwgXCJpblwiLCBcIm1vZHVsZVwiLFxuICAgIFwibmV4dFwiLCBcIm5pbFwiLCBcIm5vdFwiLCBcIm9yXCIsIFwicmVkb1wiLCBcInJlc2N1ZVwiLCBcInJldHJ5XCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN1cGVyXCIsIFwidGhlblwiLCBcInRydWVcIiwgXCJ1bmRlZlwiLFxuICAgIFwidW5sZXNzXCIsIFwidW50aWxcIiwgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImFic3RyYWN0XCIsIFwiYW55XCIsIFwiYXNcIiwgXCJhc3NlcnRzXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIixcbiAgICBcImNvbnN0cnVjdG9yXCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIixcbiAgICBcImZhbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdldFwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5mZXJcIiwgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcImtleW9mXCIsIFwibGV0XCIsIFwibW9kdWxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV2ZXJcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwib2ZcIixcbiAgICBcIm92ZXJyaWRlXCIsIFwicGFja2FnZVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLCBcInJlcXVpcmVcIiwgXCJyZXR1cm5cIiwgXCJzYXRpc2ZpZXNcIiwgXCJzZXRcIixcbiAgICBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3ltYm9sXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVcIiwgXCJ0eXBlb2ZcIiwgXCJ1bmRlZmluZWRcIixcbiAgICBcInVuaXF1ZVwiLCBcInVua25vd25cIiwgXCJ1c2luZ1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB3YXNtOiBuZXcgU2V0KClcbn1cblxuY29uc3QgcGhwSW52YWxpZFBhcmFtZXRlckJpbmRpbmdzID0gbmV3IFNldChbXG4gIFwiR0xPQkFMU1wiLCBcIl9DT09LSUVcIiwgXCJfRU5WXCIsIFwiX0ZJTEVTXCIsIFwiX0dFVFwiLCBcIl9QT1NUXCIsIFwiX1JFUVVFU1RcIiwgXCJfU0VSVkVSXCIsIFwiX1NFU1NJT05cIiwgXCJ0aGlzXCJcbl0pXG5jb25zdCBwaHBJbnZhbGlkQXNzaWduZWRCaW5kaW5ncyA9IG5ldyBTZXQoW1wiR0xPQkFMU1wiLCBcInRoaXNcIl0pXG5cbi8qKiBAdHlwZSB7UmVhZG9ubHk8UGFydGlhbDxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlLCBTZXQ8c3RyaW5nPj4+Pn0gKi9cbmNvbnN0IHJlc2VydmVkVHlwZU5hbWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGphdmE6IG5ldyBTZXQoW1wiQm9vbGVhblwiLCBcIkludGVnZXJcIiwgXCJNYWluXCIsIFwiTWF0aFwiLCBcIk9iamVjdFwiLCBcIlN0cmluZ1wiLCBcIlN5c3RlbVwiXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1wiQXJyYXlcIiwgXCJCb29sZWFuXCIsIFwiTWFwXCIsIFwiTWF0aFwiLCBcIk51bWJlclwiLCBcIk9iamVjdFwiLCBcIlJlZmxlY3RcIiwgXCJTdHJpbmdcIl0pLFxuICBwaHA6IG5ldyBTZXQoW1xuICAgIFwiYWRkcmVzc2luZm9cIiwgXCJhbGxvd2R5bmFtaWNwcm9wZXJ0aWVzXCIsIFwiYXBwZW5kaXRlcmF0b3JcIiwgXCJhcmd1bWVudGNvdW50ZXJyb3JcIiwgXCJhcml0aG1ldGljZXJyb3JcIiwgXCJhcnJheWFjY2Vzc1wiLFxuICAgIFwiYXJyYXlpdGVyYXRvclwiLCBcImFycmF5b2JqZWN0XCIsIFwiYXNzZXJ0aW9uZXJyb3JcIiwgXCJhdHRyaWJ1dGVcIiwgXCJiYWNrZWRlbnVtXCIsIFwiYmFkZnVuY3Rpb25jYWxsZXhjZXB0aW9uXCIsXG4gICAgXCJiYWRtZXRob2RjYWxsZXhjZXB0aW9uXCIsIFwiY2FjaGluZ2l0ZXJhdG9yXCIsXG4gICAgXCJjYWxsYmFja2ZpbHRlcml0ZXJhdG9yXCIsIFwiY2xvc2VkZ2VuZXJhdG9yZXhjZXB0aW9uXCIsIFwiY2xvc3VyZVwiLCBcImNvbXBpbGVlcnJvclwiLCBcImNvdW50YWJsZVwiLCBcImRhdGVlcnJvclwiLCBcImRhdGVleGNlcHRpb25cIixcbiAgICBcImRhdGVpbnRlcnZhbFwiLCBcImRhdGVpbnZhbGlkb3BlcmF0aW9uZXhjZXB0aW9uXCIsIFwiZGF0ZWludmFsaWR0aW1lem9uZWV4Y2VwdGlvblwiLCBcImRhdGVtYWxmb3JtZWRpbnRlcnZhbHN0cmluZ2V4Y2VwdGlvblwiLFxuICAgIFwiZGF0ZW1hbGZvcm1lZHBlcmlvZHN0cmluZ2V4Y2VwdGlvblwiLCBcImRhdGVtYWxmb3JtZWRzdHJpbmdleGNlcHRpb25cIiwgXCJkYXRlb2JqZWN0ZXJyb3JcIiwgXCJkYXRlcGVyaW9kXCIsIFwiZGF0ZXJhbmdlZXJyb3JcIixcbiAgICBcImRhdGV0aW1lXCIsIFwiZGF0ZXRpbWVpbW11dGFibGVcIiwgXCJkYXRldGltZWludGVyZmFjZVwiLCBcImRhdGV0aW1lem9uZVwiLCBcImRlZmxhdGVjb250ZXh0XCIsIFwiZGVsYXllZHRhcmdldHZhbGlkYXRpb25cIixcbiAgICBcImRlcHJlY2F0ZWRcIiwgXCJkaXJlY3RvcnlcIiwgXCJkaXJlY3RvcnlpdGVyYXRvclwiLCBcImRpdmlzaW9uYnl6ZXJvZXJyb3JcIiwgXCJkb21haW5leGNlcHRpb25cIiwgXCJlbXB0eWl0ZXJhdG9yXCIsIFwiZXJyb3JcIixcbiAgICBcImVycm9yZXhjZXB0aW9uXCIsIFwiZXhjZXB0aW9uXCIsIFwiZmZpXCIsIFwiZmliZXJcIiwgXCJmaWJlcmVycm9yXCIsIFwiZmlsZXN5c3RlbWl0ZXJhdG9yXCIsIFwiZmlsdGVyaXRlcmF0b3JcIiwgXCJmaW5mb1wiLCBcImdlbmVyYXRvclwiLFxuICAgIFwiZ2xvYml0ZXJhdG9yXCIsIFwiaGFzaGNvbnRleHRcIiwgXCJpbmZpbml0ZWl0ZXJhdG9yXCIsIFwiaW5mbGF0ZWNvbnRleHRcIiwgXCJpbnRlcm5hbGl0ZXJhdG9yXCIsIFwiaW52YWxpZGFyZ3VtZW50ZXhjZXB0aW9uXCIsXG4gICAgXCJpdGVyYXRvclwiLCBcIml0ZXJhdG9yYWdncmVnYXRlXCIsIFwiaXRlcmF0b3JpdGVyYXRvclwiLCBcImpzb25leGNlcHRpb25cIiwgXCJqc29uc2VyaWFsaXphYmxlXCIsIFwibGVuZ3RoZXhjZXB0aW9uXCIsXG4gICAgXCJsaWJ4bWxlcnJvclwiLCBcImxpbWl0aXRlcmF0b3JcIiwgXCJsb2dpY2V4Y2VwdGlvblwiLCBcIm11bHRpcGxlaXRlcmF0b3JcIiwgXCJub2Rpc2NhcmRcIiwgXCJub3Jld2luZGl0ZXJhdG9yXCIsXG4gICAgXCJvcGVuc3NsYXN5bW1ldHJpY2tleVwiLCBcIm9wZW5zc2xjZXJ0aWZpY2F0ZVwiLCBcIm9wZW5zc2xjZXJ0aWZpY2F0ZXNpZ25pbmdyZXF1ZXN0XCIsXG4gICAgXCJvdXRvZmJvdW5kc2V4Y2VwdGlvblwiLCBcIm91dG9mcmFuZ2VleGNlcHRpb25cIiwgXCJvdXRlcml0ZXJhdG9yXCIsIFwib3ZlcmZsb3dleGNlcHRpb25cIiwgXCJvdmVycmlkZVwiLCBcInBhcmVudGl0ZXJhdG9yXCIsXG4gICAgXCJwYXJzZWVycm9yXCIsIFwicGRvXCIsIFwicGRvZXhjZXB0aW9uXCIsIFwicGRvcm93XCIsIFwicGRvc3RhdGVtZW50XCIsIFwicGhhclwiLCBcInBoYXJkYXRhXCIsIFwicGhhcmV4Y2VwdGlvblwiLCBcInBoYXJmaWxlaW5mb1wiLFxuICAgIFwicGhwX3VzZXJfZmlsdGVyXCIsIFwicGhwdG9rZW5cIiwgXCJwcm9wZXJ0eWhvb2t0eXBlXCIsIFwicmFuZ2VleGNlcHRpb25cIiwgXCJyZWN1cnNpdmVhcnJheWl0ZXJhdG9yXCIsIFwicmVjdXJzaXZlY2FjaGluZ2l0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVjYWxsYmFja2ZpbHRlcml0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVkaXJlY3RvcnlpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWZpbHRlcml0ZXJhdG9yXCIsIFwicmVjdXJzaXZlaXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVpdGVyYXRvcml0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVyZWdleGl0ZXJhdG9yXCIsIFwicmVjdXJzaXZldHJlZWl0ZXJhdG9yXCIsIFwicmVmbGVjdGlvblwiLCBcInJlZmxlY3Rpb25hdHRyaWJ1dGVcIiwgXCJyZWZsZWN0aW9uY2xhc3NcIixcbiAgICBcInJlZmxlY3Rpb25jbGFzc2NvbnN0YW50XCIsIFwicmVmbGVjdGlvbmNvbnN0YW50XCIsIFwicmVmbGVjdGlvbmVudW1cIiwgXCJyZWZsZWN0aW9uZW51bWJhY2tlZGNhc2VcIiwgXCJyZWZsZWN0aW9uZW51bXVuaXRjYXNlXCIsXG4gICAgXCJyZWZsZWN0aW9uZXhjZXB0aW9uXCIsIFwicmVmbGVjdGlvbmV4dGVuc2lvblwiLCBcInJlZmxlY3Rpb25maWJlclwiLCBcInJlZmxlY3Rpb25mdW5jdGlvblwiLCBcInJlZmxlY3Rpb25mdW5jdGlvbmFic3RyYWN0XCIsXG4gICAgXCJyZWZsZWN0aW9uZ2VuZXJhdG9yXCIsIFwicmVmbGVjdGlvbmludGVyc2VjdGlvbnR5cGVcIiwgXCJyZWZsZWN0aW9ubWV0aG9kXCIsIFwicmVmbGVjdGlvbm5hbWVkdHlwZVwiLCBcInJlZmxlY3Rpb25vYmplY3RcIixcbiAgICBcInJlZmxlY3Rpb25wYXJhbWV0ZXJcIiwgXCJyZWZsZWN0aW9ucHJvcGVydHlcIiwgXCJyZWZsZWN0aW9ucmVmZXJlbmNlXCIsIFwicmVmbGVjdGlvbnR5cGVcIiwgXCJyZWZsZWN0aW9udW5pb250eXBlXCIsXG4gICAgXCJyZWZsZWN0aW9uemVuZGV4dGVuc2lvblwiLCBcInJlZmxlY3RvclwiLCBcInJlZ2V4aXRlcmF0b3JcIiwgXCJyZXF1ZXN0cGFyc2Vib2R5ZXhjZXB0aW9uXCIsIFwicmV0dXJudHlwZXdpbGxjaGFuZ2VcIixcbiAgICBcInJvdW5kaW5nbW9kZVwiLCBcInJ1bnRpbWVleGNlcHRpb25cIiwgXCJzZWVrYWJsZWl0ZXJhdG9yXCIsIFwic2Vuc2l0aXZlcGFyYW1ldGVyXCIsIFwic2Vuc2l0aXZlcGFyYW1ldGVydmFsdWVcIiwgXCJzZXJpYWxpemFibGVcIixcbiAgICBcInNlc3Npb25oYW5kbGVyXCIsIFwic2Vzc2lvbmhhbmRsZXJpbnRlcmZhY2VcIiwgXCJzZXNzaW9uaWRpbnRlcmZhY2VcIiwgXCJzZXNzaW9udXBkYXRldGltZXN0YW1waGFuZGxlcmludGVyZmFjZVwiLCBcInNobW9wXCIsXG4gICAgXCJzb2NrZXRcIiwgXCJzb2RpdW1leGNlcHRpb25cIiwgXCJzcGxkb3VibHlsaW5rZWRsaXN0XCIsIFwic3BsZmlsZWluZm9cIixcbiAgICBcInNwbGZpbGVvYmplY3RcIiwgXCJzcGxmaXhlZGFycmF5XCIsIFwic3BsaGVhcFwiLCBcInNwbG1heGhlYXBcIiwgXCJzcGxtaW5oZWFwXCIsIFwic3Bsb2JqZWN0c3RvcmFnZVwiLCBcInNwbG9ic2VydmVyXCIsXG4gICAgXCJzcGxwcmlvcml0eXF1ZXVlXCIsIFwic3BscXVldWVcIiwgXCJzcGxzdGFja1wiLCBcInNwbHN1YmplY3RcIiwgXCJzcGx0ZW1wZmlsZW9iamVjdFwiLCBcInN0ZGNsYXNzXCIsIFwic3RyZWFtYnVja2V0XCIsIFwic3RyaW5nYWJsZVwiLFxuICAgIFwic3lzdm1lc3NhZ2VxdWV1ZVwiLCBcInN5c3ZzZW1hcGhvcmVcIiwgXCJzeXN2c2hhcmVkbWVtb3J5XCIsIFwidGhyb3dhYmxlXCIsIFwidHJhdmVyc2FibGVcIiwgXCJ0eXBlZXJyb3JcIiwgXCJ1bmRlcmZsb3dleGNlcHRpb25cIixcbiAgICBcInVuZXhwZWN0ZWR2YWx1ZWV4Y2VwdGlvblwiLCBcInVuaGFuZGxlZG1hdGNoZXJyb3JcIiwgXCJ1bml0ZW51bVwiLCBcInZhbHVlZXJyb3JcIiwgXCJ3ZWFrbWFwXCIsIFwid2Vha3JlZmVyZW5jZVwiXG4gIF0pLFxuICBydWJ5OiBuZXcgU2V0KFtcbiAgICBcIkFyZ3VtZW50RXJyb3JcIiwgXCJBcnJheVwiLCBcIkJhc2ljT2JqZWN0XCIsIFwiQmluZGluZ1wiLCBcIkNsYXNzXCIsIFwiQ2xvc2VkUXVldWVFcnJvclwiLCBcIkNvbXBhcmFibGVcIiwgXCJDb21wbGV4XCIsIFwiRGF0YVwiLCBcIkRpclwiLFxuICAgIFwiRW5jb2RpbmdcIiwgXCJFbmNvZGluZ0Vycm9yXCIsIFwiRW51bWVyYWJsZVwiLCBcIkVudW1lcmF0b3JcIiwgXCJFT0ZFcnJvclwiLCBcIkVycm5vXCIsIFwiRXhjZXB0aW9uXCIsIFwiRmFsc2VDbGFzc1wiLCBcIkZpYmVyXCIsXG4gICAgXCJGaWJlckVycm9yXCIsIFwiRmlsZVwiLCBcIkZpbGVUZXN0XCIsIFwiRmxvYXRcIiwgXCJGcm96ZW5FcnJvclwiLCBcIkdDXCIsIFwiSGFzaFwiLCBcIklPXCIsIFwiSU9FcnJvclwiLCBcIkluZGV4RXJyb3JcIiwgXCJJbnRlZ2VyXCIsXG4gICAgXCJJbnRlcnJ1cHRcIiwgXCJLZXJuZWxcIiwgXCJLZXlFcnJvclwiLCBcIkxvYWRFcnJvclwiLCBcIkxvY2FsSnVtcEVycm9yXCIsIFwiTWFyc2hhbFwiLCBcIk1hdGNoRGF0YVwiLCBcIk1hdGhcIiwgXCJNZXRob2RcIiwgXCJNb2R1bGVcIixcbiAgICBcIk11dGV4XCIsIFwiTmFtZUVycm9yXCIsIFwiTmlsQ2xhc3NcIiwgXCJOb01lbW9yeUVycm9yXCIsIFwiTm9NZXRob2RFcnJvclwiLCBcIk5vdEltcGxlbWVudGVkRXJyb3JcIiwgXCJOdW1lcmljXCIsIFwiT2JqZWN0XCIsXG4gICAgXCJPYmplY3RTcGFjZVwiLCBcIlByb2NcIiwgXCJQcm9jZXNzXCIsIFwiUXVldWVcIiwgXCJSYWN0b3JcIiwgXCJSYW5kb21cIiwgXCJSYW5nZVwiLCBcIlJhdGlvbmFsXCIsIFwiUmVnZXhwXCIsIFwiUmVnZXhwRXJyb3JcIiwgXCJSdWJ5Vk1cIixcbiAgICBcIlJ1bnRpbWVFcnJvclwiLCBcIlNjcmlwdEVycm9yXCIsIFwiU2VjdXJpdHlFcnJvclwiLCBcIlNpZ25hbFwiLCBcIlNpZ25hbEV4Y2VwdGlvblwiLCBcIlNpemVkUXVldWVcIiwgXCJTdGFuZGFyZEVycm9yXCIsIFwiU3RvcEl0ZXJhdGlvblwiLFxuICAgIFwiU3RyaW5nXCIsIFwiU3RydWN0XCIsIFwiU3ltYm9sXCIsIFwiU3ludGF4RXJyb3JcIiwgXCJTeXN0ZW1DYWxsRXJyb3JcIiwgXCJTeXN0ZW1FeGl0XCIsIFwiU3lzdGVtU3RhY2tFcnJvclwiLCBcIlRocmVhZFwiLCBcIlRocmVhZEVycm9yXCIsXG4gICAgXCJUaHJlYWRHcm91cFwiLCBcIlRpbWVcIiwgXCJUcmFjZVBvaW50XCIsIFwiVHJ1ZUNsYXNzXCIsIFwiVHlwZUVycm9yXCIsIFwiVW5ib3VuZE1ldGhvZFwiLCBcIlVuY2F1Z2h0VGhyb3dFcnJvclwiLCBcIldhcm5pbmdcIixcbiAgICBcIlplcm9EaXZpc2lvbkVycm9yXCJcbiAgXSksXG4gIHR5cGVzY3JpcHQ6IG5ldyBTZXQoW1wiQXJyYXlcIiwgXCJCb29sZWFuXCIsIFwiTWFwXCIsIFwiTWF0aFwiLCBcIk51bWJlclwiLCBcIk9iamVjdFwiLCBcIlJlYWRvbmx5QXJyYXlcIiwgXCJSZWFkb25seU1hcFwiLCBcIlJlZmxlY3RcIiwgXCJTdHJpbmdcIl0pXG59KVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbiBpZGVudGlmaWVyIGFnYWluc3QgdGhlIHRhcmdldCBiYWNrZW5kJ3MgZGVsaWJlcmF0ZWx5IG5hcnJvdyBsZXhpY2FsIGNvbnRyYWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHt1bmtub3dufSBuYW1lIC0gQ2FuZGlkYXRlIHNlbWFudGljIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIElkZW50aWZpZXIgcm9sZSBmb3IgZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIE9yaWdpbmF0aW5nIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldElkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPSBcInN0cmluZ1wiKSB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGAke3JvbGV9IGlkZW50aWZpZXJgLCBsb2NhdGlvbilcblxuICBjb25zdCByZXNlcnZlZE5hbWUgPSBsYW5ndWFnZSA9PSBcInBocFwiID8gbmFtZS50b0xvd2VyQ2FzZSgpIDogbmFtZVxuICBjb25zdCBzeW50YXhMYW5ndWFnZSA9IGxhbmd1YWdlID09IFwiaW9zXCIgPyBcInN3aWZ0XCIgOiBsYW5ndWFnZVxuXG4gIGlmICghaWRlbnRpZmllclBhdHRlcm5zW3N5bnRheExhbmd1YWdlXS50ZXN0KG5hbWUpIHx8IHJlc2VydmVkV29yZHNbc3ludGF4TGFuZ3VhZ2VdLmhhcyhyZXNlcnZlZE5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJweXRob25cIiAmJiBuYW1lLm5vcm1hbGl6ZShcIk5GS0NcIikgIT0gbmFtZSB8fFxuICAgIGxhbmd1YWdlID09IFwiY1wiICYmICFpc0NJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJydXN0XCIgJiYgIWlzUnVzdElkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImNwcFwiICYmICFpc0NwcElkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImRhcnRcIiAmJiAhaXNEYXJ0SWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwic3dpZnRcIiAmJiAoIWlzU3dpZnRJZGVudGlmaWVyKG5hbWUpIHx8IG5hbWUubm9ybWFsaXplKFwiTkZDXCIpICE9IG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIiAmJiAoIWlzS290bGluSWRlbnRpZmllcihuYW1lKSB8fCBuYW1lLm5vcm1hbGl6ZShcIk5GQ1wiKSAhPSBuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFByb3RlY3RzIHRoZSBleGFjdCBDIGhlYWRlciBlbnZpcm9ubWVudCBhbmQgaW1wbGVtZW50YXRpb24tcmVzZXJ2ZWQgbmFtZXNwYWNlIGluIGVpdGhlciBkaXJlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNwZWxsaW5nIGlzIHNhZmUgaW4gdGhlIGNhbm9uaWNhbCB0cmFuc2xhdGlvbiB1bml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuYy50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmMuaGFzKG5hbWUpICYmXG4gICAgIS9eKD86c2VtYW50aWZvbGRffFNFTUFOVElGT0xEX3xTZW1hbnRpZm9sZHxhdG9taWNffElOVFswLTlfQS1aXXxVSU5UWzAtOV9BLVpdfElOVE1BWF98VUlOVE1BWF98U0laRV98UFRSRElGRl98U0lHX0FUT01JQ198V0NIQVJffFdJTlRffENIQVJffFNDSEFSX3xVQ0hBUl98U0hSVF98VVNIUlRffExPTkdffFVMT05HX3xMTE9OR198VUxMT05HXykvdS50ZXN0KG5hbWUpICYmXG4gICAgIS9eKD86dT9pbnQoPzo4fDE2fDMyfDY0fG1heHxwdHJ8X2xlYXN0WzAtOV0rfF9mYXN0WzAtOV0rKV90KSQvdS50ZXN0KG5hbWUpXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgYmluZGluZyBpZGVudGlmaWVyIGFnYWluc3QgdGFyZ2V0IHJlc3RyaWN0aW9ucyBiZXlvbmQgZ2VuZXJhbCBpZGVudGlmaWVyIHN5bnRheC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBCaW5kaW5nIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRCaW5kaW5nSWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pIHtcbiAgdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbilcblxuICBjb25zdCBpbnZhbGlkVHlwZVNjcmlwdEJpbmRpbmcgPSBsYW5ndWFnZSA9PSBcInR5cGVzY3JpcHRcIiAmJiAobmFtZSA9PSBcImFyZ3VtZW50c1wiIHx8IG5hbWUgPT0gXCJldmFsXCIpXG4gIGNvbnN0IGludmFsaWRQaHBWYXJpYWJsZSA9IGxhbmd1YWdlID09IFwicGhwXCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJlxuICAgICgocm9sZSA9PSBcInBhcmFtZXRlclwiICYmIHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncy5oYXMobmFtZSkpIHx8XG4gICAgICAoKHJvbGUgPT0gXCJsb2NhbFwiIHx8IHJvbGUgPT0gXCJhc3NpZ25tZW50IHRhcmdldFwiIHx8IHJvbGUgPT0gXCJjYXRjaCBiaW5kaW5nXCIpICYmIHBocEludmFsaWRBc3NpZ25lZEJpbmRpbmdzLmhhcyhuYW1lKSkpXG4gIGNvbnN0IGludmFsaWRSdWJ5QmluZGluZyA9IGxhbmd1YWdlID09IFwicnVieVwiICYmIHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgJiYgL15fWzEtOV0kL3UudGVzdChuYW1lKVxuXG4gIGlmIChpbnZhbGlkVHlwZVNjcmlwdEJpbmRpbmcgfHwgaW52YWxpZFBocFZhcmlhYmxlIHx8IGludmFsaWRSdWJ5QmluZGluZykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIG5vbWluYWwgcmVjb3JkL3R5cGUgZGVjbGFyYXRpb24gbmFtZSBmb3IgdGhlIG9yaWdpbmFsLWZpdmUgdGFyZ2V0cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIEJhY2tlbmQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgdHlwZSBuYW1lLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBEZWNsYXJhdGlvbiBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRUeXBlSWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgbG9jYXRpb24pIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9IFwic3RyaW5nXCIgfHwgIS9eW0EtWl1bQS1aYS16MC05X10qJC91LnRlc3QobmFtZSkpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGByZWNvcmQgdHlwZSBpZGVudGlmaWVyICcke1N0cmluZyhuYW1lKX0nYCwgbG9jYXRpb24pXG4gIH1cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcbiAgY29uc3Qgc3ludGF4TGFuZ3VhZ2UgPSBsYW5ndWFnZSA9PSBcImlvc1wiID8gXCJzd2lmdFwiIDogbGFuZ3VhZ2VcblxuICBpZiAocmVzZXJ2ZWRXb3Jkc1tzeW50YXhMYW5ndWFnZV0uaGFzKHJlc2VydmVkTmFtZSkgfHwgcmVzZXJ2ZWRUeXBlTmFtZXNbbGFuZ3VhZ2VdPy5oYXMocmVzZXJ2ZWROYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYHJlY29yZCB0eXBlIGlkZW50aWZpZXIgJyR7bmFtZX0nYCwgbG9jYXRpb24pXG4gIH1cbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBDKysga2V5d29yZHMsIHRoZSBhY3R1YWwgaW5jbHVkZWQgQyBsaWJyYXJ5IG5hbWVzL21hY3JvcyBhbmQgdGhlIHNjYWZmb2xkIG5hbWVzcGFjZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyIHNjYWxhciBiaW5kaW5nIG9yIGZ1bmN0aW9uIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBhIGNhbm9uaWNhbCBDKysyMCB0cmFuc2xhdGlvbiB1bml0IGNhbiByZXByZXNlbnQgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NwcElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaXNDSWRlbnRpZmllcihuYW1lKSAmJiAhbmFtZS5pbmNsdWRlcyhcIl9fXCIpICYmICFyZXNlcnZlZFdvcmRzLmNwcC5oYXMobmFtZSlcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyB0aGUgZWRpdGlvbi0yMDIxIHNjYWxhciwgZW50cnkgYW5kIGV4YWN0IGhlbHBlciBlbnZpcm9ubWVudCBpbiBib3RoIGRpcmVjdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSBSdXN0IHN5bnRheCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lIHNhZmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVzdElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLnJ1c3QudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5ydXN0LmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgU3dpZnQga2V5d29yZHMsIHNjYWxhciBuYW1lcywgZW50cnkgcGx1bWJpbmcsIGFuZCB0YXJnZXQtb25seSBoZWxwZXIgbmFtZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSB1bmVzY2FwZWQgU3dpZnQgc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3dpZnRJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5zd2lmdC50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLnN3aWZ0LmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgS290bGluIGtleXdvcmRzLCBKVk0gc2NhbGFyL3NjYWZmb2xkIG5hbWVzLCBhbmQgdGFyZ2V0LW9ubHkgaGVscGVyIG5hbWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgdW5lc2NhcGVkIEtvdGxpbiBzeW50YXggY2FuIHByZXNlcnZlIHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNLb3RsaW5JZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5rb3RsaW4udGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5rb3RsaW4uaGFzKG5hbWUpICYmICFuYW1lLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIikgJiZcbiAgICAhbmFtZS5zdGFydHNXaXRoKFwiU0VNQU5USUZPTERfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgRGFydCBrZXl3b3JkcywgVk0gc2NhbGFyL3NjYWZmb2xkIG5hbWVzLCBhbmQgY29tcGlsZXItb3duZWQgaGVscGVycy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IERhcnQgc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGFydElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLmRhcnQudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5kYXJ0LmhhcyhuYW1lKSAmJlxuICAgICFuYW1lLnN0YXJ0c1dpdGgoXCJfc2VtYW50aWZvbGRcIikgJiYgbmFtZS5ub3JtYWxpemUoXCJORkNcIikgPT0gbmFtZVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/index.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,EAJ9C;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;CAE8C,GAFpC,MAAM,CAIlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EARnH;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;IAAuB,QAAQ,AAA/B,CACA,EADQ,MAAM,CACd;IAA+C,YAAY,AAA3D,CACA,EADQ,MAAM,GAAG,UAAU,GAAG,QAAQ,CACtC;IAAuB,iBAAiB,AAAxC,CACA,EADQ,MAAM,CACd;IAAkH,OAAO,AAAzH,CACA,EADQ;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CACzG;CAEmH,GAFzG,OAAO,sBAAsB,EAAE,iBAAiB,CAoF5D"}
|