obsidian-integration-testing 14.1.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +2 -0
  2. package/dist/lib/cjs/appium-dependencies.cjs +2 -5
  3. package/dist/lib/cjs/appium-server-marker.cjs +3 -9
  4. package/dist/lib/cjs/asar-fallback-detection.cjs +2 -5
  5. package/dist/lib/cjs/avd-probe-verdict.cjs +3 -9
  6. package/dist/lib/cjs/capture-obsidian-screenshot.cjs +9 -1
  7. package/dist/lib/cjs/capture-obsidian-screenshot.d.cts +21 -0
  8. package/dist/lib/cjs/capture-screenshot.cjs +2 -5
  9. package/dist/lib/cjs/cli.cjs +2 -5
  10. package/dist/lib/cjs/demo-vault-populate.cjs +7 -9
  11. package/dist/lib/cjs/device-setting-restore.cjs +2 -5
  12. package/dist/lib/cjs/electron-compatibility.cjs +8 -11
  13. package/dist/lib/cjs/emulator-arguments.cjs +14 -14
  14. package/dist/lib/cjs/emulator-marker.cjs +4 -13
  15. package/dist/lib/cjs/emulator-reaper.cjs +2 -5
  16. package/dist/lib/cjs/emulator-snapshot.cjs +3 -9
  17. package/dist/lib/cjs/eval-cap-exceeded-error.cjs +2 -5
  18. package/dist/lib/cjs/exec.cjs +12 -24
  19. package/dist/lib/cjs/function-expression.cjs +2 -5
  20. package/dist/lib/cjs/global-setup-core.cjs +53 -18
  21. package/dist/lib/cjs/hide-vault-name.cjs +45 -0
  22. package/dist/lib/cjs/hide-vault-name.d.cts +67 -0
  23. package/dist/lib/cjs/index.cjs +9 -1
  24. package/dist/lib/cjs/index.d.cts +6 -2
  25. package/dist/lib/cjs/installer-asset.cjs +3 -9
  26. package/dist/lib/cjs/installer-compatibility.cjs +9 -12
  27. package/dist/lib/cjs/label-screenshot.cjs +63 -4
  28. package/dist/lib/cjs/label-screenshot.d.cts +66 -2
  29. package/dist/lib/cjs/leftover-cleanup.cjs +2 -5
  30. package/dist/lib/cjs/library.cjs +1 -1
  31. package/dist/lib/cjs/mobile-input.cjs +17 -31
  32. package/dist/lib/cjs/namespace-bootstrap.cjs +3 -9
  33. package/dist/lib/cjs/obsidian-executable.cjs +2 -5
  34. package/dist/lib/cjs/obsidian-installer.cjs +3 -9
  35. package/dist/lib/cjs/obsidian-instance.cjs +1 -1
  36. package/dist/lib/cjs/obsidian-instance.d.cts +8 -0
  37. package/dist/lib/cjs/owned-instance-exit-marker.cjs +2 -5
  38. package/dist/lib/cjs/owned-instance-exited-error.cjs +13 -17
  39. package/dist/lib/cjs/process-exit-message.cjs +3 -9
  40. package/dist/lib/cjs/renderer-boot-detection.cjs +3 -9
  41. package/dist/lib/cjs/setup-lock.cjs +3 -9
  42. package/dist/lib/cjs/sharp-loader.cjs +1 -1
  43. package/dist/lib/cjs/sharp-loader.d.cts +11 -0
  44. package/dist/lib/cjs/soft-keyboard-geometry.cjs +4 -9
  45. package/dist/lib/cjs/stale-build-detection.cjs +115 -0
  46. package/dist/lib/cjs/stale-build-detection.d.cts +108 -0
  47. package/dist/lib/cjs/stale-build-error.cjs +74 -0
  48. package/dist/lib/cjs/stale-build-error.d.cts +81 -0
  49. package/dist/lib/cjs/strict-proxy.cjs +3 -9
  50. package/dist/lib/cjs/transport-appium.cjs +3 -9
  51. package/dist/lib/cjs/transport-desktop-cdp.cjs +18 -32
  52. package/dist/lib/cjs/transport-factory.cjs +20 -25
  53. package/dist/lib/cjs/transport-options.cjs +2 -5
  54. package/dist/lib/cjs/transport-options.d.cts +36 -0
  55. package/dist/lib/cjs/vault-teardown-verdict.cjs +2 -5
  56. package/dist/lib/cjs/version-matrix.cjs +4 -13
  57. package/dist/lib/cjs/wedged-appium-server.cjs +3 -9
  58. package/dist/lib/esm/appium-dependencies.mjs +2 -5
  59. package/dist/lib/esm/appium-server-marker.mjs +3 -9
  60. package/dist/lib/esm/asar-fallback-detection.mjs +2 -5
  61. package/dist/lib/esm/avd-probe-verdict.mjs +3 -9
  62. package/dist/lib/esm/capture-obsidian-screenshot.d.mts +21 -0
  63. package/dist/lib/esm/capture-obsidian-screenshot.mjs +9 -1
  64. package/dist/lib/esm/capture-screenshot.mjs +2 -5
  65. package/dist/lib/esm/cli.mjs +2 -5
  66. package/dist/lib/esm/demo-vault-populate.mjs +7 -9
  67. package/dist/lib/esm/device-setting-restore.mjs +2 -5
  68. package/dist/lib/esm/electron-compatibility.mjs +8 -11
  69. package/dist/lib/esm/emulator-arguments.mjs +14 -14
  70. package/dist/lib/esm/emulator-marker.mjs +4 -13
  71. package/dist/lib/esm/emulator-reaper.mjs +2 -5
  72. package/dist/lib/esm/emulator-snapshot.mjs +3 -9
  73. package/dist/lib/esm/eval-cap-exceeded-error.mjs +2 -5
  74. package/dist/lib/esm/exec.mjs +12 -24
  75. package/dist/lib/esm/function-expression.mjs +2 -5
  76. package/dist/lib/esm/global-setup-core.mjs +60 -19
  77. package/dist/lib/esm/hide-vault-name.d.mts +67 -0
  78. package/dist/lib/esm/hide-vault-name.mjs +21 -0
  79. package/dist/lib/esm/index.d.mts +6 -2
  80. package/dist/lib/esm/index.mjs +8 -2
  81. package/dist/lib/esm/installer-asset.mjs +3 -9
  82. package/dist/lib/esm/installer-compatibility.mjs +9 -12
  83. package/dist/lib/esm/label-screenshot.d.mts +66 -2
  84. package/dist/lib/esm/label-screenshot.mjs +61 -3
  85. package/dist/lib/esm/leftover-cleanup.mjs +2 -5
  86. package/dist/lib/esm/library.mjs +1 -1
  87. package/dist/lib/esm/mobile-input.mjs +17 -31
  88. package/dist/lib/esm/namespace-bootstrap.mjs +3 -9
  89. package/dist/lib/esm/obsidian-executable.mjs +2 -5
  90. package/dist/lib/esm/obsidian-installer.mjs +3 -9
  91. package/dist/lib/esm/obsidian-instance.d.mts +8 -0
  92. package/dist/lib/esm/obsidian-instance.mjs +1 -1
  93. package/dist/lib/esm/owned-instance-exit-marker.mjs +2 -5
  94. package/dist/lib/esm/owned-instance-exited-error.mjs +13 -17
  95. package/dist/lib/esm/process-exit-message.mjs +3 -9
  96. package/dist/lib/esm/renderer-boot-detection.mjs +3 -9
  97. package/dist/lib/esm/setup-lock.mjs +3 -9
  98. package/dist/lib/esm/sharp-loader.d.mts +11 -0
  99. package/dist/lib/esm/sharp-loader.mjs +1 -1
  100. package/dist/lib/esm/soft-keyboard-geometry.mjs +4 -9
  101. package/dist/lib/esm/stale-build-detection.d.mts +108 -0
  102. package/dist/lib/esm/stale-build-detection.mjs +84 -0
  103. package/dist/lib/esm/stale-build-error.d.mts +81 -0
  104. package/dist/lib/esm/stale-build-error.mjs +50 -0
  105. package/dist/lib/esm/strict-proxy.mjs +3 -9
  106. package/dist/lib/esm/transport-appium.mjs +3 -9
  107. package/dist/lib/esm/transport-desktop-cdp.mjs +18 -32
  108. package/dist/lib/esm/transport-factory.mjs +20 -25
  109. package/dist/lib/esm/transport-options.d.mts +36 -0
  110. package/dist/lib/esm/transport-options.mjs +2 -5
  111. package/dist/lib/esm/vault-teardown-verdict.mjs +2 -5
  112. package/dist/lib/esm/version-matrix.mjs +4 -13
  113. package/dist/lib/esm/wedged-appium-server.mjs +3 -9
  114. package/package.json +20 -19
@@ -11,22 +11,16 @@ function buildAvdSnapshotDirectoryCandidates(params) {
11
11
  return avdHomes.filter((avdHome) => avdHome !== void 0 && avdHome.length > 0).map((avdHome) => joinPath(avdHome, `${avdName}.avd`, "snapshots", DEFAULT_SNAPSHOT_NAME));
12
12
  }
13
13
  function buildSnapshotAgeMessage(params) {
14
- if (params.savedAt === void 0) {
15
- return `Snapshot reuse is enabled for AVD "${params.avdName}", but no \`${DEFAULT_SNAPSHOT_NAME}\` snapshot was found \u2014 this run cold-boots and saves one for the next.`;
16
- }
17
- return `Snapshot reuse is enabled for AVD "${params.avdName}": resuming \`${DEFAULT_SNAPSHOT_NAME}\` saved ${params.savedAt.toISOString()}.`;
14
+ return params.savedAt === void 0 ? `Snapshot reuse is enabled for AVD "${params.avdName}", but no \`${DEFAULT_SNAPSHOT_NAME}\` snapshot was found \u2014 this run cold-boots and saves one for the next.` : `Snapshot reuse is enabled for AVD "${params.avdName}": resuming \`${DEFAULT_SNAPSHOT_NAME}\` saved ${params.savedAt.toISOString()}.`;
18
15
  }
19
16
  function joinPath(base, ...segments) {
20
17
  return [base.replace(TRAILING_SEPARATOR_PATTERN, ""), ...segments].join("/");
21
18
  }
22
19
  function resolveAvdHomeUnder(base) {
23
- if (base === void 0 || base.length === 0) {
24
- return void 0;
25
- }
26
- return joinPath(base, ...AVD_HOME_SEGMENTS);
20
+ return base === void 0 || base.length === 0 ? void 0 : joinPath(base, ...AVD_HOME_SEGMENTS);
27
21
  }
28
22
  export {
29
23
  buildAvdSnapshotDirectoryCandidates,
30
24
  buildSnapshotAgeMessage
31
25
  };
