semantifold 0.5.0 → 0.7.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 +15 -9
- package/build/index.d.ts +8 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -6
- package/build/src/backends/android.js +8 -4
- package/build/src/backends/dart.d.ts +19 -0
- package/build/src/backends/dart.d.ts.map +1 -1
- package/build/src/backends/dart.js +28 -16
- package/build/src/backends/flutter.d.ts +51 -0
- package/build/src/backends/flutter.d.ts.map +1 -0
- package/build/src/backends/flutter.js +1362 -0
- package/build/src/backends/identifiers.d.ts +6 -0
- package/build/src/backends/identifiers.d.ts.map +1 -1
- package/build/src/backends/identifiers.js +28 -5
- package/build/src/backends/ios.js +2 -2
- 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/program.d.ts +4 -4
- package/build/src/backends/program.d.ts.map +1 -1
- package/build/src/backends/program.js +4 -4
- package/build/src/backends/scalars.d.ts.map +1 -1
- package/build/src/backends/scalars.js +2 -1
- package/build/src/backends/shared.d.ts +7 -0
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +14 -9
- package/build/src/backends/zig-runtime.d.ts +5 -0
- package/build/src/backends/zig-runtime.d.ts.map +1 -0
- package/build/src/backends/zig-runtime.js +92 -0
- package/build/src/backends/zig-validation.d.ts +9 -0
- package/build/src/backends/zig-validation.d.ts.map +1 -0
- package/build/src/backends/zig-validation.js +73 -0
- package/build/src/backends/zig.d.ts +42 -0
- package/build/src/backends/zig.d.ts.map +1 -0
- package/build/src/backends/zig.js +584 -0
- package/build/src/frontends/scalars.d.ts.map +1 -1
- package/build/src/frontends/scalars.js +2 -1
- package/build/src/frontends/zig-parser.d.ts +31 -0
- package/build/src/frontends/zig-parser.d.ts.map +1 -0
- package/build/src/frontends/zig-parser.js +17 -0
- package/build/src/frontends/zig.d.ts +14 -0
- package/build/src/frontends/zig.d.ts.map +1 -0
- package/build/src/frontends/zig.js +970 -0
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +40 -1
- package/build/src/mapping.js +2 -2
- package/build/src/semantic/provenance.js +3 -3
- package/build/src/semantic/types.d.ts +154 -4
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +39 -3
- package/build/src/semantic/validate.js +2 -2
- package/build/src/toolchains.d.ts +6 -0
- package/build/src/toolchains.d.ts.map +1 -1
- package/build/src/toolchains.js +2 -1
- package/build/src/zig-bindings.d.ts +10 -0
- package/build/src/zig-bindings.d.ts.map +1 -0
- package/build/src/zig-bindings.js +54 -0
- package/docs/android.md +7 -3
- package/docs/architecture.md +13 -5
- package/docs/flutter.md +47 -0
- package/docs/goals.md +1 -1
- package/docs/language-support.md +16 -5
- package/docs/parser-qualification.md +31 -1
- package/docs/source-maps.md +7 -3
- package/docs/testing.md +47 -4
- package/docs/zig.md +33 -0
- package/index.js +5 -5
- package/node_modules/semantifold-tree-sitter-zig-internal/LICENSE +15 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/README.md +5 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/README.md +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/binding.gyp +29 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/grammar.js +900 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/package.json +57 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/folds.scm +23 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/highlights.scm +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/indents.scm +22 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/injections.scm +10 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/grammar.json +6570 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/node-types.json +3178 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/parser.c +169829 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/array.h +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter.json +38 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/README.md +128 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/binding.gyp +80 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/index.js +916 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/package.json +76 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/binding.cc +35 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.h +22 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.cc +106 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.h +17 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.cc +70 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.h +19 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.cc +1088 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.h +30 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.cc +306 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.h +35 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.cc +397 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.h +40 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.cc +316 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.h +45 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1318 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +223 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +297 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +435 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +920 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2165 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +206 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4187 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +130 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1066 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +712 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +83 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1302 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1859 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/package.json +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/src/zig.js +134 -0
- package/package.json +11 -6
- package/src/backends/android.js +7 -3
- package/src/backends/dart.js +28 -15
- package/src/backends/flutter.js +1465 -0
- package/src/backends/identifiers.js +28 -4
- package/src/backends/ios.js +1 -1
- package/src/backends/native-validation.js +1 -1
- package/src/backends/program.js +3 -3
- package/src/backends/scalars.js +1 -0
- package/src/backends/shared.js +15 -11
- package/src/backends/zig-runtime.js +93 -0
- package/src/backends/zig-validation.js +68 -0
- package/src/backends/zig.js +579 -0
- package/src/frontends/scalars.js +1 -0
- package/src/frontends/zig-parser.js +20 -0
- package/src/frontends/zig.js +994 -0
- package/src/language-registry.js +40 -0
- package/src/mapping.js +1 -1
- package/src/semantic/provenance.js +2 -2
- package/src/semantic/types.js +41 -2
- package/src/semantic/validate.js +1 -1
- package/src/toolchains.js +1 -0
- package/src/zig-bindings.js +46 -0
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
|
|
5
|
+
Semantifold is an early language-neutral semantic code toolkit. The source tree supports a deliberately small fifteen-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, strict Dart VM/native, and strict Zig 0.15.2 source share one typed semantic representation. Browser WebAssembly is an additional target-only ID, not a sixteenth source language. The published baseline is `semantifold@0.6.0` / annotated `v0.6.0` at exact `gitHead` `f76e6d64b388d65959e77f747ae2d60a999d61f5`; Task 028 merged in PR #51 and Task 031 merged in PR #52. The Task 030 source tree adds the bounded Android-qualified Flutter application target while retaining explicit iOS/macOS deferral.
|
|
6
6
|
|
|
7
7
|
## Current API
|
|
8
8
|
|
|
@@ -39,15 +39,17 @@ const artifact = generateArtifact({language: "java", module})
|
|
|
39
39
|
const original = originalPositionFor(artifact.mapping, {offset: artifact.code.indexOf("label")})
|
|
40
40
|
```
|
|
41
41
|
|
|
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
|
|
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, Dart, and Zig 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 `
|
|
44
|
+
`supportedLanguages` is the immutable registry-derived list `php`, `ruby`, `javascript`, `typescript`, `java`, `kotlin`, `python`, `csharp`, `go`, `c`, `cpp`, `rust`, `swift`, `dart`, and `zig`. `languageCapabilities` additionally includes target-only `wasm`, `ios`, and `android` records and exposes all eighteen 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
|
-
`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
|
|
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`. Zig returns synthetic `build.zig` then mapped sole-entry `src/main.zig`; Zig 0.15.2 needs no `build.zig.zon` for this dependency-free native-host project. 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, Zig, 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 and Zig only omitted or exact `src/main.rs` and `src/main.zig` respectively, 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.
|
|
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 shared Gradle 8.14, 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
|
+
|
|
52
|
+
Task 030 adds the application-only `flutter` target without making Flutter a source language. Any Task 010 project accepted by the Dart backend lowers to mapped namespaced Dart, an exact SDK-only stateless Material shell, and an owned Android Flutter project under `generated/flutter-app`. Flutter stable 3.47.4/Dart 3.13.3, the exact SDK-preloaded lockfile, assets, identities, versions, all paths/hashes, and rich provenance are deterministic; no `flutter create`, plugin, platform channel, permission, network/storage/background work, or external pub download participates. Offline real Flutter format/analyze/widget tests and Android build/UI acceptance reuse Task 028's one shared cache and two KVM boots. iOS artifacts and all macOS/Xcode/Apple SDK/CocoaPods/signing/Simulator claims remain explicitly deferred. See the [Flutter application target](docs/flutter.md).
|
|
51
53
|
|
|
52
54
|
`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.
|
|
53
55
|
|
|
@@ -55,9 +57,9 @@ Task 036 extends only this explicit program path with compiler-owned source-lang
|
|
|
55
57
|
|
|
56
58
|
Binary/resource provenance uses `SemantifoldByteMapping` v1 through `createByteMapping`, `parseByteMapping`, and `stringifyByteMapping`. Generated ranges are ordered, non-overlapping, half-open byte offsets with semantic identities or explicit synthetic reasons. They are never interpreted as UTF-16 positions.
|
|
57
59
|
|
|
58
|
-
`discoverCanonicalToolchain` and `discoverToolchain` resolve an exact executable from a configured absolute override or one unambiguous canonical PATH command and capture its version. `runAcceptanceStages` materializes a validated artifact set in a unique temporary directory and runs applicable `parse`, `generate`, `restore`, `compile`, `link`, `validate`, `instantiate`, and `execute` stages with exact argument arrays, a deterministic locale/timezone, bounded per-stage timeouts, captured output, no shell, and normalized stage diagnostics. The canonical overrides are `SEMANTIFOLD_DART`, `SEMANTIFOLD_PHP`, `SEMANTIFOLD_RUBY`, `SEMANTIFOLD_NODE`, `SEMANTIFOLD_TSC`, `SEMANTIFOLD_JAVAC`, `SEMANTIFOLD_JAVA`, `SEMANTIFOLD_KOTLINC`, `SEMANTIFOLD_PYTHON`, `SEMANTIFOLD_DOTNET`, `SEMANTIFOLD_GO`, `SEMANTIFOLD_CLANG`, `SEMANTIFOLD_CLANGPP`, `SEMANTIFOLD_RUSTC`, `SEMANTIFOLD_CARGO`, `SEMANTIFOLD_SWIFTC`, `SEMANTIFOLD_WASM_VALIDATE`, and `SEMANTIFOLD_CHROMIUM`; none of these APIs installs or downloads a tool. The generic `php` profile accepts PHP 8.x, while closed-record execution and the Task 037 PHP provider use the canonical `php82` profile (through the same `SEMANTIFOLD_PHP` override) to require PHP 8.2 or newer with core stream functions. Dart requires exact SDK 3.13.3 stable on Linux x64, Kotlin exact 2.4.20 on pinned OpenJDK 25.0.4+7, and Swift exact 6.3.3 on Linux x86-64. Browser Wasm requires WABT 1.0.36 and Chrome/Chromium 152.0.7977.82 in addition to Node 24.
|
|
60
|
+
`discoverCanonicalToolchain` and `discoverToolchain` resolve an exact executable from a configured absolute override or one unambiguous canonical PATH command and capture its version. `runAcceptanceStages` materializes a validated artifact set in a unique temporary directory and runs applicable `parse`, `generate`, `restore`, `compile`, `link`, `validate`, `instantiate`, and `execute` stages with exact argument arrays, a deterministic locale/timezone, bounded per-stage timeouts, captured output, no shell, and normalized stage diagnostics. The canonical overrides are `SEMANTIFOLD_DART`, `SEMANTIFOLD_ZIG`, `SEMANTIFOLD_PHP`, `SEMANTIFOLD_RUBY`, `SEMANTIFOLD_NODE`, `SEMANTIFOLD_TSC`, `SEMANTIFOLD_JAVAC`, `SEMANTIFOLD_JAVA`, `SEMANTIFOLD_KOTLINC`, `SEMANTIFOLD_PYTHON`, `SEMANTIFOLD_DOTNET`, `SEMANTIFOLD_GO`, `SEMANTIFOLD_CLANG`, `SEMANTIFOLD_CLANGPP`, `SEMANTIFOLD_RUSTC`, `SEMANTIFOLD_CARGO`, `SEMANTIFOLD_SWIFTC`, `SEMANTIFOLD_WASM_VALIDATE`, and `SEMANTIFOLD_CHROMIUM`; none of these APIs installs or downloads a tool. The generic `php` profile accepts PHP 8.x, while closed-record execution and the Task 037 PHP provider use the canonical `php82` profile (through the same `SEMANTIFOLD_PHP` override) to require PHP 8.2 or newer with core stream functions. Zig requires exact 0.15.2 on Linux x86-64; Dart requires exact SDK 3.13.3 stable on Linux x64, Kotlin exact 2.4.20 on pinned OpenJDK 25.0.4+7, and Swift exact 6.3.3 on Linux x86-64. Browser Wasm requires WABT 1.0.36 and Chrome/Chromium 152.0.7977.82 in addition to Node 24.
|
|
59
61
|
|
|
60
|
-
This is not general-purpose support for any of the
|
|
62
|
+
This is not general-purpose support for any of the fifteen languages. PHP, Ruby, JavaScript with JSDoc, TypeScript, and Java implement Task 005 general required functions/calls, Task 006 recursive immutable lists/maps, Task 007 explicit optional values, Task 008 ordered list iteration, Task 009 closed records, Task 010 explicit semantic projects, Task 011 typed unchecked errors, Task 012 invariant unbounded type parameters and generic declarations/applications, Task 014 insertion-ordered immutable map iteration, Task 032 strict-Boolean condition-controlled loops, Task 033 bounded reference classes, and Task 034's bounded effect/resource profile. Dart and Zig implement Task 005 general required functions/calls but none of those later profiles. `OptionalType {valueType}` contains only semantic presence or absence; it composes recursively as a declared list element or map value, and access preserves that optional result. A strict presence test can prove one simple binding present inside exactly the corresponding branch. Ruby uses exact `T?` metadata and `nil?`, JavaScript/JSDoc uses exact `T|null`, TypeScript uses exact `T | null`, PHP uses canonical `?T`, and Java uses exact `java.util.Optional<T>`/`Optional<T>` operations. Arbitrary unions, nested optionals, implicit nullable/default parameters, `undefined`, truthiness, nullish defaults/navigation, Java bare `null`, and unchecked unwrap remain unsupported. Collection support covers homogeneous literals, zero-based list indexing, total string-key map lookup, size, recursive typing, function passage, exact ordered list `for-each`, and the separate `OrderedMapType` pair-iteration profile. Ordinary `MapType` remains unordered and non-iterable. Ordered maps accept unique nonnumeric string keys, evaluate entries left-to-right, and visit key/value pairs in first-insertion order; aliases, mutation, key-only/value-only loops, and unordered conversions fail loudly. Java lowers only safe local ordered literals through a private `LinkedHashMap` insertion sequence and a non-escaping `Collections.unmodifiableSequencedMap` boundary. Every list, ordered-map, and condition-controlled loop has a deterministic semantic identity; each `break` or `continue` resolves to the nearest enclosing identity and cannot cross a function boundary. Collection loops evaluate their operand once and bind values immutably in body-local scope. A condition-controlled loop evaluates an exact Boolean condition before every iteration and may execute zero times; no loop body by itself proves a non-void function complete. Any outer mutable binding assigned on a nested loop path loses its known-value and optional-presence facts before the relevant repeated condition or body validation and after loop exit, including assignment paths ending in `break`, `continue`, or `return`; unaffected bindings keep stable facts. Task 007 does not turn an unchecked missing-key lookup into an optional operation. PHPDoc distinguishes `list<T>` from `array<string,T>`; JavaScript objects are never maps. Immutability is the accepted semantic operation boundary, not a deep-freezing promise. The other eight source languages and browser Wasm remain on the Tasks 001–004 two-parameter/scalar-return profile and reject later-feature modules transactionally. See [language support](docs/language-support.md) before using it on other code.
|
|
61
63
|
|
|
62
64
|
Task 009 models nominal product values as ordered `RecordDeclaration`/`RecordField` definitions, identity-bound `RecordType`, exact `RecordConstruction`, and resolved `MemberRead`. Records are closed and immutable: construction supplies every field once in declaration order, member access resolves to stable field identity, and structurally similar objects or maps are not records. Record declaration names cannot be captured by lexical parameters, locals, or iteration bindings. Presence-proven optional record receivers retain nominal field dispatch even when a field is named `length` or `size`, and Java zero-argument `equals()` record access remains distinct from one-argument string equality. Fields may recursively contain supported scalars, optionals, lists, maps, and records; an unmediated value cycle is rejected, while optional- or container-mediated recursion is accepted and compiled by every original-five target. Each frontend accepts only its documented canonical class shape. Backend preflight rejects target-reserved identifiers, including the deterministic PHP 8.2+ core/date/SPL/JSON type baseline and Ruby built-in type names, before emission; generated JavaScript and Ruby bind record freezing independently from user field and function names. Omitted or `undefined` external-IR `records` remains the legacy empty-record shape, while explicit `null` is malformed. Java uses a conventional final class with private-final storage, one constructor, and canonical accessors because pinned `@lezer/java@1.1.3` cannot faithfully represent Java `record` declarations. General classes, inheritance, interfaces/traits/mixins, extra methods, mutation, reflection, computed/dynamic members, decorators, equality/hashing, and copy/destructuring remain outside the profile. PR #34 delivered Task 009 after green TensorBuzz CI. This follow-up hardens JavaScript/Ruby record freezing and Java `equals()` member dispatch; its review and merge remain coordinator-owned.
|
|
63
65
|
|
|
@@ -85,11 +87,13 @@ Kotlin accepts top-level two-parameter functions with explicit `Long`, `Boolean`
|
|
|
85
87
|
|
|
86
88
|
Dart accepts explicitly typed synchronous top-level functions through Task 005, required positional parameters, typed initialized locals, assignment, scalar operators, strict Boolean branches, direct calls, explicit returns, and exact `void main()`/`print`. `generateArtifactSet({language: "dart"})` returns dependency-free `pubspec.yaml`, deterministic `pubspec.lock`, and mapped `bin/program.dart`; private canonical support keeps arithmetic inside the semantic safe-integer range and prevents analyzer constant folding from invalidating short-circuit acceptance. Exact Dart SDK 3.13.3 format/analyze/VM/native acceptance passes offline in isolated state. Flutter, browser Dart, imports/packages, dynamic/nullability, collections/classes, async/isolates, and exceptions remain excluded. See the [complete Dart VM/native contract](docs/dart.md).
|
|
87
89
|
|
|
90
|
+
Zig accepts explicitly typed top-level functions through Task 005, required positional parameters, exact `i64`/`bool`/immutable UTF-8 `[]const u8` values, typed `const`/`var` locals, assignment, scalar operators, strict Boolean branches, direct calls, explicit returns, and the exact generated `main`/output shell. `generateArtifactSet({language: "zig"})` returns dependency-free `build.zig` and mapped `src/main.zig`; a whole-program arena keeps concatenated slices alive through execution and checked arithmetic exits 70 identically in Debug, ReleaseSafe, and ReleaseFast. Exact Zig 0.15.2 format/build/test/run acceptance is offline with isolated caches. User allocators, pointers/slices/containers, `comptime`, error unions, FFI, reflection, concurrency, package fetching, and undefined behavior remain excluded. See the [complete Zig source and target contract](docs/zig.md).
|
|
91
|
+
|
|
88
92
|
Browser Wasm lowers the unchanged subset to signed `i64`, canonical Boolean `i32`, and UTF-8 pointer/length strings in one fixed exported memory. A private 1 MiB scratch arena supports checked runtime concatenation, and generation rejects unprovable allocation, more than 64 active semantic calls, or compile-time-known i64 overflow before returning bytes. The strict loader has no DOM/WASI allocator imports or semantic JavaScript fallback. See the [complete browser Wasm contract](docs/webassembly.md).
|
|
89
93
|
|
|
90
94
|
## Bounded standard-library portability
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
The `semantifold@0.6.0` baseline contains the delivered Task 035 canonical contract/provider hub and Task 036 bounded executable qualification facades; Task 037 is the source tree's first concrete Ruby-to-PHP TCP slice on those foundations. The design is hub-and-spoke, with two integrations per language: a source-facing **language compatibility stdlib/facade** preserves that language's familiar supported API shape in portable executable definitions, while a **target host provider/native binding** implements versioned **canonical Semantifold stdlib contracts/capabilities** with the target's genuine native standard library.
|
|
93
97
|
|
|
94
98
|
Ruby-to-PHP program generation compiles a Ruby application with portable Ruby `TCPSocket` and bounded one-string `puts`/`Kernel.puts` compatibility facades through semantic IR. The generated PHP retains those source-compatible names in a collision-safe compatibility namespace, calls canonical SocketClient, TextStream, Output, and Resource operations, and links only the required PHP provider modules. That protected provider uses native `fsockopen`, `fgets`, `feof`, and `fclose` for socket operations plus native stdout without adding a duplicate LF. This requires no handwritten Ruby-on-PHP bridge, source-specific loop recognition, or whole-program intelligent refactor. See the [authoritative standard-library portability design](docs/standard-library-portability.md) and [dependency-ordered implementation plan](docs/plans/2026-09-05-standard-library-portability.md).
|
|
95
99
|
|
|
@@ -122,7 +126,7 @@ Because `install-links=true` installs a copy of the private runtime, run `npm ci
|
|
|
122
126
|
|
|
123
127
|
Consumers need no Semantifold-specific npm settings: default `npm install`, `npm ls --all`, and subsequent `npm ci` work with `install-links=false`. The repository alone uses `install-links=true` to materialize the local source. Root `acceptDependencies` accepts only the exact private `0.1.0` package already present in the bundle; npm resolves the Kotlin grammar from its integrity-locked full-SHA HTTPS source archive. The cold-consumer proof isolates user/global configuration, verifies the public registry and ordinary default, rejects SSH lock entries, and repeats dependency, parser, TypeScript, Rust, and Kotlin/JVM checks after both install and clean reinstall.
|
|
124
128
|
|
|
125
|
-
The execution specs require PHP CLI, Ruby, Python 3, TypeScript, a Java JDK, Kotlin/JVM 2.4.20, .NET 10, Clang 21.1.8 with compiler-rt, Go 1.26 with matching `gofmt`, the exact qualified Rust/Cargo 1.98.1 pair, Swift 6.3.3, Dart SDK 3.13.3, WABT 1.0.36, and headless Chrome/Chromium 152.0.7977.82 in addition to Node; missing tools are failures. The canonical container contract installs Kotlin, Java, and
|
|
129
|
+
The execution specs require PHP CLI, Ruby, Python 3, TypeScript, a Java JDK, Kotlin/JVM 2.4.20, .NET 10, Clang 21.1.8 with compiler-rt, Go 1.26 with matching `gofmt`, the exact qualified Rust/Cargo 1.98.1 pair, Swift 6.3.3, Dart SDK 3.13.3, Zig 0.15.2, WABT 1.0.36, and headless Chrome/Chromium 152.0.7977.82 in addition to Node; missing tools are failures. The canonical container contract installs Kotlin, Java, Dart, and Zig during image construction; runtime tests never download a compiler or dependency.
|
|
126
130
|
|
|
127
131
|
## Documentation
|
|
128
132
|
|
|
@@ -134,9 +138,11 @@ The execution specs require PHP CLI, Ruby, Python 3, TypeScript, a Java JDK, Kot
|
|
|
134
138
|
- [Swift source and target](docs/swift.md)
|
|
135
139
|
- [Kotlin/JVM source and target](docs/kotlin.md)
|
|
136
140
|
- [Dart source and target](docs/dart.md)
|
|
141
|
+
- [Zig source and target](docs/zig.md)
|
|
137
142
|
- [Browser WebAssembly target](docs/webassembly.md)
|
|
138
143
|
- [iOS application target](docs/ios.md)
|
|
139
144
|
- [Android application target](docs/android.md)
|
|
145
|
+
- [Flutter application target](docs/flutter.md)
|
|
140
146
|
- [Parser qualification](docs/parser-qualification.md)
|
|
141
147
|
- [Testing](docs/testing.md)
|
|
142
148
|
- [Source provenance and mappings](docs/source-maps.md)
|
package/build/index.d.ts
CHANGED
|
@@ -86,8 +86,8 @@ 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 | 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.
|
|
89
|
+
* @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput} [input.configuration] - Application configuration.
|
|
90
|
+
* @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[]} [input.assets] - Exact caller assets.
|
|
91
91
|
* @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
|
|
92
92
|
* @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
|
|
93
93
|
*/
|
|
@@ -95,8 +95,8 @@ export declare function generateProgramArtifactSet(input: {
|
|
|
95
95
|
language: import("./src/semantic/types.js").BackendLanguage;
|
|
96
96
|
program: import("./src/semantic/types.js").SemanticProgram;
|
|
97
97
|
role?: "text" | "application";
|
|
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[];
|
|
98
|
+
configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput;
|
|
99
|
+
assets?: import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[];
|
|
100
100
|
resources?: import("./src/semantic/types.js").AndroidApplicationInputFile[];
|
|
101
101
|
}): import("./src/semantic/types.js").GeneratedArtifactSet;
|
|
102
102
|
/**
|
|
@@ -109,8 +109,8 @@ export declare function generateProgramArtifactSet(input: {
|
|
|
109
109
|
* @param {"none" | "external" | "inline"} [input.mapDirective] - JavaScript-family map directive.
|
|
110
110
|
* @param {string} [input.sourceMapFilename] - External map filename.
|
|
111
111
|
* @param {{filename: string, content: string, language?: import("./src/semantic/types.js").SemanticLanguage}[]} [input.sources] - Original sources.
|
|
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.
|
|
112
|
+
* @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput} [input.configuration] - Application configuration.
|
|
113
|
+
* @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[]} [input.assets] - Exact caller assets.
|
|
114
114
|
* @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
|
|
115
115
|
* @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
|
|
116
116
|
*/
|
|
@@ -126,8 +126,8 @@ export declare function generateArtifactSet(input: {
|
|
|
126
126
|
content: string;
|
|
127
127
|
language?: import("./src/semantic/types.js").SemanticLanguage;
|
|
128
128
|
}[];
|
|
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[];
|
|
129
|
+
configuration?: import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput;
|
|
130
|
+
assets?: import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[];
|
|
131
131
|
resources?: import("./src/semantic/types.js").AndroidApplicationInputFile[];
|
|
132
132
|
}): import("./src/semantic/types.js").GeneratedArtifactSet;
|
|
133
133
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -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,8 @@ 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 | 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.
|
|
79
|
+
* @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput} [input.configuration] - Application configuration.
|
|
80
|
+
* @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[]} [input.assets] - Exact caller assets.
|
|
81
81
|
* @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
|
|
82
82
|
* @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
|
|
83
83
|
*/
|
|
@@ -94,8 +94,8 @@ export function generateProgramArtifactSet(input) {
|
|
|
94
94
|
* @param {"none" | "external" | "inline"} [input.mapDirective] - JavaScript-family map directive.
|
|
95
95
|
* @param {string} [input.sourceMapFilename] - External map filename.
|
|
96
96
|
* @param {{filename: string, content: string, language?: import("./src/semantic/types.js").SemanticLanguage}[]} [input.sources] - Original sources.
|
|
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.
|
|
97
|
+
* @param {import("./src/semantic/types.js").IosApplicationConfigurationInput | import("./src/semantic/types.js").AndroidApplicationConfigurationInput | import("./src/semantic/types.js").FlutterApplicationConfigurationInput} [input.configuration] - Application configuration.
|
|
98
|
+
* @param {import("./src/semantic/types.js").IosApplicationAssetInput[] | import("./src/semantic/types.js").AndroidApplicationInputFile[] | import("./src/semantic/types.js").FlutterApplicationAssetInput[]} [input.assets] - Exact caller assets.
|
|
99
99
|
* @param {import("./src/semantic/types.js").AndroidApplicationInputFile[]} [input.resources] - Exact Android caller resources.
|
|
100
100
|
* @returns {import("./src/semantic/types.js").GeneratedArtifactSet} Complete generated set.
|
|
101
101
|
*/
|
|
@@ -186,7 +186,7 @@ export function generateArtifactSet(input) {
|
|
|
186
186
|
}
|
|
187
187
|
const registryRole = role == "binary" ? "binaryBackend" : "applicationBackend";
|
|
188
188
|
const backend = languageRegistry.resolve(language, registryRole, module?.location);
|
|
189
|
-
return constructArtifactSet(backend(language == "android" ? input :
|
|
189
|
+
return constructArtifactSet(backend(language == "android" || language == "flutter" ? input :
|
|
190
190
|
{ assets, configuration, filename, language, mapDirective, module, resources, sourceMapFilename, sources }));
|
|
191
191
|
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLEVBQUMsMEJBQTBCLElBQUksb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUVyRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0FBRXZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxDQUFBO0FBQzlCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFBO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQ25GLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQzdELE9BQU8sRUFBQyw0QkFBNEIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzdHLE9BQU8sRUFBQyw0QkFBNEIsRUFB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QVksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbEYsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzlHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtwYXJzZVNvdXJjZX0gZnJvbSBcIi4vc3JjL2Zyb250ZW5kcy9pbmRleC5qc1wiXG5pbXBvcnQge3BhcnNlUHJvZ3JhbVNvdXJjZX0gZnJvbSBcIi4vc3JjL2Zyb250ZW5kcy9wcm9ncmFtLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVBcnRpZmFjdFNvdXJjZSwgZ2VuZXJhdGVTb3VyY2V9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9pbmRleC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlUHJvZ3JhbUFydGlmYWN0c30gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL3Byb2dyYW0uanNcIlxuaW1wb3J0IHtjcmVhdGVHZW5lcmF0ZWRBcnRpZmFjdFNldCBhcyBjb25zdHJ1Y3RBcnRpZmFjdFNldH0gZnJvbSBcIi4vc3JjL2FydGlmYWN0cy5qc1wiXG5pbXBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpYywgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi9zcmMvZGlhZ25vc3RpYy5qc1wiXG5pbXBvcnQge2xhbmd1YWdlUmVnaXN0cnl9IGZyb20gXCIuL3NyYy9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiXG5pbXBvcnQge2tvdGxpbkFydGlmYWN0TWV0YWRhdGF9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9rb3RsaW4uanNcIlxuaW1wb3J0IHtwcmVmbGlnaHRFZmZlY3RDYXBhYmlsaXRpZXN9IGZyb20gXCIuL3NyYy9iYWNrZW5kcy9lZmZlY3RzLmpzXCJcblxuY29uc3QgYXJ0aWZhY3RCYWNrZW5kUm9sZXMgPSBuZXcgU2V0KFtcInRleHRcIiwgXCJiaW5hcnlcIiwgXCJhcHBsaWNhdGlvblwiXSlcblxuZXhwb3J0IHtTZW1hbnRpZm9sZERpYWdub3N0aWN9XG5leHBvcnQge2NyZWF0ZUNhcGFiaWxpdHlBdXRob3JpdHl9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9jYXBhYmlsaXRpZXMuanNcIlxuZXhwb3J0IHtsYW5ndWFnZUNhcGFiaWxpdGllcywgc3VwcG9ydGVkTGFuZ3VhZ2VzfSBmcm9tIFwiLi9zcmMvbGFuZ3VhZ2UtcmVnaXN0cnkuanNcIlxuZXhwb3J0IHtjcmVhdGVHZW5lcmF0ZWRBcnRpZmFjdFNldH0gZnJvbSBcIi4vc3JjL2FydGlmYWN0cy5qc1wiXG5leHBvcnQge2NyZWF0ZVN0ZGxpYkNvbnRyYWN0UmVnaXN0cnksIGxpc3RTdGRsaWJNb2R1bGVzLCByZXNvbHZlU3RkbGliTW9kdWxlfSBmcm9tIFwiLi9zcmMvc2VtYW50aWMvc3RkbGliLmpzXCJcbmV4cG9ydCB7Y3JlYXRlU3RkbGliUHJvdmlkZXJSZWdpc3RyeSwgbGlzdFN0ZGxpYlByb3ZpZGVyc30gZnJvbSBcIi4vc3JjL3N0ZGxpYi1wcm92aWRlcnMuanNcIlxuZXhwb3J0IHtuZWdvdGlhdGVTdGRsaWJQcm92aWRlcnN9IGZyb20gXCIuL3NyYy9zdGRsaWItbmVnb3RpYXRpb24uanNcIlxuZXhwb3J0IHtjcmVhdGVTdGRsaWJGYWNhZGVSZWdpc3RyeSwgbGlzdFN0ZGxpYkZhY2FkZXMsIHJlc29sdmVTdGRsaWJGYWNhZGV9IGZyb20gXCIuL3NyYy9zdGRsaWItZmFjYWRlcy5qc1wiXG5leHBvcnQge2NyZWF0ZUJ5dGVNYXBwaW5nLCBwYXJzZUJ5dGVNYXBwaW5nLCBzdHJpbmdpZnlCeXRlTWFwcGluZ30gZnJvbSBcIi4vc3JjL2JpbmFyeS1tYXBwaW5nLmpzXCJcbmV4cG9ydCB7Y2Fub25pY2FsVG9vbGNoYWlucywgZGlzY292ZXJDYW5vbmljYWxUb29sY2hhaW4sIGRpc2NvdmVyVG9vbGNoYWlufSBmcm9tIFwiLi9zcmMvdG9vbGNoYWlucy5qc1wiXG5leHBvcnQge3J1bkFjY2VwdGFuY2VTdGFnZXN9IGZyb20gXCIuL3NyYy9hY2NlcHRhbmNlLmpzXCJcbmV4cG9ydCB7Z2V0Tm9kZVByb3ZlbmFuY2UsIGdldFN5bWJvbFByb3ZlbmFuY2V9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9wcm92ZW5hbmNlLmpzXCJcbmV4cG9ydCB7cHJpbWFyeUxvY2F0aW9ufSBmcm9tIFwiLi9zcmMvc2VtYW50aWMvcHJvdmVuYW5jZS5qc1wiXG5leHBvcnQge1xuICBjb21wb3NlTWFwcGluZ3MsXG4gIGNvbXBvc2VTb3VyY2VNYXBzLFxuICBnZW5lcmF0ZWRQb3NpdGlvbkZvcixcbiAgbWFwcGluZ0Zyb21Tb3VyY2VNYXAsXG4gIG9yaWdpbmFsUG9zaXRpb25Gb3IsXG4gIHBhcnNlTWFwcGluZyxcbiAgcmVtYXBEaWFnbm9zdGljLFxuICByZW1hcExvY2F0aW9uLFxuICBzcGFuc0Zvck5vZGUsXG4gIHNwYW5zRm9yU3ltYm9sLFxuICBzdHJpbmdpZnlNYXBwaW5nLFxuICB0b1NvdXJjZU1hcFYzXG59IGZyb20gXCIuL3NyYy9tYXBwaW5nLmpzXCJcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGludG8gU2VtYW50aWZvbGQncyBzaGFyZWQgc2VtYW50aWMgcmVwcmVzZW50YXRpb24uXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBQYXJzZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LmZpbGVuYW1lIC0gU291cmNlIGZpbGVuYW1lIHVzZWQgaW4gZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gU291cmNlIGxhbmd1YWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LnNvdXJjZSAtIFNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIHtSZWFkb25seTxpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5PiB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHlJbnB1dH0gW2lucHV0LmNhcGFiaWxpdHlBdXRob3JpdHldIC0gRXhwbGljaXQgY29tcGlsZXIgYXV0aG9yaXR5LlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBTZW1hbnRpYyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICByZXR1cm4gcGFyc2VTb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogUGFyc2VzIGEgY29tcGxldGUgZXhwbGljaXQgbXVsdGktc291cmNlIHByb2plY3QgaW50byBvbmUgcmVzb2x2ZWQgc2VtYW50aWMgcHJvZ3JhbS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIFByb2dyYW0gcGFyc2UgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dC5lbnRyeU1vZHVsZSAtIFN0YWJsZSBpZGVudGl0eSBvZiB0aGUgc29sZSBlbnRyeSBtb2R1bGUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nLCBsYW5ndWFnZTogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZSwgc291cmNlOiBzdHJpbmd9W119IGlucHV0LnNvdXJjZXMgLSBDb21wbGV0ZSBjYWxsZXItc3VwcGxpZWQgc291cmNlIHNldC5cbiAqIEBwYXJhbSB7UmVhZG9ubHk8aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQ2FwYWJpbGl0eUF1dGhvcml0eT4gfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5SW5wdXR9IFtpbnB1dC5jYXBhYmlsaXR5QXV0aG9yaXR5XSAtIEV4cGxpY2l0IGNvbXBpbGVyIGF1dGhvcml0eSBzaGFyZWQgYnkgZXZlcnkgcHJvZ3JhbSBtb2R1bGUuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNQcm9ncmFtfSBTZW1hbnRpYyBwcm9ncmFtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9ncmFtKGlucHV0KSB7XG4gIHJldHVybiBwYXJzZVByb2dyYW1Tb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRhcmdldC1sYW5ndWFnZSBzb3VyY2UgZnJvbSBhIHNoYXJlZCBzZW1hbnRpYyBtb2R1bGUuXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBHZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHJldHVybnMge3N0cmluZ30gR2VuZXJhdGVkIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlKGlucHV0KSB7XG4gIHJldHVybiBnZW5lcmF0ZVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByZXVzYWJsZSBvdXRwdXQgYXJ0aWZhY3Qgd2l0aCByaWNoIGFuZCBTb3VyY2UgTWFwIHYzIG1hcHBpbmdzLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gR2VuZXJhdGlvbiByZXF1ZXN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNNb2R1bGV9IGlucHV0Lm1vZHVsZSAtIFNlbWFudGljIG1vZHVsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXQuZmlsZW5hbWVdIC0gT3V0cHV0IGZpbGVuYW1lLlxuICogQHBhcmFtIHtcIm5vbmVcIiB8IFwiZXh0ZXJuYWxcIiB8IFwiaW5saW5lXCJ9IFtpbnB1dC5tYXBEaXJlY3RpdmVdIC0gSmF2YVNjcmlwdC1mYW1pbHkgbWFwIGRpcmVjdGl2ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXQuc291cmNlTWFwRmlsZW5hbWVdIC0gRXh0ZXJuYWwgbWFwIGZpbGVuYW1lLlxuICogQHBhcmFtIHt7ZmlsZW5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBsYW5ndWFnZT86IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9W119IFtpbnB1dC5zb3VyY2VzXSAtIFNvdXJjZXMgZm9yIGNhbGxlci1hdXRob3JlZCBtb2R1bGVzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0fSBHZW5lcmF0ZWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFydGlmYWN0KGlucHV0KSB7XG4gIHJldHVybiBnZW5lcmF0ZUFydGlmYWN0U291cmNlKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGRldGVybWluaXN0aWMgbWFwcGVkIGFydGlmYWN0IHNldCBmb3IgYSBjb21wbGV0ZSBzZW1hbnRpYyBwcm9ncmFtLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gUHJvZ3JhbSBnZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBSZWdpc3RlcmVkIHByb2dyYW0gdGFyZ2V0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY1Byb2dyYW19IGlucHV0LnByb2dyYW0gLSBDb21wbGV0ZSByZXNvbHZlZCBwcm9ncmFtLlxuICogQHBhcmFtIHtcInRleHRcIiB8IFwiYXBwbGljYXRpb25cIn0gW2lucHV0LnJvbGVdIC0gRXhwbGljaXQgcm9sZTsgb21pdHRlZCBwcmVzZXJ2ZXMgdGV4dCBnZW5lcmF0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5Jb3NBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dCB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkFuZHJvaWRBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dH0gW2lucHV0LmNvbmZpZ3VyYXRpb25dIC0gQXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Bc3NldElucHV0W10gfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXX0gW2lucHV0LmFzc2V0c10gLSBFeGFjdCBjYWxsZXIgYXNzZXRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXX0gW2lucHV0LnJlc291cmNlc10gLSBFeGFjdCBBbmRyb2lkIGNhbGxlciByZXNvdXJjZXMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3RTZXR9IENvbXBsZXRlIGdlbmVyYXRlZCBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVByb2dyYW1BcnRpZmFjdFNldChpbnB1dCkge1xuICByZXR1cm4gZ2VuZXJhdGVQcm9ncmFtQXJ0aWZhY3RzKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGRldGVybWluaXN0aWMgYXJ0aWZhY3Qgc2V0IGZvciBvbmUgc2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gQXJ0aWZhY3Qtc2V0IGdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFJlZ2lzdGVyZWQgdGFyZ2V0IGxhbmd1YWdlIG9yIHBsYXRmb3JtIElELlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtcInRleHRcIiB8IFwiYmluYXJ5XCIgfCBcImFwcGxpY2F0aW9uXCJ9IFtpbnB1dC5yb2xlXSAtIFJlcXVlc3RlZCBiYWNrZW5kIGFydGlmYWN0IHJvbGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2lucHV0LmZpbGVuYW1lXSAtIFNhZmUgb3V0cHV0IHBhdGggZm9yIGEgdGV4dCB0YXJnZXQuXG4gKiBAcGFyYW0ge1wibm9uZVwiIHwgXCJleHRlcm5hbFwiIHwgXCJpbmxpbmVcIn0gW2lucHV0Lm1hcERpcmVjdGl2ZV0gLSBKYXZhU2NyaXB0LWZhbWlseSBtYXAgZGlyZWN0aXZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5zb3VyY2VNYXBGaWxlbmFtZV0gLSBFeHRlcm5hbCBtYXAgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX1bXX0gW2lucHV0LnNvdXJjZXNdIC0gT3JpZ2luYWwgc291cmNlcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Db25maWd1cmF0aW9uSW5wdXQgfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25Db25maWd1cmF0aW9uSW5wdXR9IFtpbnB1dC5jb25maWd1cmF0aW9uXSAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLklvc0FwcGxpY2F0aW9uQXNzZXRJbnB1dFtdIHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQW5kcm9pZEFwcGxpY2F0aW9uSW5wdXRGaWxlW119IFtpbnB1dC5hc3NldHNdIC0gRXhhY3QgY2FsbGVyIGFzc2V0cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQW5kcm9pZEFwcGxpY2F0aW9uSW5wdXRGaWxlW119IFtpbnB1dC5yZXNvdXJjZXNdIC0gRXhhY3QgQW5kcm9pZCBjYWxsZXIgcmVzb3VyY2VzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0U2V0fSBDb21wbGV0ZSBnZW5lcmF0ZWQgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBcnRpZmFjdFNldChpbnB1dCkge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoaW5wdXQpIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnB1dCkgIT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe1xuICAgICAgY29kZTogXCJJTlZBTElEX0FSVElGQUNUX1NFVFwiLFxuICAgICAgbGFuZ3VhZ2U6IFwiYXJ0aWZhY3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiQXJ0aWZhY3Qtc2V0IGdlbmVyYXRpb24gcmVxdWlyZXMgYSByZXF1ZXN0IG9iamVjdC5cIlxuICAgIH0pXG4gIH1cbiAgY29uc3Qge2Fzc2V0cywgY29uZmlndXJhdGlvbiwgZmlsZW5hbWUsIGxhbmd1YWdlLCBtYXBEaXJlY3RpdmUsIG1vZHVsZSwgcmVzb3VyY2VzLCByb2xlID0gXCJ0ZXh0XCIsIHNvdXJjZU1hcEZpbGVuYW1lLCBzb3VyY2VzfSA9IGlucHV0XG5cbiAgaWYgKHR5cGVvZiBsYW5ndWFnZSAhPSBcInN0cmluZ1wiIHx8IGxhbmd1YWdlLmxlbmd0aCA9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfQVJUSUZBQ1RfU0VUXCIsXG4gICAgICBsYW5ndWFnZTogXCJhcnRpZmFjdFwiLFxuICAgICAgbWVzc2FnZTogXCJBcnRpZmFjdC1zZXQgZ2VuZXJhdGlvbiByZXF1aXJlcyBhIG5vbi1lbXB0eSBzdHJpbmcgbGFuZ3VhZ2Ugb3IgdGFyZ2V0IElELlwiXG4gICAgfSlcbiAgfVxuICBpZiAodHlwZW9mIHJvbGUgIT0gXCJzdHJpbmdcIiB8fCAhYXJ0aWZhY3RCYWNrZW5kUm9sZXMuaGFzKHJvbGUpKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfQVJUSUZBQ1RfU0VUXCIsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIG1lc3NhZ2U6IFwiQXJ0aWZhY3QgYmFja2VuZCByb2xlIG11c3QgYmUgJ3RleHQnLCAnYmluYXJ5Jywgb3IgJ2FwcGxpY2F0aW9uJy5cIlxuICAgIH0pXG4gIH1cbiAgY29uc3QgdGFyZ2V0ID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZWNvcmQobGFuZ3VhZ2UpXG4gIHByZWZsaWdodEVmZmVjdENhcGFiaWxpdGllcyhtb2R1bGUsIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSAqLyAobGFuZ3VhZ2UpKVxuICBjb25zdCBnZW5lcmljRGVjbGFyYXRpb24gPSBbLi4ubW9kdWxlPy5yZWNvcmRzID8/IFtdLCAuLi5tb2R1bGU/LmZ1bmN0aW9ucyA/PyBbXV1cbiAgICAuZmluZCgoZGVjbGFyYXRpb24pID0+IChkZWNsYXJhdGlvbj8udHlwZVBhcmFtZXRlcnM/Lmxlbmd0aCA/PyAwKSA+IDApXG5cbiAgaWYgKGdlbmVyaWNEZWNsYXJhdGlvbiAmJiAhdGFyZ2V0LmZlYXR1cmVzLnR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3MpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDEyIHR5cGUgcGFyYW1ldGVycyBhbmQgZ2VuZXJpY3NcIiwgZ2VuZXJpY0RlY2xhcmF0aW9uLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG1vZHVsZT8ucmVjb3JkcykgJiYgbW9kdWxlLnJlY29yZHMubGVuZ3RoID4gMCAmJiAhdGFyZ2V0LmZlYXR1cmVzLmNsb3NlZFJlY29yZHMpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDA5IGNsb3NlZCByZWNvcmRzXCIsIG1vZHVsZS5yZWNvcmRzWzBdLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG1vZHVsZT8uY2xhc3NlcykgJiYgbW9kdWxlLmNsYXNzZXMubGVuZ3RoID4gMCAmJiAhdGFyZ2V0LmZlYXR1cmVzLnJlZmVyZW5jZUNsYXNzZXMpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBcIlRhc2sgMDMzIHJlZmVyZW5jZSBjbGFzc2VzXCIsIG1vZHVsZS5jbGFzc2VzWzBdLmxvY2F0aW9uID8/IG1vZHVsZS5sb2NhdGlvbilcbiAgfVxuICBpZiAocm9sZSA9PSBcInRleHRcIikge1xuICAgIGlmICh0YXJnZXQuYXJ0aWZhY3RNdWx0aXBsaWNpdHkgPT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICBjb25zdCBiYWNrZW5kID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZXNvbHZlKGxhbmd1YWdlLCBcInRleHRCYWNrZW5kXCIsIG1vZHVsZT8ubG9jYXRpb24pXG5cbiAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldChiYWNrZW5kKHtmaWxlbmFtZSwgbGFuZ3VhZ2UsIG1hcERpcmVjdGl2ZSwgbW9kdWxlLCBzb3VyY2VNYXBGaWxlbmFtZSwgc291cmNlc30pKVxuICAgIH1cbiAgICBjb25zdCBhcnRpZmFjdCA9IGdlbmVyYXRlQXJ0aWZhY3RTb3VyY2Uoe1xuICAgICAgZmlsZW5hbWUsXG4gICAgICBsYW5ndWFnZTogLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSAqLyAobGFuZ3VhZ2UpLFxuICAgICAgbWFwRGlyZWN0aXZlLFxuICAgICAgbW9kdWxlLFxuICAgICAgc291cmNlTWFwRmlsZW5hbWUsXG4gICAgICBzb3VyY2VzXG4gICAgfSlcblxuICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkU2V0QXJ0aWZhY3RbXX0gKi9cbiAgICBjb25zdCBhcnRpZmFjdHMgPSBbe1xuICAgICAgY29udGVudDogYXJ0aWZhY3QuY29kZSxcbiAgICAgIGNvbnRlbnRLaW5kOiBcInRleHRcIixcbiAgICAgIG1lZGlhVHlwZTogLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0YXJnZXQubWVkaWFUeXBlKSxcbiAgICAgIG93bmVyc2hpcDogXCJnZW5lcmF0ZWRcIixcbiAgICAgIHBhdGg6IGFydGlmYWN0LmZpbGVuYW1lLFxuICAgICAgcHJvdmVuYW5jZToge1xuICAgICAgICBraW5kOiBcInRleHRcIixcbiAgICAgICAgbWFwcGluZzogYXJ0aWZhY3QubWFwcGluZyxcbiAgICAgICAgc291cmNlTWFwOiBhcnRpZmFjdC5zb3VyY2VNYXAsXG4gICAgICAgIHNvdXJjZU1hcEZpbGVuYW1lOiBhcnRpZmFjdC5zb3VyY2VNYXBGaWxlbmFtZVxuICAgICAgfSxcbiAgICAgIHJvbGU6IFwiZW50cnlcIlxuICAgIH1dXG5cbiAgICBpZiAobWFwRGlyZWN0aXZlID09IFwiZXh0ZXJuYWxcIikge1xuICAgICAgYXJ0aWZhY3RzLnB1c2goe1xuICAgICAgICBjb250ZW50OiBgJHtKU09OLnN0cmluZ2lmeShhcnRpZmFjdC5zb3VyY2VNYXApfVxcbmAsXG4gICAgICAgIGNvbnRlbnRLaW5kOiBcInRleHRcIixcbiAgICAgICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgb3duZXJzaGlwOiBcImdlbmVyYXRlZFwiLFxuICAgICAgICBwYXRoOiBhcnRpZmFjdC5zb3VyY2VNYXBGaWxlbmFtZSxcbiAgICAgICAgcHJvdmVuYW5jZToge1xuICAgICAgICAgIGtpbmQ6IFwic3ludGhldGljXCIsXG4gICAgICAgICAgcmVhc29uOiBcIlNlcmlhbGl6ZWQgU291cmNlIE1hcCB2MyBwcm9qZWN0aW9uIGZvciB0aGUgZ2VuZXJhdGVkIGVudHJ5IGFydGlmYWN0LlwiLFxuICAgICAgICAgIHJlbGF0ZWRPcmlnaW5zOiBbXVxuICAgICAgICB9LFxuICAgICAgICByb2xlOiBcIm1hcHBpbmdcIlxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0QXJ0aWZhY3RTZXQoe1xuICAgICAgYXJ0aWZhY3RzLFxuICAgICAgLi4uKGxhbmd1YWdlID09IFwia290bGluXCIgPyB7bWV0YWRhdGE6IGtvdGxpbkFydGlmYWN0TWV0YWRhdGF9IDoge30pLFxuICAgICAgdGFyZ2V0OiBsYW5ndWFnZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCByZWdpc3RyeVJvbGUgPSByb2xlID09IFwiYmluYXJ5XCIgPyBcImJpbmFyeUJhY2tlbmRcIiA6IFwiYXBwbGljYXRpb25CYWNrZW5kXCJcbiAgY29uc3QgYmFja2VuZCA9IGxhbmd1YWdlUmVnaXN0cnkucmVzb2x2ZShsYW5ndWFnZSwgcmVnaXN0cnlSb2xlLCBtb2R1bGU/LmxvY2F0aW9uKVxuXG4gIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldChiYWNrZW5kKGxhbmd1YWdlID09IFwiYW5kcm9pZFwiID8gaW5wdXQgOlxuICAgIHthc3NldHMsIGNvbmZpZ3VyYXRpb24sIGZpbGVuYW1lLCBsYW5ndWFnZSwgbWFwRGlyZWN0aXZlLCBtb2R1bGUsIHJlc291cmNlcywgc291cmNlTWFwRmlsZW5hbWUsIHNvdXJjZXN9KSlcbn1cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLEVBQUMsMEJBQTBCLElBQUksb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUVyRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0FBRXZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxDQUFBO0FBQzlCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFBO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBQ25GLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQzdELE9BQU8sRUFBQyw0QkFBNEIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzdHLE9BQU8sRUFBQyw0QkFBNEIsRUFB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QVksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbEYsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRixFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3BhcnNlU291cmNlfSBmcm9tIFwiLi9zcmMvZnJvbnRlbmRzL2luZGV4LmpzXCJcbmltcG9ydCB7cGFyc2VQcm9ncmFtU291cmNlfSBmcm9tIFwiLi9zcmMvZnJvbnRlbmRzL3Byb2dyYW0uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUFydGlmYWN0U291cmNlLCBnZW5lcmF0ZVNvdXJjZX0gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2luZGV4LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVQcm9ncmFtQXJ0aWZhY3RzfSBmcm9tIFwiLi9zcmMvYmFja2VuZHMvcHJvZ3JhbS5qc1wiXG5pbXBvcnQge2NyZWF0ZUdlbmVyYXRlZEFydGlmYWN0U2V0IGFzIGNvbnN0cnVjdEFydGlmYWN0U2V0fSBmcm9tIFwiLi9zcmMvYXJ0aWZhY3RzLmpzXCJcbmltcG9ydCB7U2VtYW50aWZvbGREaWFnbm9zdGljLCB1bnN1cHBvcnRlZENhcGFiaWxpdHl9IGZyb20gXCIuL3NyYy9kaWFnbm9zdGljLmpzXCJcbmltcG9ydCB7bGFuZ3VhZ2VSZWdpc3RyeX0gZnJvbSBcIi4vc3JjL2xhbmd1YWdlLXJlZ2lzdHJ5LmpzXCJcbmltcG9ydCB7a290bGluQXJ0aWZhY3RNZXRhZGF0YX0gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2tvdGxpbi5qc1wiXG5pbXBvcnQge3ByZWZsaWdodEVmZmVjdENhcGFiaWxpdGllc30gZnJvbSBcIi4vc3JjL2JhY2tlbmRzL2VmZmVjdHMuanNcIlxuXG5jb25zdCBhcnRpZmFjdEJhY2tlbmRSb2xlcyA9IG5ldyBTZXQoW1widGV4dFwiLCBcImJpbmFyeVwiLCBcImFwcGxpY2F0aW9uXCJdKVxuXG5leHBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpY31cbmV4cG9ydCB7Y3JlYXRlQ2FwYWJpbGl0eUF1dGhvcml0eX0gZnJvbSBcIi4vc3JjL3NlbWFudGljL2NhcGFiaWxpdGllcy5qc1wiXG5leHBvcnQge2xhbmd1YWdlQ2FwYWJpbGl0aWVzLCBzdXBwb3J0ZWRMYW5ndWFnZXN9IGZyb20gXCIuL3NyYy9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiXG5leHBvcnQge2NyZWF0ZUdlbmVyYXRlZEFydGlmYWN0U2V0fSBmcm9tIFwiLi9zcmMvYXJ0aWZhY3RzLmpzXCJcbmV4cG9ydCB7Y3JlYXRlU3RkbGliQ29udHJhY3RSZWdpc3RyeSwgbGlzdFN0ZGxpYk1vZHVsZXMsIHJlc29sdmVTdGRsaWJNb2R1bGV9IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9zdGRsaWIuanNcIlxuZXhwb3J0IHtjcmVhdGVTdGRsaWJQcm92aWRlclJlZ2lzdHJ5LCBsaXN0U3RkbGliUHJvdmlkZXJzfSBmcm9tIFwiLi9zcmMvc3RkbGliLXByb3ZpZGVycy5qc1wiXG5leHBvcnQge25lZ290aWF0ZVN0ZGxpYlByb3ZpZGVyc30gZnJvbSBcIi4vc3JjL3N0ZGxpYi1uZWdvdGlhdGlvbi5qc1wiXG5leHBvcnQge2NyZWF0ZVN0ZGxpYkZhY2FkZVJlZ2lzdHJ5LCBsaXN0U3RkbGliRmFjYWRlcywgcmVzb2x2ZVN0ZGxpYkZhY2FkZX0gZnJvbSBcIi4vc3JjL3N0ZGxpYi1mYWNhZGVzLmpzXCJcbmV4cG9ydCB7Y3JlYXRlQnl0ZU1hcHBpbmcsIHBhcnNlQnl0ZU1hcHBpbmcsIHN0cmluZ2lmeUJ5dGVNYXBwaW5nfSBmcm9tIFwiLi9zcmMvYmluYXJ5LW1hcHBpbmcuanNcIlxuZXhwb3J0IHtjYW5vbmljYWxUb29sY2hhaW5zLCBkaXNjb3ZlckNhbm9uaWNhbFRvb2xjaGFpbiwgZGlzY292ZXJUb29sY2hhaW59IGZyb20gXCIuL3NyYy90b29sY2hhaW5zLmpzXCJcbmV4cG9ydCB7cnVuQWNjZXB0YW5jZVN0YWdlc30gZnJvbSBcIi4vc3JjL2FjY2VwdGFuY2UuanNcIlxuZXhwb3J0IHtnZXROb2RlUHJvdmVuYW5jZSwgZ2V0U3ltYm9sUHJvdmVuYW5jZX0gZnJvbSBcIi4vc3JjL3NlbWFudGljL3Byb3ZlbmFuY2UuanNcIlxuZXhwb3J0IHtwcmltYXJ5TG9jYXRpb259IGZyb20gXCIuL3NyYy9zZW1hbnRpYy9wcm92ZW5hbmNlLmpzXCJcbmV4cG9ydCB7XG4gIGNvbXBvc2VNYXBwaW5ncyxcbiAgY29tcG9zZVNvdXJjZU1hcHMsXG4gIGdlbmVyYXRlZFBvc2l0aW9uRm9yLFxuICBtYXBwaW5nRnJvbVNvdXJjZU1hcCxcbiAgb3JpZ2luYWxQb3NpdGlvbkZvcixcbiAgcGFyc2VNYXBwaW5nLFxuICByZW1hcERpYWdub3N0aWMsXG4gIHJlbWFwTG9jYXRpb24sXG4gIHNwYW5zRm9yTm9kZSxcbiAgc3BhbnNGb3JTeW1ib2wsXG4gIHN0cmluZ2lmeU1hcHBpbmcsXG4gIHRvU291cmNlTWFwVjNcbn0gZnJvbSBcIi4vc3JjL21hcHBpbmcuanNcIlxuXG4vKipcbiAqIFBhcnNlcyBzb3VyY2UgaW50byBTZW1hbnRpZm9sZCdzIHNoYXJlZCBzZW1hbnRpYyByZXByZXNlbnRhdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIFBhcnNlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQuZmlsZW5hbWUgLSBTb3VyY2UgZmlsZW5hbWUgdXNlZCBpbiBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBTb3VyY2UgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQuc291cmNlIC0gU291cmNlIHRleHQuXG4gKiBAcGFyYW0ge1JlYWRvbmx5PGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHk+IHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQ2FwYWJpbGl0eUF1dGhvcml0eUlucHV0fSBbaW5wdXQuY2FwYWJpbGl0eUF1dGhvcml0eV0gLSBFeHBsaWNpdCBjb21waWxlciBhdXRob3JpdHkuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNNb2R1bGV9IFNlbWFudGljIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gIHJldHVybiBwYXJzZVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBjb21wbGV0ZSBleHBsaWNpdCBtdWx0aS1zb3VyY2UgcHJvamVjdCBpbnRvIG9uZSByZXNvbHZlZCBzZW1hbnRpYyBwcm9ncmFtLlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gUHJvZ3JhbSBwYXJzZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LmVudHJ5TW9kdWxlIC0gU3RhYmxlIGlkZW50aXR5IG9mIHRoZSBzb2xlIGVudHJ5IG1vZHVsZS5cbiAqIEBwYXJhbSB7e2ZpbGVuYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGxhbmd1YWdlOiBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlLCBzb3VyY2U6IHN0cmluZ31bXX0gaW5wdXQuc291cmNlcyAtIENvbXBsZXRlIGNhbGxlci1zdXBwbGllZCBzb3VyY2Ugc2V0LlxuICogQHBhcmFtIHtSZWFkb25seTxpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5DYXBhYmlsaXR5QXV0aG9yaXR5PiB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkNhcGFiaWxpdHlBdXRob3JpdHlJbnB1dH0gW2lucHV0LmNhcGFiaWxpdHlBdXRob3JpdHldIC0gRXhwbGljaXQgY29tcGlsZXIgYXV0aG9yaXR5IHNoYXJlZCBieSBldmVyeSBwcm9ncmFtIG1vZHVsZS5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY1Byb2dyYW19IFNlbWFudGljIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb2dyYW0oaW5wdXQpIHtcbiAgcmV0dXJuIHBhcnNlUHJvZ3JhbVNvdXJjZShpbnB1dClcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGFyZ2V0LWxhbmd1YWdlIHNvdXJjZSBmcm9tIGEgc2hhcmVkIHNlbWFudGljIG1vZHVsZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dCAtIEdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gaW5wdXQubGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBpbnB1dC5tb2R1bGUgLSBTZW1hbnRpYyBtb2R1bGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBHZW5lcmF0ZWQgc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGUoaW5wdXQpIHtcbiAgcmV0dXJuIGdlbmVyYXRlU291cmNlKGlucHV0KVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHJldXNhYmxlIG91dHB1dCBhcnRpZmFjdCB3aXRoIHJpY2ggYW5kIFNvdXJjZSBNYXAgdjMgbWFwcGluZ3MuXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBHZW5lcmF0aW9uIHJlcXVlc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gaW5wdXQubW9kdWxlIC0gU2VtYW50aWMgbW9kdWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5maWxlbmFtZV0gLSBPdXRwdXQgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge1wibm9uZVwiIHwgXCJleHRlcm5hbFwiIHwgXCJpbmxpbmVcIn0gW2lucHV0Lm1hcERpcmVjdGl2ZV0gLSBKYXZhU2NyaXB0LWZhbWlseSBtYXAgZGlyZWN0aXZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dC5zb3VyY2VNYXBGaWxlbmFtZV0gLSBFeHRlcm5hbCBtYXAgZmlsZW5hbWUuXG4gKiBAcGFyYW0ge3tmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX1bXX0gW2lucHV0LnNvdXJjZXNdIC0gU291cmNlcyBmb3IgY2FsbGVyLWF1dGhvcmVkIG1vZHVsZXMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3R9IEdlbmVyYXRlZCBhcnRpZmFjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQXJ0aWZhY3QoaW5wdXQpIHtcbiAgcmV0dXJuIGdlbmVyYXRlQXJ0aWZhY3RTb3VyY2UoaW5wdXQpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZGV0ZXJtaW5pc3RpYyBtYXBwZWQgYXJ0aWZhY3Qgc2V0IGZvciBhIGNvbXBsZXRlIHNlbWFudGljIHByb2dyYW0uXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBQcm9ncmFtIGdlbmVyYXRpb24gcmVxdWVzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBpbnB1dC5sYW5ndWFnZSAtIFJlZ2lzdGVyZWQgcHJvZ3JhbSB0YXJnZXQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljUHJvZ3JhbX0gaW5wdXQucHJvZ3JhbSAtIENvbXBsZXRlIHJlc29sdmVkIHByb2dyYW0uXG4gKiBAcGFyYW0ge1widGV4dFwiIHwgXCJhcHBsaWNhdGlvblwifSBbaW5wdXQucm9sZV0gLSBFeHBsaWNpdCByb2xlOyBvbWl0dGVkIHByZXNlcnZlcyB0ZXh0IGdlbmVyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLklvc0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbklucHV0IHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuQW5kcm9pZEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbklucHV0IHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuRmx1dHRlckFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbklucHV0fSBbaW5wdXQuY29uZmlndXJhdGlvbl0gLSBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5Jb3NBcHBsaWNhdGlvbkFzc2V0SW5wdXRbXSB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkFuZHJvaWRBcHBsaWNhdGlvbklucHV0RmlsZVtdIHwgaW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuRmx1dHRlckFwcGxpY2F0aW9uQXNzZXRJbnB1dFtdfSBbaW5wdXQuYXNzZXRzXSAtIEV4YWN0IGNhbGxlciBhc3NldHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkFuZHJvaWRBcHBsaWNhdGlvbklucHV0RmlsZVtdfSBbaW5wdXQucmVzb3VyY2VzXSAtIEV4YWN0IEFuZHJvaWQgY2FsbGVyIHJlc291cmNlcy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5HZW5lcmF0ZWRBcnRpZmFjdFNldH0gQ29tcGxldGUgZ2VuZXJhdGVkIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUHJvZ3JhbUFydGlmYWN0U2V0KGlucHV0KSB7XG4gIHJldHVybiBnZW5lcmF0ZVByb2dyYW1BcnRpZmFjdHMoaW5wdXQpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZGV0ZXJtaW5pc3RpYyBhcnRpZmFjdCBzZXQgZm9yIG9uZSBzZW1hbnRpYyBtb2R1bGUuXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXQgLSBBcnRpZmFjdC1zZXQgZ2VuZXJhdGlvbiByZXF1ZXN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGlucHV0Lmxhbmd1YWdlIC0gUmVnaXN0ZXJlZCB0YXJnZXQgbGFuZ3VhZ2Ugb3IgcGxhdGZvcm0gSUQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBpbnB1dC5tb2R1bGUgLSBTZW1hbnRpYyBtb2R1bGUuXG4gKiBAcGFyYW0ge1widGV4dFwiIHwgXCJiaW5hcnlcIiB8IFwiYXBwbGljYXRpb25cIn0gW2lucHV0LnJvbGVdIC0gUmVxdWVzdGVkIGJhY2tlbmQgYXJ0aWZhY3Qgcm9sZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXQuZmlsZW5hbWVdIC0gU2FmZSBvdXRwdXQgcGF0aCBmb3IgYSB0ZXh0IHRhcmdldC5cbiAqIEBwYXJhbSB7XCJub25lXCIgfCBcImV4dGVybmFsXCIgfCBcImlubGluZVwifSBbaW5wdXQubWFwRGlyZWN0aXZlXSAtIEphdmFTY3JpcHQtZmFtaWx5IG1hcCBkaXJlY3RpdmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2lucHV0LnNvdXJjZU1hcEZpbGVuYW1lXSAtIEV4dGVybmFsIG1hcCBmaWxlbmFtZS5cbiAqIEBwYXJhbSB7e2ZpbGVuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgbGFuZ3VhZ2U/OiBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfVtdfSBbaW5wdXQuc291cmNlc10gLSBPcmlnaW5hbCBzb3VyY2VzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5Jb3NBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dCB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkFuZHJvaWRBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dCB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkZsdXR0ZXJBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25JbnB1dH0gW2lucHV0LmNvbmZpZ3VyYXRpb25dIC0gQXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuSW9zQXBwbGljYXRpb25Bc3NldElucHV0W10gfCBpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXSB8IGltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkZsdXR0ZXJBcHBsaWNhdGlvbkFzc2V0SW5wdXRbXX0gW2lucHV0LmFzc2V0c10gLSBFeGFjdCBjYWxsZXIgYXNzZXRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5BbmRyb2lkQXBwbGljYXRpb25JbnB1dEZpbGVbXX0gW2lucHV0LnJlc291cmNlc10gLSBFeGFjdCBBbmRyb2lkIGNhbGxlciByZXNvdXJjZXMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zcmMvc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3RTZXR9IENvbXBsZXRlIGdlbmVyYXRlZCBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFydGlmYWN0U2V0KGlucHV0KSB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShpbnB1dCkgfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGlucHV0KSAhPSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfQVJUSUZBQ1RfU0VUXCIsXG4gICAgICBsYW5ndWFnZTogXCJhcnRpZmFjdFwiLFxuICAgICAgbWVzc2FnZTogXCJBcnRpZmFjdC1zZXQgZ2VuZXJhdGlvbiByZXF1aXJlcyBhIHJlcXVlc3Qgb2JqZWN0LlwiXG4gICAgfSlcbiAgfVxuICBjb25zdCB7YXNzZXRzLCBjb25maWd1cmF0aW9uLCBmaWxlbmFtZSwgbGFuZ3VhZ2UsIG1hcERpcmVjdGl2ZSwgbW9kdWxlLCByZXNvdXJjZXMsIHJvbGUgPSBcInRleHRcIiwgc291cmNlTWFwRmlsZW5hbWUsIHNvdXJjZXN9ID0gaW5wdXRcblxuICBpZiAodHlwZW9mIGxhbmd1YWdlICE9IFwic3RyaW5nXCIgfHwgbGFuZ3VhZ2UubGVuZ3RoID09IDApIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9BUlRJRkFDVF9TRVRcIixcbiAgICAgIGxhbmd1YWdlOiBcImFydGlmYWN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkFydGlmYWN0LXNldCBnZW5lcmF0aW9uIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHN0cmluZyBsYW5ndWFnZSBvciB0YXJnZXQgSUQuXCJcbiAgICB9KVxuICB9XG4gIGlmICh0eXBlb2Ygcm9sZSAhPSBcInN0cmluZ1wiIHx8ICFhcnRpZmFjdEJhY2tlbmRSb2xlcy5oYXMocm9sZSkpIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9BUlRJRkFDVF9TRVRcIixcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgbWVzc2FnZTogXCJBcnRpZmFjdCBiYWNrZW5kIHJvbGUgbXVzdCBiZSAndGV4dCcsICdiaW5hcnknLCBvciAnYXBwbGljYXRpb24nLlwiXG4gICAgfSlcbiAgfVxuICBjb25zdCB0YXJnZXQgPSBsYW5ndWFnZVJlZ2lzdHJ5LnJlY29yZChsYW5ndWFnZSlcbiAgcHJlZmxpZ2h0RWZmZWN0Q2FwYWJpbGl0aWVzKG1vZHVsZSwgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSkpXG4gIGNvbnN0IGdlbmVyaWNEZWNsYXJhdGlvbiA9IFsuLi5tb2R1bGU/LnJlY29yZHMgPz8gW10sIC4uLm1vZHVsZT8uZnVuY3Rpb25zID8/IFtdXVxuICAgIC5maW5kKChkZWNsYXJhdGlvbikgPT4gKGRlY2xhcmF0aW9uPy50eXBlUGFyYW1ldGVycz8ubGVuZ3RoID8/IDApID4gMClcblxuICBpZiAoZ2VuZXJpY0RlY2xhcmF0aW9uICYmICF0YXJnZXQuZmVhdHVyZXMudHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMTIgdHlwZSBwYXJhbWV0ZXJzIGFuZCBnZW5lcmljc1wiLCBnZW5lcmljRGVjbGFyYXRpb24ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlPy5yZWNvcmRzKSAmJiBtb2R1bGUucmVjb3Jkcy5sZW5ndGggPiAwICYmICF0YXJnZXQuZmVhdHVyZXMuY2xvc2VkUmVjb3Jkcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMDkgY2xvc2VkIHJlY29yZHNcIiwgbW9kdWxlLnJlY29yZHNbMF0ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlPy5jbGFzc2VzKSAmJiBtb2R1bGUuY2xhc3Nlcy5sZW5ndGggPiAwICYmICF0YXJnZXQuZmVhdHVyZXMucmVmZXJlbmNlQ2xhc3Nlcykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eSgvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gKi8gKGxhbmd1YWdlKSxcbiAgICAgIFwiVGFzayAwMzMgcmVmZXJlbmNlIGNsYXNzZXNcIiwgbW9kdWxlLmNsYXNzZXNbMF0ubG9jYXRpb24gPz8gbW9kdWxlLmxvY2F0aW9uKVxuICB9XG4gIGlmIChyb2xlID09IFwidGV4dFwiKSB7XG4gICAgaWYgKHRhcmdldC5hcnRpZmFjdE11bHRpcGxpY2l0eSA9PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIGNvbnN0IGJhY2tlbmQgPSBsYW5ndWFnZVJlZ2lzdHJ5LnJlc29sdmUobGFuZ3VhZ2UsIFwidGV4dEJhY2tlbmRcIiwgbW9kdWxlPy5sb2NhdGlvbilcblxuICAgICAgcmV0dXJuIGNvbnN0cnVjdEFydGlmYWN0U2V0KGJhY2tlbmQoe2ZpbGVuYW1lLCBsYW5ndWFnZSwgbWFwRGlyZWN0aXZlLCBtb2R1bGUsIHNvdXJjZU1hcEZpbGVuYW1lLCBzb3VyY2VzfSkpXG4gICAgfVxuICAgIGNvbnN0IGFydGlmYWN0ID0gZ2VuZXJhdGVBcnRpZmFjdFNvdXJjZSh7XG4gICAgICBmaWxlbmFtZSxcbiAgICAgIGxhbmd1YWdlOiAvKiogQHR5cGUge2ltcG9ydChcIi4vc3JjL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9ICovIChsYW5ndWFnZSksXG4gICAgICBtYXBEaXJlY3RpdmUsXG4gICAgICBtb2R1bGUsXG4gICAgICBzb3VyY2VNYXBGaWxlbmFtZSxcbiAgICAgIHNvdXJjZXNcbiAgICB9KVxuXG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NyYy9zZW1hbnRpYy90eXBlcy5qc1wiKS5HZW5lcmF0ZWRTZXRBcnRpZmFjdFtdfSAqL1xuICAgIGNvbnN0IGFydGlmYWN0cyA9IFt7XG4gICAgICBjb250ZW50OiBhcnRpZmFjdC5jb2RlLFxuICAgICAgY29udGVudEtpbmQ6IFwidGV4dFwiLFxuICAgICAgbWVkaWFUeXBlOiAvKiogQHR5cGUge3N0cmluZ30gKi8gKHRhcmdldC5tZWRpYVR5cGUpLFxuICAgICAgb3duZXJzaGlwOiBcImdlbmVyYXRlZFwiLFxuICAgICAgcGF0aDogYXJ0aWZhY3QuZmlsZW5hbWUsXG4gICAgICBwcm92ZW5hbmNlOiB7XG4gICAgICAgIGtpbmQ6IFwidGV4dFwiLFxuICAgICAgICBtYXBwaW5nOiBhcnRpZmFjdC5tYXBwaW5nLFxuICAgICAgICBzb3VyY2VNYXA6IGFydGlmYWN0LnNvdXJjZU1hcCxcbiAgICAgICAgc291cmNlTWFwRmlsZW5hbWU6IGFydGlmYWN0LnNvdXJjZU1hcEZpbGVuYW1lXG4gICAgICB9LFxuICAgICAgcm9sZTogXCJlbnRyeVwiXG4gICAgfV1cblxuICAgIGlmIChtYXBEaXJlY3RpdmUgPT0gXCJleHRlcm5hbFwiKSB7XG4gICAgICBhcnRpZmFjdHMucHVzaCh7XG4gICAgICAgIGNvbnRlbnQ6IGAke0pTT04uc3RyaW5naWZ5KGFydGlmYWN0LnNvdXJjZU1hcCl9XFxuYCxcbiAgICAgICAgY29udGVudEtpbmQ6IFwidGV4dFwiLFxuICAgICAgICBtZWRpYVR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBvd25lcnNoaXA6IFwiZ2VuZXJhdGVkXCIsXG4gICAgICAgIHBhdGg6IGFydGlmYWN0LnNvdXJjZU1hcEZpbGVuYW1lLFxuICAgICAgICBwcm92ZW5hbmNlOiB7XG4gICAgICAgICAga2luZDogXCJzeW50aGV0aWNcIixcbiAgICAgICAgICByZWFzb246IFwiU2VyaWFsaXplZCBTb3VyY2UgTWFwIHYzIHByb2plY3Rpb24gZm9yIHRoZSBnZW5lcmF0ZWQgZW50cnkgYXJ0aWZhY3QuXCIsXG4gICAgICAgICAgcmVsYXRlZE9yaWdpbnM6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IFwibWFwcGluZ1wiXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RBcnRpZmFjdFNldCh7XG4gICAgICBhcnRpZmFjdHMsXG4gICAgICAuLi4obGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIiA/IHttZXRhZGF0YToga290bGluQXJ0aWZhY3RNZXRhZGF0YX0gOiB7fSksXG4gICAgICB0YXJnZXQ6IGxhbmd1YWdlXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlZ2lzdHJ5Um9sZSA9IHJvbGUgPT0gXCJiaW5hcnlcIiA/IFwiYmluYXJ5QmFja2VuZFwiIDogXCJhcHBsaWNhdGlvbkJhY2tlbmRcIlxuICBjb25zdCBiYWNrZW5kID0gbGFuZ3VhZ2VSZWdpc3RyeS5yZXNvbHZlKGxhbmd1YWdlLCByZWdpc3RyeVJvbGUsIG1vZHVsZT8ubG9jYXRpb24pXG5cbiAgcmV0dXJuIGNvbnN0cnVjdEFydGlmYWN0U2V0KGJhY2tlbmQobGFuZ3VhZ2UgPT0gXCJhbmRyb2lkXCIgfHwgbGFuZ3VhZ2UgPT0gXCJmbHV0dGVyXCIgPyBpbnB1dCA6XG4gICAge2Fzc2V0cywgY29uZmlndXJhdGlvbiwgZmlsZW5hbWUsIGxhbmd1YWdlLCBtYXBEaXJlY3RpdmUsIG1vZHVsZSwgcmVzb3VyY2VzLCBzb3VyY2VNYXBGaWxlbmFtZSwgc291cmNlc30pKVxufVxuIl19
|