@dbx-tools/core 0.9.119 → 0.9.121

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 CHANGED
@@ -60,9 +60,10 @@ const executable = await bin.ensure("tool", releaseUrl, {
60
60
  for a different layout. An existing executable returns immediately, so
61
61
  a URL resolver is only called when installation is necessary. Concurrent
62
62
  callers use a file lock with a check-lock-check-load sequence, preventing
63
- duplicate downloads across processes and worker threads. After the lock, a
64
- function URL receives `{ tempDir }` so a local installer can write under that
65
- directory. Direct HTTP downloads are selected by default. A `file://` URL is
63
+ duplicate downloads across processes and worker threads.
64
+
65
+ After the lock, a function URL receives `{ tempDir }` so a local installer can
66
+ write under that directory. Direct HTTP downloads are selected by default. A `file://` URL is
66
67
  copied without fetching or unpacking. Zip, tar, tar.gz, and tgz archives can
67
68
  be unpacked automatically; a single-file archive needs no selector, while a
68
69
  selector can choose a binary from a larger archive. The selected file is
@@ -141,13 +142,14 @@ profile. Parsed dotenv records are cached by file path; parsed bundle output is
141
142
  cached by bundle path plus profile. App YAML lookup runs only if the bundle did
142
143
  not resolve the key and reads `env[].value` entries. Bundle `value_from` and App
143
144
  YAML `valueFrom` references resolve supported fields from their named
144
- `sql_warehouse`, `genie_space`, or `postgres` resource. Config-file discovery and parsed results
145
- are single-attempt per source key: found paths, missing files, empty records,
146
- invalid records, and `undefined` results all cache. Root bundle `variables` are NOT a
147
- config source: they are authoring inputs interpolated into the bundle's own
148
- targets, resources, and paths, so reading one as a process setting resolves names
149
- the deployed App never sees. Reference a variable from `config.env` to make it
150
- one.
145
+ `sql_warehouse`, `genie_space`, or `postgres` resource.
146
+
147
+ Config-file discovery and parsed results are single-attempt per source key:
148
+ found paths, missing files, empty records, invalid records, and `undefined`
149
+ results all cache. Root bundle `variables` are not a config source. They are
150
+ authoring inputs interpolated into the bundle's targets, resources, and paths,
151
+ so reading one as a process setting resolves names the deployed App never sees.
152
+ Reference a variable from `config.env` to make it one.
151
153
 
152
154
  Bundle lookup is not coupled to AppKit installation or execution context. If
153
155
  earlier sources miss during local development, the configured working directory
@@ -362,9 +364,11 @@ packument `dependencies` map through HTTP GETs. `resolveVersion()` accepts a
362
364
  package name, `name@version` / `name@range`, a second specifier string, or
363
365
  `{ name, version?, range? }` (`semver` is an alias for `version`). An exact
364
366
  version that exists is unchanged, and a range is kept when a published version
365
- satisfies it. `resolveDependencies()` copies the record and pins unavailable
366
- registry packages (or their parents) until that graph is complete. No installer
367
- is invoked. Dependency maps may use raw strings or the same structured objects.
367
+ satisfies it.
368
+
369
+ `resolveDependencies()` copies the record and pins unavailable registry
370
+ packages, or their parents, until that graph is complete. No installer is
371
+ invoked. Dependency maps may use raw strings or the same structured objects.
368
372
  Each returned map entry is `{ name, version, range? }`. The input object is
369
373
  unchanged. Workspace, catalog, file, and git specifiers are left alone. Use
370
374
  this when a mirror or delayed proxy 404s versions that public npm already has.
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/core";
6
- export const PACKAGE_VERSION = "0.9.119";
6
+ export const PACKAGE_VERSION = "0.9.121";
7
7
  export * as bin from "./src/bin.ts";
8
8
  export * as brandFiles from "./src/brand-files.ts";
9
9
  export * as bundle from "./src/bundle.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/core";
2
- export declare const PACKAGE_VERSION = "0.9.119";
2
+ export declare const PACKAGE_VERSION = "0.9.121";
3
3
  export * as bin from "./src/bin.ts";
4
4
  export * as brandFiles from "./src/brand-files.ts";
5
5
  export * as bundle from "./src/bundle.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/core";
5
- export const PACKAGE_VERSION = "0.9.119";
5
+ export const PACKAGE_VERSION = "0.9.121";
6
6
  export * as bin from "./src/bin.js";
7
7
  export * as brandFiles from "./src/brand-files.js";
8
8
  export * as bundle from "./src/bundle.js";
@@ -16,4 +16,4 @@ export * as projectUtils from "./src/project-utils.js";
16
16
  export { BrandContextSchema, defaultBrandContext, parseBrandContext, brandContextJsonSchema, brandContextPrompt } from "./src/brand-files.js";
17
17
  export { MAX_TCP_PORT, ENV_ONLY, valueSchema, bundleResourceSchema, bundleEnvEntrySchema, bundleAppSchema, appEnvEntrySchema, appSchema, toNumber } from "./src/config-utils.js";
18
18
  export { COMMAND_NOT_FOUND_EXIT_CODE } from "./src/exec.js";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdqTCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMTlcIjtcbmV4cG9ydCAqIGFzIGJpbiBmcm9tIFwiLi9zcmMvYmluLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZEZpbGVzIGZyb20gXCIuL3NyYy9icmFuZC1maWxlcy50c1wiO1xuZXhwb3J0ICogYXMgYnVuZGxlIGZyb20gXCIuL3NyYy9idW5kbGUudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZ1V0aWxzIGZyb20gXCIuL3NyYy9jb25maWctdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGRlcGVuZGVuY3lSZXNvbHZlciBmcm9tIFwiLi9zcmMvZGVwZW5kZW5jeS1yZXNvbHZlci50c1wiO1xuZXhwb3J0ICogYXMgZXhlYyBmcm9tIFwiLi9zcmMvZXhlYy50c1wiO1xuZXhwb3J0ICogYXMgZmlsZSBmcm9tIFwiLi9zcmMvZmlsZS50c1wiO1xuZXhwb3J0ICogYXMgZmlsZUxvY2sgZnJvbSBcIi4vc3JjL2ZpbGUtbG9jay50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc0xvY2sgZnJvbSBcIi4vc3JjL3Byb2Nlc3MtbG9jay50c1wiO1xuZXhwb3J0ICogYXMgcHJvamVjdFV0aWxzIGZyb20gXCIuL3NyYy9wcm9qZWN0LXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJpbkNvbnRleHQsIEJpblNlbGVjdGlvbkNvbnRleHQsIEJpblNlbGVjdG9yLCBCaW5WZXJzaW9uT3V0cHV0LCBCaW5WZXJzaW9uUGFyc2VyLCBCaW5PcHRpb25zLCBCaW5QYWNrYWdlT3B0aW9ucywgQmluVXJsUmVzb2x2ZUNvbnRleHQsIEJpblNvdXJjZSwgQmluVXJsIH0gZnJvbSBcIi4vc3JjL2Jpbi50c1wiO1xuZXhwb3J0IHsgQnJhbmRDb250ZXh0U2NoZW1hLCBkZWZhdWx0QnJhbmRDb250ZXh0LCBwYXJzZUJyYW5kQ29udGV4dCwgYnJhbmRDb250ZXh0SnNvblNjaGVtYSwgYnJhbmRDb250ZXh0UHJvbXB0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLWZpbGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ29udGV4dCwgQnJhbmRDb250ZXh0SW5wdXQgfSBmcm9tIFwiLi9zcmMvYnJhbmQtZmlsZXMudHNcIjtcbmV4cG9ydCB7IE1BWF9UQ1BfUE9SVCwgRU5WX09OTFksIHZhbHVlU2NoZW1hLCBidW5kbGVSZXNvdXJjZVNjaGVtYSwgYnVuZGxlRW52RW50cnlTY2hlbWEsIGJ1bmRsZUFwcFNjaGVtYSwgYXBwRW52RW50cnlTY2hlbWEsIGFwcFNjaGVtYSwgdG9OdW1iZXIgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbmZpZ01hcFZhbHVlLCBDb25maWdEYXRhLCBDb25maWdTb3VyY2UsIENvbmZpZ09wdGlvbnMsIENvbmZpZ0ZpbGUgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERlcGVuZGVuY3lSZXNvbHZlck9wdGlvbnMsIERlcGVuZGVuY3lJbmZvLCBSZXNvbHZlZE5wbVZlcnNpb24sIE5wbVNwZWNpZmllcklucHV0LCBSZXNvbHZlZE5wbURlcGVuZGVuY2llcywgTWlzc2luZ0RlcGVuZGVuY3lJbmZvIH0gZnJvbSBcIi4vc3JjL2RlcGVuZGVuY3ktcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCB7IENPTU1BTkRfTk9UX0ZPVU5EX0VYSVRfQ09ERSB9IGZyb20gXCIuL3NyYy9leGVjLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWNTdGRpbywgTGluZUhhbmRsZXIsIExpbmVPdXRwdXRPcHRpb25zLCBTdGRpb09wdGlvbiwgRXhlY1Jlc3VsdCwgQ2hpbGRQcm9jZXNzUmVzdWx0LCBFeGVjT3B0aW9ucywgS2lsbE9wdGlvbnMsIFN5bmNFeGVjU3RkaW8sIFN5bmNFeGVjT3B0aW9ucywgU3Bhd25BcmdzIH0gZnJvbSBcIi4vc3JjL2V4ZWMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRmlsZUxvY2tCYWNrZW5kLCBGaWxlTG9ja0FjcXVpc2l0aW9uLCBGaWxlTG9ja09wdGlvbnMsIEZpbGVMb2NrTGVhc2UgfSBmcm9tIFwiLi9zcmMvZmlsZS1sb2NrLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByb2plY3RDb250ZXh0LCBQcm9qZWN0R2hSZW1vdGUsIFByb2plY3RHaEFjY291bnQsIFJlc29sdmVQcm9qZWN0R2hBY2NvdW50T3B0aW9ucywgTnBtUmVnaXN0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3Byb2plY3QtdXRpbHMudHNcIjtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdqTCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMjFcIjtcbmV4cG9ydCAqIGFzIGJpbiBmcm9tIFwiLi9zcmMvYmluLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZEZpbGVzIGZyb20gXCIuL3NyYy9icmFuZC1maWxlcy50c1wiO1xuZXhwb3J0ICogYXMgYnVuZGxlIGZyb20gXCIuL3NyYy9idW5kbGUudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZ1V0aWxzIGZyb20gXCIuL3NyYy9jb25maWctdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGRlcGVuZGVuY3lSZXNvbHZlciBmcm9tIFwiLi9zcmMvZGVwZW5kZW5jeS1yZXNvbHZlci50c1wiO1xuZXhwb3J0ICogYXMgZXhlYyBmcm9tIFwiLi9zcmMvZXhlYy50c1wiO1xuZXhwb3J0ICogYXMgZmlsZSBmcm9tIFwiLi9zcmMvZmlsZS50c1wiO1xuZXhwb3J0ICogYXMgZmlsZUxvY2sgZnJvbSBcIi4vc3JjL2ZpbGUtbG9jay50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc0xvY2sgZnJvbSBcIi4vc3JjL3Byb2Nlc3MtbG9jay50c1wiO1xuZXhwb3J0ICogYXMgcHJvamVjdFV0aWxzIGZyb20gXCIuL3NyYy9wcm9qZWN0LXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJpbkNvbnRleHQsIEJpblNlbGVjdGlvbkNvbnRleHQsIEJpblNlbGVjdG9yLCBCaW5WZXJzaW9uT3V0cHV0LCBCaW5WZXJzaW9uUGFyc2VyLCBCaW5PcHRpb25zLCBCaW5QYWNrYWdlT3B0aW9ucywgQmluVXJsUmVzb2x2ZUNvbnRleHQsIEJpblNvdXJjZSwgQmluVXJsIH0gZnJvbSBcIi4vc3JjL2Jpbi50c1wiO1xuZXhwb3J0IHsgQnJhbmRDb250ZXh0U2NoZW1hLCBkZWZhdWx0QnJhbmRDb250ZXh0LCBwYXJzZUJyYW5kQ29udGV4dCwgYnJhbmRDb250ZXh0SnNvblNjaGVtYSwgYnJhbmRDb250ZXh0UHJvbXB0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLWZpbGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ29udGV4dCwgQnJhbmRDb250ZXh0SW5wdXQgfSBmcm9tIFwiLi9zcmMvYnJhbmQtZmlsZXMudHNcIjtcbmV4cG9ydCB7IE1BWF9UQ1BfUE9SVCwgRU5WX09OTFksIHZhbHVlU2NoZW1hLCBidW5kbGVSZXNvdXJjZVNjaGVtYSwgYnVuZGxlRW52RW50cnlTY2hlbWEsIGJ1bmRsZUFwcFNjaGVtYSwgYXBwRW52RW50cnlTY2hlbWEsIGFwcFNjaGVtYSwgdG9OdW1iZXIgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbmZpZ01hcFZhbHVlLCBDb25maWdEYXRhLCBDb25maWdTb3VyY2UsIENvbmZpZ09wdGlvbnMsIENvbmZpZ0ZpbGUgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERlcGVuZGVuY3lSZXNvbHZlck9wdGlvbnMsIERlcGVuZGVuY3lJbmZvLCBSZXNvbHZlZE5wbVZlcnNpb24sIE5wbVNwZWNpZmllcklucHV0LCBSZXNvbHZlZE5wbURlcGVuZGVuY2llcywgTWlzc2luZ0RlcGVuZGVuY3lJbmZvIH0gZnJvbSBcIi4vc3JjL2RlcGVuZGVuY3ktcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCB7IENPTU1BTkRfTk9UX0ZPVU5EX0VYSVRfQ09ERSB9IGZyb20gXCIuL3NyYy9leGVjLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWNTdGRpbywgTGluZUhhbmRsZXIsIExpbmVPdXRwdXRPcHRpb25zLCBTdGRpb09wdGlvbiwgRXhlY1Jlc3VsdCwgQ2hpbGRQcm9jZXNzUmVzdWx0LCBFeGVjT3B0aW9ucywgS2lsbE9wdGlvbnMsIFN5bmNFeGVjU3RkaW8sIFN5bmNFeGVjT3B0aW9ucywgU3Bhd25BcmdzIH0gZnJvbSBcIi4vc3JjL2V4ZWMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRmlsZUxvY2tCYWNrZW5kLCBGaWxlTG9ja0FjcXVpc2l0aW9uLCBGaWxlTG9ja09wdGlvbnMsIEZpbGVMb2NrTGVhc2UgfSBmcm9tIFwiLi9zcmMvZmlsZS1sb2NrLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByb2plY3RDb250ZXh0LCBQcm9qZWN0R2hSZW1vdGUsIFByb2plY3RHaEFjY291bnQsIFJlc29sdmVQcm9qZWN0R2hBY2NvdW50T3B0aW9ucywgTnBtUmVnaXN0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3Byb2plY3QtdXRpbHMudHNcIjtcbiJdfQ==
package/lib/src/bin.js CHANGED
@@ -149,7 +149,7 @@ async function isValidBin(path, options) {
149
149
  catch (cause) {
150
150
  logger.debug("binary version command failed", {
151
151
  path,
152
- error: errorUtils.errorMessage(cause),
152
+ error: errorUtils.toError(cause),
153
153
  });
154
154
  return false;
155
155
  }
@@ -428,4 +428,4 @@ export async function ensure(name, url, options = {}) {
428
428
  }
429
429
  });
430
430
  }
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFFBQVEsRUFDUixLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLEVBQ04sRUFBRSxFQUNGLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxLQUFLLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWUsTUFBTSxRQUFRLENBQUM7QUFDbEQsT0FBTyxFQUFFLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFD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QUFXLENBQUMsSUFBSTthQUNyQixDQUFDLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLE1BQU07Z0JBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnN0YWxsIGFuZCByZXVzZSBleGVjdXRhYmxlIGJpbmFyaWVzIHVuZGVyIGEgcGVyLXRvb2wgaG9tZSBkaXJlY3RvcnkuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2gsIHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7XG4gIGNobW9kLFxuICBjcCxcbiAgY29weUZpbGUsXG4gIG1rZGlyLFxuICBta2R0ZW1wLFxuICByZWFkZGlyLFxuICByZW5hbWUsXG4gIHJtLFxuICBzdGF0LFxuICB3cml0ZUZpbGUsXG59IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBob21lZGlyLCB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUsIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCJub2RlOnV0aWxcIjtcblxuaW1wb3J0ICogYXMgZXJyb3JVdGlscyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9lcnJvci11dGlsc1wiO1xuaW1wb3J0ICogYXMgbG9nIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2xvZ1wiO1xuaW1wb3J0IGV4dHJhY3RaaXAgZnJvbSBcImV4dHJhY3QtemlwXCI7XG5pbXBvcnQgeyBjb2VyY2UsIGd0ZSwgdHlwZSBTZW1WZXIgfSBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyB4IGFzIGV4dHJhY3RUYXIgfSBmcm9tIFwidGFyXCI7XG5cbmltcG9ydCB7IHdpdGhGaWxlTG9jayB9IGZyb20gXCIuL2ZpbGUtbG9jay50c1wiO1xuXG5jb25zdCBleGVjRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGV4ZWNGaWxlKTtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJjb3JlOmJpblwiKTtcblxuaW50ZXJmYWNlIFBhcnNlZFZlcnNpb24ge1xuICByYXc6IHN0cmluZztcbiAgcGFydHM6IG51bWJlcltdO1xufVxuXG5pbnRlcmZhY2UgQmluQWNjZXNzQ29udGV4dCB7XG4gIGZpbGU6IGJvb2xlYW47XG4gIGV4ZWN1dGFibGU6IGJvb2xlYW47XG59XG5cbi8qKiBTdGFibGUgcGF0aHMgZm9yIGFuIGluc3RhbGxlZCBiaW5hcnkuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbkNvbnRleHQge1xuICByb290OiBzdHJpbmc7XG4gIGJpbkRpcjogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKiBUZW1wb3JhcnkgZG93bmxvYWQgYW5kIGV4dHJhY3Rpb24gcGF0aHMgc3VwcGxpZWQgdG8gYSBjdXN0b20gc2VsZWN0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpblNlbGVjdGlvbkNvbnRleHQge1xuICBkZXN0aW5hdGlvbjogQmluQ29udGV4dDtcbiAgZG93bmxvYWRQYXRoOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgZXhlY3V0YWJsZSBmcm9tIGEgZG93bmxvYWQgb3IgdW5wYWNrZWQgYXJjaGl2ZS4gQSBzZWxlY3RvciBtYXlcbiAqIGFsc28gcHJlcGFyZSB0aGUgZmlsZSwgc3VjaCBhcyBhcHBseWluZyBpdHMgZXhlY3V0YWJsZSBtb2RlLlxuICovXG5leHBvcnQgdHlwZSBCaW5TZWxlY3RvciA9IChjb250ZXh0OiBCaW5TZWxlY3Rpb25Db250ZXh0KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbi8qKiBDYXB0dXJlZCBvdXRwdXQgcGFzc2VkIHRvIGEgY3VzdG9tIGJpbmFyeSB2ZXJzaW9uIHBhcnNlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluVmVyc2lvbk91dHB1dCB7XG4gIHN0ZG91dDogc3RyaW5nO1xuICBzdGRlcnI6IHN0cmluZztcbn1cblxuLyoqIEV4dHJhY3QgYSB2ZXJzaW9uIHN0cmluZyBmcm9tIGEgc3VjY2Vzc2Z1bCB2ZXJzaW9uLWNvbW1hbmQgcmVzdWx0LiAqL1xuZXhwb3J0IHR5cGUgQmluVmVyc2lvblBhcnNlciA9IChvdXRwdXQ6IEJpblZlcnNpb25PdXRwdXQpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBlbnN1cmV9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5PcHRpb25zIHtcbiAgYXV0b1VucGFja2FnZT86IGJvb2xlYW47XG4gIC8qKiBQcmVzZXJ2ZSBhbiB1bnBhY2tlZCBtdWx0aS1maWxlIHBhY2thZ2Ugcm9vdGVkIGF0IHtAbGluayBCaW5Db250ZXh0LnJvb3R9LiAqL1xuICBwYWNrYWdlPzogQmluUGFja2FnZU9wdGlvbnM7XG4gIHNlbGVjdG9yPzogQmluU2VsZWN0b3I7XG4gIGhvbWVEaXI/OiBzdHJpbmc7XG4gIC8qKiBFeGFjdCBpbnN0YWxsYXRpb24gcGF0aHMuIE9taXNzaW9uIGtlZXBzIGAkSE9NRS8uPG5hbWU+L2Jpbi88bmFtZT5gLiAqL1xuICBkZXN0aW5hdGlvbj86IEJpbkNvbnRleHQ7XG4gIC8qKiBNaW5pbXVtIGFjY2VwdGVkIG51bWVyaWMgdmVyc2lvbiwgd2l0aCBvbmUgdG8gdGhyZWUgY29tcG9uZW50cy4gKi9cbiAgbWluVmVyc2lvbj86IHN0cmluZztcbiAgLyoqIEFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYmluYXJ5IGZvciB2ZXJzaW9uIGRldGVjdGlvbi4gRGVmYXVsdHMgdG8gYC0tdmVyc2lvbmAuICovXG4gIHZlcnNpb25Bcmd1bWVudD86IHN0cmluZztcbiAgLyoqIFZlcnNpb24gb3V0cHV0IHBhcnNlci4gRGVmYXVsdHMgdG8ge0BsaW5rIHBhcnNlVmVyc2lvbn0uICovXG4gIHZlcnNpb25QYXJzZXI/OiBCaW5WZXJzaW9uUGFyc2VyO1xuICAvKiogU2tpcCBgLS12ZXJzaW9uYCBhbmQgdHJlYXQgYW4gZXhlY3V0YWJsZSBmaWxlIGFzIGFjY2VwdGFibGUuICovXG4gIHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuICAvKiogUmVpbnN0YWxsIGV2ZW4gd2hlbiB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBwYXNzZXMgdmFsaWRhdGlvbi4gKi9cbiAgZm9yY2U/OiBib29sZWFuO1xufVxuXG4vKiogTXVsdGktZmlsZSBhcmNoaXZlIGxheW91dCByZXRhaW5lZCBiZXNpZGUgaXRzIGV4ZWN1dGFibGUgZW50cnlwb2ludC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluUGFja2FnZU9wdGlvbnMge1xuICAvKiogRXhlY3V0YWJsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB1bnBhY2tlZCBwYWNrYWdlIHJvb3QuICovXG4gIGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgLyoqIENvbXBhbmlvbiBmaWxlcyBvciBkaXJlY3RvcmllcyByZXF1aXJlZCBiZWZvcmUgYW4gaW5zdGFsbGF0aW9uIGNhbiBiZSByZXVzZWQuICovXG4gIHJlcXVpcmVkUGF0aHM/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqIFRlbXBvcmFyeSBkaXJlY3RvcnkgY3JlYXRlZCBmb3Igb25lIGBlbnN1cmVgIGF0dGVtcHQgYWZ0ZXIgdGhlIGluc3RhbGwgbG9jay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluVXJsUmVzb2x2ZUNvbnRleHQge1xuICByZWFkb25seSB0ZW1wRGlyOiBzdHJpbmc7XG59XG5cbi8qKiBEb3dubG9hZCBzb3VyY2UgcmVzb2x2ZWQgb25seSB3aGVuIHRoZSBleGVjdXRhYmxlIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluU291cmNlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHNoYTI1Nj86IHN0cmluZztcbn1cblxuLyoqIEEgZG93bmxvYWQgc291cmNlIHJlc29sdmVkIG9ubHkgd2hlbiB0aGUgZXhlY3V0YWJsZSBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQuICovXG5leHBvcnQgdHlwZSBCaW5VcmwgPVxuICB8IHN0cmluZ1xuICB8IEJpblNvdXJjZVxuICB8ICgoY29udGV4dDogQmluVXJsUmVzb2x2ZUNvbnRleHQpID0+IHN0cmluZyB8IEJpblNvdXJjZSB8IFByb21pc2U8c3RyaW5nIHwgQmluU291cmNlPik7XG5cbmZ1bmN0aW9uIGNvbnRleHQobmFtZTogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcsIGRlc3RpbmF0aW9uPzogQmluQ29udGV4dCk6IEJpbkNvbnRleHQge1xuICBpZiAoIW5hbWUgfHwgYmFzZW5hbWUobmFtZSkgIT09IG5hbWUgfHwgbmFtZSA9PT0gXCIuXCIgfHwgbmFtZSA9PT0gXCIuLlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBiaW5hcnkgbmFtZTogJHtuYW1lfWApO1xuICB9XG4gIGlmIChkZXN0aW5hdGlvbikgcmV0dXJuIGRlc3RpbmF0aW9uO1xuICBjb25zdCByb290ID0gam9pbihob21lRGlyLCBgLiR7bmFtZX1gKTtcbiAgY29uc3QgYmluRGlyID0gam9pbihyb290LCBcImJpblwiKTtcbiAgcmV0dXJuIHsgcm9vdCwgYmluRGlyLCBwYXRoOiBqb2luKGJpbkRpciwgbmFtZSkgfTtcbn1cblxuZnVuY3Rpb24gcGFja2FnZVBhdGgocm9vdDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXBhdGggfHwgaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgYmluYXJ5IHBhY2thZ2UgcGF0aDogJHtwYXRofWApO1xuICB9XG4gIGNvbnN0IHBhY2thZ2VSb290ID0gcmVzb2x2ZShyb290KTtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKHBhY2thZ2VSb290LCBwYXRoKTtcbiAgaWYgKHJlc29sdmVkID09PSBwYWNrYWdlUm9vdCB8fCAhcmVzb2x2ZWQuc3RhcnRzV2l0aChgJHtwYWNrYWdlUm9vdH0ke3NlcH1gKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGJpbmFyeSBwYWNrYWdlIHBhdGggZXNjYXBlcyBpdHMgcm9vdDogJHtwYXRofWApO1xuICB9XG4gIHJldHVybiByZXNvbHZlZDtcbn1cblxuZnVuY3Rpb24gcGFja2FnZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9uOiBCaW5Db250ZXh0LCBvcHRpb25zOiBCaW5PcHRpb25zKTogdm9pZCB7XG4gIGlmICghb3B0aW9ucy5wYWNrYWdlKSByZXR1cm47XG4gIGNvbnN0IGVudHJ5cG9pbnQgPSBwYWNrYWdlUGF0aChkZXN0aW5hdGlvbi5yb290LCBvcHRpb25zLnBhY2thZ2UuZW50cnlwb2ludCk7XG4gIGlmIChyZXNvbHZlKGRlc3RpbmF0aW9uLnBhdGgpICE9PSBlbnRyeXBvaW50KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImJpbmFyeSBwYWNrYWdlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBtYXRjaCBpdHMgZW50cnlwb2ludFwiKTtcbiAgfVxuICBmb3IgKGNvbnN0IHBhdGggb2Ygb3B0aW9ucy5wYWNrYWdlLnJlcXVpcmVkUGF0aHMgPz8gW10pIHtcbiAgICBwYWNrYWdlUGF0aChkZXN0aW5hdGlvbi5yb290LCBwYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaXNwbGF5VXJsKHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJhdyk7XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJkYXRhOlwiKSByZXR1cm4gXCJkYXRhOlwiO1xuICAgIHVybC51c2VybmFtZSA9IFwiXCI7XG4gICAgdXJsLnBhc3N3b3JkID0gXCJcIjtcbiAgICB1cmwuc2VhcmNoID0gXCJcIjtcbiAgICB1cmwuaGFzaCA9IFwiXCI7XG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFjY2Vzc0NvbnRleHQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxCaW5BY2Nlc3NDb250ZXh0PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBzdGF0KHBhdGgpO1xuICAgIGNvbnN0IGZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZSxcbiAgICAgIGV4ZWN1dGFibGU6IGZpbGUgJiYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIiB8fCAoZW50cnkubW9kZSAmIDBvMTExKSAhPT0gMCksXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgZmlsZTogZmFsc2UsIGV4ZWN1dGFibGU6IGZhbHNlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGV0ZWN0ZWRWZXJzaW9ucyhvdXRwdXQ6IHN0cmluZyk6IFBhcnNlZFZlcnNpb25bXSB7XG4gIGNvbnN0IHZlcnNpb25zOiBQYXJzZWRWZXJzaW9uW10gPSBbXTtcbiAgY29uc3QgcGF0dGVybiA9IC9cXGJ2PyhcXGQrKD86XFwuXFxkKyl7MCwyfSkoPzpbLSsuX10/W2Etel1bMC05YS16LitfLV0qKT8vZ2k7XG4gIGZvciAoY29uc3QgbWF0Y2ggb2Ygb3V0cHV0Lm1hdGNoQWxsKHBhdHRlcm4pKSB7XG4gICAgY29uc3QgcmF3ID0gbWF0Y2hbMF0ucmVwbGFjZSgvXnYvaSwgXCJcIik7XG4gICAgY29uc3QgcGFydHMgPSBtYXRjaFsxXT8uc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgIGlmIChwYXJ0cz8uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkgdmVyc2lvbnMucHVzaCh7IHJhdywgcGFydHMgfSk7XG4gIH1cbiAgcmV0dXJuIHZlcnNpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoYS5wYXJ0cy5sZW5ndGggIT09IGIucGFydHMubGVuZ3RoKSByZXR1cm4gYi5wYXJ0cy5sZW5ndGggLSBhLnBhcnRzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5wYXJ0cy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGNvbnN0IG9yZGVyID0gKGIucGFydHNbaW5kZXhdID8/IDApIC0gKGEucGFydHNbaW5kZXhdID8/IDApO1xuICAgICAgaWYgKG9yZGVyICE9PSAwKSByZXR1cm4gb3JkZXI7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgZGVlcGVzdCwgaGlnaGVzdCB2ZXJzaW9uIGZyb20gc3Rkb3V0LCBmYWxsaW5nIGJhY2sgdG8gc3RkZXJyIG9ubHlcbiAqIHdoZW4gc3Rkb3V0IGNvbnRhaW5zIG5vIHZlcnNpb24uIFN1cHBvcnRzIG9uZSB0byB0aHJlZSBudW1lcmljIGNvbXBvbmVudHNcbiAqIGFuZCBjb21tb24gc3VmZml4ZXMgc3VjaCBhcyBgcmMxYCwgYC5wb3N0MWAsIGFuZCBgLWRldi4yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih7IHN0ZG91dCwgc3RkZXJyIH06IEJpblZlcnNpb25PdXRwdXQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGV0ZWN0ZWRWZXJzaW9ucyhzdGRvdXQpLmF0KDApPy5yYXcgPz8gZGV0ZWN0ZWRWZXJzaW9ucyhzdGRlcnIpLmF0KDApPy5yYXc7XG59XG5cbmZ1bmN0aW9uIG1pbmltdW1TZW1WZXIodmVyc2lvbjogc3RyaW5nKTogU2VtVmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCEvXlxccyp2P1xcZCsoPzpcXC5cXGQrKXswLDJ9XFxzKiQvaS50ZXN0KHZlcnNpb24pKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gY29lcmNlKHZlcnNpb24sIHsgbG9vc2U6IHRydWUgfSkgPz8gdW5kZWZpbmVkO1xufVxuXG4vKiogQ29tcGFyZSBhIGRldGVjdGVkIHRvb2wgdmVyc2lvbiBhZ2FpbnN0IGEgb25lLXRvLXRocmVlLWNvbXBvbmVudCBtaW5pbXVtLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmVyc2lvbkF0TGVhc3QodmVyc2lvbjogc3RyaW5nLCBtaW5WZXJzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbWluaW11bSA9IG1pbmltdW1TZW1WZXIobWluVmVyc2lvbik7XG4gIGlmICghbWluaW11bSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgbWluaW11bSBiaW5hcnkgdmVyc2lvbjogJHttaW5WZXJzaW9ufWApO1xuICB9XG4gIGNvbnN0IGFjdHVhbCA9IGNvZXJjZSh2ZXJzaW9uLCB7IGxvb3NlOiB0cnVlIH0pO1xuICBpZiAoIWFjdHVhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZ3RlKGFjdHVhbCwgbWluaW11bSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRCaW4ocGF0aDogc3RyaW5nLCBvcHRpb25zOiBCaW5PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcImNoZWNraW5nIGJpbmFyeVwiLCB7XG4gICAgcGF0aCxcbiAgICBtaW5WZXJzaW9uOiBvcHRpb25zLm1pblZlcnNpb24sXG4gICAgdmVyc2lvbkFyZ3VtZW50OiBvcHRpb25zLnZlcnNpb25Bcmd1bWVudCA/PyBcIi0tdmVyc2lvblwiLFxuICB9KTtcbiAgY29uc3QgYWNjZXNzID0gYXdhaXQgYWNjZXNzQ29udGV4dChwYXRoKTtcbiAgaWYgKCFhY2Nlc3MuZmlsZSB8fCAhYWNjZXNzLmV4ZWN1dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJiaW5hcnkgYWNjZXNzIGNoZWNrIGZhaWxlZFwiLCB7IHBhdGgsIC4uLmFjY2VzcyB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuc2tpcFZlcnNpb25DaGVjaykge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImJpbmFyeSB2ZXJzaW9uIGNoZWNrIHNraXBwZWRcIiwgeyBwYXRoIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCBzdGRvdXQ6IHN0cmluZztcbiAgbGV0IHN0ZGVycjogc3RyaW5nO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNGaWxlQXN5bmMocGF0aCwgW29wdGlvbnMudmVyc2lvbkFyZ3VtZW50ID8/IFwiLS12ZXJzaW9uXCJdLCB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSk7XG4gICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dDtcbiAgICBzdGRlcnIgPSByZXN1bHQuc3RkZXJyO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImJpbmFyeSB2ZXJzaW9uIGNvbW1hbmQgZmFpbGVkXCIsIHtcbiAgICAgIHBhdGgsXG4gICAgICBlcnJvcjogZXJyb3JVdGlscy5lcnJvck1lc3NhZ2UoY2F1c2UpLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB2ZXJzaW9uID0gKG9wdGlvbnMudmVyc2lvblBhcnNlciA/PyBwYXJzZVZlcnNpb24pKHtcbiAgICBzdGRvdXQsXG4gICAgc3RkZXJyLFxuICB9KTtcbiAgY29uc3QgdmFsaWQgPVxuICAgIHZlcnNpb24gIT09IHVuZGVmaW5lZCAmJlxuICAgIChvcHRpb25zLm1pblZlcnNpb24gPT09IHVuZGVmaW5lZCB8fCBpc1ZlcnNpb25BdExlYXN0KHZlcnNpb24sIG9wdGlvbnMubWluVmVyc2lvbikpO1xuICBsb2dnZXIuZGVidWcoXCJiaW5hcnkgdmVyc2lvbiBjaGVja2VkXCIsIHtcbiAgICBwYXRoLFxuICAgIHZlcnNpb24sXG4gICAgbWluVmVyc2lvbjogb3B0aW9ucy5taW5WZXJzaW9uLFxuICAgIHZhbGlkLFxuICB9KTtcbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXRoRXhpc3RzKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGF3YWl0IHN0YXQocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkSW5zdGFsbChkZXN0aW5hdGlvbjogQmluQ29udGV4dCwgb3B0aW9uczogQmluT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIShhd2FpdCBpc1ZhbGlkQmluKGRlc3RpbmF0aW9uLnBhdGgsIG9wdGlvbnMpKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIW9wdGlvbnMucGFja2FnZSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHJlcXVpcmVkID0gW29wdGlvbnMucGFja2FnZS5lbnRyeXBvaW50LCAuLi4ob3B0aW9ucy5wYWNrYWdlLnJlcXVpcmVkUGF0aHMgPz8gW10pXTtcbiAgY29uc3QgYXZhaWxhYmxlID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcmVxdWlyZWQubWFwKChwYXRoKSA9PiBwYXRoRXhpc3RzKHBhY2thZ2VQYXRoKGRlc3RpbmF0aW9uLnJvb3QsIHBhdGgpKSksXG4gICk7XG4gIHJldHVybiBhdmFpbGFibGUuZXZlcnkoQm9vbGVhbik7XG59XG5cbmZ1bmN0aW9uIGRvd25sb2FkTmFtZSh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBiYXNlbmFtZShkZWNvZGVVUklDb21wb25lbnQobmV3IFVSTCh1cmwpLnBhdGhuYW1lKSk7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZSAmJiBCdWZmZXIuYnl0ZUxlbmd0aChjYW5kaWRhdGUpIDw9IDIwMCA/IGNhbmRpZGF0ZSA6IG5hbWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBuYW1lO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVucGFjayhhcmNoaXZlOiBzdHJpbmcsIGRlc3RpbmF0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZW5hbWUgPSBhcmNoaXZlLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChmaWxlbmFtZS5lbmRzV2l0aChcIi56aXBcIikpIHtcbiAgICBhd2FpdCBleHRyYWN0WmlwKGFyY2hpdmUsIHsgZGlyOiBkZXN0aW5hdGlvbiB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKFwiLnRhclwiKSB8fCBmaWxlbmFtZS5lbmRzV2l0aChcIi50YXIuZ3pcIikgfHwgZmlsZW5hbWUuZW5kc1dpdGgoXCIudGd6XCIpKSB7XG4gICAgYXdhaXQgZXh0cmFjdFRhcih7IGZpbGU6IGFyY2hpdmUsIGN3ZDogZGVzdGluYXRpb24gfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgYmluYXJ5IGFyY2hpdmU6ICR7YmFzZW5hbWUoYXJjaGl2ZSl9YCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGVzVW5kZXIocm9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihyb290LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBwYXRoID0gam9pbihyb290LCBlbnRyeS5uYW1lKTtcbiAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgZmlsZXMucHVzaCguLi4oYXdhaXQgZmlsZXNVbmRlcihwYXRoKSkpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGZpbGVzLnB1c2gocGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0U2luZ2xlRmlsZShzb3VyY2U6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgZmlsZXNVbmRlcihzb3VyY2UpO1xuICBjb25zdCBzZWxlY3RlZCA9IGZpbGVzLmF0KDApO1xuICBpZiAoZmlsZXMubGVuZ3RoICE9PSAxIHx8ICFzZWxlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgYmluYXJ5IGFyY2hpdmUgbXVzdCBjb250YWluIG9uZSBmaWxlLCBmb3VuZCAke2ZpbGVzLmxlbmd0aH1gKTtcbiAgfVxuICByZXR1cm4gc2VsZWN0ZWQ7XG59XG5cbmZ1bmN0aW9uIGZpbGVVcmxQYXRoKHVybDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKHVybCk7XG4gICAgaWYgKHBhcnNlZC5wcm90b2NvbCAhPT0gXCJmaWxlOlwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBmaWxlVVJMVG9QYXRoKHBhcnNlZCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNlbGVjdGVkQmluIHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYWNrYWdlUm9vdD86IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0ZWRCaW4oXG4gIGRlc3RpbmF0aW9uOiBCaW5Db250ZXh0LFxuICBzb3VyY2U6IEJpblNvdXJjZSxcbiAgdGVtcDogc3RyaW5nLFxuICBvcHRpb25zOiBCaW5PcHRpb25zLFxuKTogUHJvbWlzZTxTZWxlY3RlZEJpbj4ge1xuICBjb25zdCB7IHVybCB9ID0gc291cmNlO1xuICBjb25zdCBsb2NhbFBhdGggPSBmaWxlVXJsUGF0aCh1cmwpO1xuICBsZXQgZG93bmxvYWRQYXRoOiBzdHJpbmc7XG4gIGlmIChsb2NhbFBhdGgpIHtcbiAgICBjb25zdCBhY2Nlc3MgPSBhd2FpdCBhY2Nlc3NDb250ZXh0KGxvY2FsUGF0aCk7XG4gICAgaWYgKCFhY2Nlc3MuZmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBiaW5hcnkgZmlsZSBVUkwgZG9lcyBub3QgZXhpc3Q6ICR7ZGlzcGxheVVybCh1cmwpfWApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoXCJ1c2luZyBsb2NhbCBiaW5hcnlcIiwgeyBmcm9tOiBkaXNwbGF5VXJsKHVybCksIHBhdGg6IGxvY2FsUGF0aCB9KTtcbiAgICBkb3dubG9hZFBhdGggPSBsb2NhbFBhdGg7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbmFtZSA9IGRvd25sb2FkTmFtZSh1cmwsIGJhc2VuYW1lKGRlc3RpbmF0aW9uLnBhdGgpKTtcbiAgICBkb3dubG9hZFBhdGggPSBqb2luKHRlbXAsIG5hbWUpO1xuICAgIGNvbnN0IGRvd25sb2FkID0ge1xuICAgICAgZnJvbTogZGlzcGxheVVybCh1cmwpLFxuICAgICAgdG86IGRvd25sb2FkUGF0aCxcbiAgICB9O1xuICAgIGlmIChkb3dubG9hZC5mcm9tID09PSBcImRhdGE6XCIpIGxvZ2dlci5kZWJ1ZyhcImRvd25sb2FkaW5nIGJpbmFyeVwiLCBkb3dubG9hZCk7XG4gICAgZWxzZSBsb2dnZXIuaW5mbyhcImRvd25sb2FkaW5nIGJpbmFyeVwiLCBkb3dubG9hZCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYmluYXJ5IGRvd25sb2FkIGZhaWxlZCAoJHtyZXNwb25zZS5zdGF0dXN9KWApO1xuICAgIH1cbiAgICBjb25zdCBkb3dubG9hZGVkID0gQnVmZmVyLmZyb20oYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKSk7XG4gICAgaWYgKHNvdXJjZS5zaGEyNTYpIHtcbiAgICAgIGlmICghL15bMC05YS1mXXs2NH0kL2kudGVzdChzb3VyY2Uuc2hhMjU2KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiYmluYXJ5IGRvd25sb2FkIFNIQS0yNTYgZGlnZXN0IG11c3QgY29udGFpbiA2NCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBhY3R1YWwgPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShkb3dubG9hZGVkKS5kaWdlc3QoXCJoZXhcIik7XG4gICAgICBpZiAoYWN0dWFsLnRvTG93ZXJDYXNlKCkgIT09IHNvdXJjZS5zaGEyNTYudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJpbmFyeSBkb3dubG9hZCBkaWdlc3QgbWlzbWF0Y2g6ICR7ZGlzcGxheVVybCh1cmwpfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCB3cml0ZUZpbGUoZG93bmxvYWRQYXRoLCBkb3dubG9hZGVkLCB7IG1vZGU6IDBvNzU1IH0pO1xuICB9XG5cbiAgbGV0IHNlbGVjdGVkU291cmNlID0gZG93bmxvYWRQYXRoO1xuICBsZXQgdW5wYWNrZWQgPSBmYWxzZTtcbiAgaWYgKG9wdGlvbnMucGFja2FnZSB8fCAob3B0aW9ucy5hdXRvVW5wYWNrYWdlICYmICFsb2NhbFBhdGgpKSB7XG4gICAgc2VsZWN0ZWRTb3VyY2UgPSBqb2luKHRlbXAsIGB1bnBhY2tlZC0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICBhd2FpdCBta2RpcihzZWxlY3RlZFNvdXJjZSk7XG4gICAgbG9nZ2VyLmluZm8oXCJ1bnBhY2tpbmcgYmluYXJ5IGFyY2hpdmVcIiwge1xuICAgICAgYXJjaGl2ZTogZG93bmxvYWRQYXRoLFxuICAgICAgdG86IHNlbGVjdGVkU291cmNlLFxuICAgIH0pO1xuICAgIGF3YWl0IHVucGFjayhkb3dubG9hZFBhdGgsIHNlbGVjdGVkU291cmNlKTtcbiAgICB1bnBhY2tlZCA9IHRydWU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zZWxlY3Rvcikge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgb3B0aW9ucy5zZWxlY3Rvcih7XG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIGRvd25sb2FkUGF0aCxcbiAgICAgIHNvdXJjZTogc2VsZWN0ZWRTb3VyY2UsXG4gICAgfSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwic2VsZWN0ZWQgYmluYXJ5XCIsIHsgcGF0aDogc2VsZWN0ZWQgfSk7XG4gICAgcmV0dXJuIHsgcGF0aDogc2VsZWN0ZWQsIC4uLihvcHRpb25zLnBhY2thZ2UgPyB7IHBhY2thZ2VSb290OiBzZWxlY3RlZFNvdXJjZSB9IDoge30pIH07XG4gIH1cbiAgaWYgKG9wdGlvbnMucGFja2FnZSkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gcGFja2FnZVBhdGgoc2VsZWN0ZWRTb3VyY2UsIG9wdGlvbnMucGFja2FnZS5lbnRyeXBvaW50KTtcbiAgICBsb2dnZXIuZGVidWcoXCJzZWxlY3RlZCBiaW5hcnkgcGFja2FnZSBlbnRyeXBvaW50XCIsIHsgcGF0aDogc2VsZWN0ZWQgfSk7XG4gICAgcmV0dXJuIHsgcGF0aDogc2VsZWN0ZWQsIHBhY2thZ2VSb290OiBzZWxlY3RlZFNvdXJjZSB9O1xuICB9XG4gIGNvbnN0IHNlbGVjdGVkID0gdW5wYWNrZWQgPyBhd2FpdCBzZWxlY3RTaW5nbGVGaWxlKHNlbGVjdGVkU291cmNlKSA6IHNlbGVjdGVkU291cmNlO1xuICBsb2dnZXIuZGVidWcoXCJzZWxlY3RlZCBiaW5hcnlcIiwgeyBwYXRoOiBzZWxlY3RlZCB9KTtcbiAgcmV0dXJuIHsgcGF0aDogc2VsZWN0ZWQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBhY2thZ2UoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBkZXN0aW5hdGlvbjogQmluQ29udGV4dCxcbiAgb3B0aW9uczogQmluT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIW9wdGlvbnMucGFja2FnZSkgdGhyb3cgbmV3IEVycm9yKFwiYmluYXJ5IHBhY2thZ2Ugb3B0aW9ucyBhcmUgcmVxdWlyZWRcIik7XG4gIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGVzdGluYXRpb24ucm9vdCk7XG4gIGNvbnN0IG5hbWUgPSBiYXNlbmFtZShkZXN0aW5hdGlvbi5yb290KTtcbiAgY29uc3Qgc3RhZ2VkUm9vdCA9IGpvaW4ocGFyZW50LCBgLiR7bmFtZX0tc3RhZ2VkLSR7cmFuZG9tVVVJRCgpfWApO1xuICBjb25zdCBiYWNrdXBSb290ID0gam9pbihwYXJlbnQsIGAuJHtuYW1lfS1iYWNrdXAtJHtyYW5kb21VVUlEKCl9YCk7XG4gIGF3YWl0IG1rZGlyKHBhcmVudCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGxvZ2dlci5pbmZvKFwic3RhZ2luZyBiaW5hcnkgcGFja2FnZVwiLCB7XG4gICAgZnJvbTogc291cmNlLFxuICAgIHRvOiBkZXN0aW5hdGlvbi5yb290LFxuICB9KTtcbiAgYXdhaXQgY3Aoc291cmNlLCBzdGFnZWRSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3Qgc3RhZ2VkUGF0aCA9IHBhY2thZ2VQYXRoKHN0YWdlZFJvb3QsIG9wdGlvbnMucGFja2FnZS5lbnRyeXBvaW50KTtcbiAgYXdhaXQgY2htb2Qoc3RhZ2VkUGF0aCwgMG83NTUpO1xuICBjb25zdCBzdGFnZWQ6IEJpbkNvbnRleHQgPSB7XG4gICAgcm9vdDogc3RhZ2VkUm9vdCxcbiAgICBiaW5EaXI6IGRpcm5hbWUoc3RhZ2VkUGF0aCksXG4gICAgcGF0aDogc3RhZ2VkUGF0aCxcbiAgfTtcbiAgaWYgKCEoYXdhaXQgaXNWYWxpZEluc3RhbGwoc3RhZ2VkLCBvcHRpb25zKSkpIHtcbiAgICBhd2FpdCBybShzdGFnZWRSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzZWxlY3RlZCBiaW5hcnkgcGFja2FnZSBpcyBpbnZhbGlkOiAke3NvdXJjZX1gKTtcbiAgfVxuXG4gIGxldCBiYWNrZWRVcCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGRlc3RpbmF0aW9uLnJvb3QpKSB7XG4gICAgICBhd2FpdCByZW5hbWUoZGVzdGluYXRpb24ucm9vdCwgYmFja3VwUm9vdCk7XG4gICAgICBiYWNrZWRVcCA9IHRydWU7XG4gICAgfVxuICAgIGF3YWl0IHJlbmFtZShzdGFnZWRSb290LCBkZXN0aW5hdGlvbi5yb290KTtcbiAgICBpZiAoIShhd2FpdCBpc1ZhbGlkSW5zdGFsbChkZXN0aW5hdGlvbiwgb3B0aW9ucykpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluc3RhbGxlZCBiaW5hcnkgcGFja2FnZSBpcyBpbnZhbGlkIGFmdGVyIHJlbmFtZTogJHtkZXN0aW5hdGlvbi5yb290fWApO1xuICAgIH1cbiAgICBpZiAoYmFja2VkVXApIGF3YWl0IHJtKGJhY2t1cFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhd2FpdCBybShkZXN0aW5hdGlvbi5yb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgaWYgKGJhY2tlZFVwKSBhd2FpdCByZW5hbWUoYmFja3VwUm9vdCwgZGVzdGluYXRpb24ucm9vdCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcm0oc3RhZ2VkUm9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIGFuIGV4aXN0aW5nIGV4ZWN1dGFibGUgb3IgaW5zdGFsbCBpdCBhdG9taWNhbGx5IHVuZGVyXG4gKiBgJEhPTUUvLjxuYW1lPi9iaW4vPG5hbWU+YC4gTXVsdGktZmlsZSBwYWNrYWdlIG1vZGUgYXRvbWljYWxseSBwcmVzZXJ2ZXMgdGhlXG4gKiB1bnBhY2tlZCBwYWNrYWdlIGF0IGFuIGV4cGxpY2l0IGRlc3RpbmF0aW9uIHJvb3QuIEluc3RhbGxhdGlvbiB1c2VzIGFcbiAqIGNoZWNrLWxvY2stY2hlY2stbG9hZCBzZXF1ZW5jZSBzbyBjb25jdXJyZW50IGNhbGxlcnMgcmVzb2x2ZSBhbmQgZG93bmxvYWRcbiAqIG9ubHkgb25jZS4gQ2FuZGlkYXRlcyBhbmQgZmluYWwgZGVzdGluYXRpb25zIG11c3QgcGFzcyB0aGUgc2FtZSBjaGVja3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmUoXG4gIG5hbWU6IHN0cmluZyxcbiAgdXJsOiBCaW5VcmwsXG4gIG9wdGlvbnM6IEJpbk9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8QmluQ29udGV4dD4ge1xuICBpZiAob3B0aW9ucy5taW5WZXJzaW9uICYmICFtaW5pbXVtU2VtVmVyKG9wdGlvbnMubWluVmVyc2lvbikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkIG1pbmltdW0gYmluYXJ5IHZlcnNpb246ICR7b3B0aW9ucy5taW5WZXJzaW9ufWApO1xuICB9XG4gIGNvbnN0IGRlc3RpbmF0aW9uID0gY29udGV4dChuYW1lLCBvcHRpb25zLmhvbWVEaXIgPz8gaG9tZWRpcigpLCBvcHRpb25zLmRlc3RpbmF0aW9uKTtcbiAgcGFja2FnZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBvcHRpb25zKTtcbiAgaWYgKCFvcHRpb25zLmZvcmNlICYmIChhd2FpdCBpc1ZhbGlkSW5zdGFsbChkZXN0aW5hdGlvbiwgb3B0aW9ucykpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwidXNpbmcgaW5zdGFsbGVkIGJpbmFyeVwiLCB7IG5hbWUsIHBhdGg6IGRlc3RpbmF0aW9uLnBhdGggfSk7XG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKFwid2FpdGluZyBmb3IgYmluYXJ5IGluc3RhbGwgbG9ja1wiLCB7IG5hbWUsIHBhdGg6IGRlc3RpbmF0aW9uLnBhdGggfSk7XG4gIHJldHVybiB3aXRoRmlsZUxvY2soW1wiYmluLmVuc3VyZVwiLCBkZXN0aW5hdGlvbi5wYXRoXSwgYXN5bmMgKCkgPT4ge1xuICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiAoYXdhaXQgaXNWYWxpZEluc3RhbGwoZGVzdGluYXRpb24sIG9wdGlvbnMpKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwidXNpbmcgYmluYXJ5IGluc3RhbGxlZCBieSBhbm90aGVyIGNhbGxlclwiLCB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBhdGg6IGRlc3RpbmF0aW9uLnBhdGgsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXN0aW5hdGlvbjtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoXCJpbnN0YWxsaW5nIGJpbmFyeVwiLCB7XG4gICAgICBuYW1lLFxuICAgICAgdG86IGRlc3RpbmF0aW9uLnBhdGgsXG4gICAgICBtaW5WZXJzaW9uOiBvcHRpb25zLm1pblZlcnNpb24sXG4gICAgfSk7XG4gICAgY29uc3QgdGVtcCA9IGF3YWl0IG1rZHRlbXAoam9pbih0bXBkaXIoKSwgYCR7bmFtZX0tYCkpO1xuICAgIGxldCBzdGFnZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0eXBlb2YgdXJsID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCB1cmwoeyB0ZW1wRGlyOiB0ZW1wIH0pIDogdXJsO1xuICAgICAgY29uc3Qgc291cmNlID0gdHlwZW9mIHJlc29sdmVkID09PSBcInN0cmluZ1wiID8geyB1cmw6IHJlc29sdmVkIH0gOiByZXNvbHZlZDtcbiAgICAgIGNvbnN0IGZyb20gPSBkaXNwbGF5VXJsKHNvdXJjZS51cmwpO1xuICAgICAgbG9nZ2VyLmRlYnVnKFwicmVzb2x2ZWQgYmluYXJ5IHNvdXJjZVwiLCB7IG5hbWUsIGZyb20gfSk7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHNlbGVjdGVkQmluKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRlbXAsIG9wdGlvbnMpO1xuICAgICAgYXdhaXQgY2htb2Qoc2VsZWN0ZWQucGF0aCwgMG83NTUpO1xuICAgICAgaWYgKCEoYXdhaXQgaXNWYWxpZEJpbihzZWxlY3RlZC5wYXRoLCBvcHRpb25zKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzZWxlY3RlZCBiaW5hcnkgaGFzIG5vIGFjY2VwdGFibGUgdmVyc2lvbjogJHtzZWxlY3RlZC5wYXRofWApO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucGFja2FnZSkge1xuICAgICAgICBpZiAoIXNlbGVjdGVkLnBhY2thZ2VSb290KSB0aHJvdyBuZXcgRXJyb3IoXCJiaW5hcnkgcGFja2FnZSByb290IHdhcyBub3Qgc2VsZWN0ZWRcIik7XG4gICAgICAgIGF3YWl0IGluc3RhbGxQYWNrYWdlKHNlbGVjdGVkLnBhY2thZ2VSb290LCBkZXN0aW5hdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBta2RpcihkZXN0aW5hdGlvbi5iaW5EaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBzdGFnZWQgPSBqb2luKGRlc3RpbmF0aW9uLmJpbkRpciwgYC4ke25hbWV9LSR7cmFuZG9tVVVJRCgpfWApO1xuICAgICAgICBhd2FpdCBjb3B5RmlsZShzZWxlY3RlZC5wYXRoLCBzdGFnZWQpO1xuICAgICAgICBhd2FpdCBjaG1vZChzdGFnZWQsIDBvNzU1KTtcbiAgICAgICAgYXdhaXQgcmVuYW1lKHN0YWdlZCwgZGVzdGluYXRpb24ucGF0aCk7XG4gICAgICAgIHN0YWdlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCEoYXdhaXQgaXNWYWxpZEluc3RhbGwoZGVzdGluYXRpb24sIG9wdGlvbnMpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaW5zdGFsbGVkIGJpbmFyeSBpcyBpbnZhbGlkIGFmdGVyIHJlbmFtZTogJHtkZXN0aW5hdGlvbi5wYXRofWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsb2dnZXIuaW5mbyhcImluc3RhbGxlZCBiaW5hcnlcIiwge1xuICAgICAgICBuYW1lLFxuICAgICAgICBmcm9tLFxuICAgICAgICB0bzogZGVzdGluYXRpb24ucGF0aCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoc3RhZ2VkKSBhd2FpdCBybShzdGFnZWQsIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICBhd2FpdCBybSh0ZW1wLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFFBQVEsRUFDUixLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLEVBQ04sRUFBRSxFQUNGLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxLQUFLLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWUsTUFBTSxRQUFRLENBQUM7QUFDbEQsT0FBTyxFQUFFLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFD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QUFXLENBQUMsSUFBSTthQUNyQixDQUFDLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLE1BQU07Z0JBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnN0YWxsIGFuZCByZXVzZSBleGVjdXRhYmxlIGJpbmFyaWVzIHVuZGVyIGEgcGVyLXRvb2wgaG9tZSBkaXJlY3RvcnkuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2gsIHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7XG4gIGNobW9kLFxuICBjcCxcbiAgY29weUZpbGUsXG4gIG1rZGlyLFxuICBta2R0ZW1wLFxuICByZWFkZGlyLFxuICByZW5hbWUsXG4gIHJtLFxuICBzdGF0LFxuICB3cml0ZUZpbGUsXG59IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBob21lZGlyLCB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUsIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCJub2RlOnV0aWxcIjtcblxuaW1wb3J0ICogYXMgZXJyb3JVdGlscyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9lcnJvci11dGlsc1wiO1xuaW1wb3J0ICogYXMgbG9nIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2xvZ1wiO1xuaW1wb3J0IGV4dHJhY3RaaXAgZnJvbSBcImV4dHJhY3QtemlwXCI7XG5pbXBvcnQgeyBjb2VyY2UsIGd0ZSwgdHlwZSBTZW1WZXIgfSBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyB4IGFzIGV4dHJhY3RUYXIgfSBmcm9tIFwidGFyXCI7XG5cbmltcG9ydCB7IHdpdGhGaWxlTG9jayB9IGZyb20gXCIuL2ZpbGUtbG9jay50c1wiO1xuXG5jb25zdCBleGVjRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGV4ZWNGaWxlKTtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJjb3JlOmJpblwiKTtcblxuaW50ZXJmYWNlIFBhcnNlZFZlcnNpb24ge1xuICByYXc6IHN0cmluZztcbiAgcGFydHM6IG51bWJlcltdO1xufVxuXG5pbnRlcmZhY2UgQmluQWNjZXNzQ29udGV4dCB7XG4gIGZpbGU6IGJvb2xlYW47XG4gIGV4ZWN1dGFibGU6IGJvb2xlYW47XG59XG5cbi8qKiBTdGFibGUgcGF0aHMgZm9yIGFuIGluc3RhbGxlZCBiaW5hcnkuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbkNvbnRleHQge1xuICByb290OiBzdHJpbmc7XG4gIGJpbkRpcjogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKiBUZW1wb3JhcnkgZG93bmxvYWQgYW5kIGV4dHJhY3Rpb24gcGF0aHMgc3VwcGxpZWQgdG8gYSBjdXN0b20gc2VsZWN0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpblNlbGVjdGlvbkNvbnRleHQge1xuICBkZXN0aW5hdGlvbjogQmluQ29udGV4dDtcbiAgZG93bmxvYWRQYXRoOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgZXhlY3V0YWJsZSBmcm9tIGEgZG93bmxvYWQgb3IgdW5wYWNrZWQgYXJjaGl2ZS4gQSBzZWxlY3RvciBtYXlcbiAqIGFsc28gcHJlcGFyZSB0aGUgZmlsZSwgc3VjaCBhcyBhcHBseWluZyBpdHMgZXhlY3V0YWJsZSBtb2RlLlxuICovXG5leHBvcnQgdHlwZSBCaW5TZWxlY3RvciA9IChjb250ZXh0OiBCaW5TZWxlY3Rpb25Db250ZXh0KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbi8qKiBDYXB0dXJlZCBvdXRwdXQgcGFzc2VkIHRvIGEgY3VzdG9tIGJpbmFyeSB2ZXJzaW9uIHBhcnNlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluVmVyc2lvbk91dHB1dCB7XG4gIHN0ZG91dDogc3RyaW5nO1xuICBzdGRlcnI6IHN0cmluZztcbn1cblxuLyoqIEV4dHJhY3QgYSB2ZXJzaW9uIHN0cmluZyBmcm9tIGEgc3VjY2Vzc2Z1bCB2ZXJzaW9uLWNvbW1hbmQgcmVzdWx0LiAqL1xuZXhwb3J0IHR5cGUgQmluVmVyc2lvblBhcnNlciA9IChvdXRwdXQ6IEJpblZlcnNpb25PdXRwdXQpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBlbnN1cmV9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5PcHRpb25zIHtcbiAgYXV0b1VucGFja2FnZT86IGJvb2xlYW47XG4gIC8qKiBQcmVzZXJ2ZSBhbiB1bnBhY2tlZCBtdWx0aS1maWxlIHBhY2thZ2Ugcm9vdGVkIGF0IHtAbGluayBCaW5Db250ZXh0LnJvb3R9LiAqL1xuICBwYWNrYWdlPzogQmluUGFja2FnZU9wdGlvbnM7XG4gIHNlbGVjdG9yPzogQmluU2VsZWN0b3I7XG4gIGhvbWVEaXI/OiBzdHJpbmc7XG4gIC8qKiBFeGFjdCBpbnN0YWxsYXRpb24gcGF0aHMuIE9taXNzaW9uIGtlZXBzIGAkSE9NRS8uPG5hbWU+L2Jpbi88bmFtZT5gLiAqL1xuICBkZXN0aW5hdGlvbj86IEJpbkNvbnRleHQ7XG4gIC8qKiBNaW5pbXVtIGFjY2VwdGVkIG51bWVyaWMgdmVyc2lvbiwgd2l0aCBvbmUgdG8gdGhyZWUgY29tcG9uZW50cy4gKi9cbiAgbWluVmVyc2lvbj86IHN0cmluZztcbiAgLyoqIEFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYmluYXJ5IGZvciB2ZXJzaW9uIGRldGVjdGlvbi4gRGVmYXVsdHMgdG8gYC0tdmVyc2lvbmAuICovXG4gIHZlcnNpb25Bcmd1bWVudD86IHN0cmluZztcbiAgLyoqIFZlcnNpb24gb3V0cHV0IHBhcnNlci4gRGVmYXVsdHMgdG8ge0BsaW5rIHBhcnNlVmVyc2lvbn0uICovXG4gIHZlcnNpb25QYXJzZXI/OiBCaW5WZXJzaW9uUGFyc2VyO1xuICAvKiogU2tpcCBgLS12ZXJzaW9uYCBhbmQgdHJlYXQgYW4gZXhlY3V0YWJsZSBmaWxlIGFzIGFjY2VwdGFibGUuICovXG4gIHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuICAvKiogUmVpbnN0YWxsIGV2ZW4gd2hlbiB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBwYXNzZXMgdmFsaWRhdGlvbi4gKi9cbiAgZm9yY2U/OiBib29sZWFuO1xufVxuXG4vKiogTXVsdGktZmlsZSBhcmNoaXZlIGxheW91dCByZXRhaW5lZCBiZXNpZGUgaXRzIGV4ZWN1dGFibGUgZW50cnlwb2ludC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluUGFja2FnZU9wdGlvbnMge1xuICAvKiogRXhlY3V0YWJsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB1bnBhY2tlZCBwYWNrYWdlIHJvb3QuICovXG4gIGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgLyoqIENvbXBhbmlvbiBmaWxlcyBvciBkaXJlY3RvcmllcyByZXF1aXJlZCBiZWZvcmUgYW4gaW5zdGFsbGF0aW9uIGNhbiBiZSByZXVzZWQuICovXG4gIHJlcXVpcmVkUGF0aHM/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqIFRlbXBvcmFyeSBkaXJlY3RvcnkgY3JlYXRlZCBmb3Igb25lIGBlbnN1cmVgIGF0dGVtcHQgYWZ0ZXIgdGhlIGluc3RhbGwgbG9jay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluVXJsUmVzb2x2ZUNvbnRleHQge1xuICByZWFkb25seSB0ZW1wRGlyOiBzdHJpbmc7XG59XG5cbi8qKiBEb3dubG9hZCBzb3VyY2UgcmVzb2x2ZWQgb25seSB3aGVuIHRoZSBleGVjdXRhYmxlIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluU291cmNlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHNoYTI1Nj86IHN0cmluZztcbn1cblxuLyoqIEEgZG93bmxvYWQgc291cmNlIHJlc29sdmVkIG9ubHkgd2hlbiB0aGUgZXhlY3V0YWJsZSBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQuICovXG5leHBvcnQgdHlwZSBCaW5VcmwgPVxuICB8IHN0cmluZ1xuICB8IEJpblNvdXJjZVxuICB8ICgoY29udGV4dDogQmluVXJsUmVzb2x2ZUNvbnRleHQpID0+IHN0cmluZyB8IEJpblNvdXJjZSB8IFByb21pc2U8c3RyaW5nIHwgQmluU291cmNlPik7XG5cbmZ1bmN0aW9uIGNvbnRleHQobmFtZTogc3RyaW5nLCBob21lRGlyOiBzdHJpbmcsIGRlc3RpbmF0aW9uPzogQmluQ29udGV4dCk6IEJpbkNvbnRleHQge1xuICBpZiAoIW5hbWUgfHwgYmFzZW5hbWUobmFtZSkgIT09IG5hbWUgfHwgbmFtZSA9PT0gXCIuXCIgfHwgbmFtZSA9PT0gXCIuLlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBiaW5hcnkgbmFtZTogJHtuYW1lfWApO1xuICB9XG4gIGlmIChkZXN0aW5hdGlvbikgcmV0dXJuIGRlc3RpbmF0aW9uO1xuICBjb25zdCByb290ID0gam9pbihob21lRGlyLCBgLiR7bmFtZX1gKTtcbiAgY29uc3QgYmluRGlyID0gam9pbihyb290LCBcImJpblwiKTtcbiAgcmV0dXJuIHsgcm9vdCwgYmluRGlyLCBwYXRoOiBqb2luKGJpbkRpciwgbmFtZSkgfTtcbn1cblxuZnVuY3Rpb24gcGFja2FnZVBhdGgocm9vdDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXBhdGggfHwgaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgYmluYXJ5IHBhY2thZ2UgcGF0aDogJHtwYXRofWApO1xuICB9XG4gIGNvbnN0IHBhY2thZ2VSb290ID0gcmVzb2x2ZShyb290KTtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKHBhY2thZ2VSb290LCBwYXRoKTtcbiAgaWYgKHJlc29sdmVkID09PSBwYWNrYWdlUm9vdCB8fCAhcmVzb2x2ZWQuc3RhcnRzV2l0aChgJHtwYWNrYWdlUm9vdH0ke3NlcH1gKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGJpbmFyeSBwYWNrYWdlIHBhdGggZXNjYXBlcyBpdHMgcm9vdDogJHtwYXRofWApO1xuICB9XG4gIHJldHVybiByZXNvbHZlZDtcbn1cblxuZnVuY3Rpb24gcGFja2FnZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9uOiBCaW5Db250ZXh0LCBvcHRpb25zOiBCaW5PcHRpb25zKTogdm9pZCB7XG4gIGlmICghb3B0aW9ucy5wYWNrYWdlKSByZXR1cm47XG4gIGNvbnN0IGVudHJ5cG9pbnQgPSBwYWNrYWdlUGF0aChkZXN0aW5hdGlvbi5yb290LCBvcHRpb25zLnBhY2thZ2UuZW50cnlwb2ludCk7XG4gIGlmIChyZXNvbHZlKGRlc3RpbmF0aW9uLnBhdGgpICE9PSBlbnRyeXBvaW50KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImJpbmFyeSBwYWNrYWdlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBtYXRjaCBpdHMgZW50cnlwb2ludFwiKTtcbiAgfVxuICBmb3IgKGNvbnN0IHBhdGggb2Ygb3B0aW9ucy5wYWNrYWdlLnJlcXVpcmVkUGF0aHMgPz8gW10pIHtcbiAgICBwYWNrYWdlUGF0aChkZXN0aW5hdGlvbi5yb290LCBwYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaXNwbGF5VXJsKHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJhdyk7XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJkYXRhOlwiKSByZXR1cm4gXCJkYXRhOlwiO1xuICAgIHVybC51c2VybmFtZSA9IFwiXCI7XG4gICAgdXJsLnBhc3N3b3JkID0gXCJcIjtcbiAgICB1cmwuc2VhcmNoID0gXCJcIjtcbiAgICB1cmwuaGFzaCA9IFwiXCI7XG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFjY2Vzc0NvbnRleHQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxCaW5BY2Nlc3NDb250ZXh0PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBzdGF0KHBhdGgpO1xuICAgIGNvbnN0IGZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZSxcbiAgICAgIGV4ZWN1dGFibGU6IGZpbGUgJiYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIiB8fCAoZW50cnkubW9kZSAmIDBvMTExKSAhPT0gMCksXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgZmlsZTogZmFsc2UsIGV4ZWN1dGFibGU6IGZhbHNlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGV0ZWN0ZWRWZXJzaW9ucyhvdXRwdXQ6IHN0cmluZyk6IFBhcnNlZFZlcnNpb25bXSB7XG4gIGNvbnN0IHZlcnNpb25zOiBQYXJzZWRWZXJzaW9uW10gPSBbXTtcbiAgY29uc3QgcGF0dGVybiA9IC9cXGJ2PyhcXGQrKD86XFwuXFxkKyl7MCwyfSkoPzpbLSsuX10/W2Etel1bMC05YS16LitfLV0qKT8vZ2k7XG4gIGZvciAoY29uc3QgbWF0Y2ggb2Ygb3V0cHV0Lm1hdGNoQWxsKHBhdHRlcm4pKSB7XG4gICAgY29uc3QgcmF3ID0gbWF0Y2hbMF0ucmVwbGFjZSgvXnYvaSwgXCJcIik7XG4gICAgY29uc3QgcGFydHMgPSBtYXRjaFsxXT8uc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgIGlmIChwYXJ0cz8uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkgdmVyc2lvbnMucHVzaCh7IHJhdywgcGFydHMgfSk7XG4gIH1cbiAgcmV0dXJuIHZlcnNpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoYS5wYXJ0cy5sZW5ndGggIT09IGIucGFydHMubGVuZ3RoKSByZXR1cm4gYi5wYXJ0cy5sZW5ndGggLSBhLnBhcnRzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5wYXJ0cy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGNvbnN0IG9yZGVyID0gKGIucGFydHNbaW5kZXhdID8/IDApIC0gKGEucGFydHNbaW5kZXhdID8/IDApO1xuICAgICAgaWYgKG9yZGVyICE9PSAwKSByZXR1cm4gb3JkZXI7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgZGVlcGVzdCwgaGlnaGVzdCB2ZXJzaW9uIGZyb20gc3Rkb3V0LCBmYWxsaW5nIGJhY2sgdG8gc3RkZXJyIG9ubHlcbiAqIHdoZW4gc3Rkb3V0IGNvbnRhaW5zIG5vIHZlcnNpb24uIFN1cHBvcnRzIG9uZSB0byB0aHJlZSBudW1lcmljIGNvbXBvbmVudHNcbiAqIGFuZCBjb21tb24gc3VmZml4ZXMgc3VjaCBhcyBgcmMxYCwgYC5wb3N0MWAsIGFuZCBgLWRldi4yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih7IHN0ZG91dCwgc3RkZXJyIH06IEJpblZlcnNpb25PdXRwdXQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGV0ZWN0ZWRWZXJzaW9ucyhzdGRvdXQpLmF0KDApPy5yYXcgPz8gZGV0ZWN0ZWRWZXJzaW9ucyhzdGRlcnIpLmF0KDApPy5yYXc7XG59XG5cbmZ1bmN0aW9uIG1pbmltdW1TZW1WZXIodmVyc2lvbjogc3RyaW5nKTogU2VtVmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCEvXlxccyp2P1xcZCsoPzpcXC5cXGQrKXswLDJ9XFxzKiQvaS50ZXN0KHZlcnNpb24pKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gY29lcmNlKHZlcnNpb24sIHsgbG9vc2U6IHRydWUgfSkgPz8gdW5kZWZpbmVkO1xufVxuXG4vKiogQ29tcGFyZSBhIGRldGVjdGVkIHRvb2wgdmVyc2lvbiBhZ2FpbnN0IGEgb25lLXRvLXRocmVlLWNvbXBvbmVudCBtaW5pbXVtLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmVyc2lvbkF0TGVhc3QodmVyc2lvbjogc3RyaW5nLCBtaW5WZXJzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbWluaW11bSA9IG1pbmltdW1TZW1WZXIobWluVmVyc2lvbik7XG4gIGlmICghbWluaW11bSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgbWluaW11bSBiaW5hcnkgdmVyc2lvbjogJHttaW5WZXJzaW9ufWApO1xuICB9XG4gIGNvbnN0IGFjdHVhbCA9IGNvZXJjZSh2ZXJzaW9uLCB7IGxvb3NlOiB0cnVlIH0pO1xuICBpZiAoIWFjdHVhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZ3RlKGFjdHVhbCwgbWluaW11bSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRCaW4ocGF0aDogc3RyaW5nLCBvcHRpb25zOiBCaW5PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcImNoZWNraW5nIGJpbmFyeVwiLCB7XG4gICAgcGF0aCxcbiAgICBtaW5WZXJzaW9uOiBvcHRpb25zLm1pblZlcnNpb24sXG4gICAgdmVyc2lvbkFyZ3VtZW50OiBvcHRpb25zLnZlcnNpb25Bcmd1bWVudCA/PyBcIi0tdmVyc2lvblwiLFxuICB9KTtcbiAgY29uc3QgYWNjZXNzID0gYXdhaXQgYWNjZXNzQ29udGV4dChwYXRoKTtcbiAgaWYgKCFhY2Nlc3MuZmlsZSB8fCAhYWNjZXNzLmV4ZWN1dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJiaW5hcnkgYWNjZXNzIGNoZWNrIGZhaWxlZFwiLCB7IHBhdGgsIC4uLmFjY2VzcyB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuc2tpcFZlcnNpb25DaGVjaykge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImJpbmFyeSB2ZXJzaW9uIGNoZWNrIHNraXBwZWRcIiwgeyBwYXRoIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCBzdGRvdXQ6IHN0cmluZztcbiAgbGV0IHN0ZGVycjogc3RyaW5nO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNGaWxlQXN5bmMocGF0aCwgW29wdGlvbnMudmVyc2lvbkFyZ3VtZW50ID8/IFwiLS12ZXJzaW9uXCJdLCB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSk7XG4gICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dDtcbiAgICBzdGRlcnIgPSByZXN1bHQuc3RkZXJyO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImJpbmFyeSB2ZXJzaW9uIGNvbW1hbmQgZmFpbGVkXCIsIHtcbiAgICAgIHBhdGgsXG4gICAgICBlcnJvcjogZXJyb3JVdGlscy50b0Vycm9yKGNhdXNlKSxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgdmVyc2lvbiA9IChvcHRpb25zLnZlcnNpb25QYXJzZXIgPz8gcGFyc2VWZXJzaW9uKSh7XG4gICAgc3Rkb3V0LFxuICAgIHN0ZGVycixcbiAgfSk7XG4gIGNvbnN0IHZhbGlkID1cbiAgICB2ZXJzaW9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAob3B0aW9ucy5taW5WZXJzaW9uID09PSB1bmRlZmluZWQgfHwgaXNWZXJzaW9uQXRMZWFzdCh2ZXJzaW9uLCBvcHRpb25zLm1pblZlcnNpb24pKTtcbiAgbG9nZ2VyLmRlYnVnKFwiYmluYXJ5IHZlcnNpb24gY2hlY2tlZFwiLCB7XG4gICAgcGF0aCxcbiAgICB2ZXJzaW9uLFxuICAgIG1pblZlcnNpb246IG9wdGlvbnMubWluVmVyc2lvbixcbiAgICB2YWxpZCxcbiAgfSk7XG4gIHJldHVybiB2YWxpZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGF0aEV4aXN0cyhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBzdGF0KHBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZEluc3RhbGwoZGVzdGluYXRpb246IEJpbkNvbnRleHQsIG9wdGlvbnM6IEJpbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKCEoYXdhaXQgaXNWYWxpZEJpbihkZXN0aW5hdGlvbi5wYXRoLCBvcHRpb25zKSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFvcHRpb25zLnBhY2thZ2UpIHJldHVybiB0cnVlO1xuICBjb25zdCByZXF1aXJlZCA9IFtvcHRpb25zLnBhY2thZ2UuZW50cnlwb2ludCwgLi4uKG9wdGlvbnMucGFja2FnZS5yZXF1aXJlZFBhdGhzID8/IFtdKV07XG4gIGNvbnN0IGF2YWlsYWJsZSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHJlcXVpcmVkLm1hcCgocGF0aCkgPT4gcGF0aEV4aXN0cyhwYWNrYWdlUGF0aChkZXN0aW5hdGlvbi5yb290LCBwYXRoKSkpLFxuICApO1xuICByZXR1cm4gYXZhaWxhYmxlLmV2ZXJ5KEJvb2xlYW4pO1xufVxuXG5mdW5jdGlvbiBkb3dubG9hZE5hbWUodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gYmFzZW5hbWUoZGVjb2RlVVJJQ29tcG9uZW50KG5ldyBVUkwodXJsKS5wYXRobmFtZSkpO1xuICAgIHJldHVybiBjYW5kaWRhdGUgJiYgQnVmZmVyLmJ5dGVMZW5ndGgoY2FuZGlkYXRlKSA8PSAyMDAgPyBjYW5kaWRhdGUgOiBuYW1lO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbmFtZTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1bnBhY2soYXJjaGl2ZTogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZpbGVuYW1lID0gYXJjaGl2ZS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoXCIuemlwXCIpKSB7XG4gICAgYXdhaXQgZXh0cmFjdFppcChhcmNoaXZlLCB7IGRpcjogZGVzdGluYXRpb24gfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmaWxlbmFtZS5lbmRzV2l0aChcIi50YXJcIikgfHwgZmlsZW5hbWUuZW5kc1dpdGgoXCIudGFyLmd6XCIpIHx8IGZpbGVuYW1lLmVuZHNXaXRoKFwiLnRnelwiKSkge1xuICAgIGF3YWl0IGV4dHJhY3RUYXIoeyBmaWxlOiBhcmNoaXZlLCBjd2Q6IGRlc3RpbmF0aW9uIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGJpbmFyeSBhcmNoaXZlOiAke2Jhc2VuYW1lKGFyY2hpdmUpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaWxlc1VuZGVyKHJvb3Q6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHJlYWRkaXIocm9vdCwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgcGF0aCA9IGpvaW4ocm9vdCwgZW50cnkubmFtZSk7XG4gICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGZpbGVzLnB1c2goLi4uKGF3YWl0IGZpbGVzVW5kZXIocGF0aCkpKTtcbiAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpKSB7XG4gICAgICBmaWxlcy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbGVjdFNpbmdsZUZpbGUoc291cmNlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGZpbGVzVW5kZXIoc291cmNlKTtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBmaWxlcy5hdCgwKTtcbiAgaWYgKGZpbGVzLmxlbmd0aCAhPT0gMSB8fCAhc2VsZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGJpbmFyeSBhcmNoaXZlIG11c3QgY29udGFpbiBvbmUgZmlsZSwgZm91bmQgJHtmaWxlcy5sZW5ndGh9YCk7XG4gIH1cbiAgcmV0dXJuIHNlbGVjdGVkO1xufVxuXG5mdW5jdGlvbiBmaWxlVXJsUGF0aCh1cmw6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gbmV3IFVSTCh1cmwpO1xuICAgIGlmIChwYXJzZWQucHJvdG9jb2wgIT09IFwiZmlsZTpcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZmlsZVVSTFRvUGF0aChwYXJzZWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmludGVyZmFjZSBTZWxlY3RlZEJpbiB7XG4gIHBhdGg6IHN0cmluZztcbiAgcGFja2FnZVJvb3Q/OiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbGVjdGVkQmluKFxuICBkZXN0aW5hdGlvbjogQmluQ29udGV4dCxcbiAgc291cmNlOiBCaW5Tb3VyY2UsXG4gIHRlbXA6IHN0cmluZyxcbiAgb3B0aW9uczogQmluT3B0aW9ucyxcbik6IFByb21pc2U8U2VsZWN0ZWRCaW4+IHtcbiAgY29uc3QgeyB1cmwgfSA9IHNvdXJjZTtcbiAgY29uc3QgbG9jYWxQYXRoID0gZmlsZVVybFBhdGgodXJsKTtcbiAgbGV0IGRvd25sb2FkUGF0aDogc3RyaW5nO1xuICBpZiAobG9jYWxQYXRoKSB7XG4gICAgY29uc3QgYWNjZXNzID0gYXdhaXQgYWNjZXNzQ29udGV4dChsb2NhbFBhdGgpO1xuICAgIGlmICghYWNjZXNzLmZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYmluYXJ5IGZpbGUgVVJMIGRvZXMgbm90IGV4aXN0OiAke2Rpc3BsYXlVcmwodXJsKX1gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFwidXNpbmcgbG9jYWwgYmluYXJ5XCIsIHsgZnJvbTogZGlzcGxheVVybCh1cmwpLCBwYXRoOiBsb2NhbFBhdGggfSk7XG4gICAgZG93bmxvYWRQYXRoID0gbG9jYWxQYXRoO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5hbWUgPSBkb3dubG9hZE5hbWUodXJsLCBiYXNlbmFtZShkZXN0aW5hdGlvbi5wYXRoKSk7XG4gICAgZG93bmxvYWRQYXRoID0gam9pbih0ZW1wLCBuYW1lKTtcbiAgICBjb25zdCBkb3dubG9hZCA9IHtcbiAgICAgIGZyb206IGRpc3BsYXlVcmwodXJsKSxcbiAgICAgIHRvOiBkb3dubG9hZFBhdGgsXG4gICAgfTtcbiAgICBpZiAoZG93bmxvYWQuZnJvbSA9PT0gXCJkYXRhOlwiKSBsb2dnZXIuZGVidWcoXCJkb3dubG9hZGluZyBiaW5hcnlcIiwgZG93bmxvYWQpO1xuICAgIGVsc2UgbG9nZ2VyLmluZm8oXCJkb3dubG9hZGluZyBiaW5hcnlcIiwgZG93bmxvYWQpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGJpbmFyeSBkb3dubG9hZCBmYWlsZWQgKCR7cmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgICB9XG4gICAgY29uc3QgZG93bmxvYWRlZCA9IEJ1ZmZlci5mcm9tKGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpO1xuICAgIGlmIChzb3VyY2Uuc2hhMjU2KSB7XG4gICAgICBpZiAoIS9eWzAtOWEtZl17NjR9JC9pLnRlc3Qoc291cmNlLnNoYTI1NikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcImJpbmFyeSBkb3dubG9hZCBTSEEtMjU2IGRpZ2VzdCBtdXN0IGNvbnRhaW4gNjQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyc1wiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgYWN0dWFsID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoZG93bmxvYWRlZCkuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgaWYgKGFjdHVhbC50b0xvd2VyQ2FzZSgpICE9PSBzb3VyY2Uuc2hhMjU2LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiaW5hcnkgZG93bmxvYWQgZGlnZXN0IG1pc21hdGNoOiAke2Rpc3BsYXlVcmwodXJsKX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXdhaXQgd3JpdGVGaWxlKGRvd25sb2FkUGF0aCwgZG93bmxvYWRlZCwgeyBtb2RlOiAwbzc1NSB9KTtcbiAgfVxuXG4gIGxldCBzZWxlY3RlZFNvdXJjZSA9IGRvd25sb2FkUGF0aDtcbiAgbGV0IHVucGFja2VkID0gZmFsc2U7XG4gIGlmIChvcHRpb25zLnBhY2thZ2UgfHwgKG9wdGlvbnMuYXV0b1VucGFja2FnZSAmJiAhbG9jYWxQYXRoKSkge1xuICAgIHNlbGVjdGVkU291cmNlID0gam9pbih0ZW1wLCBgdW5wYWNrZWQtJHtyYW5kb21VVUlEKCl9YCk7XG4gICAgYXdhaXQgbWtkaXIoc2VsZWN0ZWRTb3VyY2UpO1xuICAgIGxvZ2dlci5pbmZvKFwidW5wYWNraW5nIGJpbmFyeSBhcmNoaXZlXCIsIHtcbiAgICAgIGFyY2hpdmU6IGRvd25sb2FkUGF0aCxcbiAgICAgIHRvOiBzZWxlY3RlZFNvdXJjZSxcbiAgICB9KTtcbiAgICBhd2FpdCB1bnBhY2soZG93bmxvYWRQYXRoLCBzZWxlY3RlZFNvdXJjZSk7XG4gICAgdW5wYWNrZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2VsZWN0b3IpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IG9wdGlvbnMuc2VsZWN0b3Ioe1xuICAgICAgZGVzdGluYXRpb24sXG4gICAgICBkb3dubG9hZFBhdGgsXG4gICAgICBzb3VyY2U6IHNlbGVjdGVkU291cmNlLFxuICAgIH0pO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInNlbGVjdGVkIGJpbmFyeVwiLCB7IHBhdGg6IHNlbGVjdGVkIH0pO1xuICAgIHJldHVybiB7IHBhdGg6IHNlbGVjdGVkLCAuLi4ob3B0aW9ucy5wYWNrYWdlID8geyBwYWNrYWdlUm9vdDogc2VsZWN0ZWRTb3VyY2UgfSA6IHt9KSB9O1xuICB9XG4gIGlmIChvcHRpb25zLnBhY2thZ2UpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHBhY2thZ2VQYXRoKHNlbGVjdGVkU291cmNlLCBvcHRpb25zLnBhY2thZ2UuZW50cnlwb2ludCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwic2VsZWN0ZWQgYmluYXJ5IHBhY2thZ2UgZW50cnlwb2ludFwiLCB7IHBhdGg6IHNlbGVjdGVkIH0pO1xuICAgIHJldHVybiB7IHBhdGg6IHNlbGVjdGVkLCBwYWNrYWdlUm9vdDogc2VsZWN0ZWRTb3VyY2UgfTtcbiAgfVxuICBjb25zdCBzZWxlY3RlZCA9IHVucGFja2VkID8gYXdhaXQgc2VsZWN0U2luZ2xlRmlsZShzZWxlY3RlZFNvdXJjZSkgOiBzZWxlY3RlZFNvdXJjZTtcbiAgbG9nZ2VyLmRlYnVnKFwic2VsZWN0ZWQgYmluYXJ5XCIsIHsgcGF0aDogc2VsZWN0ZWQgfSk7XG4gIHJldHVybiB7IHBhdGg6IHNlbGVjdGVkIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxQYWNrYWdlKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgZGVzdGluYXRpb246IEJpbkNvbnRleHQsXG4gIG9wdGlvbnM6IEJpbk9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zLnBhY2thZ2UpIHRocm93IG5ldyBFcnJvcihcImJpbmFyeSBwYWNrYWdlIG9wdGlvbnMgYXJlIHJlcXVpcmVkXCIpO1xuICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRlc3RpbmF0aW9uLnJvb3QpO1xuICBjb25zdCBuYW1lID0gYmFzZW5hbWUoZGVzdGluYXRpb24ucm9vdCk7XG4gIGNvbnN0IHN0YWdlZFJvb3QgPSBqb2luKHBhcmVudCwgYC4ke25hbWV9LXN0YWdlZC0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgY29uc3QgYmFja3VwUm9vdCA9IGpvaW4ocGFyZW50LCBgLiR7bmFtZX0tYmFja3VwLSR7cmFuZG9tVVVJRCgpfWApO1xuICBhd2FpdCBta2RpcihwYXJlbnQsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBsb2dnZXIuaW5mbyhcInN0YWdpbmcgYmluYXJ5IHBhY2thZ2VcIiwge1xuICAgIGZyb206IHNvdXJjZSxcbiAgICB0bzogZGVzdGluYXRpb24ucm9vdCxcbiAgfSk7XG4gIGF3YWl0IGNwKHNvdXJjZSwgc3RhZ2VkUm9vdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHN0YWdlZFBhdGggPSBwYWNrYWdlUGF0aChzdGFnZWRSb290LCBvcHRpb25zLnBhY2thZ2UuZW50cnlwb2ludCk7XG4gIGF3YWl0IGNobW9kKHN0YWdlZFBhdGgsIDBvNzU1KTtcbiAgY29uc3Qgc3RhZ2VkOiBCaW5Db250ZXh0ID0ge1xuICAgIHJvb3Q6IHN0YWdlZFJvb3QsXG4gICAgYmluRGlyOiBkaXJuYW1lKHN0YWdlZFBhdGgpLFxuICAgIHBhdGg6IHN0YWdlZFBhdGgsXG4gIH07XG4gIGlmICghKGF3YWl0IGlzVmFsaWRJbnN0YWxsKHN0YWdlZCwgb3B0aW9ucykpKSB7XG4gICAgYXdhaXQgcm0oc3RhZ2VkUm9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VsZWN0ZWQgYmluYXJ5IHBhY2thZ2UgaXMgaW52YWxpZDogJHtzb3VyY2V9YCk7XG4gIH1cblxuICBsZXQgYmFja2VkVXAgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhkZXN0aW5hdGlvbi5yb290KSkge1xuICAgICAgYXdhaXQgcmVuYW1lKGRlc3RpbmF0aW9uLnJvb3QsIGJhY2t1cFJvb3QpO1xuICAgICAgYmFja2VkVXAgPSB0cnVlO1xuICAgIH1cbiAgICBhd2FpdCByZW5hbWUoc3RhZ2VkUm9vdCwgZGVzdGluYXRpb24ucm9vdCk7XG4gICAgaWYgKCEoYXdhaXQgaXNWYWxpZEluc3RhbGwoZGVzdGluYXRpb24sIG9wdGlvbnMpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnN0YWxsZWQgYmluYXJ5IHBhY2thZ2UgaXMgaW52YWxpZCBhZnRlciByZW5hbWU6ICR7ZGVzdGluYXRpb24ucm9vdH1gKTtcbiAgICB9XG4gICAgaWYgKGJhY2tlZFVwKSBhd2FpdCBybShiYWNrdXBSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgYXdhaXQgcm0oZGVzdGluYXRpb24ucm9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIGlmIChiYWNrZWRVcCkgYXdhaXQgcmVuYW1lKGJhY2t1cFJvb3QsIGRlc3RpbmF0aW9uLnJvb3QpO1xuICAgIHRocm93IGVycm9yO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJtKHN0YWdlZFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiBhbiBleGlzdGluZyBleGVjdXRhYmxlIG9yIGluc3RhbGwgaXQgYXRvbWljYWxseSB1bmRlclxuICogYCRIT01FLy48bmFtZT4vYmluLzxuYW1lPmAuIE11bHRpLWZpbGUgcGFja2FnZSBtb2RlIGF0b21pY2FsbHkgcHJlc2VydmVzIHRoZVxuICogdW5wYWNrZWQgcGFja2FnZSBhdCBhbiBleHBsaWNpdCBkZXN0aW5hdGlvbiByb290LiBJbnN0YWxsYXRpb24gdXNlcyBhXG4gKiBjaGVjay1sb2NrLWNoZWNrLWxvYWQgc2VxdWVuY2Ugc28gY29uY3VycmVudCBjYWxsZXJzIHJlc29sdmUgYW5kIGRvd25sb2FkXG4gKiBvbmx5IG9uY2UuIENhbmRpZGF0ZXMgYW5kIGZpbmFsIGRlc3RpbmF0aW9ucyBtdXN0IHBhc3MgdGhlIHNhbWUgY2hlY2tzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlKFxuICBuYW1lOiBzdHJpbmcsXG4gIHVybDogQmluVXJsLFxuICBvcHRpb25zOiBCaW5PcHRpb25zID0ge30sXG4pOiBQcm9taXNlPEJpbkNvbnRleHQ+IHtcbiAgaWYgKG9wdGlvbnMubWluVmVyc2lvbiAmJiAhbWluaW11bVNlbVZlcihvcHRpb25zLm1pblZlcnNpb24pKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBtaW5pbXVtIGJpbmFyeSB2ZXJzaW9uOiAke29wdGlvbnMubWluVmVyc2lvbn1gKTtcbiAgfVxuICBjb25zdCBkZXN0aW5hdGlvbiA9IGNvbnRleHQobmFtZSwgb3B0aW9ucy5ob21lRGlyID8/IGhvbWVkaXIoKSwgb3B0aW9ucy5kZXN0aW5hdGlvbik7XG4gIHBhY2thZ2VEZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgb3B0aW9ucyk7XG4gIGlmICghb3B0aW9ucy5mb3JjZSAmJiAoYXdhaXQgaXNWYWxpZEluc3RhbGwoZGVzdGluYXRpb24sIG9wdGlvbnMpKSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInVzaW5nIGluc3RhbGxlZCBiaW5hcnlcIiwgeyBuYW1lLCBwYXRoOiBkZXN0aW5hdGlvbi5wYXRoIH0pO1xuICAgIHJldHVybiBkZXN0aW5hdGlvbjtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZyhcIndhaXRpbmcgZm9yIGJpbmFyeSBpbnN0YWxsIGxvY2tcIiwgeyBuYW1lLCBwYXRoOiBkZXN0aW5hdGlvbi5wYXRoIH0pO1xuICByZXR1cm4gd2l0aEZpbGVMb2NrKFtcImJpbi5lbnN1cmVcIiwgZGVzdGluYXRpb24ucGF0aF0sIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgKGF3YWl0IGlzVmFsaWRJbnN0YWxsKGRlc3RpbmF0aW9uLCBvcHRpb25zKSkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInVzaW5nIGJpbmFyeSBpbnN0YWxsZWQgYnkgYW5vdGhlciBjYWxsZXJcIiwge1xuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoOiBkZXN0aW5hdGlvbi5wYXRoLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZGVzdGluYXRpb247XG4gICAgfVxuXG4gICAgbG9nZ2VyLmRlYnVnKFwiaW5zdGFsbGluZyBiaW5hcnlcIiwge1xuICAgICAgbmFtZSxcbiAgICAgIHRvOiBkZXN0aW5hdGlvbi5wYXRoLFxuICAgICAgbWluVmVyc2lvbjogb3B0aW9ucy5taW5WZXJzaW9uLFxuICAgIH0pO1xuICAgIGNvbnN0IHRlbXAgPSBhd2FpdCBta2R0ZW1wKGpvaW4odG1wZGlyKCksIGAke25hbWV9LWApKTtcbiAgICBsZXQgc3RhZ2VkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gdHlwZW9mIHVybCA9PT0gXCJmdW5jdGlvblwiID8gYXdhaXQgdXJsKHsgdGVtcERpcjogdGVtcCB9KSA6IHVybDtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHR5cGVvZiByZXNvbHZlZCA9PT0gXCJzdHJpbmdcIiA/IHsgdXJsOiByZXNvbHZlZCB9IDogcmVzb2x2ZWQ7XG4gICAgICBjb25zdCBmcm9tID0gZGlzcGxheVVybChzb3VyY2UudXJsKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInJlc29sdmVkIGJpbmFyeSBzb3VyY2VcIiwgeyBuYW1lLCBmcm9tIH0pO1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBhd2FpdCBzZWxlY3RlZEJpbihkZXN0aW5hdGlvbiwgc291cmNlLCB0ZW1wLCBvcHRpb25zKTtcbiAgICAgIGF3YWl0IGNobW9kKHNlbGVjdGVkLnBhdGgsIDBvNzU1KTtcbiAgICAgIGlmICghKGF3YWl0IGlzVmFsaWRCaW4oc2VsZWN0ZWQucGF0aCwgb3B0aW9ucykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgc2VsZWN0ZWQgYmluYXJ5IGhhcyBubyBhY2NlcHRhYmxlIHZlcnNpb246ICR7c2VsZWN0ZWQucGF0aH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnBhY2thZ2UpIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZC5wYWNrYWdlUm9vdCkgdGhyb3cgbmV3IEVycm9yKFwiYmluYXJ5IHBhY2thZ2Ugcm9vdCB3YXMgbm90IHNlbGVjdGVkXCIpO1xuICAgICAgICBhd2FpdCBpbnN0YWxsUGFja2FnZShzZWxlY3RlZC5wYWNrYWdlUm9vdCwgZGVzdGluYXRpb24sIG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgbWtkaXIoZGVzdGluYXRpb24uYmluRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgc3RhZ2VkID0gam9pbihkZXN0aW5hdGlvbi5iaW5EaXIsIGAuJHtuYW1lfS0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICAgICAgYXdhaXQgY29weUZpbGUoc2VsZWN0ZWQucGF0aCwgc3RhZ2VkKTtcbiAgICAgICAgYXdhaXQgY2htb2Qoc3RhZ2VkLCAwbzc1NSk7XG4gICAgICAgIGF3YWl0IHJlbmFtZShzdGFnZWQsIGRlc3RpbmF0aW9uLnBhdGgpO1xuICAgICAgICBzdGFnZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghKGF3YWl0IGlzVmFsaWRJbnN0YWxsKGRlc3RpbmF0aW9uLCBvcHRpb25zKSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGluc3RhbGxlZCBiaW5hcnkgaXMgaW52YWxpZCBhZnRlciByZW5hbWU6ICR7ZGVzdGluYXRpb24ucGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oXCJpbnN0YWxsZWQgYmluYXJ5XCIsIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZnJvbSxcbiAgICAgICAgdG86IGRlc3RpbmF0aW9uLnBhdGgsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXN0aW5hdGlvbjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHN0YWdlZCkgYXdhaXQgcm0oc3RhZ2VkLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgYXdhaXQgcm0odGVtcCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -41,8 +41,8 @@ export declare const BrandContextSchema: import("zod").ZodObject<{
41
41
  principles: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
42
42
  avoid: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
43
43
  }, import("zod/v4/core").$strict>>;