32
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VtdWxhdG9yLXNuYXBzaG90LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBoZWxwZXJzIGZvciBsb2NhdGluZyBhbmQgZGVzY3JpYmluZyBhbiBBVkQncyBzYXZlZCBib290IHNuYXBzaG90LlxuICpcbiAqIE9ubHkgdGhlIG9wdC1pbiBgc2hvdWxkUmV1c2VFbXVsYXRvclNuYXBzaG90YCBwYXRoIHJlc3VtZXMgb25lLCBhbmQgZXZlbiB0aGVuXG4gKiBpdHMgYWdlIGlzIHdvcnRoIGEgbG9nIGxpbmU6IGEgc25hcHNob3QgaXMgdGhlIG9uZSBpbnB1dCB0byBhIHJ1biB0aGF0IG5vIGdhdGVcbiAqIGluc3BlY3RzLCBhbmQgdGhlIGZhaWx1cmUgYSByb3R0ZW4gb25lIHByb2R1Y2VzIFx1MjAxNCBhIGd1ZXN0IHRoYXQgc2VydmVzIGFkYixcbiAqIGFjY2VwdHMgYSB1aWF1dG9tYXRvcjIgc2Vzc2lvbiBhbmQgdGhlbiBkcm9wcyBgb2ZmbGluZWAgYWJvdXQgaGFsZiBhIG1pbnV0ZVxuICogbGF0ZXIgXHUyMDE0IHJlYWRzIGFzIGEgY29kZSByZWdyZXNzaW9uIHJhdGhlciB0aGFuIGFzIHN0YWxlIHN0YXRlLiBgZW11bGF0b3JcbiAqIC1hdmQgXHUyMDI2IC1uby1zbmFwc2hvdC1sb2FkYCAodGhlIGRlZmF1bHQpIG1ha2VzIHRoZSBxdWVzdGlvbiBtb290OyB3aGVuIHRoZVxuICogY2FsbGVyIGhhcyBkZWxpYmVyYXRlbHkgdHJhZGVkIHRoYXQgYXdheSwgKlwicmVzdW1pbmcgc25hcHNob3Qgc2F2ZWQgPGRhdGU+XCIqXG4gKiBpcyB3aGF0IGtlZXBzIHRoZSB0cmFkZSB2aXNpYmxlIGluIHRoZSB0cmFuc2NyaXB0LlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgaW50ZWdyYXRpb24tb25seSBgdHJhbnNwb3J0LWZhY3RvcnlgIHNvIHRoZSBwYXRoXG4gKiBkZXJpdmF0aW9uIGFuZCB0aGUgd29yZGluZyBzdGF5IHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZiBkb2VzIHRoZVxuICogYHN0YXRgLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJ1aWxkQXZkU25hcHNob3REaXJlY3RvcnlDYW5kaWRhdGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEF2ZFNuYXBzaG90RGlyZWN0b3J5Q2FuZGlkYXRlc1BhcmFtcyB7XG4gIC8qKlxuICBUaGUgQW5kcm9pZCBWaXJ0dWFsIERldmljZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcHJvY2VzcyBlbnZpcm9ubWVudCwgcmVhZCBmb3IgdGhlIEFuZHJvaWQgU0RLJ3MgQVZELWhvbWUgb3ZlcnJpZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4gIC8qKlxuICBUaGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5LCB0aGUgYmFzZSBvZiB0aGUgZGVmYXVsdCBBVkQgaG9tZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvbWVEaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRTbmFwc2hvdEFnZU1lc3NhZ2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU25hcHNob3RBZ2VNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBBbmRyb2lkIFZpcnR1YWwgRGV2aWNlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoZW4gdGhlIHNuYXBzaG90IHdhcyBsYXN0IHdyaXR0ZW4sIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9uZSB3YXMgZm91bmQuXG4gICAqL1xuICByZWFkb25seSBzYXZlZEF0PzogRGF0ZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgc25hcHNob3QgdGhlIGVtdWxhdG9yIGxvYWRzIGFuZCBzYXZlcyBieSBkZWZhdWx0LlxuICovXG5jb25zdCBERUZBVUxUX1NOQVBTSE9UX05BTUUgPSAnZGVmYXVsdF9ib290JztcblxuLyoqXG4gKiBUaGUgZGlyZWN0b3J5IHRoZSBBbmRyb2lkIFNESyBrZWVwcyBBVkRzIGluLCB1bmRlciB3aGljaGV2ZXIgaG9tZSBhcHBsaWVzLlxuICovXG5jb25zdCBBVkRfSE9NRV9TRUdNRU5UUyA9IFsnLmFuZHJvaWQnLCAnYXZkJ107XG5jb25zdCBUUkFJTElOR19TRVBBUkFUT1JfUEFUVEVSTiA9IC9bL1xcXFxdKyQvO1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZGlyZWN0b3JpZXMgdGhlIEFWRCdzIGJvb3Qgc25hcHNob3QgY291bGQgbGl2ZSBpbiwgbW9zdCBzcGVjaWZpY1xuICogZmlyc3QuXG4gKlxuICogVGhlIGxvb2t1cCBtaXJyb3JzIHRoZSBlbXVsYXRvcidzIG93bjogYEFORFJPSURfQVZEX0hPTUVgIHdpbnMgb3V0cmlnaHQsIHRoZW5cbiAqIGAuYW5kcm9pZC9hdmRgIHVuZGVyIGBBTkRST0lEX1NES19IT01FYCwgdGhlbiB1bmRlciB0aGUgdXNlcidzIGhvbWUuIFJldHVybmluZ1xuICogY2FuZGlkYXRlcyByYXRoZXIgdGhhbiBvbmUgcGF0aCBrZWVwcyB0aGUgYHN0YXRgIFx1MjAxNCBhbmQgdGhlIGRlY2lzaW9uIHRoYXQgYVxuICogbWlzcyBpcyBub3QgYW4gZXJyb3IgXHUyMDE0IGluIHRoZSBjYWxsZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBBVkQgbmFtZSwgdGhlIGVudmlyb25tZW50LCBhbmQgdGhlIGhvbWUgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIGNhbmRpZGF0ZSBzbmFwc2hvdCBkaXJlY3RvcmllcywgbW9zdCBzcGVjaWZpYyBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXZkU25hcHNob3REaXJlY3RvcnlDYW5kaWRhdGVzKHBhcmFtczogQnVpbGRBdmRTbmFwc2hvdERpcmVjdG9yeUNhbmRpZGF0ZXNQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHsgYXZkTmFtZSwgZW52aXJvbm1lbnQsIGhvbWVEaXJlY3RvcnkgfSA9IHBhcmFtcztcblxuICBjb25zdCBhdmRIb21lcyA9IFtcbiAgICBlbnZpcm9ubWVudFsnQU5EUk9JRF9BVkRfSE9NRSddLFxuICAgIHJlc29sdmVBdmRIb21lVW5kZXIoZW52aXJvbm1lbnRbJ0FORFJPSURfU0RLX0hPTUUnXSksXG4gICAgcmVzb2x2ZUF2ZEhvbWVVbmRlcihob21lRGlyZWN0b3J5KVxuICBdO1xuXG4gIHJldHVybiBhdmRIb21lc1xuICAgIC5maWx0ZXIoKGF2ZEhvbWUpOiBhdmRIb21lIGlzIHN0cmluZyA9PiBhdmRIb21lICE9PSB1bmRlZmluZWQgJiYgYXZkSG9tZS5sZW5ndGggPiAwKVxuICAgIC5tYXAoKGF2ZEhvbWUpID0+IGpvaW5QYXRoKGF2ZEhvbWUsIGAke2F2ZE5hbWV9LmF2ZGAsICdzbmFwc2hvdHMnLCBERUZBVUxUX1NOQVBTSE9UX05BTUUpKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGxpbmUgbG9nZ2VkIHdoZW4gYSBydW4gaGFzIG9wdGVkIGludG8gcmVzdW1pbmcgYSBzbmFwc2hvdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIEFWRCBuYW1lIGFuZCB0aGUgc25hcHNob3QncyBzYXZlIHRpbWUsIGlmIGl0IHdhcyBmb3VuZC5cbiAqIEByZXR1cm5zIFRoZSBsb2cgbGluZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU25hcHNob3RBZ2VNZXNzYWdlKHBhcmFtczogQnVpbGRTbmFwc2hvdEFnZU1lc3NhZ2VQYXJhbXMpOiBzdHJpbmcge1xuICBpZiAocGFyYW1zLnNhdmVkQXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgU25hcHNob3QgcmV1c2UgaXMgZW5hYmxlZCBmb3IgQVZEIFwiJHtwYXJhbXMuYXZkTmFtZX1cIiwgYnV0IG5vIFxcYCR7REVGQVVMVF9TTkFQU0hPVF9OQU1FfVxcYCBzbmFwc2hvdCB3YXMgZm91bmQgXHUyMDE0IHRoaXMgcnVuIGNvbGQtYm9vdHMgYW5kIHNhdmVzIG9uZSBmb3IgdGhlIG5leHQuYDtcbiAgfVxuXG4gIHJldHVybiBgU25hcHNob3QgcmV1c2UgaXMgZW5hYmxlZCBmb3IgQVZEIFwiJHtwYXJhbXMuYXZkTmFtZX1cIjogcmVzdW1pbmcgXFxgJHtERUZBVUxUX1NOQVBTSE9UX05BTUV9XFxgIHNhdmVkICR7cGFyYW1zLnNhdmVkQXQudG9JU09TdHJpbmcoKX0uYDtcbn1cblxuLyoqXG4gKiBKb2lucyBwYXRoIHNlZ21lbnRzIHdpdGggYC9gLCB3aGljaCBldmVyeSBwbGF0Zm9ybSdzIHBhdGggQVBJcyBhY2NlcHQuXG4gKlxuICogQHBhcmFtIGJhc2UgLSBUaGUgbGVhZGluZyBzZWdtZW50LCB3aG9zZSB0cmFpbGluZyBzZXBhcmF0b3JzIGFyZSBkcm9wcGVkLlxuICogQHBhcmFtIHNlZ21lbnRzIC0gVGhlIHNlZ21lbnRzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZnVuY3Rpb24gam9pblBhdGgoYmFzZTogc3RyaW5nLCAuLi5zZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gW2Jhc2UucmVwbGFjZShUUkFJTElOR19TRVBBUkFUT1JfUEFUVEVSTiwgJycpLCAuLi5zZWdtZW50c10uam9pbignLycpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBBVkQgaG9tZSB1bmRlciBhIGJhc2UgZGlyZWN0b3J5LCB3aGVuIHRoZXJlIGlzIG9uZS5cbiAqXG4gKiBAcGFyYW0gYmFzZSAtIGBBTkRST0lEX1NES19IT01FYCBvciB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIEFWRCBob21lLCBvciBgdW5kZWZpbmVkYCB3aGVuIGBiYXNlYCBpcyB1bnNldC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUF2ZEhvbWVVbmRlcihiYXNlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoYmFzZSA9PT0gdW5kZWZpbmVkIHx8IGJhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBqb2luUGF0aChiYXNlLCAuLi5BVkRfSE9NRV9TRUdNRU5UUyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUF5REEsTUFBTSx3QkFBd0I7QUFLOUIsTUFBTSxvQkFBb0IsQ0FBQyxZQUFZLEtBQUs7QUFDNUMsTUFBTSw2QkFBNkI7QUFjNUIsU0FBUyxvQ0FBb0MsUUFBNkQ7QUFDL0csUUFBTSxFQUFFLFNBQVMsYUFBYSxjQUFjLElBQUk7QUFFaEQsUUFBTSxXQUFXO0FBQUEsSUFDZixZQUFZLGtCQUFrQjtBQUFBLElBQzlCLG9CQUFvQixZQUFZLGtCQUFrQixDQUFDO0FBQUEsSUFDbkQsb0JBQW9CLGFBQWE7QUFBQSxFQUNuQztBQUVBLFNBQU8sU0FDSixPQUFPLENBQUMsWUFBK0IsWUFBWSxVQUFhLFFBQVEsU0FBUyxDQUFDLEVBQ2xGLElBQUksQ0FBQyxZQUFZLFNBQVMsU0FBUyxHQUFHLE9BQU8sUUFBUSxhQUFhLHFCQUFxQixDQUFDO0FBQzdGO0FBUU8sU0FBUyx3QkFBd0IsUUFBK0M7QUFDckYsTUFBSSxPQUFPLFlBQVksUUFBVztBQUNoQyxXQUFPLHNDQUFzQyxPQUFPLE9BQU8sZUFBZSxxQkFBcUI7QUFBQSxFQUNqRztBQUVBLFNBQU8sc0NBQXNDLE9BQU8sT0FBTyxpQkFBaUIscUJBQXFCLFlBQVksT0FBTyxRQUFRLFlBQVksQ0FBQztBQUMzSTtBQVNBLFNBQVMsU0FBUyxTQUFpQixVQUE0QjtBQUM3RCxTQUFPLENBQUMsS0FBSyxRQUFRLDRCQUE0QixFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsS0FBSyxHQUFHO0FBQzdFO0FBUUEsU0FBUyxvQkFBb0IsTUFBOEM7QUFDekUsTUFBSSxTQUFTLFVBQWEsS0FBSyxXQUFXLEdBQUc7QUFDM0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFNBQVMsTUFBTSxHQUFHLGlCQUFpQjtBQUM1QzsiLAogICJuYW1lcyI6IFtdCn0K
26
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VtdWxhdG9yLXNuYXBzaG90LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBoZWxwZXJzIGZvciBsb2NhdGluZyBhbmQgZGVzY3JpYmluZyBhbiBBVkQncyBzYXZlZCBib290IHNuYXBzaG90LlxuICpcbiAqIE9ubHkgdGhlIG9wdC1pbiBgc2hvdWxkUmV1c2VFbXVsYXRvclNuYXBzaG90YCBwYXRoIHJlc3VtZXMgb25lLCBhbmQgZXZlbiB0aGVuXG4gKiBpdHMgYWdlIGlzIHdvcnRoIGEgbG9nIGxpbmU6IGEgc25hcHNob3QgaXMgdGhlIG9uZSBpbnB1dCB0byBhIHJ1biB0aGF0IG5vIGdhdGVcbiAqIGluc3BlY3RzLCBhbmQgdGhlIGZhaWx1cmUgYSByb3R0ZW4gb25lIHByb2R1Y2VzIFx1MjAxNCBhIGd1ZXN0IHRoYXQgc2VydmVzIGFkYixcbiAqIGFjY2VwdHMgYSB1aWF1dG9tYXRvcjIgc2Vzc2lvbiBhbmQgdGhlbiBkcm9wcyBgb2ZmbGluZWAgYWJvdXQgaGFsZiBhIG1pbnV0ZVxuICogbGF0ZXIgXHUyMDE0IHJlYWRzIGFzIGEgY29kZSByZWdyZXNzaW9uIHJhdGhlciB0aGFuIGFzIHN0YWxlIHN0YXRlLiBgZW11bGF0b3JcbiAqIC1hdmQgXHUyMDI2IC1uby1zbmFwc2hvdC1sb2FkYCAodGhlIGRlZmF1bHQpIG1ha2VzIHRoZSBxdWVzdGlvbiBtb290OyB3aGVuIHRoZVxuICogY2FsbGVyIGhhcyBkZWxpYmVyYXRlbHkgdHJhZGVkIHRoYXQgYXdheSwgKlwicmVzdW1pbmcgc25hcHNob3Qgc2F2ZWQgPGRhdGU+XCIqXG4gKiBpcyB3aGF0IGtlZXBzIHRoZSB0cmFkZSB2aXNpYmxlIGluIHRoZSB0cmFuc2NyaXB0LlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgaW50ZWdyYXRpb24tb25seSBgdHJhbnNwb3J0LWZhY3RvcnlgIHNvIHRoZSBwYXRoXG4gKiBkZXJpdmF0aW9uIGFuZCB0aGUgd29yZGluZyBzdGF5IHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZiBkb2VzIHRoZVxuICogYHN0YXRgLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJ1aWxkQXZkU25hcHNob3REaXJlY3RvcnlDYW5kaWRhdGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEF2ZFNuYXBzaG90RGlyZWN0b3J5Q2FuZGlkYXRlc1BhcmFtcyB7XG4gIC8qKlxuICBUaGUgQW5kcm9pZCBWaXJ0dWFsIERldmljZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcHJvY2VzcyBlbnZpcm9ubWVudCwgcmVhZCBmb3IgdGhlIEFuZHJvaWQgU0RLJ3MgQVZELWhvbWUgb3ZlcnJpZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4gIC8qKlxuICBUaGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5LCB0aGUgYmFzZSBvZiB0aGUgZGVmYXVsdCBBVkQgaG9tZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvbWVEaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRTbmFwc2hvdEFnZU1lc3NhZ2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU25hcHNob3RBZ2VNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBBbmRyb2lkIFZpcnR1YWwgRGV2aWNlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoZW4gdGhlIHNuYXBzaG90IHdhcyBsYXN0IHdyaXR0ZW4sIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9uZSB3YXMgZm91bmQuXG4gICAqL1xuICByZWFkb25seSBzYXZlZEF0PzogRGF0ZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgc25hcHNob3QgdGhlIGVtdWxhdG9yIGxvYWRzIGFuZCBzYXZlcyBieSBkZWZhdWx0LlxuICovXG5jb25zdCBERUZBVUxUX1NOQVBTSE9UX05BTUUgPSAnZGVmYXVsdF9ib290JztcblxuLyoqXG4gKiBUaGUgZGlyZWN0b3J5IHRoZSBBbmRyb2lkIFNESyBrZWVwcyBBVkRzIGluLCB1bmRlciB3aGljaGV2ZXIgaG9tZSBhcHBsaWVzLlxuICovXG5jb25zdCBBVkRfSE9NRV9TRUdNRU5UUyA9IFsnLmFuZHJvaWQnLCAnYXZkJ107XG5jb25zdCBUUkFJTElOR19TRVBBUkFUT1JfUEFUVEVSTiA9IC9bL1xcXFxdKyQvO1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZGlyZWN0b3JpZXMgdGhlIEFWRCdzIGJvb3Qgc25hcHNob3QgY291bGQgbGl2ZSBpbiwgbW9zdCBzcGVjaWZpY1xuICogZmlyc3QuXG4gKlxuICogVGhlIGxvb2t1cCBtaXJyb3JzIHRoZSBlbXVsYXRvcidzIG93bjogYEFORFJPSURfQVZEX0hPTUVgIHdpbnMgb3V0cmlnaHQsIHRoZW5cbiAqIGAuYW5kcm9pZC9hdmRgIHVuZGVyIGBBTkRST0lEX1NES19IT01FYCwgdGhlbiB1bmRlciB0aGUgdXNlcidzIGhvbWUuIFJldHVybmluZ1xuICogY2FuZGlkYXRlcyByYXRoZXIgdGhhbiBvbmUgcGF0aCBrZWVwcyB0aGUgYHN0YXRgIFx1MjAxNCBhbmQgdGhlIGRlY2lzaW9uIHRoYXQgYVxuICogbWlzcyBpcyBub3QgYW4gZXJyb3IgXHUyMDE0IGluIHRoZSBjYWxsZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBBVkQgbmFtZSwgdGhlIGVudmlyb25tZW50LCBhbmQgdGhlIGhvbWUgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIGNhbmRpZGF0ZSBzbmFwc2hvdCBkaXJlY3RvcmllcywgbW9zdCBzcGVjaWZpYyBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXZkU25hcHNob3REaXJlY3RvcnlDYW5kaWRhdGVzKHBhcmFtczogQnVpbGRBdmRTbmFwc2hvdERpcmVjdG9yeUNhbmRpZGF0ZXNQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHsgYXZkTmFtZSwgZW52aXJvbm1lbnQsIGhvbWVEaXJlY3RvcnkgfSA9IHBhcmFtcztcblxuICBjb25zdCBhdmRIb21lcyA9IFtcbiAgICBlbnZpcm9ubWVudFsnQU5EUk9JRF9BVkRfSE9NRSddLFxuICAgIHJlc29sdmVBdmRIb21lVW5kZXIoZW52aXJvbm1lbnRbJ0FORFJPSURfU0RLX0hPTUUnXSksXG4gICAgcmVzb2x2ZUF2ZEhvbWVVbmRlcihob21lRGlyZWN0b3J5KVxuICBdO1xuXG4gIHJldHVybiBhdmRIb21lc1xuICAgIC5maWx0ZXIoKGF2ZEhvbWUpOiBhdmRIb21lIGlzIHN0cmluZyA9PiBhdmRIb21lICE9PSB1bmRlZmluZWQgJiYgYXZkSG9tZS5sZW5ndGggPiAwKVxuICAgIC5tYXAoKGF2ZEhvbWUpID0+IGpvaW5QYXRoKGF2ZEhvbWUsIGAke2F2ZE5hbWV9LmF2ZGAsICdzbmFwc2hvdHMnLCBERUZBVUxUX1NOQVBTSE9UX05BTUUpKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGxpbmUgbG9nZ2VkIHdoZW4gYSBydW4gaGFzIG9wdGVkIGludG8gcmVzdW1pbmcgYSBzbmFwc2hvdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIEFWRCBuYW1lIGFuZCB0aGUgc25hcHNob3QncyBzYXZlIHRpbWUsIGlmIGl0IHdhcyBmb3VuZC5cbiAqIEByZXR1cm5zIFRoZSBsb2cgbGluZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU25hcHNob3RBZ2VNZXNzYWdlKHBhcmFtczogQnVpbGRTbmFwc2hvdEFnZU1lc3NhZ2VQYXJhbXMpOiBzdHJpbmcge1xuICByZXR1cm4gcGFyYW1zLnNhdmVkQXQgPT09IHVuZGVmaW5lZCA/IGBTbmFwc2hvdCByZXVzZSBpcyBlbmFibGVkIGZvciBBVkQgXCIke3BhcmFtcy5hdmROYW1lfVwiLCBidXQgbm8gXFxgJHtERUZBVUxUX1NOQVBTSE9UX05BTUV9XFxgIHNuYXBzaG90IHdhcyBmb3VuZCBcdTIwMTQgdGhpcyBydW4gY29sZC1ib290cyBhbmQgc2F2ZXMgb25lIGZvciB0aGUgbmV4dC5gIDogYFNuYXBzaG90IHJldXNlIGlzIGVuYWJsZWQgZm9yIEFWRCBcIiR7cGFyYW1zLmF2ZE5hbWV9XCI6IHJlc3VtaW5nIFxcYCR7REVGQVVMVF9TTkFQU0hPVF9OQU1FfVxcYCBzYXZlZCAke3BhcmFtcy5zYXZlZEF0LnRvSVNPU3RyaW5nKCl9LmA7XG59XG5cbi8qKlxuICogSm9pbnMgcGF0aCBzZWdtZW50cyB3aXRoIGAvYCwgd2hpY2ggZXZlcnkgcGxhdGZvcm0ncyBwYXRoIEFQSXMgYWNjZXB0LlxuICpcbiAqIEBwYXJhbSBiYXNlIC0gVGhlIGxlYWRpbmcgc2VnbWVudCwgd2hvc2UgdHJhaWxpbmcgc2VwYXJhdG9ycyBhcmUgZHJvcHBlZC5cbiAqIEBwYXJhbSBzZWdtZW50cyAtIFRoZSBzZWdtZW50cyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGpvaW5QYXRoKGJhc2U6IHN0cmluZywgLi4uc2VnbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIFtiYXNlLnJlcGxhY2UoVFJBSUxJTkdfU0VQQVJBVE9SX1BBVFRFUk4sICcnKSwgLi4uc2VnbWVudHNdLmpvaW4oJy8nKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVZEIGhvbWUgdW5kZXIgYSBiYXNlIGRpcmVjdG9yeSwgd2hlbiB0aGVyZSBpcyBvbmUuXG4gKlxuICogQHBhcmFtIGJhc2UgLSBgQU5EUk9JRF9TREtfSE9NRWAgb3IgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS5cbiAqIEByZXR1cm5zIFRoZSBBVkQgaG9tZSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBgYmFzZWAgaXMgdW5zZXQuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBdmRIb21lVW5kZXIoYmFzZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGJhc2UgPT09IHVuZGVmaW5lZCB8fCBiYXNlLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGpvaW5QYXRoKGJhc2UsIC4uLkFWRF9IT01FX1NFR01FTlRTKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlEQSxNQUFNLHdCQUF3QjtBQUs5QixNQUFNLG9CQUFvQixDQUFDLFlBQVksS0FBSztBQUM1QyxNQUFNLDZCQUE2QjtBQWM1QixTQUFTLG9DQUFvQyxRQUE2RDtBQUMvRyxRQUFNLEVBQUUsU0FBUyxhQUFhLGNBQWMsSUFBSTtBQUVoRCxRQUFNLFdBQVc7QUFBQSxJQUNmLFlBQVksa0JBQWtCO0FBQUEsSUFDOUIsb0JBQW9CLFlBQVksa0JBQWtCLENBQUM7QUFBQSxJQUNuRCxvQkFBb0IsYUFBYTtBQUFBLEVBQ25DO0FBRUEsU0FBTyxTQUNKLE9BQU8sQ0FBQyxZQUErQixZQUFZLFVBQWEsUUFBUSxTQUFTLENBQUMsRUFDbEYsSUFBSSxDQUFDLFlBQVksU0FBUyxTQUFTLEdBQUcsT0FBTyxRQUFRLGFBQWEscUJBQXFCLENBQUM7QUFDN0Y7QUFRTyxTQUFTLHdCQUF3QixRQUErQztBQUNyRixTQUFPLE9BQU8sWUFBWSxTQUFZLHNDQUFzQyxPQUFPLE9BQU8sZUFBZSxxQkFBcUIsaUZBQTRFLHNDQUFzQyxPQUFPLE9BQU8saUJBQWlCLHFCQUFxQixZQUFZLE9BQU8sUUFBUSxZQUFZLENBQUM7QUFDOVU7QUFTQSxTQUFTLFNBQVMsU0FBaUIsVUFBNEI7QUFDN0QsU0FBTyxDQUFDLEtBQUssUUFBUSw0QkFBNEIsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEtBQUssR0FBRztBQUM3RTtBQVFBLFNBQVMsb0JBQW9CLE1BQThDO0FBQ3pFLFNBQU8sU0FBUyxVQUFhLEtBQUssV0FBVyxJQUFJLFNBQVksU0FBUyxNQUFNLEdBQUcsaUJBQWlCO0FBQ2xHOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -21,10 +21,7 @@ class EvalCapExceededError extends Error {
21
21
  }
