@dbx-tools/genie 0.9.32 → 0.9.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
6
- export const PACKAGE_VERSION = "0.9.32";
6
+ export const PACKAGE_VERSION = "0.9.36";
7
7
  export * as agentMode from "./src/agent-mode.ts";
8
8
  export * as chat from "./src/chat.ts";
9
9
  export * as space from "./src/space.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
2
- export declare const PACKAGE_VERSION = "0.9.32";
2
+ export declare const PACKAGE_VERSION = "0.9.36";
3
3
  export * as agentMode from "./src/agent-mode.ts";
4
4
  export * as chat from "./src/chat.ts";
5
5
  export * as space from "./src/space.ts";
package/lib/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
5
- export const PACKAGE_VERSION = "0.9.32";
5
+ export const PACKAGE_VERSION = "0.9.36";
6
6
  export * as agentMode from "./src/agent-mode.js";
7
7
  export * as chat from "./src/chat.js";
8
8
  export * as space from "./src/space.js";
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZ2VuaWVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zMlwiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBjaGF0IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBzcGFjZSBmcm9tIFwiLi9zcmMvc3BhY2UudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVBZ2VudE1vZGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDaGF0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgdHlwZSB7IEdldEdlbmllU3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3NwYWNlLnRzXCI7XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZ2VuaWVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zNlwiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBjaGF0IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBzcGFjZSBmcm9tIFwiLi9zcmMvc3BhY2UudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVBZ2VudE1vZGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDaGF0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgdHlwZSB7IEdldEdlbmllU3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3NwYWNlLnRzXCI7XG4iXX0=
package/lib/src/chat.js CHANGED
@@ -267,8 +267,7 @@ export async function* genieEventChat(space_id, content, options) {
267
267
  *
268
268
  * 1. Caller-supplied `options.workspaceClient`.
269
269
  * 2. AppKit's per-request execution-context client inside a request scope.
270
- * 3. Fresh `createWorkspaceClient()` (env-var auth via
271
- * `DATABRICKS_CONFIG_PROFILE` / `DATABRICKS_HOST` / `DATABRICKS_TOKEN`).
270
+ * 3. Fresh native AppKit `createWorkspaceClient()`.
272
271
  *
273
272
  */
274
273
  async function getWorkspaceClient(options) {
@@ -282,4 +281,4 @@ async function getWorkspaceClient(options) {
282
281
  }
283
282
  return createWorkspaceClient();
284
283
  }
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUss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QU87YUFDekIsQ0FBQztZQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUNELFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsT0FBMEI7SUFDMUQsSUFBSSxPQUFPLEVBQUUsZUFBZTtRQUFFLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUM3RCxJQUFJLENBQUM7UUFDSCxPQUFPLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxzRUFBc0U7SUFDeEUsQ0FBQztJQUNELE9BQU8scUJBQXFCLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5pZSBjaGF0IGRyaXZlci5cbiAqXG4gKiBEcml2ZXMgYSBzaW5nbGUgdHVybiBhZ2FpbnN0IGEgR2VuaWUgc3BhY2UgZnJvbSBvbmUgYGNvbnRlbnRgIHN0cmluZztcbiAqIG11bHRpLXR1cm4gY29udmVyc2F0aW9ucyBhcmUgdGhlIGNhbGxlcidzIGpvYiAodGhyZWFkIHRoZSBgY29udmVyc2F0aW9uX2lkYFxuICogcmV0dXJuZWQgb24gZWFjaCBgR2VuaWVNZXNzYWdlYCBiYWNrIGludG8gdGhlIG5leHQgdHVybidzXG4gKiBgb3B0aW9ucy5jb252ZXJzYXRpb25JZGApLlxuICpcbiAqIEFnZW50IE1vZGUgU1NFIGlzIHRoZSBkZWZhdWx0IHRyYW5zcG9ydC4gSXRzIFJlc3BvbnNlcy1zdHlsZSByZWFzb25pbmcsIFNRTCxcbiAqIHF1ZXJ5IG91dHB1dCwgYW5kIGZpbmFsIGFuc3dlciBpdGVtcyBhcmUgcHJvamVjdGVkIGludG8gYEdlbmllTWVzc2FnZWBcbiAqIHNuYXBzaG90czsgYGFnZW50TW9kZTogZmFsc2VgIHJldGFpbnMgdGhlIENvbnZlcnNhdGlvbiBBUEkgcG9sbGluZyBwYXRoLlxuICpcbiAqIFR3byBsYXllcnMgc2VydmUgdHdvIGtpbmRzIG9mIGNvbnN1bWVyLiBUaGUgbG93LWxldmVsIGxheWVyIHlpZWxkcyBldmVyeVxuICogb2JzZXJ2ZWQgYEdlbmllTWVzc2FnZWAgKHZhbGlkYXRlZCBhZ2FpbnN0IGBHZW5pZU1lc3NhZ2VTY2hlbWFgLCBmYWxsaW5nIGJhY2tcbiAqIHRvIHRoZSByYXcgc25hcHNob3Qgb24gYSBzY2hlbWEgbWlzcykgYW5kIG93bnMgY2FuY2VsbGF0aW9uLCBjb252ZXJzYXRpb25cbiAqIHNlZWRpbmcsIGRpc3RpbmN0LWZpbHRlcmluZywgYW5kIFNESyBxdWlya3M7IHJlYWNoIGZvciBpdCB3aGVuIHlvdSB3YW50IHRoZVxuICogcmF3IHN0cmVhbS4gVGhlXG4gKiBoaWdoLWxldmVsIGxheWVyIHdyYXBzIGl0IGFuZCBlbWl0cyBzZW1hbnRpYywgZGVkdXBsaWNhdGVkIGB7IHR5cGUsIHBheWxvYWQgfWBcbiAqIGV2ZW50cyAoc2VlIHtAbGluayBHZW5pZUNoYXRFdmVudH0pLCBhbHdheXMgY2xvc2luZyBhIHN1Y2Nlc3NmdWwgdHVybiB3aXRoIGFcbiAqIHRlcm1pbmFsIGByZXN1bHRgIGV2ZW50IGNhcnJ5aW5nIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYDsgZXJyb3JzIHByb3BhZ2F0ZVxuICogYnkgdGhyb3dpbmcsIHdpdGggbm8gYGVycm9yYCB2YXJpYW50LiBJdGVyYXRpbmcgVUkgLyBhZ2VudCBjb2RlIHRoYXQgd2FudHNcbiAqIGV2ZXJ5IG1lc3NhZ2UgdmVyYmF0aW0gdGFrZXMgdGhlIGxvdy1sZXZlbCBzdHJlYW07IHN1YnNjcmliZXJzIHJlYWN0aW5nIHRvXG4gKiBcIkdlbmllIGlzIHRoaW5raW5nIGFib3V0IFhcIiBvciBcIkdlbmllIHByb2R1Y2VkIHRleHQgWVwiIHRha2UgdGhlIGV2ZW50IGxheWVyLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBjcmVhdGVXb3Jrc3BhY2VDbGllbnQsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIHR5cGUgV29ya3NwYWNlQ2xpZW50LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBhc3luY1V0aWxzLCBlcnJvclV0aWxzLCBsb2csIHR5cGUgUG9sbENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZXZlbnQsIGdlbmllTW9kZWwsIHR5cGUgR2VuaWVDaGF0RXZlbnQsIHR5cGUgR2VuaWVNZXNzYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5cbmltcG9ydCB7IGdlbmllQWdlbnRNb2RlQ2hhdCwgaXNBZ2VudE1vZGVVbmF2YWlsYWJsZSB9IGZyb20gXCIuL2FnZW50LW1vZGUudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllL2NoYXRcIik7XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwb2xsZWQgd2lyZSBzbmFwc2hvdCBhZ2FpbnN0IHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9XG4gKiBhbmQgcmV0dXJuIHRoZSBzY2hlbWEtbm9ybWFsaXplZCBtZXNzYWdlLiBHZW5pZSdzIHdpcmUgb2NjYXNpb25hbGx5IHNoaXBzIGFcbiAqIHNoYXBlIHRoZSAoU0RLLWRlcml2ZWQpIHNjaGVtYSBkb2Vzbid0IG1vZGVsIGV4YWN0bHkgLSBlLmcuIGFuIGVhcmx5IHBvbGxcbiAqIHRoYXQgb21pdHMgdGhlIFNESy1yZXF1aXJlZCBgbWVzc2FnZV9pZGAgLSBzbyBhIG1pc3MgZGVncmFkZXMgdG8gdGhlIHJhd1xuICogc25hcHNob3QgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIGtlZXBpbmcgYSBzaW5nbGUgb2RkIHBvbGwgZnJvbSBhYm9ydGluZyB0aGVcbiAqIHdob2xlIHR1cm4uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlTWVzc2FnZShyYXc6IEdlbmllTWVzc2FnZSk6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IHJlc3VsdCA9IGdlbmllTW9kZWwuR2VuaWVNZXNzYWdlU2NoZW1hLnNhZmVQYXJzZShyYXcpO1xuICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcbiAgbG9nZ2VyLmRlYnVnKFwid2lyZS1tZXNzYWdlOnNjaGVtYS1taXNzXCIsIHtcbiAgICBtZXNzYWdlX2lkOiByYXcubWVzc2FnZV9pZCA/PyByYXcuaWQsXG4gICAgaXNzdWVzOiByZXN1bHQuZXJyb3IuaXNzdWVzLmxlbmd0aCxcbiAgfSk7XG4gIHJldHVybiByYXc7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNoYXJlZCBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IGJvdGgge0BsaW5rIGdlbmllQ2hhdH0gYW5kIHtAbGluayBnZW5pZUV2ZW50Q2hhdH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmllQ2hhdE9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkuIERlZmF1bHRzIHRvIGB0cnVlYDsgc2V0IGBmYWxzZWAgdG9cbiAgICogZm9yY2UgdGhlIGxlZ2FjeSBzdGFydC9jcmVhdGUvZ2V0LW1lc3NhZ2UgcG9sbGluZyBmbG93LlxuICAgKi9cbiAgYWdlbnRNb2RlPzogYm9vbGVhbjtcbiAgLyoqIEFzayBBZ2VudCBNb2RlIHRvIGdlbmVyYXRlIHZpc3VhbGl6YXRpb25zIHdoZW4gYXBwcm9wcmlhdGUuICovXG4gIGVuYWJsZVZpc3VhbGl6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udGludWUgYW4gZXhpc3RpbmcgY29udmVyc2F0aW9uLiBBZ2VudCBNb2RlIHNlbmRzIGl0IGFzXG4gICAqIGBjb252ZXJzYXRpb25faWRgOyBsZWdhY3kgcG9sbGluZyBwYXNzZXMgaXQgdG8gYGNyZWF0ZU1lc3NhZ2VgLiBSZWFkIHRoZSBpZFxuICAgKiBmcm9tIHRoZSBwcmlvciB0dXJuJ3MgdGVybWluYWwgYEdlbmllTWVzc2FnZWAgb3IgYHJlc3VsdGAgZXZlbnQuXG4gICAqL1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGxpY2l0IGBXb3Jrc3BhY2VDbGllbnRgLiBEZWZhdWx0cyB0byBBcHBLaXQncyBwZXItcmVxdWVzdFxuICAgKiBleGVjdXRpb24tY29udGV4dCBjbGllbnQgd2hlbiBBcHBLaXQgaXMgaW5zdGFsbGVkIGFuZCB3ZSdyZSBpbnNpZGUgYVxuICAgKiByZXF1ZXN0OyBmYWxscyBiYWNrIHRvIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGRlZmF1bHQgYXV0aClcbiAgICogb3RoZXJ3aXNlLlxuICAgKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xuICAvKiogTGVnYWN5IGZhbGxiYWNrIGNhZGVuY2UgYmV0d2VlbiBzdWNjZXNzaXZlIGBnZXRNZXNzYWdlYCBjYWxscyAoZGVmYXVsdCA1MDBtcykuICovXG4gIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uLiBBY2NlcHRzIGEgV0hBVFdHIGBBYm9ydFNpZ25hbGAgb3IgYSBmdWxseS1idWlsdCBTREtcbiAgICogYENvbnRleHRgIChzZWUgYGRhdGFicmlja3MuQ29udGV4dExpa2VgKS4gQWJvcnRpbmcgaXQgY2FuY2VscyBldmVyeSBpbi1mbGlnaHRcbiAgICogQWdlbnQgTW9kZSBzdHJlYW0sIFNESyBjYWxsLCBhbmQgdGhlIG5leHQgaW50ZXItcG9sbCBzbGVlcC5cbiAgICovXG4gIGNvbnRleHQ/OiBkYXRhYnJpY2tzLkNvbnRleHRMaWtlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsb3ctbGV2ZWw6IGdlbmllQ2hhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHN0cmVhbSBvZiBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzLlxuICpcbiAqIFR1cm4gbGlmZWN5Y2xlOlxuICpcbiAqICAgLSBBZ2VudCBNb2RlIChkZWZhdWx0KTogUE9TVCBvbmUgUmVzcG9uc2VzLXN0eWxlIG1lc3NhZ2UgdG9cbiAqICAgICBgL2FwaS8yLjAvZ2VuaWUvYWdlbnRzL3tpZH0vcmVzcG9uc2VzYCBhbmQgeWllbGQgcHJvamVjdGVkIHNuYXBzaG90cyBmcm9tXG4gKiAgICAgaXRzIFNTRSBldmVudHMuXG4gKiAgIC0gTGVnYWN5IHBvbGxpbmcgKGBhZ2VudE1vZGU6IGZhbHNlYCk6IHN0YXJ0L2NyZWF0ZSBhIENvbnZlcnNhdGlvbiBBUElcbiAqICAgICBtZXNzYWdlIGFuZCBwb2xsIGBnZXRNZXNzYWdlYCB1bnRpbCB0ZXJtaW5hbC5cbiAqICAgLSBBIHByZS1zdHJlYW0gYEZFQVRVUkVfRElTQUJMRURgIG9yIHByZXZpZXctdG9nZ2xlIHJlc3BvbnNlIGZhbGxzIGJhY2sgdG9cbiAqICAgICBsZWdhY3kgcG9sbGluZyBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIENhbmNlbGxhdGlvbjogYSBzaW5nbGUgaW50ZXJuYWwgYEFib3J0Q29udHJvbGxlcmAgY292ZXJzIHRoZSB3aG9sZSB0dXJuLlxuICogYG9wdGlvbnMuY29udGV4dGAgaXMgdGllZCBpbnRvIHRoYXQgY29udHJvbGxlciBzbyBhbiBleHRlcm5hbCBhYm9ydCB0ZWFyc1xuICogZG93biB0aGUgQWdlbnQgTW9kZSBTU0UgY29ubmVjdGlvbiwgU0RLIGNhbGxzLCBhbmQgYW55IGludGVyLXBvbGwgc2xlZXAuXG4gKiBCcmVha2luZyBvdXQgb2YgdGhlIGBmb3IgYXdhaXRgIGFsc28gaW52b2tlcyB0aGUgQWdlbnQgTW9kZSBzZXJ2ZXItc2lkZVxuICogY2FuY2VsIGVuZHBvaW50IGJlZm9yZSB0aGUgZ2VuZXJhdG9yIGNsb3Nlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2luZ2xlIHR1cm4uXG4gKiBmb3IgYXdhaXQgKGNvbnN0IG0gb2YgZ2VuaWVDaGF0KHNwYWNlSWQsIFwiVG9wIDUgc3RvcmVzP1wiKSkge1xuICogICByZW5kZXIobSk7XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE11bHRpLXR1cm46IGNhbGxlciB0aHJlYWRzIHRoZSBjb252ZXJzYXRpb24gaWQuXG4gKiBsZXQgY29udmVyc2F0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAqIGZvciAoY29uc3QgcXVlc3Rpb24gb2YgcXVlc3Rpb25zKSB7XG4gKiAgIGZvciBhd2FpdCAoY29uc3QgbSBvZiBnZW5pZUNoYXQoc3BhY2VJZCwgcXVlc3Rpb24sIHsgY29udmVyc2F0aW9uSWQgfSkpIHtcbiAqICAgICBjb252ZXJzYXRpb25JZCA9IG0uY29udmVyc2F0aW9uX2lkID8/IGNvbnZlcnNhdGlvbklkO1xuICogICAgIHJlbmRlcihtKTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGdlbmllQ2hhdChcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zPzogR2VuaWVDaGF0T3B0aW9ucyxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllTWVzc2FnZSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB0cnkge1xuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGdldFdvcmtzcGFjZUNsaWVudChvcHRpb25zKTtcbiAgICAvLyBCdWlsZCB0aGUgU0RLIENvbnRleHQgT05DRS4gQnVpbGRpbmcgaXQgaW5zaWRlIHRoZSBwb2xsIHByb2R1Y2VyIHdvdWxkXG4gICAgLy8gcmUtYXR0YWNoIGFuIGFib3J0IGxpc3RlbmVyIHRvIGBvcHRpb25zLmNvbnRleHRgIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uXG4gICAgLy8gKHZpYSBgZGF0YWJyaWNrcy50b0NvbnRleHRgIC0+IGBhc3luYy50aWVBYm9ydFNpZ25hbGApLCBldmVudHVhbGx5IHRyaXBwaW5nXG4gICAgLy8gTm9kZSdzIGBNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdgLlxuICAgIGNvbnN0IGN0eCA9IGRhdGFicmlja3MudG9Db250ZXh0KGNvbnRyb2xsZXIsIG9wdGlvbnM/LmNvbnRleHQpO1xuICAgIGlmIChvcHRpb25zPy5hZ2VudE1vZGUgIT09IGZhbHNlKSB7XG4gICAgICBsZXQgeWllbGRlZCA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBtZXNzYWdlIG9mIGdlbmllQWdlbnRNb2RlQ2hhdChjbGllbnQsIHNwYWNlX2lkLCBjb250ZW50LCB7XG4gICAgICAgICAgLi4uKG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkID8geyBjb252ZXJzYXRpb25JZDogb3B0aW9ucy5jb252ZXJzYXRpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb25zPy5lbmFibGVWaXN1YWxpemF0aW9uID8geyBlbmFibGVWaXN1YWxpemF0aW9uOiB0cnVlIH0gOiB7fSksXG4gICAgICAgICAgY29udGV4dDogY3R4LFxuICAgICAgICB9KSkge1xuICAgICAgICAgIHlpZWxkZWQgPSB0cnVlO1xuICAgICAgICAgIHlpZWxkIHZhbGlkYXRlTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHlpZWxkZWQgfHwgIWlzQWdlbnRNb2RlVW5hdmFpbGFibGUoZXJyKSkgdGhyb3cgZXJyO1xuICAgICAgICBsb2dnZXIud2FybihcImFnZW50LW1vZGU6dW5hdmFpbGFibGUsIGZhbGxpbmcgYmFjayB0byBwb2xsaW5nXCIsIHtcbiAgICAgICAgICBzcGFjZV9pZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3JVdGlscy5lcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBjb252ZXJzYXRpb25JZCA9IG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkO1xuICAgIGxldCBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBvbGxQcm9kdWNlciA9IGFzeW5jIChwb2xsQ3R4OiBQb2xsQ29udGV4dDxHZW5pZU1lc3NhZ2U+KTogUHJvbWlzZTxHZW5pZU1lc3NhZ2U+ID0+IHtcbiAgICAgIGlmICghY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbDogb3BlbiB0aGUgY29udmVyc2F0aW9uLiBSZWZ1c2UgdG8gcmV0cnk6IGlmXG4gICAgICAgIC8vIGBzdGFydENvbnZlcnNhdGlvbmAgcmV0dXJuZWQgYSByZXNwb25zZSB3aXRob3V0IGEgYGNvbnZlcnNhdGlvbl9pZGAsXG4gICAgICAgIC8vIHJldHJ5aW5nIHdvdWxkIGp1c3Qgb3BlbiBjb252ZXJzYXRpb24gYWZ0ZXIgY29udmVyc2F0aW9uLlxuICAgICAgICBpZiAocG9sbEN0eC5hdHRlbXB0ID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmllIGRpZCBub3QgcmV0dXJuIGEgY29udmVyc2F0aW9uIGlkOyByZWZ1c2luZyB0byByZXRyeVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdlbmllLnN0YXJ0Q29udmVyc2F0aW9uKHsgc3BhY2VfaWQsIGNvbnRlbnQgfSwgY3R4KTtcbiAgICAgICAgY29udmVyc2F0aW9uSWQgPSBzdGFydFJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZDtcbiAgICAgICAgbWVzc2FnZUlkID0gc3RhcnRSZXNwb25zZS5tZXNzYWdlX2lkO1xuICAgICAgICByZXR1cm4gc3RhcnRSZXNwb25zZS5tZXNzYWdlITtcbiAgICAgIH1cbiAgICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICAgIC8vIEZpcnN0IHBvbGwgb2YgYSBmb2xsb3ctdXAgdHVybjogYXBwZW5kIHRvIHRoZSBzZWVkZWQgY29udmVyc2F0aW9uLlxuICAgICAgICAvLyBgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2VgIHJldHVybnMgYSBgV2FpdGVyPEdlbmllTWVzc2FnZT5gXG4gICAgICAgIC8vIChgeyAuLi5tZXNzYWdlLCB3YWl0OiBhc3luYyAoKSA9PiAuLi4gfWApLiBTdHJpcCBgd2FpdGAgaGVyZSBzb1xuICAgICAgICAvLyBkb3duc3RyZWFtIHNlcmlhbGl6ZXJzIChlLmcuIHlhbWwuc3RyaW5naWZ5KSBkb24ndCBjaG9rZSBvbiB0aGVcbiAgICAgICAgLy8gQXN5bmNGdW5jdGlvbiB2YWx1ZS5cbiAgICAgICAgY29uc3QgeyB3YWl0OiBfd2FpdCwgLi4uY3JlYXRlUmVzcG9uc2UgfSA9IGF3YWl0IGNsaWVudC5nZW5pZS5jcmVhdGVNZXNzYWdlKFxuICAgICAgICAgIHsgc3BhY2VfaWQsIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsIGNvbnRlbnQgfSxcbiAgICAgICAgICBjdHgsXG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VJZCA9IGNyZWF0ZVJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFN1YnNlcXVlbnQgcG9sbHM6IHJlLWZldGNoIHRoZSBjdXJyZW50IG1lc3NhZ2UgdW50aWwgaXRzIHN0YXR1cyBiZWNvbWVzXG4gICAgICAvLyB0ZXJtaW5hbC5cbiAgICAgIHJldHVybiBjbGllbnQuZ2VuaWUuZ2V0TWVzc2FnZShcbiAgICAgICAge1xuICAgICAgICAgIHNwYWNlX2lkLFxuICAgICAgICAgIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsXG4gICAgICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZUlkLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApO1xuICAgIH07XG5cbiAgICB5aWVsZCogYXN5bmNVdGlscy5wb2xsKFxuICAgICAgYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pID0+IHZhbGlkYXRlTWVzc2FnZShhd2FpdCBwb2xsUHJvZHVjZXIocG9sbEN0eCkpLFxuICAgICAge1xuICAgICAgICBpbnRlcnZhbE1zOiBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyA1MDAsXG4gICAgICAgIC8vIFNraXAgeWllbGRpbmcgaWRlbnRpY2FsIGNvbnNlY3V0aXZlIHNuYXBzaG90czsgR2VuaWUgb2Z0ZW4gcmV0dXJuc1xuICAgICAgICAvLyB0aGUgZXhhY3Qgc2FtZSBwYXlsb2FkIHR3aWNlIGR1cmluZyBxdWlldCBwZXJpb2RzLiBgcG9sbGAgZG9lcyBhIGRlZXBcbiAgICAgICAgLy8gZXF1YWwgb24gdGhlIHByZXZpb3VzIHlpZWxkLlxuICAgICAgICBmaWx0ZXI6IFwiZGlzdGluY3RcIixcbiAgICAgICAgLy8gU3RvcCBhZnRlciB0aGUgdGVybWluYWwgbWVzc2FnZSBpcyB5aWVsZGVkLiBgcG9sbGAgY2hlY2tzIHRoZVxuICAgICAgICAvLyBwcmVkaWNhdGUgQUZURVIgeWllbGRpbmcsIHNvIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIHN0aWxsIHJlYWNoZXMgdGhlXG4gICAgICAgIC8vIGNvbnN1bWVyLlxuICAgICAgICBwcmVkaWNhdGU6IChtKSA9PiAhZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKG0uc3RhdHVzKSxcbiAgICAgICAgLy8gV2FrZSB0aGUgaW50ZXItcG9sbCBzbGVlcCBvbiBhYm9ydCBzbyBhIGBmb3IgYXdhaXRgIGJyZWFrIChvclxuICAgICAgICAvLyBleHRlcm5hbCBhYm9ydCkgdGVhcnMgZG93biBwcm9tcHRseSBpbnN0ZWFkIG9mIHdhaXRpbmcgb3V0IHRoZVxuICAgICAgICAvLyBpbnRlcnZhbC5cbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDYW5jZWxzIGFueSBzdGlsbC1wZW5kaW5nIFNESyBjYWxsIGFuZCB0aGUgaW50ZXItcG9sbCBzbGVlcCB3aGV0aGVyIHdlJ3JlXG4gICAgLy8gdW53aW5kaW5nIGZyb20gYSBub3JtYWwgcmV0dXJuLCBhIGNvbnN1bWVyIGJyZWFrLCBvciBhIHRocm93biBlcnJvci5cbiAgICAvLyBJZGVtcG90ZW50LlxuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhpZ2gtbGV2ZWw6IGdlbmllRXZlbnRDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHR5cGVkIHtAbGluayBHZW5pZUNoYXRFdmVudH1cbiAqIHN0cmVhbS4gRHJpdmVzIHtAbGluayBnZW5pZUNoYXR9IHVuZGVybmVhdGggYW5kIGRlY29yYXRlcyBlYWNoIHNuYXBzaG90IHdpdGhcbiAqIHRoZSBkZXJpdmVkIGV2ZW50cyB0aGUgZmllbGQtbGV2ZWwgZGlmZiBwcm9kdWNlZC4gU3RyZWFtIG9yZGVyOlxuICpcbiAqICAgMS4gYHsgdHlwZTogXCJtZXNzYWdlXCIsIG1lc3NhZ2UgfWAgLSB0aGUgcmF3IGBHZW5pZU1lc3NhZ2VgLCBvbmNlIHBlciBwb2xsXG4gKiAgICAgIHlpZWxkLlxuICogICAyLiBgeyB0eXBlOiBcInF1ZXN0aW9uXCIsIGNvbnRlbnQsIG1lc3NhZ2VfaWQsIC4uLiB9YCBmaXJlcyBleGFjdGx5IG9uY2UsIG9uXG4gKiAgICAgIHRoZSBGSVJTVCBgbWVzc2FnZWAgeWllbGQuIFdlIHJlYWQgYGNvbnRlbnRgIGFuZCBgbWVzc2FnZV9pZGAgc3RyYWlnaHRcbiAqICAgICAgb2ZmIHRoZSBzbmFwc2hvdCBzbyBldmVyeSBkb3duc3RyZWFtIGV2ZW50IGZvciB0aGlzIHR1cm4gc2hhcmVzIHRoZSBzYW1lXG4gKiAgICAgIGBtZXNzYWdlX2lkYCAodGhlIHF1ZXN0aW9uIGluY2x1ZGVkKSAtIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeXRoaW5nXG4gKiAgICAgIGZvciBvbmUgR2VuaWUgY2FsbCB1bmRlciB0aGF0IG9uZSBrZXkuXG4gKiAgIDMuIEFueSBvZiBgc3RhdHVzYCAvIGBhdHRhY2htZW50YCAvIGB0aGlua2luZ2AgLyBgdGV4dGAgLyBgcXVlcnlgIC9cbiAqICAgICAgYHN0YXRlbWVudGAgLyBgcm93c2AgLyBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgdGhlIGRpZmYgYWdhaW5zdCB0aGUgcHJpb3JcbiAqICAgICAgc25hcHNob3QgcHJvZHVjZWQuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYHsgdHlwZTogXCJyZXN1bHRcIiwgLi4uIH1gIGFzIHRoZSBmaW5hbCB5aWVsZC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIGJ5IHRoZSBnZW5lcmF0b3IgdGhyb3dpbmcgLSB0aGVyZSdzIG5vIGBcImVycm9yXCJgIHZhcmlhbnQuXG4gKiBXcmFwIHRoZSBgZm9yIGF3YWl0YCBpbiBgdHJ5L2NhdGNoYCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldnQudHlwZSkge1xuICogICAgIGNhc2UgXCJ0aGlua2luZ1wiOlxuICogICAgICAgY29uc29sZS5sb2coXCJbdGhpbmtpbmddXCIsIGV2dC50aG91Z2h0X3R5cGUsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJ0ZXh0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0ZXh0XVwiLCBldnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIltkb25lXVwiLCBldnQuc3RhdHVzKTtcbiAqICAgICAgIGJyZWFrO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVFdmVudENoYXQoXG4gIHNwYWNlX2lkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdlbmllQ2hhdE9wdGlvbnMsXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUNoYXRFdmVudCwgdm9pZCwgdm9pZD4ge1xuICAvLyBEaWZmIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgdHVybi4gQWx3YXlzIGB1bmRlZmluZWRgIG9uIHRoZSBmaXJzdCBzbmFwc2hvdFxuICAvLyBzbyB0aGUgaW5pdGlhbCBzdGF0dXMgLyBhdHRhY2htZW50cyBlbWl0IGZyZXNoOyB1cGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudFxuICAvLyBzbmFwc2hvdCBhZnRlciBlYWNoIHlpZWxkLlxuICBsZXQgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLy8gVGhlIGBxdWVzdGlvbmAgZXZlbnQgaXMgZGVmZXJyZWQgdG8gdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCBzbyBpdCBjYW5cbiAgLy8gY2FycnkgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCAoc3Vic2NyaWJlcnMgdXNlIGl0IGFzIHRoZSBncm91cGluZyBrZXkgZm9yXG4gIC8vIGV2ZXJ5IGV2ZW50IGluIHRoaXMgdHVybikuIFRoZSBmaXJzdCBzbmFwc2hvdCBpcyB0aGUgZWFybGllc3QgcG9pbnQgdGhhdCBpZFxuICAvLyBleGlzdHMuXG4gIGxldCBxdWVzdGlvbkVtaXR0ZWQgPSBmYWxzZTtcbiAgZm9yIGF3YWl0IChjb25zdCByYXdNZXNzYWdlIG9mIGdlbmllQ2hhdChzcGFjZV9pZCwgY29udGVudCwgb3B0aW9ucykpIHtcbiAgICAvLyBOb3JtYWxpemUgYG1lc3NhZ2VfaWRgIGZyb20gdGhlIGxlZ2FjeSBgaWRgIGZpZWxkIHdoZW4gR2VuaWUncyB3aXJlXG4gICAgLy8gcmVzcG9uc2Ugb25seSBwb3B1bGF0ZXMgb25lIG9mIHRoZW0uIFRoZSBTREsgc2NoZW1hIG1hcmtzIGJvdGggYXNcbiAgICAvLyByZXF1aXJlZCwgYnV0IGluIHByYWN0aWNlIHRoZSBgc3RhcnRDb252ZXJzYXRpb25gIC8gYGNyZWF0ZU1lc3NhZ2VgIGlubmVyXG4gICAgLy8gYG1lc3NhZ2VgIHBheWxvYWQgc29tZXRpbWVzIHNoaXBzIG9ubHkgYGlkYCB3aGlsZSB0aGUgbmV3IGBtZXNzYWdlX2lkYFxuICAgIC8vIGZpZWxkIGxhbmRzIHVuZGVmaW5lZC4gRXZlcnkgZG93bnN0cmVhbSBldmVudCBkZXRlY3RvciBrZXlzIGdyb3VwaW5nIG9mZlxuICAgIC8vIGBtZXNzYWdlX2lkYDsgdGhlIGZhbGxiYWNrIGtlZXBzIG9uZSBHZW5pZSB0dXJuJ3MgZXZlbnRzIGZyb20gc3BsaXR0aW5nXG4gICAgLy8gYWNyb3NzIGFuIGFub24gZ3JvdXAgKyB0aGUgcmVhbC1pZCBncm91cCB3aGVuIHN1YnNjcmliZXJzIGJ1Y2tldCBieVxuICAgIC8vIGBtZXNzYWdlX2lkYC5cbiAgICBjb25zdCBtZXNzYWdlOiBHZW5pZU1lc3NhZ2UgPSByYXdNZXNzYWdlLm1lc3NhZ2VfaWRcbiAgICAgID8gcmF3TWVzc2FnZVxuICAgICAgOiB7IC4uLnJhd01lc3NhZ2UsIG1lc3NhZ2VfaWQ6IHJhd01lc3NhZ2UuaWQgfTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcIm1lc3NhZ2VcIixcbiAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZS5tZXNzYWdlX2lkLFxuICAgICAgbWVzc2FnZSxcbiAgICB9O1xuICAgIGlmICghcXVlc3Rpb25FbWl0dGVkKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIC4uLihtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCA/IHsgY29udmVyc2F0aW9uX2lkOiBtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCB9IDoge30pLFxuICAgICAgICAuLi4obWVzc2FnZS5tZXNzYWdlX2lkID8geyBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQgfSA6IHt9KSxcbiAgICAgICAgY29udGVudDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgfTtcbiAgICAgIHF1ZXN0aW9uRW1pdHRlZCA9IHRydWU7XG4gICAgfVxuICAgIHlpZWxkKiBldmVudC5ldmVudHNGcm9tTWVzc2FnZShtZXNzYWdlLCBwcmV2aW91cywgbWVzc2FnZS5zcGFjZV9pZCk7XG4gICAgY29uc3Qgc3RhdHVzID0gbWVzc2FnZS5zdGF0dXM7XG4gICAgaWYgKGdlbmllTW9kZWwuaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXMpKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicmVzdWx0XCIsXG4gICAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkLFxuICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHByZXZpb3VzID0gbWVzc2FnZTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdvcmtzcGFjZSBjbGllbnQgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFJlc29sdmUgYSBgV29ya3NwYWNlQ2xpZW50YCBpbiB0aGlzIHByZWZlcmVuY2Ugb3JkZXI6XG4gKlxuICogICAxLiBDYWxsZXItc3VwcGxpZWQgYG9wdGlvbnMud29ya3NwYWNlQ2xpZW50YC5cbiAqICAgMi4gQXBwS2l0J3MgcGVyLXJlcXVlc3QgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50IGluc2lkZSBhIHJlcXVlc3Qgc2NvcGUuXG4gKiAgIDMuIEZyZXNoIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGVudi12YXIgYXV0aCB2aWFcbiAqICAgICAgYERBVEFCUklDS1NfQ09ORklHX1BST0ZJTEVgIC8gYERBVEFCUklDS1NfSE9TVGAgLyBgREFUQUJSSUNLU19UT0tFTmApLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUss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QU87YUFDekIsQ0FBQztZQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUNELFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7R0FPRztBQUNILEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxPQUEwQjtJQUMxRCxJQUFJLE9BQU8sRUFBRSxlQUFlO1FBQUUsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQzdELElBQUksQ0FBQztRQUNILE9BQU8sbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtJQUN4RSxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIERyaXZlcyBhIHNpbmdsZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSBmcm9tIG9uZSBgY29udGVudGAgc3RyaW5nO1xuICogbXVsdGktdHVybiBjb252ZXJzYXRpb25zIGFyZSB0aGUgY2FsbGVyJ3Mgam9iICh0aHJlYWQgdGhlIGBjb252ZXJzYXRpb25faWRgXG4gKiByZXR1cm5lZCBvbiBlYWNoIGBHZW5pZU1lc3NhZ2VgIGJhY2sgaW50byB0aGUgbmV4dCB0dXJuJ3NcbiAqIGBvcHRpb25zLmNvbnZlcnNhdGlvbklkYCkuXG4gKlxuICogQWdlbnQgTW9kZSBTU0UgaXMgdGhlIGRlZmF1bHQgdHJhbnNwb3J0LiBJdHMgUmVzcG9uc2VzLXN0eWxlIHJlYXNvbmluZywgU1FMLFxuICogcXVlcnkgb3V0cHV0LCBhbmQgZmluYWwgYW5zd2VyIGl0ZW1zIGFyZSBwcm9qZWN0ZWQgaW50byBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzOyBgYWdlbnRNb2RlOiBmYWxzZWAgcmV0YWlucyB0aGUgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIHBhdGguXG4gKlxuICogVHdvIGxheWVycyBzZXJ2ZSB0d28ga2luZHMgb2YgY29uc3VtZXIuIFRoZSBsb3ctbGV2ZWwgbGF5ZXIgeWllbGRzIGV2ZXJ5XG4gKiBvYnNlcnZlZCBgR2VuaWVNZXNzYWdlYCAodmFsaWRhdGVkIGFnYWluc3QgYEdlbmllTWVzc2FnZVNjaGVtYWAsIGZhbGxpbmcgYmFja1xuICogdG8gdGhlIHJhdyBzbmFwc2hvdCBvbiBhIHNjaGVtYSBtaXNzKSBhbmQgb3ducyBjYW5jZWxsYXRpb24sIGNvbnZlcnNhdGlvblxuICogc2VlZGluZywgZGlzdGluY3QtZmlsdGVyaW5nLCBhbmQgU0RLIHF1aXJrczsgcmVhY2ggZm9yIGl0IHdoZW4geW91IHdhbnQgdGhlXG4gKiByYXcgc3RyZWFtLiBUaGVcbiAqIGhpZ2gtbGV2ZWwgbGF5ZXIgd3JhcHMgaXQgYW5kIGVtaXRzIHNlbWFudGljLCBkZWR1cGxpY2F0ZWQgYHsgdHlwZSwgcGF5bG9hZCB9YFxuICogZXZlbnRzIChzZWUge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSksIGFsd2F5cyBjbG9zaW5nIGEgc3VjY2Vzc2Z1bCB0dXJuIHdpdGggYVxuICogdGVybWluYWwgYHJlc3VsdGAgZXZlbnQgY2FycnlpbmcgdGhlIGZpbmFsIGBHZW5pZU1lc3NhZ2VgOyBlcnJvcnMgcHJvcGFnYXRlXG4gKiBieSB0aHJvd2luZywgd2l0aCBubyBgZXJyb3JgIHZhcmlhbnQuIEl0ZXJhdGluZyBVSSAvIGFnZW50IGNvZGUgdGhhdCB3YW50c1xuICogZXZlcnkgbWVzc2FnZSB2ZXJiYXRpbSB0YWtlcyB0aGUgbG93LWxldmVsIHN0cmVhbTsgc3Vic2NyaWJlcnMgcmVhY3RpbmcgdG9cbiAqIFwiR2VuaWUgaXMgdGhpbmtpbmcgYWJvdXQgWFwiIG9yIFwiR2VuaWUgcHJvZHVjZWQgdGV4dCBZXCIgdGFrZSB0aGUgZXZlbnQgbGF5ZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCxcbiAgZ2V0RXhlY3V0aW9uQ29udGV4dCxcbiAgdHlwZSBXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGRhdGFicmlja3MgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IGFzeW5jVXRpbHMsIGVycm9yVXRpbHMsIGxvZywgdHlwZSBQb2xsQ29udGV4dCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBldmVudCwgZ2VuaWVNb2RlbCwgdHlwZSBHZW5pZUNoYXRFdmVudCwgdHlwZSBHZW5pZU1lc3NhZ2UgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcblxuaW1wb3J0IHsgZ2VuaWVBZ2VudE1vZGVDaGF0LCBpc0FnZW50TW9kZVVuYXZhaWxhYmxlIH0gZnJvbSBcIi4vYWdlbnQtbW9kZS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZ2VuaWUvY2hhdFwiKTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHBvbGxlZCB3aXJlIHNuYXBzaG90IGFnYWluc3Qge0BsaW5rIEdlbmllTWVzc2FnZVNjaGVtYX1cbiAqIGFuZCByZXR1cm4gdGhlIHNjaGVtYS1ub3JtYWxpemVkIG1lc3NhZ2UuIEdlbmllJ3Mgd2lyZSBvY2Nhc2lvbmFsbHkgc2hpcHMgYVxuICogc2hhcGUgdGhlIChTREstZGVyaXZlZCkgc2NoZW1hIGRvZXNuJ3QgbW9kZWwgZXhhY3RseSAtIGUuZy4gYW4gZWFybHkgcG9sbFxuICogdGhhdCBvbWl0cyB0aGUgU0RLLXJlcXVpcmVkIGBtZXNzYWdlX2lkYCAtIHNvIGEgbWlzcyBkZWdyYWRlcyB0byB0aGUgcmF3XG4gKiBzbmFwc2hvdCByYXRoZXIgdGhhbiB0aHJvd2luZywga2VlcGluZyBhIHNpbmdsZSBvZGQgcG9sbCBmcm9tIGFib3J0aW5nIHRoZVxuICogd2hvbGUgdHVybi5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVNZXNzYWdlKHJhdzogR2VuaWVNZXNzYWdlKTogR2VuaWVNZXNzYWdlIHtcbiAgY29uc3QgcmVzdWx0ID0gZ2VuaWVNb2RlbC5HZW5pZU1lc3NhZ2VTY2hlbWEuc2FmZVBhcnNlKHJhdyk7XG4gIGlmIChyZXN1bHQuc3VjY2VzcykgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICBsb2dnZXIuZGVidWcoXCJ3aXJlLW1lc3NhZ2U6c2NoZW1hLW1pc3NcIiwge1xuICAgIG1lc3NhZ2VfaWQ6IHJhdy5tZXNzYWdlX2lkID8/IHJhdy5pZCxcbiAgICBpc3N1ZXM6IHJlc3VsdC5lcnJvci5pc3N1ZXMubGVuZ3RoLFxuICB9KTtcbiAgcmV0dXJuIHJhdztcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2hhcmVkIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIE9wdGlvbnMgYWNjZXB0ZWQgYnkgYm90aCB7QGxpbmsgZ2VuaWVDaGF0fSBhbmQge0BsaW5rIGdlbmllRXZlbnRDaGF0fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuaWVDaGF0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIHN0cmVhbWluZyBHZW5pZSBBZ2VudCBNb2RlIEFQSS4gRGVmYXVsdHMgdG8gYHRydWVgOyBzZXQgYGZhbHNlYCB0b1xuICAgKiBmb3JjZSB0aGUgbGVnYWN5IHN0YXJ0L2NyZWF0ZS9nZXQtbWVzc2FnZSBwb2xsaW5nIGZsb3cuXG4gICAqL1xuICBhZ2VudE1vZGU/OiBib29sZWFuO1xuICAvKiogQXNrIEFnZW50IE1vZGUgdG8gZ2VuZXJhdGUgdmlzdWFsaXphdGlvbnMgd2hlbiBhcHByb3ByaWF0ZS4gKi9cbiAgZW5hYmxlVmlzdWFsaXphdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250aW51ZSBhbiBleGlzdGluZyBjb252ZXJzYXRpb24uIEFnZW50IE1vZGUgc2VuZHMgaXQgYXNcbiAgICogYGNvbnZlcnNhdGlvbl9pZGA7IGxlZ2FjeSBwb2xsaW5nIHBhc3NlcyBpdCB0byBgY3JlYXRlTWVzc2FnZWAuIFJlYWQgdGhlIGlkXG4gICAqIGZyb20gdGhlIHByaW9yIHR1cm4ncyB0ZXJtaW5hbCBgR2VuaWVNZXNzYWdlYCBvciBgcmVzdWx0YCBldmVudC5cbiAgICovXG4gIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogRXhwbGljaXQgYFdvcmtzcGFjZUNsaWVudGAuIERlZmF1bHRzIHRvIEFwcEtpdCdzIHBlci1yZXF1ZXN0XG4gICAqIGV4ZWN1dGlvbi1jb250ZXh0IGNsaWVudCB3aGVuIEFwcEtpdCBpcyBpbnN0YWxsZWQgYW5kIHdlJ3JlIGluc2lkZSBhXG4gICAqIHJlcXVlc3Q7IGZhbGxzIGJhY2sgdG8gYGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpYCAoZGVmYXVsdCBhdXRoKVxuICAgKiBvdGhlcndpc2UuXG4gICAqL1xuICB3b3Jrc3BhY2VDbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQ7XG4gIC8qKiBMZWdhY3kgZmFsbGJhY2sgY2FkZW5jZSBiZXR3ZWVuIHN1Y2Nlc3NpdmUgYGdldE1lc3NhZ2VgIGNhbGxzIChkZWZhdWx0IDUwMG1zKS4gKi9cbiAgcG9sbEludGVydmFsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBjYW5jZWxsYXRpb24uIEFjY2VwdHMgYSBXSEFUV0cgYEFib3J0U2lnbmFsYCBvciBhIGZ1bGx5LWJ1aWx0IFNES1xuICAgKiBgQ29udGV4dGAgKHNlZSBgZGF0YWJyaWNrcy5Db250ZXh0TGlrZWApLiBBYm9ydGluZyBpdCBjYW5jZWxzIGV2ZXJ5IGluLWZsaWdodFxuICAgKiBBZ2VudCBNb2RlIHN0cmVhbSwgU0RLIGNhbGwsIGFuZCB0aGUgbmV4dCBpbnRlci1wb2xsIHNsZWVwLlxuICAgKi9cbiAgY29udGV4dD86IGRhdGFicmlja3MuQ29udGV4dExpa2U7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGxvdy1sZXZlbDogZ2VuaWVDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogT25lIHR1cm4gYWdhaW5zdCBhIEdlbmllIHNwYWNlLCB5aWVsZGVkIGFzIGEgc3RyZWFtIG9mIGBHZW5pZU1lc3NhZ2VgXG4gKiBzbmFwc2hvdHMuXG4gKlxuICogVHVybiBsaWZlY3ljbGU6XG4gKlxuICogICAtIEFnZW50IE1vZGUgKGRlZmF1bHQpOiBQT1NUIG9uZSBSZXNwb25zZXMtc3R5bGUgbWVzc2FnZSB0b1xuICogICAgIGAvYXBpLzIuMC9nZW5pZS9hZ2VudHMve2lkfS9yZXNwb25zZXNgIGFuZCB5aWVsZCBwcm9qZWN0ZWQgc25hcHNob3RzIGZyb21cbiAqICAgICBpdHMgU1NFIGV2ZW50cy5cbiAqICAgLSBMZWdhY3kgcG9sbGluZyAoYGFnZW50TW9kZTogZmFsc2VgKTogc3RhcnQvY3JlYXRlIGEgQ29udmVyc2F0aW9uIEFQSVxuICogICAgIG1lc3NhZ2UgYW5kIHBvbGwgYGdldE1lc3NhZ2VgIHVudGlsIHRlcm1pbmFsLlxuICogICAtIEEgcHJlLXN0cmVhbSBgRkVBVFVSRV9ESVNBQkxFRGAgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2UgZmFsbHMgYmFjayB0b1xuICogICAgIGxlZ2FjeSBwb2xsaW5nIGF1dG9tYXRpY2FsbHkuXG4gKlxuICogQ2FuY2VsbGF0aW9uOiBhIHNpbmdsZSBpbnRlcm5hbCBgQWJvcnRDb250cm9sbGVyYCBjb3ZlcnMgdGhlIHdob2xlIHR1cm4uXG4gKiBgb3B0aW9ucy5jb250ZXh0YCBpcyB0aWVkIGludG8gdGhhdCBjb250cm9sbGVyIHNvIGFuIGV4dGVybmFsIGFib3J0IHRlYXJzXG4gKiBkb3duIHRoZSBBZ2VudCBNb2RlIFNTRSBjb25uZWN0aW9uLCBTREsgY2FsbHMsIGFuZCBhbnkgaW50ZXItcG9sbCBzbGVlcC5cbiAqIEJyZWFraW5nIG91dCBvZiB0aGUgYGZvciBhd2FpdGAgYWxzbyBpbnZva2VzIHRoZSBBZ2VudCBNb2RlIHNlcnZlci1zaWRlXG4gKiBjYW5jZWwgZW5kcG9pbnQgYmVmb3JlIHRoZSBnZW5lcmF0b3IgY2xvc2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTaW5nbGUgdHVybi5cbiAqIGZvciBhd2FpdCAoY29uc3QgbSBvZiBnZW5pZUNoYXQoc3BhY2VJZCwgXCJUb3AgNSBzdG9yZXM/XCIpKSB7XG4gKiAgIHJlbmRlcihtKTtcbiAqIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTXVsdGktdHVybjogY2FsbGVyIHRocmVhZHMgdGhlIGNvbnZlcnNhdGlvbiBpZC5cbiAqIGxldCBjb252ZXJzYXRpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICogZm9yIChjb25zdCBxdWVzdGlvbiBvZiBxdWVzdGlvbnMpIHtcbiAqICAgZm9yIGF3YWl0IChjb25zdCBtIG9mIGdlbmllQ2hhdChzcGFjZUlkLCBxdWVzdGlvbiwgeyBjb252ZXJzYXRpb25JZCB9KSkge1xuICogICAgIGNvbnZlcnNhdGlvbklkID0gbS5jb252ZXJzYXRpb25faWQgPz8gY29udmVyc2F0aW9uSWQ7XG4gKiAgICAgcmVuZGVyKG0pO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVDaGF0KFxuICBzcGFjZV9pZDogc3RyaW5nLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8R2VuaWVNZXNzYWdlLCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnMpO1xuICAgIC8vIEJ1aWxkIHRoZSBTREsgQ29udGV4dCBPTkNFLiBCdWlsZGluZyBpdCBpbnNpZGUgdGhlIHBvbGwgcHJvZHVjZXIgd291bGRcbiAgICAvLyByZS1hdHRhY2ggYW4gYWJvcnQgbGlzdGVuZXIgdG8gYG9wdGlvbnMuY29udGV4dGAgb24gZXZlcnkgcG9sbCBpdGVyYXRpb25cbiAgICAvLyAodmlhIGBkYXRhYnJpY2tzLnRvQ29udGV4dGAgLT4gYGFzeW5jLnRpZUFib3J0U2lnbmFsYCksIGV2ZW50dWFsbHkgdHJpcHBpbmdcbiAgICAvLyBOb2RlJ3MgYE1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ2AuXG4gICAgY29uc3QgY3R4ID0gZGF0YWJyaWNrcy50b0NvbnRleHQoY29udHJvbGxlciwgb3B0aW9ucz8uY29udGV4dCk7XG4gICAgaWYgKG9wdGlvbnM/LmFnZW50TW9kZSAhPT0gZmFsc2UpIHtcbiAgICAgIGxldCB5aWVsZGVkID0gZmFsc2U7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG1lc3NhZ2Ugb2YgZ2VuaWVBZ2VudE1vZGVDaGF0KGNsaWVudCwgc3BhY2VfaWQsIGNvbnRlbnQsIHtcbiAgICAgICAgICAuLi4ob3B0aW9ucz8uY29udmVyc2F0aW9uSWQgPyB7IGNvbnZlcnNhdGlvbklkOiBvcHRpb25zLmNvbnZlcnNhdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbnM/LmVuYWJsZVZpc3VhbGl6YXRpb24gPyB7IGVuYWJsZVZpc3VhbGl6YXRpb246IHRydWUgfSA6IHt9KSxcbiAgICAgICAgICBjb250ZXh0OiBjdHgsXG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgeWllbGRlZCA9IHRydWU7XG4gICAgICAgICAgeWllbGQgdmFsaWRhdGVNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoeWllbGRlZCB8fCAhaXNBZ2VudE1vZGVVbmF2YWlsYWJsZShlcnIpKSB0aHJvdyBlcnI7XG4gICAgICAgIGxvZ2dlci53YXJuKFwiYWdlbnQtbW9kZTp1bmF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIHBvbGxpbmdcIiwge1xuICAgICAgICAgIHNwYWNlX2lkLFxuICAgICAgICAgIGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNvbnZlcnNhdGlvbklkID0gb3B0aW9ucz8uY29udmVyc2F0aW9uSWQ7XG4gICAgbGV0IG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcG9sbFByb2R1Y2VyID0gYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pOiBQcm9taXNlPEdlbmllTWVzc2FnZT4gPT4ge1xuICAgICAgaWYgKCFjb252ZXJzYXRpb25JZCkge1xuICAgICAgICAvLyBGaXJzdCBwb2xsOiBvcGVuIHRoZSBjb252ZXJzYXRpb24uIFJlZnVzZSB0byByZXRyeTogaWZcbiAgICAgICAgLy8gYHN0YXJ0Q29udmVyc2F0aW9uYCByZXR1cm5lZCBhIHJlc3BvbnNlIHdpdGhvdXQgYSBgY29udmVyc2F0aW9uX2lkYCxcbiAgICAgICAgLy8gcmV0cnlpbmcgd291bGQganVzdCBvcGVuIGNvbnZlcnNhdGlvbiBhZnRlciBjb252ZXJzYXRpb24uXG4gICAgICAgIGlmIChwb2xsQ3R4LmF0dGVtcHQgPiAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuaWUgZGlkIG5vdCByZXR1cm4gYSBjb252ZXJzYXRpb24gaWQ7IHJlZnVzaW5nIHRvIHJldHJ5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0UmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2VuaWUuc3RhcnRDb252ZXJzYXRpb24oeyBzcGFjZV9pZCwgY29udGVudCB9LCBjdHgpO1xuICAgICAgICBjb252ZXJzYXRpb25JZCA9IHN0YXJ0UmVzcG9uc2UuY29udmVyc2F0aW9uX2lkO1xuICAgICAgICBtZXNzYWdlSWQgPSBzdGFydFJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBzdGFydFJlc3BvbnNlLm1lc3NhZ2UhO1xuICAgICAgfVxuICAgICAgaWYgKCFtZXNzYWdlSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbCBvZiBhIGZvbGxvdy11cCB0dXJuOiBhcHBlbmQgdG8gdGhlIHNlZWRlZCBjb252ZXJzYXRpb24uXG4gICAgICAgIC8vIGBjbGllbnQuZ2VuaWUuY3JlYXRlTWVzc2FnZWAgcmV0dXJucyBhIGBXYWl0ZXI8R2VuaWVNZXNzYWdlPmBcbiAgICAgICAgLy8gKGB7IC4uLm1lc3NhZ2UsIHdhaXQ6IGFzeW5jICgpID0+IC4uLiB9YCkuIFN0cmlwIGB3YWl0YCBoZXJlIHNvXG4gICAgICAgIC8vIGRvd25zdHJlYW0gc2VyaWFsaXplcnMgKGUuZy4geWFtbC5zdHJpbmdpZnkpIGRvbid0IGNob2tlIG9uIHRoZVxuICAgICAgICAvLyBBc3luY0Z1bmN0aW9uIHZhbHVlLlxuICAgICAgICBjb25zdCB7IHdhaXQ6IF93YWl0LCAuLi5jcmVhdGVSZXNwb25zZSB9ID0gYXdhaXQgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2UoXG4gICAgICAgICAgeyBzcGFjZV9pZCwgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCwgY29udGVudCB9LFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUlkID0gY3JlYXRlUmVzcG9uc2UubWVzc2FnZV9pZDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgLy8gU3Vic2VxdWVudCBwb2xsczogcmUtZmV0Y2ggdGhlIGN1cnJlbnQgbWVzc2FnZSB1bnRpbCBpdHMgc3RhdHVzIGJlY29tZXNcbiAgICAgIC8vIHRlcm1pbmFsLlxuICAgICAgcmV0dXJuIGNsaWVudC5nZW5pZS5nZXRNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgc3BhY2VfaWQsXG4gICAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIHlpZWxkKiBhc3luY1V0aWxzLnBvbGwoXG4gICAgICBhc3luYyAocG9sbEN0eDogUG9sbENvbnRleHQ8R2VuaWVNZXNzYWdlPikgPT4gdmFsaWRhdGVNZXNzYWdlKGF3YWl0IHBvbGxQcm9kdWNlcihwb2xsQ3R4KSksXG4gICAgICB7XG4gICAgICAgIGludGVydmFsTXM6IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IDUwMCxcbiAgICAgICAgLy8gU2tpcCB5aWVsZGluZyBpZGVudGljYWwgY29uc2VjdXRpdmUgc25hcHNob3RzOyBHZW5pZSBvZnRlbiByZXR1cm5zXG4gICAgICAgIC8vIHRoZSBleGFjdCBzYW1lIHBheWxvYWQgdHdpY2UgZHVyaW5nIHF1aWV0IHBlcmlvZHMuIGBwb2xsYCBkb2VzIGEgZGVlcFxuICAgICAgICAvLyBlcXVhbCBvbiB0aGUgcHJldmlvdXMgeWllbGQuXG4gICAgICAgIGZpbHRlcjogXCJkaXN0aW5jdFwiLFxuICAgICAgICAvLyBTdG9wIGFmdGVyIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIGlzIHlpZWxkZWQuIGBwb2xsYCBjaGVja3MgdGhlXG4gICAgICAgIC8vIHByZWRpY2F0ZSBBRlRFUiB5aWVsZGluZywgc28gdGhlIHRlcm1pbmFsIG1lc3NhZ2Ugc3RpbGwgcmVhY2hlcyB0aGVcbiAgICAgICAgLy8gY29uc3VtZXIuXG4gICAgICAgIHByZWRpY2F0ZTogKG0pID0+ICFnZW5pZU1vZGVsLmlzVGVybWluYWxTdGF0dXMobS5zdGF0dXMpLFxuICAgICAgICAvLyBXYWtlIHRoZSBpbnRlci1wb2xsIHNsZWVwIG9uIGFib3J0IHNvIGEgYGZvciBhd2FpdGAgYnJlYWsgKG9yXG4gICAgICAgIC8vIGV4dGVybmFsIGFib3J0KSB0ZWFycyBkb3duIHByb21wdGx5IGluc3RlYWQgb2Ygd2FpdGluZyBvdXQgdGhlXG4gICAgICAgIC8vIGludGVydmFsLlxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIENhbmNlbHMgYW55IHN0aWxsLXBlbmRpbmcgU0RLIGNhbGwgYW5kIHRoZSBpbnRlci1wb2xsIHNsZWVwIHdoZXRoZXIgd2UncmVcbiAgICAvLyB1bndpbmRpbmcgZnJvbSBhIG5vcm1hbCByZXR1cm4sIGEgY29uc3VtZXIgYnJlYWssIG9yIGEgdGhyb3duIGVycm9yLlxuICAgIC8vIElkZW1wb3RlbnQuXG4gICAgY29udHJvbGxlci5hYm9ydCgpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGlnaC1sZXZlbDogZ2VuaWVFdmVudENoYXQgLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogT25lIHR1cm4gYWdhaW5zdCBhIEdlbmllIHNwYWNlLCB5aWVsZGVkIGFzIGEgdHlwZWQge0BsaW5rIEdlbmllQ2hhdEV2ZW50fVxuICogc3RyZWFtLiBEcml2ZXMge0BsaW5rIGdlbmllQ2hhdH0gdW5kZXJuZWF0aCBhbmQgZGVjb3JhdGVzIGVhY2ggc25hcHNob3Qgd2l0aFxuICogdGhlIGRlcml2ZWQgZXZlbnRzIHRoZSBmaWVsZC1sZXZlbCBkaWZmIHByb2R1Y2VkLiBTdHJlYW0gb3JkZXI6XG4gKlxuICogICAxLiBgeyB0eXBlOiBcIm1lc3NhZ2VcIiwgbWVzc2FnZSB9YCAtIHRoZSByYXcgYEdlbmllTWVzc2FnZWAsIG9uY2UgcGVyIHBvbGxcbiAqICAgICAgeWllbGQuXG4gKiAgIDIuIGB7IHR5cGU6IFwicXVlc3Rpb25cIiwgY29udGVudCwgbWVzc2FnZV9pZCwgLi4uIH1gIGZpcmVzIGV4YWN0bHkgb25jZSwgb25cbiAqICAgICAgdGhlIEZJUlNUIGBtZXNzYWdlYCB5aWVsZC4gV2UgcmVhZCBgY29udGVudGAgYW5kIGBtZXNzYWdlX2lkYCBzdHJhaWdodFxuICogICAgICBvZmYgdGhlIHNuYXBzaG90IHNvIGV2ZXJ5IGRvd25zdHJlYW0gZXZlbnQgZm9yIHRoaXMgdHVybiBzaGFyZXMgdGhlIHNhbWVcbiAqICAgICAgYG1lc3NhZ2VfaWRgICh0aGUgcXVlc3Rpb24gaW5jbHVkZWQpIC0gc3Vic2NyaWJlcnMgY2FuIGdyb3VwIGV2ZXJ5dGhpbmdcbiAqICAgICAgZm9yIG9uZSBHZW5pZSBjYWxsIHVuZGVyIHRoYXQgb25lIGtleS5cbiAqICAgMy4gQW55IG9mIGBzdGF0dXNgIC8gYGF0dGFjaG1lbnRgIC8gYHRoaW5raW5nYCAvIGB0ZXh0YCAvIGBxdWVyeWAgL1xuICogICAgICBgc3RhdGVtZW50YCAvIGByb3dzYCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYCB0aGUgZGlmZiBhZ2FpbnN0IHRoZSBwcmlvclxuICogICAgICBzbmFwc2hvdCBwcm9kdWNlZC5cbiAqICAgNC4gT24gdGhlIHRlcm1pbmFsIHNuYXBzaG90LCBgeyB0eXBlOiBcInJlc3VsdFwiLCAuLi4gfWAgYXMgdGhlIGZpbmFsIHlpZWxkLlxuICpcbiAqIEVycm9ycyBwcm9wYWdhdGUgYnkgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAtIHRoZXJlJ3Mgbm8gYFwiZXJyb3JcImAgdmFyaWFudC5cbiAqIFdyYXAgdGhlIGBmb3IgYXdhaXRgIGluIGB0cnkvY2F0Y2hgIGlmIHlvdSBuZWVkIHRvIGhhbmRsZSBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9yIGF3YWl0IChjb25zdCBldnQgb2YgZ2VuaWVFdmVudENoYXQoc3BhY2VJZCwgXCJUb3Agc3RvcmVzP1wiKSkge1xuICogICBzd2l0Y2ggKGV2dC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0aGlua2luZ11cIiwgZXZ0LnRob3VnaHRfdHlwZSwgZXZ0LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInRleHRcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKFwiW3RleHRdXCIsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJyZXN1bHRcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKFwiW2RvbmVdXCIsIGV2dC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBnZW5pZUV2ZW50Q2hhdChcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zPzogR2VuaWVDaGF0T3B0aW9ucyxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllQ2hhdEV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gIC8vIERpZmYgc291cmNlIGZvciB0aGUgY3VycmVudCB0dXJuLiBBbHdheXMgYHVuZGVmaW5lZGAgb24gdGhlIGZpcnN0IHNuYXBzaG90XG4gIC8vIHNvIHRoZSBpbml0aWFsIHN0YXR1cyAvIGF0dGFjaG1lbnRzIGVtaXQgZnJlc2g7IHVwZGF0ZWQgdG8gdGhlIG1vc3QgcmVjZW50XG4gIC8vIHNuYXBzaG90IGFmdGVyIGVhY2ggeWllbGQuXG4gIGxldCBwcmV2aW91czogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvLyBUaGUgYHF1ZXN0aW9uYCBldmVudCBpcyBkZWZlcnJlZCB0byB0aGUgZmlyc3QgYG1lc3NhZ2VgIHlpZWxkIHNvIGl0IGNhblxuICAvLyBjYXJyeSB0aGUgYXNzaWduZWQgYG1lc3NhZ2VfaWRgIChzdWJzY3JpYmVycyB1c2UgaXQgYXMgdGhlIGdyb3VwaW5nIGtleSBmb3JcbiAgLy8gZXZlcnkgZXZlbnQgaW4gdGhpcyB0dXJuKS4gVGhlIGZpcnN0IHNuYXBzaG90IGlzIHRoZSBlYXJsaWVzdCBwb2ludCB0aGF0IGlkXG4gIC8vIGV4aXN0cy5cbiAgbGV0IHF1ZXN0aW9uRW1pdHRlZCA9IGZhbHNlO1xuICBmb3IgYXdhaXQgKGNvbnN0IHJhd01lc3NhZ2Ugb2YgZ2VuaWVDaGF0KHNwYWNlX2lkLCBjb250ZW50LCBvcHRpb25zKSkge1xuICAgIC8vIE5vcm1hbGl6ZSBgbWVzc2FnZV9pZGAgZnJvbSB0aGUgbGVnYWN5IGBpZGAgZmllbGQgd2hlbiBHZW5pZSdzIHdpcmVcbiAgICAvLyByZXNwb25zZSBvbmx5IHBvcHVsYXRlcyBvbmUgb2YgdGhlbS4gVGhlIFNESyBzY2hlbWEgbWFya3MgYm90aCBhc1xuICAgIC8vIHJlcXVpcmVkLCBidXQgaW4gcHJhY3RpY2UgdGhlIGBzdGFydENvbnZlcnNhdGlvbmAgLyBgY3JlYXRlTWVzc2FnZWAgaW5uZXJcbiAgICAvLyBgbWVzc2FnZWAgcGF5bG9hZCBzb21ldGltZXMgc2hpcHMgb25seSBgaWRgIHdoaWxlIHRoZSBuZXcgYG1lc3NhZ2VfaWRgXG4gICAgLy8gZmllbGQgbGFuZHMgdW5kZWZpbmVkLiBFdmVyeSBkb3duc3RyZWFtIGV2ZW50IGRldGVjdG9yIGtleXMgZ3JvdXBpbmcgb2ZmXG4gICAgLy8gYG1lc3NhZ2VfaWRgOyB0aGUgZmFsbGJhY2sga2VlcHMgb25lIEdlbmllIHR1cm4ncyBldmVudHMgZnJvbSBzcGxpdHRpbmdcbiAgICAvLyBhY3Jvc3MgYW4gYW5vbiBncm91cCArIHRoZSByZWFsLWlkIGdyb3VwIHdoZW4gc3Vic2NyaWJlcnMgYnVja2V0IGJ5XG4gICAgLy8gYG1lc3NhZ2VfaWRgLlxuICAgIGNvbnN0IG1lc3NhZ2U6IEdlbmllTWVzc2FnZSA9IHJhd01lc3NhZ2UubWVzc2FnZV9pZFxuICAgICAgPyByYXdNZXNzYWdlXG4gICAgICA6IHsgLi4ucmF3TWVzc2FnZSwgbWVzc2FnZV9pZDogcmF3TWVzc2FnZS5pZCB9O1xuICAgIHlpZWxkIHtcbiAgICAgIHR5cGU6IFwibWVzc2FnZVwiLFxuICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICBtZXNzYWdlLFxuICAgIH07XG4gICAgaWYgKCFxdWVzdGlvbkVtaXR0ZWQpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgdHlwZTogXCJxdWVzdGlvblwiLFxuICAgICAgICBzcGFjZV9pZDogbWVzc2FnZS5zcGFjZV9pZCxcbiAgICAgICAgLi4uKG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkID8geyBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZXNzYWdlLm1lc3NhZ2VfaWQgPyB7IG1lc3NhZ2VfaWQ6IG1lc3NhZ2UubWVzc2FnZV9pZCB9IDoge30pLFxuICAgICAgICBjb250ZW50OiBtZXNzYWdlLmNvbnRlbnQsXG4gICAgICB9O1xuICAgICAgcXVlc3Rpb25FbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgeWllbGQqIGV2ZW50LmV2ZW50c0Zyb21NZXNzYWdlKG1lc3NhZ2UsIHByZXZpb3VzLCBtZXNzYWdlLnNwYWNlX2lkKTtcbiAgICBjb25zdCBzdGF0dXMgPSBtZXNzYWdlLnN0YXR1cztcbiAgICBpZiAoZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKHN0YXR1cykpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgdHlwZTogXCJyZXN1bHRcIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIGNvbnZlcnNhdGlvbl9pZDogbWVzc2FnZS5jb252ZXJzYXRpb25faWQsXG4gICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UubWVzc2FnZV9pZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcHJldmlvdXMgPSBtZXNzYWdlO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gd29ya3NwYWNlIGNsaWVudCBoZWxwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogUmVzb2x2ZSBhIGBXb3Jrc3BhY2VDbGllbnRgIGluIHRoaXMgcHJlZmVyZW5jZSBvcmRlcjpcbiAqXG4gKiAgIDEuIENhbGxlci1zdXBwbGllZCBgb3B0aW9ucy53b3Jrc3BhY2VDbGllbnRgLlxuICogICAyLiBBcHBLaXQncyBwZXItcmVxdWVzdCBleGVjdXRpb24tY29udGV4dCBjbGllbnQgaW5zaWRlIGEgcmVxdWVzdCBzY29wZS5cbiAqICAgMy4gRnJlc2ggbmF0aXZlIEFwcEtpdCBgY3JlYXRlV29ya3NwYWNlQ2xpZW50KClgLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
package/package.json CHANGED
@@ -19,15 +19,14 @@
19
19
  "projen": "projen"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/bun": "1.3.14",
23
22
  "@types/node": "^24.6.0",
24
23
  "typescript": "^5.9.3"
25
24
  },
