semantifold 0.4.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.
Files changed (42) hide show
  1. package/README.md +5 -2
  2. package/build/index.d.ts +12 -8
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +10 -7
  5. package/build/src/backends/android.d.ts +49 -0
  6. package/build/src/backends/android.d.ts.map +1 -0
  7. package/build/src/backends/android.js +1274 -0
  8. package/build/src/backends/identifiers.d.ts.map +1 -1
  9. package/build/src/backends/identifiers.js +7 -1
  10. package/build/src/backends/kotlin.d.ts +10 -0
  11. package/build/src/backends/kotlin.d.ts.map +1 -1
  12. package/build/src/backends/kotlin.js +11 -9
  13. package/build/src/backends/program.d.ts +6 -4
  14. package/build/src/backends/program.d.ts.map +1 -1
  15. package/build/src/backends/program.js +5 -4
  16. package/build/src/backends/shared.d.ts.map +1 -1
  17. package/build/src/backends/shared.js +17 -1
  18. package/build/src/backends/writer.d.ts +21 -1
  19. package/build/src/backends/writer.d.ts.map +1 -1
  20. package/build/src/backends/writer.js +25 -2
  21. package/build/src/language-registry.d.ts.map +1 -1
  22. package/build/src/language-registry.js +11 -1
  23. package/build/src/semantic/types.d.ts +182 -2
  24. package/build/src/semantic/types.d.ts.map +1 -1
  25. package/build/src/semantic/types.js +44 -2
  26. package/docs/android.md +79 -0
  27. package/docs/architecture.md +2 -0
  28. package/docs/ios.md +1 -1
  29. package/docs/language-support.md +8 -1
  30. package/docs/source-maps.md +2 -0
  31. package/docs/specification.md +5 -0
  32. package/docs/testing.md +15 -0
  33. package/index.js +9 -6
  34. package/package.json +1 -1
  35. package/src/backends/android.js +1370 -0
  36. package/src/backends/identifiers.js +6 -0
  37. package/src/backends/kotlin.js +11 -8
  38. package/src/backends/program.js +4 -3
  39. package/src/backends/shared.js +19 -0
  40. package/src/backends/writer.js +27 -2
  41. package/src/language-registry.js +10 -0
  42. package/src/semantic/types.js +46 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Task037 adds the first concrete standard-library portability slice: exact parser-proved Ruby `require "socket"`, genuine `TCPSocket.new(host, port)`, receiver `gets`/`close`, and one-string `puts`/`Kernel.puts` compile through executable Ruby facades and canonical v1 contracts to protected PHP providers using native `fsockopen`, `fgets`, `feof`, `fclose`, and stdout. Task036's neutral versioned facade foundation was delivered through PR #46 and merge `9aba48f9d48bcef4fd4c9275aec14bfcc4f0904c`; Task035's canonical contract/provider hub was delivered through PR #45 and merge `a2aad9d4932bfc6087adc4ff8bca43678c92413c`. Task034 supplies explicit compiler-authorized host effects, linear owned resources/references, typed host failures, exactly-once lowering, and path-complete explicit close. Task033 adds bounded nominal reference classes, Task032 adds strict-Boolean condition-controlled loops, and Task021 adds a [browser-oriented WebAssembly target](docs/webassembly.md).
4
4
 
5
- Semantifold is an early language-neutral semantic code toolkit. The source tree supports a deliberately small fourteen-language baseline: PHP, Ruby, JavaScript with JSDoc, TypeScript, Java, Kotlin/JVM, strictly annotated Python, canonical C#, bounded Go, C17, C++20, Rust edition 2021, strict Swift, and strict Dart VM/native source share one typed semantic representation. Browser WebAssembly is an additional target-only ID, not a fifteenth source language. The published baseline remains `semantifold@0.3.0`; Tasks 021–023, Task 029, and Tasks 032–037 have not been released. Task 029 is implemented and accepted locally; exact-head review, TensorBuzz CI, merge, and post-merge verification remain delivery gates.
5
+ Semantifold is an early language-neutral semantic code toolkit. The source tree supports a deliberately small fourteen-language baseline: PHP, Ruby, JavaScript with JSDoc, TypeScript, Java, Kotlin/JVM, strictly annotated Python, canonical C#, bounded Go, C17, C++20, Rust edition 2021, strict Swift, and strict Dart VM/native source share one typed semantic representation. Browser WebAssembly is an additional target-only ID, not a fifteenth source language. The published baseline is `semantifold@0.4.0`. Android application generation is implemented on the Task 028 topic branch; exact-head TensorBuzz offline-build/KVM-emulator acceptance and merge remain coordinator-owned delivery gates.
6
6
 
7
7
  ## Current API
8
8
 