22
22
  }
23
23
  function isScriptTimeoutError(error) {
24
- if (!(error instanceof Error)) {
25
- return false;
26
- }
27
- return SCRIPT_TIMEOUT_PATTERN.test(error.message) || SCRIPT_TIMEOUT_PATTERN.test(error.name);
24
+ return error instanceof Error && (SCRIPT_TIMEOUT_PATTERN.test(error.message) || SCRIPT_TIMEOUT_PATTERN.test(error.name));
28
25
  }
29
26
  function buildMessage(params) {
30
27
  return `A single evalInObsidian closure ran longer than the ${params.transportName} per-eval cap of ${String(params.capInMilliseconds)}ms, so it was killed mid-flight. This is a property of the closure, not of the device or the app: everything awaited inside one closure shares that one budget, including every \`lib.waitUntil\` timeout and every settle \`sleep\`. Do the waiting from Node instead \u2014 \`pollInObsidian\` runs a short \`poll\` closure repeatedly until a Node-side \`until\` accepts, so no single eval is ever long. Raise \`${params.optionName}\` only for a closure that genuinely cannot be split.`;
@@ -33,4 +30,4 @@ export {
33
30
  EvalCapExceededError,
34
31
  isScriptTimeoutError
35
32
  };
36
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIG9uZSBlcnJvciBib3RoIHRyYW5zcG9ydHMgcmFpc2Ugd2hlbiBhIHNpbmdsZSBgZXZhbEluT2JzaWRpYW5gIGNsb3N1cmVcbiAqIG91dHJ1bnMgdGhlIHBlci1ldmFsIGNhcCwgYW5kIHRoZSBwcmVkaWNhdGUgdGhhdCByZWNvZ25pemVzIHRoZSByYXcgdHJhbnNwb3J0XG4gKiBlcnJvciBpdCByZXBsYWNlcy5cbiAqXG4gKiBUaGUgY2FwIGl0c2VsZiBpcyBub3QgdGhlIHByb2JsZW0gdGhpcyBtb2R1bGUgc29sdmVzIFx1MjAxNCB0aGUgZGlhZ25vc2lzIGlzLlxuICogRGVza3RvcCBzdXJmYWNlcyB0aGUgb3ZlcnJ1biBhcyBhIGdlbmVyaWNcbiAqIGBDRFAgY29tbWFuZCB0aW1lZCBvdXQgLi4uIDogUnVudGltZS5ldmFsdWF0ZWAsIHdoaWNoIG5ldmVyIG5hbWVzIHRoZSB0ZXN0J3NcbiAqIG93biB3YWl0IGFuZCBzbyByZWFkcyBhcyBhIGJyb2tlbiBkZXZpY2Ugb3IgYSB3ZWRnZWQgYXBwIFx1MjAxNCBhIHBsdWdpbiByZWxlYXNlIHdhc1xuICogb25jZSBoZWxkIGZvciB0d28gZGF5cyBieSB0aGF0IHJlYWRpbmcsIHdpdGggYSBoZWFsdGh5IGVtdWxhdG9yIGJsYW1lZCBmb3JcbiAqIGhhdmluZyBubyBuZXR3b3JrLlxuICpcbiAqIEFuZHJvaWQgaXMgd29yc2UsIGJlY2F1c2UgaXQgc3VyZmFjZXMgTk9USElORy4gT24gYSBsaXZlIGVtdWxhdG9yIHRoZSBjbG9zdXJlXG4gKiB3YXMgbWVhc3VyZWQgY29tcGxldGluZyBpbiB0aGUgZ3Vlc3Qgb24gc2NoZWR1bGUgXHUyMDE0IHRpbWVycyBhcm1lZCBhdCAzMHMgYW5kIDQwcyBmaXJlZCB3aXRoaW5cbiAqIH4xM21zIG9mIG5vbWluYWwgb24gYSB2aXNpYmxlLCBmb2N1c2VkIHBhZ2UgXHUyMDE0IHdoaWxlIGl0cyBFeGVjdXRlIFNjcmlwdCByZXNwb25zZVxuICogbmV2ZXIgcmVhY2hlZCB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBodW5nIHVudGlsIHdoaWNoZXZlciBvdXRlciBidWRnZXQgZ2F2ZSB1cFxuICogZmlyc3QuIEEgaGFuZyBuYW1lcyBub3RoaW5nIGF0IGFsbCwgd2hpY2ggaXMgd2h5IHRoZSBBbmRyb2lkIGNhcCBpcyBlbmZvcmNlZCBieVxuICogdGhlIHRyYW5zcG9ydCBvbiB0aGUgTm9kZSBzaWRlIHJhdGhlciB0aGFuIGJ5IHRoZSBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5XG4gKiBpdCBhbHNvIGRlY2xhcmVzIGFuZCB0aGF0IG5vdGhpbmcgYWN0cyBvbi5cbiAqXG4gKiBCb3RoIHRyYW5zcG9ydHMgdGhlcmVmb3JlIGZ1bm5lbCBpbnRvIHRoZSBtZXNzYWdlIGJlbG93LCB3aGljaCBzYXlzIHdoYXQgdGhlIGNhcFxuICogaXMsIHdoaWNoIHRyYW5zcG9ydCBlbmZvcmNlZCBpdCwgYW5kIHdoYXQgdG8gZG8gaW5zdGVhZC5cbiAqXG4gKiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0IGxvbmdlciB0aGFuIHRoZSBjYXAgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZVxuICogT2JzaWRpYW4gYXQgYWxsLiBgcG9sbEluT2JzaWRpYW5gIGlzIHRoZSBzYW5jdGlvbmVkIHNoYXBlOiBzaG9ydCBjbG9zdXJlcywgYW5kXG4gKiB0aGUgd2FpdGluZyBkb25lIGZyb20gTm9kZS5cbiAqL1xuXG4vKlxuICogVGhlIFczQyBlcnJvciBjb2RlIGlzIHRoZSBzcGFjZWQgYHNjcmlwdCB0aW1lb3V0YCwgd2hpbGUgYSBjbGllbnQgdGhhdCB0dXJucyBpdCBpbnRvIGEgdHlwZSBzcGVsbHMgdGhlXG4gKiBTYW1lIHRoaW5nIGFzIGBTY3JpcHRUaW1lb3V0RXJyb3JgIFx1MjAxNCBoZW5jZSB0aGUgb3B0aW9uYWwgd2hpdGVzcGFjZSwgd2hpY2ggbGV0cyBvbmUgcGF0dGVybiByZWFkIGJvdGguXG4gKi9cbmNvbnN0IFNDUklQVF9USU1FT1VUX1BBVFRFUk4gPSAvc2NyaXB0XFxzKnRpbWVvdXQvaTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgRXZhbENhcEV4Y2VlZGVkRXJyb3J9J3MgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbENhcEV4Y2VlZGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgcGVyLWV2YWwgY2FwIHRoZSBjbG9zdXJlIG91dHJhbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IGVycm9yLCBrZXB0IGFzIHRoZSBgY2F1c2VgIHNvIHRoZSByYXcgZGlhZ25vc2lzIGlzIG5vdCBsb3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgY2F1c2U6IHVua25vd247XG5cbiAgLyoqXG4gIFRoZSBuYW1lIG9mIHRoZSBvcHRpb24gdGhhdCBzZXRzIHRoZSBjYXAgb24gdGhpcyB0cmFuc3BvcnQsIHNvIHRoZSBtZXNzYWdlIGNhbiBuYW1lIHRoZSByZWFsIGtub2IuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEhvdyB0byByZWZlciB0byB0aGUgdHJhbnNwb3J0IHRoYXQgZW5mb3JjZWQgdGhlIGNhcCwgZS5nLiBgJ0FuZHJvaWQgKEFwcGl1bSknYC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBvbmUgYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlIHJhbiBsb25nZXIgdGhhbiB0aGUgdHJhbnNwb3J0J3NcbiAqIHBlci1ldmFsIGNhcC5cbiAqXG4gKiBDYXJyaWVzIHRoZSBjYXAgYW5kIHRoZSB0cmFuc3BvcnQgc28gYSBjYWxsZXIgY2FuIGBpbnN0YW5jZW9mYC1tYXRjaCwgYW5kIHRoZVxuICogb3JpZ2luYWwgdHJhbnNwb3J0IGVycm9yIGFzIGBjYXVzZWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmFsQ2FwRXhjZWVkZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gIFRoZSBwZXItZXZhbCBjYXAgdGhlIGNsb3N1cmUgb3V0cmFuLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FwSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgSG93IHRoZSB0cmFuc3BvcnQgdGhhdCBlbmZvcmNlZCB0aGUgY2FwIHdhcyBuYW1lZCBpbiB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc3BvcnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGVycm9yIGZyb20gdGhlIGNhcCwgdGhlIHRyYW5zcG9ydCwgYW5kIHRoZSByYXcgZXJyb3IgaXQgcmVwbGFjZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY2FwLCB0aGUgdHJhbnNwb3J0LCB0aGUgb3B0aW9uIHRoYXQgc2V0cyB0aGUgY2FwLCBhbmQgdGhlIHVuZGVybHlpbmcgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBFdmFsQ2FwRXhjZWVkZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoYnVpbGRNZXNzYWdlKHBhcmFtcyksIHsgY2F1c2U6IHBhcmFtcy5jYXVzZSB9KTtcbiAgICB0aGlzLm5hbWUgPSAnRXZhbENhcEV4Y2VlZGVkRXJyb3InO1xuICAgIHRoaXMuY2FwSW5NaWxsaXNlY29uZHMgPSBwYXJhbXMuY2FwSW5NaWxsaXNlY29uZHM7XG4gICAgdGhpcy50cmFuc3BvcnROYW1lID0gcGFyYW1zLnRyYW5zcG9ydE5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGFuIGVycm9yIGlzIGEgV2ViRHJpdmVyIHNjcmlwdCB0aW1lb3V0IFx1MjAxNCB0aGUgVzNDIGVycm9yIGEgZHJpdmVyIHdvdWxkXG4gKiByYWlzZSBpZiBpdCBlbmZvcmNlZCBgdGltZW91dHMuc2NyaXB0YC5cbiAqXG4gKiBNYXRjaGVkIG9uIHRoZSBtZXNzYWdlIHJhdGhlciB0aGFuIG9uIGEgdHlwZSwgYmVjYXVzZSB0aGUgZXJyb3IgYXJyaXZlcyBhcyBhXG4gKiBnZW5lcmljIGBXZWJEcml2ZXJFcnJvcmAgd2hvc2Ugb25seSBkaXN0aW5ndWlzaGluZyBtYXJrIGlzIHRoZSBXM0MgZXJyb3IgY29kZVxuICogaW4gaXRzIHRleHQuXG4gKlxuICogKipUaGlzIGRyaXZlciBuZXZlciByYWlzZXMgaXQuKiogVWlBdXRvbWF0b3IyIHdhcyBtZWFzdXJlZCBhY2NlcHRpbmcgdGhlXG4gKiBjYXBhYmlsaXR5LCByZXBvcnRpbmcgaXQgYmFjaywgYW5kIGVuZm9yY2luZyBub3RoaW5nLiBUaGUgcHJlZGljYXRlIGlzIGtlcHRcbiAqIGJlY2F1c2UgaXQgY29zdHMgbm90aGluZywgaXQgaXMgdGhlIHJpZ2h0IHRyYW5zbGF0aW9uIGlmIGEgZnV0dXJlIGRyaXZlciBkb2VzXG4gKiBlbmZvcmNlIHRoZSBjYXBhYmlsaXR5LCBhbmQgaXQga2VlcHMgb25lIGVycm9yIGNvdmVyaW5nIG9uZSBjb25kaXRpb24gb24gYm90aFxuICogdHJhbnNwb3J0cyBcdTIwMTQgYnV0IHRoZSBBbmRyb2lkIGNhcCBpcyBlbmZvcmNlZCBOb2RlLXNpZGUsIGFuZCB0aGlzIGlzIG5vdCB3aGF0XG4gKiBlbmZvcmNlcyBpdC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdGhyb3duIGJ5IHRoZSB0cmFuc3BvcnQuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZXJyb3IgaXMgYSBzY3JpcHQgdGltZW91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyaXB0VGltZW91dEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNDUklQVF9USU1FT1VUX1BBVFRFUk4udGVzdChlcnJvci5tZXNzYWdlKSB8fCBTQ1JJUFRfVElNRU9VVF9QQVRURVJOLnRlc3QoZXJyb3IubmFtZSk7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBzaGFyZWQgbWVzc2FnZSBib3RoIHRyYW5zcG9ydHMgcmVwb3J0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY2FwLCB0aGUgdHJhbnNwb3J0LCBhbmQgdGhlIG9wdGlvbiB0aGF0IHNldHMgdGhlIGNhcC5cbiAqIEByZXR1cm5zIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UocGFyYW1zOiBFdmFsQ2FwRXhjZWVkZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBBIHNpbmdsZSBldmFsSW5PYnNpZGlhbiBjbG9zdXJlIHJhbiBsb25nZXIgdGhhbiB0aGUgJHtwYXJhbXMudHJhbnNwb3J0TmFtZX0gcGVyLWV2YWwgY2FwIG9mICR7U3RyaW5nKHBhcmFtcy5jYXBJbk1pbGxpc2Vjb25kcyl9bXMsIHNvIGl0IHdhcyBraWxsZWQgbWlkLWZsaWdodC4gVGhpcyBpcyBhIHByb3BlcnR5IG9mIHRoZSBjbG9zdXJlLCBub3Qgb2YgdGhlIGRldmljZSBvciB0aGUgYXBwOiBgXG4gICAgKyAnZXZlcnl0aGluZyBhd2FpdGVkIGluc2lkZSBvbmUgY2xvc3VyZSBzaGFyZXMgdGhhdCBvbmUgYnVkZ2V0LCBpbmNsdWRpbmcgZXZlcnkgYGxpYi53YWl0VW50aWxgIHRpbWVvdXQgJ1xuICAgICsgJ2FuZCBldmVyeSBzZXR0bGUgYHNsZWVwYC4gRG8gdGhlIHdhaXRpbmcgZnJvbSBOb2RlIGluc3RlYWQgXHUyMDE0IGBwb2xsSW5PYnNpZGlhbmAgcnVucyBhIHNob3J0IGBwb2xsYCAnXG4gICAgKyAnY2xvc3VyZSByZXBlYXRlZGx5IHVudGlsIGEgTm9kZS1zaWRlIGB1bnRpbGAgYWNjZXB0cywgc28gbm8gc2luZ2xlIGV2YWwgaXMgZXZlciBsb25nLiBSYWlzZSAnXG4gICAgKyBgXFxgJHtwYXJhbXMub3B0aW9uTmFtZX1cXGAgb25seSBmb3IgYSBjbG9zdXJlIHRoYXQgZ2VudWluZWx5IGNhbm5vdCBiZSBzcGxpdC5gO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBa0NBLE1BQU0seUJBQXlCO0FBa0N4QixNQUFNLDZCQUE2QixNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJOUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxRQUErQztBQUNoRSxVQUFNLGFBQWEsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFPLE1BQU0sQ0FBQztBQUNuRCxTQUFLLE9BQU87QUFDWixTQUFLLG9CQUFvQixPQUFPO0FBQ2hDLFNBQUssZ0JBQWdCLE9BQU87QUFBQSxFQUM5QjtBQUNGO0FBb0JPLFNBQVMscUJBQXFCLE9BQXlCO0FBQzVELE1BQUksRUFBRSxpQkFBaUIsUUFBUTtBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sdUJBQXVCLEtBQUssTUFBTSxPQUFPLEtBQUssdUJBQXVCLEtBQUssTUFBTSxJQUFJO0FBQzdGO0FBUUEsU0FBUyxhQUFhLFFBQXVEO0FBQzNFLFNBQU8sdURBQXVELE9BQU8sYUFBYSxvQkFBb0IsT0FBTyxPQUFPLGlCQUFpQixDQUFDLDBaQUk3SCxPQUFPLFVBQVU7QUFDNUI7IiwKICAibmFtZXMiOiBbXQp9Cg==
33
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIG9uZSBlcnJvciBib3RoIHRyYW5zcG9ydHMgcmFpc2Ugd2hlbiBhIHNpbmdsZSBgZXZhbEluT2JzaWRpYW5gIGNsb3N1cmVcbiAqIG91dHJ1bnMgdGhlIHBlci1ldmFsIGNhcCwgYW5kIHRoZSBwcmVkaWNhdGUgdGhhdCByZWNvZ25pemVzIHRoZSByYXcgdHJhbnNwb3J0XG4gKiBlcnJvciBpdCByZXBsYWNlcy5cbiAqXG4gKiBUaGUgY2FwIGl0c2VsZiBpcyBub3QgdGhlIHByb2JsZW0gdGhpcyBtb2R1bGUgc29sdmVzIFx1MjAxNCB0aGUgZGlhZ25vc2lzIGlzLlxuICogRGVza3RvcCBzdXJmYWNlcyB0aGUgb3ZlcnJ1biBhcyBhIGdlbmVyaWNcbiAqIGBDRFAgY29tbWFuZCB0aW1lZCBvdXQgLi4uIDogUnVudGltZS5ldmFsdWF0ZWAsIHdoaWNoIG5ldmVyIG5hbWVzIHRoZSB0ZXN0J3NcbiAqIG93biB3YWl0IGFuZCBzbyByZWFkcyBhcyBhIGJyb2tlbiBkZXZpY2Ugb3IgYSB3ZWRnZWQgYXBwIFx1MjAxNCBhIHBsdWdpbiByZWxlYXNlIHdhc1xuICogb25jZSBoZWxkIGZvciB0d28gZGF5cyBieSB0aGF0IHJlYWRpbmcsIHdpdGggYSBoZWFsdGh5IGVtdWxhdG9yIGJsYW1lZCBmb3JcbiAqIGhhdmluZyBubyBuZXR3b3JrLlxuICpcbiAqIEFuZHJvaWQgaXMgd29yc2UsIGJlY2F1c2UgaXQgc3VyZmFjZXMgTk9USElORy4gT24gYSBsaXZlIGVtdWxhdG9yIHRoZSBjbG9zdXJlXG4gKiB3YXMgbWVhc3VyZWQgY29tcGxldGluZyBpbiB0aGUgZ3Vlc3Qgb24gc2NoZWR1bGUgXHUyMDE0IHRpbWVycyBhcm1lZCBhdCAzMHMgYW5kIDQwcyBmaXJlZCB3aXRoaW5cbiAqIH4xM21zIG9mIG5vbWluYWwgb24gYSB2aXNpYmxlLCBmb2N1c2VkIHBhZ2UgXHUyMDE0IHdoaWxlIGl0cyBFeGVjdXRlIFNjcmlwdCByZXNwb25zZVxuICogbmV2ZXIgcmVhY2hlZCB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBodW5nIHVudGlsIHdoaWNoZXZlciBvdXRlciBidWRnZXQgZ2F2ZSB1cFxuICogZmlyc3QuIEEgaGFuZyBuYW1lcyBub3RoaW5nIGF0IGFsbCwgd2hpY2ggaXMgd2h5IHRoZSBBbmRyb2lkIGNhcCBpcyBlbmZvcmNlZCBieVxuICogdGhlIHRyYW5zcG9ydCBvbiB0aGUgTm9kZSBzaWRlIHJhdGhlciB0aGFuIGJ5IHRoZSBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5XG4gKiBpdCBhbHNvIGRlY2xhcmVzIGFuZCB0aGF0IG5vdGhpbmcgYWN0cyBvbi5cbiAqXG4gKiBCb3RoIHRyYW5zcG9ydHMgdGhlcmVmb3JlIGZ1bm5lbCBpbnRvIHRoZSBtZXNzYWdlIGJlbG93LCB3aGljaCBzYXlzIHdoYXQgdGhlIGNhcFxuICogaXMsIHdoaWNoIHRyYW5zcG9ydCBlbmZvcmNlZCBpdCwgYW5kIHdoYXQgdG8gZG8gaW5zdGVhZC5cbiAqXG4gKiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0IGxvbmdlciB0aGFuIHRoZSBjYXAgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZVxuICogT2JzaWRpYW4gYXQgYWxsLiBgcG9sbEluT2JzaWRpYW5gIGlzIHRoZSBzYW5jdGlvbmVkIHNoYXBlOiBzaG9ydCBjbG9zdXJlcywgYW5kXG4gKiB0aGUgd2FpdGluZyBkb25lIGZyb20gTm9kZS5cbiAqL1xuXG4vKlxuICogVGhlIFczQyBlcnJvciBjb2RlIGlzIHRoZSBzcGFjZWQgYHNjcmlwdCB0aW1lb3V0YCwgd2hpbGUgYSBjbGllbnQgdGhhdCB0dXJucyBpdCBpbnRvIGEgdHlwZSBzcGVsbHMgdGhlXG4gKiBTYW1lIHRoaW5nIGFzIGBTY3JpcHRUaW1lb3V0RXJyb3JgIFx1MjAxNCBoZW5jZSB0aGUgb3B0aW9uYWwgd2hpdGVzcGFjZSwgd2hpY2ggbGV0cyBvbmUgcGF0dGVybiByZWFkIGJvdGguXG4gKi9cbmNvbnN0IFNDUklQVF9USU1FT1VUX1BBVFRFUk4gPSAvc2NyaXB0XFxzKnRpbWVvdXQvaTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgRXZhbENhcEV4Y2VlZGVkRXJyb3J9J3MgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbENhcEV4Y2VlZGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgcGVyLWV2YWwgY2FwIHRoZSBjbG9zdXJlIG91dHJhbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IGVycm9yLCBrZXB0IGFzIHRoZSBgY2F1c2VgIHNvIHRoZSByYXcgZGlhZ25vc2lzIGlzIG5vdCBsb3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgY2F1c2U6IHVua25vd247XG5cbiAgLyoqXG4gIFRoZSBuYW1lIG9mIHRoZSBvcHRpb24gdGhhdCBzZXRzIHRoZSBjYXAgb24gdGhpcyB0cmFuc3BvcnQsIHNvIHRoZSBtZXNzYWdlIGNhbiBuYW1lIHRoZSByZWFsIGtub2IuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEhvdyB0byByZWZlciB0byB0aGUgdHJhbnNwb3J0IHRoYXQgZW5mb3JjZWQgdGhlIGNhcCwgZS5nLiBgJ0FuZHJvaWQgKEFwcGl1bSknYC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBvbmUgYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlIHJhbiBsb25nZXIgdGhhbiB0aGUgdHJhbnNwb3J0J3NcbiAqIHBlci1ldmFsIGNhcC5cbiAqXG4gKiBDYXJyaWVzIHRoZSBjYXAgYW5kIHRoZSB0cmFuc3BvcnQgc28gYSBjYWxsZXIgY2FuIGBpbnN0YW5jZW9mYC1tYXRjaCwgYW5kIHRoZVxuICogb3JpZ2luYWwgdHJhbnNwb3J0IGVycm9yIGFzIGBjYXVzZWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmFsQ2FwRXhjZWVkZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gIFRoZSBwZXItZXZhbCBjYXAgdGhlIGNsb3N1cmUgb3V0cmFuLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FwSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgSG93IHRoZSB0cmFuc3BvcnQgdGhhdCBlbmZvcmNlZCB0aGUgY2FwIHdhcyBuYW1lZCBpbiB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc3BvcnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGVycm9yIGZyb20gdGhlIGNhcCwgdGhlIHRyYW5zcG9ydCwgYW5kIHRoZSByYXcgZXJyb3IgaXQgcmVwbGFjZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY2FwLCB0aGUgdHJhbnNwb3J0LCB0aGUgb3B0aW9uIHRoYXQgc2V0cyB0aGUgY2FwLCBhbmQgdGhlIHVuZGVybHlpbmcgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBFdmFsQ2FwRXhjZWVkZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoYnVpbGRNZXNzYWdlKHBhcmFtcyksIHsgY2F1c2U6IHBhcmFtcy5jYXVzZSB9KTtcbiAgICB0aGlzLm5hbWUgPSAnRXZhbENhcEV4Y2VlZGVkRXJyb3InO1xuICAgIHRoaXMuY2FwSW5NaWxsaXNlY29uZHMgPSBwYXJhbXMuY2FwSW5NaWxsaXNlY29uZHM7XG4gICAgdGhpcy50cmFuc3BvcnROYW1lID0gcGFyYW1zLnRyYW5zcG9ydE5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGFuIGVycm9yIGlzIGEgV2ViRHJpdmVyIHNjcmlwdCB0aW1lb3V0IFx1MjAxNCB0aGUgVzNDIGVycm9yIGEgZHJpdmVyIHdvdWxkXG4gKiByYWlzZSBpZiBpdCBlbmZvcmNlZCBgdGltZW91dHMuc2NyaXB0YC5cbiAqXG4gKiBNYXRjaGVkIG9uIHRoZSBtZXNzYWdlIHJhdGhlciB0aGFuIG9uIGEgdHlwZSwgYmVjYXVzZSB0aGUgZXJyb3IgYXJyaXZlcyBhcyBhXG4gKiBnZW5lcmljIGBXZWJEcml2ZXJFcnJvcmAgd2hvc2Ugb25seSBkaXN0aW5ndWlzaGluZyBtYXJrIGlzIHRoZSBXM0MgZXJyb3IgY29kZVxuICogaW4gaXRzIHRleHQuXG4gKlxuICogKipUaGlzIGRyaXZlciBuZXZlciByYWlzZXMgaXQuKiogVWlBdXRvbWF0b3IyIHdhcyBtZWFzdXJlZCBhY2NlcHRpbmcgdGhlXG4gKiBjYXBhYmlsaXR5LCByZXBvcnRpbmcgaXQgYmFjaywgYW5kIGVuZm9yY2luZyBub3RoaW5nLiBUaGUgcHJlZGljYXRlIGlzIGtlcHRcbiAqIGJlY2F1c2UgaXQgY29zdHMgbm90aGluZywgaXQgaXMgdGhlIHJpZ2h0IHRyYW5zbGF0aW9uIGlmIGEgZnV0dXJlIGRyaXZlciBkb2VzXG4gKiBlbmZvcmNlIHRoZSBjYXBhYmlsaXR5LCBhbmQgaXQga2VlcHMgb25lIGVycm9yIGNvdmVyaW5nIG9uZSBjb25kaXRpb24gb24gYm90aFxuICogdHJhbnNwb3J0cyBcdTIwMTQgYnV0IHRoZSBBbmRyb2lkIGNhcCBpcyBlbmZvcmNlZCBOb2RlLXNpZGUsIGFuZCB0aGlzIGlzIG5vdCB3aGF0XG4gKiBlbmZvcmNlcyBpdC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdGhyb3duIGJ5IHRoZSB0cmFuc3BvcnQuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZXJyb3IgaXMgYSBzY3JpcHQgdGltZW91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyaXB0VGltZW91dEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIChTQ1JJUFRfVElNRU9VVF9QQVRURVJOLnRlc3QoZXJyb3IubWVzc2FnZSkgfHwgU0NSSVBUX1RJTUVPVVRfUEFUVEVSTi50ZXN0KGVycm9yLm5hbWUpKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHNoYXJlZCBtZXNzYWdlIGJvdGggdHJhbnNwb3J0cyByZXBvcnQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjYXAsIHRoZSB0cmFuc3BvcnQsIGFuZCB0aGUgb3B0aW9uIHRoYXQgc2V0cyB0aGUgY2FwLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShwYXJhbXM6IEV2YWxDYXBFeGNlZWRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMpOiBzdHJpbmcge1xuICByZXR1cm4gYEEgc2luZ2xlIGV2YWxJbk9ic2lkaWFuIGNsb3N1cmUgcmFuIGxvbmdlciB0aGFuIHRoZSAke3BhcmFtcy50cmFuc3BvcnROYW1lfSBwZXItZXZhbCBjYXAgb2YgJHtTdHJpbmcocGFyYW1zLmNhcEluTWlsbGlzZWNvbmRzKX1tcywgc28gaXQgd2FzIGtpbGxlZCBtaWQtZmxpZ2h0LiBUaGlzIGlzIGEgcHJvcGVydHkgb2YgdGhlIGNsb3N1cmUsIG5vdCBvZiB0aGUgZGV2aWNlIG9yIHRoZSBhcHA6IGBcbiAgICArICdldmVyeXRoaW5nIGF3YWl0ZWQgaW5zaWRlIG9uZSBjbG9zdXJlIHNoYXJlcyB0aGF0IG9uZSBidWRnZXQsIGluY2x1ZGluZyBldmVyeSBgbGliLndhaXRVbnRpbGAgdGltZW91dCAnXG4gICAgKyAnYW5kIGV2ZXJ5IHNldHRsZSBgc2xlZXBgLiBEbyB0aGUgd2FpdGluZyBmcm9tIE5vZGUgaW5zdGVhZCBcdTIwMTQgYHBvbGxJbk9ic2lkaWFuYCBydW5zIGEgc2hvcnQgYHBvbGxgICdcbiAgICArICdjbG9zdXJlIHJlcGVhdGVkbHkgdW50aWwgYSBOb2RlLXNpZGUgYHVudGlsYCBhY2NlcHRzLCBzbyBubyBzaW5nbGUgZXZhbCBpcyBldmVyIGxvbmcuIFJhaXNlICdcbiAgICArIGBcXGAke3BhcmFtcy5vcHRpb25OYW1lfVxcYCBvbmx5IGZvciBhIGNsb3N1cmUgdGhhdCBnZW51aW5lbHkgY2Fubm90IGJlIHNwbGl0LmA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFrQ0EsTUFBTSx5QkFBeUI7QUFrQ3hCLE1BQU0sNkJBQTZCLE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUk5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVCxZQUFZLFFBQStDO0FBQ2hFLFVBQU0sYUFBYSxNQUFNLEdBQUcsRUFBRSxPQUFPLE9BQU8sTUFBTSxDQUFDO0FBQ25ELFNBQUssT0FBTztBQUNaLFNBQUssb0JBQW9CLE9BQU87QUFDaEMsU0FBSyxnQkFBZ0IsT0FBTztBQUFBLEVBQzlCO0FBQ0Y7QUFvQk8sU0FBUyxxQkFBcUIsT0FBeUI7QUFDNUQsU0FBTyxpQkFBaUIsVUFBVSx1QkFBdUIsS0FBSyxNQUFNLE9BQU8sS0FBSyx1QkFBdUIsS0FBSyxNQUFNLElBQUk7QUFDeEg7QUFRQSxTQUFTLGFBQWEsUUFBdUQ7QUFDM0UsU0FBTyx1REFBdUQsT0FBTyxhQUFhLG9CQUFvQixPQUFPLE9BQU8saUJBQWlCLENBQUMsMFpBSTdILE9BQU8sVUFBVTtBQUM1QjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -9,24 +9,18 @@ function exec(command, options = {}) {
9
9
  const commandArguments = command.filter((part) => typeof part === "string");
10
10
  const commandLine = toCommandLine(commandArguments);
11
11
  const maxCommandLength2 = getMaxCommandLength();
12
- if (commandLine.length > maxCommandLength2) {
13
- return Promise.reject(
14
- new Error(
15
- `Command line is too long (${String(commandLine.length)} chars, max ${String(maxCommandLength2)} on ${process.platform}). Consider using ExecArgument with batchedArguments.`
16
- )
17
- );
18
- }
19
- return execString(commandLine, options, commandArguments);
20
- }
21
- const maxCommandLength = getMaxCommandLength();
22
- if (command.length > maxCommandLength) {
23
- return Promise.reject(
12
+ return commandLine.length > maxCommandLength2 ? Promise.reject(
24
13
  new Error(
25
- `Command line is too long (${String(command.length)} chars, max ${String(maxCommandLength)} on ${process.platform}). Consider using ExecArgument with batchedArguments.`
14
+ `Command line is too long (${String(commandLine.length)} chars, max ${String(maxCommandLength2)} on ${process.platform}). Consider using ExecArgument with batchedArguments.`
26
15
  )
27
- );
16
+ ) : execString(commandLine, options, commandArguments);
28
17
  }
29
- return execString(command, options);
18
+ const maxCommandLength = getMaxCommandLength();
19
+ return command.length > maxCommandLength ? Promise.reject(
20
+ new Error(
21
+ `Command line is too long (${String(command.length)} chars, max ${String(maxCommandLength)} on ${process.platform}). Consider using ExecArgument with batchedArguments.`
22
+ )
23
+ ) : execString(command, options);
30
24
  }
