@dbx-tools/cli 0.9.154 → 0.9.157

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 (123) hide show
  1. package/bin/dbx-genie.ts +3 -2
  2. package/index.appkit.ts +9 -0
  3. package/index.auth.ts +9 -0
  4. package/index.brand.ts +18 -0
  5. package/index.genie-code.ts +18 -0
  6. package/index.graphiti.ts +7 -0
  7. package/index.lakebase-proxy.ts +18 -0
  8. package/index.model-gateway.ts +9 -0
  9. package/index.ts +5 -61
  10. package/index.tunnel.ts +14 -0
  11. package/lib/bin/dbx-genie.js +4 -3
  12. package/lib/index.appkit.d.ts +5 -0
  13. package/lib/index.appkit.js +8 -0
  14. package/lib/index.auth.d.ts +5 -0
  15. package/lib/index.auth.js +8 -0
  16. package/lib/index.brand.d.ts +14 -0
  17. package/lib/index.brand.js +14 -0
  18. package/lib/index.d.ts +5 -61
  19. package/lib/index.genie-code.d.ts +14 -0
  20. package/lib/index.genie-code.js +14 -0
  21. package/lib/index.graphiti.d.ts +3 -0
  22. package/lib/index.graphiti.js +6 -0
  23. package/lib/index.js +6 -43
  24. package/lib/index.lakebase-proxy.d.ts +14 -0
  25. package/lib/index.lakebase-proxy.js +14 -0
  26. package/lib/index.model-gateway.d.ts +5 -0
  27. package/lib/index.model-gateway.js +8 -0
  28. package/lib/index.tunnel.d.ts +10 -0
  29. package/lib/index.tunnel.js +12 -0
  30. package/lib/src/appkit/cli.d.ts +1 -2
  31. package/lib/src/appkit/cli.js +4 -5
  32. package/lib/src/auth/cli.d.ts +2 -2
  33. package/lib/src/auth/cli.js +2 -3
  34. package/lib/src/auth/options.d.ts +2 -2
  35. package/lib/src/auth/options.js +4 -6
  36. package/lib/src/bootstrap.js +10 -14
  37. package/lib/src/brand/options.js +2 -2
  38. package/lib/src/brand/run.js +6 -8
  39. package/lib/src/brand/showcase.js +5 -5
  40. package/lib/src/bun.js +6 -6
  41. package/lib/src/genie-code/cli.d.ts +2 -2
  42. package/lib/src/genie-code/cli.js +4 -4
  43. package/lib/src/genie-code/config.d.ts +1 -1
  44. package/lib/src/genie-code/config.js +7 -7
  45. package/lib/src/genie-code/install.d.ts +2 -2
  46. package/lib/src/genie-code/install.js +4 -4
  47. package/lib/src/genie-code/runner.d.ts +2 -3
  48. package/lib/src/genie-code/runner.js +13 -11
  49. package/lib/src/genie-code/runtime.d.ts +3 -3
  50. package/lib/src/genie-code/runtime.js +10 -9
  51. package/lib/src/graphiti/cli.d.ts +2 -3
  52. package/lib/src/graphiti/cli.js +7 -8
  53. package/lib/src/lakebase-proxy/cli.d.ts +1 -2
  54. package/lib/src/lakebase-proxy/cli.js +3 -4
  55. package/lib/src/lakebase-proxy/options.js +7 -9
  56. package/lib/src/lakebase-proxy/proxy.js +8 -8
  57. package/lib/src/model-gateway/cli.d.ts +2 -3
  58. package/lib/src/model-gateway/cli.js +3 -4
  59. package/lib/src/model-gateway/server.d.ts +1 -1
  60. package/lib/src/model-gateway/server.js +5 -6
  61. package/lib/src/root.js +3 -3
  62. package/lib/src/tunnel/app.js +7 -9
  63. package/lib/src/tunnel/cli.d.ts +1 -2
  64. package/lib/src/tunnel/cli.js +13 -14
  65. package/lib/src/tunnel/options.d.ts +5 -5
  66. package/lib/src/tunnel/options.js +11 -11
  67. package/lib/src/tunnel/proxy.js +18 -17
  68. package/lib/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +58 -177
  70. package/src/appkit/cli.ts +2 -4
  71. package/src/auth/cli.ts +2 -4
  72. package/src/auth/options.ts +3 -5
  73. package/src/bootstrap.ts +9 -13
  74. package/src/brand/options.ts +1 -1
  75. package/src/brand/run.ts +7 -7
  76. package/src/brand/showcase.ts +4 -4
  77. package/src/bun.ts +6 -6
  78. package/src/genie-code/cli.ts +4 -4
  79. package/src/genie-code/config.ts +6 -6
  80. package/src/genie-code/install.ts +5 -7
  81. package/src/genie-code/runner.ts +12 -11
  82. package/src/genie-code/runtime.ts +10 -10
  83. package/src/graphiti/cli.ts +13 -9
  84. package/src/lakebase-proxy/cli.ts +7 -3
  85. package/src/lakebase-proxy/options.ts +13 -8
  86. package/src/lakebase-proxy/proxy.ts +7 -7
  87. package/src/model-gateway/cli.ts +7 -3
  88. package/src/model-gateway/server.ts +9 -5
  89. package/src/root.ts +2 -2
  90. package/src/tunnel/app.ts +6 -8
  91. package/src/tunnel/cli.ts +21 -15
  92. package/src/tunnel/options.ts +23 -15
  93. package/src/tunnel/proxy.ts +29 -20
  94. package/lib/src/appkit/index.d.ts +0 -5
  95. package/lib/src/appkit/index.js +0 -8
  96. package/lib/src/auth/index.d.ts +0 -5
  97. package/lib/src/auth/index.js +0 -8
  98. package/lib/src/brand/index.d.ts +0 -10
  99. package/lib/src/brand/index.js +0 -10
  100. package/lib/src/genie-code/index.d.ts +0 -12
  101. package/lib/src/genie-code/index.js +0 -12
  102. package/lib/src/genie-code/options.d.ts +0 -7
  103. package/lib/src/genie-code/options.js +0 -7
  104. package/lib/src/graphiti/index.d.ts +0 -5
  105. package/lib/src/graphiti/index.js +0 -7
  106. package/lib/src/graphiti/options.d.ts +0 -117
  107. package/lib/src/graphiti/options.js +0 -26
  108. package/lib/src/lakebase-proxy/index.d.ts +0 -13
  109. package/lib/src/lakebase-proxy/index.js +0 -13
  110. package/lib/src/model-gateway/index.d.ts +0 -3
  111. package/lib/src/model-gateway/index.js +0 -6
  112. package/lib/src/tunnel/index.d.ts +0 -8
  113. package/lib/src/tunnel/index.js +0 -10
  114. package/src/appkit/index.ts +0 -9
  115. package/src/auth/index.ts +0 -9
  116. package/src/brand/index.ts +0 -14
  117. package/src/genie-code/index.ts +0 -16
  118. package/src/genie-code/options.ts +0 -14
  119. package/src/graphiti/index.ts +0 -9
  120. package/src/graphiti/options.ts +0 -40
  121. package/src/lakebase-proxy/index.ts +0 -17
  122. package/src/model-gateway/index.ts +0 -7
  123. package/src/tunnel/index.ts +0 -12
@@ -5,10 +5,9 @@
5
5
  */
6
6
  import { createHash, timingSafeEqual } from "node:crypto";
7
7
  import { createApp, server } from "@databricks/appkit";
8
- import { ModelGateway } from "@dbx-tools/appkit-model-gateway";
9
- import { sendHealth, sendInference, sendModels } from "@dbx-tools/appkit-model-gateway/routes";
10
- import { workspaceClient } from "@dbx-tools/databricks";
11
- import { resolveModelGatewayOptions, } from "@dbx-tools/shared-model-gateway/options";
8
+ import { ModelGateway, sendHealth, sendInference, sendModels, } from "@dbx-tools/appkit-model-gateway";
9
+ import { createWorkspaceClient } from "@dbx-tools/databricks";
10
+ import { resolveModelGatewayOptions, } from "@dbx-tools/shared-model-gateway";
12
11
  /** Resolve AppKit server settings for the loopback model gateway. */
13
12
  export function modelGatewayServerOptions(options = {}) {
14
13
  return appKitServerOptions(resolveModelGatewayOptions(options));
@@ -53,7 +52,7 @@ export async function startModelGateway(options = {}) {
53
52
  ...(resolved.modelClass ? { modelClass: resolved.modelClass } : {}),
54
53
  preferSystemModels: resolved.preferSystemModels,
55
54
  });