@@ -41,12 +41,14 @@ const original = originalPositionFor(artifact.mapping, {offset: artifact.code.in
41
41
 
42
42
  Generated text output always uses LF. Exact original content, including LF, CRLF, lone CR, and astral UTF-16 coordinates, remains in the source registry and `sourcesContent`. Optional inline/external `sourceMappingURL` directives apply only to JavaScript and TypeScript; PHP, Ruby, Java, Kotlin, Python, C#, Go, C, CPP, Rust, Swift, and Dart use the same rich/v3 model without foreign comments. Wasm instead uses rich byte ranges, a line-zero/byte-column Source Map v3 sidecar, and a relative `sourceMappingURL` custom section. See [source provenance and mappings](docs/source-maps.md) for schemas, lookups, composition, diagnostics, directives, and compatibility.
43
43
 
44
- `supportedLanguages` is the immutable registry-derived list `php`, `ruby`, `javascript`, `typescript`, `java`, `kotlin`, `python`, `csharp`, `go`, `c`, `cpp`, `rust`, `swift`, and `dart`. `languageCapabilities` additionally includes target-only `wasm` and `ios` records and exposes all sixteen IDs' independent frontend, text-backend, binary-backend, application-backend, and interoperability roles together with `generalFunctionsAndCalls`, `immutableCollections`, `optionalValues`, `orderedListIteration`, `orderedMapIteration`, `conditionControlledLoops`, `referenceClasses`, `effectfulCapabilitiesAndResources`, `closedRecords`, `typedErrors`, and `typeParametersAndGenerics` feature flags, artifact multiplicity, round-trip, mapping, acceptance-stage, and toolchain declarations. Unknown IDs use `UNSUPPORTED_LANGUAGE`; a registered ID missing a requested role uses `UNSUPPORTED_ROLE`; an existing backend that cannot represent a semantic module uses `UNSUPPORTED_CAPABILITY`.
44
+ `supportedLanguages` is the immutable registry-derived list `php`, `ruby`, `javascript`, `typescript`, `java`, `kotlin`, `python`, `csharp`, `go`, `c`, `cpp`, `rust`, `swift`, and `dart`. `languageCapabilities` additionally includes target-only `wasm`, `ios`, and `android` records and exposes all seventeen IDs' independent frontend, text-backend, binary-backend, application-backend, and interoperability roles together with `generalFunctionsAndCalls`, `immutableCollections`, `optionalValues`, `orderedListIteration`, `orderedMapIteration`, `conditionControlledLoops`, `referenceClasses`, `effectfulCapabilitiesAndResources`, `closedRecords`, `typedErrors`, and `typeParametersAndGenerics` feature flags, artifact multiplicity, round-trip, mapping, acceptance-stage, and toolchain declarations. Unknown IDs use `UNSUPPORTED_LANGUAGE`; a registered ID missing a requested role uses `UNSUPPORTED_ROLE`; an existing backend that cannot represent a semantic module uses `UNSUPPORTED_CAPABILITY`.
45
45
 
46
46
  `generateArtifactSet` is the additive single-module artifact API. Original text targets return an entry artifact with the exact legacy bytes and rich/v3 mappings; an external JavaScript-family map directive also returns the referenced serialized mapping sidecar. C# returns mapped `Program.cs` then synthetic-provenance `Semantifold.csproj`. Go returns exactly two ordered artifacts: fixed synthetic-provenance `go.mod` first, then mapped `main.go`; the fixed module is `example.com/semantifold/generated` with `go 1.26.0` and creates no `go.sum`. C returns mapped `program.c` followed by synthetic `semantifold_runtime.h`. Rust returns synthetic `Cargo.toml`, synthetic Cargo-generated `Cargo.lock`, then mapped `src/main.rs`, with fixed edition 2021 and Rust/Cargo 1.98.1. Dart returns synthetic `pubspec.yaml`, synthetic deterministic `pubspec.lock`, then mapped sole-entry `bin/program.dart`. Wasm binary/application generation returns `program.wasm`, `program.wasm.map`, `semantifold-loader.mjs`, then sole entry `index.html`, plus frozen `semantifold.browser.v1` ABI metadata. Because C#, Go, C, Rust, Dart, and Wasm are deliberately multi-artifact, `generate()` and `generateArtifact()` reject them with `UNSUPPORTED_ROLE`. Go accepts only an omitted filename or exact `main.go`, C accepts only omitted or exact `program.c`, Rust only omitted or exact `src/main.rs`, Dart only omitted or exact `bin/program.dart`, and Wasm only omitted or exact `program.wasm`; these multi-artifact backends reject unsupported mapping options rather than ignoring them. `createGeneratedArtifactSet` validates multi-file text, binary, mixed loader/binary, and application shapes transactionally: paths are ordered, unique, safe relative POSIX paths with no file/directory prefix collisions; content is explicitly text or bytes; media type, role, generated ownership, and provenance are required; exactly one artifact has role `entry`; and optional metadata is detached deeply frozen JSON. Binary content is held privately and returned as a fresh detached byte view on every read, so caller mutation cannot change validated bytes or their provenance. Generated helper files do not create semantic modules and are not Task 010 projects.
47
47
 
48
48
  Task 026 adds the target-only `ios` application backend through `generateArtifactSet({language: "ios", role: "application", ...})` and `generateProgramArtifactSet`. It lowers only the Task 022 Tasks 001–004 Swift subset, including Ruby-originating Task 010 projects, into deterministic captured semantic Swift, a synthetic SwiftUI shell, an unsigned Xcode project model, tests, exact assets, and a versioned ownership/provenance manifest with causal configuration spans and stable semantic-program identities. Artifact/resource paths use a closed portable ASCII alphabet while Unicode semantic source and generated text remain intact. Transactional create-only directory materialization remains deferred because Node's public filesystem API cannot provide both atomic no-replace directory publication and descriptor-relative no-follow operations without a separately authorized native boundary. Linux semantic execution and credential-free packed generation are implemented; real macOS/Xcode/Apple SDK/XCTest/XCUIAutomation/iOS Simulator acceptance is also deferred, so Task 026 is not delivered. See the [iOS application target](docs/ios.md).
49
49
 
50
+ Task 028 adds the target-only `android` application backend through the same artifact APIs. It lowers the Kotlin/JVM-supported semantic subset, including explicit Task 010 projects, into mapped namespaced Kotlin and a synthetic dependency-minimal Android Activity/native TextView project under fixed root `generated/android-app`. Configuration, manifests, SDK levels, resources/assets, output paths, checksums, and collisions are preflighted before rendering. The manifest has one exported launcher and no permissions or components beyond the Activity. The project carries exact Gradle 8.13, AGP 8.11.1, Kotlin 2.2.10, JDK 21.0.8, and API-35 metadata; its only Gradle library declarations are exact non-transitive test-implementation JUnit 4.13.2 and test-runtime Hamcrest Core 1.3. The implicit stdlib dependency is disabled, a checksum-pinned compiler stdlib is compile-input-only, and offline acceptance proves empty application runtime dependencies plus no JUnit/Hamcrest or Kotlin runtime implementation payload in the APK. No public materializer is exported. Real installation, labelled native-view assertion, activity recreation, emulator teardown, a second fresh boot/reinstall/relaunch, screenshots, UI XML, and failure diagnostics run only in the `/dev/kvm` TensorBuzz lane. See the [Android application target](docs/android.md).
51
+
50
52
  `parseProgram({entryModule, sources})` and `generateProgramArtifactSet({language, program})` are the opt-in Task 010 project APIs for PHP, Ruby, JavaScript/JSDoc, TypeScript, and Java. Callers supply every source explicitly; parsing resolves an acyclic dependency-first semantic program with stable module-qualified declaration identities, exports/import bindings, one selected entry, and complete provenance. Generation plans and validates the whole target layout before returning an immutable mapped artifact set. It performs no source discovery, package/load/classpath/network resolution, file writes, or package-manager work. Existing single-module APIs and bytes remain unchanged. See [multi-file modules and names](docs/multi-file-modules.md) for the public request/result contract, canonical source profiles, target layouts, diagnostics, and migration notes.
51
53
 
52
54
  Task 036 extends only this explicit program path with compiler-owned source-language facades. `createStdlibFacadeRegistry`, `listStdlibFacades`, and `resolveStdlibFacade` expose immutable versioned definitions and exact native module/symbol lookup. A parser-proved qualification import selects the dependency-only executable closure, records source identity evidence, and compiles those facade sources through the ordinary frontend/backend pipeline; generated facade files use the `support` role under a collision-safe `semantifold/facade/...` namespace. Application code cannot provide the facade's canonical authority, and malformed, dynamic, reflective, shadowed, reopened, native-extension, or forged inputs fail before artifacts are returned. Task 037 uses that route for its two Ruby facades, links only reachable canonical/provider modules, and retains mapped application/facade provenance plus protected synthetic provider provenance.
@@ -134,6 +136,7 @@ The execution specs require PHP CLI, Ruby, Python 3, TypeScript, a Java JDK, Kot
134
136
  - [Dart source and target](docs/dart.md)
135
137
  - [Browser WebAssembly target](docs/webassembly.md)
136
138
  - [iOS application target](docs/ios.md)
139
+ - [Android application target](docs/android.md)
137
140
  - [Parser qualification](docs/parser-qualification.md)
138
141
  - [Testing](docs/testing.md)
139
142
  - [Source provenance and mappings](docs/source-maps.md)
package/build/index.d.ts CHANGED
@@ -86,16 +86,18 @@ export declare function generateArtifact(input: {
86
86
  * @param {import("./src/semantic/types.js").BackendLanguage} input.language - Registered program target.
87
87
  * @param {import("./src/semantic/types.js").SemanticProgram} input.program - Complete resolved program.
88
88
  * @param {"text" | "application"} [input.role] - Explicit role; omitted preserves text generation.
89
- * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput} [input.configuration] - iOS application configuration.
90
- * @param {import("./src/semantic/types.js").IosApplicationAssetInput[]} [input.assets] - Exact iOS caller assets.
89
+ * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput} [input.configuration] - Application configuration.
90
+ * @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.assets] - Exact caller assets.
91
+ * @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
91
92
  * @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
92
93
  */
93
94
  export declare function generateProgramArtifactSet(input: {
94
95
  language: import("./src/semantic/types.js").BackendLanguage;
95
96
  program: import("./src/semantic/types.js").SemanticProgram;
96
97
  role?: "text" | "application";
97
- configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput;
98
- assets?: import("./src/semantic/types.js").IosApplicationAssetInput[];
98
+ configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput;
99
+ assets?: import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[];
100
+ resources?: import("./src/semantic/types.js").AndroidApplicationInputFile[];
99
101
  }): import("./src/semantic/types.js").GeneratedArtifactSet;
100
102
  /**
101
103
  * Generates a deterministic artifact set for one semantic module.
@@ -107,8 +109,9 @@ export declare function generateProgramArtifactSet(input: {
107
109
  * @param {"none" | "external" | "inline"} [input.mapDirective] - JavaScript-family map directive.
108
110
  * @param {string} [input.sourceMapFilename] - External map filename.
109
111
  * @param {{filename: string, content: string, language?: import("./src/semantic/types.js").SemanticLanguage}[]} [input.sources] - Original sources.
110
- * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput} [input.configuration] - iOS application configuration.
111
- * @param {import("./src/semantic/types.js").IosApplicationAssetInput[]} [input.assets] - Exact iOS caller assets.
112
+ * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput} [input.configuration] - Application configuration.
113
+ * @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.assets] - Exact caller assets.
114
+ * @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
112
115
  * @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
113
116
  */
114
117
  export declare function generateArtifactSet(input: {
@@ -123,7 +126,8 @@ export declare function generateArtifactSet(input: {
123
126
  content: string;
124
127
  language?: import("./src/semantic/types.js").SemanticLanguage;
125
128
  }[];
126
- configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput;
127
- assets?: import("./src/semantic/types.js").IosApplicationAssetInput[];
129
+ configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput;
130
+ assets?: import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[];
131
+ resources?: import("./src/semantic/types.js").AndroidApplicationInputFile[];
128
132
  }): import("./src/semantic/types.js").GeneratedArtifactSet;
129
133
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.js"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -76,8 +76,9 @@ export function generateArtifact(input) {
76
76
  * @param {import("./src/semantic/types.js").BackendLanguage} input.language - Registered program target.
77
77
  * @param {import("./src/semantic/types.js").SemanticProgram} input.program - Complete resolved program.
78
78
  * @param {"text" | "application"} [input.role] - Explicit role; omitted preserves text generation.
79
- * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput} [input.configuration] - iOS application configuration.
80
- * @param {import("./src/semantic/types.js").IosApplicationAssetInput[]} [input.assets] - Exact iOS caller assets.
79
+ * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput} [input.configuration] - Application configuration.
80
+ * @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.assets] - Exact caller assets.
81
+ * @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
81
82
  * @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