31
25
  function execString(command, options = {}, rawArguments) {
32
26
  const {
@@ -148,10 +142,7 @@ async function executeBatches(baseCommand, batches, options) {
148
142
  results.push(result);
149
143
  }
150
144
  }
151
- if (options.shouldIncludeDetails) {
152
- return { exitCode: 0, exitSignal: null, stderr: "", stdout: results.join("\n") };
153
- }
154
- return results.join("\n");
145
+ return options.shouldIncludeDetails ? { exitCode: 0, exitSignal: null, stderr: "", stdout: results.join("\n") } : results.join("\n");
155
146
  }
156
147
  function getMaxCommandLength() {
157
148
  const WINDOWS_MAX_COMMAND_LENGTH = 8191;
@@ -227,13 +218,10 @@ function spawnViaShell(command, cwd, rawArguments) {
227
218
  });
228
219
  }
229
220
  function trimEnd(value, suffix) {
230
- if (value.endsWith(suffix)) {
231
- return value.slice(0, -suffix.length);
232
- }
233
- return value;
221
+ return value.endsWith(suffix) ? value.slice(0, -suffix.length) : value;
234
222
  }
235
223
  export {
236
224
  exec,
237
225
  toCommandLine
238
226
  };
239
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJndW1lbnR9IHdpdGggYmF0Y2hlZCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1hbmRQYXJ0ID0gRXhlY0FyZ3VtZW50IHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY29tbWFuZCBhcmd1bWVudCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBjb21tYW5kQXJndW1lbnRzIHRvIGJlIGJhdGNoZWQuXG4gKiBJZiB0aGUgZXhwYW5kZWQgY29tbWFuZCBleGNlZWRzIHRoZSBwbGF0Zm9ybSdzIG1heCBjb21tYW5kIGxlbmd0aCxcbiAqIHRoZSBiYXRjaGVkIGNvbW1hbmRBcmd1bWVudHMgYXJlIHNwbGl0IGludG8gc2VxdWVudGlhbCBleGVjdXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNBcmd1bWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3VtZW50czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIGRldGFpbGVkIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0RldGFpbGVkT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgdHJ1ZWAgdG8gcmVjZWl2ZSBkZXRhaWxlZCByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM6IHRydWU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCByZXR1cm5zIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gVGhlIGNoaWxkIHByb2Nlc3MgaXMga2lsbGVkIGlmIGl0IGV4Y2VlZHMgdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHJlc3VsdCBvZiB7QGxpbmsgZXhlY30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBBbiBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGRpZCBub3QgZXhpdCBub3JtYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBiZSB0ZXJtaW5hdGVkLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCBubyBzaWduYWwgd2FzIHJlY2VpdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdFNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRvdXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gb25seSBzdGRvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1NpbXBsZU9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYGZhbHNlYCBvciBvbWl0dGVkIHRvIHJlY2VpdmUgb25seSBzdGRvdXQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGZhbHNlO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zPzogRXhlY1NpbXBsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBFeGVjUmVzdWx0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0RldGFpbGVkT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdD47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIG9yIGFuIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBjb21tYW5kQXJndW1lbnRzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShjb21tYW5kQXJndW1lbnRzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgaWYgKGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmRMaW5lLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciB1c2luZyBFeGVjQXJndW1lbnQgd2l0aCBiYXRjaGVkQXJndW1lbnRzLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kTGluZSwgb3B0aW9ucywgY29tbWFuZEFyZ3VtZW50cyk7XG4gIH1cblxuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICBpZiAoY29tbWFuZC5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciB1c2luZyBFeGVjQXJndW1lbnQgd2l0aCBiYXRjaGVkQXJndW1lbnRzLmBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWNTdHJpbmcoY29tbWFuZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzaW5nbGUgc3RyaW5nIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBzdHJpbmcuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmF3QXJndW1lbnRzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLCB1c2VkIGJ5IHRoZVxuICogICBkaXJlY3Qtc3Bhd24gZmFsbGJhY2sgb24gV2luZG93cyB3aGVuIHRoZSBjb21tYW5kIGNvbnRhaW5zIG5ld2xpbmVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmd1bWVudHM/OiBzdHJpbmdbXSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY3dkID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBpc1F1aWV0OiBxdWlldCA9IGZhbHNlLFxuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiBpZ25vcmVFeGl0Q29kZSA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzID0gZmFsc2UsXG4gICAgc3RkaW4gPSAnJyxcbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduVmlhU2hlbGwoY29tbWFuZCwgY3dkLCByYXdBcmd1bWVudHMpO1xuICAgIGxldCB0aW1lb3V0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2hpbGQua2lsbCgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIHRpbWVkIG91dCBhZnRlciAke1N0cmluZyh0aW1lb3V0SW5NaWxsaXNlY29uZHMpfW1zYCkpO1xuICAgICAgfSwgdGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICB9XG5cbiAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgbGV0IHN0ZGVyciA9ICcnO1xuXG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoc3RkaW4pO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRvdXQgPSB0cmltRW5kKHN0ZG91dCwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRlcnIgPSB0cmltRW5kKHN0ZGVyciwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlLCBleGl0U2lnbmFsKSA9PiB7XG4gICAgICBpZiAodGltZW91dFRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy5cbiAqL1xuY29uc3QgQ0hJTERfRU5WID0ge1xuICBERUJVR19DT0xPUlM6ICcxJyxcbiAgLi4ucHJvY2Vzcy5lbnZcbn07XG5cbi8qKlxuICogTWF0Y2hlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIGBeYC1lc2NhcGVkLlxuICovXG5jb25zdCBDTURfTUVUQV9SRSA9IC9bKCklIV5cIjw+JnxdL2c7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbW1hbmRMaW5lKGNvbW1hbmRBcmd1bWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRBcmd1bWVudHMubWFwKChhcmd1bWVudCkgPT4gYXJndlF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBzbyB0aGF0IGBDb21tYW5kTGluZVRvQXJndldgIHdpbGwgZGVjb2RlIGl0XG4gKiB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG5mdW5jdGlvbiBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb21tYW5kTGluZS5yZXBsYWNlQWxsKENNRF9NRVRBX1JFLCAnXiQmJyk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYmF0Y2hlZCBjb21tYW5kcyBzZXF1ZW50aWFsbHkgYW5kIGNvbmNhdGVuYXRlcyBzdGRvdXQuXG4gKlxuICogQHBhcmFtIGJhc2VDb21tYW5kIC0gVGhlIGJhc2UgY29tbWFuZCB3aXRob3V0IGJhdGNoZWQgY29tbWFuZEFyZ3VtZW50cy5cbiAqIEBwYXJhbSBiYXRjaGVzIC0gVGhlIGJhdGNoZXMgb2YgY29tbWFuZEFyZ3VtZW50cy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kOiBzdHJpbmcsIGJhdGNoZXM6IHN0cmluZ1tdW10sIG9wdGlvbnM6IEV4ZWNPcHRpb24pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICBjb25zdCBiYXRjaENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtiYXRjaC5qb2luKCcgJyl9YDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjU3RyaW5nKGJhdGNoQ29tbWFuZCwgb3B0aW9ucyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgIHJldHVybiB7IGV4aXRDb2RlOiAwLCBleGl0U2lnbmFsOiBudWxsLCBzdGRlcnI6ICcnLCBzdGRvdXQ6IHJlc3VsdHMuam9pbignXFxuJykgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIG1heCBjb21tYW5kIGxpbmUgbGVuZ3RoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXggY29tbWFuZCBsZW5ndGggaW4gY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF4Q29tbWFuZExlbmd0aCgpOiBudW1iZXIge1xuICBjb25zdCBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA9IDgxOTE7XG4gIGNvbnN0IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIID0gMTMxXzA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBuZWVkZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kXG4gKiBoYXMgbm8gRXhlY0FyZ3VtZW50IGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJndW1lbnRzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZ3VtZW50KTtcbiAgaWYgKGV4ZWNBcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZ3VtZW50IHdpdGggYmF0Y2hlZEFyZ3VtZW50cyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZ3VtZW50ID0gZXhlY0FyZ3VtZW50c1swXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnV0aHkgYWZ0ZXIgdGhlIGxlbmd0aCBjaGVjayBhYm92ZS4gKi9cbiAgaWYgKCFleGVjQXJndW1lbnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZ3VtZW50LmJhdGNoZWRBcmd1bWVudHMuam9pbignICcpfWA7XG4gIGlmIChmdWxsQ29tbWFuZC5sZW5ndGggPD0gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBleGVjU3RyaW5nKGZ1bGxDb21tYW5kLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIGV4ZWNBcmd1bWVudC5iYXRjaGVkQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJndW1lbnRdLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmd1bWVudC5sZW5ndGgpfSBjaGFycykgcGx1cyB0aGUgYmFzZSBjb21tYW5kICgke1N0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpfSBjaGFycykgZXhjZWVkcyB0aGUgbWF4IGNvbW1hbmQgbGVuZ3RoICgke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0pLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgICAgIGN1cnJlbnRCYXRjaCA9IFthcmd1bWVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZ3VtZW50KTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJndW1lbnRzIGlzIG5vbi1lbXB0eSBhdCB0aGlzIHBvaW50LiAqL1xuICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kLCBiYXRjaGVzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjb21tYW5kIHBhcnQgaXMgYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZ3VtZW50KHBhcnQ6IENvbW1hbmRQYXJ0KTogcGFydCBpcyBFeGVjQXJndW1lbnQge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJndW1lbnRzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCB3aGVuIHRoZSByYXcgY29tbWFuZEFyZ3VtZW50cyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2Vzc1xuICogZGlyZWN0bHkgd2l0aG91dCBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgY29tbWFuZEFyZ3VtZW50cyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaFxuICogYXZvaWRzIGFsbCBgY21kLmV4ZWAgcXVvdGluZy9lc2NhcGluZyBpc3N1ZXMgKG5lc3RlZCBxdW90ZXMsIG1ldGFjaGFyYWN0ZXJzLFxuICogbmV3bGluZXMgaW4gY29tbWFuZEFyZ3VtZW50cywgZXRjLikuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSkuXG4gKiBAcmV0dXJucyBUaGUgc3Bhd25lZCBjaGlsZCBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGF3blZpYVNoZWxsKGNvbW1hbmQ6IHN0cmluZywgY3dkOiBzdHJpbmcsIHJhd0FyZ3VtZW50cz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgcmF3QXJndW1lbnRzKSB7XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmNvbW1hbmRBcmd1bWVudHNdID0gcmF3QXJndW1lbnRzO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1dGh5OyByYXdBcmd1bWVudHMgY29tZXMgZnJvbSB0aGUgYXJyYXkgcGF0aCB3aGljaCBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICovXG4gICAgaWYgKCFwcm9ncmFtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICByZXR1cm4gc3Bhd24ocHJvZ3JhbSwgY29tbWFuZEFyZ3VtZW50cywge1xuICAgICAgY3dkLFxuICAgICAgZW52OiBDSElMRF9FTlYsXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSk7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZCkgOiBjb21tYW5kO1xuICByZXR1cm4gc3Bhd24oc2hlbGxDb21tYW5kLCBbXSwge1xuICAgIGN3ZCxcbiAgICBlbnY6IENISUxEX0VOVixcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBzdGRpbzogJ3BpcGUnXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYSBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nIGlmIHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0cmltRW5kKHZhbHVlOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlLmVuZHNXaXRoKHN1ZmZpeCkpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2Uo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
227
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJndW1lbnR9IHdpdGggYmF0Y2hlZCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1hbmRQYXJ0ID0gRXhlY0FyZ3VtZW50IHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY29tbWFuZCBhcmd1bWVudCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBjb21tYW5kQXJndW1lbnRzIHRvIGJlIGJhdGNoZWQuXG4gKiBJZiB0aGUgZXhwYW5kZWQgY29tbWFuZCBleGNlZWRzIHRoZSBwbGF0Zm9ybSdzIG1heCBjb21tYW5kIGxlbmd0aCxcbiAqIHRoZSBiYXRjaGVkIGNvbW1hbmRBcmd1bWVudHMgYXJlIHNwbGl0IGludG8gc2VxdWVudGlhbCBleGVjdXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNBcmd1bWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3VtZW50czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIGRldGFpbGVkIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0RldGFpbGVkT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgdHJ1ZWAgdG8gcmVjZWl2ZSBkZXRhaWxlZCByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM6IHRydWU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCByZXR1cm5zIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gVGhlIGNoaWxkIHByb2Nlc3MgaXMga2lsbGVkIGlmIGl0IGV4Y2VlZHMgdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHJlc3VsdCBvZiB7QGxpbmsgZXhlY30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBBbiBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGRpZCBub3QgZXhpdCBub3JtYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBiZSB0ZXJtaW5hdGVkLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCBubyBzaWduYWwgd2FzIHJlY2VpdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdFNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRvdXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gb25seSBzdGRvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1NpbXBsZU9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYGZhbHNlYCBvciBvbWl0dGVkIHRvIHJlY2VpdmUgb25seSBzdGRvdXQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGZhbHNlO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zPzogRXhlY1NpbXBsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBFeGVjUmVzdWx0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0RldGFpbGVkT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdD47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIG9yIGFuIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBjb21tYW5kQXJndW1lbnRzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShjb21tYW5kQXJndW1lbnRzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgcmV0dXJuIGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGhcbiAgICAgID8gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgdXNpbmcgRXhlY0FyZ3VtZW50IHdpdGggYmF0Y2hlZEFyZ3VtZW50cy5gXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIDogZXhlY1N0cmluZyhjb21tYW5kTGluZSwgb3B0aW9ucywgY29tbWFuZEFyZ3VtZW50cyk7XG4gIH1cblxuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICByZXR1cm4gY29tbWFuZC5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoXG4gICAgPyBQcm9taXNlLnJlamVjdChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZC5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgdXNpbmcgRXhlY0FyZ3VtZW50IHdpdGggYmF0Y2hlZEFyZ3VtZW50cy5gXG4gICAgICApXG4gICAgKVxuICAgIDogZXhlY1N0cmluZyhjb21tYW5kLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBzdHJpbmcgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEBwYXJhbSByYXdBcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlXG4gKiAgIGRpcmVjdC1zcGF3biBmYWxsYmFjayBvbiBXaW5kb3dzIHdoZW4gdGhlIGNvbW1hbmQgY29udGFpbnMgbmV3bGluZXMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIGV4ZWNTdHJpbmcoY29tbWFuZDogc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30sIHJhd0FyZ3VtZW50cz86IHN0cmluZ1tdKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBjd2QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIGlzUXVpZXQ6IHF1aWV0ID0gZmFsc2UsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IGlnbm9yZUV4aXRDb2RlID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZURldGFpbHMgPSBmYWxzZSxcbiAgICBzdGRpbiA9ICcnLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd25WaWFTaGVsbChjb21tYW5kLCBjd2QsIHJhd0FyZ3VtZW50cyk7XG4gICAgbGV0IHRpbWVvdXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGltZW91dEluTWlsbGlzZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjaGlsZC5raWxsKCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgdGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9bXNgKSk7XG4gICAgICB9LCB0aW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgIH1cblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICBjaGlsZC5zdGRpbi53cml0ZShzdGRpbik7XG4gICAgY2hpbGQuc3RkaW4uZW5kKCk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZG91dCA9IHRyaW1FbmQoc3Rkb3V0LCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZGVyciA9IHRyaW1FbmQoc3RkZXJyLCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignY2xvc2UnLCAoZXhpdENvZGUsIGV4aXRTaWduYWwpID0+IHtcbiAgICAgIGlmICh0aW1lb3V0VGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRUaW1lcik7XG4gICAgICB9XG4gICAgICBpZiAoZXhpdENvZGUgIT09IDAgJiYgIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGUgPyBTdHJpbmcoZXhpdENvZGUpIDogJyhudWxsKSd9XFxuJHtzdGRlcnJ9YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICAgIGV4aXRTaWduYWwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBleGl0Q29kZTogbnVsbCxcbiAgICAgICAgZXhpdFNpZ25hbDogbnVsbCxcbiAgICAgICAgc3RkZXJyLFxuICAgICAgICBzdGRvdXRcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlcyBwYXNzZWQgdG8gY2hpbGQgcHJvY2Vzc2VzLlxuICovXG5jb25zdCBDSElMRF9FTlYgPSB7XG4gIERFQlVHX0NPTE9SUzogJzEnLFxuICAuLi5wcm9jZXNzLmVudlxufTtcblxuLyoqXG4gKiBNYXRjaGVzIGBjbWQuZXhlYCBtZXRhY2hhcmFjdGVycyB0aGF0IG11c3QgYmUgYF5gLWVzY2FwZWQuXG4gKi9cbmNvbnN0IENNRF9NRVRBX1JFID0gL1soKSUhXlwiPD4mfF0vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogdXNpbmcgdGhlIGBDb21tYW5kTGluZVRvQXJndldgIGNvbnZlbnRpb24uXG4gKlxuICogQHBhcmFtIGNvbW1hbmRBcmd1bWVudHMgLSBUaGUgYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjb21tYW5kLWxpbmUgaW52b2NhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29tbWFuZExpbmUoY29tbWFuZEFyZ3VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gY29tbWFuZEFyZ3VtZW50cy5tYXAoKGFyZ3VtZW50KSA9PiBhcmd2UXVvdGUoYXJndW1lbnQpKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgcmF3IGFyZ3VtZW50IHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBxdW90ZWQgYXJndW1lbnQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBhcmd2UXVvdGUoYXJndW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChhcmd1bWVudC5sZW5ndGggPiAwICYmICEvW1xcc1xcdFxcblxcdlwiXS8udGVzdChhcmd1bWVudCkpIHtcbiAgICByZXR1cm4gYXJndW1lbnQ7XG4gIH1cblxuICBjb25zdCBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUiA9IDI7XG4gIGxldCByZXN1bHQgPSAnXCInO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnQubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgbGV0IG51bWJlckJhY2tzbGFzaGVzID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudC5sZW5ndGggJiYgYXJndW1lbnRbaW5kZXhdID09PSAnXFxcXCcpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICBudW1iZXJCYWNrc2xhc2hlcysrO1xuICAgIH1cblxuICAgIGlmIChpbmRleCA9PT0gYXJndW1lbnQubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGNoID0gYXJndW1lbnQuY2hhckF0KGluZGV4KTtcbiAgICByZXN1bHQgKz0gY2ggPT09ICdcIicgPyBgJHsnXFxcXCcucmVwZWF0KG51bWJlckJhY2tzbGFzaGVzICogQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgKyAxKX1cImAgOiAnXFxcXCcucmVwZWF0KG51bWJlckJhY2tzbGFzaGVzKSArIGNoO1xuICB9XG5cbiAgcmVzdWx0ICs9ICdcIic7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXNjYXBlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgd2l0aCBgXmAgc28gdGhhdCBgY21kLmV4ZWAgcGFzc2VzIHRoZW1cbiAqIHRocm91Z2ggbGl0ZXJhbGx5LlxuICpcbiAqIEBwYXJhbSBjb21tYW5kTGluZSAtIFRoZSBhbHJlYWR5LXF1b3RlZCBjb21tYW5kIGxpbmUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCBjbWQgbWV0YWNoYXJhY3RlcnMgYF5gLWVzY2FwZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbW1hbmRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kTGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRMaW5lLnJlcGxhY2VBbGwoQ01EX01FVEFfUkUsICdeJCYnKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBiYXRjaGVkIGNvbW1hbmRzIHNlcXVlbnRpYWxseSBhbmQgY29uY2F0ZW5hdGVzIHN0ZG91dC5cbiAqXG4gKiBAcGFyYW0gYmFzZUNvbW1hbmQgLSBUaGUgYmFzZSBjb21tYW5kIHdpdGhvdXQgYmF0Y2hlZCBjb21tYW5kQXJndW1lbnRzLlxuICogQHBhcmFtIGJhdGNoZXMgLSBUaGUgYmF0Y2hlcyBvZiBjb21tYW5kQXJndW1lbnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQ6IHN0cmluZywgYmF0Y2hlczogc3RyaW5nW11bXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCByZXN1bHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgIGNvbnN0IGJhdGNoQ29tbWFuZCA9IGAke2Jhc2VDb21tYW5kfSAke2JhdGNoLmpvaW4oJyAnKX1gO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNTdHJpbmcoYmF0Y2hDb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcHRpb25zLnNob3VsZEluY2x1ZGVEZXRhaWxzID8geyBleGl0Q29kZTogMCwgZXhpdFNpZ25hbDogbnVsbCwgc3RkZXJyOiAnJywgc3Rkb3V0OiByZXN1bHRzLmpvaW4oJ1xcbicpIH0gOiByZXN1bHRzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIG1heCBjb21tYW5kIGxpbmUgbGVuZ3RoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXggY29tbWFuZCBsZW5ndGggaW4gY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF4Q29tbWFuZExlbmd0aCgpOiBudW1iZXIge1xuICBjb25zdCBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA9IDgxOTE7XG4gIGNvbnN0IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIID0gMTMxXzA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBuZWVkZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kXG4gKiBoYXMgbm8gRXhlY0FyZ3VtZW50IGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJndW1lbnRzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZ3VtZW50KTtcbiAgaWYgKGV4ZWNBcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZ3VtZW50IHdpdGggYmF0Y2hlZEFyZ3VtZW50cyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZ3VtZW50ID0gZXhlY0FyZ3VtZW50c1swXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnV0aHkgYWZ0ZXIgdGhlIGxlbmd0aCBjaGVjayBhYm92ZS4gKi9cbiAgaWYgKCFleGVjQXJndW1lbnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZ3VtZW50LmJhdGNoZWRBcmd1bWVudHMuam9pbignICcpfWA7XG4gIGlmIChmdWxsQ29tbWFuZC5sZW5ndGggPD0gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBleGVjU3RyaW5nKGZ1bGxDb21tYW5kLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIGV4ZWNBcmd1bWVudC5iYXRjaGVkQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJndW1lbnRdLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmd1bWVudC5sZW5ndGgpfSBjaGFycykgcGx1cyB0aGUgYmFzZSBjb21tYW5kICgke1N0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpfSBjaGFycykgZXhjZWVkcyB0aGUgbWF4IGNvbW1hbmQgbGVuZ3RoICgke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0pLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgICAgIGN1cnJlbnRCYXRjaCA9IFthcmd1bWVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZ3VtZW50KTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJndW1lbnRzIGlzIG5vbi1lbXB0eSBhdCB0aGlzIHBvaW50LiAqL1xuICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kLCBiYXRjaGVzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjb21tYW5kIHBhcnQgaXMgYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZ3VtZW50KHBhcnQ6IENvbW1hbmRQYXJ0KTogcGFydCBpcyBFeGVjQXJndW1lbnQge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJndW1lbnRzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCB3aGVuIHRoZSByYXcgY29tbWFuZEFyZ3VtZW50cyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2Vzc1xuICogZGlyZWN0bHkgd2l0aG91dCBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgY29tbWFuZEFyZ3VtZW50cyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaFxuICogYXZvaWRzIGFsbCBgY21kLmV4ZWAgcXVvdGluZy9lc2NhcGluZyBpc3N1ZXMgKG5lc3RlZCBxdW90ZXMsIG1ldGFjaGFyYWN0ZXJzLFxuICogbmV3bGluZXMgaW4gY29tbWFuZEFyZ3VtZW50cywgZXRjLikuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSkuXG4gKiBAcmV0dXJucyBUaGUgc3Bhd25lZCBjaGlsZCBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGF3blZpYVNoZWxsKGNvbW1hbmQ6IHN0cmluZywgY3dkOiBzdHJpbmcsIHJhd0FyZ3VtZW50cz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgcmF3QXJndW1lbnRzKSB7XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmNvbW1hbmRBcmd1bWVudHNdID0gcmF3QXJndW1lbnRzO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1dGh5OyByYXdBcmd1bWVudHMgY29tZXMgZnJvbSB0aGUgYXJyYXkgcGF0aCB3aGljaCBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICovXG4gICAgaWYgKCFwcm9ncmFtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICByZXR1cm4gc3Bhd24ocHJvZ3JhbSwgY29tbWFuZEFyZ3VtZW50cywge1xuICAgICAgY3dkLFxuICAgICAgZW52OiBDSElMRF9FTlYsXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSk7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZCkgOiBjb21tYW5kO1xuICByZXR1cm4gc3Bhd24oc2hlbGxDb21tYW5kLCBbXSwge1xuICAgIGN3ZCxcbiAgICBlbnY6IENISUxEX0VOVixcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBzdGRpbzogJ3BpcGUnXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYSBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nIGlmIHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0cmltRW5kKHZhbHVlOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLmVuZHNXaXRoKHN1ZmZpeCkgPyB2YWx1ZS5zbGljZSgwLCAtc3VmZml4Lmxlbmd0aCkgOiB2YWx1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQVFBLFNBQVMsYUFBYTtBQUN0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
@@ -4,14 +4,11 @@ function getFunctionExpressionString(callback) {
4
4
  return functionString;
5
5
  }