26
25
  "dependencies": {
27
26
  "@databricks/appkit": "0.81.0",
28
- "@dbx-tools/appkit": "^0.9.32",
29
- "@dbx-tools/shared-core": "^0.9.32",
30
- "@dbx-tools/shared-genie": "^0.9.32"
27
+ "@dbx-tools/appkit": "^0.9.36",
28
+ "@dbx-tools/shared-core": "^0.9.36",
29
+ "@dbx-tools/shared-genie": "^0.9.36"
31
30
  },
32
31
  "main": "./lib/index.js",
33
32
  "license": "Apache-2.0",
@@ -40,17 +39,46 @@
40
39
  "types": "./lib/index.d.ts",
41
40
  "default": "./lib/index.js"
42
41
  },
42
+ "./agent-mode": {
43
+ "types": "./lib/src/agent-mode.d.ts",
44
+ "default": "./lib/src/agent-mode.js"
45
+ },
46
+ "./chat": {
47
+ "types": "./lib/src/chat.d.ts",
48
+ "default": "./lib/src/chat.js"
49
+ },
50
+ "./space": {
51
+ "types": "./lib/src/space.d.ts",
52
+ "default": "./lib/src/space.js"
53
+ },
43
54
  "./package.json": "./package.json"
44
55
  }
45
56
  },