44
- links: import("zod").ZodDefault<import("zod").ZodObject<{
45
- website: import("zod").ZodOptional<import("zod").ZodString>;
44
+ links: import("zod").ZodPrefault<import("zod").ZodObject<{
45
+ website: import("zod").ZodDefault<import("zod").ZodString>;
46
46
  repository: import("zod").ZodOptional<import("zod").ZodString>;
47
47
  documentation: import("zod").ZodOptional<import("zod").ZodString>;
48
48
  }, import("zod/v4/core").$strict>>;
@@ -87,7 +87,7 @@ export declare const defaultBrandContext: {
87
87
  avoid: string[];
88
88
  };
89
89
  links: {
90
- website?: string | undefined;
90
+ website: string;
91
91
  repository?: string | undefined;
92
92
  documentation?: string | undefined;
93
93
  };
@@ -183,7 +183,7 @@ const resolveFlock = functionUtils.memoize(async () => {
183
183
  return lib.symbols.flock;
184
184
  }
185
185
  catch (cause) {
186
- logger.debug("flock FFI unavailable", { error: errorUtils.errorMessage(cause) });
186
+ logger.debug("flock FFI unavailable", { error: errorUtils.toError(cause) });
187
187
  return undefined;
188
188
  }
189
189
  });
@@ -277,4 +277,4 @@ function assertBeforeDeadline(lockPath, deadline) {
277
277
  async function ensureParentDir(lockPath) {
278
278
  await mkdir(dirname(lockPath), { recursive: true });
279
279
  }
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbGUtbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRzs7Ozs7Ozs7O0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxLQUFLLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEtBQUssYUFBYSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxJQUFJLE1BQU0sNkJBQTZCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sUUFBUSxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUs1QyxNQUFNLGdCQUFnQixHQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTlELDJEQUEyRDtBQUMzRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFFbkI7Ozs7R0FJRztBQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUUzRSwrRUFBK0U7QUFDL0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksUUFBUSxH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QUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxRQUFnQjtJQUM3QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXNjYWRpbmcgY3Jvc3MtcHJvY2VzcyBtdXR1YWwgZXhjbHVzaW9uIHZpYSBhIGxvY2tmaWxlLlxuICpcbiAqIFNlcmlhbGl6ZXMgY29uY3VycmVudCAqcHJvY2Vzc2VzKiAodHdvIGBidW4gcnVuIGRlbW9gIHNoZWxscywgYSBDTEkgYmVzaWRlIGFcbiAqIHNlcnZlcikgb24gdGhlIHNhbWUga2V5LiBGb3IgaW4tcHJvY2VzcyAvIHdvcmtlci10aHJlYWQgZXhjbHVzaW9uIHVzZVxuICoge0BsaW5rIHdpdGhQcm9jZXNzTG9ja30gZnJvbSBgLi9wcm9jZXNzLWxvY2sudHNgIGluc3RlYWQuXG4gKlxuICogQmFja2VuZHM6XG4gKlxuICogMS4gKipmaWxlKiogKGRlZmF1bHQpIOKAlCBgcHJvcGVyLWxvY2tmaWxlYCBhdG9taWMgbG9jay1kaXJlY3RvcnkgY3JlYXRpb24sXG4gKiAgICBoZWFydGJlYXQsIHN0YWxlIHJlY292ZXJ5LCBhbmQgb3duZXJzaGlwLXNhZmUgcmVsZWFzZS4gQnVuIGFuZCBOb2RlIHVzZVxuICogICAgdGhpcyBzYW1lIHByb3RvY29sLlxuICogMi4gKipmbG9jayoqIChleHBsaWNpdCBjb21wYXRpYmlsaXR5IG9wdGlvbikg4oCUIGBmbG9jaygyKWAgdmlhIEJ1biBGRkkgb25cbiAqICAgIFVuaXguIEl0IHJlbWFpbnMgYXZhaWxhYmxlIHRvIGNhbGxlcnMgdGhhdCBzZWxlY3RlZCBpdCBleHBsaWNpdGx5LCBidXQgYVxuICogICAgcnVudGltZS1kZXBlbmRlbnQgY2FzY2FkZSBjYW5ub3QgY29vcmRpbmF0ZSBCdW4gYW5kIE5vZGUuXG4gKlxuICogVGhlIGZpcnN0IGJhY2tlbmQgdGhhdCBjYW4gYmUgKmluaXRpYWxpemVkKiBpcyB1c2VkIGZvciB0aGUgd2hvbGUgY2FsbC4gQSBidXN5XG4gKiBsb2NrIHdhaXRzOyBhbiB1bmF2YWlsYWJsZSBiYWNrZW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlIG5leHQuIENhbGxlcnMgbWF5IG9ubHlcbiAqIGJvdW5kIGhvdyBsb25nIHRvIHdhaXQgKHtAbGluayBGaWxlTG9ja09wdGlvbnMudGltZW91dE1zfSk7IHN0YWxlIHRpbWluZyBpc1xuICogbm90IGNvbmZpZ3VyYWJsZSBzbyBldmVyeSBob2xkZXIgYW5kIHdhaXRlciBhZ3JlZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IG1rZGlyLCBvcGVuIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgKiBhcyBhc3luY1V0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBlcnJvclV0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2Vycm9yLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBmdW5jdGlvblV0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2Z1bmN0aW9uLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBoYXNoIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2hhc2hcIjtcbmltcG9ydCAqIGFzIGxvZyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9sb2dcIjtcbmltcG9ydCAqIGFzIG9iamVjdCBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9vYmplY3RcIjtcbmltcG9ydCBsb2NrZmlsZSBmcm9tIFwicHJvcGVyLWxvY2tmaWxlXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJjb3JlOmZpbGUtbG9ja1wiKTtcblxuLyoqIEJhY2tlbmRzIHtAbGluayB3aXRoRmlsZUxvY2t9IGNhbiBhdHRlbXB0LCBpbiBjYXNjYWRlIG9yZGVyLiAqL1xuZXhwb3J0IHR5cGUgRmlsZUxvY2tCYWNrZW5kID0gXCJmbG9ja1wiIHwgXCJmaWxlXCI7XG5cbmNvbnN0IERFRkFVTFRfQkFDS0VORFM6IHJlYWRvbmx5IEZpbGVMb2NrQmFja2VuZFtdID0gW1wiZmlsZVwiXTtcblxuLyoqIFBvbGwgaW50ZXJ2YWwgd2hpbGUgd2FpdGluZyBmb3IgYSBjb250ZW5kZWQgT1MgbG9jay4gKi9cbmNvbnN0IFBPTExfTVMgPSA1MDtcblxuLyoqXG4gKiBBZ2UgYWZ0ZXIgd2hpY2ggYW4gdW5yZWZyZXNoZWQgbG9jayBkaXJlY3RvcnkgbWF5IGJlIHJlbW92ZWQuXG4gKiBNYXRjaGVzIGBwcm9wZXItbG9ja2ZpbGVgJ3MgZGVmYXVsdC4gTm90IGNhbGxlci1jb25maWd1cmFibGU6IGV2ZXJ5IHByb2Nlc3NcbiAqIG11c3Qgc2hhcmUgdGhlIHNhbWUgdGhyZXNob2xkIG9yIGEgbGl2ZSBob2xkZXIgY2FuIGJlIG1pc3Rha2VuIGZvciBzdGFsZS5cbiAqL1xuY29uc3QgU1RBTEVfTVMgPSBvYmplY3QudG9OdW1iZXIocHJvY2Vzcy5lbnYuRklMRV9MT0NLX1NUQUxFX01TKSA/PyAxMF8wMDA7XG5cbi8qKiBIZWFydGJlYXQgaW50ZXJ2YWwgZm9yIHJlZnJlc2hpbmcgbG9jay1kaXJlY3RvcnkgbXRpbWUgKGBTVEFMRV9NUyAvIDJgKS4gKi9cbmNvbnN0IFVQREFURV9NUyA9IG9iamVjdC50b051bWJlcihwcm9jZXNzLmVudi5GSUxFX0xPQ0tfVVBEQVRFX01TKSA/PyBTVEFMRV9NUyAvIDI7XG5cbi8qKiBgZmxvY2soMilgIG9wZXJhdGlvbiBiaXRzIChMaW51eCAvIG1hY09TIC8gQlNEKS4gKi9cbmNvbnN0IExPQ0tfRVggPSAyO1xuY29uc3QgTE9DS19OQiA9IDQ7XG5jb25zdCBMT0NLX1VOID0gODtcblxuLyoqIFJlc3VsdCBtZXRhZGF0YSB3aGVuIGEgY2FsbGVyIHdhbnRzIHRvIGtub3cgd2hpY2ggYmFja2VuZCByYW4uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVMb2NrQWNxdWlzaXRpb24ge1xuICBiYWNrZW5kOiBGaWxlTG9ja0JhY2tlbmQ7XG59XG5cbi8qKiBCYWNrZW5kIHNlbGVjdGlvbiwgd2FpdCBwb2xpY3ksIGFuZCBsaWZlY3ljbGUgY2FsbGJhY2tzIGZvciBhIGNyb3NzLXByb2Nlc3MgbG9jay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxvY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSBmb3IgbG9ja2ZpbGVzLiBEZWZhdWx0cyB0byBgJFRNUERJUi9kYngtdG9vbHMtbG9ja3NgLlxuICAgKi9cbiAgZGlyPzogc3RyaW5nO1xuICAvKiogT3ZlcnJpZGUgdGhlIGJhY2tlbmQgbGlzdC4gRGVmYXVsdHMgdG8gdGhlIHBvcnRhYmxlIGBmaWxlYCBwcm90b2NvbC4gKi9cbiAgYmFja2VuZHM/OiByZWFkb25seSBGaWxlTG9ja0JhY2tlbmRbXTtcbiAgLyoqXG4gICAqIFN0b3Agd2FpdGluZyBhbmQgdGhyb3cgYWZ0ZXIgdGhpcyBtYW55IG1pbGxpc2Vjb25kcy4gT21pdCB0byBwb2xsIGZvcmV2ZXIuXG4gICAqIFRoaXMgaXMgdGhlIG9ubHkgd2FpdC1sb29wIGtub2I7IHN0YWxlIHJlY2xhaW0gdGltaW5nIGlzIGZpeGVkLlxuICAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogSW52b2tlZCBvbmNlIHRoZSBiYWNrZW5kIGZvciB0aGlzIGNhbGwgaGFzIGJlZW4gY2hvc2VuLiAqL1xuICBvbkFjcXVpcmU/OiAoYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24pID0+IHZvaWQ7XG4gIC8qKiBJbnZva2VkIG9uY2Ugd2hlbiB0aGUgc2VsZWN0ZWQgbG9jayBpcyBhbHJlYWR5IGhlbGQgYnkgYW5vdGhlciBwcm9jZXNzLiAqL1xuICBvbldhaXQ/OiAoYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24pID0+IHZvaWQ7XG59XG5cbi8qKiBFeHBsaWNpdCBjcm9zcy1wcm9jZXNzIGxlYXNlIHJldHVybmVkIGJ5IHtAbGluayBhY3F1aXJlRmlsZUxvY2t9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlTG9ja0xlYXNlIGV4dGVuZHMgRmlsZUxvY2tBY3F1aXNpdGlvbiB7XG4gIC8qKiBSZWxlYXNlIHRoZSBoZWxkIGxvY2suIFJlcGVhdGVkIGNhbGxzIGFyZSBzYWZlLiAqL1xuICByZWxlYXNlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgRmxvY2tGbiA9IChmZDogbnVtYmVyLCBvcGVyYXRpb246IG51bWJlcikgPT4gbnVtYmVyO1xuXG5pbnRlcmZhY2UgQnVuRmZpTW9kdWxlIHtcbiAgZGxvcGVuOiAoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHsgYXJnczogc3RyaW5nW107IHJldHVybnM6IHN0cmluZyB9PixcbiAgKSA9PiB7IHN5bWJvbHM6IHsgZmxvY2s6IEZsb2NrRm4gfSB9O1xuICBzdWZmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdW4gYGZuYCB3aGlsZSBob2xkaW5nIGEgY3Jvc3MtcHJvY2VzcyBsb2NrIG5hbWVkIGJ5IGBrZXlgLlxuICpcbiAqIGBrZXlgIGlzIGNhbm9uaWNhbGl6ZWQgd2l0aCBgb2JqZWN0LnRvU3RhYmxlS2V5YCwgdGhlIHNhbWUgaWRlbnRpdHkgcnVsZSBhc1xuICogcHJvY2VzcyBhbmQgUG9zdGdyZXMgYWR2aXNvcnkgbG9ja3MuXG4gKlxuICogQGV4YW1wbGVcbiAqIGF3YWl0IHdpdGhGaWxlTG9jayhbXCJjYWNoZVwiLCBcImFwcGtpdFwiXSwgYXN5bmMgKCkgPT4ge1xuICogICBhd2FpdCBtaWdyYXRlKCk7XG4gKiB9KTtcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhGaWxlTG9jazxUPihcbiAga2V5OiB1bmtub3duLFxuICBmbjogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gIG9wdGlvbnM6IEZpbGVMb2NrT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxUPiB7XG4gIGlmIChvcHRpb25zLnRpbWVvdXRNcyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMudGltZW91dE1zIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJ0aW1lb3V0TXMgbXVzdCBiZSBub24tbmVnYXRpdmVcIik7XG4gIH1cbiAgY29uc3QgaWQgPSBsb2NrSWQoa2V5KTtcbiAgY29uc3QgYmFja2VuZHMgPSBvcHRpb25zLmJhY2tlbmRzID8/IERFRkFVTFRfQkFDS0VORFM7XG4gIGNvbnN0IGRpciA9IG9wdGlvbnMuZGlyID8/IGpvaW4odG1wZGlyKCksIFwiZGJ4LXRvb2xzLWxvY2tzXCIpO1xuICBjb25zdCBkZWFkbGluZSA9IG9wdGlvbnMudGltZW91dE1zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBEYXRlLm5vdygpICsgb3B0aW9ucy50aW1lb3V0TXM7XG5cbiAgZm9yIChjb25zdCBiYWNrZW5kIG9mIGJhY2tlbmRzKSB7XG4gICAgc3dpdGNoIChiYWNrZW5kKSB7XG4gICAgICBjYXNlIFwiZmxvY2tcIjoge1xuICAgICAgICBjb25zdCBsb2NrUGF0aCA9IGpvaW4oZGlyLCBgJHtpZH0uZmxvY2tgKTtcbiAgICAgICAgY29uc3QgZmxvY2sgPSBhd2FpdCByZXNvbHZlRmxvY2soKTtcbiAgICAgICAgaWYgKCFmbG9jaykge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcImxvY2sgYmFja2VuZCB1bmF2YWlsYWJsZVwiLCB7IGJhY2tlbmQsIGtleTogaWQgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiYWNxdWlyaW5nIGxvY2tcIiwgeyBiYWNrZW5kLCBrZXk6IGlkLCBwYXRoOiBsb2NrUGF0aCB9KTtcbiAgICAgICAgY29uc3QgYWNxdWlzaXRpb24gPSB7IGJhY2tlbmQgfSBhcyBjb25zdDtcbiAgICAgICAgb3B0aW9ucy5vbkFjcXVpcmU/LihhY3F1aXNpdGlvbik7XG4gICAgICAgIHJldHVybiBob2xkRmxvY2sobG9ja1BhdGgsIGZsb2NrLCBkZWFkbGluZSwgZm4sICgpID0+IG9wdGlvbnMub25XYWl0Py4oYWNxdWlzaXRpb24pKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJmaWxlXCI6IHtcbiAgICAgICAgY29uc3QgbG9ja1BhdGggPSBqb2luKGRpciwgaWQpO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJhY3F1aXJpbmcgbG9ja1wiLCB7IGJhY2tlbmQsIGtleTogaWQsIHBhdGg6IGxvY2tQYXRoIH0pO1xuICAgICAgICBjb25zdCBhY3F1aXNpdGlvbiA9IHsgYmFja2VuZCB9IGFzIGNvbnN0O1xuICAgICAgICBvcHRpb25zLm9uQWNxdWlyZT8uKGFjcXVpc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuIGhvbGRMb2NrRGlyZWN0b3J5KGxvY2tQYXRoLCBkZWFkbGluZSwgZm4sICgpID0+IG9wdGlvbnMub25XYWl0Py4oYWNxdWlzaXRpb24pKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gYmFja2VuZDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGZpbGUtbG9jayBiYWNrZW5kOiAke1N0cmluZyhfZXhoYXVzdGl2ZSl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwid2l0aEZpbGVMb2NrOiBubyBsb2NrIGJhY2tlbmQgYXZhaWxhYmxlXCIpO1xufVxuXG4vKipcbiAqIEFjcXVpcmUgYSBjcm9zcy1wcm9jZXNzIGxvY2sgYW5kIHJldHVybiBhbiBleHBsaWNpdCBsZWFzZS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIHdpdGhGaWxlTG9ja30gZm9yIG9yZGluYXJ5IEphdmFTY3JpcHQgY2FsbGVycy4gVGhpcyBsb3dlci1sZXZlbFxuICogc2hhcGUgZXhpc3RzIGZvciBzdG9yYWdlIGFkYXB0ZXJzIGFuZCBjcm9zcy1sYW5ndWFnZSBicmlkZ2VzIHRoYXQgY2Fubm90XG4gKiBjb252ZW5pZW50bHkgcGFzcyBhbiBhc3luYyBjYWxsYmFjayB0aHJvdWdoIHRoZWlyIEZGSSBib3VuZGFyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjcXVpcmVGaWxlTG9jayhcbiAga2V5OiB1bmtub3duLFxuICBvcHRpb25zOiBGaWxlTG9ja09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8RmlsZUxvY2tMZWFzZT4ge1xuICBsZXQgYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24gfCB1bmRlZmluZWQ7XG4gIGxldCByZXNvbHZlQWNxdWlyZWQhOiAoKSA9PiB2b2lkO1xuICBsZXQgcmVqZWN0QWNxdWlyZWQhOiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG4gIGxldCByZXNvbHZlUmVsZWFzZSE6ICgpID0+IHZvaWQ7XG4gIGNvbnN0IGFjcXVpcmVkID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlc29sdmVBY3F1aXJlZCA9IHJlc29sdmU7XG4gICAgcmVqZWN0QWNxdWlyZWQgPSByZWplY3Q7XG4gIH0pO1xuICBjb25zdCByZWxlYXNlZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgcmVzb2x2ZVJlbGVhc2UgPSByZXNvbHZlO1xuICB9KTtcbiAgY29uc3QgcnVuID0gd2l0aEZpbGVMb2NrKFxuICAgIGtleSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXNvbHZlQWNxdWlyZWQoKTtcbiAgICAgIGF3YWl0IHJlbGVhc2VkO1xuICAgIH0sXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG9uQWNxdWlyZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGFjcXVpc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIG9wdGlvbnMub25BY3F1aXJlPy4odmFsdWUpO1xuICAgICAgfSxcbiAgICB9LFxuICApO1xuICB2b2lkIHJ1bi5jYXRjaChyZWplY3RBY3F1aXJlZCk7XG4gIGF3YWl0IGFjcXVpcmVkO1xuICBpZiAoIWFjcXVpc2l0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlLWxvY2sgYmFja2VuZCB3YXMgbm90IHJlY29yZGVkXCIpO1xuXG4gIGxldCBhY3RpdmUgPSB0cnVlO1xuICByZXR1cm4ge1xuICAgIC4uLmFjcXVpc2l0aW9uLFxuICAgIGFzeW5jIHJlbGVhc2UoKSB7XG4gICAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuO1xuICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICByZXNvbHZlUmVsZWFzZSgpO1xuICAgICAgYXdhaXQgcnVuO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBDYW5vbmljYWwgZmlsZXN5c3RlbS1zYWZlIGlkIGZvciBhIGxvY2sga2V5LiAqL1xuZnVuY3Rpb24gbG9ja0lkKGtleTogdW5rbm93bik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YWJsZSA9IG9iamVjdFxuICAgIC50b09uZU9yTWFueShrZXkpXG4gICAgLm1hcCgocGFydCkgPT4gb2JqZWN0LnRvU3RhYmxlS2V5KHBhcnQpKVxuICAgIC5qb2luKFwiXFx1MDAwMFwiKTtcbiAgLy8gU2hvcnQgZGlnZXN0IHNvIHBhdGhzIHN0YXkgd2VsbCB1bmRlciBPUyBsaW1pdHM7IGNvbGxpc2lvbnMgYXJlIGZpbmUg4oCUIHRoZXlcbiAgLy8gb25seSBtZXJnZSBjcml0aWNhbCBzZWN0aW9ucyB0aGF0IGFscmVhZHkgc2hhcmVkIGEga2V5IHN0cmluZy5cbiAgcmV0dXJuIGhhc2guZm52SGFzaChzdGFibGUpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYGZsb2NrKDIpYCB0aHJvdWdoIEJ1biBGRkkgd2hlbiBwb3NzaWJsZS5cbiAqXG4gKiBNZW1vaXplZDogdGhlIEZGSSBpbXBvcnQgKyBsaWJjIGBkbG9wZW5gIHJ1biBvbmNlIHBlciBwcm9jZXNzLiBSZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCBvbiBXaW5kb3dzLCB1bmRlciBwbGFpbiBOb2RlLCBvciB3aGVuIGxpYmMgY2Fubm90IGJlIGxvYWRlZCDigJRcbiAqIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHRvIHRoZSBuZXh0IGJhY2tlbmQuIEEgbWlzcyBpcyBjYWNoZWQgdG9vLCBzbyBhIHByb2Nlc3NcbiAqIHRoYXQgY2Fubm90IGZsb2NrIG5ldmVyIHJldHJpZXMgdGhlIGxvYWQuXG4gKi9cbmNvbnN0IHJlc29sdmVGbG9jayA9IGZ1bmN0aW9uVXRpbHMubWVtb2l6ZShhc3luYyAoKTogUHJvbWlzZTxGbG9ja0ZuIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghcHJvY2Vzcy52ZXJzaW9ucy5idW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICAvLyBEeW5hbWljIHNwZWNpZmllciBzbyBgdHNjYCAobm8gYEB0eXBlc2AgZm9yIGBidW46ZmZpYCkgZG9lcyBub3QgcmVzb2x2ZSBpdDtcbiAgICAvLyB0aGUgaW1wb3J0IG9ubHkgc3VjY2VlZHMgdW5kZXIgQnVuIGF0IHJ1bnRpbWUuXG4gICAgY29uc3Qgc3BlY2lmaWVyID0gXCJidW46ZmZpXCI7XG4gICAgY29uc3QgZmZpID0gKGF3YWl0IGltcG9ydChzcGVjaWZpZXIpKSBhcyB1bmtub3duIGFzIEJ1bkZmaU1vZHVsZTtcbiAgICBjb25zdCBsaWJQYXRoID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJkYXJ3aW5cIiA/IFwibGliU3lzdGVtLkIuZHlsaWJcIiA6IGBsaWJjLiR7ZmZpLnN1ZmZpeH1gO1xuICAgIGNvbnN0IGxpYiA9IGZmaS5kbG9wZW4obGliUGF0aCwge1xuICAgICAgZmxvY2s6IHsgYXJnczogW1wiaTMyXCIsIFwiaTMyXCJdLCByZXR1cm5zOiBcImkzMlwiIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGxpYi5zeW1ib2xzLmZsb2NrO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImZsb2NrIEZGSSB1bmF2YWlsYWJsZVwiLCB7IGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShjYXVzZSkgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIGhvbGRGbG9jazxUPihcbiAgbG9ja1BhdGg6IHN0cmluZyxcbiAgZmxvY2s6IEZsb2NrRm4sXG4gIGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGZuOiAoKSA9PiBUIHwgUHJvbWlzZTxUPixcbiAgb25XYWl0OiAoKSA9PiB2b2lkLFxuKTogUHJvbWlzZTxUPiB7XG4gIGF3YWl0IGVuc3VyZVBhcmVudERpcihsb2NrUGF0aCk7XG4gIGNvbnN0IGhhbmRsZSA9IGF3YWl0IG9wZW4obG9ja1BhdGgsIFwiYStcIik7XG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckZsb2NrKGhhbmRsZS5mZCwgZmxvY2ssIGxvY2tQYXRoLCBkZWFkbGluZSwgb25XYWl0KTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGZsb2NrKGhhbmRsZS5mZCwgTE9DS19VTik7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGhhbmRsZS5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yRmxvY2soXG4gIGZkOiBudW1iZXIsXG4gIGZsb2NrOiBGbG9ja0ZuLFxuICBsb2NrUGF0aDogc3RyaW5nLFxuICBkZWFkbGluZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBvbldhaXQ6ICgpID0+IHZvaWQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHdhaXRpbmcgPSBmYWxzZTtcbiAgZm9yICg7Oykge1xuICAgIGNvbnN0IHJjID0gZmxvY2soZmQsIExPQ0tfRVggfCBMT0NLX05CKTtcbiAgICBpZiAocmMgPT09IDApIHJldHVybjtcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgb25XYWl0KCk7XG4gICAgfVxuICAgIGFzc2VydEJlZm9yZURlYWRsaW5lKGxvY2tQYXRoLCBkZWFkbGluZSk7XG4gICAgYXdhaXQgYXN5bmNVdGlscy5zbGVlcChQT0xMX01TKTtcbiAgfVxufVxuXG4vKipcbiAqIFBvcnRhYmxlIGxvY2stZGlyZWN0b3J5IG93bmVyc2hpcCB0aHJvdWdoIGBwcm9wZXItbG9ja2ZpbGVgLlxuICovXG5hc3luYyBmdW5jdGlvbiBob2xkTG9ja0RpcmVjdG9yeTxUPihcbiAgbG9ja1BhdGg6IHN0cmluZyxcbiAgZGVhZGxpbmU6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+LFxuICBvbldhaXQ6ICgpID0+IHZvaWQsXG4pOiBQcm9taXNlPFQ+IHtcbiAgYXdhaXQgZW5zdXJlUGFyZW50RGlyKGxvY2tQYXRoKTtcbiAgY29uc3QgcmVsZWFzZSA9IGF3YWl0IGFjcXVpcmVMb2NrRGlyZWN0b3J5KGxvY2tQYXRoLCBkZWFkbGluZSwgb25XYWl0KTtcbiAgbGV0IGNhbGxiYWNrRXJyb3I6IHVua25vd247XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FsbGJhY2tFcnJvciA9IGVycm9yO1xuICAgIHRocm93IGVycm9yO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZWxlYXNlKCk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIGlmIChjYWxsYmFja0Vycm9yID09PSB1bmRlZmluZWQgfHwgKGNhdXNlIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gXCJFUkVMRUFTRURcIikge1xuICAgICAgICB0aHJvdyBjYXVzZTtcbiAgICAgIH1cbiAgICAgIGxvZ2dlci53YXJuKFwibG9jayByZWxlYXNlIHdhcyBhbHJlYWR5IGNvbXBsZXRlZCBhZnRlciBjYWxsYmFjayBmYWlsdXJlXCIsIHtcbiAgICAgICAgcGF0aDogbG9ja1BhdGgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYWNxdWlyZUxvY2tEaXJlY3RvcnkoXG4gIGxvY2tQYXRoOiBzdHJpbmcsXG4gIGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIG9uV2FpdDogKCkgPT4gdm9pZCxcbik6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgd2FpdGluZyA9IGZhbHNlO1xuICBmb3IgKDs7KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBsb2NrZmlsZS5sb2NrKGxvY2tQYXRoLCB7XG4gICAgICAgIHJlYWxwYXRoOiBmYWxzZSxcbiAgICAgICAgc3RhbGU6IFNUQUxFX01TLFxuICAgICAgICB1cGRhdGU6IFVQREFURV9NUyxcbiAgICAgICAgcmV0cmllczogMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICBjb25zdCBlcnIgPSBjYXVzZSBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb247XG4gICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRUxPQ0tFRFwiKSB0aHJvdyBlcnJvclV0aWxzLnRvRXJyb3IoY2F1c2UpO1xuICAgICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgICBvbldhaXQoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydEJlZm9yZURlYWRsaW5lKGxvY2tQYXRoLCBkZWFkbGluZSk7XG4gICAgICBhd2FpdCBhc3luY1V0aWxzLnNsZWVwKFBPTExfTVMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRCZWZvcmVEZWFkbGluZShsb2NrUGF0aDogc3RyaW5nLCBkZWFkbGluZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGlmIChkZWFkbGluZSAhPT0gdW5kZWZpbmVkICYmIERhdGUubm93KCkgPj0gZGVhZGxpbmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBmaWxlIGxvY2s6ICR7bG9ja1BhdGh9YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGFyZW50RGlyKGxvY2tQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbWtkaXIoZGlybmFtZShsb2NrUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xufVxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbGUtbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRzs7Ozs7Ozs7O0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxLQUFLLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEtBQUssYUFBYSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxJQUFJLE1BQU0sNkJBQTZCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sUUFBUSxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUs1QyxNQUFNLGdCQUFnQixHQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTlELDJEQUEyRDtBQUMzRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFFbkI7Ozs7R0FJRztBQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUUzRSwrRUFBK0U7QUFDL0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksUUFBUSxH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QUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxRQUFnQjtJQUM3QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXNjYWRpbmcgY3Jvc3MtcHJvY2VzcyBtdXR1YWwgZXhjbHVzaW9uIHZpYSBhIGxvY2tmaWxlLlxuICpcbiAqIFNlcmlhbGl6ZXMgY29uY3VycmVudCAqcHJvY2Vzc2VzKiAodHdvIGBidW4gcnVuIGRlbW9gIHNoZWxscywgYSBDTEkgYmVzaWRlIGFcbiAqIHNlcnZlcikgb24gdGhlIHNhbWUga2V5LiBGb3IgaW4tcHJvY2VzcyAvIHdvcmtlci10aHJlYWQgZXhjbHVzaW9uIHVzZVxuICoge0BsaW5rIHdpdGhQcm9jZXNzTG9ja30gZnJvbSBgLi9wcm9jZXNzLWxvY2sudHNgIGluc3RlYWQuXG4gKlxuICogQmFja2VuZHM6XG4gKlxuICogMS4gKipmaWxlKiogKGRlZmF1bHQpIOKAlCBgcHJvcGVyLWxvY2tmaWxlYCBhdG9taWMgbG9jay1kaXJlY3RvcnkgY3JlYXRpb24sXG4gKiAgICBoZWFydGJlYXQsIHN0YWxlIHJlY292ZXJ5LCBhbmQgb3duZXJzaGlwLXNhZmUgcmVsZWFzZS4gQnVuIGFuZCBOb2RlIHVzZVxuICogICAgdGhpcyBzYW1lIHByb3RvY29sLlxuICogMi4gKipmbG9jayoqIChleHBsaWNpdCBjb21wYXRpYmlsaXR5IG9wdGlvbikg4oCUIGBmbG9jaygyKWAgdmlhIEJ1biBGRkkgb25cbiAqICAgIFVuaXguIEl0IHJlbWFpbnMgYXZhaWxhYmxlIHRvIGNhbGxlcnMgdGhhdCBzZWxlY3RlZCBpdCBleHBsaWNpdGx5LCBidXQgYVxuICogICAgcnVudGltZS1kZXBlbmRlbnQgY2FzY2FkZSBjYW5ub3QgY29vcmRpbmF0ZSBCdW4gYW5kIE5vZGUuXG4gKlxuICogVGhlIGZpcnN0IGJhY2tlbmQgdGhhdCBjYW4gYmUgKmluaXRpYWxpemVkKiBpcyB1c2VkIGZvciB0aGUgd2hvbGUgY2FsbC4gQSBidXN5XG4gKiBsb2NrIHdhaXRzOyBhbiB1bmF2YWlsYWJsZSBiYWNrZW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlIG5leHQuIENhbGxlcnMgbWF5IG9ubHlcbiAqIGJvdW5kIGhvdyBsb25nIHRvIHdhaXQgKHtAbGluayBGaWxlTG9ja09wdGlvbnMudGltZW91dE1zfSk7IHN0YWxlIHRpbWluZyBpc1xuICogbm90IGNvbmZpZ3VyYWJsZSBzbyBldmVyeSBob2xkZXIgYW5kIHdhaXRlciBhZ3JlZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IG1rZGlyLCBvcGVuIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgKiBhcyBhc3luY1V0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBlcnJvclV0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2Vycm9yLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBmdW5jdGlvblV0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2Z1bmN0aW9uLXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBoYXNoIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2hhc2hcIjtcbmltcG9ydCAqIGFzIGxvZyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9sb2dcIjtcbmltcG9ydCAqIGFzIG9iamVjdCBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9vYmplY3RcIjtcbmltcG9ydCBsb2NrZmlsZSBmcm9tIFwicHJvcGVyLWxvY2tmaWxlXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJjb3JlOmZpbGUtbG9ja1wiKTtcblxuLyoqIEJhY2tlbmRzIHtAbGluayB3aXRoRmlsZUxvY2t9IGNhbiBhdHRlbXB0LCBpbiBjYXNjYWRlIG9yZGVyLiAqL1xuZXhwb3J0IHR5cGUgRmlsZUxvY2tCYWNrZW5kID0gXCJmbG9ja1wiIHwgXCJmaWxlXCI7XG5cbmNvbnN0IERFRkFVTFRfQkFDS0VORFM6IHJlYWRvbmx5IEZpbGVMb2NrQmFja2VuZFtdID0gW1wiZmlsZVwiXTtcblxuLyoqIFBvbGwgaW50ZXJ2YWwgd2hpbGUgd2FpdGluZyBmb3IgYSBjb250ZW5kZWQgT1MgbG9jay4gKi9cbmNvbnN0IFBPTExfTVMgPSA1MDtcblxuLyoqXG4gKiBBZ2UgYWZ0ZXIgd2hpY2ggYW4gdW5yZWZyZXNoZWQgbG9jayBkaXJlY3RvcnkgbWF5IGJlIHJlbW92ZWQuXG4gKiBNYXRjaGVzIGBwcm9wZXItbG9ja2ZpbGVgJ3MgZGVmYXVsdC4gTm90IGNhbGxlci1jb25maWd1cmFibGU6IGV2ZXJ5IHByb2Nlc3NcbiAqIG11c3Qgc2hhcmUgdGhlIHNhbWUgdGhyZXNob2xkIG9yIGEgbGl2ZSBob2xkZXIgY2FuIGJlIG1pc3Rha2VuIGZvciBzdGFsZS5cbiAqL1xuY29uc3QgU1RBTEVfTVMgPSBvYmplY3QudG9OdW1iZXIocHJvY2Vzcy5lbnYuRklMRV9MT0NLX1NUQUxFX01TKSA/PyAxMF8wMDA7XG5cbi8qKiBIZWFydGJlYXQgaW50ZXJ2YWwgZm9yIHJlZnJlc2hpbmcgbG9jay1kaXJlY3RvcnkgbXRpbWUgKGBTVEFMRV9NUyAvIDJgKS4gKi9cbmNvbnN0IFVQREFURV9NUyA9IG9iamVjdC50b051bWJlcihwcm9jZXNzLmVudi5GSUxFX0xPQ0tfVVBEQVRFX01TKSA/PyBTVEFMRV9NUyAvIDI7XG5cbi8qKiBgZmxvY2soMilgIG9wZXJhdGlvbiBiaXRzIChMaW51eCAvIG1hY09TIC8gQlNEKS4gKi9cbmNvbnN0IExPQ0tfRVggPSAyO1xuY29uc3QgTE9DS19OQiA9IDQ7XG5jb25zdCBMT0NLX1VOID0gODtcblxuLyoqIFJlc3VsdCBtZXRhZGF0YSB3aGVuIGEgY2FsbGVyIHdhbnRzIHRvIGtub3cgd2hpY2ggYmFja2VuZCByYW4uICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVMb2NrQWNxdWlzaXRpb24ge1xuICBiYWNrZW5kOiBGaWxlTG9ja0JhY2tlbmQ7XG59XG5cbi8qKiBCYWNrZW5kIHNlbGVjdGlvbiwgd2FpdCBwb2xpY3ksIGFuZCBsaWZlY3ljbGUgY2FsbGJhY2tzIGZvciBhIGNyb3NzLXByb2Nlc3MgbG9jay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxvY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSBmb3IgbG9ja2ZpbGVzLiBEZWZhdWx0cyB0byBgJFRNUERJUi9kYngtdG9vbHMtbG9ja3NgLlxuICAgKi9cbiAgZGlyPzogc3RyaW5nO1xuICAvKiogT3ZlcnJpZGUgdGhlIGJhY2tlbmQgbGlzdC4gRGVmYXVsdHMgdG8gdGhlIHBvcnRhYmxlIGBmaWxlYCBwcm90b2NvbC4gKi9cbiAgYmFja2VuZHM/OiByZWFkb25seSBGaWxlTG9ja0JhY2tlbmRbXTtcbiAgLyoqXG4gICAqIFN0b3Agd2FpdGluZyBhbmQgdGhyb3cgYWZ0ZXIgdGhpcyBtYW55IG1pbGxpc2Vjb25kcy4gT21pdCB0byBwb2xsIGZvcmV2ZXIuXG4gICAqIFRoaXMgaXMgdGhlIG9ubHkgd2FpdC1sb29wIGtub2I7IHN0YWxlIHJlY2xhaW0gdGltaW5nIGlzIGZpeGVkLlxuICAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogSW52b2tlZCBvbmNlIHRoZSBiYWNrZW5kIGZvciB0aGlzIGNhbGwgaGFzIGJlZW4gY2hvc2VuLiAqL1xuICBvbkFjcXVpcmU/OiAoYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24pID0+IHZvaWQ7XG4gIC8qKiBJbnZva2VkIG9uY2Ugd2hlbiB0aGUgc2VsZWN0ZWQgbG9jayBpcyBhbHJlYWR5IGhlbGQgYnkgYW5vdGhlciBwcm9jZXNzLiAqL1xuICBvbldhaXQ/OiAoYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24pID0+IHZvaWQ7XG59XG5cbi8qKiBFeHBsaWNpdCBjcm9zcy1wcm9jZXNzIGxlYXNlIHJldHVybmVkIGJ5IHtAbGluayBhY3F1aXJlRmlsZUxvY2t9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlTG9ja0xlYXNlIGV4dGVuZHMgRmlsZUxvY2tBY3F1aXNpdGlvbiB7XG4gIC8qKiBSZWxlYXNlIHRoZSBoZWxkIGxvY2suIFJlcGVhdGVkIGNhbGxzIGFyZSBzYWZlLiAqL1xuICByZWxlYXNlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgRmxvY2tGbiA9IChmZDogbnVtYmVyLCBvcGVyYXRpb246IG51bWJlcikgPT4gbnVtYmVyO1xuXG5pbnRlcmZhY2UgQnVuRmZpTW9kdWxlIHtcbiAgZGxvcGVuOiAoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHsgYXJnczogc3RyaW5nW107IHJldHVybnM6IHN0cmluZyB9PixcbiAgKSA9PiB7IHN5bWJvbHM6IHsgZmxvY2s6IEZsb2NrRm4gfSB9O1xuICBzdWZmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdW4gYGZuYCB3aGlsZSBob2xkaW5nIGEgY3Jvc3MtcHJvY2VzcyBsb2NrIG5hbWVkIGJ5IGBrZXlgLlxuICpcbiAqIGBrZXlgIGlzIGNhbm9uaWNhbGl6ZWQgd2l0aCBgb2JqZWN0LnRvU3RhYmxlS2V5YCwgdGhlIHNhbWUgaWRlbnRpdHkgcnVsZSBhc1xuICogcHJvY2VzcyBhbmQgUG9zdGdyZXMgYWR2aXNvcnkgbG9ja3MuXG4gKlxuICogQGV4YW1wbGVcbiAqIGF3YWl0IHdpdGhGaWxlTG9jayhbXCJjYWNoZVwiLCBcImFwcGtpdFwiXSwgYXN5bmMgKCkgPT4ge1xuICogICBhd2FpdCBtaWdyYXRlKCk7XG4gKiB9KTtcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhGaWxlTG9jazxUPihcbiAga2V5OiB1bmtub3duLFxuICBmbjogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gIG9wdGlvbnM6IEZpbGVMb2NrT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxUPiB7XG4gIGlmIChvcHRpb25zLnRpbWVvdXRNcyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMudGltZW91dE1zIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJ0aW1lb3V0TXMgbXVzdCBiZSBub24tbmVnYXRpdmVcIik7XG4gIH1cbiAgY29uc3QgaWQgPSBsb2NrSWQoa2V5KTtcbiAgY29uc3QgYmFja2VuZHMgPSBvcHRpb25zLmJhY2tlbmRzID8/IERFRkFVTFRfQkFDS0VORFM7XG4gIGNvbnN0IGRpciA9IG9wdGlvbnMuZGlyID8/IGpvaW4odG1wZGlyKCksIFwiZGJ4LXRvb2xzLWxvY2tzXCIpO1xuICBjb25zdCBkZWFkbGluZSA9IG9wdGlvbnMudGltZW91dE1zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBEYXRlLm5vdygpICsgb3B0aW9ucy50aW1lb3V0TXM7XG5cbiAgZm9yIChjb25zdCBiYWNrZW5kIG9mIGJhY2tlbmRzKSB7XG4gICAgc3dpdGNoIChiYWNrZW5kKSB7XG4gICAgICBjYXNlIFwiZmxvY2tcIjoge1xuICAgICAgICBjb25zdCBsb2NrUGF0aCA9IGpvaW4oZGlyLCBgJHtpZH0uZmxvY2tgKTtcbiAgICAgICAgY29uc3QgZmxvY2sgPSBhd2FpdCByZXNvbHZlRmxvY2soKTtcbiAgICAgICAgaWYgKCFmbG9jaykge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcImxvY2sgYmFja2VuZCB1bmF2YWlsYWJsZVwiLCB7IGJhY2tlbmQsIGtleTogaWQgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiYWNxdWlyaW5nIGxvY2tcIiwgeyBiYWNrZW5kLCBrZXk6IGlkLCBwYXRoOiBsb2NrUGF0aCB9KTtcbiAgICAgICAgY29uc3QgYWNxdWlzaXRpb24gPSB7IGJhY2tlbmQgfSBhcyBjb25zdDtcbiAgICAgICAgb3B0aW9ucy5vbkFjcXVpcmU/LihhY3F1aXNpdGlvbik7XG4gICAgICAgIHJldHVybiBob2xkRmxvY2sobG9ja1BhdGgsIGZsb2NrLCBkZWFkbGluZSwgZm4sICgpID0+IG9wdGlvbnMub25XYWl0Py4oYWNxdWlzaXRpb24pKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJmaWxlXCI6IHtcbiAgICAgICAgY29uc3QgbG9ja1BhdGggPSBqb2luKGRpciwgaWQpO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJhY3F1aXJpbmcgbG9ja1wiLCB7IGJhY2tlbmQsIGtleTogaWQsIHBhdGg6IGxvY2tQYXRoIH0pO1xuICAgICAgICBjb25zdCBhY3F1aXNpdGlvbiA9IHsgYmFja2VuZCB9IGFzIGNvbnN0O1xuICAgICAgICBvcHRpb25zLm9uQWNxdWlyZT8uKGFjcXVpc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuIGhvbGRMb2NrRGlyZWN0b3J5KGxvY2tQYXRoLCBkZWFkbGluZSwgZm4sICgpID0+IG9wdGlvbnMub25XYWl0Py4oYWNxdWlzaXRpb24pKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gYmFja2VuZDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGZpbGUtbG9jayBiYWNrZW5kOiAke1N0cmluZyhfZXhoYXVzdGl2ZSl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwid2l0aEZpbGVMb2NrOiBubyBsb2NrIGJhY2tlbmQgYXZhaWxhYmxlXCIpO1xufVxuXG4vKipcbiAqIEFjcXVpcmUgYSBjcm9zcy1wcm9jZXNzIGxvY2sgYW5kIHJldHVybiBhbiBleHBsaWNpdCBsZWFzZS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIHdpdGhGaWxlTG9ja30gZm9yIG9yZGluYXJ5IEphdmFTY3JpcHQgY2FsbGVycy4gVGhpcyBsb3dlci1sZXZlbFxuICogc2hhcGUgZXhpc3RzIGZvciBzdG9yYWdlIGFkYXB0ZXJzIGFuZCBjcm9zcy1sYW5ndWFnZSBicmlkZ2VzIHRoYXQgY2Fubm90XG4gKiBjb252ZW5pZW50bHkgcGFzcyBhbiBhc3luYyBjYWxsYmFjayB0aHJvdWdoIHRoZWlyIEZGSSBib3VuZGFyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjcXVpcmVGaWxlTG9jayhcbiAga2V5OiB1bmtub3duLFxuICBvcHRpb25zOiBGaWxlTG9ja09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8RmlsZUxvY2tMZWFzZT4ge1xuICBsZXQgYWNxdWlzaXRpb246IEZpbGVMb2NrQWNxdWlzaXRpb24gfCB1bmRlZmluZWQ7XG4gIGxldCByZXNvbHZlQWNxdWlyZWQhOiAoKSA9PiB2b2lkO1xuICBsZXQgcmVqZWN0QWNxdWlyZWQhOiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG4gIGxldCByZXNvbHZlUmVsZWFzZSE6ICgpID0+IHZvaWQ7XG4gIGNvbnN0IGFjcXVpcmVkID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlc29sdmVBY3F1aXJlZCA9IHJlc29sdmU7XG4gICAgcmVqZWN0QWNxdWlyZWQgPSByZWplY3Q7XG4gIH0pO1xuICBjb25zdCByZWxlYXNlZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgcmVzb2x2ZVJlbGVhc2UgPSByZXNvbHZlO1xuICB9KTtcbiAgY29uc3QgcnVuID0gd2l0aEZpbGVMb2NrKFxuICAgIGtleSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXNvbHZlQWNxdWlyZWQoKTtcbiAgICAgIGF3YWl0IHJlbGVhc2VkO1xuICAgIH0sXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG9uQWNxdWlyZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGFjcXVpc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIG9wdGlvbnMub25BY3F1aXJlPy4odmFsdWUpO1xuICAgICAgfSxcbiAgICB9LFxuICApO1xuICB2b2lkIHJ1bi5jYXRjaChyZWplY3RBY3F1aXJlZCk7XG4gIGF3YWl0IGFjcXVpcmVkO1xuICBpZiAoIWFjcXVpc2l0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlLWxvY2sgYmFja2VuZCB3YXMgbm90IHJlY29yZGVkXCIpO1xuXG4gIGxldCBhY3RpdmUgPSB0cnVlO1xuICByZXR1cm4ge1xuICAgIC4uLmFjcXVpc2l0aW9uLFxuICAgIGFzeW5jIHJlbGVhc2UoKSB7XG4gICAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuO1xuICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICByZXNvbHZlUmVsZWFzZSgpO1xuICAgICAgYXdhaXQgcnVuO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBDYW5vbmljYWwgZmlsZXN5c3RlbS1zYWZlIGlkIGZvciBhIGxvY2sga2V5LiAqL1xuZnVuY3Rpb24gbG9ja0lkKGtleTogdW5rbm93bik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YWJsZSA9IG9iamVjdFxuICAgIC50b09uZU9yTWFueShrZXkpXG4gICAgLm1hcCgocGFydCkgPT4gb2JqZWN0LnRvU3RhYmxlS2V5KHBhcnQpKVxuICAgIC5qb2luKFwiXFx1MDAwMFwiKTtcbiAgLy8gU2hvcnQgZGlnZXN0IHNvIHBhdGhzIHN0YXkgd2VsbCB1bmRlciBPUyBsaW1pdHM7IGNvbGxpc2lvbnMgYXJlIGZpbmUg4oCUIHRoZXlcbiAgLy8gb25seSBtZXJnZSBjcml0aWNhbCBzZWN0aW9ucyB0aGF0IGFscmVhZHkgc2hhcmVkIGEga2V5IHN0cmluZy5cbiAgcmV0dXJuIGhhc2guZm52SGFzaChzdGFibGUpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYGZsb2NrKDIpYCB0aHJvdWdoIEJ1biBGRkkgd2hlbiBwb3NzaWJsZS5cbiAqXG4gKiBNZW1vaXplZDogdGhlIEZGSSBpbXBvcnQgKyBsaWJjIGBkbG9wZW5gIHJ1biBvbmNlIHBlciBwcm9jZXNzLiBSZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCBvbiBXaW5kb3dzLCB1bmRlciBwbGFpbiBOb2RlLCBvciB3aGVuIGxpYmMgY2Fubm90IGJlIGxvYWRlZCDigJRcbiAqIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHRvIHRoZSBuZXh0IGJhY2tlbmQuIEEgbWlzcyBpcyBjYWNoZWQgdG9vLCBzbyBhIHByb2Nlc3NcbiAqIHRoYXQgY2Fubm90IGZsb2NrIG5ldmVyIHJldHJpZXMgdGhlIGxvYWQuXG4gKi9cbmNvbnN0IHJlc29sdmVGbG9jayA9IGZ1bmN0aW9uVXRpbHMubWVtb2l6ZShhc3luYyAoKTogUHJvbWlzZTxGbG9ja0ZuIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghcHJvY2Vzcy52ZXJzaW9ucy5idW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICAvLyBEeW5hbWljIHNwZWNpZmllciBzbyBgdHNjYCAobm8gYEB0eXBlc2AgZm9yIGBidW46ZmZpYCkgZG9lcyBub3QgcmVzb2x2ZSBpdDtcbiAgICAvLyB0aGUgaW1wb3J0IG9ubHkgc3VjY2VlZHMgdW5kZXIgQnVuIGF0IHJ1bnRpbWUuXG4gICAgY29uc3Qgc3BlY2lmaWVyID0gXCJidW46ZmZpXCI7XG4gICAgY29uc3QgZmZpID0gKGF3YWl0IGltcG9ydChzcGVjaWZpZXIpKSBhcyB1bmtub3duIGFzIEJ1bkZmaU1vZHVsZTtcbiAgICBjb25zdCBsaWJQYXRoID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJkYXJ3aW5cIiA/IFwibGliU3lzdGVtLkIuZHlsaWJcIiA6IGBsaWJjLiR7ZmZpLnN1ZmZpeH1gO1xuICAgIGNvbnN0IGxpYiA9IGZmaS5kbG9wZW4obGliUGF0aCwge1xuICAgICAgZmxvY2s6IHsgYXJnczogW1wiaTMyXCIsIFwiaTMyXCJdLCByZXR1cm5zOiBcImkzMlwiIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGxpYi5zeW1ib2xzLmZsb2NrO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImZsb2NrIEZGSSB1bmF2YWlsYWJsZVwiLCB7IGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoY2F1c2UpIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBob2xkRmxvY2s8VD4oXG4gIGxvY2tQYXRoOiBzdHJpbmcsXG4gIGZsb2NrOiBGbG9ja0ZuLFxuICBkZWFkbGluZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBmbjogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gIG9uV2FpdDogKCkgPT4gdm9pZCxcbik6IFByb21pc2U8VD4ge1xuICBhd2FpdCBlbnN1cmVQYXJlbnREaXIobG9ja1BhdGgpO1xuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBvcGVuKGxvY2tQYXRoLCBcImErXCIpO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JGbG9jayhoYW5kbGUuZmQsIGZsb2NrLCBsb2NrUGF0aCwgZGVhZGxpbmUsIG9uV2FpdCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmbG9jayhoYW5kbGUuZmQsIExPQ0tfVU4pO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBoYW5kbGUuY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvckZsb2NrKFxuICBmZDogbnVtYmVyLFxuICBmbG9jazogRmxvY2tGbixcbiAgbG9ja1BhdGg6IHN0cmluZyxcbiAgZGVhZGxpbmU6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgb25XYWl0OiAoKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCB3YWl0aW5nID0gZmFsc2U7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCByYyA9IGZsb2NrKGZkLCBMT0NLX0VYIHwgTE9DS19OQik7XG4gICAgaWYgKHJjID09PSAwKSByZXR1cm47XG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcbiAgICAgIG9uV2FpdCgpO1xuICAgIH1cbiAgICBhc3NlcnRCZWZvcmVEZWFkbGluZShsb2NrUGF0aCwgZGVhZGxpbmUpO1xuICAgIGF3YWl0IGFzeW5jVXRpbHMuc2xlZXAoUE9MTF9NUyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQb3J0YWJsZSBsb2NrLWRpcmVjdG9yeSBvd25lcnNoaXAgdGhyb3VnaCBgcHJvcGVyLWxvY2tmaWxlYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaG9sZExvY2tEaXJlY3Rvcnk8VD4oXG4gIGxvY2tQYXRoOiBzdHJpbmcsXG4gIGRlYWRsaW5lOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGZuOiAoKSA9PiBUIHwgUHJvbWlzZTxUPixcbiAgb25XYWl0OiAoKSA9PiB2b2lkLFxuKTogUHJvbWlzZTxUPiB7XG4gIGF3YWl0IGVuc3VyZVBhcmVudERpcihsb2NrUGF0aCk7XG4gIGNvbnN0IHJlbGVhc2UgPSBhd2FpdCBhY3F1aXJlTG9ja0RpcmVjdG9yeShsb2NrUGF0aCwgZGVhZGxpbmUsIG9uV2FpdCk7XG4gIGxldCBjYWxsYmFja0Vycm9yOiB1bmtub3duO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhbGxiYWNrRXJyb3IgPSBlcnJvcjtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmVsZWFzZSgpO1xuICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tFcnJvciA9PT0gdW5kZWZpbmVkIHx8IChjYXVzZSBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09IFwiRVJFTEVBU0VEXCIpIHtcbiAgICAgICAgdGhyb3cgY2F1c2U7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybihcImxvY2sgcmVsZWFzZSB3YXMgYWxyZWFkeSBjb21wbGV0ZWQgYWZ0ZXIgY2FsbGJhY2sgZmFpbHVyZVwiLCB7XG4gICAgICAgIHBhdGg6IGxvY2tQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFjcXVpcmVMb2NrRGlyZWN0b3J5KFxuICBsb2NrUGF0aDogc3RyaW5nLFxuICBkZWFkbGluZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBvbldhaXQ6ICgpID0+IHZvaWQsXG4pOiBQcm9taXNlPCgpID0+IFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IHdhaXRpbmcgPSBmYWxzZTtcbiAgZm9yICg7Oykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbG9ja2ZpbGUubG9jayhsb2NrUGF0aCwge1xuICAgICAgICByZWFscGF0aDogZmFsc2UsXG4gICAgICAgIHN0YWxlOiBTVEFMRV9NUyxcbiAgICAgICAgdXBkYXRlOiBVUERBVEVfTVMsXG4gICAgICAgIHJldHJpZXM6IDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChjYXVzZSkge1xuICAgICAgY29uc3QgZXJyID0gY2F1c2UgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgICAgaWYgKGVyci5jb2RlICE9PSBcIkVMT0NLRURcIikgdGhyb3cgZXJyb3JVdGlscy50b0Vycm9yKGNhdXNlKTtcbiAgICAgIGlmICghd2FpdGluZykge1xuICAgICAgICB3YWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgb25XYWl0KCk7XG4gICAgICB9XG4gICAgICBhc3NlcnRCZWZvcmVEZWFkbGluZShsb2NrUGF0aCwgZGVhZGxpbmUpO1xuICAgICAgYXdhaXQgYXN5bmNVdGlscy5zbGVlcChQT0xMX01TKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0QmVmb3JlRGVhZGxpbmUobG9ja1BhdGg6IHN0cmluZywgZGVhZGxpbmU6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoZGVhZGxpbmUgIT09IHVuZGVmaW5lZCAmJiBEYXRlLm5vdygpID49IGRlYWRsaW5lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgZmlsZSBsb2NrOiAke2xvY2tQYXRofWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVBhcmVudERpcihsb2NrUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG1rZGlyKGRpcm5hbWUobG9ja1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "typescript": "^5.9.3"
26
26
  },