6
6
  const asyncMatch = ASYNC_KEYWORD_RE.exec(functionString);
7
- if (asyncMatch) {
8
- return `async function ${functionString.slice(asyncMatch[0].length)}`;
9
- }
10
- return `function ${functionString}`;
7
+ return asyncMatch ? `async function ${functionString.slice(asyncMatch[0].length)}` : `function ${functionString}`;
11
8
  }
12
9
  const FUNCTION_EXPRESSION_RE = /^(?:function\b|async\b\s*(?:function\b|\()|\()/;
13
10
  const ASYNC_KEYWORD_RE = /^async\b\s*/;
14
11
  export {
15
12
  getFunctionExpressionString
16
13
  };
17
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLWV4cHJlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKlxuICogYEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZygpYCBvbiBhIHNob3J0aGFuZCBtZXRob2QgbGlrZSBgeyBjYWxsYmFjaygpIHt9IH1gXG4gKiByZXR1cm5zIGBcImNhbGxiYWNrKCkge31cImAsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGV4cHJlc3Npb24uXG4gKiBUaGlzIGhlbHBlciBkZXRlY3RzIHRoYXQgZm9ybSBhbmQgcHJlZml4ZXMgaXQgd2l0aCBgZnVuY3Rpb24gYC5cbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHRoYXQgaXMgYSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcoY2FsbGJhY2s6IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgY29uc3QgZnVuY3Rpb25TdHJpbmcgPSBjYWxsYmFjay50b1N0cmluZygpO1xuXG4gIGlmIChGVU5DVElPTl9FWFBSRVNTSU9OX1JFLnRlc3QoZnVuY3Rpb25TdHJpbmcpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uU3RyaW5nO1xuICB9XG5cbiAgY29uc3QgYXN5bmNNYXRjaCA9IEFTWU5DX0tFWVdPUkRfUkUuZXhlYyhmdW5jdGlvblN0cmluZyk7XG4gIGlmIChhc3luY01hdGNoKSB7XG4gICAgcmV0dXJuIGBhc3luYyBmdW5jdGlvbiAke2Z1bmN0aW9uU3RyaW5nLnNsaWNlKGFzeW5jTWF0Y2hbMF0ubGVuZ3RoKX1gO1xuICB9XG5cbiAgcmV0dXJuIGBmdW5jdGlvbiAke2Z1bmN0aW9uU3RyaW5nfWA7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgYXJlIGFscmVhZHkgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbnM6XG4gKiAtIGBmdW5jdGlvbiAuLi5gIChrZXl3b3JkLCBub3QgaWRlbnRpZmllciBsaWtlIGBmdW5jdGlvbjFgKVxuICogLSBgKGAgKGFycm93IGZ1bmN0aW9uKVxuICogLSBgYXN5bmNcXGJgIGZvbGxvd2VkIGJ5IGBmdW5jdGlvblxcYmAgb3IgYChgIChhc3luYyBmdW5jdGlvbi9hcnJvdylcbiAqL1xuY29uc3QgRlVOQ1RJT05fRVhQUkVTU0lPTl9SRSA9IC9eKD86ZnVuY3Rpb25cXGJ8YXN5bmNcXGJcXHMqKD86ZnVuY3Rpb25cXGJ8XFwoKXxcXCgpLztcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBgYXN5bmNgIGtleXdvcmQgKHdvcmQgYm91bmRhcnksIG5vdCBgYXN5bmMxYCkgZm9sbG93ZWQgYnkgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAqIFVzZWQgdG8gc3RyaXAgdGhlIGBhc3luY2AgcHJlZml4IGZyb20gYXN5bmMgc2hvcnRoYW5kIG1ldGhvZHMgYmVmb3JlIHJlLWFkZGluZyBgYXN5bmMgZnVuY3Rpb25gLlxuICovXG5jb25zdCBBU1lOQ19LRVlXT1JEX1JFID0gL15hc3luY1xcYlxccyovO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBaUJPLFNBQVMsNEJBQTRCLFVBQTRCO0FBQ3RFLFFBQU0saUJBQWlCLFNBQVMsU0FBUztBQUV6QyxNQUFJLHVCQUF1QixLQUFLLGNBQWMsR0FBRztBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sYUFBYSxpQkFBaUIsS0FBSyxjQUFjO0FBQ3ZELE1BQUksWUFBWTtBQUNkLFdBQU8sa0JBQWtCLGVBQWUsTUFBTSxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7QUFBQSxFQUNyRTtBQUVBLFNBQU8sWUFBWSxjQUFjO0FBQ25DO0FBUUEsTUFBTSx5QkFBeUI7QUFNL0IsTUFBTSxtQkFBbUI7IiwKICAibmFtZXMiOiBbXQp9Cg==
14
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLWV4cHJlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKlxuICogYEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZygpYCBvbiBhIHNob3J0aGFuZCBtZXRob2QgbGlrZSBgeyBjYWxsYmFjaygpIHt9IH1gXG4gKiByZXR1cm5zIGBcImNhbGxiYWNrKCkge31cImAsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGV4cHJlc3Npb24uXG4gKiBUaGlzIGhlbHBlciBkZXRlY3RzIHRoYXQgZm9ybSBhbmQgcHJlZml4ZXMgaXQgd2l0aCBgZnVuY3Rpb24gYC5cbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHRoYXQgaXMgYSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcoY2FsbGJhY2s6IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgY29uc3QgZnVuY3Rpb25TdHJpbmcgPSBjYWxsYmFjay50b1N0cmluZygpO1xuXG4gIGlmIChGVU5DVElPTl9FWFBSRVNTSU9OX1JFLnRlc3QoZnVuY3Rpb25TdHJpbmcpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uU3RyaW5nO1xuICB9XG5cbiAgY29uc3QgYXN5bmNNYXRjaCA9IEFTWU5DX0tFWVdPUkRfUkUuZXhlYyhmdW5jdGlvblN0cmluZyk7XG4gIHJldHVybiBhc3luY01hdGNoID8gYGFzeW5jIGZ1bmN0aW9uICR7ZnVuY3Rpb25TdHJpbmcuc2xpY2UoYXN5bmNNYXRjaFswXS5sZW5ndGgpfWAgOiBgZnVuY3Rpb24gJHtmdW5jdGlvblN0cmluZ31gO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgc3RyaW5ncyB0aGF0IGFyZSBhbHJlYWR5IHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb25zOlxuICogLSBgZnVuY3Rpb24gLi4uYCAoa2V5d29yZCwgbm90IGlkZW50aWZpZXIgbGlrZSBgZnVuY3Rpb24xYClcbiAqIC0gYChgIChhcnJvdyBmdW5jdGlvbilcbiAqIC0gYGFzeW5jXFxiYCBmb2xsb3dlZCBieSBgZnVuY3Rpb25cXGJgIG9yIGAoYCAoYXN5bmMgZnVuY3Rpb24vYXJyb3cpXG4gKi9cbmNvbnN0IEZVTkNUSU9OX0VYUFJFU1NJT05fUkUgPSAvXig/OmZ1bmN0aW9uXFxifGFzeW5jXFxiXFxzKig/OmZ1bmN0aW9uXFxifFxcKCl8XFwoKS87XG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgYGFzeW5jYCBrZXl3b3JkICh3b3JkIGJvdW5kYXJ5LCBub3QgYGFzeW5jMWApIGZvbGxvd2VkIGJ5IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gKiBVc2VkIHRvIHN0cmlwIHRoZSBgYXN5bmNgIHByZWZpeCBmcm9tIGFzeW5jIHNob3J0aGFuZCBtZXRob2RzIGJlZm9yZSByZS1hZGRpbmcgYGFzeW5jIGZ1bmN0aW9uYC5cbiAqL1xuY29uc3QgQVNZTkNfS0VZV09SRF9SRSA9IC9eYXN5bmNcXGJcXHMqLztcbiJdLAogICJtYXBwaW5ncyI6ICJBQWlCTyxTQUFTLDRCQUE0QixVQUE0QjtBQUN0RSxRQUFNLGlCQUFpQixTQUFTLFNBQVM7QUFFekMsTUFBSSx1QkFBdUIsS0FBSyxjQUFjLEdBQUc7QUFDL0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsaUJBQWlCLEtBQUssY0FBYztBQUN2RCxTQUFPLGFBQWEsa0JBQWtCLGVBQWUsTUFBTSxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxZQUFZLGNBQWM7QUFDakg7QUFRQSxNQUFNLHlCQUF5QjtBQU0vQixNQUFNLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K