46
- "version": "0.9.32",
57
+ "version": "0.9.36",
47
58
  "types": "./lib/index.d.ts",
59
+ "dbxToolsConfig": {
60
+ "tags": [
61
+ "node"
62
+ ]
63
+ },
48
64
  "type": "module",
49
65
  "exports": {
50
66
  ".": {
51
67
  "types": "./lib/index.d.ts",
52
68
  "default": "./lib/index.js"
53
69
  },
70
+ "./agent-mode": {
71
+ "types": "./lib/src/agent-mode.d.ts",
72
+ "default": "./lib/src/agent-mode.js"
73
+ },
74
+ "./chat": {
75
+ "types": "./lib/src/chat.d.ts",
76
+ "default": "./lib/src/chat.js"
77
+ },
78
+ "./space": {
79
+ "types": "./lib/src/space.d.ts",
80
+ "default": "./lib/src/space.js"
81
+ },
54
82
  "./package.json": "./package.json"
55
83
  },
56
84
  "files": [
@@ -58,10 +86,5 @@
58
86
  "src",
59
87
  "lib"
60
88
  ],
61
- "dbxToolsConfig": {
62
- "tags": [
63
- "node"
64
- ]
65
- },
66
89
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\"."
67
90
  }
package/src/chat.ts CHANGED
@@ -330,8 +330,7 @@ export async function* genieEventChat(
330
330
  *
331
331
  * 1. Caller-supplied `options.workspaceClient`.
332
332
  * 2. AppKit's per-request execution-context client inside a request scope.
333
- * 3. Fresh `createWorkspaceClient()` (env-var auth via
334
- * `DATABRICKS_CONFIG_PROFILE` / `DATABRICKS_HOST` / `DATABRICKS_TOKEN`).
333
+ * 3. Fresh native AppKit `createWorkspaceClient()`.
335
334
  *
336
335
  */
337
336
  async function getWorkspaceClient(options?: GenieChatOptions): Promise<WorkspaceClient> {