27
27
  "dependencies": {
28
- "@dbx-tools/shared-core": "^0.9.119",
28
+ "@dbx-tools/shared-core": "^0.9.121",
29
29
  "extract-zip": "^2.0.1",
30
30
  "proper-lockfile": "^4.1.2",
31
31
  "semver": "^7.7.3",
@@ -91,7 +91,7 @@
91
91
  "./package.json": "./package.json"
92
92
  }
93
93
  },
94
- "version": "0.9.119",
94
+ "version": "0.9.121",
95
95
  "types": "./lib/index.d.ts",
96
96
  "dbxToolsConfig": {
97
97
  "tags": [
package/src/bin.ts CHANGED
@@ -247,7 +247,7 @@ async function isValidBin(path: string, options: BinOptions): Promise<boolean> {
247
247
  } catch (cause) {
248
248
  logger.debug("binary version command failed", {
249
249
  path,
250
- error: errorUtils.errorMessage(cause),
250
+ error: errorUtils.toError(cause),
251
251
  });
252
252
  return false;
253
253
  }
package/src/file-lock.ts CHANGED
@@ -240,7 +240,7 @@ const resolveFlock = functionUtils.memoize(async (): Promise<FlockFn | undefined
240
240
  });
241
241
  return lib.symbols.flock;
242
242
  } catch (cause) {
243
- logger.debug("flock FFI unavailable", { error: errorUtils.errorMessage(cause) });
243
+ logger.debug("flock FFI unavailable", { error: errorUtils.toError(cause) });
244
244
  return undefined;
245
245
  }
246
246
  });