82
83
  */
83
84
  export function generateProgramArtifactSet(input) {
@@ -93,8 +94,9 @@ export function generateProgramArtifactSet(input) {
93
94
  * @param {"none" | "external" | "inline"} [input.mapDirective] - JavaScript-family map directive.
94
95
  * @param {string} [input.sourceMapFilename] - External map filename.
95
96
  * @param {{filename: string, content: string, language?: import("./src/semantic/types.js").SemanticLanguage}[]} [input.sources] - Original sources.
96
- * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput} [input.configuration] - iOS application configuration.
97
- * @param {import("./src/semantic/types.js").IosApplicationAssetInput[]} [input.assets] - Exact iOS caller assets.
97
+ * @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput} [input.configuration] - Application configuration.
98
+ * @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.assets] - Exact caller assets.
99
+ * @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
98
100
  * @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
99
101
  */
100
102
  export function generateArtifactSet(input) {
@@ -105,7 +107,7 @@ export function generateArtifactSet(input) {
105
107
  message: "Artifact-set generation requires a request object."
106
108
  });
107
109
  }
108
- const { assets, configuration, filename, language, mapDirective, module, role = "text", sourceMapFilename, sources } = input;
110
+ const { assets, configuration, filename, language, mapDirective, module, resources, role = "text", sourceMapFilename, sources } = input;
109
111
  if (typeof language != "string" || language.length == 0) {
110
112
  throw new SemantifoldDiagnostic({
111
113
  code: "INVALID_ARTIFACT_SET",
@@ -184,6 +186,7 @@ export function generateArtifactSet(input) {
184
186
  }
185
187
  const registryRole = role == "binary" ? "binaryBackend" : "applicationBackend";
186
188
  const backend = languageRegistry.resolve(language, registryRole, module?.location);
187
- return constructArtifactSet(backend({ assets, configuration, filename, language, mapDirective, module, sourceMapFilename, sources }));
189
+ return constructArtifactSet(backend(language == "android" ? input :
190
+ { assets, configuration, filename, language, mapDirective, module, resources, sourceMapFilename, sources }));
188
191
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLEVBQUMsMEJBQTBCLElBQUksb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUVyRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0FBRXZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxDQUFBO0FBQzlCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFBO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQ25GLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQzdELE9BQU8sRUFBQyw0QkFBNEIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzdHLE9BQU8sRUFBQyw0QkFBNEIsRUFB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LEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbEYsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3BhcnNlU291cmNlfSBmcm9tIFwiLi9zcmMvZnJvbnRlbmRzL2luZGV4LmpzXCJcbmltcG9ydCB7cGFyc2VQcm9ncmFtU291cmNlfSBmcm9tIFwiLi9zcmMvZnJvbnRlbmRzL3Byb2dyYW0uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUFydGlmYWN0U291cmNlLCBnZW5lcmF0ZVNvdXJjZX0gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2luZGV4LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVQcm9ncmFtQXJ0aWZhY3RzfSBmcm9tIFwiLi9zcmMvYmFja2VuZHMvcHJvZ3JhbS5qc1wiXG5pbXBvcnQge2NyZWF0ZUdlbmVyYXRlZEFydGlmYWN0U2V0IGFzIGNvbnN0cnVjdEFydGlmYWN0U2V0fSBmcm9tIFwiLi9zcmMvYXJ0aWZhY3RzLmpzXCJcbmltcG9ydCB7U2VtYW50aWZvbGREaWFnbm9zdGljLCB1bnN1cHBvcnRlZENhcGFiaWxpdHl9IGZyb20gXCIuL3NyYy9kaWFnbm9zdGljLmpzXCJcbmltcG9ydCB7bGFuZ3VhZ2VSZWdpc3RyeX0gZnJvbSBcIi4vc3JjL2xhbmd1YWdlLXJlZ2lzdHJ5LmpzXCJcbmltcG9ydCB7a290bGluQXJ0aWZhY3RNZXRhZGF0YX0gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2tvdGxpbi5qc1wiXG5pbXBvcnQge3ByZWZsaWdodEVmZmVjdENhcGFiaWxpdGllc30gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2VmZmVjdHMuanNcIlxuXG5jb25zdCBhcnRpZmFjdEJhY2tlbmRSb2xlcyA9IG5ldyBTZXQoW1widGV4dFwiLCBcImJpbmFyeVwiLCBcImFwcGxpY2F0aW9uXCJdKVxuXG5leHBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpY31cbmV4cG9ydCB7Y3JlYXRlQ2FwYWJpbGl0eUF1dGhvcml0eX0gZnJvbSBcIi4vc3JjL3NlbWFudGljL2NhcGFiaWxpdGllcy5qc1wiXG5leHBvcnQge2xhbmd1YWdlQ2FwYWJpbGl0aWVzLCBzdXBwb3J0ZWRMYW5ndWFnZXN9IGZyb20gXCIuL3NyYy9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiXG5leHBvcnQge2NyZWF0ZUdlbmVyYXRlZEFydGlmYWN0U2V0fSBmcm9tIFwiLi9zcmMvYXJ0aWZhY3RzLmpzXCJcbmV4cG9ydCB7Y3JlYXRlU3RkbGliQ29udHJhY3RSZWdpc3RyeSwgbGlzdFN0ZGxpYk1vZHVsZXMsIHJlc29sdmVTdGRsaWJNb2R1bGV9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9zdGRsaWIuanNcIlxuZXhwb3J0IHtjcmVhdGVTdGRsaWJQcm92aWRlclJlZ2lzdHJ5LCBsaXN0U3RkbGliUHJvdmlkZXJzfSBmcm9tIFwiLi9zcmMvc3RkbGliLXByb3ZpZGVycy5qc1wiXG5leHBvcnQge25lZ290aWF0ZVN0ZGxpYlByb3ZpZGVyc30gZnJvbSBcIi4vc3JjL3N0ZGxpYi1uZWdvdGlhdGlvbi5qc1wiXG5leHBvcnQge2NyZWF0ZVN0ZGxpYkZhY2FkZVJlZ2lzdHJ5LCBsaXN0U3RkbGliRmFjYWRlcywgcmVzb2x2ZVN0ZGxpYkZhY2FkZX0gZnJvbSBcIi4vc3JjL3N0ZGxpYi1mYWNhZGVzLmpzXCJcbmV4cG9ydCB7Y3JlYXRlQnl0ZU1hcHBpbmcsIHBhcnNlQnl0ZU1hcHBpbmcsIHN0cmluZ2lmeUJ5dGVNYXBwaW5nfSBmcm9tIFwiLi9zcmMvYmluYXJ5LW1hcHBpbmcuanNcIlxuZXhwb3J0IHtjYW5vbmljYWxUb29sY2hhaW5zLCBkaXNjb3ZlckNhbm9uaWNhbFRvb2xjaGFpbiwgZGlzY292ZXJUb29sY2hhaW59IGZyb20gXCIuL3NyYy90b29sY2hhaW5zLmpzXCJcbmV4cG9ydCB7cnVuQWNjZXB0YW5jZVN0YWdlc30gZnJvbSBcIi4vc3JjL2FjY2VwdGFuY2UuanNcIlxuZXhwb3J0IHtnZXROb2RlUHJvdmVuYW5jZSwgZ2V0U3ltYm9sUHJvdmVuYW5jZX0gZnJvbSBcIi4vc3JjL3NlbWFudGljL3Byb3ZlbmFuY2UuanNcIlxuZXhwb3J0IHtwcmltYXJ5TG9jYXRpb259IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9wcm92ZW5hbmNlLmpzXCJcbmV4cG9ydCB7XG4gIGNvbXBvc2VNYXBwaW5ncyxcbiAgY29tcG9zZVNvdXJjZU1hcHMsXG4gIGdlbmVyYXRlZFBvc2l0aW9uRm9yLFxuICBtYXBwaW5nRnJvbVNvdXJjZU1hcCxcbiAgb3JpZ2luYWxQb3NpdGlvbkZvcixcbiAgcGFyc2VNYXBwaW5nLFxuICByZW1hcERpYWdub3N0aWMsXG4gIHJlbWFwTG9jYXRpb24sXG4gIHNwYW5zRm9yTm9kZSxcbiAgc3BhbnNGb3JTeW1ib2wsXG4gIHN0cmluZ2lmeU1hcHBpbmcsXG4gIHRvU291cmNlTWFwVjNcbn0gZnJvbSBcIi4vc3JjL21hcHBpbmcuanNcIlxuXG4vKipcbiAqIFBhcnNlcyBzb3VyY2UgaW50byBTZW1hbnRpZm9sZCdzIHNoYXJlZCBzZW1hbnRpYyByZXByZXNlbnRhdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIFBhcnNlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQuZmlsZW5hbWUgLSBTb3VyY2UgZmlsZW5hbWUgdXNlZCBpbiBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBTb3VyY2UgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQuc291cmNlIC0gU291cmNlIHRleHQuXG4gKiBAcGFyYW0ge1JlYWRvbmx5PGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHk+IHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQ2FwYWJpbGl0eUF1dGhvcml0eUlucHV0fSBbaW5wdXQuY2FwYWJpbGl0eUF1dGhvcml0eV0gLSBFeHBsaWNpdCBjb21waWxlciBhdXRob3JpdHkuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNNb2R1bGV9IFNlbWFudGljIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gIHJldHVybiBwYXJzZVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBjb21wbGV0ZSBleHBsaWNpdCBtdWx0aS1zb3VyY2UgcHJvamVjdCBpbnRvIG9uZSByZXNvbHZlZCBzZW1hbnRpYyBwcm9ncmFtLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gUHJvZ3JhbSBwYXJzZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LmVudHJ5TW9kdWxlIC0gU3RhYmxlIGlkZW50aXR5IG9mIHRoZSBzb2xlIGVudHJ5IG1vZHVsZS5cbiAqIEBwYXJhbSB7e2ZpbGVuYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGxhbmd1YWdlOiBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlLCBzb3VyY2U6IHN0cmluZ31bXX0gaW5wdXQuc291cmNlcyAtIENvbXBsZXRlIGNhbGxlci1zdXBwbGllZCBzb3VyY2Ugc2V0LlxuICogQHBhcmFtIHtSZWFkb25seTxpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5PiB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHlJbnB1dH0gW2lucHV0LmNhcGFiaWxpdHlBdXRob3JpdHldIC0gRXhwbGljaXQgY29tcGlsZXIgYXV0aG9yaXR5IHNoYXJlZCBieSBldmVyeSBwcm9ncmFtIG1vZHVsZS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY1Byb2dyYW19IFNlbWFudGljIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb2dyYW0oaW5wdXQpIHtcbiAgcmV0dXJuIHBhcnNlUHJvZ3JhbVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGFyZ2V0LWxhbmd1YWdlIHNvdXJjZSBmcm9tIGEgc2hhcmVkIHNlbWFudGljIG1vZHVsZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIEdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBpbnB1dC5tb2R1bGUgLSBTZW1hbnRpYyBtb2R1bGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBHZW5lcmF0ZWQgc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGUoaW5wdXQpIHtcbiAgcmV0dXJuIGdlbmVyYXRlU291cmNlKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHJldXNhYmxlIG91dHB1dCBhcnRpZmFjdCB3aXRoIHJpY2ggYW5kIFNvdXJjZSBNYXAgdjMgbWFwcGluZ3MuXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBHZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5maWxlbmFtZV0gLSBPdXRwdXQgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge1wibm9uZVwiIHwgXCJleHRlcm5hbFwiIHwgXCJpbmxpbmVcIn0gW2lucHV0Lm1hcERpcmVjdGl2ZV0gLSBKYXZhU2NyaXB0LWZhbWlseSBtYXAgZGlyZWN0aXZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5zb3VyY2VNYXBGaWxlbmFtZV0gLSBFeHRlcm5hbCBtYXAgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX1bXX0gW2lucHV0LnNvdXJjZXNdIC0gU291cmNlcyBmb3IgY2FsbGVyLWF1dGhvcmVkIG1vZHVsZXMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3R9IEdlbmVyYXRlZCBhcnRpZmFjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQXJ0aWZhY3QoaW5wdXQpIHtcbiAgcmV0dXJuIGdlbmVyYXRlQXJ0aWZhY3RTb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZGV0ZXJtaW5pc3RpYyBtYXBwZWQgYXJ0aWZhY3Qgc2V0IGZvciBhIGNvbXBsZXRlIHNlbWFudGljIHByb2dyYW0uXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBQcm9ncmFtIGdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFJlZ2lzdGVyZWQgcHJvZ3JhbSB0YXJnZXQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljUHJvZ3JhbX0gaW5wdXQucHJvZ3JhbSAtIENvbXBsZXRlIHJlc29sdmVkIHByb2dyYW0uXG4gKiBAcGFyYW0ge1widGV4dFwiIHwgXCJhcHBsaWNhdGlvblwifSBbaW5wdXQucm9sZV0gLSBFeHBsaWNpdCByb2xlOyBvbWl0dGVkIHByZXNlcnZlcyB0ZXh0IGdlbmVyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLklvc0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbklucHV0fSBbaW5wdXQuY29uZmlndXJhdGlvbl0gLSBpT1MgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Bc3NldElucHV0W119IFtpbnB1dC5hc3NldHNdIC0gRXhhY3QgaU9TIGNhbGxlciBhc3NldHMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3RTZXR9IENvbXBsZXRlIGdlbmVyYXRlZCBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVByb2dyYW1BcnRpZmFjdFNldChpbnB1dCkge1xuICByZXR1cm4gZ2VuZXJhdGVQcm9ncmFtQXJ0aWZhY3RzKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGRldGVybWluaXN0aWMgYXJ0aWZhY3Qgc2V0IGZvciBvbmUgc2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gQXJ0aWZhY3Qtc2V0IGdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFJlZ2lzdGVyZWQgdGFyZ2V0IGxhbmd1YWdlIG9yIHBsYXRmb3JtIElELlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtcInRleHRcIiB8IFwiYmluYXJ5XCIgfCBcImFwcGxpY2F0aW9uXCJ9IFtpbnB1dC5yb2xlXSAtIFJlcXVlc3RlZCBiYWNrZW5kIGFydGlmYWN0IHJvbGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2lucHV0LmZpbGVuYW1lXSAtIFNhZmUgb3V0cHV0IHBhdGggZm9yIGEgdGV4dCB0YXJnZXQuXG4gKiBAcGFyYW0ge1wibm9uZVwiIHwgXCJleHRlcm5hbFwiIHwgXCJpbmxpbmVcIn0gW2lucHV0Lm1hcERpcmVjdGl2ZV0gLSBKYXZhU2NyaXB0LWZhbWlseSBtYXAgZGlyZWN0aXZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5zb3VyY2VNYXBGaWxlbmFtZV0gLSBFeHRlcm5hbCBtYXAgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX1bXX0gW2lucHV0LnNvdXJjZXNdIC0gT3JpZ2luYWwgc291cmNlcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Db25maWd1cmF0aW9uSW5wdXR9IFtpbnB1dC5jb25maWd1cmF0aW9uXSAtIGlPUyBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5Jb3NBcHBsaWNhdGlvbkFzc2V0SW5wdXRbXX0gW2lucHV0LmFzc2V0c10gLSBFeGFjdCBpT1MgY2FsbGVyIGFzc2V0cy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5HZW5lcmF0ZWRBcnRpZmFjdFNldH0gQ29tcGxldGUgZ2VuZXJhdGVkIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQXJ0aWZhY3RTZXQoaW5wdXQpIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGlucHV0KSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICE9IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9BUlRJRkFDVF9TRVRcIixcbiAgICAgIGxhbmd1YWdlOiBcImFydGlmYWN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkFydGlmYWN0LXNldCBnZW5lcmF0aW9uIHJlcXVpcmVzIGEgcmVxdWVzdCBvYmplY3QuXCJcbiAgICB9KVxuICB9XG4gIGNvbnN0IHthc3NldHMsIGNvbmZpZ3VyYXRpb24sIGZpbGVuYW1lLCBsYW5ndWFnZSwgbWFwRGlyZWN0aXZlLCBtb2R1bGUsIHJvbGUgPSBcInRleHRcIiwgc291cmNlTWFwRmlsZW5hbWUsIHNvdXJjZXN9ID0gaW5wdXRcblxuICBpZiAodHlwZW9mIGxhbmd1YWdlICE9IFwic3RyaW5nXCIgfHwgbGFuZ3VhZ2UubGVuZ3RoID09IDApIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9BUlRJRkFDVF9TRVRcIixcbiAgICAgIGxhbmd1YWdlOiBcImFydGlmYWN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkFydGlmYWN0LXNldCBnZW5lcmF0aW9uIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHN0cmluZyBsYW5ndWFnZSBvciB0YXJnZXQgSUQuXCJcbiAgICB9KVxuICB9XG4gIGlmICh0eXBlb2Ygcm9sZSAhPSBcInN0cmluZ1wiIHx8ICFhcnRpZmFjdEJhY2tlbmRSb2xlcy5oYXMocm9sZSkpIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9BUlRJRkFDVF9TRVRcIixcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgbWVzc2FnZTogXCJBcnRpZmFjdCBiYWNrZW5kIHJvbGUgbXVzdCBiZSAndGV4dCcsICdiaW5hcnknLCBvciAnYXBwbGljYXRpb24nLlwiXG4gICAgfSlcbiAgfVxuICBjb25zdCB0YXJnZXQgPSBsYW5ndWFnZVJlZ2lzdHJ5LnJlY29yZChsYW5ndWFnZSlcbiAgcHJlZmxpZ2h0RWZmZWN0Q2FwYWJpbGl0aWVzKG1vZHVsZSwgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSkpXG4gIGNvbnN0IGdlbmVyaWNEZWNsYXJhdGlvbiA9IFsuLi5tb2R1bGU/LnJlY29yZHMgPz8gW10sIC4uLm1vZHVsZT8uZnVuY3Rpb25zID8/IFtdXVxuICAgIC5maW5kKChkZWNsYXJhdGlvbikgPT4gKGRlY2xhcmF0aW9uPy50eXBlUGFyYW1ldGVycz8ubGVuZ3RoID8/IDApID4gMClcblxuICBpZiAoZ2VuZXJpY0RlY2xhcmF0aW9uICYmICF0YXJnZXQuZmVhdHVyZXMudHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMTIgdHlwZSBwYXJhbWV0ZXJzIGFuZCBnZW5lcmljc1wiLCBnZW5lcmljRGVjbGFyYXRpb24ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlPy5yZWNvcmRzKSAmJiBtb2R1bGUucmVjb3Jkcy5sZW5ndGggPiAwICYmICF0YXJnZXQuZmVhdHVyZXMuY2xvc2VkUmVjb3Jkcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMDkgY2xvc2VkIHJlY29yZHNcIiwgbW9kdWxlLnJlY29yZHNbMF0ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlPy5jbGFzc2VzKSAmJiBtb2R1bGUuY2xhc3Nlcy5sZW5ndGggPiAwICYmICF0YXJnZXQuZmVhdHVyZXMucmVmZXJlbmNlQ2xhc3Nlcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMzMgcmVmZXJlbmNlIGNsYXNzZXNcIiwgbW9kdWxlLmNsYXNzZXNbMF0ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG4gIGlmIChyb2xlID09IFwidGV4dFwiKSB7XG4gICAgaWYgKHRhcmdldC5hcnRpZmFjdE11bHRpcGxpY2l0eSA9PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIGNvbnN0IGJhY2tlbmQgPSBsYW5ndWFnZVJlZ2lzdHJ5LnJlc29sdmUobGFuZ3VhZ2UsIFwidGV4dEJhY2tlbmRcIiwgbW9kdWxlPy5sb2NhdGlvbilcblxuICAgICAgcmV0dXJuIGNvbnN0cnVjdEFydGlmYWN0U2V0KGJhY2tlbmQoe2ZpbGVuYW1lLCBsYW5ndWFnZSwgbWFwRGlyZWN0aXZlLCBtb2R1bGUsIHNvdXJjZU1hcEZpbGVuYW1lLCBzb3VyY2VzfSkpXG4gICAgfVxuICAgIGNvbnN0IGFydGlmYWN0ID0gZ2VuZXJhdGVBcnRpZmFjdFNvdXJjZSh7XG4gICAgICBmaWxlbmFtZSxcbiAgICAgIGxhbmd1YWdlOiAvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBtYXBEaXJlY3RpdmUsXG4gICAgICBtb2R1bGUsXG4gICAgICBzb3VyY2VNYXBGaWxlbmFtZSxcbiAgICAgIHNvdXJjZXNcbiAgICB9KVxuXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5HZW5lcmF0ZWRTZXRBcnRpZmFjdFtdfSAqL1xuICAgIGNvbnN0IGFydGlmYWN0cyA9IFt7XG4gICAgICBjb250ZW50OiBhcnRpZmFjdC5jb2RlLFxuICAgICAgY29udGVudEtpbmQ6IFwidGV4dFwiLFxuICAgICAgbWVkaWFUeXBlOiAvKiogQHR5cGUge3N0cmluZ30gKi8gKHRhcmdldC5tZWRpYVR5cGUpLFxuICAgICAgb3duZXJzaGlwOiBcImdlbmVyYXRlZFwiLFxuICAgICAgcGF0aDogYXJ0aWZhY3QuZmlsZW5hbWUsXG4gICAgICBwcm92ZW5hbmNlOiB7XG4gICAgICAgIGtpbmQ6IFwidGV4dFwiLFxuICAgICAgICBtYXBwaW5nOiBhcnRpZmFjdC5tYXBwaW5nLFxuICAgICAgICBzb3VyY2VNYXA6IGFydGlmYWN0LnNvdXJjZU1hcCxcbiAgICAgICAgc291cmNlTWFwRmlsZW5hbWU6IGFydGlmYWN0LnNvdXJjZU1hcEZpbGVuYW1lXG4gICAgICB9LFxuICAgICAgcm9sZTogXCJlbnRyeVwiXG4gICAgfV1cblxuICAgIGlmIChtYXBEaXJlY3RpdmUgPT0gXCJleHRlcm5hbFwiKSB7XG4gICAgICBhcnRpZmFjdHMucHVzaCh7XG4gICAgICAgIGNvbnRlbnQ6IGAke0pTT04uc3RyaW5naWZ5KGFydGlmYWN0LnNvdXJjZU1hcCl9XFxuYCxcbiAgICAgICAgY29udGVudEtpbmQ6IFwidGV4dFwiLFxuICAgICAgICBtZWRpYVR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBvd25lcnNoaXA6IFwiZ2VuZXJhdGVkXCIsXG4gICAgICAgIHBhdGg6IGFydGlmYWN0LnNvdXJjZU1hcEZpbGVuYW1lLFxuICAgICAgICBwcm92ZW5hbmNlOiB7XG4gICAgICAgICAga2luZDogXCJzeW50aGV0aWNcIixcbiAgICAgICAgICByZWFzb246IFwiU2VyaWFsaXplZCBTb3VyY2UgTWFwIHYzIHByb2plY3Rpb24gZm9yIHRoZSBnZW5lcmF0ZWQgZW50cnkgYXJ0aWZhY3QuXCIsXG4gICAgICAgICAgcmVsYXRlZE9yaWdpbnM6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IFwibWFwcGluZ1wiXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldCh7XG4gICAgICBhcnRpZmFjdHMsXG4gICAgICAuLi4obGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIiA/IHttZXRhZGF0YToga290bGluQXJ0aWZhY3RNZXRhZGF0YX0gOiB7fSksXG4gICAgICB0YXJnZXQ6IGxhbmd1YWdlXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlZ2lzdHJ5Um9sZSA9IHJvbGUgPT0gXCJiaW5hcnlcIiA/IFwiYmluYXJ5QmFja2VuZFwiIDogXCJhcHBsaWNhdGlvbkJhY2tlbmRcIlxuICBjb25zdCBiYWNrZW5kID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZXNvbHZlKGxhbmd1YWdlLCByZWdpc3RyeVJvbGUsIG1vZHVsZT8ubG9jYXRpb24pXG5cbiAgcmV0dXJuIGNvbnN0cnVjdEFydGlmYWN0U2V0KGJhY2tlbmQoe2Fzc2V0cywgY29uZmlndXJhdGlvbiwgZmlsZW5hbWUsIGxhbmd1YWdlLCBtYXBEaXJlY3RpdmUsIG1vZHVsZSwgc291cmNlTWFwRmlsZW5hbWUsIHNvdXJjZXN9KSlcbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLEVBQUMsMEJBQTBCLElBQUksb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUVyRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0FBRXZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxDQUFBO0FBQzlCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFBO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQ25GLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQzdELE9BQU8sRUFBQyw0QkFBNEIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzdHLE9BQU8sRUFBQyw0QkFBNEIsRUFB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QVksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbEYsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzlHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtwYXJzZVNvdXJjZX0gZnJvbSBcIi4vc3JjL2Zyb250ZW5kcy9pbmRleC5qc1wiXG5pbXBvcnQge3BhcnNlUHJvZ3JhbVNvdXJjZX0gZnJvbSBcIi4vc3JjL2Zyb250ZW5kcy9wcm9ncmFtLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVBcnRpZmFjdFNvdXJjZSwgZ2VuZXJhdGVTb3VyY2V9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9pbmRleC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlUHJvZ3JhbUFydGlmYWN0c30gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL3Byb2dyYW0uanNcIlxuaW1wb3J0IHtjcmVhdGVHZW5lcmF0ZWRBcnRpZmFjdFNldCBhcyBjb25zdHJ1Y3RBcnRpZmFjdFNldH0gZnJvbSBcIi4vc3JjL2FydGlmYWN0cy5qc1wiXG5pbXBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpYywgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi9zcmMvZGlhZ25vc3RpYy5qc1wiXG5pbXBvcnQge2xhbmd1YWdlUmVnaXN0cnl9IGZyb20gXCIuL3NyYy9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiXG5pbXBvcnQge2tvdGxpbkFydGlmYWN0TWV0YWRhdGF9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9rb3RsaW4uanNcIlxuaW1wb3J0IHtwcmVmbGlnaHRFZmZlY3RDYXBhYmlsaXRpZXN9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9lZmZlY3RzLmpzXCJcblxuY29uc3QgYXJ0aWZhY3RCYWNrZW5kUm9sZXMgPSBuZXcgU2V0KFtcInRleHRcIiwgXCJiaW5hcnlcIiwgXCJhcHBsaWNhdGlvblwiXSlcblxuZXhwb3J0IHtTZW1hbnRpZm9sZERpYWdub3N0aWN9XG5leHBvcnQge2NyZWF0ZUNhcGFiaWxpdHlBdXRob3JpdHl9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9jYXBhYmlsaXRpZXMuanNcIlxuZXhwb3J0IHtsYW5ndWFnZUNhcGFiaWxpdGllcywgc3VwcG9ydGVkTGFuZ3VhZ2VzfSBmcm9tIFwiLi9zcmMvbGFuZ3VhZ2UtcmVnaXN0cnkuanNcIlxuZXhwb3J0IHtjcmVhdGVHZW5lcmF0ZWRBcnRpZmFjdFNldH0gZnJvbSBcIi4vc3JjL2FydGlmYWN0cy5qc1wiXG5leHBvcnQge2NyZWF0ZVN0ZGxpYkNvbnRyYWN0UmVnaXN0cnksIGxpc3RTdGRsaWJNb2R1bGVzLCByZXNvbHZlU3RkbGliTW9kdWxlfSBmcm9tIFwiLi9zcmMvc2VtYW50aWMvc3RkbGliLmpzXCJcbmV4cG9ydCB7Y3JlYXRlU3RkbGliUHJvdmlkZXJSZWdpc3RyeSwgbGlzdFN0ZGxpYlByb3ZpZGVyc30gZnJvbSBcIi4vc3JjL3N0ZGxpYi1wcm92aWRlcnMuanNcIlxuZXhwb3J0IHtuZWdvdGlhdGVTdGRsaWJQcm92aWRlcnN9IGZyb20gXCIuL3NyYy9zdGRsaWItbmVnb3RpYXRpb24uanNcIlxuZXhwb3J0IHtjcmVhdGVTdGRsaWJGYWNhZGVSZWdpc3RyeSwgbGlzdFN0ZGxpYkZhY2FkZXMsIHJlc29sdmVTdGRsaWJGYWNhZGV9IGZyb20gXCIuL3NyYy9zdGRsaWItZmFjYWRlcy5qc1wiXG5leHBvcnQge2NyZWF0ZUJ5dGVNYXBwaW5nLCBwYXJzZUJ5dGVNYXBwaW5nLCBzdHJpbmdpZnlCeXRlTWFwcGluZ30gZnJvbSBcIi4vc3JjL2JpbmFyeS1tYXBwaW5nLmpzXCJcbmV4cG9ydCB7Y2Fub25pY2FsVG9vbGNoYWlucywgZGlzY292ZXJDYW5vbmljYWxUb29sY2hhaW4sIGRpc2NvdmVyVG9vbGNoYWlufSBmcm9tIFwiLi9zcmMvdG9vbGNoYWlucy5qc1wiXG5leHBvcnQge3J1bkFjY2VwdGFuY2VTdGFnZXN9IGZyb20gXCIuL3NyYy9hY2NlcHRhbmNlLmpzXCJcbmV4cG9ydCB7Z2V0Tm9kZVByb3ZlbmFuY2UsIGdldFN5bWJvbFByb3ZlbmFuY2V9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9wcm92ZW5hbmNlLmpzXCJcbmV4cG9ydCB7cHJpbWFyeUxvY2F0aW9ufSBmcm9tIFwiLi9zcmMvc2VtYW50aWMvcHJvdmVuYW5jZS5qc1wiXG5leHBvcnQge1xuICBjb21wb3NlTWFwcGluZ3MsXG4gIGNvbXBvc2VTb3VyY2VNYXBzLFxuICBnZW5lcmF0ZWRQb3NpdGlvbkZvcixcbiAgbWFwcGluZ0Zyb21Tb3VyY2VNYXAsXG4gIG9yaWdpbmFsUG9zaXRpb25Gb3IsXG4gIHBhcnNlTWFwcGluZyxcbiAgcmVtYXBEaWFnbm9zdGljLFxuICByZW1hcExvY2F0aW9uLFxuICBzcGFuc0Zvck5vZGUsXG4gIHNwYW5zRm9yU3ltYm9sLFxuICBzdHJpbmdpZnlNYXBwaW5nLFxuICB0b1NvdXJjZU1hcFYzXG59IGZyb20gXCIuL3NyYy9tYXBwaW5nLmpzXCJcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGludG8gU2VtYW50aWZvbGQncyBzaGFyZWQgc2VtYW50aWMgcmVwcmVzZW50YXRpb24uXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBQYXJzZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LmZpbGVuYW1lIC0gU291cmNlIGZpbGVuYW1lIHVzZWQgaW4gZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gU291cmNlIGxhbmd1YWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LnNvdXJjZSAtIFNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIHtSZWFkb25seTxpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5PiB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHlJbnB1dH0gW2lucHV0LmNhcGFiaWxpdHlBdXRob3JpdHldIC0gRXhwbGljaXQgY29tcGlsZXIgYXV0aG9yaXR5LlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBTZW1hbnRpYyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICByZXR1cm4gcGFyc2VTb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogUGFyc2VzIGEgY29tcGxldGUgZXhwbGljaXQgbXVsdGktc291cmNlIHByb2plY3QgaW50byBvbmUgcmVzb2x2ZWQgc2VtYW50aWMgcHJvZ3JhbS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIFByb2dyYW0gcGFyc2UgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dC5lbnRyeU1vZHVsZSAtIFN0YWJsZSBpZGVudGl0eSBvZiB0aGUgc29sZSBlbnRyeSBtb2R1bGUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nLCBsYW5ndWFnZTogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZSwgc291cmNlOiBzdHJpbmd9W119IGlucHV0LnNvdXJjZXMgLSBDb21wbGV0ZSBjYWxsZXItc3VwcGxpZWQgc291cmNlIHNldC5cbiAqIEBwYXJhbSB7UmVhZG9ubHk8aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQ2FwYWJpbGl0eUF1dGhvcml0eT4gfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5SW5wdXR9IFtpbnB1dC5jYXBhYmlsaXR5QXV0aG9yaXR5XSAtIEV4cGxpY2l0IGNvbXBpbGVyIGF1dGhvcml0eSBzaGFyZWQgYnkgZXZlcnkgcHJvZ3JhbSBtb2R1bGUuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNQcm9ncmFtfSBTZW1hbnRpYyBwcm9ncmFtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9ncmFtKGlucHV0KSB7XG4gIHJldHVybiBwYXJzZVByb2dyYW1Tb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRhcmdldC1sYW5ndWFnZSBzb3VyY2UgZnJvbSBhIHNoYXJlZCBzZW1hbnRpYyBtb2R1bGUuXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBHZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHJldHVybnMge3N0cmluZ30gR2VuZXJhdGVkIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlKGlucHV0KSB7XG4gIHJldHVybiBnZW5lcmF0ZVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByZXVzYWJsZSBvdXRwdXQgYXJ0aWZhY3Qgd2l0aCByaWNoIGFuZCBTb3VyY2UgTWFwIHYzIG1hcHBpbmdzLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gR2VuZXJhdGlvbiByZXF1ZXN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNNb2R1bGV9IGlucHV0Lm1vZHVsZSAtIFNlbWFudGljIG1vZHVsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXQuZmlsZW5hbWVdIC0gT3V0cHV0IGZpbGVuYW1lLlxuICogQHBhcmFtIHtcIm5vbmVcIiB8IFwiZXh0ZXJuYWxcIiB8IFwiaW5saW5lXCJ9IFtpbnB1dC5tYXBEaXJlY3RpdmVdIC0gSmF2YVNjcmlwdC1mYW1pbHkgbWFwIGRpcmVjdGl2ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXQuc291cmNlTWFwRmlsZW5hbWVdIC0gRXh0ZXJuYWwgbWFwIGZpbGVuYW1lLlxuICogQHBhcmFtIHt7ZmlsZW5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBsYW5ndWFnZT86IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9W119IFtpbnB1dC5zb3VyY2VzXSAtIFNvdXJjZXMgZm9yIGNhbGxlci1hdXRob3JlZCBtb2R1bGVzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0fSBHZW5lcmF0ZWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFydGlmYWN0KGlucHV0KSB7XG4gIHJldHVybiBnZW5lcmF0ZUFydGlmYWN0U291cmNlKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGRldGVybWluaXN0aWMgbWFwcGVkIGFydGlmYWN0IHNldCBmb3IgYSBjb21wbGV0ZSBzZW1hbnRpYyBwcm9ncmFtLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gUHJvZ3JhbSBnZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBSZWdpc3RlcmVkIHByb2dyYW0gdGFyZ2V0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY1Byb2dyYW19IGlucHV0LnByb2dyYW0gLSBDb21wbGV0ZSByZXNvbHZlZCBwcm9ncmFtLlxuICogQHBhcmFtIHtcInRleHRcIiB8IFwiYXBwbGljYXRpb25cIn0gW2lucHV0LnJvbGVdIC0gRXhwbGljaXQgcm9sZTsgb21pdHRlZCBwcmVzZXJ2ZXMgdGV4dCBnZW5lcmF0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5Jb3NBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dCB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkFuZHJvaWRBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dH0gW2lucHV0LmNvbmZpZ3VyYXRpb25dIC0gQXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Bc3NldElucHV0W10gfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXX0gW2lucHV0LmFzc2V0c10gLSBFeGFjdCBjYWxsZXIgYXNzZXRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXX0gW2lucHV0LnJlc291cmNlc10gLSBFeGFjdCBBbmRyb2lkIGNhbGxlciByZXNvdXJjZXMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3RTZXR9IENvbXBsZXRlIGdlbmVyYXRlZCBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVByb2dyYW1BcnRpZmFjdFNldChpbnB1dCkge1xuICByZXR1cm4gZ2VuZXJhdGVQcm9ncmFtQXJ0aWZhY3RzKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGRldGVybWluaXN0aWMgYXJ0aWZhY3Qgc2V0IGZvciBvbmUgc2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gQXJ0aWZhY3Qtc2V0IGdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFJlZ2lzdGVyZWQgdGFyZ2V0IGxhbmd1YWdlIG9yIHBsYXRmb3JtIElELlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtcInRleHRcIiB8IFwiYmluYXJ5XCIgfCBcImFwcGxpY2F0aW9uXCJ9IFtpbnB1dC5yb2xlXSAtIFJlcXVlc3RlZCBiYWNrZW5kIGFydGlmYWN0IHJvbGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2lucHV0LmZpbGVuYW1lXSAtIFNhZmUgb3V0cHV0IHBhdGggZm9yIGEgdGV4dCB0YXJnZXQuXG4gKiBAcGFyYW0ge1wibm9uZVwiIHwgXCJleHRlcm5hbFwiIHwgXCJpbmxpbmVcIn0gW2lucHV0Lm1hcERpcmVjdGl2ZV0gLSBKYXZhU2NyaXB0LWZhbWlseSBtYXAgZGlyZWN0aXZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5zb3VyY2VNYXBGaWxlbmFtZV0gLSBFeHRlcm5hbCBtYXAgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX1bXX0gW2lucHV0LnNvdXJjZXNdIC0gT3JpZ2luYWwgc291cmNlcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Db25maWd1cmF0aW9uSW5wdXQgfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25Db25maWd1cmF0aW9uSW5wdXR9IFtpbnB1dC5jb25maWd1cmF0aW9uXSAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLklvc0FwcGxpY2F0aW9uQXNzZXRJbnB1dFtdIHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQW5kcm9pZEFwcGxpY2F0aW9uSW5wdXRGaWxlW119IFtpbnB1dC5hc3NldHNdIC0gRXhhY3QgY2FsbGVyIGFzc2V0cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQW5kcm9pZEFwcGxpY2F0aW9uSW5wdXRGaWxlW119IFtpbnB1dC5yZXNvdXJjZXNdIC0gRXhhY3QgQW5kcm9pZCBjYWxsZXIgcmVzb3VyY2VzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0U2V0fSBDb21wbGV0ZSBnZW5lcmF0ZWQgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBcnRpZmFjdFNldChpbnB1dCkge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoaW5wdXQpIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnB1dCkgIT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe1xuICAgICAgY29kZTogXCJJTlZBTElEX0FSVElGQUNUX1NFVFwiLFxuICAgICAgbGFuZ3VhZ2U6IFwiYXJ0aWZhY3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiQXJ0aWZhY3Qtc2V0IGdlbmVyYXRpb24gcmVxdWlyZXMgYSByZXF1ZXN0IG9iamVjdC5cIlxuICAgIH0pXG4gIH1cbiAgY29uc3Qge2Fzc2V0cywgY29uZmlndXJhdGlvbiwgZmlsZW5hbWUsIGxhbmd1YWdlLCBtYXBEaXJlY3RpdmUsIG1vZHVsZSwgcmVzb3VyY2VzLCByb2xlID0gXCJ0ZXh0XCIsIHNvdXJjZU1hcEZpbGVuYW1lLCBzb3VyY2VzfSA9IGlucHV0XG5cbiAgaWYgKHR5cGVvZiBsYW5ndWFnZSAhPSBcInN0cmluZ1wiIHx8IGxhbmd1YWdlLmxlbmd0aCA9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfQVJUSUZBQ1RfU0VUXCIsXG4gICAgICBsYW5ndWFnZTogXCJhcnRpZmFjdFwiLFxuICAgICAgbWVzc2FnZTogXCJBcnRpZmFjdC1zZXQgZ2VuZXJhdGlvbiByZXF1aXJlcyBhIG5vbi1lbXB0eSBzdHJpbmcgbGFuZ3VhZ2Ugb3IgdGFyZ2V0IElELlwiXG4gICAgfSlcbiAgfVxuICBpZiAodHlwZW9mIHJvbGUgIT0gXCJzdHJpbmdcIiB8fCAhYXJ0aWZhY3RCYWNrZW5kUm9sZXMuaGFzKHJvbGUpKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfQVJUSUZBQ1RfU0VUXCIsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIG1lc3NhZ2U6IFwiQXJ0aWZhY3QgYmFja2VuZCByb2xlIG11c3QgYmUgJ3RleHQnLCAnYmluYXJ5Jywgb3IgJ2FwcGxpY2F0aW9uJy5cIlxuICAgIH0pXG4gIH1cbiAgY29uc3QgdGFyZ2V0ID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZWNvcmQobGFuZ3VhZ2UpXG4gIHByZWZsaWdodEVmZmVjdENhcGFiaWxpdGllcyhtb2R1bGUsIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSAqLyAobGFuZ3VhZ2UpKVxuICBjb25zdCBnZW5lcmljRGVjbGFyYXRpb24gPSBbLi4ubW9kdWxlPy5yZWNvcmRzID8/IFtdLCAuLi5tb2R1bGU/LmZ1bmN0aW9ucyA/PyBbXV1cbiAgICAuZmluZCgoZGVjbGFyYXRpb24pID0+IChkZWNsYXJhdGlvbj8udHlwZVBhcmFtZXRlcnM/Lmxlbmd0aCA/PyAwKSA+IDApXG5cbiAgaWYgKGdlbmVyaWNEZWNsYXJhdGlvbiAmJiAhdGFyZ2V0LmZlYXR1cmVzLnR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3MpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDEyIHR5cGUgcGFyYW1ldGVycyBhbmQgZ2VuZXJpY3NcIiwgZ2VuZXJpY0RlY2xhcmF0aW9uLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG1vZHVsZT8ucmVjb3JkcykgJiYgbW9kdWxlLnJlY29yZHMubGVuZ3RoID4gMCAmJiAhdGFyZ2V0LmZlYXR1cmVzLmNsb3NlZFJlY29yZHMpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDA5IGNsb3NlZCByZWNvcmRzXCIsIG1vZHVsZS5yZWNvcmRzWzBdLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG1vZHVsZT8uY2xhc3NlcykgJiYgbW9kdWxlLmNsYXNzZXMubGVuZ3RoID4gMCAmJiAhdGFyZ2V0LmZlYXR1cmVzLnJlZmVyZW5jZUNsYXNzZXMpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDMzIHJlZmVyZW5jZSBjbGFzc2VzXCIsIG1vZHVsZS5jbGFzc2VzWzBdLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuICBpZiAocm9sZSA9PSBcInRleHRcIikge1xuICAgIGlmICh0YXJnZXQuYXJ0aWZhY3RNdWx0aXBsaWNpdHkgPT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICBjb25zdCBiYWNrZW5kID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZXNvbHZlKGxhbmd1YWdlLCBcInRleHRCYWNrZW5kXCIsIG1vZHVsZT8ubG9jYXRpb24pXG5cbiAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldChiYWNrZW5kKHtmaWxlbmFtZSwgbGFuZ3VhZ2UsIG1hcERpcmVjdGl2ZSwgbW9kdWxlLCBzb3VyY2VNYXBGaWxlbmFtZSwgc291cmNlc30pKVxuICAgIH1cbiAgICBjb25zdCBhcnRpZmFjdCA9IGdlbmVyYXRlQXJ0aWZhY3RTb3VyY2Uoe1xuICAgICAgZmlsZW5hbWUsXG4gICAgICBsYW5ndWFnZTogLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSAqLyAobGFuZ3VhZ2UpLFxuICAgICAgbWFwRGlyZWN0aXZlLFxuICAgICAgbW9kdWxlLFxuICAgICAgc291cmNlTWFwRmlsZW5hbWUsXG4gICAgICBzb3VyY2VzXG4gICAgfSlcblxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkU2V0QXJ0aWZhY3RbXX0gKi9cbiAgICBjb25zdCBhcnRpZmFjdHMgPSBbe1xuICAgICAgY29udGVudDogYXJ0aWZhY3QuY29kZSxcbiAgICAgIGNvbnRlbnRLaW5kOiBcInRleHRcIixcbiAgICAgIG1lZGlhVHlwZTogLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0YXJnZXQubWVkaWFUeXBlKSxcbiAgICAgIG93bmVyc2hpcDogXCJnZW5lcmF0ZWRcIixcbiAgICAgIHBhdGg6IGFydGlmYWN0LmZpbGVuYW1lLFxuICAgICAgcHJvdmVuYW5jZToge1xuICAgICAgICBraW5kOiBcInRleHRcIixcbiAgICAgICAgbWFwcGluZzogYXJ0aWZhY3QubWFwcGluZyxcbiAgICAgICAgc291cmNlTWFwOiBhcnRpZmFjdC5zb3VyY2VNYXAsXG4gICAgICAgIHNvdXJjZU1hcEZpbGVuYW1lOiBhcnRpZmFjdC5zb3VyY2VNYXBGaWxlbmFtZVxuICAgICAgfSxcbiAgICAgIHJvbGU6IFwiZW50cnlcIlxuICAgIH1dXG5cbiAgICBpZiAobWFwRGlyZWN0aXZlID09IFwiZXh0ZXJuYWxcIikge1xuICAgICAgYXJ0aWZhY3RzLnB1c2goe1xuICAgICAgICBjb250ZW50OiBgJHtKU09OLnN0cmluZ2lmeShhcnRpZmFjdC5zb3VyY2VNYXApfVxcbmAsXG4gICAgICAgIGNvbnRlbnRLaW5kOiBcInRleHRcIixcbiAgICAgICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgb3duZXJzaGlwOiBcImdlbmVyYXRlZFwiLFxuICAgICAgICBwYXRoOiBhcnRpZmFjdC5zb3VyY2VNYXBGaWxlbmFtZSxcbiAgICAgICAgcHJvdmVuYW5jZToge1xuICAgICAgICAgIGtpbmQ6IFwic3ludGhldGljXCIsXG4gICAgICAgICAgcmVhc29uOiBcIlNlcmlhbGl6ZWQgU291cmNlIE1hcCB2MyBwcm9qZWN0aW9uIGZvciB0aGUgZ2VuZXJhdGVkIGVudHJ5IGFydGlmYWN0LlwiLFxuICAgICAgICAgIHJlbGF0ZWRPcmlnaW5zOiBbXVxuICAgICAgICB9LFxuICAgICAgICByb2xlOiBcIm1hcHBpbmdcIlxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0QXJ0aWZhY3RTZXQoe1xuICAgICAgYXJ0aWZhY3RzLFxuICAgICAgLi4uKGxhbmd1YWdlID09IFwia290bGluXCIgPyB7bWV0YWRhdGE6IGtvdGxpbkFydGlmYWN0TWV0YWRhdGF9IDoge30pLFxuICAgICAgdGFyZ2V0OiBsYW5ndWFnZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCByZWdpc3RyeVJvbGUgPSByb2xlID09IFwiYmluYXJ5XCIgPyBcImJpbmFyeUJhY2tlbmRcIiA6IFwiYXBwbGljYXRpb25CYWNrZW5kXCJcbiAgY29uc3QgYmFja2VuZCA9IGxhbmd1YWdlUmVnaXN0cnkucmVzb2x2ZShsYW5ndWFnZSwgcmVnaXN0cnlSb2xlLCBtb2R1bGU/LmxvY2F0aW9uKVxuXG4gIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldChiYWNrZW5kKGxhbmd1YWdlID09IFwiYW5kcm9pZFwiID8gaW5wdXQgOlxuICAgIHthc3NldHMsIGNvbmZpZ3VyYXRpb24sIGZpbGVuYW1lLCBsYW5ndWFnZSwgbWFwRGlyZWN0aXZlLCBtb2R1bGUsIHJlc291cmNlcywgc291cmNlTWFwRmlsZW5hbWUsIHNvdXJjZXN9KSlcbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ export type AndroidInputFile = {
2
+ content: string | Uint8Array;
3
+ contentKind: "binary" | "text";
4
+ fullPath: string;
5
+ mediaType: string;
6
+ path: string;
7
+ sha256: string;
8
+ };
9
+ export type ConfigurationSpan = {
10
+ end: number;
11
+ field: string;
12
+ path: string;
13
+ start: number;
14
+ };
15
+ /** @typedef {{content: string | Uint8Array, contentKind: "binary" | "text", fullPath: string, mediaType: string, path: string, sha256: string}} AndroidInputFile */
16
+ /** @typedef {{end: number, field: string, path: string, start: number}} ConfigurationSpan */
17
+ /**
18
+ * Preflights a complete Android application request before allocating a source writer.
19
+ * @param {Record<string, unknown>} input - Candidate application request.
20
+ * @returns {{assets: AndroidInputFile[], configuration: import("../semantic/types.js").AndroidApplicationConfiguration, modulePaths: Map<string, string>, modules: import("../semantic/types.js").SemanticModule[], packagePath: string, program: import("../semantic/types.js").SemanticProgram, resources: AndroidInputFile[], sources: {content: string, filename: string, language?: import("../semantic/types.js").SemanticLanguage}[]}} Prepared application.
21
+ */
22
+ export declare function preflightAndroidApplication(input: Record<string, unknown>): {
23
+ assets: AndroidInputFile[];
24
+ configuration: import("../semantic/types.js").AndroidApplicationConfiguration;
25
+ modulePaths: Map<string, string>;
26
+ modules: import("../semantic/types.js").SemanticModule[];
27
+ packagePath: string;
28
+ program: import("../semantic/types.js").SemanticProgram;
29
+ resources: AndroidInputFile[];
30
+ sources: {
31
+ content: string;
32
+ filename: string;
33
+ language?: import("../semantic/types.js").SemanticLanguage;
34
+ }[];
35
+ };
36
+ /**
37
+ * Generates one complete deterministic Android/Kotlin project.
38
+ * @param {Record<string, unknown>} input - Application generation request.
39
+ * @returns {{artifacts: import("../semantic/types.js").GeneratedSetArtifact[], metadata: {applicationManifest: string, platformQualification: string}, target: "android"}} Candidate artifact set.
40
+ */
41
+ export declare function generateAndroidApplication(input: Record<string, unknown>): {
42
+ artifacts: import("../semantic/types.js").GeneratedSetArtifact[];
43
+ metadata: {
44
+ applicationManifest: string;
45
+ platformQualification: string;
46
+ };
47
+ target: "android";
48
+ };
49
+ //# sourceMappingURL=android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../src/backends/android.js"],"names":[],"mappings":"AAgHI,YAA6I,gBAAgB,GAAnJ;IAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAkB;AAC7J,YAAqE,iBAAiB,GAA5E;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAmB;AAD1F,oKAAoK;AACpK,6FAA6F;AAE7F;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAHtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAGgB,GAFpC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,aAAa,EAAE,OAAO,sBAAsB,EAAE,+BAA+B,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,sBAAsB,EAAE,cAAc,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,sBAAsB,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CAAA;CAAC,CAyC5a;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAHrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAGe,GAFnC;IAAC,SAAS,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAAC,QAAQ,EAAE;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAC,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAC,CAwDzK"}