56
- const client = await workspaceClient.createWorkspaceClient({
55
+ const client = await createWorkspaceClient({
57
56
  ...(resolved.profile ? { profile: resolved.profile } : {}),
58
57
  });
59
58
  await createApp({
@@ -84,4 +83,4 @@ export async function startModelGateway(options = {}) {
84
83
  },
85
84
  });
86
85
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsLWdhdGV3YXkvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNMLDBCQUEwQixHQUczQixNQUFNLHlDQUF5QyxDQUFDO0FBS2pELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBK0IsRUFBRTtJQUN6RSxPQUFPLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsT0FBb0M7SUFDL0QsT0FBTztRQUNMLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ3pCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUk7S0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWE7SUFDbkQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3RCxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUs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QkFBa0IsQ0FBQztvQkFDckMsQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3RDLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7aUJBQy9CLEVBQUUsQ0FBQztvQkFDWCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTt3QkFDM0MsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzNELENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JlZ3JvdW5kIG1vZGVsLWdhdGV3YXkgc2VydmVyIG93bmVkIGJ5IHRoZSBDTEkgcGFja2FnZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCwgdGltaW5nU2FmZUVxdWFsIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IE1vZGVsR2F0ZXdheSB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tb2RlbC1nYXRld2F5XCI7XG5pbXBvcnQgeyBzZW5kSGVhbHRoLCBzZW5kSW5mZXJlbmNlLCBzZW5kTW9kZWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0LW1vZGVsLWdhdGV3YXkvcm91dGVzXCI7XG5pbXBvcnQgeyB3b3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRieC10b29scy9kYXRhYnJpY2tzXCI7XG5pbXBvcnQge1xuICByZXNvbHZlTW9kZWxHYXRld2F5T3B0aW9ucyxcbiAgdHlwZSBNb2RlbEdhdGV3YXlPcHRpb25zLFxuICB0eXBlIFJlc29sdmVkTW9kZWxHYXRld2F5T3B0aW9ucyxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXkvb3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgZXhwcmVzcyBmcm9tIFwiZXhwcmVzc1wiO1xuXG50eXBlIEFwcEtpdFNlcnZlck9wdGlvbnMgPSBOb25OdWxsYWJsZTxQYXJhbWV0ZXJzPHR5cGVvZiBzZXJ2ZXI+WzBdPjtcblxuLyoqIFJlc29sdmUgQXBwS2l0IHNlcnZlciBzZXR0aW5ncyBmb3IgdGhlIGxvb3BiYWNrIG1vZGVsIGdhdGV3YXkuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxHYXRld2F5U2VydmVyT3B0aW9ucyhvcHRpb25zOiBNb2RlbEdhdGV3YXlPcHRpb25zID0ge30pOiBBcHBLaXRTZXJ2ZXJPcHRpb25zIHtcbiAgcmV0dXJuIGFwcEtpdFNlcnZlck9wdGlvbnMocmVzb2x2ZU1vZGVsR2F0ZXdheU9wdGlvbnMob3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBhcHBLaXRTZXJ2ZXJPcHRpb25zKG9wdGlvbnM6IFJlc29sdmVkTW9kZWxHYXRld2F5T3B0aW9ucyk6IEFwcEtpdFNlcnZlck9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIGJvZHlMaW1pdDogb3B0aW9ucy5ib2R5TGltaXQsXG4gICAgaG9zdDogb3B0aW9ucy5saXN0ZW4uaG9zdCxcbiAgICBwb3J0OiBvcHRpb25zLmxpc3Rlbi5wb3J0LFxuICB9O1xufVxuXG4vKiogUmVxdWlyZSBvbmUgYmVhcmVyIHRva2VuIHdpdGhvdXQgcmV0YWluaW5nIG9yIGxvZ2dpbmcgcmVxdWVzdCBjcmVkZW50aWFscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnYXRld2F5QmVhcmVyTWlkZGxld2FyZSh0b2tlbjogc3RyaW5nKTogZXhwcmVzcy5SZXF1ZXN0SGFuZGxlciB7XG4gIGNvbnN0IGV4cGVjdGVkID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUodG9rZW4pLmRpZ2VzdCgpO1xuICByZXR1cm4gKHJlcXVlc3QsIHJlc3BvbnNlLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvbiA9IHJlcXVlc3QuaGVhZGVyKFwiYXV0aG9yaXphdGlvblwiKTtcbiAgICBjb25zdCBtYXRjaCA9IC9eQmVhcmVyXFxzKyguKykkL2kuZXhlYyhhdXRob3JpemF0aW9uID8/IFwiXCIpO1xuICAgIGNvbnN0IGFjdHVhbCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIilcbiAgICAgIC51cGRhdGUobWF0Y2g/LlsxXSA/PyBcIlwiKVxuICAgICAgLmRpZ2VzdCgpO1xuICAgIGlmIChtYXRjaCAmJiB0aW1pbmdTYWZlRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVzcG9uc2VcbiAgICAgIC5zdGF0dXMoNDAxKVxuICAgICAgLnNldEhlYWRlcihcInd3dy1hdXRoZW50aWNhdGVcIiwgXCJCZWFyZXJcIilcbiAgICAgIC5qc29uKHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBtZXNzYWdlOiBcIkludmFsaWQgb3IgbWlzc2luZyBtb2RlbC1nYXRld2F5IGJlYXJlciB0b2tlbi5cIixcbiAgICAgICAgICB0eXBlOiBcImF1dGhlbnRpY2F0aW9uX2Vycm9yXCIsXG4gICAgICAgICAgY29kZTogXCJpbnZhbGlkX2JlYXJlcl90b2tlblwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH07XG59XG5cbi8qKiBTdGFydCB0aGUgZm9yZWdyb3VuZCBtb2RlbCBnYXRld2F5IGFuZCBrZWVwIGl0cyBBcHBLaXQgc2VydmVyIGFjdGl2ZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydE1vZGVsR2F0ZXdheShvcHRpb25zOiBNb2RlbEdhdGV3YXlPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlTW9kZWxHYXRld2F5T3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZ2F0ZXdheSA9IG5ldyBNb2RlbEdhdGV3YXkoe1xuICAgIC4uLihyZXNvbHZlZC5tb2RlbCA/IHsgbW9kZWw6IHJlc29sdmVkLm1vZGVsIH0gOiB7fSksXG4gICAgLi4uKHJlc29sdmVkLm1vZGVsQ2xhc3MgPyB7IG1vZGVsQ2xhc3M6IHJlc29sdmVkLm1vZGVsQ2xhc3MgfSA6IHt9KSxcbiAgICBwcmVmZXJTeXN0ZW1Nb2RlbHM6IHJlc29sdmVkLnByZWZlclN5c3RlbU1vZGVscyxcbiAgfSk7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IHdvcmtzcGFjZUNsaWVudC5jcmVhdGVXb3Jrc3BhY2VDbGllbnQoe1xuICAgIC4uLihyZXNvbHZlZC5wcm9maWxlID8geyBwcm9maWxlOiByZXNvbHZlZC5wcm9maWxlIH0gOiB7fSksXG4gIH0pO1xuICBhd2FpdCBjcmVhdGVBcHAoe1xuICAgIGNsaWVudCxcbiAgICBwbHVnaW5zOiBbc2VydmVyKGFwcEtpdFNlcnZlck9wdGlvbnMocmVzb2x2ZWQpKV0sXG4gICAgb25QbHVnaW5zUmVhZHkoYXBwa2l0KSB7XG4gICAgICBhcHBraXQuc2VydmVyLmV4dGVuZCgoYXBwbGljYXRpb24pID0+IHtcbiAgICAgICAgaWYgKHJlc29sdmVkLmJlYXJlclRva2VuKSB7XG4gICAgICAgICAgYXBwbGljYXRpb24udXNlKGdhdGV3YXlCZWFyZXJNaWRkbGV3YXJlKHJlc29sdmVkLmJlYXJlclRva2VuKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXBwbGljYXRpb24uZ2V0KFwiL2FwaS9oZWFsdGh6XCIsIChfcmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBzZW5kSGVhbHRoKHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFwcGxpY2F0aW9uLmdldChcIi92MS9tb2RlbHNcIiwgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdm9pZCBzZW5kTW9kZWxzKGdhdGV3YXksIHJlcXVlc3QsIHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgW3BhdGgsIHByb3RvY29sXSBvZiBbXG4gICAgICAgICAgW1wiL3YxL2NoYXQvY29tcGxldGlvbnNcIiwgXCJvcGVuYWktY2hhdFwiXSxcbiAgICAgICAgICBbXCIvdjEvcmVzcG9uc2VzXCIsIFwib3BlbmFpLXJlc3BvbnNlc1wiXSxcbiAgICAgICAgICBbXCIvdjEvbWVzc2FnZXNcIiwgXCJhbnRocm9waWMtbWVzc2FnZXNcIl0sXG4gICAgICAgICAgW1wiL3YxL2VtYmVkZGluZ3NcIiwgXCJvcGVuYWktZW1iZWRkaW5nc1wiXSxcbiAgICAgICAgXSBhcyBjb25zdCkge1xuICAgICAgICAgIGFwcGxpY2F0aW9uLnBvc3QocGF0aCwgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHNlbmRJbmZlcmVuY2UoZ2F0ZXdheSwgcHJvdG9jb2wsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsLWdhdGV3YXkvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGFBQWEsRUFDYixVQUFVLEdBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsMEJBQTBCLEdBRzNCLE1BQU0saUNBQWlDLENBQUM7QUFLekMscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxVQUErQixFQUFFO0lBQ3pFLE9BQU8sbUJBQW1CLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxPQUFvQztJQUMvRCxPQUFPO1FBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1FBQzVCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDekIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBYTtJQUNuRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdELE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLE9BQU8s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QUFDO29CQUN0QyxDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDO2lCQUMvQixFQUFFLENBQUM7b0JBQ1gsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7d0JBQzNDLEtBQUssYUFBYSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUMzRCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9yZWdyb3VuZCBtb2RlbC1nYXRld2F5IHNlcnZlciBvd25lZCBieSB0aGUgQ0xJIHBhY2thZ2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2gsIHRpbWluZ1NhZmVFcXVhbCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgY3JlYXRlQXBwLCBzZXJ2ZXIgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQge1xuICBNb2RlbEdhdGV3YXksXG4gIHNlbmRIZWFsdGgsXG4gIHNlbmRJbmZlcmVuY2UsXG4gIHNlbmRNb2RlbHMsXG59IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tb2RlbC1nYXRld2F5XCI7XG5pbXBvcnQgeyBjcmVhdGVXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRieC10b29scy9kYXRhYnJpY2tzXCI7XG5pbXBvcnQge1xuICByZXNvbHZlTW9kZWxHYXRld2F5T3B0aW9ucyxcbiAgdHlwZSBNb2RlbEdhdGV3YXlPcHRpb25zLFxuICB0eXBlIFJlc29sdmVkTW9kZWxHYXRld2F5T3B0aW9ucyxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXlcIjtcbmltcG9ydCB0eXBlIGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcblxudHlwZSBBcHBLaXRTZXJ2ZXJPcHRpb25zID0gTm9uTnVsbGFibGU8UGFyYW1ldGVyczx0eXBlb2Ygc2VydmVyPlswXT47XG5cbi8qKiBSZXNvbHZlIEFwcEtpdCBzZXJ2ZXIgc2V0dGluZ3MgZm9yIHRoZSBsb29wYmFjayBtb2RlbCBnYXRld2F5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsR2F0ZXdheVNlcnZlck9wdGlvbnMob3B0aW9uczogTW9kZWxHYXRld2F5T3B0aW9ucyA9IHt9KTogQXBwS2l0U2VydmVyT3B0aW9ucyB7XG4gIHJldHVybiBhcHBLaXRTZXJ2ZXJPcHRpb25zKHJlc29sdmVNb2RlbEdhdGV3YXlPcHRpb25zKG9wdGlvbnMpKTtcbn1cblxuZnVuY3Rpb24gYXBwS2l0U2VydmVyT3B0aW9ucyhvcHRpb25zOiBSZXNvbHZlZE1vZGVsR2F0ZXdheU9wdGlvbnMpOiBBcHBLaXRTZXJ2ZXJPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICBib2R5TGltaXQ6IG9wdGlvbnMuYm9keUxpbWl0LFxuICAgIGhvc3Q6IG9wdGlvbnMubGlzdGVuLmhvc3QsXG4gICAgcG9ydDogb3B0aW9ucy5saXN0ZW4ucG9ydCxcbiAgfTtcbn1cblxuLyoqIFJlcXVpcmUgb25lIGJlYXJlciB0b2tlbiB3aXRob3V0IHJldGFpbmluZyBvciBsb2dnaW5nIHJlcXVlc3QgY3JlZGVudGlhbHMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2F0ZXdheUJlYXJlck1pZGRsZXdhcmUodG9rZW46IHN0cmluZyk6IGV4cHJlc3MuUmVxdWVzdEhhbmRsZXIge1xuICBjb25zdCBleHBlY3RlZCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHRva2VuKS5kaWdlc3QoKTtcbiAgcmV0dXJuIChyZXF1ZXN0LCByZXNwb25zZSwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSByZXF1ZXN0LmhlYWRlcihcImF1dGhvcml6YXRpb25cIik7XG4gICAgY29uc3QgbWF0Y2ggPSAvXkJlYXJlclxccysoLispJC9pLmV4ZWMoYXV0aG9yaXphdGlvbiA/PyBcIlwiKTtcbiAgICBjb25zdCBhY3R1YWwgPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgICAudXBkYXRlKG1hdGNoPy5bMV0gPz8gXCJcIilcbiAgICAgIC5kaWdlc3QoKTtcbiAgICBpZiAobWF0Y2ggJiYgdGltaW5nU2FmZUVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgICBuZXh0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlc3BvbnNlXG4gICAgICAuc3RhdHVzKDQwMSlcbiAgICAgIC5zZXRIZWFkZXIoXCJ3d3ctYXV0aGVudGljYXRlXCIsIFwiQmVhcmVyXCIpXG4gICAgICAuanNvbih7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogXCJJbnZhbGlkIG9yIG1pc3NpbmcgbW9kZWwtZ2F0ZXdheSBiZWFyZXIgdG9rZW4uXCIsXG4gICAgICAgICAgdHlwZTogXCJhdXRoZW50aWNhdGlvbl9lcnJvclwiLFxuICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9iZWFyZXJfdG9rZW5cIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9O1xufVxuXG4vKiogU3RhcnQgdGhlIGZvcmVncm91bmQgbW9kZWwgZ2F0ZXdheSBhbmQga2VlcCBpdHMgQXBwS2l0IHNlcnZlciBhY3RpdmUuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRNb2RlbEdhdGV3YXkob3B0aW9uczogTW9kZWxHYXRld2F5T3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsR2F0ZXdheU9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGdhdGV3YXkgPSBuZXcgTW9kZWxHYXRld2F5KHtcbiAgICAuLi4ocmVzb2x2ZWQubW9kZWwgPyB7IG1vZGVsOiByZXNvbHZlZC5tb2RlbCB9IDoge30pLFxuICAgIC4uLihyZXNvbHZlZC5tb2RlbENsYXNzID8geyBtb2RlbENsYXNzOiByZXNvbHZlZC5tb2RlbENsYXNzIH0gOiB7fSksXG4gICAgcHJlZmVyU3lzdGVtTW9kZWxzOiByZXNvbHZlZC5wcmVmZXJTeXN0ZW1Nb2RlbHMsXG4gIH0pO1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoe1xuICAgIC4uLihyZXNvbHZlZC5wcm9maWxlID8geyBwcm9maWxlOiByZXNvbHZlZC5wcm9maWxlIH0gOiB7fSksXG4gIH0pO1xuICBhd2FpdCBjcmVhdGVBcHAoe1xuICAgIGNsaWVudCxcbiAgICBwbHVnaW5zOiBbc2VydmVyKGFwcEtpdFNlcnZlck9wdGlvbnMocmVzb2x2ZWQpKV0sXG4gICAgb25QbHVnaW5zUmVhZHkoYXBwa2l0KSB7XG4gICAgICBhcHBraXQuc2VydmVyLmV4dGVuZCgoYXBwbGljYXRpb24pID0+IHtcbiAgICAgICAgaWYgKHJlc29sdmVkLmJlYXJlclRva2VuKSB7XG4gICAgICAgICAgYXBwbGljYXRpb24udXNlKGdhdGV3YXlCZWFyZXJNaWRkbGV3YXJlKHJlc29sdmVkLmJlYXJlclRva2VuKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXBwbGljYXRpb24uZ2V0KFwiL2FwaS9oZWFsdGh6XCIsIChfcmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBzZW5kSGVhbHRoKHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFwcGxpY2F0aW9uLmdldChcIi92MS9tb2RlbHNcIiwgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdm9pZCBzZW5kTW9kZWxzKGdhdGV3YXksIHJlcXVlc3QsIHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgW3BhdGgsIHByb3RvY29sXSBvZiBbXG4gICAgICAgICAgW1wiL3YxL2NoYXQvY29tcGxldGlvbnNcIiwgXCJvcGVuYWktY2hhdFwiXSxcbiAgICAgICAgICBbXCIvdjEvcmVzcG9uc2VzXCIsIFwib3BlbmFpLXJlc3BvbnNlc1wiXSxcbiAgICAgICAgICBbXCIvdjEvbWVzc2FnZXNcIiwgXCJhbnRocm9waWMtbWVzc2FnZXNcIl0sXG4gICAgICAgICAgW1wiL3YxL2VtYmVkZGluZ3NcIiwgXCJvcGVuYWktZW1iZWRkaW5nc1wiXSxcbiAgICAgICAgXSBhcyBjb25zdCkge1xuICAgICAgICAgIGFwcGxpY2F0aW9uLnBvc3QocGF0aCwgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHNlbmRJbmZlcmVuY2UoZ2F0ZXdheSwgcHJvdG9jb2wsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
package/lib/src/root.js CHANGED
@@ -6,7 +6,7 @@
6
6
  import { existsSync } from "node:fs";
7
7
  import { basename, join, resolve } from "node:path";
8
8
  import { projectUtils } from "@dbx-tools/core";
9
- import { functionUtils } from "@dbx-tools/shared-core";
9
+ import { memoize } from "@dbx-tools/shared-core";
10
10
  /**
11
11
  * Walk upward from `startDir` for `.projenrc.ts`. If none is found, try git
12
12
  * top-level only when that directory also contains `.projenrc.ts`; otherwise return
@@ -50,9 +50,9 @@ export function needsToolchain(root) {
50
50
  return !existsSync(join(modules, "projen")) || !existsSync(join(modules, "@dbx-tools", "projen"));
51
51
  }
52
52
  /** Async, memoized root lookup from the process cwd at first use. */
53
- export const workspaceRoot = functionUtils.memoize(() => findWorkspaceRoot());
53
+ export const workspaceRoot = memoize(() => findWorkspaceRoot());
54
54
  /** Short label for log output (`basename` of the resolved root). */
55
55
  export function rootLabel(root) {
56
56
  return basename(root) || root;
57
57
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDdEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ2xGLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUU5RSxvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFZO0lBQ3BDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXb3Jrc3BhY2Ugcm9vdCBkZXRlY3Rpb24gZm9yIHRoZSBgZGJ4LXRvb2xzYCBDTEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcHJvamVjdFV0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgZnVuY3Rpb25VdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKlxuICogV2FsayB1cHdhcmQgZnJvbSBgc3RhcnREaXJgIGZvciBgLnByb2plbnJjLnRzYC4gSWYgbm9uZSBpcyBmb3VuZCwgdHJ5IGdpdFxuICogdG9wLWxldmVsIG9ubHkgd2hlbiB0aGF0IGRpcmVjdG9yeSBhbHNvIGNvbnRhaW5zIGAucHJvamVucmMudHNgOyBvdGhlcndpc2UgcmV0dXJuXG4gKiBgcmVzb2x2ZShzdGFydERpcilgICh3aGljaCBtYXkgbm90IGJlIGEgd29ya3NwYWNlIHJvb3QpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFdvcmtzcGFjZVJvb3Qoc3RhcnREaXI6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBkaXNjb3ZlcmVkID0gcHJvamVjdFV0aWxzLnJvb3Qoc3RhcnREaXIpO1xuICBpZiAoZGlzY292ZXJlZCAmJiBleGlzdHNTeW5jKGpvaW4oZGlzY292ZXJlZCwgXCIucHJvamVucmMudHNcIikpKSByZXR1cm4gZGlzY292ZXJlZDtcbiAgcmV0dXJuIHJlc29sdmUoc3RhcnREaXIpO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiB0aGUgZm9sZGVyIGhhcyBubyBgLnByb2plbnJjLnRzYCB5ZXQgYW5kIG5lZWRzIGZ1bGwgYm9vdHN0cmFwcGluZy5cbiAqIEtleWluZyBvZmYgYC5wcm9qZW5yYy50c2AgKG5vdCBgcGFja2FnZS5qc29uYCkgYXZvaWRzIGNsb2JiZXJpbmcgYSBjbGVhbmVkXG4gKiB3b3Jrc3BhY2UgdGhhdCBzdGlsbCBoYXMgYSBoYW5kLWF1dGhvcmVkIHByb2plbnJjLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNCb290c3RyYXAocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpKTtcbn1cblxuLyoqIFRydWUgd2hlbiBgbm9kZV9tb2R1bGVzYCBvciBwcm9qZW4gaXRzZWxmIGlzIG1pc3NpbmcgdW5kZXIgYHJvb3RgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzSW5zdGFsbChyb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIikpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGV4aXN0c1N5bmMoam9pbihyb290LCBcIi5wcm9qZW5yYy50c1wiKSkgJiYgIWV4aXN0c1N5bmMoam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiLCBcInByb2plblwiKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGVuIHRoZSBzeW50aCBUT09MQ0hBSU4gaXNuJ3QgaW5zdGFsbGVkIHlldDogbm8gYG5vZGVfbW9kdWxlc2AsIG9yIHRoZVxuICogZGJ4LXRvb2xzIGVuZ2luZSAvIGBwcm9qZW5gIGFyZW4ndCByZXNvbHZhYmxlIHVuZGVyIGl0LiBEaXN0aW5jdCBmcm9tIGEgZnVsbFxuICogYm9vdHN0cmFwICh3aGljaCBrZXlzIG9mZiBhIE1JU1NJTkcgYC5wcm9qZW5yYy50c2ApOiBoZXJlIHRoZSBwcm9qZW5yYyBleGlzdHNcbiAqIGJ1dCBpdHMgZGVwZW5kZW5jaWVzIGRvbid0IC0gZS5nLiBhIGNvcGllZCBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBtYW5pZmVzdHNcbiAqIGFuZCBgbm9kZV9tb2R1bGVzYCBhcmUgZ2l0aWdub3JlZC4gU2VlZGluZyB0aGUgdG9vbGNoYWluIChub3Qgc2NhZmZvbGRpbmcpXG4gKiBtYWtlcyBpdCBzeW50aC1yZWFkeSB3aXRob3V0IHRvdWNoaW5nIHRoZSBoYW5kLWF1dGhvcmVkIGAucHJvamVucmMudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNUb29sY2hhaW4ocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vZHVsZXMgPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMobW9kdWxlcykpIHJldHVybiB0cnVlO1xuICByZXR1cm4gIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcInByb2plblwiKSkgfHwgIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcIkBkYngtdG9vbHNcIiwgXCJwcm9qZW5cIikpO1xufVxuXG4vKiogQXN5bmMsIG1lbW9pemVkIHJvb3QgbG9va3VwIGZyb20gdGhlIHByb2Nlc3MgY3dkIGF0IGZpcnN0IHVzZS4gKi9cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VSb290ID0gZnVuY3Rpb25VdGlscy5tZW1vaXplKCgpID0+IGZpbmRXb3Jrc3BhY2VSb290KCkpO1xuXG4vKiogU2hvcnQgbGFiZWwgZm9yIGxvZyBvdXRwdXQgKGBiYXNlbmFtZWAgb2YgdGhlIHJlc29sdmVkIHJvb3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvb3RMYWJlbChyb290OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYmFzZW5hbWUocm9vdCkgfHwgcm9vdDtcbn1cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDdEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ2xGLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBRWhFLG9FQUFvRTtBQUNwRSxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVk7SUFDcEMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdvcmtzcGFjZSByb290IGRldGVjdGlvbiBmb3IgdGhlIGBkYngtdG9vbHNgIENMSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwcm9qZWN0VXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuLyoqXG4gKiBXYWxrIHVwd2FyZCBmcm9tIGBzdGFydERpcmAgZm9yIGAucHJvamVucmMudHNgLiBJZiBub25lIGlzIGZvdW5kLCB0cnkgZ2l0XG4gKiB0b3AtbGV2ZWwgb25seSB3aGVuIHRoYXQgZGlyZWN0b3J5IGFsc28gY29udGFpbnMgYC5wcm9qZW5yYy50c2A7IG90aGVyd2lzZSByZXR1cm5cbiAqIGByZXNvbHZlKHN0YXJ0RGlyKWAgKHdoaWNoIG1heSBub3QgYmUgYSB3b3Jrc3BhY2Ugcm9vdCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kV29ya3NwYWNlUm9vdChzdGFydERpcjogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGRpc2NvdmVyZWQgPSBwcm9qZWN0VXRpbHMucm9vdChzdGFydERpcik7XG4gIGlmIChkaXNjb3ZlcmVkICYmIGV4aXN0c1N5bmMoam9pbihkaXNjb3ZlcmVkLCBcIi5wcm9qZW5yYy50c1wiKSkpIHJldHVybiBkaXNjb3ZlcmVkO1xuICByZXR1cm4gcmVzb2x2ZShzdGFydERpcik7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGVuIHRoZSBmb2xkZXIgaGFzIG5vIGAucHJvamVucmMudHNgIHlldCBhbmQgbmVlZHMgZnVsbCBib290c3RyYXBwaW5nLlxuICogS2V5aW5nIG9mZiBgLnByb2plbnJjLnRzYCAobm90IGBwYWNrYWdlLmpzb25gKSBhdm9pZHMgY2xvYmJlcmluZyBhIGNsZWFuZWRcbiAqIHdvcmtzcGFjZSB0aGF0IHN0aWxsIGhhcyBhIGhhbmQtYXV0aG9yZWQgcHJvamVucmMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0Jvb3RzdHJhcChyb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCIucHJvamVucmMudHNcIikpO1xufVxuXG4vKiogVHJ1ZSB3aGVuIGBub2RlX21vZHVsZXNgIG9yIHByb2plbiBpdHNlbGYgaXMgbWlzc2luZyB1bmRlciBgcm9vdGAuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNJbnN0YWxsKHJvb3Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWV4aXN0c1N5bmMoam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiKSkpIHJldHVybiB0cnVlO1xuICBpZiAoZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpKSAmJiAhZXhpc3RzU3luYyhqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIsIFwicHJvamVuXCIpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gdGhlIHN5bnRoIFRPT0xDSEFJTiBpc24ndCBpbnN0YWxsZWQgeWV0OiBubyBgbm9kZV9tb2R1bGVzYCwgb3IgdGhlXG4gKiBkYngtdG9vbHMgZW5naW5lIC8gYHByb2plbmAgYXJlbid0IHJlc29sdmFibGUgdW5kZXIgaXQuIERpc3RpbmN0IGZyb20gYSBmdWxsXG4gKiBib290c3RyYXAgKHdoaWNoIGtleXMgb2ZmIGEgTUlTU0lORyBgLnByb2plbnJjLnRzYCk6IGhlcmUgdGhlIHByb2plbnJjIGV4aXN0c1xuICogYnV0IGl0cyBkZXBlbmRlbmNpZXMgZG9uJ3QgLSBlLmcuIGEgY29waWVkIHByb2plY3Qgd2hvc2UgZ2VuZXJhdGVkIG1hbmlmZXN0c1xuICogYW5kIGBub2RlX21vZHVsZXNgIGFyZSBnaXRpZ25vcmVkLiBTZWVkaW5nIHRoZSB0b29sY2hhaW4gKG5vdCBzY2FmZm9sZGluZylcbiAqIG1ha2VzIGl0IHN5bnRoLXJlYWR5IHdpdGhvdXQgdG91Y2hpbmcgdGhlIGhhbmQtYXV0aG9yZWQgYC5wcm9qZW5yYy50c2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc1Rvb2xjaGFpbihyb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kdWxlcyA9IGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIik7XG4gIGlmICghZXhpc3RzU3luYyhtb2R1bGVzKSkgcmV0dXJuIHRydWU7XG4gIHJldHVybiAhZXhpc3RzU3luYyhqb2luKG1vZHVsZXMsIFwicHJvamVuXCIpKSB8fCAhZXhpc3RzU3luYyhqb2luKG1vZHVsZXMsIFwiQGRieC10b29sc1wiLCBcInByb2plblwiKSk7XG59XG5cbi8qKiBBc3luYywgbWVtb2l6ZWQgcm9vdCBsb29rdXAgZnJvbSB0aGUgcHJvY2VzcyBjd2QgYXQgZmlyc3QgdXNlLiAqL1xuZXhwb3J0IGNvbnN0IHdvcmtzcGFjZVJvb3QgPSBtZW1vaXplKCgpID0+IGZpbmRXb3Jrc3BhY2VSb290KCkpO1xuXG4vKiogU2hvcnQgbGFiZWwgZm9yIGxvZyBvdXRwdXQgKGBiYXNlbmFtZWAgb2YgdGhlIHJlc29sdmVkIHJvb3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvb3RMYWJlbChyb290OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYmFzZW5hbWUocm9vdCkgfHwgcm9vdDtcbn1cbiJdfQ==
@@ -15,22 +15,20 @@
15
15
  * @module
16
16
  */
17
17
  import { lakebase } from "@databricks/appkit";
18
- import { appkit } from "@dbx-tools/appkit";
19
- import { authStorage } from "@dbx-tools/auth-gate";
18
+ import { createApp } from "@dbx-tools/appkit";
19
+ import { shouldUseLakebase } from "@dbx-tools/auth-gate";
20
20
  import { email } from "@dbx-tools/email";
21
21
  import { postgresConnectionOptions } from "@dbx-tools/postgres";
22
- import { object } from "@dbx-tools/shared-core";
22
+ import { isRecord } from "@dbx-tools/shared-core";
23
23
  import { authGate } from "@dbx-tools/tunnel";
24
24
  /** Boot the gate app and return the handlers the proxy authenticates against. */
25
25
  export async function startGateApp(config, client) {
26
26
  // No `server()` plugin: nothing here listens. `plugins` order matters - `email`
27
27
  // registers its transport before `authGate` looks for a sibling to send with.
28
- const plugins = await appkit.createApp({
28
+ const plugins = await createApp({
29
29
  client,
30
30
  plugins: [
31
- ...(authStorage.shouldUseLakebase(config)
32
- ? [lakebase({ pool: postgresConnectionOptions({}) })]
33
- : []),
31
+ ...(shouldUseLakebase(config) ? [lakebase({ pool: postgresConnectionOptions({}) })] : []),
34
32
  ...(config.sendCode ? [] : [email()]),
35
33
  authGate(config),
36
34
  ],
@@ -41,7 +39,7 @@ export async function startGateApp(config, client) {
41
39
  return api;
42
40
  }
43
41
  function isAuthGateApi(value) {
44
- return (object.isRecord(value) &&
42
+ return (isRecord(value) &&
45
43
  typeof value.basePath === "string" &&
46
44
  typeof value.passkeysEnabled === "boolean" &&
47
45
  typeof value.isProtectedHost === "function" &&
@@ -50,4 +48,4 @@ function isAuthGateApi(value) {
50
48
  typeof value.status === "function" &&
51
49
  typeof value.close === "function");
52
50
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBeUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE1BQXNCLEVBQ3RCLE1BQXdCO0lBRXhCLGdGQUFnRjtJQUNoRiw4RUFBOEU7SUFDOUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3JDLE1BQU07UUFDTixPQUFPLEVBQUU7WUFDUCxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyQyxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQ2pCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDL0UsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLENBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVE7UUFDbEMsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLFVBQVU7UUFDM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVU7UUFDbkMsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVU7UUFDbkMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVU7UUFDbEMsT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FDbEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBHQVRFIGhhbGYgb2YgdGhlIHdyYXBwZXI6IGEgc2VydmVyLWxlc3MgQXBwS2l0IGFwcCB3aG9zZSBvbmx5IGpvYiBpcyB0b1xuICogZXhwb3NlIHRoZSBgYXV0aEdhdGVgIGhhbmRsZXJzIHRoZSBwcm94eSBjYWxscy5cbiAqXG4gKiBUaGUgaW4tcHJvY2VzcyBwbHVnaW4gcGF0aCAoYGF1dGhHYXRlYCBpbiB0aGUgYXBwJ3Mgb3duIGBwbHVnaW5zYCkgaGFzIGEgcmVhbFxuICogSFRUUCBzZXJ2ZXIgdG8gbW91bnQgcm91dGVzIG9uLiBBIHdyYXBwZXIgZG9lcyBub3QgLSB0aGUgYXBwIGl0IGZyb250cyBpcyBhXG4gKiBzZXBhcmF0ZSBwcm9jZXNzIGl0IG11c3Qgbm90IHJlYWNoIGludG8gLSBzbyB0aGUgZ2F0ZSdzIGxvZ2luIHJvdXRlcyBsaXZlIG9uXG4gKiB0aGUgcHJveHkgaW5zdGVhZCwgYW5kIHRoaXMgYXBwIGV4aXN0cyBwdXJlbHkgdG8gZ2l2ZSB0aGUgcGx1Z2luIHRoZSBydW50aW1lIGl0XG4gKiBuZWVkczogYSBgQ2FjaGVNYW5hZ2VyYCBmb3IgdGhlIG9uZS10aW1lLWNvZGUgc3RvcmUgYW5kIHNpZ25pbmcga2V5LCBhbmQgdGhlXG4gKiBzaWJsaW5nIGBlbWFpbGAgcGx1Z2luJ3MgdHJhbnNwb3J0IGZvciBkZWxpdmVyaW5nIGEgY29kZS5cbiAqXG4gKiBMYXppbHkgaW1wb3J0ZWQgYnkgYGNsaS50c2AsIHNvIGBkYnggdHVubmVsIC0taW5zZWN1cmVgIChhbmQgYGluc3RhbGxgIC9cbiAqIGBzdGF0dXNgKSBuZXZlciBsb2FkIEFwcEtpdCwgdGhlIERhdGFicmlja3MgU0RLLCBvciB0aGUgU01UUCBzdGFjay5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgbGFrZWJhc2UsIHR5cGUgV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBhdXRoU3RvcmFnZSB9IGZyb20gXCJAZGJ4LXRvb2xzL2F1dGgtZ2F0ZVwiO1xuaW1wb3J0IHsgZW1haWwgfSBmcm9tIFwiQGRieC10b29scy9lbWFpbFwiO1xuaW1wb3J0IHsgcG9zdGdyZXNDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gXCJAZGJ4LXRvb2xzL3Bvc3RncmVzXCI7XG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgYXV0aEdhdGUsIHR5cGUgQXV0aEdhdGVBcGksIHR5cGUgQXV0aEdhdGVDb25maWcgfSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcblxuLyoqIEJvb3QgdGhlIGdhdGUgYXBwIGFuZCByZXR1cm4gdGhlIGhhbmRsZXJzIHRoZSBwcm94eSBhdXRoZW50aWNhdGVzIGFnYWluc3QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRHYXRlQXBwKFxuICBjb25maWc6IEF1dGhHYXRlQ29uZmlnLFxuICBjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQsXG4pOiBQcm9taXNlPEF1dGhHYXRlQXBpPiB7XG4gIC8vIE5vIGBzZXJ2ZXIoKWAgcGx1Z2luOiBub3RoaW5nIGhlcmUgbGlzdGVucy4gYHBsdWdpbnNgIG9yZGVyIG1hdHRlcnMgLSBgZW1haWxgXG4gIC8vIHJlZ2lzdGVycyBpdHMgdHJhbnNwb3J0IGJlZm9yZSBgYXV0aEdhdGVgIGxvb2tzIGZvciBhIHNpYmxpbmcgdG8gc2VuZCB3aXRoLlxuICBjb25zdCBwbHVnaW5zID0gYXdhaXQgYXBwa2l0LmNyZWF0ZUFwcCh7XG4gICAgY2xpZW50LFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIC4uLihhdXRoU3RvcmFnZS5zaG91bGRVc2VMYWtlYmFzZShjb25maWcpXG4gICAgICAgID8gW2xha2ViYXNlKHsgcG9vbDogcG9zdGdyZXNDb25uZWN0aW9uT3B0aW9ucyh7fSkgfSldXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNvbmZpZy5zZW5kQ29kZSA/IFtdIDogW2VtYWlsKCldKSxcbiAgICAgIGF1dGhHYXRlKGNvbmZpZyksXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IGFwaSA9IFJlZmxlY3QuZ2V0KHBsdWdpbnMsIFwiYXV0aEdhdGVcIik7XG4gIGlmICghaXNBdXRoR2F0ZUFwaShhcGkpKSB0aHJvdyBuZXcgRXJyb3IoXCJ0aGUgYXV0aEdhdGUgcGx1Z2luIGV4cG9zZWQgbm8gYXBpXCIpO1xuICByZXR1cm4gYXBpO1xufVxuXG5mdW5jdGlvbiBpc0F1dGhHYXRlQXBpKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQXV0aEdhdGVBcGkge1xuICByZXR1cm4gKFxuICAgIG9iamVjdC5pc1JlY29yZCh2YWx1ZSkgJiZcbiAgICB0eXBlb2YgdmFsdWUuYmFzZVBhdGggPT09IFwic3RyaW5nXCIgJiZcbiAgICB0eXBlb2YgdmFsdWUucGFzc2tleXNFbmFibGVkID09PSBcImJvb2xlYW5cIiAmJlxuICAgIHR5cGVvZiB2YWx1ZS5pc1Byb3RlY3RlZEhvc3QgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIHR5cGVvZiB2YWx1ZS5oYW5kbGVyID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICB0eXBlb2YgdmFsdWUuc2Vzc2lvbiA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgdHlwZW9mIHZhbHVlLnN0YXR1cyA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgdHlwZW9mIHZhbHVlLmNsb3NlID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUF5QyxNQUFNLG1CQUFtQixDQUFDO0FBRXBGLGlGQUFpRjtBQUNqRixNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsTUFBc0IsRUFDdEIsTUFBd0I7SUFFeEIsZ0ZBQWdGO0lBQ2hGLDhFQUE4RTtJQUM5RSxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQztRQUM5QixNQUFNO1FBQ04sT0FBTyxFQUFFO1lBQ1AsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pGLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyQyxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQ2pCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDL0UsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLENBQ0wsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTO1FBQzFDLE9BQU8sS0FBSyxDQUFDLGVBQWUsS0FBSyxVQUFVO1FBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVO1FBQ25DLE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVO1FBQ25DLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxVQUFVO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQ2xDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgR0FURSBoYWxmIG9mIHRoZSB3cmFwcGVyOiBhIHNlcnZlci1sZXNzIEFwcEtpdCBhcHAgd2hvc2Ugb25seSBqb2IgaXMgdG9cbiAqIGV4cG9zZSB0aGUgYGF1dGhHYXRlYCBoYW5kbGVycyB0aGUgcHJveHkgY2FsbHMuXG4gKlxuICogVGhlIGluLXByb2Nlc3MgcGx1Z2luIHBhdGggKGBhdXRoR2F0ZWAgaW4gdGhlIGFwcCdzIG93biBgcGx1Z2luc2ApIGhhcyBhIHJlYWxcbiAqIEhUVFAgc2VydmVyIHRvIG1vdW50IHJvdXRlcyBvbi4gQSB3cmFwcGVyIGRvZXMgbm90IC0gdGhlIGFwcCBpdCBmcm9udHMgaXMgYVxuICogc2VwYXJhdGUgcHJvY2VzcyBpdCBtdXN0IG5vdCByZWFjaCBpbnRvIC0gc28gdGhlIGdhdGUncyBsb2dpbiByb3V0ZXMgbGl2ZSBvblxuICogdGhlIHByb3h5IGluc3RlYWQsIGFuZCB0aGlzIGFwcCBleGlzdHMgcHVyZWx5IHRvIGdpdmUgdGhlIHBsdWdpbiB0aGUgcnVudGltZSBpdFxuICogbmVlZHM6IGEgYENhY2hlTWFuYWdlcmAgZm9yIHRoZSBvbmUtdGltZS1jb2RlIHN0b3JlIGFuZCBzaWduaW5nIGtleSwgYW5kIHRoZVxuICogc2libGluZyBgZW1haWxgIHBsdWdpbidzIHRyYW5zcG9ydCBmb3IgZGVsaXZlcmluZyBhIGNvZGUuXG4gKlxuICogTGF6aWx5IGltcG9ydGVkIGJ5IGBjbGkudHNgLCBzbyBgZGJ4IHR1bm5lbCAtLWluc2VjdXJlYCAoYW5kIGBpbnN0YWxsYCAvXG4gKiBgc3RhdHVzYCkgbmV2ZXIgbG9hZCBBcHBLaXQsIHRoZSBEYXRhYnJpY2tzIFNESywgb3IgdGhlIFNNVFAgc3RhY2suXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxha2ViYXNlLCB0eXBlIFdvcmtzcGFjZUNsaWVudCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGNyZWF0ZUFwcCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHsgc2hvdWxkVXNlTGFrZWJhc2UgfSBmcm9tIFwiQGRieC10b29scy9hdXRoLWdhdGVcIjtcbmltcG9ydCB7IGVtYWlsIH0gZnJvbSBcIkBkYngtdG9vbHMvZW1haWxcIjtcbmltcG9ydCB7IHBvc3RncmVzQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tIFwiQGRieC10b29scy9wb3N0Z3Jlc1wiO1xuaW1wb3J0IHsgaXNSZWNvcmQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgYXV0aEdhdGUsIHR5cGUgQXV0aEdhdGVBcGksIHR5cGUgQXV0aEdhdGVDb25maWcgfSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcblxuLyoqIEJvb3QgdGhlIGdhdGUgYXBwIGFuZCByZXR1cm4gdGhlIGhhbmRsZXJzIHRoZSBwcm94eSBhdXRoZW50aWNhdGVzIGFnYWluc3QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRHYXRlQXBwKFxuICBjb25maWc6IEF1dGhHYXRlQ29uZmlnLFxuICBjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQsXG4pOiBQcm9taXNlPEF1dGhHYXRlQXBpPiB7XG4gIC8vIE5vIGBzZXJ2ZXIoKWAgcGx1Z2luOiBub3RoaW5nIGhlcmUgbGlzdGVucy4gYHBsdWdpbnNgIG9yZGVyIG1hdHRlcnMgLSBgZW1haWxgXG4gIC8vIHJlZ2lzdGVycyBpdHMgdHJhbnNwb3J0IGJlZm9yZSBgYXV0aEdhdGVgIGxvb2tzIGZvciBhIHNpYmxpbmcgdG8gc2VuZCB3aXRoLlxuICBjb25zdCBwbHVnaW5zID0gYXdhaXQgY3JlYXRlQXBwKHtcbiAgICBjbGllbnQsXG4gICAgcGx1Z2luczogW1xuICAgICAgLi4uKHNob3VsZFVzZUxha2ViYXNlKGNvbmZpZykgPyBbbGFrZWJhc2UoeyBwb29sOiBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zKHt9KSB9KV0gOiBbXSksXG4gICAgICAuLi4oY29uZmlnLnNlbmRDb2RlID8gW10gOiBbZW1haWwoKV0pLFxuICAgICAgYXV0aEdhdGUoY29uZmlnKSxcbiAgICBdLFxuICB9KTtcbiAgY29uc3QgYXBpID0gUmVmbGVjdC5nZXQocGx1Z2lucywgXCJhdXRoR2F0ZVwiKTtcbiAgaWYgKCFpc0F1dGhHYXRlQXBpKGFwaSkpIHRocm93IG5ldyBFcnJvcihcInRoZSBhdXRoR2F0ZSBwbHVnaW4gZXhwb3NlZCBubyBhcGlcIik7XG4gIHJldHVybiBhcGk7XG59XG5cbmZ1bmN0aW9uIGlzQXV0aEdhdGVBcGkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBBdXRoR2F0ZUFwaSB7XG4gIHJldHVybiAoXG4gICAgaXNSZWNvcmQodmFsdWUpICYmXG4gICAgdHlwZW9mIHZhbHVlLmJhc2VQYXRoID09PSBcInN0cmluZ1wiICYmXG4gICAgdHlwZW9mIHZhbHVlLnBhc3NrZXlzRW5hYmxlZCA9PT0gXCJib29sZWFuXCIgJiZcbiAgICB0eXBlb2YgdmFsdWUuaXNQcm90ZWN0ZWRIb3N0ID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICB0eXBlb2YgdmFsdWUuaGFuZGxlciA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgdHlwZW9mIHZhbHVlLnNlc3Npb24gPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIHR5cGVvZiB2YWx1ZS5zdGF0dXMgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIHR5cGVvZiB2YWx1ZS5jbG9zZSA9PT0gXCJmdW5jdGlvblwiXG4gICk7XG59XG4iXX0=
@@ -21,7 +21,6 @@
21
21
  *
22
22
  * @module
23
23
  */
24
- import { Command, CommanderError } from "commander";
25
- export { CommanderError };
24
+ import { Command } from "commander";
26
25
  /** The `dbx tunnel` program. No side effects until parsed. */
27
26
  export declare function buildProgram(name?: string): Command;
@@ -23,13 +23,12 @@
23
23
  */
24
24
  import { createServer } from "node:net";
25
25
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
26
- import { exec } from "@dbx-tools/core";
26
+ import { spawn } from "@dbx-tools/core";
27
27
  import { log } from "@dbx-tools/shared-core";
28
- import { frp, interceptor, portr } from "@dbx-tools/tunnel";
28
+ import { installFrp, writeFrpConfig, startFrp, TunnelTransportSchema, installPortr, writePortrConfig, startPortr, } from "@dbx-tools/tunnel";
29
29
  import { Command, CommanderError } from "commander";
30
30
  import { resolveTunnelOptions, TunnelOptionsSchema } from "./options.js";
31
31
  import { startProxy } from "./proxy.js";
32
- export { CommanderError };
33
32
  const logger = log.logger("tunnel");
34
33
  /**
35
34
  * A free loopback port, from the OS rather than a random guess: binding `0` and
@@ -81,7 +80,7 @@ async function run(raw, command) {
81
80
  let appPort;
82
81
  if (executable) {
83
82
  appPort = resolved.appPort ?? (await freePort());
84
- const app = exec.spawn(executable, args, {
83
+ const app = spawn(executable, args, {
85
84
  env: {
86
85
  ...process.env,
87
86
  DATABRICKS_APP_PORT: String(appPort),
@@ -123,14 +122,14 @@ async function run(raw, command) {
123
122
  bindHosts: resolved.bindHosts,
124
123
  });
125
124
  if ((resolved.transport === "portr" || resolved.transport === "both") && resolved.portr) {
126
- const portrEnv = await portr.installPortr();
127
- await portr.writePortrConfig(resolved.portr, portrEnv);
128
- children.push(portr.startPortr(resolved.portr, portrEnv));
125
+ const portrEnv = await installPortr();
126
+ await writePortrConfig(resolved.portr, portrEnv);
127
+ children.push(startPortr(resolved.portr, portrEnv));
129
128
  }
130
129
  if ((resolved.transport === "frp" || resolved.transport === "both") && resolved.frp) {
131
- const frpEnv = await frp.installFrp();
132
- const configPath = await frp.writeFrpConfig(resolved.frp, frpEnv);
133
- children.push(frp.startFrp(resolved.frp, frpEnv, configPath));
130
+ const frpEnv = await installFrp();
131
+ const configPath = await writeFrpConfig(resolved.frp, frpEnv);
132
+ children.push(startFrp(resolved.frp, frpEnv, configPath));
134
133
  }
135
134
  const activeTunnelCount = children.length - (executable ? 1 : 0);
136
135
  if (!activeTunnelCount) {
@@ -173,12 +172,12 @@ export function buildProgram(name = "dbx tunnel") {
173
172
  .argument("[transport]", "portr, frp, or both", "portr")
174
173
  .description("Install public tunnel client binaries and exit")
175
174
  .action(async (transport) => {
176
- const parsed = interceptor.TunnelTransportSchema.parse(transport);
175
+ const parsed = TunnelTransportSchema.parse(transport);
177
176
  if (parsed === "portr" || parsed === "both")
178
- await portr.installPortr();
177
+ await installPortr();
179
178
  if (parsed === "frp" || parsed === "both")
180
- await frp.installFrp();
179
+ await installFrp();
181
180
  });
182
181
  return program;
183
182
  }
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sY0FBYyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBRTFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEM7Ozs7R0FJRztBQUNILFNBQVMsUUFBUTtJQUNmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEMsTUFB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T0FBTztTQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsUUFBUSxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUM7U0FDdkQsV0FBVyxDQUFDLGdEQUFnRCxDQUFDO1NBQzdELE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLE1BQU0sS0FBSyxNQUFNO1lBQUUsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEUsSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IHR1bm5lbGAgLSBmcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyBwb3J0ciB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBnYXRlLlxuICpcbiAqIFRoaXMgaXMgdGhlIFdSQVBQRVIgcGF0aCwgYW5kIGl0IGV4aXN0cyBmb3Igb25lIGNhc2U6IGEgcHJvamVjdCB0aGF0IGRvZXMgbm90XG4gKiB1c2UgYEBkYngtdG9vbHMvYXBwa2l0YCdzIGBjcmVhdGVBcHBgLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWdpc3RlclxuICogYHR1bm5lbEludGVyY2VwdG9yKClgICsgdGhlIGBhdXRoR2F0ZWAgcGx1Z2luIGluLXByb2Nlc3MuIEFuIEFwcEtpdCBhcHAgc2hvdWxkXG4gKiBzdGlsbCB0YWtlIHRoZSBwbHVnaW4gcGF0aCAtIG9uZSBwcm9jZXNzLCBubyBwcm94eSBob3AsIG5vIGR1cGxpY2F0ZWQgaGVhZGVyXG4gKiBoYW5kbGluZy5cbiAqXG4gKiBUaGUgd3JhcHBlciBjbGFpbXMgdGhlIFBVQkxJQyBwb3J0IChgREFUQUJSSUNLU19BUFBfUE9SVGAsIHRoZSBwb3J0IHRoZVxuICogcGxhdGZvcm0gYW5kIHBvcnRyIHJvdXRlIHRvKSwgbW92ZXMgdGhlIHdyYXBwZWQgYXBwIHRvIGEgcHJpdmF0ZSBvbmUsIGFuZFxuICogcmV2ZXJzZS1wcm94aWVzIGJldHdlZW4gdGhlbSBzbyB0aGUgZ2F0ZSBzaXRzIGluIGZyb250IG9mIHRyYWZmaWMgaXQgd291bGRcbiAqIG90aGVyd2lzZSBoYXZlIG5vIHdheSB0byBpbnRlcmNlcHQuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxlZ2F0ZWQ6IHRoZSBnYXRlXG4gKiBjb25maWcgY29tZXMgZnJvbSBgcGx1Z2luLnJlc29sdmVBdXRoR2F0ZUNvbmZpZ2AsIHRoZSBwb3J0ciBsaWZlY3ljbGUgZnJvbVxuICogYHBvcnRyLipgIC0gYm90aCB0aGUgc2FtZSBmdW5jdGlvbnMgdGhlIGluLXByb2Nlc3MgcGF0aCB1c2VzLlxuICpcbiAqIFNoaXBzIG5vIGJpbi4gYEBkYngtdG9vbHMvY2xpYCBtb3VudHMgYGJ1aWxkUHJvZ3JhbSgpYCBhcyBgZGJ4IHR1bm5lbGAgbGF6aWx5LFxuICogc28gYGRieCBkZXZgIHBheXMgZm9yIG5vbmUgb2YgdGhpcywgYW5kIGAtLWluc2VjdXJlYCAvIGBzdGF0dXNgIC8gYGluc3RhbGxgXG4gKiBuZXZlciBsb2FkIEFwcEtpdCBvciB0aGUgU01UUCBzdGFjayBlaXRoZXIgKHRoZSBnYXRlIGFwcCBpcyBiZWhpbmQgYSBkeW5hbWljXG4gKiBpbXBvcnQpLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB7IGFkZEFyZ3MsIHBhcnNlQXJncyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NsaS1hcmdzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3NSZXN1bHQgfSBmcm9tIFwiQGRieC10b29scy9jb3JlL2V4ZWNcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBmcnAsIGludGVyY2VwdG9yLCBwb3J0ciB9IGZyb20gXCJAZGJ4LXRvb2xzL3R1bm5lbFwiO1xuaW1wb3J0IHsgQ29tbWFuZCwgQ29tbWFuZGVyRXJyb3IgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB7IHJlc29sdmVUdW5uZWxPcHRpb25zLCBUdW5uZWxPcHRpb25zU2NoZW1hLCB0eXBlIFR1bm5lbE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5pbXBvcnQgeyBzdGFydFByb3h5IH0gZnJvbSBcIi4vcHJveHkudHNcIjtcblxuZXhwb3J0IHsgQ29tbWFuZGVyRXJyb3IgfTtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInR1bm5lbFwiKTtcblxuLyoqXG4gKiBBIGZyZWUgbG9vcGJhY2sgcG9ydCwgZnJvbSB0aGUgT1MgcmF0aGVyIHRoYW4gYSByYW5kb20gZ3Vlc3M6IGJpbmRpbmcgYDBgIGFuZFxuICogcmVhZGluZyBiYWNrIHdoYXQgd2FzIGFzc2lnbmVkIGlzIHRoZSBvbmx5IHdheSB0byBrbm93IHRoZSBwb3J0IGlzIGFjdHVhbGx5XG4gKiBhdmFpbGFibGUsIHNvIHR3byB0dW5uZWxzIGNhbiBydW4gc2lkZSBieSBzaWRlIHdpdGhvdXQgY29sbGlkaW5nLlxuICovXG5mdW5jdGlvbiBmcmVlUG9ydCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHByb2JlID0gY3JlYXRlU2VydmVyKCk7XG4gICAgcHJvYmUub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIHByb2JlLmxpc3RlbigwLCBcIjEyNy4wLjAuMVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gcHJvYmUuYWRkcmVzcygpO1xuICAgICAgY29uc3QgcG9ydCA9IHR5cGVvZiBhZGRyZXNzID09PSBcIm9iamVjdFwiICYmIGFkZHJlc3MgPyBhZGRyZXNzLnBvcnQgOiAwO1xuICAgICAgcHJvYmUuY2xvc2UoKCkgPT4gKHBvcnQgPiAwID8gcmVzb2x2ZShwb3J0KSA6IHJlamVjdChuZXcgRXJyb3IoXCJubyBmcmVlIHBvcnRcIikpKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRpZSB0aGUgd3JhcHBlcidzIGxpZmV0aW1lIHRvIGl0cyBjaGlsZHJlbjogYSBjaGlsZCB0aGF0IGV4aXRzIHRha2VzIHRoZVxuICogd3JhcHBlciBkb3duIHdpdGggaXRzIGNvZGUuIENvcmUgZXhlYyBvd25zIHBhcmVudCB0ZXJtaW5hdGlvbiBmb3J3YXJkaW5nIGZvclxuICogZXZlcnkgc3Bhd25lZCBjaGlsZC4gV2l0aG91dCB0aGlzIGEgY3Jhc2hlZCBhcHAgbGVhdmVzIGEgcG9ydHIgdHVubmVsIHNlcnZpbmdcbiAqIGEgZGVhZCBwb3J0LCB3aGljaCBsb29rcyBsaWtlIGEgaGFuZyByYXRoZXIgdGhhbiBhIGZhaWx1cmUuXG4gKi9cbmZ1bmN0aW9uIHN1cGVydmlzZShjaGlsZHJlbjogcmVhZG9ubHkgQ2hpbGRQcm9jZXNzUmVzdWx0W10pOiB2b2lkIHtcbiAgbGV0IHN0b3BwaW5nID0gZmFsc2U7XG4gIGNvbnN0IHN0b3AgPSAoY29kZTogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKHN0b3BwaW5nKSByZXR1cm47XG4gICAgc3RvcHBpbmcgPSB0cnVlO1xuICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKGNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLnNodXRkb3duKCkpKS50aGVuKCgpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICB9KTtcbiAgfTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIHZvaWQgY2hpbGQub24oXCJleGl0XCIsIChjb2RlKSA9PiBzdG9wKGNvZGUgPz8gMSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bihyYXc6IFR1bm5lbE9wdGlvbnMsIGNvbW1hbmQ6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFtleGVjdXRhYmxlLCAuLi5hcmdzXSA9IGNvbW1hbmQ7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVR1bm5lbE9wdGlvbnMocmF3KTtcbiAgY29uc3QgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1Jlc3VsdFtdID0gW107XG5cbiAgLy8gVHdvIHVwc3RyZWFtIG1vZGVzOlxuICAvLyAgIC0gV1JBUDogYSBjb21tYW5kIGFmdGVyIGAtLWAuIFRoZSB3cmFwcGVyIHNwYXducyBpdCBvbiBhIHByaXZhdGUgbG9vcGJhY2tcbiAgLy8gICAgIHBvcnQgYW5kIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgdGFsa3MgdG8gaXQuXG4gIC8vICAgLSBBVFRBQ0g6IG5vIGNvbW1hbmQsIGJ1dCBgLS1hcHAtcG9ydGAgbmFtZXMgYW4gYWxyZWFkeS1ydW5uaW5nIHVwc3RyZWFtXG4gIC8vICAgICAoZS5nLiBhIGxvY2FsIHJldmVyc2UgcHJveHkpLiBUaGUgZ2F0ZSBmcm9udHMgaXQgd2l0aG91dCBzcGF3bmluZyBhXG4gIC8vICAgICBjaGlsZC4gVGhpcyBpcyB3aGF0IGxldHMgdGhlIGdhdGUgc2l0IG9uIGFuIGludGVyZmFjZSBpbiBmcm9udCBvZiBhXG4gIC8vICAgICBzZXBhcmF0ZWx5LXN1cGVydmlzZWQgc3RhY2suXG4gIGxldCBhcHBQb3J0OiBudW1iZXI7XG4gIGlmIChleGVjdXRhYmxlKSB7XG4gICAgYXBwUG9ydCA9IHJlc29sdmVkLmFwcFBvcnQgPz8gKGF3YWl0IGZyZWVQb3J0KCkpO1xuICAgIGNvbnN0IGFwcCA9IGV4ZWMuc3Bhd24oZXhlY3V0YWJsZSwgYXJncywge1xuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBEQVRBQlJJQ0tTX0FQUF9QT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgIFBPUlQ6IFN0cmluZyhhcHBQb3J0KSxcbiAgICAgICAgSE9TVDogXCIxMjcuMC4wLjFcIixcbiAgICAgIH0sXG4gICAgICBzdGRpbjogXCJpbmhlcml0XCIsXG4gICAgICBzdGRvdXQ6IFwiaW5oZXJpdFwiLFxuICAgICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgICAgIHRlcm1pbmF0ZVRpbWVvdXQ6IDEwXzAwMCxcbiAgICB9KTtcbiAgICBjaGlsZHJlbi5wdXNoKGFwcCk7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWQuYXBwUG9ydCkge1xuICAgIGFwcFBvcnQgPSByZXNvbHZlZC5hcHBQb3J0O1xuICAgIGxvZ2dlci5pbmZvKFwiYXR0YWNoaW5nIGdhdGUgdG8gZXhpc3RpbmcgdXBzdHJlYW1cIiwgeyBhcHBQb3J0IH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBDb21tYW5kZXJFcnJvcihcbiAgICAgIDEsXG4gICAgICBcInR1bm5lbC5uby11cHN0cmVhbVwiLFxuICAgICAgXCJubyBjb21tYW5kIGdpdmVuIChwYXNzIGl0IGFmdGVyIGAtLWApIGFuZCBubyAtLWFwcC1wb3J0IHRvIGF0dGFjaCB0b1wiLFxuICAgICk7XG4gIH1cblxuICAvLyBEeW5hbWljIGltcG9ydDogdGhlIGdhdGUgaXMgdGhlIG9ubHkgdGhpbmcgaGVyZSB0aGF0IG5lZWRzIEFwcEtpdCArIFNNVFAsIHNvXG4gIC8vIGFuIGAtLWluc2VjdXJlYCBydW4gbmV2ZXIgbG9hZHMgZWl0aGVyLlxuICBjb25zdCBnYXRlID0gcmVzb2x2ZWQuZ2F0ZS5pbnNlY3VyZVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBhd2FpdCAoXG4gICAgICAgIGF3YWl0IGltcG9ydChcIi4vYXBwLnRzXCIpXG4gICAgICApLnN0YXJ0R2F0ZUFwcCh7XG4gICAgICAgIC4uLnJlc29sdmVkLmdhdGVDb25maWcsXG4gICAgICAgIHB1YmxpY0RvbWFpbjogcmVzb2x2ZWQuZ2F0ZS5wdWJsaWNEb21haW4gPz8gYGxvY2FsaG9zdDoke3Jlc29sdmVkLnB1YmxpY1BvcnR9YCxcbiAgICAgIH0pO1xuICBpZiAoIWdhdGUpIGxvZ2dlci53YXJuKFwicnVubmluZyBPUEVOIC0gbm8gZ2F0ZSBpcyBpbiBmcm9udCBvZiB0aGlzIHR1bm5lbFwiKTtcblxuICBhd2FpdCBzdGFydFByb3h5KHtcbiAgICBwdWJsaWNQb3J0OiByZXNvbHZlZC5wdWJsaWNQb3J0LFxuICAgIGFwcFBvcnQsXG4gICAgZ2F0ZSxcbiAgICBmb3J3YXJkSGVhZGVyczogcmVzb2x2ZWQuZ2F0ZS5mb3J3YXJkSGVhZGVycyxcbiAgICBnYXRlUGF0aHM6IHJlc29sdmVkLmdhdGUuZ2F0ZVBhdGhzLFxuICAgIGJyYW5kTmFtZTogcmVzb2x2ZWQuZ2F0ZS5icmFuZE5hbWUsXG4gICAgcGFzc2tleU5hbWVQcmVmaXg6IHJlc29sdmVkLmdhdGUucGFzc2tleU5hbWVQcmVmaXgsXG4gICAgYmluZEhvc3RzOiByZXNvbHZlZC5iaW5kSG9zdHMsXG4gIH0pO1xuXG4gIGlmICgocmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcInBvcnRyXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQucG9ydHIpIHtcbiAgICBjb25zdCBwb3J0ckVudiA9IGF3YWl0IHBvcnRyLmluc3RhbGxQb3J0cigpO1xuICAgIGF3YWl0IHBvcnRyLndyaXRlUG9ydHJDb25maWcocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KTtcbiAgICBjaGlsZHJlbi5wdXNoKHBvcnRyLnN0YXJ0UG9ydHIocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KSk7XG4gIH1cbiAgaWYgKChyZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiZnJwXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQuZnJwKSB7XG4gICAgY29uc3QgZnJwRW52ID0gYXdhaXQgZnJwLmluc3RhbGxGcnAoKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gYXdhaXQgZnJwLndyaXRlRnJwQ29uZmlnKHJlc29sdmVkLmZycCwgZnJwRW52KTtcbiAgICBjaGlsZHJlbi5wdXNoKGZycC5zdGFydEZycChyZXNvbHZlZC5mcnAsIGZycEVudiwgY29uZmlnUGF0aCkpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZVR1bm5lbENvdW50ID0gY2hpbGRyZW4ubGVuZ3RoIC0gKGV4ZWN1dGFibGUgPyAxIDogMCk7XG4gIGlmICghYWN0aXZlVHVubmVsQ291bnQpIHtcbiAgICBsb2dnZXIuaW5mbyhcIm5vIHNlbGVjdGVkIHB1YmxpYyB0dW5uZWwgaXMgY29uZmlndXJlZFwiLCB7XG4gICAgICB0cmFuc3BvcnQ6IHJlc29sdmVkLnRyYW5zcG9ydCxcbiAgICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgfSk7XG4gIH1cbiAgc3VwZXJ2aXNlKGNoaWxkcmVuKTtcbn1cblxuLyoqIFRoZSBgZGJ4IHR1bm5lbGAgcHJvZ3JhbS4gTm8gc2lkZSBlZmZlY3RzIHVudGlsIHBhcnNlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb2dyYW0obmFtZSA9IFwiZGJ4IHR1bm5lbFwiKTogQ29tbWFuZCB7XG4gIGNvbnN0IHByb2dyYW0gPSBhZGRBcmdzKFxuICAgIG5ldyBDb21tYW5kKClcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oXCJGcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBhdXRoXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG5cbiAgLy8gYHJ1bmAgaXMgdGhlIERFRkFVTFQgYWN0aW9uIGFzIHdlbGwgYXMgYSBuYW1lZCBzdWJjb21tYW5kLCBwcmVzZXJ2aW5nIHRoZSBvbGRcbiAgLy8gd3JhcHBlcidzIGVyZ29ub21pY3MgKGBkYnggdHVubmVsIC0tYWxsb3cgeCAtLSBidW4gc3JjL3NlcnZlci50c2ApIHdoaWxlXG4gIC8vIGxlYXZpbmcgc29tZXdoZXJlIGZvciBgc3RhdHVzYCBhbmQgYGluc3RhbGxgIHRvIGxpdmUuXG4gIHByb2dyYW1cbiAgICAuYXJndW1lbnQoXCJbY29tbWFuZC4uLl1cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocHJvZ3JhbSwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHJ1bkNvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInJ1blwiKS5kZXNjcmlwdGlvbihcIldyYXAgYSBjb21tYW5kICh0aGUgZGVmYXVsdCBhY3Rpb24pXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHJ1bkNvbW1hbmRcbiAgICAuYXJndW1lbnQoXCI8Y29tbWFuZC4uLj5cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocnVuQ29tbWFuZCwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIC8vIFdvcnRoIGl0cyBvd24gY29tbWFuZDogdGhlIG1vc3QgY29tbW9uIGZhaWx1cmUgaXMgYSB0dW5uZWwgdGhhdCBzaWxlbnRseVxuICAvLyBkb2VzIG5vdGhpbmcgYmVjYXVzZSBubyB0b2tlbiBvciBkb21haW4gcmVzb2x2ZWQsIGFuZCB0aGlzIHByaW50cyBleGFjdGx5XG4gIC8vIHdoYXQgd291bGQgaGFwcGVuIHdpdGhvdXQgc3RhcnRpbmcgYW55dGhpbmcuXG4gIGNvbnN0IHN0YXR1c0NvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInN0YXR1c1wiKS5kZXNjcmlwdGlvbihcIlJlc29sdmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHByaW50IGl0XCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHN0YXR1c0NvbW1hbmQuYWN0aW9uKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUdW5uZWxPcHRpb25zKHBhcnNlQXJncyhzdGF0dXNDb21tYW5kLCBUdW5uZWxPcHRpb25zU2NoZW1hKSk7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIG51bGwsIDIpfVxcbmApO1xuICB9KTtcblxuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoXCJpbnN0YWxsXCIpXG4gICAgLmFyZ3VtZW50KFwiW3RyYW5zcG9ydF1cIiwgXCJwb3J0ciwgZnJwLCBvciBib3RoXCIsIFwicG9ydHJcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbnN0YWxsIHB1YmxpYyB0dW5uZWwgY2xpZW50IGJpbmFyaWVzIGFuZCBleGl0XCIpXG4gICAgLmFjdGlvbihhc3luYyAodHJhbnNwb3J0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGludGVyY2VwdG9yLlR1bm5lbFRyYW5zcG9ydFNjaGVtYS5wYXJzZSh0cmFuc3BvcnQpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJwb3J0clwiIHx8IHBhcnNlZCA9PT0gXCJib3RoXCIpIGF3YWl0IHBvcnRyLmluc3RhbGxQb3J0cigpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJmcnBcIiB8fCBwYXJzZWQgPT09IFwiYm90aFwiKSBhd2FpdCBmcnAuaW5zdGFsbEZycCgpO1xuICAgIH0pO1xuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLGNBQWMsQ0FBQztBQUM3RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEM7Ozs7R0FJRztBQUNILFNBQVMsUUFBUTtJQUNmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFF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LHFCQUFxQixFQUFFLE9BQU8sQ0FBQztTQUN2RCxXQUFXLENBQUMsZ0RBQWdELENBQUM7U0FDN0QsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDbEMsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssTUFBTTtZQUFFLE1BQU0sWUFBWSxFQUFFLENBQUM7UUFDbEUsSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxNQUFNO1lBQUUsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBkYnggdHVubmVsYCAtIGZyb250IGEgY29tbWFuZCB3aXRoIGEgcHVibGljIHBvcnRyIHR1bm5lbCBhbmQgcGFzc3dvcmRsZXNzIGdhdGUuXG4gKlxuICogVGhpcyBpcyB0aGUgV1JBUFBFUiBwYXRoLCBhbmQgaXQgZXhpc3RzIGZvciBvbmUgY2FzZTogYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBgQGRieC10b29scy9hcHBraXRgJ3MgYGNyZWF0ZUFwcGAsIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlZ2lzdGVyXG4gKiBgdHVubmVsSW50ZXJjZXB0b3IoKWAgKyB0aGUgYGF1dGhHYXRlYCBwbHVnaW4gaW4tcHJvY2Vzcy4gQW4gQXBwS2l0IGFwcCBzaG91bGRcbiAqIHN0aWxsIHRha2UgdGhlIHBsdWdpbiBwYXRoIC0gb25lIHByb2Nlc3MsIG5vIHByb3h5IGhvcCwgbm8gZHVwbGljYXRlZCBoZWFkZXJcbiAqIGhhbmRsaW5nLlxuICpcbiAqIFRoZSB3cmFwcGVyIGNsYWltcyB0aGUgUFVCTElDIHBvcnQgKGBEQVRBQlJJQ0tTX0FQUF9QT1JUYCwgdGhlIHBvcnQgdGhlXG4gKiBwbGF0Zm9ybSBhbmQgcG9ydHIgcm91dGUgdG8pLCBtb3ZlcyB0aGUgd3JhcHBlZCBhcHAgdG8gYSBwcml2YXRlIG9uZSwgYW5kXG4gKiByZXZlcnNlLXByb3hpZXMgYmV0d2VlbiB0aGVtIHNvIHRoZSBnYXRlIHNpdHMgaW4gZnJvbnQgb2YgdHJhZmZpYyBpdCB3b3VsZFxuICogb3RoZXJ3aXNlIGhhdmUgbm8gd2F5IHRvIGludGVyY2VwdC4gRXZlcnl0aGluZyBlbHNlIGlzIGRlbGVnYXRlZDogdGhlIGdhdGVcbiAqIGNvbmZpZyBjb21lcyBmcm9tIGBwbHVnaW4ucmVzb2x2ZUF1dGhHYXRlQ29uZmlnYCwgdGhlIHBvcnRyIGxpZmVjeWNsZSBmcm9tXG4gKiBgcG9ydHIuKmAgLSBib3RoIHRoZSBzYW1lIGZ1bmN0aW9ucyB0aGUgaW4tcHJvY2VzcyBwYXRoIHVzZXMuXG4gKlxuICogU2hpcHMgbm8gYmluLiBgQGRieC10b29scy9jbGlgIG1vdW50cyBgYnVpbGRQcm9ncmFtKClgIGFzIGBkYnggdHVubmVsYCBsYXppbHksXG4gKiBzbyBgZGJ4IGRldmAgcGF5cyBmb3Igbm9uZSBvZiB0aGlzLCBhbmQgYC0taW5zZWN1cmVgIC8gYHN0YXR1c2AgLyBgaW5zdGFsbGBcbiAqIG5ldmVyIGxvYWQgQXBwS2l0IG9yIHRoZSBTTVRQIHN0YWNrIGVpdGhlciAodGhlIGdhdGUgYXBwIGlzIGJlaGluZCBhIGR5bmFtaWNcbiAqIGltcG9ydCkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0IHsgYWRkQXJncywgcGFyc2VBcmdzIH0gZnJvbSBcIkBkYngtdG9vbHMvY2xpLWFyZ3NcIjtcbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3NSZXN1bHQgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgaW5zdGFsbEZycCxcbiAgd3JpdGVGcnBDb25maWcsXG4gIHN0YXJ0RnJwLFxuICBUdW5uZWxUcmFuc3BvcnRTY2hlbWEsXG4gIGluc3RhbGxQb3J0cixcbiAgd3JpdGVQb3J0ckNvbmZpZyxcbiAgc3RhcnRQb3J0cixcbn0gZnJvbSBcIkBkYngtdG9vbHMvdHVubmVsXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBDb21tYW5kZXJFcnJvciB9IGZyb20gXCJjb21tYW5kZXJcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZVR1bm5lbE9wdGlvbnMsIFR1bm5lbE9wdGlvbnNTY2hlbWEsIHR5cGUgVHVubmVsT3B0aW9ucyB9IGZyb20gXCIuL29wdGlvbnMudHNcIjtcbmltcG9ydCB7IHN0YXJ0UHJveHkgfSBmcm9tIFwiLi9wcm94eS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwidHVubmVsXCIpO1xuXG4vKipcbiAqIEEgZnJlZSBsb29wYmFjayBwb3J0LCBmcm9tIHRoZSBPUyByYXRoZXIgdGhhbiBhIHJhbmRvbSBndWVzczogYmluZGluZyBgMGAgYW5kXG4gKiByZWFkaW5nIGJhY2sgd2hhdCB3YXMgYXNzaWduZWQgaXMgdGhlIG9ubHkgd2F5IHRvIGtub3cgdGhlIHBvcnQgaXMgYWN0dWFsbHlcbiAqIGF2YWlsYWJsZSwgc28gdHdvIHR1bm5lbHMgY2FuIHJ1biBzaWRlIGJ5IHNpZGUgd2l0aG91dCBjb2xsaWRpbmcuXG4gKi9cbmZ1bmN0aW9uIGZyZWVQb3J0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcHJvYmUgPSBjcmVhdGVTZXJ2ZXIoKTtcbiAgICBwcm9iZS5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgcHJvYmUubGlzdGVuKDAsIFwiMTI3LjAuMC4xXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9iZS5hZGRyZXNzKCk7XG4gICAgICBjb25zdCBwb3J0ID0gdHlwZW9mIGFkZHJlc3MgPT09IFwib2JqZWN0XCIgJiYgYWRkcmVzcyA/IGFkZHJlc3MucG9ydCA6IDA7XG4gICAgICBwcm9iZS5jbG9zZSgoKSA9PiAocG9ydCA+IDAgPyByZXNvbHZlKHBvcnQpIDogcmVqZWN0KG5ldyBFcnJvcihcIm5vIGZyZWUgcG9ydFwiKSkpKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGllIHRoZSB3cmFwcGVyJ3MgbGlmZXRpbWUgdG8gaXRzIGNoaWxkcmVuOiBhIGNoaWxkIHRoYXQgZXhpdHMgdGFrZXMgdGhlXG4gKiB3cmFwcGVyIGRvd24gd2l0aCBpdHMgY29kZS4gQ29yZSBleGVjIG93bnMgcGFyZW50IHRlcm1pbmF0aW9uIGZvcndhcmRpbmcgZm9yXG4gKiBldmVyeSBzcGF3bmVkIGNoaWxkLiBXaXRob3V0IHRoaXMgYSBjcmFzaGVkIGFwcCBsZWF2ZXMgYSBwb3J0ciB0dW5uZWwgc2VydmluZ1xuICogYSBkZWFkIHBvcnQsIHdoaWNoIGxvb2tzIGxpa2UgYSBoYW5nIHJhdGhlciB0aGFuIGEgZmFpbHVyZS5cbiAqL1xuZnVuY3Rpb24gc3VwZXJ2aXNlKGNoaWxkcmVuOiByZWFkb25seSBDaGlsZFByb2Nlc3NSZXN1bHRbXSk6IHZvaWQge1xuICBsZXQgc3RvcHBpbmcgPSBmYWxzZTtcbiAgY29uc3Qgc3RvcCA9IChjb2RlOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBpZiAoc3RvcHBpbmcpIHJldHVybjtcbiAgICBzdG9wcGluZyA9IHRydWU7XG4gICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gY2hpbGQuc2h1dGRvd24oKSkpLnRoZW4oKCkgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xuICAgIH0pO1xuICB9O1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgdm9pZCBjaGlsZC5vbihcImV4aXRcIiwgKGNvZGUpID0+IHN0b3AoY29kZSA/PyAxKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKHJhdzogVHVubmVsT3B0aW9ucywgY29tbWFuZDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgW2V4ZWN1dGFibGUsIC4uLmFyZ3NdID0gY29tbWFuZDtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlVHVubmVsT3B0aW9ucyhyYXcpO1xuICBjb25zdCBjaGlsZHJlbjogQ2hpbGRQcm9jZXNzUmVzdWx0W10gPSBbXTtcblxuICAvLyBUd28gdXBzdHJlYW0gbW9kZXM6XG4gIC8vICAgLSBXUkFQOiBhIGNvbW1hbmQgYWZ0ZXIgYC0tYC4gVGhlIHdyYXBwZXIgc3Bhd25zIGl0IG9uIGEgcHJpdmF0ZSBsb29wYmFja1xuICAvLyAgICAgcG9ydCBhbmQgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCB0YWxrcyB0byBpdC5cbiAgLy8gICAtIEFUVEFDSDogbm8gY29tbWFuZCwgYnV0IGAtLWFwcC1wb3J0YCBuYW1lcyBhbiBhbHJlYWR5LXJ1bm5pbmcgdXBzdHJlYW1cbiAgLy8gICAgIChlLmcuIGEgbG9jYWwgcmV2ZXJzZSBwcm94eSkuIFRoZSBnYXRlIGZyb250cyBpdCB3aXRob3V0IHNwYXduaW5nIGFcbiAgLy8gICAgIGNoaWxkLiBUaGlzIGlzIHdoYXQgbGV0cyB0aGUgZ2F0ZSBzaXQgb24gYW4gaW50ZXJmYWNlIGluIGZyb250IG9mIGFcbiAgLy8gICAgIHNlcGFyYXRlbHktc3VwZXJ2aXNlZCBzdGFjay5cbiAgbGV0IGFwcFBvcnQ6IG51bWJlcjtcbiAgaWYgKGV4ZWN1dGFibGUpIHtcbiAgICBhcHBQb3J0ID0gcmVzb2x2ZWQuYXBwUG9ydCA/PyAoYXdhaXQgZnJlZVBvcnQoKSk7XG4gICAgY29uc3QgYXBwID0gc3Bhd24oZXhlY3V0YWJsZSwgYXJncywge1xuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBEQVRBQlJJQ0tTX0FQUF9QT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgIFBPUlQ6IFN0cmluZyhhcHBQb3J0KSxcbiAgICAgICAgSE9TVDogXCIxMjcuMC4wLjFcIixcbiAgICAgIH0sXG4gICAgICBzdGRpbjogXCJpbmhlcml0XCIsXG4gICAgICBzdGRvdXQ6IFwiaW5oZXJpdFwiLFxuICAgICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgICAgIHRlcm1pbmF0ZVRpbWVvdXQ6IDEwXzAwMCxcbiAgICB9KTtcbiAgICBjaGlsZHJlbi5wdXNoKGFwcCk7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWQuYXBwUG9ydCkge1xuICAgIGFwcFBvcnQgPSByZXNvbHZlZC5hcHBQb3J0O1xuICAgIGxvZ2dlci5pbmZvKFwiYXR0YWNoaW5nIGdhdGUgdG8gZXhpc3RpbmcgdXBzdHJlYW1cIiwgeyBhcHBQb3J0IH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBDb21tYW5kZXJFcnJvcihcbiAgICAgIDEsXG4gICAgICBcInR1bm5lbC5uby11cHN0cmVhbVwiLFxuICAgICAgXCJubyBjb21tYW5kIGdpdmVuIChwYXNzIGl0IGFmdGVyIGAtLWApIGFuZCBubyAtLWFwcC1wb3J0IHRvIGF0dGFjaCB0b1wiLFxuICAgICk7XG4gIH1cblxuICAvLyBEeW5hbWljIGltcG9ydDogdGhlIGdhdGUgaXMgdGhlIG9ubHkgdGhpbmcgaGVyZSB0aGF0IG5lZWRzIEFwcEtpdCArIFNNVFAsIHNvXG4gIC8vIGFuIGAtLWluc2VjdXJlYCBydW4gbmV2ZXIgbG9hZHMgZWl0aGVyLlxuICBjb25zdCBnYXRlID0gcmVzb2x2ZWQuZ2F0ZS5pbnNlY3VyZVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBhd2FpdCAoXG4gICAgICAgIGF3YWl0IGltcG9ydChcIi4vYXBwLnRzXCIpXG4gICAgICApLnN0YXJ0R2F0ZUFwcCh7XG4gICAgICAgIC4uLnJlc29sdmVkLmdhdGVDb25maWcsXG4gICAgICAgIHB1YmxpY0RvbWFpbjogcmVzb2x2ZWQuZ2F0ZS5wdWJsaWNEb21haW4gPz8gYGxvY2FsaG9zdDoke3Jlc29sdmVkLnB1YmxpY1BvcnR9YCxcbiAgICAgIH0pO1xuICBpZiAoIWdhdGUpIGxvZ2dlci53YXJuKFwicnVubmluZyBPUEVOIC0gbm8gZ2F0ZSBpcyBpbiBmcm9udCBvZiB0aGlzIHR1bm5lbFwiKTtcblxuICBhd2FpdCBzdGFydFByb3h5KHtcbiAgICBwdWJsaWNQb3J0OiByZXNvbHZlZC5wdWJsaWNQb3J0LFxuICAgIGFwcFBvcnQsXG4gICAgZ2F0ZSxcbiAgICBmb3J3YXJkSGVhZGVyczogcmVzb2x2ZWQuZ2F0ZS5mb3J3YXJkSGVhZGVycyxcbiAgICBnYXRlUGF0aHM6IHJlc29sdmVkLmdhdGUuZ2F0ZVBhdGhzLFxuICAgIGJyYW5kTmFtZTogcmVzb2x2ZWQuZ2F0ZS5icmFuZE5hbWUsXG4gICAgcGFzc2tleU5hbWVQcmVmaXg6IHJlc29sdmVkLmdhdGUucGFzc2tleU5hbWVQcmVmaXgsXG4gICAgYmluZEhvc3RzOiByZXNvbHZlZC5iaW5kSG9zdHMsXG4gIH0pO1xuXG4gIGlmICgocmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcInBvcnRyXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQucG9ydHIpIHtcbiAgICBjb25zdCBwb3J0ckVudiA9IGF3YWl0IGluc3RhbGxQb3J0cigpO1xuICAgIGF3YWl0IHdyaXRlUG9ydHJDb25maWcocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KTtcbiAgICBjaGlsZHJlbi5wdXNoKHN0YXJ0UG9ydHIocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KSk7XG4gIH1cbiAgaWYgKChyZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiZnJwXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQuZnJwKSB7XG4gICAgY29uc3QgZnJwRW52ID0gYXdhaXQgaW5zdGFsbEZycCgpO1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBhd2FpdCB3cml0ZUZycENvbmZpZyhyZXNvbHZlZC5mcnAsIGZycEVudik7XG4gICAgY2hpbGRyZW4ucHVzaChzdGFydEZycChyZXNvbHZlZC5mcnAsIGZycEVudiwgY29uZmlnUGF0aCkpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZVR1bm5lbENvdW50ID0gY2hpbGRyZW4ubGVuZ3RoIC0gKGV4ZWN1dGFibGUgPyAxIDogMCk7XG4gIGlmICghYWN0aXZlVHVubmVsQ291bnQpIHtcbiAgICBsb2dnZXIuaW5mbyhcIm5vIHNlbGVjdGVkIHB1YmxpYyB0dW5uZWwgaXMgY29uZmlndXJlZFwiLCB7XG4gICAgICB0cmFuc3BvcnQ6IHJlc29sdmVkLnRyYW5zcG9ydCxcbiAgICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgfSk7XG4gIH1cbiAgc3VwZXJ2aXNlKGNoaWxkcmVuKTtcbn1cblxuLyoqIFRoZSBgZGJ4IHR1bm5lbGAgcHJvZ3JhbS4gTm8gc2lkZSBlZmZlY3RzIHVudGlsIHBhcnNlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb2dyYW0obmFtZSA9IFwiZGJ4IHR1bm5lbFwiKTogQ29tbWFuZCB7XG4gIGNvbnN0IHByb2dyYW0gPSBhZGRBcmdzKFxuICAgIG5ldyBDb21tYW5kKClcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oXCJGcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBhdXRoXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG5cbiAgLy8gYHJ1bmAgaXMgdGhlIERFRkFVTFQgYWN0aW9uIGFzIHdlbGwgYXMgYSBuYW1lZCBzdWJjb21tYW5kLCBwcmVzZXJ2aW5nIHRoZSBvbGRcbiAgLy8gd3JhcHBlcidzIGVyZ29ub21pY3MgKGBkYnggdHVubmVsIC0tYWxsb3cgeCAtLSBidW4gc3JjL3NlcnZlci50c2ApIHdoaWxlXG4gIC8vIGxlYXZpbmcgc29tZXdoZXJlIGZvciBgc3RhdHVzYCBhbmQgYGluc3RhbGxgIHRvIGxpdmUuXG4gIHByb2dyYW1cbiAgICAuYXJndW1lbnQoXCJbY29tbWFuZC4uLl1cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocHJvZ3JhbSwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHJ1bkNvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInJ1blwiKS5kZXNjcmlwdGlvbihcIldyYXAgYSBjb21tYW5kICh0aGUgZGVmYXVsdCBhY3Rpb24pXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHJ1bkNvbW1hbmRcbiAgICAuYXJndW1lbnQoXCI8Y29tbWFuZC4uLj5cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocnVuQ29tbWFuZCwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIC8vIFdvcnRoIGl0cyBvd24gY29tbWFuZDogdGhlIG1vc3QgY29tbW9uIGZhaWx1cmUgaXMgYSB0dW5uZWwgdGhhdCBzaWxlbnRseVxuICAvLyBkb2VzIG5vdGhpbmcgYmVjYXVzZSBubyB0b2tlbiBvciBkb21haW4gcmVzb2x2ZWQsIGFuZCB0aGlzIHByaW50cyBleGFjdGx5XG4gIC8vIHdoYXQgd291bGQgaGFwcGVuIHdpdGhvdXQgc3RhcnRpbmcgYW55dGhpbmcuXG4gIGNvbnN0IHN0YXR1c0NvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInN0YXR1c1wiKS5kZXNjcmlwdGlvbihcIlJlc29sdmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHByaW50IGl0XCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHN0YXR1c0NvbW1hbmQuYWN0aW9uKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUdW5uZWxPcHRpb25zKHBhcnNlQXJncyhzdGF0dXNDb21tYW5kLCBUdW5uZWxPcHRpb25zU2NoZW1hKSk7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIG51bGwsIDIpfVxcbmApO1xuICB9KTtcblxuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoXCJpbnN0YWxsXCIpXG4gICAgLmFyZ3VtZW50KFwiW3RyYW5zcG9ydF1cIiwgXCJwb3J0ciwgZnJwLCBvciBib3RoXCIsIFwicG9ydHJcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbnN0YWxsIHB1YmxpYyB0dW5uZWwgY2xpZW50IGJpbmFyaWVzIGFuZCBleGl0XCIpXG4gICAgLmFjdGlvbihhc3luYyAodHJhbnNwb3J0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IFR1bm5lbFRyYW5zcG9ydFNjaGVtYS5wYXJzZSh0cmFuc3BvcnQpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJwb3J0clwiIHx8IHBhcnNlZCA9PT0gXCJib3RoXCIpIGF3YWl0IGluc3RhbGxQb3J0cigpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJmcnBcIiB8fCBwYXJzZWQgPT09IFwiYm90aFwiKSBhd2FpdCBpbnN0YWxsRnJwKCk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXX0=
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @module
13
13
  */
14
- import { type AuthGateConfig, frp, interceptor, plugin, portr } from "@dbx-tools/tunnel";
14
+ import { type AuthGateConfig, resolveFrpConfig, type TunnelTransport, type ResolvedAuthGateConfig, resolvePortrConfig } from "@dbx-tools/tunnel";
15
15
  import { z } from "zod";
16
16
  export declare const TunnelOptionsSchema: z.ZodObject<{
17
17
  transport: z.ZodOptional<z.ZodEnum<{
@@ -57,7 +57,7 @@ export interface ResolvedTunnelOptions {
57
57
  appPort?: number;
58
58
  /** Interface IPs the gate listens on. Empty means the default (0.0.0.0). */
59
59
  bindHosts: string[];
60
- transport: interceptor.TunnelTransport;
60
+ transport: TunnelTransport;
61
61
  /**
62
62
  * The gate config as the `authGate` PLUGIN takes it - flags only, nothing
63
63
  * resolved. Passed straight to the plugin so it applies its own fallbacks
@@ -65,9 +65,9 @@ export interface ResolvedTunnelOptions {
65
65
  */
66
66
  gateConfig: AuthGateConfig;
67
67
  /** The same config after the plugin's resolution, for `status` and for routing. */
68
- gate: plugin.ResolvedAuthGateConfig;
69
- portr: ReturnType<typeof portr.resolvePortrConfig>;
70
- frp: ReturnType<typeof frp.resolveFrpConfig>;
68
+ gate: ResolvedAuthGateConfig;
69
+ portr: ReturnType<typeof resolvePortrConfig>;
70
+ frp: ReturnType<typeof resolveFrpConfig>;
71
71
  }
72
72
  /** Resolve CLI flag values through the owning tunnel and auth-gate configuration rules. */
73
73
  export declare function resolveTunnelOptions(options: TunnelOptions): ResolvedTunnelOptions;
@@ -12,24 +12,24 @@
12
12
  * @module
13
13
  */
14
14
  import { configUtils } from "@dbx-tools/core";
15
- import { options as sharedOptions, stringUtils } from "@dbx-tools/shared-core";
16
- import { frp, interceptor, plugin, portr } from "@dbx-tools/tunnel";
15
+ import { tcpPortOrZeroSchema, databricksEnvironmentNames, parseList } from "@dbx-tools/shared-core";
16
+ import { resolveFrpConfig, TunnelTransportSchema, resolveTunnelTransport, resolveAuthGateConfig, resolvePortrConfig, } from "@dbx-tools/tunnel";
17
17
  import { z } from "zod";
18
18
  const text = (description) => z.string().trim().min(1).optional().describe(description);
19
- const port = (description) => sharedOptions.tcpPortOrZeroSchema.optional().describe(description);
19
+ const port = (description) => tcpPortOrZeroSchema.optional().describe(description);
20
20
  const list = (description) => z
21
- .preprocess((value) => (typeof value === "string" ? stringUtils.parseList(value) : value), z.array(z.string().trim().min(1)))
21
+ .preprocess((value) => (typeof value === "string" ? parseList(value) : value), z.array(z.string().trim().min(1)))
22
22
  .optional()
23
23
  .describe(description);
24
24
  export const TunnelOptionsSchema = z
25
25
  .object({
26
- transport: interceptor.TunnelTransportSchema.optional()
26
+ transport: TunnelTransportSchema.optional()
27
27
  .describe("Public tunnel transport.")
28
28
  .meta({ env: "TUNNEL_TRANSPORT" }),
29
29
  publicDomain: text("Public tunnel domain.").meta({ env: "TUNNEL_PUBLIC_DOMAIN" }),
30
30
  subdomain: text("Portr subdomain."),
31
31
  port: port("Public listener port.").meta({
32
- env: sharedOptions.databricksEnvironmentNames.appPort,
32
+ env: databricksEnvironmentNames.appPort,
33
33
  }),
34
34
  appPort: port("Private wrapped application port.").meta({
35
35
  env: ["TUNNEL_APP_PORT", "APP_PORT"],
@@ -114,8 +114,8 @@ export function resolveTunnelOptions(options) {
114
114
  publicDomain: options.publicDomain,
115
115
  publicDomains: options.frpPublicDomain ? [options.frpPublicDomain] : undefined,
116
116
  };
117
- const gate = plugin.resolveAuthGateConfig(gateConfig);
118
- const transport = interceptor.resolveTunnelTransport(options.transport);
117
+ const gate = resolveAuthGateConfig(gateConfig);
118
+ const transport = resolveTunnelTransport(options.transport);
119
119
  return {
120
120
  publicPort,
121
121
  ...(appPort > 0 ? { appPort } : {}),
@@ -123,12 +123,12 @@ export function resolveTunnelOptions(options) {
123
123
  transport,
124
124
  gateConfig,
125
125
  gate,
126
- portr: portr.resolvePortrConfig({
126
+ portr: resolvePortrConfig({
127
127
  publicDomain: gate.publicDomain,
128
128
  subdomain: options.subdomain,
129
129
  port: publicPort,
130
130
  }),
131
- frp: frp.resolveFrpConfig({
131
+ frp: resolveFrpConfig({
132
132
  publicDomain: options.frpPublicDomain,
133
133
  server: options.frpServer,
134
134
  serverPort: options.frpServerPort,
@@ -139,4 +139,4 @@ export function resolveTunnelOptions(options) {
139
139
  }),
140
140
  };
141
141
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90dW5uZWwvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxFQUF1QixHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDaEcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDbkMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyRSxNQUFNLElBQUksR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUNuQyxDQUFDO0tBQ0UsVUFBVSxDQUNULENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzdFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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Q1YsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFO1FBQ2xDLFNBQVM7UUFDVCxVQUFVO1FBQ1YsSUFBSTtRQUNKLEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUM7WUFDOUIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDO1FBQ0YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QixZQUFZLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDckMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQ3pCLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNqQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWTtZQUMvQixJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZsYWcgLT4gY29uZmlnIC0+IGRlZmF1bHQgcmVzb2x1dGlvbiBmb3IgYGRieCB0dW5uZWxgLlxuICpcbiAqIFRoZSBwb2ludCBvZiB0aGlzIG1vZHVsZSBpcyB0aGF0IGl0IGRvZXMgYWxtb3N0IE5PVEhJTkcgaXRzZWxmOiBldmVyeSBnYXRlXG4gKiBzZXR0aW5nIGlzIGhhbmRlZCBzdHJhaWdodCB0byBgQGRieC10b29scy90dW5uZWxgJ3Mgb3duXG4gKiBgcGx1Z2luLnJlc29sdmVBdXRoR2F0ZUNvbmZpZ2AsIHdoaWNoIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIHRoZSBpbi1wcm9jZXNzXG4gKiBwbHVnaW4gcGF0aCBjYWxscy4gVGhlIENMSSB0aGVyZWZvcmUgY2Fubm90IGRyaWZ0IGZyb20gdGhlIHBsdWdpbiBvbiBhIGRlZmF1bHQsXG4gKiBhbiBlbnYgbmFtZSwgb3IgYSBjb2VyY2lvbiBydWxlIC0gYSBmbGFnIGlzIGp1c3QgYSB2YWx1ZSBwYXNzZWQgd2hlcmUgdGhlXG4gKiBwbHVnaW4ncyBgY29uZmlnYCBvYmplY3Qgd291bGQgZ28sIGFuZCBgY29uZmlnLipgIGZpbGxzIHRoZSByZXN0IGluIGZyb20gdGhlXG4gKiBlbnZpcm9ubWVudCwgYSBgLmVudmAgZmlsZSwgb3IgYGRhdGFicmlja3MueW1sYC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY29uZmlnVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBvcHRpb25zIGFzIHNoYXJlZE9wdGlvbnMsIHN0cmluZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHR5cGUgQXV0aEdhdGVDb25maWcsIGZycCwgaW50ZXJjZXB0b3IsIHBsdWdpbiwgcG9ydHIgfSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IHRleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT4gei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuY29uc3QgcG9ydCA9IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICBzaGFyZWRPcHRpb25zLnRjcFBvcnRPclplcm9TY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5jb25zdCBsaXN0ID0gKGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+XG4gIHpcbiAgICAucHJlcHJvY2VzcyhcbiAgICAgICh2YWx1ZSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHN0cmluZ1V0aWxzLnBhcnNlTGlzdCh2YWx1ZSkgOiB2YWx1ZSksXG4gICAgICB6LmFycmF5KHouc3RyaW5nKCkudHJpbSgpLm1pbigxKSksXG4gICAgKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcblxuZXhwb3J0IGNvbnN0IFR1bm5lbE9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHRyYW5zcG9ydDogaW50ZXJjZXB0b3IuVHVubmVsVHJhbnNwb3J0U2NoZW1hLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlB1YmxpYyB0dW5uZWwgdHJhbnNwb3J0LlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IFwiVFVOTkVMX1RSQU5TUE9SVFwiIH0pLFxuICAgIHB1YmxpY0RvbWFpbjogdGV4dChcIlB1YmxpYyB0dW5uZWwgZG9tYWluLlwiKS5tZXRhKHsgZW52OiBcIlRVTk5FTF9QVUJMSUNfRE9NQUlOXCIgfSksXG4gICAgc3ViZG9tYWluOiB0ZXh0KFwiUG9ydHIgc3ViZG9tYWluLlwiKSxcbiAgICBwb3J0OiBwb3J0KFwiUHVibGljIGxpc3RlbmVyIHBvcnQuXCIpLm1ldGEoe1xuICAgICAgZW52OiBzaGFyZWRPcHRpb25zLmRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFwcFBvcnQsXG4gICAgfSksXG4gICAgYXBwUG9ydDogcG9ydChcIlByaXZhdGUgd3JhcHBlZCBhcHBsaWNhdGlvbiBwb3J0LlwiKS5tZXRhKHtcbiAgICAgIGVudjogW1wiVFVOTkVMX0FQUF9QT1JUXCIsIFwiQVBQX1BPUlRcIl0sXG4gICAgfSksXG4gICAgYWxsb3c6IGxpc3QoXCJFbWFpbCBhbGxvdy1saXN0IHBhdHRlcm5zLlwiKS5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX0FMTE9XXCIgfSksXG4gICAgc3ViamVjdDogdGV4dChcIlZlcmlmaWNhdGlvbiBlbWFpbCBzdWJqZWN0LlwiKS5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX1NVQkpFQ1RcIiB9KSxcbiAgICBicmFuZE5hbWU6IHRleHQoXCJWZXJpZmljYXRpb24gZW1haWwgYnJhbmQgbmFtZS5cIikubWV0YSh7IGVudjogXCJUVU5ORUxfQVVUSF9CUkFORF9OQU1FXCIgfSksXG4gICAgcGFzc2tleU5hbWVQcmVmaXg6IHRleHQoXCJQcmVmaXggZm9yIGh1bWFuaXplZCB0dW5uZWwgcGFzc2tleSBuYW1lcy5cIikubWV0YSh7XG4gICAgICBlbnY6IFwiVFVOTkVMX0FVVEhfUEFTU0tFWV9OQU1FX1BSRUZJWFwiLFxuICAgIH0pLFxuICAgIG1lc3NhZ2U6IHRleHQoXCJWZXJpZmljYXRpb24gZW1haWwgbWVzc2FnZS5cIikubWV0YSh7IGVudjogXCJUVU5ORUxfQVVUSF9NRVNTQUdFXCIgfSksXG4gICAgc2Vzc2lvblR0bFNlY29uZHM6IHouY29lcmNlXG4gICAgICAubnVtYmVyPG51bWJlcj4oKVxuICAgICAgLnBvc2l0aXZlKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJTZXNzaW9uIGxpZmV0aW1lIGluIHNlY29uZHMuXCIpXG4gICAgICAubWV0YSh7IGVudjogXCJUVU5ORUxfQVVUSF9TRVNTSU9OX1RUTFwiIH0pLFxuICAgIGNvZGVUdGxTZWNvbmRzOiB6LmNvZXJjZVxuICAgICAgLm51bWJlcjxudW1iZXI+KClcbiAgICAgIC5wb3NpdGl2ZSgpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiT25lLXRpbWUtY29kZSBsaWZldGltZSBpbiBzZWNvbmRzLlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IFwiVFVOTkVMX0FVVEhfQ09ERV9UVExcIiB9KSxcbiAgICBzZXNzaW9uQ3V0b2ZmOiB0ZXh0KFwiSW52YWxpZGF0ZSBzZXNzaW9ucyBpc3N1ZWQgYmVmb3JlIHRoaXMgdmFsdWUuXCIpLm1ldGEoe1xuICAgICAgZW52OiBcIlRVTk5FTF9BVVRIX1NFU1NJT05fQ1VUT0ZGXCIsXG4gICAgfSksXG4gICAgc3RvcmFnZTogelxuICAgICAgLmVudW0oW1wiYXV0b1wiLCBcImxha2ViYXNlXCIsIFwic3FsaXRlXCJdKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkF1dGhlbnRpY2F0aW9uIGRhdGFiYXNlIG1vZGUuXCIpXG4gICAgICAubWV0YSh7IGVudjogXCJUVU5ORUxfQVVUSF9TVE9SQUdFXCIgfSksXG4gICAgc3FsaXRlUGF0aDogdGV4dChcIkxvY2FsIGF1dGhlbnRpY2F0aW9uIFNRTGl0ZSBmaWxlLlwiKS5tZXRhKHtcbiAgICAgIGVudjogXCJUVU5ORUxfQVVUSF9TUUxJVEVfUEFUSFwiLFxuICAgIH0pLFxuICAgIGZvcndhcmRIZWFkZXJzOiBsaXN0KFwiQWRkaXRpb25hbCBmb3J3YXJkZWQgcmVxdWVzdCBoZWFkZXIgcGF0dGVybnMuXCIpLm1ldGEoe1xuICAgICAgZW52OiBcIlRVTk5FTF9GT1JXQVJEX0hFQURFUlNcIixcbiAgICB9KSxcbiAgICBnYXRlUGF0aHM6IGxpc3QoXCJBZGRpdGlvbmFsIHBhdGggcHJlZml4ZXMgcmVxdWlyaW5nIGF1dGhlbnRpY2F0aW9uLlwiKS5tZXRhKHtcbiAgICAgIGVudjogXCJUVU5ORUxfR0FURV9QQVRIU1wiLFxuICAgIH0pLFxuICAgIGJpbmRIb3N0czogbGlzdChcIkludGVyZmFjZSBJUHMgdGhlIGdhdGUgbGlzdGVucyBvbi5cIiksXG4gICAgaW5zZWN1cmU6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJSdW4gd2l0aG91dCBhbiBhdXRoZW50aWNhdGlvbiBnYXRlLlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IFwiVFVOTkVMX0lOU0VDVVJFXCIgfSksXG4gICAgZnJwU2VydmVyOiB0ZXh0KFwiRlJQIGNvbnRyb2wgaG9zdC5cIikubWV0YSh7IGVudjogXCJGUlBfU0VSVkVSXCIgfSksXG4gICAgZnJwUHVibGljRG9tYWluOiB0ZXh0KFwiRlJQIHB1YmxpYyBIVFRQIGRvbWFpbi5cIikubWV0YSh7XG4gICAgICBlbnY6IFwiVFVOTkVMX0ZSUF9QVUJMSUNfRE9NQUlOXCIsXG4gICAgfSksXG4gICAgZnJwU2VydmVyUG9ydDogcG9ydChcIkZSUCBjb250cm9sIHBvcnQuXCIpLm1ldGEoeyBlbnY6IFwiRlJQX1NFUlZFUl9QT1JUXCIgfSksXG4gICAgZnJwUHJvdG9jb2w6IHRleHQoXCJGUlAgdHJhbnNwb3J0IHByb3RvY29sLlwiKS5tZXRhKHsgZW52OiBcIkZSUF9QUk9UT0NPTFwiIH0pLFxuICAgIGZycFRva2VuOiB0ZXh0KFwiRlJQIGF1dGhlbnRpY2F0aW9uIHRva2VuLlwiKS5tZXRhKHsgZW52OiBbXCJGUlBfVE9LRU5cIiwgXCJUVU5ORUxfVE9LRU5cIl0gfSksXG4gICAgZnJwUHJveHlOYW1lOiB0ZXh0KFwiRlJQIHByb3h5IHJlZ2lzdHJhdGlvbiBuYW1lLlwiKS5tZXRhKHsgZW52OiBcIkZSUF9QUk9YWV9OQU1FXCIgfSksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQdWJsaWMgdHVubmVsIHdyYXBwZXIgY29tbWFuZC1saW5lIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgdHlwZSBUdW5uZWxPcHRpb25zID0gei5vdXRwdXQ8dHlwZW9mIFR1bm5lbE9wdGlvbnNTY2hlbWE+O1xuXG4vKiogRnVsbHkgcmVzb2x2ZWQgbGlzdGVuZXIsIGdhdGUsIGFuZCB0cmFuc3BvcnQgc2V0dGluZ3MgdXNlZCB0byBzdGFydCBhIHR1bm5lbC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRUdW5uZWxPcHRpb25zIHtcbiAgLyoqIFRoZSBwb3J0IHRoZSB3cmFwcGVyIGl0c2VsZiBsaXN0ZW5zIG9uIC0gd2hhdCBwb3J0ciBmb3J3YXJkcyB0by4gKi9cbiAgcHVibGljUG9ydDogbnVtYmVyO1xuICAvKiogVGhlIHByaXZhdGUgcG9ydCB0aGUgd3JhcHBlZCBhcHAgaXMgdG9sZCB0byBiaW5kLiBVbnNldCBtZWFucyBcInBpY2sgb25lXCIuICovXG4gIGFwcFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBJbnRlcmZhY2UgSVBzIHRoZSBnYXRlIGxpc3RlbnMgb24uIEVtcHR5IG1lYW5zIHRoZSBkZWZhdWx0ICgwLjAuMC4wKS4gKi9cbiAgYmluZEhvc3RzOiBzdHJpbmdbXTtcbiAgdHJhbnNwb3J0OiBpbnRlcmNlcHRvci5UdW5uZWxUcmFuc3BvcnQ7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZSBjb25maWcgYXMgdGhlIGBhdXRoR2F0ZWAgUExVR0lOIHRha2VzIGl0IC0gZmxhZ3Mgb25seSwgbm90aGluZ1xuICAgKiByZXNvbHZlZC4gUGFzc2VkIHN0cmFpZ2h0IHRvIHRoZSBwbHVnaW4gc28gaXQgYXBwbGllcyBpdHMgb3duIGZhbGxiYWNrc1xuICAgKiBleGFjdGx5IG9uY2UsIGluIHRoZSBvbmUgcGxhY2UgdGhhdCBvd25zIHRoZW0uXG4gICAqL1xuICBnYXRlQ29uZmlnOiBBdXRoR2F0ZUNvbmZpZztcbiAgLyoqIFRoZSBzYW1lIGNvbmZpZyBhZnRlciB0aGUgcGx1Z2luJ3MgcmVzb2x1dGlvbiwgZm9yIGBzdGF0dXNgIGFuZCBmb3Igcm91dGluZy4gKi9cbiAgZ2F0ZTogcGx1Z2luLlJlc29sdmVkQXV0aEdhdGVDb25maWc7XG4gIHBvcnRyOiBSZXR1cm5UeXBlPHR5cGVvZiBwb3J0ci5yZXNvbHZlUG9ydHJDb25maWc+O1xuICBmcnA6IFJldHVyblR5cGU8dHlwZW9mIGZycC5yZXNvbHZlRnJwQ29uZmlnPjtcbn1cblxuLyoqIFJlc29sdmUgQ0xJIGZsYWcgdmFsdWVzIHRocm91Z2ggdGhlIG93bmluZyB0dW5uZWwgYW5kIGF1dGgtZ2F0ZSBjb25maWd1cmF0aW9uIHJ1bGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVUdW5uZWxPcHRpb25zKG9wdGlvbnM6IFR1bm5lbE9wdGlvbnMpOiBSZXNvbHZlZFR1bm5lbE9wdGlvbnMge1xuICAvLyBUaGUgRGF0YWJyaWNrcyBBcHBzIHJ1bnRpbWUgY29udHJhY3Q6IHRoZSBwbGF0Zm9ybSByb3V0ZXMgdG9cbiAgLy8gREFUQUJSSUNLU19BUFBfUE9SVCwgc28gdGhlIFdSQVBQRVIgY2xhaW1zIGl0IGFuZCB0aGUgd3JhcHBlZCBhcHAgaXMgbW92ZWRcbiAgLy8gdG8gYSBwcml2YXRlIG9uZS5cbiAgY29uc3QgcHVibGljUG9ydCA9IGNvbmZpZ1V0aWxzLnBvcnQob3B0aW9ucy5wb3J0LCBcIkRBVEFCUklDS1NfQVBQX1BPUlRcIiwgODAwMCk7XG4gIGNvbnN0IGFwcFBvcnQgPSBjb25maWdVdGlscy5wb3J0KG9wdGlvbnMuYXBwUG9ydCwgXCJBUFBfUE9SVFwiLCAwLCB7IHByZWZpeDogXCJUVU5ORUxcIiB9KTtcbiAgY29uc3QgZ2F0ZUNvbmZpZzogQXV0aEdhdGVDb25maWcgPSB7XG4gICAgYWxsb3c6IG9wdGlvbnMuYWxsb3csXG4gICAgc3ViamVjdDogb3B0aW9ucy5zdWJqZWN0LFxuICAgIGJyYW5kTmFtZTogb3B0aW9ucy5icmFuZE5hbWUsXG4gICAgcGFzc2tleU5hbWVQcmVmaXg6IG9wdGlvbnMucGFzc2tleU5hbWVQcmVmaXgsXG4gICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgIC8vIENvZXJjZWQsIG5vdCByZXNvbHZlZDogdGhlIHBsdWdpbiBvd25zIHRoZSBlbnYgbmFtZSBhbmQgdGhlIGRlZmF1bHQgZm9yXG4gICAgLy8gdGhlc2UsIHNvIHRoZSBmbGFnIGlzIHBhc3NlZCB0aHJvdWdoIGFzIHRoZSBgY29uZmlnYCB2YWx1ZSBpdCBleHBlY3RzIGFuZFxuICAgIC8vIG9ubHkgbmVlZHMgYSBzdHJpbmcgLT4gbnVtYmVyIG51ZGdlIG9uIHRoZSB3YXkuXG4gICAgc2Vzc2lvblR0bFNlY29uZHM6IG9wdGlvbnMuc2Vzc2lvblR0bFNlY29uZHMsXG4gICAgY29kZVR0bFNlY29uZHM6IG9wdGlvbnMuY29kZVR0bFNlY29uZHMsXG4gICAgc2Vzc2lvbkN1dG9mZjogb3B0aW9ucy5zZXNzaW9uQ3V0b2ZmLFxuICAgIHN0b3JhZ2U6IG9wdGlvbnMuc3RvcmFnZSxcbiAgICBzcWxpdGVQYXRoOiBvcHRpb25zLnNxbGl0ZVBhdGgsXG4gICAgZm9yd2FyZEhlYWRlcnM6IG9wdGlvbnMuZm9yd2FyZEhlYWRlcnMsXG4gICAgZ2F0ZVBhdGhzOiBvcHRpb25zLmdhdGVQYXRocyxcbiAgICBpbnNlY3VyZTogb3B0aW9ucy5pbnNlY3VyZSxcbiAgICBwdWJsaWNEb21haW46IG9wdGlvbnMucHVibGljRG9tYWluLFxuICAgIHB1YmxpY0RvbWFpbnM6IG9wdGlvbnMuZnJwUHVibGljRG9tYWluID8gW29wdGlvbnMuZnJwUHVibGljRG9tYWluXSA6IHVuZGVmaW5lZCxcbiAgfTtcbiAgY29uc3QgZ2F0ZSA9IHBsdWdpbi5yZXNvbHZlQXV0aEdhdGVDb25maWcoZ2F0ZUNvbmZpZyk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGludGVyY2VwdG9yLnJlc29sdmVUdW5uZWxUcmFuc3BvcnQob3B0aW9ucy50cmFuc3BvcnQpO1xuICByZXR1cm4ge1xuICAgIHB1YmxpY1BvcnQsXG4gICAgLi4uKGFwcFBvcnQgPiAwID8geyBhcHBQb3J0IH0gOiB7fSksXG4gICAgYmluZEhvc3RzOiBvcHRpb25zLmJpbmRIb3N0cyA/PyBbXSxcbiAgICB0cmFuc3BvcnQsXG4gICAgZ2F0ZUNvbmZpZyxcbiAgICBnYXRlLFxuICAgIHBvcnRyOiBwb3J0ci5yZXNvbHZlUG9ydHJDb25maWcoe1xuICAgICAgcHVibGljRG9tYWluOiBnYXRlLnB1YmxpY0RvbWFpbixcbiAgICAgIHN1YmRvbWFpbjogb3B0aW9ucy5zdWJkb21haW4sXG4gICAgICBwb3J0OiBwdWJsaWNQb3J0LFxuICAgIH0pLFxuICAgIGZycDogZnJwLnJlc29sdmVGcnBDb25maWcoe1xuICAgICAgcHVibGljRG9tYWluOiBvcHRpb25zLmZycFB1YmxpY0RvbWFpbixcbiAgICAgIHNlcnZlcjogb3B0aW9ucy5mcnBTZXJ2ZXIsXG4gICAgICBzZXJ2ZXJQb3J0OiBvcHRpb25zLmZycFNlcnZlclBvcnQsXG4gICAgICBwcm90b2NvbDogb3B0aW9ucy5mcnBQcm90b2NvbCxcbiAgICAgIHRva2VuOiBvcHRpb25zLmZycFRva2VuLFxuICAgICAgcHJveHlOYW1lOiBvcHRpb25zLmZycFByb3h5TmFtZSxcbiAgICAgIHBvcnQ6IHB1YmxpY1BvcnQsXG4gICAgfSksXG4gIH07XG59XG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90dW5uZWwvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BHLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBRXJCLHNCQUFzQixFQUV0QixxQkFBcUIsRUFDckIsa0JBQWtCLEdBQ25CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLElBQUksR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2hHLE1BQU0sSUFBSSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sSUFBSSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFLENBQ25DLENBQUM7S0FDRSxVQUFVLENBQ1QsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUNqRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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Q0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFO1FBQ2xDLFNBQVM7UUFDVCxVQUFVO1FBQ1YsSUFBSTtRQUNKLEtBQUssRUFBRSxrQkFBa0IsQ0FBQztZQUN4QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUM7UUFDRixHQUFHLEVBQUUsZ0JBQWdCLENBQUM7WUFDcEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUztZQUN6QixVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDakMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQzdCLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVk7WUFDL0IsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGbGFnIC0+IGNvbmZpZyAtPiBkZWZhdWx0IHJlc29sdXRpb24gZm9yIGBkYnggdHVubmVsYC5cbiAqXG4gKiBUaGUgcG9pbnQgb2YgdGhpcyBtb2R1bGUgaXMgdGhhdCBpdCBkb2VzIGFsbW9zdCBOT1RISU5HIGl0c2VsZjogZXZlcnkgZ2F0ZVxuICogc2V0dGluZyBpcyBoYW5kZWQgc3RyYWlnaHQgdG8gYEBkYngtdG9vbHMvdHVubmVsYCdzIG93blxuICogYHBsdWdpbi5yZXNvbHZlQXV0aEdhdGVDb25maWdgLCB3aGljaCBpcyB0aGUgc2FtZSBmdW5jdGlvbiB0aGUgaW4tcHJvY2Vzc1xuICogcGx1Z2luIHBhdGggY2FsbHMuIFRoZSBDTEkgdGhlcmVmb3JlIGNhbm5vdCBkcmlmdCBmcm9tIHRoZSBwbHVnaW4gb24gYSBkZWZhdWx0LFxuICogYW4gZW52IG5hbWUsIG9yIGEgY29lcmNpb24gcnVsZSAtIGEgZmxhZyBpcyBqdXN0IGEgdmFsdWUgcGFzc2VkIHdoZXJlIHRoZVxuICogcGx1Z2luJ3MgYGNvbmZpZ2Agb2JqZWN0IHdvdWxkIGdvLCBhbmQgYGNvbmZpZy4qYCBmaWxscyB0aGUgcmVzdCBpbiBmcm9tIHRoZVxuICogZW52aXJvbm1lbnQsIGEgYC5lbnZgIGZpbGUsIG9yIGBkYXRhYnJpY2tzLnltbGAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNvbmZpZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgdGNwUG9ydE9yWmVyb1NjaGVtYSwgZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMsIHBhcnNlTGlzdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICB0eXBlIEF1dGhHYXRlQ29uZmlnLFxuICByZXNvbHZlRnJwQ29uZmlnLFxuICBUdW5uZWxUcmFuc3BvcnRTY2hlbWEsXG4gIHR5cGUgVHVubmVsVHJhbnNwb3J0LFxuICByZXNvbHZlVHVubmVsVHJhbnNwb3J0LFxuICB0eXBlIFJlc29sdmVkQXV0aEdhdGVDb25maWcsXG4gIHJlc29sdmVBdXRoR2F0ZUNvbmZpZyxcbiAgcmVzb2x2ZVBvcnRyQ29uZmlnLFxufSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IHRleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT4gei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuY29uc3QgcG9ydCA9IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PiB0Y3BQb3J0T3JaZXJvU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuY29uc3QgbGlzdCA9IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICB6XG4gICAgLnByZXByb2Nlc3MoXG4gICAgICAodmFsdWUpID0+ICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBwYXJzZUxpc3QodmFsdWUpIDogdmFsdWUpLFxuICAgICAgei5hcnJheSh6LnN0cmluZygpLnRyaW0oKS5taW4oMSkpLFxuICAgIClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5cbmV4cG9ydCBjb25zdCBUdW5uZWxPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0cmFuc3BvcnQ6IFR1bm5lbFRyYW5zcG9ydFNjaGVtYS5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJQdWJsaWMgdHVubmVsIHRyYW5zcG9ydC5cIilcbiAgICAgIC5tZXRhKHsgZW52OiBcIlRVTk5FTF9UUkFOU1BPUlRcIiB9KSxcbiAgICBwdWJsaWNEb21haW46IHRleHQoXCJQdWJsaWMgdHVubmVsIGRvbWFpbi5cIikubWV0YSh7IGVudjogXCJUVU5ORUxfUFVCTElDX0RPTUFJTlwiIH0pLFxuICAgIHN1YmRvbWFpbjogdGV4dChcIlBvcnRyIHN1YmRvbWFpbi5cIiksXG4gICAgcG9ydDogcG9ydChcIlB1YmxpYyBsaXN0ZW5lciBwb3J0LlwiKS5tZXRhKHtcbiAgICAgIGVudjogZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYXBwUG9ydCxcbiAgICB9KSxcbiAgICBhcHBQb3J0OiBwb3J0KFwiUHJpdmF0ZSB3cmFwcGVkIGFwcGxpY2F0aW9uIHBvcnQuXCIpLm1ldGEoe1xuICAgICAgZW52OiBbXCJUVU5ORUxfQVBQX1BPUlRcIiwgXCJBUFBfUE9SVFwiXSxcbiAgICB9KSxcbiAgICBhbGxvdzogbGlzdChcIkVtYWlsIGFsbG93LWxpc3QgcGF0dGVybnMuXCIpLm1ldGEoeyBlbnY6IFwiVFVOTkVMX0FVVEhfQUxMT1dcIiB9KSxcbiAgICBzdWJqZWN0OiB0ZXh0KFwiVmVyaWZpY2F0aW9uIGVtYWlsIHN1YmplY3QuXCIpLm1ldGEoeyBlbnY6IFwiVFVOTkVMX0FVVEhfU1VCSkVDVFwiIH0pLFxuICAgIGJyYW5kTmFtZTogdGV4dChcIlZlcmlmaWNhdGlvbiBlbWFpbCBicmFuZCBuYW1lLlwiKS5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX0JSQU5EX05BTUVcIiB9KSxcbiAgICBwYXNza2V5TmFtZVByZWZpeDogdGV4dChcIlByZWZpeCBmb3IgaHVtYW5pemVkIHR1bm5lbCBwYXNza2V5IG5hbWVzLlwiKS5tZXRhKHtcbiAgICAgIGVudjogXCJUVU5ORUxfQVVUSF9QQVNTS0VZX05BTUVfUFJFRklYXCIsXG4gICAgfSksXG4gICAgbWVzc2FnZTogdGV4dChcIlZlcmlmaWNhdGlvbiBlbWFpbCBtZXNzYWdlLlwiKS5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX01FU1NBR0VcIiB9KSxcbiAgICBzZXNzaW9uVHRsU2Vjb25kczogei5jb2VyY2VcbiAgICAgIC5udW1iZXI8bnVtYmVyPigpXG4gICAgICAucG9zaXRpdmUoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlNlc3Npb24gbGlmZXRpbWUgaW4gc2Vjb25kcy5cIilcbiAgICAgIC5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX1NFU1NJT05fVFRMXCIgfSksXG4gICAgY29kZVR0bFNlY29uZHM6IHouY29lcmNlXG4gICAgICAubnVtYmVyPG51bWJlcj4oKVxuICAgICAgLnBvc2l0aXZlKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJPbmUtdGltZS1jb2RlIGxpZmV0aW1lIGluIHNlY29uZHMuXCIpXG4gICAgICAubWV0YSh7IGVudjogXCJUVU5ORUxfQVVUSF9DT0RFX1RUTFwiIH0pLFxuICAgIHNlc3Npb25DdXRvZmY6IHRleHQoXCJJbnZhbGlkYXRlIHNlc3Npb25zIGlzc3VlZCBiZWZvcmUgdGhpcyB2YWx1ZS5cIikubWV0YSh7XG4gICAgICBlbnY6IFwiVFVOTkVMX0FVVEhfU0VTU0lPTl9DVVRPRkZcIixcbiAgICB9KSxcbiAgICBzdG9yYWdlOiB6XG4gICAgICAuZW51bShbXCJhdXRvXCIsIFwibGFrZWJhc2VcIiwgXCJzcWxpdGVcIl0pXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiQXV0aGVudGljYXRpb24gZGF0YWJhc2UgbW9kZS5cIilcbiAgICAgIC5tZXRhKHsgZW52OiBcIlRVTk5FTF9BVVRIX1NUT1JBR0VcIiB9KSxcbiAgICBzcWxpdGVQYXRoOiB0ZXh0KFwiTG9jYWwgYXV0aGVudGljYXRpb24gU1FMaXRlIGZpbGUuXCIpLm1ldGEoe1xuICAgICAgZW52OiBcIlRVTk5FTF9BVVRIX1NRTElURV9QQVRIXCIsXG4gICAgfSksXG4gICAgZm9yd2FyZEhlYWRlcnM6IGxpc3QoXCJBZGRpdGlvbmFsIGZvcndhcmRlZCByZXF1ZXN0IGhlYWRlciBwYXR0ZXJucy5cIikubWV0YSh7XG4gICAgICBlbnY6IFwiVFVOTkVMX0ZPUldBUkRfSEVBREVSU1wiLFxuICAgIH0pLFxuICAgIGdhdGVQYXRoczogbGlzdChcIkFkZGl0aW9uYWwgcGF0aCBwcmVmaXhlcyByZXF1aXJpbmcgYXV0aGVudGljYXRpb24uXCIpLm1ldGEoe1xuICAgICAgZW52OiBcIlRVTk5FTF9HQVRFX1BBVEhTXCIsXG4gICAgfSksXG4gICAgYmluZEhvc3RzOiBsaXN0KFwiSW50ZXJmYWNlIElQcyB0aGUgZ2F0ZSBsaXN0ZW5zIG9uLlwiKSxcbiAgICBpbnNlY3VyZTogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlJ1biB3aXRob3V0IGFuIGF1dGhlbnRpY2F0aW9uIGdhdGUuXCIpXG4gICAgICAubWV0YSh7IGVudjogXCJUVU5ORUxfSU5TRUNVUkVcIiB9KSxcbiAgICBmcnBTZXJ2ZXI6IHRleHQoXCJGUlAgY29udHJvbCBob3N0LlwiKS5tZXRhKHsgZW52OiBcIkZSUF9TRVJWRVJcIiB9KSxcbiAgICBmcnBQdWJsaWNEb21haW46IHRleHQoXCJGUlAgcHVibGljIEhUVFAgZG9tYWluLlwiKS5tZXRhKHtcbiAgICAgIGVudjogXCJUVU5ORUxfRlJQX1BVQkxJQ19ET01BSU5cIixcbiAgICB9KSxcbiAgICBmcnBTZXJ2ZXJQb3J0OiBwb3J0KFwiRlJQIGNvbnRyb2wgcG9ydC5cIikubWV0YSh7IGVudjogXCJGUlBfU0VSVkVSX1BPUlRcIiB9KSxcbiAgICBmcnBQcm90b2NvbDogdGV4dChcIkZSUCB0cmFuc3BvcnQgcHJvdG9jb2wuXCIpLm1ldGEoeyBlbnY6IFwiRlJQX1BST1RPQ09MXCIgfSksXG4gICAgZnJwVG9rZW46IHRleHQoXCJGUlAgYXV0aGVudGljYXRpb24gdG9rZW4uXCIpLm1ldGEoeyBlbnY6IFtcIkZSUF9UT0tFTlwiLCBcIlRVTk5FTF9UT0tFTlwiXSB9KSxcbiAgICBmcnBQcm94eU5hbWU6IHRleHQoXCJGUlAgcHJveHkgcmVnaXN0cmF0aW9uIG5hbWUuXCIpLm1ldGEoeyBlbnY6IFwiRlJQX1BST1hZX05BTUVcIiB9KSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlB1YmxpYyB0dW5uZWwgd3JhcHBlciBjb21tYW5kLWxpbmUgb3B0aW9ucy5cIik7XG5cbmV4cG9ydCB0eXBlIFR1bm5lbE9wdGlvbnMgPSB6Lm91dHB1dDx0eXBlb2YgVHVubmVsT3B0aW9uc1NjaGVtYT47XG5cbi8qKiBGdWxseSByZXNvbHZlZCBsaXN0ZW5lciwgZ2F0ZSwgYW5kIHRyYW5zcG9ydCBzZXR0aW5ncyB1c2VkIHRvIHN0YXJ0IGEgdHVubmVsLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFR1bm5lbE9wdGlvbnMge1xuICAvKiogVGhlIHBvcnQgdGhlIHdyYXBwZXIgaXRzZWxmIGxpc3RlbnMgb24gLSB3aGF0IHBvcnRyIGZvcndhcmRzIHRvLiAqL1xuICBwdWJsaWNQb3J0OiBudW1iZXI7XG4gIC8qKiBUaGUgcHJpdmF0ZSBwb3J0IHRoZSB3cmFwcGVkIGFwcCBpcyB0b2xkIHRvIGJpbmQuIFVuc2V0IG1lYW5zIFwicGljayBvbmVcIi4gKi9cbiAgYXBwUG9ydD86IG51bWJlcjtcbiAgLyoqIEludGVyZmFjZSBJUHMgdGhlIGdhdGUgbGlzdGVucyBvbi4gRW1wdHkgbWVhbnMgdGhlIGRlZmF1bHQgKDAuMC4wLjApLiAqL1xuICBiaW5kSG9zdHM6IHN0cmluZ1tdO1xuICB0cmFuc3BvcnQ6IFR1bm5lbFRyYW5zcG9ydDtcbiAgLyoqXG4gICAqIFRoZSBnYXRlIGNvbmZpZyBhcyB0aGUgYGF1dGhHYXRlYCBQTFVHSU4gdGFrZXMgaXQgLSBmbGFncyBvbmx5LCBub3RoaW5nXG4gICAqIHJlc29sdmVkLiBQYXNzZWQgc3RyYWlnaHQgdG8gdGhlIHBsdWdpbiBzbyBpdCBhcHBsaWVzIGl0cyBvd24gZmFsbGJhY2tzXG4gICAqIGV4YWN0bHkgb25jZSwgaW4gdGhlIG9uZSBwbGFjZSB0aGF0IG93bnMgdGhlbS5cbiAgICovXG4gIGdhdGVDb25maWc6IEF1dGhHYXRlQ29uZmlnO1xuICAvKiogVGhlIHNhbWUgY29uZmlnIGFmdGVyIHRoZSBwbHVnaW4ncyByZXNvbHV0aW9uLCBmb3IgYHN0YXR1c2AgYW5kIGZvciByb3V0aW5nLiAqL1xuICBnYXRlOiBSZXNvbHZlZEF1dGhHYXRlQ29uZmlnO1xuICBwb3J0cjogUmV0dXJuVHlwZTx0eXBlb2YgcmVzb2x2ZVBvcnRyQ29uZmlnPjtcbiAgZnJwOiBSZXR1cm5UeXBlPHR5cGVvZiByZXNvbHZlRnJwQ29uZmlnPjtcbn1cblxuLyoqIFJlc29sdmUgQ0xJIGZsYWcgdmFsdWVzIHRocm91Z2ggdGhlIG93bmluZyB0dW5uZWwgYW5kIGF1dGgtZ2F0ZSBjb25maWd1cmF0aW9uIHJ1bGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVUdW5uZWxPcHRpb25zKG9wdGlvbnM6IFR1bm5lbE9wdGlvbnMpOiBSZXNvbHZlZFR1bm5lbE9wdGlvbnMge1xuICAvLyBUaGUgRGF0YWJyaWNrcyBBcHBzIHJ1bnRpbWUgY29udHJhY3Q6IHRoZSBwbGF0Zm9ybSByb3V0ZXMgdG9cbiAgLy8gREFUQUJSSUNLU19BUFBfUE9SVCwgc28gdGhlIFdSQVBQRVIgY2xhaW1zIGl0IGFuZCB0aGUgd3JhcHBlZCBhcHAgaXMgbW92ZWRcbiAgLy8gdG8gYSBwcml2YXRlIG9uZS5cbiAgY29uc3QgcHVibGljUG9ydCA9IGNvbmZpZ1V0aWxzLnBvcnQob3B0aW9ucy5wb3J0LCBcIkRBVEFCUklDS1NfQVBQX1BPUlRcIiwgODAwMCk7XG4gIGNvbnN0IGFwcFBvcnQgPSBjb25maWdVdGlscy5wb3J0KG9wdGlvbnMuYXBwUG9ydCwgXCJBUFBfUE9SVFwiLCAwLCB7IHByZWZpeDogXCJUVU5ORUxcIiB9KTtcbiAgY29uc3QgZ2F0ZUNvbmZpZzogQXV0aEdhdGVDb25maWcgPSB7XG4gICAgYWxsb3c6IG9wdGlvbnMuYWxsb3csXG4gICAgc3ViamVjdDogb3B0aW9ucy5zdWJqZWN0LFxuICAgIGJyYW5kTmFtZTogb3B0aW9ucy5icmFuZE5hbWUsXG4gICAgcGFzc2tleU5hbWVQcmVmaXg6IG9wdGlvbnMucGFzc2tleU5hbWVQcmVmaXgsXG4gICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgIC8vIENvZXJjZWQsIG5vdCByZXNvbHZlZDogdGhlIHBsdWdpbiBvd25zIHRoZSBlbnYgbmFtZSBhbmQgdGhlIGRlZmF1bHQgZm9yXG4gICAgLy8gdGhlc2UsIHNvIHRoZSBmbGFnIGlzIHBhc3NlZCB0aHJvdWdoIGFzIHRoZSBgY29uZmlnYCB2YWx1ZSBpdCBleHBlY3RzIGFuZFxuICAgIC8vIG9ubHkgbmVlZHMgYSBzdHJpbmcgLT4gbnVtYmVyIG51ZGdlIG9uIHRoZSB3YXkuXG4gICAgc2Vzc2lvblR0bFNlY29uZHM6IG9wdGlvbnMuc2Vzc2lvblR0bFNlY29uZHMsXG4gICAgY29kZVR0bFNlY29uZHM6IG9wdGlvbnMuY29kZVR0bFNlY29uZHMsXG4gICAgc2Vzc2lvbkN1dG9mZjogb3B0aW9ucy5zZXNzaW9uQ3V0b2ZmLFxuICAgIHN0b3JhZ2U6IG9wdGlvbnMuc3RvcmFnZSxcbiAgICBzcWxpdGVQYXRoOiBvcHRpb25zLnNxbGl0ZVBhdGgsXG4gICAgZm9yd2FyZEhlYWRlcnM6IG9wdGlvbnMuZm9yd2FyZEhlYWRlcnMsXG4gICAgZ2F0ZVBhdGhzOiBvcHRpb25zLmdhdGVQYXRocyxcbiAgICBpbnNlY3VyZTogb3B0aW9ucy5pbnNlY3VyZSxcbiAgICBwdWJsaWNEb21haW46IG9wdGlvbnMucHVibGljRG9tYWluLFxuICAgIHB1YmxpY0RvbWFpbnM6IG9wdGlvbnMuZnJwUHVibGljRG9tYWluID8gW29wdGlvbnMuZnJwUHVibGljRG9tYWluXSA6IHVuZGVmaW5lZCxcbiAgfTtcbiAgY29uc3QgZ2F0ZSA9IHJlc29sdmVBdXRoR2F0ZUNvbmZpZyhnYXRlQ29uZmlnKTtcbiAgY29uc3QgdHJhbnNwb3J0ID0gcmVzb2x2ZVR1bm5lbFRyYW5zcG9ydChvcHRpb25zLnRyYW5zcG9ydCk7XG4gIHJldHVybiB7XG4gICAgcHVibGljUG9ydCxcbiAgICAuLi4oYXBwUG9ydCA+IDAgPyB7IGFwcFBvcnQgfSA6IHt9KSxcbiAgICBiaW5kSG9zdHM6IG9wdGlvbnMuYmluZEhvc3RzID8/IFtdLFxuICAgIHRyYW5zcG9ydCxcbiAgICBnYXRlQ29uZmlnLFxuICAgIGdhdGUsXG4gICAgcG9ydHI6IHJlc29sdmVQb3J0ckNvbmZpZyh7XG4gICAgICBwdWJsaWNEb21haW46IGdhdGUucHVibGljRG9tYWluLFxuICAgICAgc3ViZG9tYWluOiBvcHRpb25zLnN1YmRvbWFpbixcbiAgICAgIHBvcnQ6IHB1YmxpY1BvcnQsXG4gICAgfSksXG4gICAgZnJwOiByZXNvbHZlRnJwQ29uZmlnKHtcbiAgICAgIHB1YmxpY0RvbWFpbjogb3B0aW9ucy5mcnBQdWJsaWNEb21haW4sXG4gICAgICBzZXJ2ZXI6IG9wdGlvbnMuZnJwU2VydmVyLFxuICAgICAgc2VydmVyUG9ydDogb3B0aW9ucy5mcnBTZXJ2ZXJQb3J0LFxuICAgICAgcHJvdG9jb2w6IG9wdGlvbnMuZnJwUHJvdG9jb2wsXG4gICAgICB0b2tlbjogb3B0aW9ucy5mcnBUb2tlbixcbiAgICAgIHByb3h5TmFtZTogb3B0aW9ucy5mcnBQcm94eU5hbWUsXG4gICAgICBwb3J0OiBwdWJsaWNQb3J0LFxuICAgIH0pLFxuICB9O1xufVxuIl19