@cubist-labs/cubesigner-sdk 0.2.24 → 0.3.1

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 (147) hide show
  1. package/README.md +30 -28
  2. package/dist/cjs/package.json +41 -0
  3. package/dist/cjs/spec/env/beta.json +9 -0
  4. package/dist/cjs/spec/env/gamma.json +9 -0
  5. package/dist/cjs/spec/env/prod.json +9 -0
  6. package/dist/cjs/src/api.d.ts +634 -0
  7. package/dist/cjs/src/api.js +1309 -0
  8. package/dist/cjs/src/client.d.ts +575 -0
  9. package/dist/cjs/src/client.js +378 -0
  10. package/dist/cjs/src/env.d.ts +15 -0
  11. package/dist/cjs/src/env.js +35 -0
  12. package/dist/cjs/src/error.d.ts +29 -0
  13. package/dist/cjs/src/error.js +36 -0
  14. package/dist/cjs/src/events.d.ts +84 -0
  15. package/dist/cjs/src/events.js +195 -0
  16. package/dist/cjs/src/index.d.ts +203 -0
  17. package/dist/cjs/src/index.js +298 -0
  18. package/dist/cjs/src/key.d.ts +152 -0
  19. package/dist/cjs/src/key.js +242 -0
  20. package/dist/{src/fido.d.ts → cjs/src/mfa.d.ts} +33 -15
  21. package/dist/cjs/src/mfa.js +169 -0
  22. package/dist/cjs/src/org.d.ts +99 -0
  23. package/dist/cjs/src/org.js +95 -0
  24. package/dist/cjs/src/paginator.d.ts +76 -0
  25. package/dist/cjs/src/paginator.js +99 -0
  26. package/dist/cjs/src/response.d.ts +101 -0
  27. package/dist/cjs/src/response.js +164 -0
  28. package/dist/cjs/src/role.d.ts +283 -0
  29. package/dist/cjs/src/role.js +253 -0
  30. package/dist/cjs/src/schema.d.ts +6209 -0
  31. package/dist/cjs/src/schema.js +7 -0
  32. package/dist/cjs/src/schema_types.d.ts +113 -0
  33. package/dist/cjs/src/schema_types.js +3 -0
  34. package/dist/cjs/src/session/session_storage.d.ts +27 -0
  35. package/dist/cjs/src/session/session_storage.js +47 -0
  36. package/dist/cjs/src/session/signer_session_manager.d.ts +125 -0
  37. package/dist/cjs/src/session/signer_session_manager.js +239 -0
  38. package/dist/cjs/src/signer_session.d.ts +41 -0
  39. package/dist/cjs/src/signer_session.js +77 -0
  40. package/dist/cjs/src/user_export.d.ts +52 -0
  41. package/dist/cjs/src/user_export.js +129 -0
  42. package/dist/cjs/src/util.d.ts +56 -0
  43. package/dist/cjs/src/util.js +86 -0
  44. package/dist/esm/package.json +41 -0
  45. package/dist/esm/spec/env/beta.json +9 -0
  46. package/dist/esm/spec/env/gamma.json +9 -0
  47. package/dist/esm/spec/env/prod.json +9 -0
  48. package/dist/esm/src/api.d.ts +634 -0
  49. package/dist/esm/src/api.js +1299 -0
  50. package/dist/esm/src/client.d.ts +575 -0
  51. package/dist/esm/src/client.js +374 -0
  52. package/dist/esm/src/env.d.ts +15 -0
  53. package/dist/esm/src/env.js +9 -0
  54. package/dist/esm/src/error.d.ts +29 -0
  55. package/dist/esm/src/error.js +31 -0
  56. package/dist/esm/src/events.d.ts +84 -0
  57. package/dist/esm/src/events.js +189 -0
  58. package/dist/esm/src/index.d.ts +203 -0
  59. package/dist/esm/src/index.js +276 -0
  60. package/dist/esm/src/key.d.ts +152 -0
  61. package/dist/esm/src/key.js +236 -0
  62. package/dist/esm/src/mfa.d.ts +94 -0
  63. package/dist/esm/src/mfa.js +163 -0
  64. package/dist/esm/src/org.d.ts +99 -0
  65. package/dist/esm/src/org.js +91 -0
  66. package/dist/esm/src/paginator.d.ts +76 -0
  67. package/dist/esm/src/paginator.js +94 -0
  68. package/dist/esm/src/response.d.ts +101 -0
  69. package/dist/esm/src/response.js +159 -0
  70. package/dist/esm/src/role.d.ts +283 -0
  71. package/dist/esm/src/role.js +248 -0
  72. package/dist/esm/src/schema.d.ts +6209 -0
  73. package/dist/esm/src/schema.js +6 -0
  74. package/dist/esm/src/schema_types.d.ts +113 -0
  75. package/dist/esm/src/schema_types.js +2 -0
  76. package/dist/esm/src/session/session_storage.d.ts +27 -0
  77. package/dist/esm/src/session/session_storage.js +43 -0
  78. package/dist/esm/src/session/signer_session_manager.d.ts +125 -0
  79. package/dist/esm/src/session/signer_session_manager.js +235 -0
  80. package/dist/esm/src/signer_session.d.ts +41 -0
  81. package/dist/esm/src/signer_session.js +72 -0
  82. package/dist/esm/src/user_export.d.ts +52 -0
  83. package/dist/esm/src/user_export.js +99 -0
  84. package/dist/esm/src/util.d.ts +56 -0
  85. package/dist/esm/src/util.js +76 -0
  86. package/dist/package.json +13 -45
  87. package/dist/src/api.d.ts +29 -18
  88. package/dist/src/api.js +70 -17
  89. package/dist/src/client.d.ts +35 -14
  90. package/dist/src/client.js +12 -8
  91. package/dist/src/error.d.ts +29 -0
  92. package/dist/src/error.js +36 -0
  93. package/dist/src/events.d.ts +1 -1
  94. package/dist/src/events.js +1 -1
  95. package/dist/src/index.d.ts +8 -11
  96. package/dist/src/index.js +11 -25
  97. package/dist/src/key.d.ts +18 -7
  98. package/dist/src/key.js +52 -19
  99. package/dist/src/role.d.ts +46 -3
  100. package/dist/src/role.js +60 -8
  101. package/dist/src/schema.d.ts +206 -72
  102. package/dist/src/schema.js +1 -1
  103. package/dist/src/schema_types.d.ts +3 -0
  104. package/dist/src/schema_types.js +1 -1
  105. package/dist/src/session/signer_session_manager.d.ts +49 -13
  106. package/dist/src/session/signer_session_manager.js +104 -26
  107. package/dist/src/util.d.ts +14 -0
  108. package/dist/src/util.js +24 -27
  109. package/package.json +19 -46
  110. package/src/api.ts +81 -23
  111. package/src/client.ts +12 -8
  112. package/src/error.ts +42 -0
  113. package/src/events.ts +3 -1
  114. package/src/index.ts +12 -24
  115. package/src/key.ts +36 -18
  116. package/src/role.ts +78 -7
  117. package/src/schema.ts +269 -110
  118. package/src/schema_types.ts +3 -0
  119. package/src/session/session_storage.ts +0 -32
  120. package/src/session/signer_session_manager.ts +137 -28
  121. package/src/util.ts +19 -10
  122. package/tsconfig.json +1 -21
  123. package/LICENSE-APACHE +0 -177
  124. package/LICENSE-MIT +0 -25
  125. package/NOTICE +0 -13
  126. package/dist/examples/ethers.d.ts +0 -1
  127. package/dist/examples/ethers.js +0 -142
  128. package/dist/src/ethers/index.d.ts +0 -95
  129. package/dist/src/ethers/index.js +0 -208
  130. package/dist/src/fido.js +0 -148
  131. package/dist/src/session/cognito_manager.d.ts +0 -71
  132. package/dist/src/session/cognito_manager.js +0 -129
  133. package/dist/src/session/generic.d.ts +0 -47
  134. package/dist/src/session/generic.js +0 -3
  135. package/dist/src/session/management_session_manager.d.ts +0 -59
  136. package/dist/src/session/management_session_manager.js +0 -111
  137. package/dist/src/session/oidc_session_manager.d.ts +0 -78
  138. package/dist/src/session/oidc_session_manager.js +0 -142
  139. package/dist/src/session/session_manager.d.ts +0 -99
  140. package/dist/src/session/session_manager.js +0 -136
  141. package/dist/src/sign.d.ts +0 -114
  142. package/dist/src/sign.js +0 -248
  143. package/dist/test/sessions.d.ts +0 -35
  144. package/dist/test/sessions.js +0 -56
  145. package/src/ethers/index.ts +0 -249
  146. package/src/session/cognito_manager.ts +0 -161
  147. package/src/session/session_manager.ts +0 -165
@@ -36,9 +36,10 @@ export declare class CubeSignerClient extends CubeSignerApi {
36
36
  /**
37
37
  * Loads an existing management session and creates a {@link CubeSignerClient} instance.
38
38
  *
39
+ * @param {SignerSessionStorage} storage Optional storage from which to load the session (defaults to the default management session json file location)
39
40
  * @return {Promise<CubeSignerClient>} New CubeSigner instance
40
41
  */
41
- static loadManagementSession(): Promise<CubeSignerClient>;
42
+ static loadManagementSession(storage?: SignerSessionStorage): Promise<CubeSignerClient>;
42
43
  /**
43
44
  * Create a new signing key.
44
45
  * @param {KeyType} type The type of key to create.
@@ -141,7 +142,7 @@ export declare class CubeSignerClient extends CubeSignerApi {
141
142
  name: string;
142
143
  type: "fido";
143
144
  })[];
144
- mfa_policy?: Record<string, unknown> | null | undefined;
145
+ mfa_policy?: unknown;
145
146
  org_ids: string[];
146
147
  user_id: string;
147
148
  }>;
@@ -166,7 +167,7 @@ export declare class CubeSignerClient extends CubeSignerApi {
166
167
  name: string;
167
168
  type: "fido";
168
169
  })[];
169
- mfa_policy?: Record<string, unknown> | null | undefined;
170
+ mfa_policy?: unknown;
170
171
  org_ids: string[];
171
172
  user_id: string;
172
173
  }>;
@@ -229,13 +230,17 @@ export declare class CubeSignerClient extends CubeSignerApi {
229
230
  timestamp: number;
230
231
  } | null | undefined;
231
232
  request: {
232
- body?: Record<string, unknown> | null | undefined;
233
+ body?: unknown;
233
234
  method: string;
234
235
  path: string;
235
236
  };
236
237
  status: {
237
238
  allowed_approvers: string[];
238
- allowed_mfa_types?: ("CubeSigner" | "Totp" | "Fido")[] | null | undefined;
239
+ allowed_mfa_types?: ({
240
+ FidoKey: {
241
+ key_id: string;
242
+ };
243
+ } | "CubeSigner" | "Totp" | "Fido")[] | null | undefined;
239
244
  approved_by: {
240
245
  [key: string]: {
241
246
  [key: string]: {
@@ -261,13 +266,17 @@ export declare class CubeSignerClient extends CubeSignerApi {
261
266
  timestamp: number;
262
267
  } | null | undefined;
263
268
  request: {
264
- body?: Record<string, unknown> | null | undefined;
269
+ body?: unknown;
265
270
  method: string;
266
271
  path: string;
267
272
  };
268
273
  status: {
269
274
  allowed_approvers: string[];
270
- allowed_mfa_types?: ("CubeSigner" | "Totp" | "Fido")[] | null | undefined;
275
+ allowed_mfa_types?: ({
276
+ FidoKey: {
277
+ key_id: string;
278
+ };
279
+ } | "CubeSigner" | "Totp" | "Fido")[] | null | undefined;
271
280
  approved_by: {
272
281
  [key: string]: {
273
282
  [key: string]: {
@@ -294,7 +303,7 @@ export declare class CubeSignerClient extends CubeSignerApi {
294
303
  * Same as {@link mfaApproveFidoComplete}
295
304
  */
296
305
  get fidoApproveComplete(): (mfaId: string, challengeId: string, credential: {
297
- clientExtensionResults?: Record<string, unknown> | null | undefined;
306
+ clientExtensionResults?: unknown;
298
307
  id: string;
299
308
  response: {
300
309
  authenticatorData: string;
@@ -314,13 +323,17 @@ export declare class CubeSignerClient extends CubeSignerApi {
314
323
  timestamp: number;
315
324
  } | null | undefined;
316
325
  request: {
317
- body?: Record<string, unknown> | null | undefined;
326
+ body?: unknown;
318
327
  method: string;
319
328
  path: string;
320
329
  };
321
330
  status: {
322
331
  allowed_approvers: string[];
323
- allowed_mfa_types?: ("CubeSigner" | "Totp" | "Fido")[] | null | undefined;
332
+ allowed_mfa_types?: ({
333
+ FidoKey: {
334
+ key_id: string;
335
+ };
336
+ } | "CubeSigner" | "Totp" | "Fido")[] | null | undefined;
324
337
  approved_by: {
325
338
  [key: string]: {
326
339
  [key: string]: {
@@ -346,13 +359,17 @@ export declare class CubeSignerClient extends CubeSignerApi {
346
359
  timestamp: number;
347
360
  } | null | undefined;
348
361
  request: {
349
- body?: Record<string, unknown> | null | undefined;
362
+ body?: unknown;
350
363
  method: string;
351
364
  path: string;
352
365
  };
353
366
  status: {
354
367
  allowed_approvers: string[];
355
- allowed_mfa_types?: ("CubeSigner" | "Totp" | "Fido")[] | null | undefined;
368
+ allowed_mfa_types?: ({
369
+ FidoKey: {
370
+ key_id: string;
371
+ };
372
+ } | "CubeSigner" | "Totp" | "Fido")[] | null | undefined;
356
373
  approved_by: {
357
374
  [key: string]: {
358
375
  [key: string]: {
@@ -378,13 +395,17 @@ export declare class CubeSignerClient extends CubeSignerApi {
378
395
  timestamp: number;
379
396
  } | null | undefined;
380
397
  request: {
381
- body?: Record<string, unknown> | null | undefined;
398
+ body?: unknown;
382
399
  method: string;
383
400
  path: string;
384
401
  };
385
402
  status: {
386
403
  allowed_approvers: string[];
387
- allowed_mfa_types?: ("CubeSigner" | "Totp" | "Fido")[] | null | undefined;
404
+ allowed_mfa_types?: ({
405
+ FidoKey: {
406
+ key_id: string;
407
+ };
408
+ } | "CubeSigner" | "Totp" | "Fido")[] | null | undefined;
388
409
  approved_by: {
389
410
  [key: string]: {
390
411
  [key: string]: {
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CubeSignerClient = void 0;
4
4
  const signer_session_manager_1 = require("./session/signer_session_manager");
5
- const cognito_manager_1 = require("./session/cognito_manager");
6
5
  const api_1 = require("./api");
7
6
  const key_1 = require("./key");
8
7
  const role_1 = require("./role");
9
8
  const session_storage_1 = require("./session/session_storage");
9
+ const util_1 = require("./util");
10
10
  /**
11
11
  * Client to use to send requests to CubeSigner services
12
12
  * when authenticating using a CubeSigner session token.
@@ -32,14 +32,18 @@ class CubeSignerClient extends api_1.CubeSignerApi {
32
32
  /**
33
33
  * Loads an existing management session and creates a {@link CubeSignerClient} instance.
34
34
  *
35
+ * @param {SignerSessionStorage} storage Optional storage from which to load the session (defaults to the default management session json file location)
35
36
  * @return {Promise<CubeSignerClient>} New CubeSigner instance
36
37
  */
37
- static async loadManagementSession() {
38
- const mgr = await cognito_manager_1.CognitoSessionManager.loadManagementSession();
39
- // HACK: Ignore that sessionMgr may be a CognitoSessionManager and pretend that it
40
- // is a SignerSessionManager; that's fine because the CubeSignerClient will
41
- // almost always just call `await token()` on it, which works in both cases.
42
- // NOTE: This will go away once `cs login` starts producing signer sessions.
38
+ static async loadManagementSession(storage) {
39
+ const filePath = (0, util_1.pathJoin)((0, util_1.configDir)(), "management-session.json");
40
+ storage ??= new session_storage_1.JsonFileSessionStorage(filePath);
41
+ // Throw and actionable error if the management session file contains a Cognito session
42
+ const session = await storage.retrieve();
43
+ if (session.id_token) {
44
+ throw new Error(`It appears that the '${filePath}' file contains the old (Cognito) session; please update your session by updating your 'cs' to version 'v0.37.0' or later and then running 'cs login'`);
45
+ }
46
+ const mgr = await signer_session_manager_1.SignerSessionManager.loadFromStorage(storage);
43
47
  return new CubeSignerClient(mgr);
44
48
  }
45
49
  /**
@@ -374,4 +378,4 @@ class CubeSignerClient extends api_1.CubeSignerApi {
374
378
  }
375
379
  }
376
380
  exports.CubeSignerClient = CubeSignerClient;
377
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBOEY7QUFDOUYsK0RBQWtFO0FBQ2xFLCtCQUFrRDtBQUNsRCwrQkFBcUM7QUFJckMsaUNBQThCO0FBSzlCLCtEQUFpRTtBQVlqRTs7O0dBR0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLG1CQUFhO0lBQ2pEOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsS0FBYztRQUMxRCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxLQUFjO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sdUNBQXFCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNoRSxrRkFBa0Y7UUFDbEYsaUZBQWlGO1FBQ2pGLGtGQUFrRjtRQUNsRiw0RUFBNEU7UUFDNUUsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQXNDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQWEsRUFBRSxPQUFnQjtRQUM3QyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFhLEVBQUUsS0FBYSxFQUFFLE9BQWdC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QyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQXRaRCw0Q0FzWkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduZXJTZXNzaW9uTWFuYWdlciwgU2lnbmVyU2Vzc2lvblN0b3JhZ2UgfSBmcm9tIFwiLi9zZXNzaW9uL3NpZ25lcl9zZXNzaW9uX21hbmFnZXJcIjtcbmltcG9ydCB7IENvZ25pdG9TZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuL3Nlc3Npb24vY29nbml0b19tYW5hZ2VyXCI7XG5pbXBvcnQgeyBDdWJlU2lnbmVyQXBpLCBPaWRjQ2xpZW50IH0gZnJvbSBcIi4vYXBpXCI7XG5pbXBvcnQgeyBLZXlUeXBlLCBLZXkgfSBmcm9tIFwiLi9rZXlcIjtcbmltcG9ydCB7IE9yZ0luZm8sIFJhdGNoZXRDb25maWcgfSBmcm9tIFwiLi9zY2hlbWFfdHlwZXNcIjtcbmltcG9ydCB7IE1mYVJlY2VpcHQgfSBmcm9tIFwiLi9tZmFcIjtcbmltcG9ydCB7IFBhZ2VPcHRzIH0gZnJvbSBcIi4vcGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4vcm9sZVwiO1xuXG4vLyB1c2VkIGluIGRvYyBjb21tZW50c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB7IEFkZEZpZG9DaGFsbGVuZ2UsIE1mYUZpZG9DaGFsbGVuZ2UsIFRvdHBDaGFsbGVuZ2UgfSBmcm9tIFwiLi9tZmFcIjtcbmltcG9ydCB7IE1lbW9yeVNlc3Npb25TdG9yYWdlIH0gZnJvbSBcIi4vc2Vzc2lvbi9zZXNzaW9uX3N0b3JhZ2VcIjtcblxuLyoqIE9wdGlvbnMgZm9yIGxvZ2dpbmcgaW4gd2l0aCBPSURDIHRva2VuICovXG5leHBvcnQgaW50ZXJmYWNlIE9pZGNBdXRoT3B0aW9ucyB7XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBsaWZldGltZXMgKi9cbiAgbGlmZXRpbWVzPzogUmF0Y2hldENvbmZpZztcbiAgLyoqIE9wdGlvbmFsIE1GQSByZWNlaXB0ICovXG4gIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0O1xuICAvKiogT3B0aW9uYWwgc3RvcmFnZSB0byB1c2UgZm9yIHRoZSByZXR1cm5lZCBzZXNzaW9uIChkZWZhdWx0cyB0byB7QGxpbmsgTWVtb3J5U2Vzc2lvblN0b3JhZ2V9KSAqL1xuICBzdG9yYWdlPzogU2lnbmVyU2Vzc2lvblN0b3JhZ2U7XG59XG5cbi8qKlxuICogQ2xpZW50IHRvIHVzZSB0byBzZW5kIHJlcXVlc3RzIHRvIEN1YmVTaWduZXIgc2VydmljZXNcbiAqIHdoZW4gYXV0aGVudGljYXRpbmcgdXNpbmcgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBDdWJlU2lnbmVyQ2xpZW50IGV4dGVuZHMgQ3ViZVNpZ25lckFwaSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtTaWduZXJTZXNzaW9uTWFuYWdlcn0gc2Vzc2lvbk1nciBUaGUgc2Vzc2lvbiBtYW5hZ2VyIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZz99IG9yZ0lkIE9wdGlvbmFsIG9yZ2FuaXphdGlvbiBJRDsgaWYgb21pdHRlZCwgdXNlcyB0aGUgb3JnIElEIGZyb20gdGhlIHNlc3Npb24gbWFuYWdlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNlc3Npb25NZ3I6IFNpZ25lclNlc3Npb25NYW5hZ2VyLCBvcmdJZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNlc3Npb25NZ3IsIG9yZ0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgdXNpbmcgdGhlIHNhbWUgc2Vzc2lvbiBtYW5hZ2VyIGJ1dCB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnSWQgVGhlIG9yZ2FuaXphdGlvbiBJRC5cbiAgICogQHJldHVybiB7Q3ViZVNpZ25lckNsaWVudH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyB1c2luZyB0aGUgc2FtZSBzZXNzaW9uIG1hbmFnZXIgYnV0IHRhcmdldGluZyBkaWZmZXJlbnQgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgd2l0aE9yZyhvcmdJZD86IHN0cmluZyk6IEN1YmVTaWduZXJDbGllbnQge1xuICAgIHJldHVybiBvcmdJZCA/IG5ldyBDdWJlU2lnbmVyQ2xpZW50KHRoaXMuc2Vzc2lvbk1nciwgb3JnSWQpIDogdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhbiBleGlzdGluZyBtYW5hZ2VtZW50IHNlc3Npb24gYW5kIGNyZWF0ZXMgYSB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudH0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3ViZVNpZ25lckNsaWVudD59IE5ldyBDdWJlU2lnbmVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgbG9hZE1hbmFnZW1lbnRTZXNzaW9uKCk6IFByb21pc2U8Q3ViZVNpZ25lckNsaWVudD4ge1xuICAgIGNvbnN0IG1nciA9IGF3YWl0IENvZ25pdG9TZXNzaW9uTWFuYWdlci5sb2FkTWFuYWdlbWVudFNlc3Npb24oKTtcbiAgICAvLyBIQUNLOiBJZ25vcmUgdGhhdCBzZXNzaW9uTWdyIG1heSBiZSBhIENvZ25pdG9TZXNzaW9uTWFuYWdlciBhbmQgcHJldGVuZCB0aGF0IGl0XG4gICAgLy8gICAgICAgaXMgYSBTaWduZXJTZXNzaW9uTWFuYWdlcjsgdGhhdCdzIGZpbmUgYmVjYXVzZSB0aGUgQ3ViZVNpZ25lckNsaWVudCB3aWxsXG4gICAgLy8gICAgICAgYWxtb3N0IGFsd2F5cyBqdXN0IGNhbGwgYGF3YWl0IHRva2VuKClgIG9uIGl0LCB3aGljaCB3b3JrcyBpbiBib3RoIGNhc2VzLlxuICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBnbyBhd2F5IG9uY2UgYGNzIGxvZ2luYCBzdGFydHMgcHJvZHVjaW5nIHNpZ25lciBzZXNzaW9ucy5cbiAgICByZXR1cm4gbmV3IEN1YmVTaWduZXJDbGllbnQobWdyIGFzIHVua25vd24gYXMgU2lnbmVyU2Vzc2lvbk1hbmFnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzaWduaW5nIGtleS5cbiAgICogQHBhcmFtIHtLZXlUeXBlfSB0eXBlIFRoZSB0eXBlIG9mIGtleSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nP30gb3duZXJJZCBUaGUgb3duZXIgb2YgdGhlIGtleS4gRGVmYXVsdHMgdG8gdGhlIHNlc3Npb24ncyB1c2VyLlxuICAgKiBAcmV0dXJuIHtLZXlbXX0gVGhlIG5ldyBrZXlzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlS2V5KHR5cGU6IEtleVR5cGUsIG93bmVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5jcmVhdGVLZXlzKHR5cGUsIDEsIG93bmVySWQpKVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHNpZ25pbmcga2V5cy5cbiAgICogQHBhcmFtIHtLZXlUeXBlfSB0eXBlIFRoZSB0eXBlIG9mIGtleSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBUaGUgbnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZz99IG93bmVySWQgVGhlIG93bmVyIG9mIHRoZSBrZXlzLiBEZWZhdWx0cyB0byB0aGUgc2Vzc2lvbidzIHVzZXIuXG4gICAqIEByZXR1cm4ge0tleVtdfSBUaGUgbmV3IGtleXMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVLZXlzKHR5cGU6IEtleVR5cGUsIGNvdW50OiBudW1iZXIsIG93bmVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMua2V5c0NyZWF0ZSh0eXBlLCBjb3VudCwgb3duZXJJZCk7XG4gICAgcmV0dXJuIGtleXMubWFwKChrKSA9PiBuZXcgS2V5KHRoaXMsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgYSBrZXkgb2YgdGhlIGdpdmVuIHR5cGUgdXNpbmcgdGhlIGdpdmVuIGRlcml2YXRpb24gcGF0aCBhbmQgbW5lbW9uaWMuXG4gICAqIFRoZSBvd25lciBvZiB0aGUgZGVyaXZlZCBrZXkgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVR5cGV9IHR5cGUgVHlwZSBvZiBrZXkgdG8gZGVyaXZlIGZyb20gdGhlIG1uZW1vbmljLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVyaXZhdGlvblBhdGggTW5lbW9uaWMgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZ2VuZXJhdGUgbmV3IGtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1uZW1vbmljSWQgbWF0ZXJpYWxJZCBvZiBtbmVtb25pYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIG5ldyBrZXkuXG4gICAqXG4gICAqIEByZXR1cm4ge0tleX0gbmV3bHkgZGVyaXZlZCBrZXkgb3IgdW5kZWZpbmVkIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICAgKi9cbiAgYXN5bmMgZGVyaXZlS2V5KFxuICAgIHR5cGU6IEtleVR5cGUsXG4gICAgZGVyaXZhdGlvblBhdGg6IHN0cmluZyxcbiAgICBtbmVtb25pY0lkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8S2V5IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmRlcml2ZUtleXModHlwZSwgW2Rlcml2YXRpb25QYXRoXSwgbW5lbW9uaWNJZCkpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIHNldCBvZiBrZXlzIG9mIHRoZSBnaXZlbiB0eXBlIHVzaW5nIHRoZSBnaXZlbiBkZXJpdmF0aW9uIHBhdGhzIGFuZCBtbmVtb25pYy5cbiAgICpcbiAgICogVGhlIG93bmVyIG9mIHRoZSBkZXJpdmVkIGtleXMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVR5cGV9IHR5cGUgVHlwZSBvZiBrZXkgdG8gZGVyaXZlIGZyb20gdGhlIG1uZW1vbmljLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBkZXJpdmF0aW9uUGF0aHMgTW5lbW9uaWMgZGVyaXZhdGlvbiBwYXRocyB1c2VkIHRvIGdlbmVyYXRlIG5ldyBrZXkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtbmVtb25pY0lkIG1hdGVyaWFsSWQgb2YgbW5lbW9uaWMga2V5IHVzZWQgdG8gZGVyaXZlIHRoZSBuZXcga2V5LlxuICAgKlxuICAgKiBAcmV0dXJuIHtLZXlbXX0gbmV3bHkgZGVyaXZlZCBrZXlzLlxuICAgKi9cbiAgYXN5bmMgZGVyaXZlS2V5cyh0eXBlOiBLZXlUeXBlLCBkZXJpdmF0aW9uUGF0aHM6IHN0cmluZ1tdLCBtbmVtb25pY0lkOiBzdHJpbmcpOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMua2V5c0Rlcml2ZSh0eXBlLCBkZXJpdmF0aW9uUGF0aHMsIG1uZW1vbmljSWQpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHtAbGluayBPaWRjQ2xpZW50fSB0aGF0IHdpbGwgdXNlIGEgZ2l2ZW4gT0lEQyB0b2tlbiBmb3IgYXV0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9pZGNUb2tlbiBUaGUgYXV0aGVudGljYXRpb24gdG9rZW4gdG8gdXNlXG4gICAqIEByZXR1cm4ge09pZGNDbGllbnR9IE5ldyBPSURDIGNsaWVudC5cbiAgICovXG4gIG5ld09pZGNDbGllbnQob2lkY1Rva2VuOiBzdHJpbmcpOiBPaWRjQ2xpZW50IHtcbiAgICByZXR1cm4gbmV3IE9pZGNDbGllbnQodGhpcy5zZXNzaW9uTWdyLmVudiwgdGhpcy5vcmdJZCwgb2lkY1Rva2VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGUgYW4gT0lEQyB1c2VyIGFuZCBjcmVhdGUgYSBuZXcgc2Vzc2lvbiBtYW5hZ2VyIGZvciB0aGVtLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2lkY1Rva2VuIFRoZSBPSURDIHRva2VuXG4gICAqIEBwYXJhbSB7TGlzdDxzdHJpbmc+fSBzY29wZXMgVGhlIHNjb3BlcyBvZiB0aGUgcmVzdWx0aW5nIHNlc3Npb25cbiAgICogQHBhcmFtIHtPaWRjQXV0aE9wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucy5cbiAgICogQHJldHVybiB7UHJvbWlzZTxTaWduZXJTZXNzaW9uTWFuYWdlcj59IFRoZSBzaWduZXIgc2Vzc2lvbiBtYW5hZ2VyXG4gICAqL1xuICBhc3luYyBvaWRjQXV0aChcbiAgICBvaWRjVG9rZW46IHN0cmluZyxcbiAgICBzY29wZXM6IEFycmF5PHN0cmluZz4sXG4gICAgb3B0aW9ucz86IE9pZGNBdXRoT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxTaWduZXJTZXNzaW9uTWFuYWdlcj4ge1xuICAgIGNvbnN0IG9pZGNDbGllbnQgPSB0aGlzLm5ld09pZGNDbGllbnQob2lkY1Rva2VuKTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgb2lkY0NsaWVudC5zZXNzaW9uQ3JlYXRlKHNjb3Blcywgb3B0aW9ucz8ubGlmZXRpbWVzLCBvcHRpb25zPy5tZmFSZWNlaXB0KTtcbiAgICByZXR1cm4gYXdhaXQgU2lnbmVyU2Vzc2lvbk1hbmFnZXIubG9hZEZyb21TdG9yYWdlKG5ldyBNZW1vcnlTZXNzaW9uU3RvcmFnZShyZXNwLmRhdGEoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB1c2VyIGluIHRoZSBvcmdhbml6YXRpb24gYW5kIHNlbmRzIGFuIGludml0YXRpb24gdG8gdGhhdCB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBvcmdVc2VySW52aXRlfS5cbiAgICovXG4gIGdldCBjcmVhdGVVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLm9yZ1VzZXJJbnZpdGUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgT0lEQyB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBvcmdVc2VyQ3JlYXRlT2lkY30uXG4gICAqL1xuICBnZXQgY3JlYXRlT2lkY1VzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JnVXNlckNyZWF0ZU9pZGMuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgT0lEQyB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBvcmdVc2VyRGVsZXRlT2lkY30uXG4gICAqL1xuICBnZXQgZGVsZXRlT2lkY1VzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JnVXNlckRlbGV0ZU9pZGMuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHVzZXJzIGluIHRoZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG9yZ1VzZXJzTGlzdH1cbiAgICovXG4gIGdldCB1c2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5vcmdVc2Vyc0xpc3QuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlckdldH1cbiAgICovXG4gIGdldCB1c2VyKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJHZXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nP30gb3JnSWQgVGhlIElEIG9yIG5hbWUgb2YgdGhlIG9yZ1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE9yZ0luZm8+fSBDdWJlU2lnbmVyIGNsaWVudCBmb3IgdGhlIHJlcXVlc3RlZCBvcmcuXG4gICAqL1xuICBhc3luYyBvcmcob3JnSWQ/OiBzdHJpbmcpOiBQcm9taXNlPE9yZ0luZm8+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53aXRoT3JnKG9yZ0lkKS5vcmdHZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlckdldH1cbiAgICovXG4gIGdldCBhYm91dE1lKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJHZXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBrZXkgYnkgaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlJZCBUaGUgaWQgb2YgdGhlIGtleSB0byBnZXQuXG4gICAqIEByZXR1cm4ge0tleX0gVGhlIGtleS5cbiAgICovXG4gIGFzeW5jIGdldEtleShrZXlJZDogc3RyaW5nKTogUHJvbWlzZTxLZXk+IHtcbiAgICBjb25zdCBrZXlJbmZvID0gYXdhaXQgdGhpcy5rZXlHZXQoa2V5SWQpO1xuICAgIHJldHVybiBuZXcgS2V5KHRoaXMsIGtleUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwga2V5cyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVR5cGU/fSB0eXBlIE9wdGlvbmFsIGtleSB0eXBlIHRvIGZpbHRlciBsaXN0IGZvci5cbiAgICogQHBhcmFtIHtQYWdlT3B0c30gcGFnZSBQYWdpbmF0aW9uIG9wdGlvbnMuIERlZmF1bHRzIHRvIGZldGNoaW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxLZXlbXT59IFRoZSBrZXlzLlxuICAgKi9cbiAgYXN5bmMgb3JnS2V5cyh0eXBlPzogS2V5VHlwZSwgcGFnZT86IFBhZ2VPcHRzKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IHBhZ2luYXRvciA9IHRoaXMua2V5c0xpc3QodHlwZSwgcGFnZSk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHBhZ2luYXRvci5mZXRjaCgpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nP30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcm9sZS5cbiAgICogQHJldHVybiB7Um9sZX0gVGhlIG5ldyByb2xlLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUm9sZShuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgY29uc3Qgcm9sZUlkID0gYXdhaXQgdGhpcy5yb2xlQ3JlYXRlKG5hbWUpO1xuICAgIGNvbnN0IHJvbGVJbmZvID0gYXdhaXQgdGhpcy5yb2xlR2V0KHJvbGVJZCk7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsIHJvbGVJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByb2xlIGJ5IGlkIG9yIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByb2xlSWQgVGhlIGlkIG9yIG5hbWUgb2YgdGhlIHJvbGUgdG8gZ2V0LlxuICAgKiBAcmV0dXJuIHtSb2xlfSBUaGUgcm9sZS5cbiAgICovXG4gIGFzeW5jIGdldFJvbGUocm9sZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJvbGU+IHtcbiAgICBjb25zdCByb2xlSW5mbyA9IGF3YWl0IHRoaXMucm9sZUdldChyb2xlSWQpO1xuICAgIHJldHVybiBuZXcgUm9sZSh0aGlzLCByb2xlSW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgcm9sZXMgaW4gdGhlIG9yZy5cbiAgICpcbiAgICogQHBhcmFtIHtQYWdlT3B0c30gcGFnZSBQYWdpbmF0aW9uIG9wdGlvbnMuIERlZmF1bHRzIHRvIGZldGNoaW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICogQHJldHVybiB7Um9sZVtdfSBUaGUgcm9sZXMuXG4gICAqL1xuICBhc3luYyBsaXN0Um9sZXMocGFnZT86IFBhZ2VPcHRzKTogUHJvbWlzZTxSb2xlW10+IHtcbiAgICBjb25zdCByb2xlcyA9IGF3YWl0IHRoaXMucm9sZXNMaXN0KHBhZ2UpLmZldGNoKCk7XG4gICAgcmV0dXJuIHJvbGVzLm1hcCgocikgPT4gbmV3IFJvbGUodGhpcywgcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIHVzZXJzIGluIHRoZSBvcmcuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG9yZ1VzZXJzTGlzdH1cbiAgICovXG4gIGdldCBsaXN0VXNlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JnVXNlcnNMaXN0LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG1mYUFwcHJvdmV9XG4gICAqL1xuICBnZXQgYXBwcm92ZU1mYVJlcXVlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubWZhQXBwcm92ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcHJvdmUgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IHVzaW5nIFRPVFAuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG1mYUFwcHJvdmVUb3RwfVxuICAgKi9cbiAgZ2V0IHRvdHBBcHByb3ZlKCkge1xuICAgIHJldHVybiB0aGlzLm1mYUFwcHJvdmVUb3RwLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhdGUgYXBwcm92YWwgb2YgYW4gZXhpc3RpbmcgTUZBIHJlcXVlc3QgdXNpbmcgRklETy5cbiAgICpcbiAgICogUmV0dXJucyBhIHtAbGluayBNZmFGaWRvQ2hhbGxlbmdlfSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgYnkgY2FsbGluZ1xuICAgKiB7QGxpbmsgTWZhRmlkb0NoYWxsZW5nZS5hbnN3ZXJ9IG9yIHtAbGluayBmaWRvQXBwcm92ZUNvbXBsZXRlfS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgbWZhQXBwcm92ZUZpZG9Jbml0fVxuICAgKi9cbiAgZ2V0IGZpZG9BcHByb3ZlU3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWZhQXBwcm92ZUZpZG9Jbml0LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQW5zd2VyIHRoZSBNRkEgYXBwcm92YWwgd2l0aCBGSURPIGNoYWxsZW5nZSBpc3N1ZWQgYnkge0BsaW5rIGZpZG9BcHByb3ZlU3RhcnR9LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBtZmFBcHByb3ZlRmlkb0NvbXBsZXRlfVxuICAgKi9cbiAgZ2V0IGZpZG9BcHByb3ZlQ29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWZhQXBwcm92ZUZpZG9Db21wbGV0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBtZmFHZXR9XG4gICAqL1xuICBnZXQgZ2V0TWZhSW5mbygpIHtcbiAgICByZXR1cm4gdGhpcy5tZmFHZXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgbWZhTGlzdH1cbiAgICovXG4gIGdldCBsaXN0TWZhSW5mb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubWZhTGlzdC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBpZGVudGl0eVByb3ZlfVxuICAgKi9cbiAgZ2V0IHByb3ZlSWRlbnRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlQcm92ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gcHJvb2Ygb2YgT0lEQyBhdXRoZW50aWNhdGlvbiBpcyB2YWxpZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgaWRlbnRpdHlWZXJpZnl9XG4gICAqL1xuICBnZXQgdmVyaWZ5SWRlbnRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlWZXJpZnkuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcmVxdWVzdCB0byBhZGQgYSBuZXcgRklETyBkZXZpY2UuXG4gICAqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgQWRkRmlkb0NoYWxsZW5nZX0gdGhhdCBtdXN0IGJlIGFuc3dlcmVkIGJ5IGNhbGxpbmcge0BsaW5rIEFkZEZpZG9DaGFsbGVuZ2UuYW5zd2VyfS5cbiAgICpcbiAgICogTUZBIG1heSBiZSByZXF1aXJlZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlckZpZG9SZWdpc3RlckluaXR9XG4gICAqL1xuICBnZXQgYWRkRmlkb1N0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJGaWRvUmVnaXN0ZXJJbml0LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQuXG4gICAqIEFsbG93ZWQgb25seSBpZiBUT1RQIGlzIGFsc28gZGVmaW5lZC5cbiAgICogTUZBIHZpYSBUT1RQIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlckZpZG9EZWxldGV9XG4gICAqL1xuICBnZXQgZGVsZXRlRmlkbygpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyRmlkb0RlbGV0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZXF1ZXN0IHRvIGNoYW5nZSB1c2VyJ3MgVE9UUC4gUmV0dXJucyBhIHtAbGluayBUb3RwQ2hhbGxlbmdlfVxuICAgKiB0aGF0IG11c3QgYmUgYW5zd2VyZWQgYnkgY2FsbGluZyB7QGxpbmsgVG90cENoYWxsZW5nZS5hbnN3ZXJ9IG9yXG4gICAqIHtAbGluayByZXNldFRvdHBDb21wbGV0ZX0uXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIHVzZXJUb3RwUmVzZXRJbml0fVxuICAgKi9cbiAgZ2V0IHJlc2V0VG90cFN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJUb3RwUmVzZXRJbml0LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQW5zd2VyIHRoZSBUT1RQIGNoYWxsZW5nZSBpc3N1ZWQgYnkge0BsaW5rIHJlc2V0VG90cFN0YXJ0fS4gSWYgc3VjY2Vzc2Z1bCxcbiAgICogdXNlcidzIFRPVFAgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgdG8gdGhhdCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIHVzZXJUb3RwUmVzZXRDb21wbGV0ZX1cbiAgICovXG4gIGdldCByZXNldFRvdHBDb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyVG90cFJlc2V0Q29tcGxldGUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBhIGdpdmVuIFRPVFAgY29kZSBhZ2FpbnN0IHRoZSBjdXJyZW50IHVzZXIncyBUT1RQIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyVG90cFZlcmlmeX1cbiAgICovXG4gIGdldCB2ZXJpZnlUb3RwKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJUb3RwVmVyaWZ5LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIFRPVFAgZnJvbSB0aGUgdXNlcidzIGFjY291bnQuXG4gICAqIEFsbG93ZWQgb25seSBpZiBhdCBsZWFzdCBvbmUgRklETyBrZXkgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudC5cbiAgICogTUZBIHZpYSBGSURPIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlclRvdHBEZWxldGV9LlxuICAgKi9cbiAgZ2V0IGRlbGV0ZVRvdHAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlclRvdHBEZWxldGUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGEgc3Rha2UgcmVxdWVzdC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgc2lnblN0YWtlfVxuICAgKi9cbiAgZ2V0IHN0YWtlKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25TdGFrZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYW4gdW5zdGFrZSByZXF1ZXN0LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBzaWduVW5zdGFrZX1cbiAgICovXG4gIGdldCB1bnN0YWtlKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25VbnN0YWtlLmJpbmQodGhpcyk7XG4gIH1cbn1cbiJdfQ==
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBOEY7QUFDOUYsK0JBQWtEO0FBQ2xELCtCQUFxQztBQUlyQyxpQ0FBOEI7QUFLOUIsK0RBQXlGO0FBQ3pGLGlDQUE2QztBQVk3Qzs7O0dBR0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLG1CQUFhO0lBQ2pEOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsS0FBYztRQUMxRCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxLQUFjO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQThCO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUEsZUFBUSxFQUFDLElBQUEsZ0JBQVMsR0FBRSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLElBQUksd0NBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakQsdUZBQXVGO1FBQ3ZGLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pDLElBQUssT0FBMkMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksS0FBSyxDQUNiLHdCQUF3QixRQUFRLHVKQUF1SixDQUN4TCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sNkNBQW9CLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FB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QU1HO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQTlaRCw0Q0E4WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduZXJTZXNzaW9uTWFuYWdlciwgU2lnbmVyU2Vzc2lvblN0b3JhZ2UgfSBmcm9tIFwiLi9zZXNzaW9uL3NpZ25lcl9zZXNzaW9uX21hbmFnZXJcIjtcbmltcG9ydCB7IEN1YmVTaWduZXJBcGksIE9pZGNDbGllbnQgfSBmcm9tIFwiLi9hcGlcIjtcbmltcG9ydCB7IEtleVR5cGUsIEtleSB9IGZyb20gXCIuL2tleVwiO1xuaW1wb3J0IHsgT3JnSW5mbywgUmF0Y2hldENvbmZpZyB9IGZyb20gXCIuL3NjaGVtYV90eXBlc1wiO1xuaW1wb3J0IHsgTWZhUmVjZWlwdCB9IGZyb20gXCIuL21mYVwiO1xuaW1wb3J0IHsgUGFnZU9wdHMgfSBmcm9tIFwiLi9wYWdpbmF0b3JcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi9yb2xlXCI7XG5cbi8vIHVzZWQgaW4gZG9jIGNvbW1lbnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuaW1wb3J0IHsgQWRkRmlkb0NoYWxsZW5nZSwgTWZhRmlkb0NoYWxsZW5nZSwgVG90cENoYWxsZW5nZSB9IGZyb20gXCIuL21mYVwiO1xuaW1wb3J0IHsgSnNvbkZpbGVTZXNzaW9uU3RvcmFnZSwgTWVtb3J5U2Vzc2lvblN0b3JhZ2UgfSBmcm9tIFwiLi9zZXNzaW9uL3Nlc3Npb25fc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29uZmlnRGlyLCBwYXRoSm9pbiB9IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE9wdGlvbnMgZm9yIGxvZ2dpbmcgaW4gd2l0aCBPSURDIHRva2VuICovXG5leHBvcnQgaW50ZXJmYWNlIE9pZGNBdXRoT3B0aW9ucyB7XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBsaWZldGltZXMgKi9cbiAgbGlmZXRpbWVzPzogUmF0Y2hldENvbmZpZztcbiAgLyoqIE9wdGlvbmFsIE1GQSByZWNlaXB0ICovXG4gIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0O1xuICAvKiogT3B0aW9uYWwgc3RvcmFnZSB0byB1c2UgZm9yIHRoZSByZXR1cm5lZCBzZXNzaW9uIChkZWZhdWx0cyB0byB7QGxpbmsgTWVtb3J5U2Vzc2lvblN0b3JhZ2V9KSAqL1xuICBzdG9yYWdlPzogU2lnbmVyU2Vzc2lvblN0b3JhZ2U7XG59XG5cbi8qKlxuICogQ2xpZW50IHRvIHVzZSB0byBzZW5kIHJlcXVlc3RzIHRvIEN1YmVTaWduZXIgc2VydmljZXNcbiAqIHdoZW4gYXV0aGVudGljYXRpbmcgdXNpbmcgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBDdWJlU2lnbmVyQ2xpZW50IGV4dGVuZHMgQ3ViZVNpZ25lckFwaSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtTaWduZXJTZXNzaW9uTWFuYWdlcn0gc2Vzc2lvbk1nciBUaGUgc2Vzc2lvbiBtYW5hZ2VyIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZz99IG9yZ0lkIE9wdGlvbmFsIG9yZ2FuaXphdGlvbiBJRDsgaWYgb21pdHRlZCwgdXNlcyB0aGUgb3JnIElEIGZyb20gdGhlIHNlc3Npb24gbWFuYWdlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNlc3Npb25NZ3I6IFNpZ25lclNlc3Npb25NYW5hZ2VyLCBvcmdJZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNlc3Npb25NZ3IsIG9yZ0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgdXNpbmcgdGhlIHNhbWUgc2Vzc2lvbiBtYW5hZ2VyIGJ1dCB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnSWQgVGhlIG9yZ2FuaXphdGlvbiBJRC5cbiAgICogQHJldHVybiB7Q3ViZVNpZ25lckNsaWVudH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyB1c2luZyB0aGUgc2FtZSBzZXNzaW9uIG1hbmFnZXIgYnV0IHRhcmdldGluZyBkaWZmZXJlbnQgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgd2l0aE9yZyhvcmdJZD86IHN0cmluZyk6IEN1YmVTaWduZXJDbGllbnQge1xuICAgIHJldHVybiBvcmdJZCA/IG5ldyBDdWJlU2lnbmVyQ2xpZW50KHRoaXMuc2Vzc2lvbk1nciwgb3JnSWQpIDogdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhbiBleGlzdGluZyBtYW5hZ2VtZW50IHNlc3Npb24gYW5kIGNyZWF0ZXMgYSB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudH0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7U2lnbmVyU2Vzc2lvblN0b3JhZ2V9IHN0b3JhZ2UgT3B0aW9uYWwgc3RvcmFnZSBmcm9tIHdoaWNoIHRvIGxvYWQgdGhlIHNlc3Npb24gKGRlZmF1bHRzIHRvIHRoZSBkZWZhdWx0IG1hbmFnZW1lbnQgc2Vzc2lvbiBqc29uIGZpbGUgbG9jYXRpb24pXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3ViZVNpZ25lckNsaWVudD59IE5ldyBDdWJlU2lnbmVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgbG9hZE1hbmFnZW1lbnRTZXNzaW9uKHN0b3JhZ2U/OiBTaWduZXJTZXNzaW9uU3RvcmFnZSk6IFByb21pc2U8Q3ViZVNpZ25lckNsaWVudD4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aEpvaW4oY29uZmlnRGlyKCksIFwibWFuYWdlbWVudC1zZXNzaW9uLmpzb25cIik7XG4gICAgc3RvcmFnZSA/Pz0gbmV3IEpzb25GaWxlU2Vzc2lvblN0b3JhZ2UoZmlsZVBhdGgpO1xuXG4gICAgLy8gVGhyb3cgYW5kIGFjdGlvbmFibGUgZXJyb3IgaWYgdGhlIG1hbmFnZW1lbnQgc2Vzc2lvbiBmaWxlIGNvbnRhaW5zIGEgQ29nbml0byBzZXNzaW9uXG4gICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHN0b3JhZ2UucmV0cmlldmUoKTtcbiAgICBpZiAoKHNlc3Npb24gYXMgdW5rbm93biBhcyB7IGlkX3Rva2VuOiBzdHJpbmcgfSkuaWRfdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEl0IGFwcGVhcnMgdGhhdCB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRhaW5zIHRoZSBvbGQgKENvZ25pdG8pIHNlc3Npb247IHBsZWFzZSB1cGRhdGUgeW91ciBzZXNzaW9uIGJ5IHVwZGF0aW5nIHlvdXIgJ2NzJyB0byB2ZXJzaW9uICd2MC4zNy4wJyBvciBsYXRlciBhbmQgdGhlbiBydW5uaW5nICdjcyBsb2dpbidgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZ3IgPSBhd2FpdCBTaWduZXJTZXNzaW9uTWFuYWdlci5sb2FkRnJvbVN0b3JhZ2Uoc3RvcmFnZSk7XG4gICAgcmV0dXJuIG5ldyBDdWJlU2lnbmVyQ2xpZW50KG1ncik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNpZ25pbmcga2V5LlxuICAgKiBAcGFyYW0ge0tleVR5cGV9IHR5cGUgVGhlIHR5cGUgb2Yga2V5IHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmc/fSBvd25lcklkIFRoZSBvd25lciBvZiB0aGUga2V5LiBEZWZhdWx0cyB0byB0aGUgc2Vzc2lvbidzIHVzZXIuXG4gICAqIEByZXR1cm4ge0tleVtdfSBUaGUgbmV3IGtleXMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVLZXkodHlwZTogS2V5VHlwZSwgb3duZXJJZD86IHN0cmluZyk6IFByb21pc2U8S2V5PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmNyZWF0ZUtleXModHlwZSwgMSwgb3duZXJJZCkpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgc2lnbmluZyBrZXlzLlxuICAgKiBAcGFyYW0ge0tleVR5cGV9IHR5cGUgVGhlIHR5cGUgb2Yga2V5IHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IFRoZSBudW1iZXIgb2Yga2V5cyB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nP30gb3duZXJJZCBUaGUgb3duZXIgb2YgdGhlIGtleXMuIERlZmF1bHRzIHRvIHRoZSBzZXNzaW9uJ3MgdXNlci5cbiAgICogQHJldHVybiB7S2V5W119IFRoZSBuZXcga2V5cy5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZUtleXModHlwZTogS2V5VHlwZSwgY291bnQ6IG51bWJlciwgb3duZXJJZD86IHN0cmluZyk6IFByb21pc2U8S2V5W10+IHtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgdGhpcy5rZXlzQ3JlYXRlKHR5cGUsIGNvdW50LCBvd25lcklkKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcywgaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIGtleSBvZiB0aGUgZ2l2ZW4gdHlwZSB1c2luZyB0aGUgZ2l2ZW4gZGVyaXZhdGlvbiBwYXRoIGFuZCBtbmVtb25pYy5cbiAgICogVGhlIG93bmVyIG9mIHRoZSBkZXJpdmVkIGtleSB3aWxsIGJlIHRoZSBvd25lciBvZiB0aGUgbW5lbW9uaWMuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5VHlwZX0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXJpdmF0aW9uUGF0aCBNbmVtb25pYyBkZXJpdmF0aW9uIHBhdGggdXNlZCB0byBnZW5lcmF0ZSBuZXcga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW5lbW9uaWNJZCBtYXRlcmlhbElkIG9mIG1uZW1vbmljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgbmV3IGtleS5cbiAgICpcbiAgICogQHJldHVybiB7S2V5fSBuZXdseSBkZXJpdmVkIGtleSBvciB1bmRlZmluZWQgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gICAqL1xuICBhc3luYyBkZXJpdmVLZXkoXG4gICAgdHlwZTogS2V5VHlwZSxcbiAgICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nLFxuICAgIG1uZW1vbmljSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxLZXkgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZGVyaXZlS2V5cyh0eXBlLCBbZGVyaXZhdGlvblBhdGhdLCBtbmVtb25pY0lkKSlbMF07XG4gIH1cblxuICAvKipcbiAgICogRGVyaXZlIGEgc2V0IG9mIGtleXMgb2YgdGhlIGdpdmVuIHR5cGUgdXNpbmcgdGhlIGdpdmVuIGRlcml2YXRpb24gcGF0aHMgYW5kIG1uZW1vbmljLlxuICAgKlxuICAgKiBUaGUgb3duZXIgb2YgdGhlIGRlcml2ZWQga2V5cyB3aWxsIGJlIHRoZSBvd25lciBvZiB0aGUgbW5lbW9uaWMuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5VHlwZX0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGRlcml2YXRpb25QYXRocyBNbmVtb25pYyBkZXJpdmF0aW9uIHBhdGhzIHVzZWQgdG8gZ2VuZXJhdGUgbmV3IGtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1uZW1vbmljSWQgbWF0ZXJpYWxJZCBvZiBtbmVtb25pYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIG5ldyBrZXkuXG4gICAqXG4gICAqIEByZXR1cm4ge0tleVtdfSBuZXdseSBkZXJpdmVkIGtleXMuXG4gICAqL1xuICBhc3luYyBkZXJpdmVLZXlzKHR5cGU6IEtleVR5cGUsIGRlcml2YXRpb25QYXRoczogc3RyaW5nW10sIG1uZW1vbmljSWQ6IHN0cmluZyk6IFByb21pc2U8S2V5W10+IHtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgdGhpcy5rZXlzRGVyaXZlKHR5cGUsIGRlcml2YXRpb25QYXRocywgbW5lbW9uaWNJZCk7XG4gICAgcmV0dXJuIGtleXMubWFwKChrKSA9PiBuZXcgS2V5KHRoaXMsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIE9pZGNDbGllbnR9IHRoYXQgd2lsbCB1c2UgYSBnaXZlbiBPSURDIHRva2VuIGZvciBhdXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2lkY1Rva2VuIFRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbiB0byB1c2VcbiAgICogQHJldHVybiB7T2lkY0NsaWVudH0gTmV3IE9JREMgY2xpZW50LlxuICAgKi9cbiAgbmV3T2lkY0NsaWVudChvaWRjVG9rZW46IHN0cmluZyk6IE9pZGNDbGllbnQge1xuICAgIHJldHVybiBuZXcgT2lkY0NsaWVudCh0aGlzLnNlc3Npb25NZ3IuZW52LCB0aGlzLm9yZ0lkLCBvaWRjVG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZSBhbiBPSURDIHVzZXIgYW5kIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIG1hbmFnZXIgZm9yIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvaWRjVG9rZW4gVGhlIE9JREMgdG9rZW5cbiAgICogQHBhcmFtIHtMaXN0PHN0cmluZz59IHNjb3BlcyBUaGUgc2NvcGVzIG9mIHRoZSByZXN1bHRpbmcgc2Vzc2lvblxuICAgKiBAcGFyYW0ge09pZGNBdXRoT3B0aW9uc30gb3B0aW9ucyBPcHRpb25zLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFNpZ25lclNlc3Npb25NYW5hZ2VyPn0gVGhlIHNpZ25lciBzZXNzaW9uIG1hbmFnZXJcbiAgICovXG4gIGFzeW5jIG9pZGNBdXRoKFxuICAgIG9pZGNUb2tlbjogc3RyaW5nLFxuICAgIHNjb3BlczogQXJyYXk8c3RyaW5nPixcbiAgICBvcHRpb25zPzogT2lkY0F1dGhPcHRpb25zLFxuICApOiBQcm9taXNlPFNpZ25lclNlc3Npb25NYW5hZ2VyPiB7XG4gICAgY29uc3Qgb2lkY0NsaWVudCA9IHRoaXMubmV3T2lkY0NsaWVudChvaWRjVG9rZW4pO1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBvaWRjQ2xpZW50LnNlc3Npb25DcmVhdGUoc2NvcGVzLCBvcHRpb25zPy5saWZldGltZXMsIG9wdGlvbnM/Lm1mYVJlY2VpcHQpO1xuICAgIHJldHVybiBhd2FpdCBTaWduZXJTZXNzaW9uTWFuYWdlci5sb2FkRnJvbVN0b3JhZ2UobmV3IE1lbW9yeVNlc3Npb25TdG9yYWdlKHJlc3AuZGF0YSgpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHVzZXIgaW4gdGhlIG9yZ2FuaXphdGlvbiBhbmQgc2VuZHMgYW4gaW52aXRhdGlvbiB0byB0aGF0IHVzZXIuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG9yZ1VzZXJJbnZpdGV9LlxuICAgKi9cbiAgZ2V0IGNyZWF0ZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JnVXNlckludml0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBPSURDIHVzZXIuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG9yZ1VzZXJDcmVhdGVPaWRjfS5cbiAgICovXG4gIGdldCBjcmVhdGVPaWRjVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5vcmdVc2VyQ3JlYXRlT2lkYy5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBleGlzdGluZyBPSURDIHVzZXIuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG9yZ1VzZXJEZWxldGVPaWRjfS5cbiAgICovXG4gIGdldCBkZWxldGVPaWRjVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5vcmdVc2VyRGVsZXRlT2lkYy5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdXNlcnMgaW4gdGhlIG9yZ2FuaXphdGlvbi5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgb3JnVXNlcnNMaXN0fVxuICAgKi9cbiAgZ2V0IHVzZXJzKCkge1xuICAgIHJldHVybiB0aGlzLm9yZ1VzZXJzTGlzdC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyR2V0fVxuICAgKi9cbiAgZ2V0IHVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckdldC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIG9yZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmc/fSBvcmdJZCBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgb3JnXG4gICAqIEByZXR1cm4ge1Byb21pc2U8T3JnSW5mbz59IEN1YmVTaWduZXIgY2xpZW50IGZvciB0aGUgcmVxdWVzdGVkIG9yZy5cbiAgICovXG4gIGFzeW5jIG9yZyhvcmdJZD86IHN0cmluZyk6IFByb21pc2U8T3JnSW5mbz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndpdGhPcmcob3JnSWQpLm9yZ0dldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyR2V0fVxuICAgKi9cbiAgZ2V0IGFib3V0TWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckdldC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSBieSBpZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleUlkIFRoZSBpZCBvZiB0aGUga2V5IHRvIGdldC5cbiAgICogQHJldHVybiB7S2V5fSBUaGUga2V5LlxuICAgKi9cbiAgYXN5bmMgZ2V0S2V5KGtleUlkOiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIGNvbnN0IGtleUluZm8gPSBhd2FpdCB0aGlzLmtleUdldChrZXlJZCk7XG4gICAgcmV0dXJuIG5ldyBLZXkodGhpcywga2V5SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBrZXlzIGluIHRoZSBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5VHlwZT99IHR5cGUgT3B0aW9uYWwga2V5IHR5cGUgdG8gZmlsdGVyIGxpc3QgZm9yLlxuICAgKiBAcGFyYW0ge1BhZ2VPcHRzfSBwYWdlIFBhZ2luYXRpb24gb3B0aW9ucy4gRGVmYXVsdHMgdG8gZmV0Y2hpbmcgdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEtleVtdPn0gVGhlIGtleXMuXG4gICAqL1xuICBhc3luYyBvcmdLZXlzKHR5cGU/OiBLZXlUeXBlLCBwYWdlPzogUGFnZU9wdHMpOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3QgcGFnaW5hdG9yID0gdGhpcy5rZXlzTGlzdCh0eXBlLCBwYWdlKTtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgcGFnaW5hdG9yLmZldGNoKCk7XG4gICAgcmV0dXJuIGtleXMubWFwKChrKSA9PiBuZXcgS2V5KHRoaXMsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmc/fSBuYW1lIFRoZSBuYW1lIG9mIHRoZSByb2xlLlxuICAgKiBAcmV0dXJuIHtSb2xlfSBUaGUgbmV3IHJvbGUuXG4gICAqL1xuICBhc3luYyBjcmVhdGVSb2xlKG5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPFJvbGU+IHtcbiAgICBjb25zdCByb2xlSWQgPSBhd2FpdCB0aGlzLnJvbGVDcmVhdGUobmFtZSk7XG4gICAgY29uc3Qgcm9sZUluZm8gPSBhd2FpdCB0aGlzLnJvbGVHZXQocm9sZUlkKTtcbiAgICByZXR1cm4gbmV3IFJvbGUodGhpcywgcm9sZUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHJvbGUgYnkgaWQgb3IgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvbGVJZCBUaGUgaWQgb3IgbmFtZSBvZiB0aGUgcm9sZSB0byBnZXQuXG4gICAqIEByZXR1cm4ge1JvbGV9IFRoZSByb2xlLlxuICAgKi9cbiAgYXN5bmMgZ2V0Um9sZShyb2xlSWQ6IHN0cmluZyk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGVJbmZvID0gYXdhaXQgdGhpcy5yb2xlR2V0KHJvbGVJZCk7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsIHJvbGVJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCByb2xlcyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhZ2VPcHRzfSBwYWdlIFBhZ2luYXRpb24gb3B0aW9ucy4gRGVmYXVsdHMgdG8gZmV0Y2hpbmcgdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgKiBAcmV0dXJuIHtSb2xlW119IFRoZSByb2xlcy5cbiAgICovXG4gIGFzeW5jIGxpc3RSb2xlcyhwYWdlPzogUGFnZU9wdHMpOiBQcm9taXNlPFJvbGVbXT4ge1xuICAgIGNvbnN0IHJvbGVzID0gYXdhaXQgdGhpcy5yb2xlc0xpc3QocGFnZSkuZmV0Y2goKTtcbiAgICByZXR1cm4gcm9sZXMubWFwKChyKSA9PiBuZXcgUm9sZSh0aGlzLCByKSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgdXNlcnMgaW4gdGhlIG9yZy5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgb3JnVXNlcnNMaXN0fVxuICAgKi9cbiAgZ2V0IGxpc3RVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5vcmdVc2Vyc0xpc3QuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgbWZhQXBwcm92ZX1cbiAgICovXG4gIGdldCBhcHByb3ZlTWZhUmVxdWVzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZmFBcHByb3ZlLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgdXNpbmcgVE9UUC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgbWZhQXBwcm92ZVRvdHB9XG4gICAqL1xuICBnZXQgdG90cEFwcHJvdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWZhQXBwcm92ZVRvdHAuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhcHByb3ZhbCBvZiBhbiBleGlzdGluZyBNRkEgcmVxdWVzdCB1c2luZyBGSURPLlxuICAgKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIE1mYUZpZG9DaGFsbGVuZ2V9IHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCBieSBjYWxsaW5nXG4gICAqIHtAbGluayBNZmFGaWRvQ2hhbGxlbmdlLmFuc3dlcn0gb3Ige0BsaW5rIGZpZG9BcHByb3ZlQ29tcGxldGV9LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBtZmFBcHByb3ZlRmlkb0luaXR9XG4gICAqL1xuICBnZXQgZmlkb0FwcHJvdmVTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZmFBcHByb3ZlRmlkb0luaXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnN3ZXIgdGhlIE1GQSBhcHByb3ZhbCB3aXRoIEZJRE8gY2hhbGxlbmdlIGlzc3VlZCBieSB7QGxpbmsgZmlkb0FwcHJvdmVTdGFydH0uXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG1mYUFwcHJvdmVGaWRvQ29tcGxldGV9XG4gICAqL1xuICBnZXQgZmlkb0FwcHJvdmVDb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZmFBcHByb3ZlRmlkb0NvbXBsZXRlLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieSBpdHMgaWQuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIG1mYUdldH1cbiAgICovXG4gIGdldCBnZXRNZmFJbmZvKCkge1xuICAgIHJldHVybiB0aGlzLm1mYUdldC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgcGVuZGluZyBNRkEgcmVxdWVzdHMgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBtZmFMaXN0fVxuICAgKi9cbiAgZ2V0IGxpc3RNZmFJbmZvcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZmFMaXN0LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogT2J0YWluIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIGlkZW50aXR5UHJvdmV9XG4gICAqL1xuICBnZXQgcHJvdmVJZGVudGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVByb3ZlLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBnaXZlbiBwcm9vZiBvZiBPSURDIGF1dGhlbnRpY2F0aW9uIGlzIHZhbGlkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBpZGVudGl0eVZlcmlmeX1cbiAgICovXG4gIGdldCB2ZXJpZnlJZGVudGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVZlcmlmeS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZXF1ZXN0IHRvIGFkZCBhIG5ldyBGSURPIGRldmljZS5cbiAgICpcbiAgICogUmV0dXJucyBhIHtAbGluayBBZGRGaWRvQ2hhbGxlbmdlfSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgYnkgY2FsbGluZyB7QGxpbmsgQWRkRmlkb0NoYWxsZW5nZS5hbnN3ZXJ9LlxuICAgKlxuICAgKiBNRkEgbWF5IGJlIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyRmlkb1JlZ2lzdGVySW5pdH1cbiAgICovXG4gIGdldCBhZGRGaWRvU3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckZpZG9SZWdpc3RlckluaXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudC5cbiAgICogQWxsb3dlZCBvbmx5IGlmIFRPVFAgaXMgYWxzbyBkZWZpbmVkLlxuICAgKiBNRkEgdmlhIFRPVFAgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyRmlkb0RlbGV0ZX1cbiAgICovXG4gIGdldCBkZWxldGVGaWRvKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJGaWRvRGVsZXRlLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlcXVlc3QgdG8gY2hhbmdlIHVzZXIncyBUT1RQLiBSZXR1cm5zIGEge0BsaW5rIFRvdHBDaGFsbGVuZ2V9XG4gICAqIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCBieSBjYWxsaW5nIHtAbGluayBUb3RwQ2hhbGxlbmdlLmFuc3dlcn0gb3JcbiAgICoge0BsaW5rIHJlc2V0VG90cENvbXBsZXRlfS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlclRvdHBSZXNldEluaXR9XG4gICAqL1xuICBnZXQgcmVzZXRUb3RwU3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlclRvdHBSZXNldEluaXQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnN3ZXIgdGhlIFRPVFAgY2hhbGxlbmdlIGlzc3VlZCBieSB7QGxpbmsgcmVzZXRUb3RwU3RhcnR9LiBJZiBzdWNjZXNzZnVsLFxuICAgKiB1c2VyJ3MgVE9UUCBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXBkYXRlZCB0byB0aGF0IG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgdXNlclRvdHBSZXNldENvbXBsZXRlfVxuICAgKi9cbiAgZ2V0IHJlc2V0VG90cENvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJUb3RwUmVzZXRDb21wbGV0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgZ2l2ZW4gVE9UUCBjb2RlIGFnYWluc3QgdGhlIGN1cnJlbnQgdXNlcidzIFRPVFAgY29uZmlndXJhdGlvbi5cbiAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIHVzZXJUb3RwVmVyaWZ5fVxuICAgKi9cbiAgZ2V0IHZlcmlmeVRvdHAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlclRvdHBWZXJpZnkuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudC5cbiAgICogQWxsb3dlZCBvbmx5IGlmIGF0IGxlYXN0IG9uZSBGSURPIGtleSBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHVzZXIncyBhY2NvdW50LlxuICAgKiBNRkEgdmlhIEZJRE8gaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayB1c2VyVG90cERlbGV0ZX0uXG4gICAqL1xuICBnZXQgZGVsZXRlVG90cCgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyVG90cERlbGV0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYSBzdGFrZSByZXF1ZXN0LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBzaWduU3Rha2V9XG4gICAqL1xuICBnZXQgc3Rha2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2lnblN0YWtlLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhbiB1bnN0YWtlIHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIHNpZ25VbnN0YWtlfVxuICAgKi9cbiAgZ2V0IHVuc3Rha2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2lnblVuc3Rha2UuYmluZCh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { operations } from "./schema";
2
+ /**
3
+ * Error response type, thrown on non-successful responses.
4
+ */
5
+ export declare class ErrResponse extends Error {
6
+ /** Operation that produced this error */
7
+ readonly operation?: keyof operations;
8
+ /** HTTP status code text (derived from `this.status`) */
9
+ readonly statusText?: string;
10
+ /** HTTP status code */
11
+ readonly status?: number;
12
+ /** HTTP response url */
13
+ readonly url?: string;
14
+ /**
15
+ * @param {Partial<ErrResponse>} init Initializer
16
+ */
17
+ constructor(init: Partial<ErrResponse>);
18
+ }
19
+ /**
20
+ * An error that is thrown when a session has expired
21
+ */
22
+ export declare class SessionExpiredError extends ErrResponse {
23
+ /**
24
+ * Constructor.
25
+ *
26
+ * @param {operations} operation The operation that was attempted
27
+ */
28
+ constructor(operation?: keyof operations);
29
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionExpiredError = exports.ErrResponse = void 0;
4
+ /**
5
+ * Error response type, thrown on non-successful responses.
6
+ */
7
+ class ErrResponse extends Error {
8
+ /**
9
+ * @param {Partial<ErrResponse>} init Initializer
10
+ */
11
+ constructor(init) {
12
+ super(init.message);
13
+ Object.assign(this, init);
14
+ }
15
+ }
16
+ exports.ErrResponse = ErrResponse;
17
+ /**
18
+ * An error that is thrown when a session has expired
19
+ */
20
+ class SessionExpiredError extends ErrResponse {
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * @param {operations} operation The operation that was attempted
25
+ */
26
+ constructor(operation) {
27
+ super({
28
+ message: "Session has expired",
29
+ status: 403,
30
+ statusText: "Forbidden",
31
+ operation,
32
+ });
33
+ }
34
+ }
35
+ exports.SessionExpiredError = SessionExpiredError;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDSCxNQUFhLFdBQVksU0FBUSxLQUFLO0lBVXBDOztPQUVHO0lBQ0gsWUFBWSxJQUEwQjtRQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQWpCRCxrQ0FpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsV0FBVztJQUNsRDs7OztPQUlHO0lBQ0gsWUFBWSxTQUE0QjtRQUN0QyxLQUFLLENBQUM7WUFDSixPQUFPLEVBQUUscUJBQXFCO1lBQzlCLE1BQU0sRUFBRSxHQUFHO1lBQ1gsVUFBVSxFQUFFLFdBQVc7WUFDdkIsU0FBUztTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWRELGtEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb3BlcmF0aW9ucyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG4vKipcbiAqIEVycm9yIHJlc3BvbnNlIHR5cGUsIHRocm93biBvbiBub24tc3VjY2Vzc2Z1bCByZXNwb25zZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFcnJSZXNwb25zZSBleHRlbmRzIEVycm9yIHtcbiAgLyoqIE9wZXJhdGlvbiB0aGF0IHByb2R1Y2VkIHRoaXMgZXJyb3IgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uPzoga2V5b2Ygb3BlcmF0aW9ucztcbiAgLyoqIEhUVFAgc3RhdHVzIGNvZGUgdGV4dCAoZGVyaXZlZCBmcm9tIGB0aGlzLnN0YXR1c2ApICovXG4gIHJlYWRvbmx5IHN0YXR1c1RleHQ/OiBzdHJpbmc7XG4gIC8qKiBIVFRQIHN0YXR1cyBjb2RlICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IG51bWJlcjtcbiAgLyoqIEhUVFAgcmVzcG9uc2UgdXJsICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtQYXJ0aWFsPEVyclJlc3BvbnNlPn0gaW5pdCBJbml0aWFsaXplclxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5pdDogUGFydGlhbDxFcnJSZXNwb25zZT4pIHtcbiAgICBzdXBlcihpbml0Lm1lc3NhZ2UpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBlcnJvciB0aGF0IGlzIHRocm93biB3aGVuIGEgc2Vzc2lvbiBoYXMgZXhwaXJlZFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkV4cGlyZWRFcnJvciBleHRlbmRzIEVyclJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge29wZXJhdGlvbnN9IG9wZXJhdGlvbiBUaGUgb3BlcmF0aW9uIHRoYXQgd2FzIGF0dGVtcHRlZFxuICAgKi9cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uPzoga2V5b2Ygb3BlcmF0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIG1lc3NhZ2U6IFwiU2Vzc2lvbiBoYXMgZXhwaXJlZFwiLFxuICAgICAgc3RhdHVzOiA0MDMsXG4gICAgICBzdGF0dXNUZXh0OiBcIkZvcmJpZGRlblwiLFxuICAgICAgb3BlcmF0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ErrResponse } from "./api";
1
+ import { ErrResponse } from "./error";
2
2
  export type EventHandler<T> = (event: T) => Promise<void>;
3
3
  export type ErrorEvent = ErrResponse;
4
4
  export interface SessionExpiredEvent {
@@ -192,4 +192,4 @@ _EventEmitter_events = new WeakMap();
192
192
  * Global events.
193
193
  */
194
194
  exports.GlobalEvents = new Events();
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQTs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZTtJQUduQjs7T0FFRztJQUNIO1FBTFMsNENBQTZCO1FBTXBDLHVCQUFBLElBQUksNkJBQWEsRUFBRSxNQUFBLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLHVCQUFBLElBQUksaUNBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsT0FBd0I7UUFDakMsTUFBTSxHQUFHLEdBQUcsdUJBQUEsSUFBSSxpQ0FBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNiLHVCQUFBLElBQUksaUNBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFRO1FBQ3JCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBQSxJQUFJLGlDQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjs7QUFFRCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLG9FQUFvRTtJQUNwRSx5RUFBeUU7SUFDekUsa0RBQWtEO0lBQ2xELHlEQUF5RDtJQUN6RCxvQkFBb0I7Q0FD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ZXNDb250ZW50IjpbImltcG9ydCB7IEVyclJlc3BvbnNlIH0gZnJvbSBcIi4vYXBpXCI7XG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlcjxUPiA9IChldmVudDogVCkgPT4gUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIEVycm9yRXZlbnQgPSBFcnJSZXNwb25zZTtcbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkV4cGlyZWRFdmVudCB7fVxuXG4vKipcbiAqIERpc3BhdGNoZXIgZm9yIGEgc2luZ2xlIGV2ZW50IHR5cGUuXG4gKlxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgaGFuZGxlcnMsXG4gKiBhcyB3ZWxsIGFzIGRpc3BhdGNoaW5nIGV2ZW50cyB0byBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVycy5cbiAqL1xuY2xhc3MgRXZlbnREaXNwYXRjaGVyPFQ+IHtcbiAgcmVhZG9ubHkgI2hhbmRsZXJzOiBFdmVudEhhbmRsZXI8VD5bXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNoYW5kbGVycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbmV3IGhhbmRsZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnRIYW5kbGVyPFQ+fSBoYW5kbGVyIEV2ZW50IGhhbmRsZXIgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7RXZlbnREaXNwYXRjaGVyPFQ+fSBUaGlzIGluc3RhbmNlIHRvIGFsbG93IGZvciBjaGFpbmluZy5cbiAgICovXG4gIHJlZ2lzdGVyKGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxUPik6IEV2ZW50RGlzcGF0Y2hlcjxUPiB7XG4gICAgdGhpcy4jaGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIGEgaGFuZGxlci4gSWYge0BsaW5rIGhhbmRsZXJ9IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQsIGl0J3MgYSBuby1vcC5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudEhhbmRsZXI8VD59IGhhbmRsZXIgRXZlbnQgaGFuZGxlciB0byB1bnJlZ2lzdGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGhhbmRsZXIgd2FzIGZvdW5kIChhbmQgdW5yZWdpc3RlcmVkKS5cbiAgICovXG4gIHVucmVnaXN0ZXIoaGFuZGxlcjogRXZlbnRIYW5kbGVyPFQ+KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy4jaGFuZGxlcnMuaW5kZXhPZihoYW5kbGVyKTtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgIHRoaXMuI2hhbmRsZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYW4gZXZlbnQgdG8gYWxsIHJlZ2lzdGVyZWQgaGFuZGxlcnMuXG4gICAqIEBwYXJhbSB7VH0gZXZlbnQgRXZlbnQgdG8gZGlzcGF0Y2guXG4gICAqL1xuICBhc3luYyBkaXNwYXRjaChldmVudDogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuI2hhbmRsZXJzLm1hcCgoaCkgPT4gaChldmVudCkpKTtcbiAgfVxufVxuXG5jb25zdCBTZXNzaW9uRXhwaXJlZFJlZ2V4ZXMgPSBbXG4gIC9eU2Vzc2lvbiAnKD88cHVycG9zZT5bXiddKiknIGZvciAnKD88aWRlbnRpdHk+W14nXSopJyBoYXMgZXhwaXJlZCQvLFxuICAvXlNlc3Npb24gJyg/PHB1cnBvc2U+W14nXSopJyBmb3IgJyg/PGlkZW50aXR5PlteJ10qKScgaGFzIGJlZW4gcmV2b2tlZCQvLFxuICAvXkF1dGggdG9rZW4gZm9yIGVwb2NoICg/PGVwb2NoPlxcZCspIGhhcyBleHBpcmVkJC8sXG4gIC9eUmVmcmVzaCB0b2tlbiBmb3IgZXBvY2ggKD88ZXBvY2hfbnVtPlxcZCspIGhhcyBleHBpcmVkJC8sXG4gIC9eT3V0ZGF0ZWQgc2Vzc2lvbiQvLFxuXTtcblxuLyoqXG4gKiBXaGV0aGVyIGFuIGVycm9yIG1lc3NhZ2UgbWF0Y2hlcyBvbmUgb2Ygc2V2ZXJhbCBkaWZmZXJlbnQgXCJzZXNzaW9uIGV4cGlyZWRcIiByZXNwb25zZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyBUaGUgc3RyaW5nIHRvIHRlc3QuXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBzdHJpbmcgbWF0Y2hlcy5cbiAqIEBpbnRlcm5hbCBFeHBvcnRlZCBvbmx5IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tIGEgdW5pdCB0ZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXNzYWdlTWF0Y2hlc1Nlc3Npb25FeHBpcmVkKG1zZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBTZXNzaW9uRXhwaXJlZFJlZ2V4ZXMuc29tZSgocmUpID0+IHJlLnRlc3QobXNnKSk7XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIGV2ZW50IGhhbmRsZXJzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzIHtcbiAgcmVhZG9ubHkgI29uRXJyb3IgPSBuZXcgRXZlbnREaXNwYXRjaGVyPEVycm9yRXZlbnQ+KCk7XG4gIHJlYWRvbmx5ICNvblNlc3Npb25FeHBpcmVkID0gbmV3IEV2ZW50RGlzcGF0Y2hlcjxTZXNzaW9uRXhwaXJlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGhhbmRsZXIgZm9yIHtAbGluayBFcnJvckV2ZW50fTogdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgYSByZXF1ZXN0IHRvXG4gICAqIGEgQ3ViZVNpZ25lciBBUEkgZW5kcG9pbnQgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50SGFuZGxlcjxFcnJvckV2ZW50Pn0gaGFuZGxlciBUaGUgaGFuZGxlciB0byByZWdpc3Rlci5cbiAgICovXG4gIG9uRXJyb3IoaGFuZGxlcjogRXZlbnRIYW5kbGVyPEVycm9yRXZlbnQ+KSB7XG4gICAgdGhpcy4jb25FcnJvci5yZWdpc3RlcihoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGhhbmRsZXIgZm9yIHtAbGluayBTZXNzaW9uRXhwaXJlZEV2ZW50fTogdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgYVxuICAgKiByZXF1ZXN0IHRvIGEgQ3ViZVNpZ25lciBBUEkgZW5kcG9pbnQgZmFpbHMgYmVjYXVzZSBvZiBhbiBleHBpcmVkIHNlc3Npb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnRIYW5kbGVyPFNlc3Npb25FeHBpcmVkRXZlbnQ+fSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgb25TZXNzaW9uRXhwaXJlZChoYW5kbGVyOiBFdmVudEhhbmRsZXI8U2Vzc2lvbkV4cGlyZWRFdmVudD4pIHtcbiAgICB0aGlzLiNvblNlc3Npb25FeHBpcmVkLnJlZ2lzdGVyKGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYSBoYW5kbGVyIGZvciB7QGxpbmsgRXJyb3JFdmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnRIYW5kbGVyPEVycm9yRXZlbnQ+fSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHVucmVnaXN0ZXIuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGhhbmRsZXIgd2FzIGZvdW5kIChhbmQgdW5yZWdpc3RlcmVkKS5cbiAgICovXG4gIHVucmVnaXN0ZXJPbkVycm9yKGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxFcnJvckV2ZW50Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNvbkVycm9yLnVucmVnaXN0ZXIoaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlciBhIGhhbmRsZXIgZm9yIHtAbGluayBTZXNzaW9uRXhwaXJlZEV2ZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudEhhbmRsZXI8U2Vzc2lvbkV4cGlyZWRFdmVudD59IGhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gdW5yZWdpc3Rlci5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaGFuZGxlciB3YXMgZm91bmQgKGFuZCB1bnJlZ2lzdGVyZWQpLlxuICAgKi9cbiAgdW5yZWdpc3Rlck9uU2Vzc2lvbkV4cGlyZWQoaGFuZGxlcjogRXZlbnRIYW5kbGVyPFNlc3Npb25FeHBpcmVkRXZlbnQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI29uU2Vzc2lvbkV4cGlyZWQudW5yZWdpc3RlcihoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYXN5bmMgdHJpZ2dlclNlc3Npb25FeHBpcmVkKCkge1xuICAgIGF3YWl0IHRoaXMuI29uU2Vzc2lvbkV4cGlyZWQuZGlzcGF0Y2goPFNlc3Npb25FeHBpcmVkRXZlbnQ+e30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXJyb3JFdmVudH0gZXZlbnQgRXZlbnQgdG8gdHJpZ2dlclxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGFzeW5jIHRyaWdnZXJFcnJvckV2ZW50KGV2ZW50OiBFcnJvckV2ZW50KSB7XG4gICAgYXdhaXQgdGhpcy4jb25FcnJvci5kaXNwYXRjaChldmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNsYXNzaWZ5IGFuZCBlbWl0IGV2ZW50cyB0byBvbmUgb3IgbW9yZSB7QGxpbmsgRXZlbnRzfSBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEVtaXR0ZXIge1xuICByZWFkb25seSAjZXZlbnRzOiBFdmVudHNbXTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudHNbXX0gZXZlbnRzIEluc3RhbmNlcyB0byB3aGljaCB0byBlbWl0IGV2ZW50c1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNraXBHbG9iYWwgV2hldGhlciB0byBpbmNsdWRlIHRoZSBnbG9iYWwgZXZlbnRzIGluc3RhbmNlIHtAbGluayBHbG9iYWxFdmVudHN9XG4gICAqL1xuICBjb25zdHJ1Y3RvcihldmVudHM6IEV2ZW50c1tdLCBza2lwR2xvYmFsPzogYm9vbGVhbikge1xuICAgIHNraXBHbG9iYWwgPz89IGZhbHNlO1xuICAgIHRoaXMuI2V2ZW50cyA9IGV2ZW50cztcbiAgICBpZiAoIXNraXBHbG9iYWwpIHtcbiAgICAgIHRoaXMuI2V2ZW50cy5wdXNoKEdsb2JhbEV2ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB7QGxpbmsgQ3ViZVNpZ25lckFwaX0gd2hlbiBhbiBBUEkgcmVzcG9uc2UgaW5kaWNhdGVzIGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0ge0Vycm9yRXZlbnR9IGVyciBUaGUgZXJyb3IgdG8gZGlzcGF0Y2guXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYXN5bmMgY2xhc3NpZnlBbmRFbWl0RXJyb3IoZXJyOiBFcnJvckV2ZW50KSB7XG4gICAgZm9yIChjb25zdCBldiBvZiB0aGlzLiNldmVudHMpIHtcbiAgICAgIGF3YWl0IGV2LnRyaWdnZXJFcnJvckV2ZW50KGVycik7XG4gICAgfVxuXG4gICAgLy8gaWYgc3RhdHVzIGlzIDQwMyBhbmQgZXJyb3IgbWF0Y2hlcyBvbmUgb2YgdGhlIFNlc3Npb25FeHBpcmVkUmVnZXhlcyB0cmlnZ2VyIG9uU2Vzc2lvbkV4cGlyZWRcbiAgICAvL1xuICAgIC8vIFRPRE86IGJlY2F1c2UgZXJyb3JzIHJldHVybmVkIGJ5IHRoZSBhdXRob3JpemVyIGxhbWJkYSBhcmUgbm90IGZvcndhcmRlZCB0byB0aGUgY2xpZW50XG4gICAgLy8gICAgICAgd2UgYWxzbyB0cmlnZ2VyIG9uU2Vzc2lvbkV4cGlyZWQgd2hlbiBcInNpZ25lclNlc3Npb25SZWZyZXNoXCIgZmFpbHNcbiAgICBpZiAoXG4gICAgICBlcnIuc3RhdHVzID09PSA0MDMgJiZcbiAgICAgIChtZXNzYWdlTWF0Y2hlc1Nlc3Npb25FeHBpcmVkKGVyci5tZXNzYWdlKSB8fCBlcnIub3BlcmF0aW9uID09IFwic2lnbmVyU2Vzc2lvblJlZnJlc2hcIilcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMuZW1pdFNlc3Npb25FeHBpcmVkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB7QGxpbmsgU2lnbmVyU2Vzc2lvbk1hbmFnZXJ9IHRvIG5vdGlmeSB0aGF0IHRoZSBzZXNzaW9uIGlzIGV4cGlyZWRcbiAgICogYmV5b25kIHRoZSBwb3NzaWJpbGl0eSBvZiByZWZyZXNoaW5nLCBtZWFuaW5nIHRoYXQgZnVsbCByZS1sb2dpbiBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBhc3luYyBlbWl0U2Vzc2lvbkV4cGlyZWQoKSB7XG4gICAgZm9yIChjb25zdCBlIG9mIHRoaXMuI2V2ZW50cykge1xuICAgICAgYXdhaXQgZS50cmlnZ2VyU2Vzc2lvbkV4cGlyZWQoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHbG9iYWwgZXZlbnRzLlxuICovXG5leHBvcnQgY29uc3QgR2xvYmFsRXZlbnRzID0gbmV3IEV2ZW50cygpO1xuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFRQTs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZTtJQUduQjs7T0FFRztJQUNIO1FBTFMsNENBQTZCO1FBTXBDLHVCQUFBLElBQUksNkJBQWEsRUFBRSxNQUFBLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLHVCQUFBLElBQUksaUNBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsT0FBd0I7UUFDakMsTUFBTSxHQUFHLEdBQUcsdUJBQUEsSUFBSSxpQ0FBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNiLHVCQUFBLElBQUksaUNBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFRO1FBQ3JCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBQSxJQUFJLGlDQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjs7QUFFRCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLG9FQUFvRTtJQUNwRSx5RUFBeUU7SUFDekUsa0RBQWtEO0lBQ2xELHlEQUF5RDtJQUN6RCxvQkFBb0I7Q0FD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ZXNDb250ZW50IjpbImltcG9ydCB7IEVyclJlc3BvbnNlIH0gZnJvbSBcIi4vZXJyb3JcIjtcblxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyPFQ+ID0gKGV2ZW50OiBUKSA9PiBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IHR5cGUgRXJyb3JFdmVudCA9IEVyclJlc3BvbnNlO1xuXG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uRXhwaXJlZEV2ZW50IHt9XG5cbi8qKlxuICogRGlzcGF0Y2hlciBmb3IgYSBzaW5nbGUgZXZlbnQgdHlwZS5cbiAqXG4gKiBQcm92aWRlcyBtZXRob2RzIGZvciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyBoYW5kbGVycyxcbiAqIGFzIHdlbGwgYXMgZGlzcGF0Y2hpbmcgZXZlbnRzIHRvIGFsbCByZWdpc3RlcmVkIGhhbmRsZXJzLlxuICovXG5jbGFzcyBFdmVudERpc3BhdGNoZXI8VD4ge1xuICByZWFkb25seSAjaGFuZGxlcnM6IEV2ZW50SGFuZGxlcjxUPltdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2hhbmRsZXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBuZXcgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudEhhbmRsZXI8VD59IGhhbmRsZXIgRXZlbnQgaGFuZGxlciB0byByZWdpc3RlclxuICAgKiBAcmV0dXJuIHtFdmVudERpc3BhdGNoZXI8VD59IFRoaXMgaW5zdGFuY2UgdG8gYWxsb3cgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgcmVnaXN0ZXIoaGFuZGxlcjogRXZlbnRIYW5kbGVyPFQ+KTogRXZlbnREaXNwYXRjaGVyPFQ+IHtcbiAgICB0aGlzLiNoYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYSBoYW5kbGVyLiBJZiB7QGxpbmsgaGFuZGxlcn0gaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCwgaXQncyBhIG5vLW9wLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50SGFuZGxlcjxUPn0gaGFuZGxlciBFdmVudCBoYW5kbGVyIHRvIHVucmVnaXN0ZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaGFuZGxlciB3YXMgZm91bmQgKGFuZCB1bnJlZ2lzdGVyZWQpLlxuICAgKi9cbiAgdW5yZWdpc3RlcihoYW5kbGVyOiBFdmVudEhhbmRsZXI8VD4pOiBib29sZWFuIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLiNoYW5kbGVycy5pbmRleE9mKGhhbmRsZXIpO1xuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgdGhpcy4jaGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBhbiBldmVudCB0byBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVycy5cbiAgICogQHBhcmFtIHtUfSBldmVudCBFdmVudCB0byBkaXNwYXRjaC5cbiAgICovXG4gIGFzeW5jIGRpc3BhdGNoKGV2ZW50OiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy4jaGFuZGxlcnMubWFwKChoKSA9PiBoKGV2ZW50KSkpO1xuICB9XG59XG5cbmNvbnN0IFNlc3Npb25FeHBpcmVkUmVnZXhlcyA9IFtcbiAgL15TZXNzaW9uICcoPzxwdXJwb3NlPlteJ10qKScgZm9yICcoPzxpZGVudGl0eT5bXiddKiknIGhhcyBleHBpcmVkJC8sXG4gIC9eU2Vzc2lvbiAnKD88cHVycG9zZT5bXiddKiknIGZvciAnKD88aWRlbnRpdHk+W14nXSopJyBoYXMgYmVlbiByZXZva2VkJC8sXG4gIC9eQXV0aCB0b2tlbiBmb3IgZXBvY2ggKD88ZXBvY2g+XFxkKykgaGFzIGV4cGlyZWQkLyxcbiAgL15SZWZyZXNoIHRva2VuIGZvciBlcG9jaCAoPzxlcG9jaF9udW0+XFxkKykgaGFzIGV4cGlyZWQkLyxcbiAgL15PdXRkYXRlZCBzZXNzaW9uJC8sXG5dO1xuXG4vKipcbiAqIFdoZXRoZXIgYW4gZXJyb3IgbWVzc2FnZSBtYXRjaGVzIG9uZSBvZiBzZXZlcmFsIGRpZmZlcmVudCBcInNlc3Npb24gZXhwaXJlZFwiIHJlc3BvbnNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHN0cmluZyBtYXRjaGVzLlxuICogQGludGVybmFsIEV4cG9ydGVkIG9ubHkgc28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gYSB1bml0IHRlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lc3NhZ2VNYXRjaGVzU2Vzc2lvbkV4cGlyZWQobXNnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFNlc3Npb25FeHBpcmVkUmVnZXhlcy5zb21lKChyZSkgPT4gcmUudGVzdChtc2cpKTtcbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgZXZlbnQgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudHMge1xuICByZWFkb25seSAjb25FcnJvciA9IG5ldyBFdmVudERpc3BhdGNoZXI8RXJyb3JFdmVudD4oKTtcbiAgcmVhZG9ubHkgI29uU2Vzc2lvbkV4cGlyZWQgPSBuZXcgRXZlbnREaXNwYXRjaGVyPFNlc3Npb25FeHBpcmVkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgaGFuZGxlciBmb3Ige0BsaW5rIEVycm9yRXZlbnR9OiB0cmlnZ2VyZWQgZXZlcnkgdGltZSBhIHJlcXVlc3QgdG9cbiAgICogYSBDdWJlU2lnbmVyIEFQSSBlbmRwb2ludCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3MgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnRIYW5kbGVyPEVycm9yRXZlbnQ+fSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgb25FcnJvcihoYW5kbGVyOiBFdmVudEhhbmRsZXI8RXJyb3JFdmVudD4pIHtcbiAgICB0aGlzLiNvbkVycm9yLnJlZ2lzdGVyKGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgaGFuZGxlciBmb3Ige0BsaW5rIFNlc3Npb25FeHBpcmVkRXZlbnR9OiB0cmlnZ2VyZWQgZXZlcnkgdGltZSBhXG4gICAqIHJlcXVlc3QgdG8gYSBDdWJlU2lnbmVyIEFQSSBlbmRwb2ludCBmYWlscyBiZWNhdXNlIG9mIGFuIGV4cGlyZWQgc2Vzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudEhhbmRsZXI8U2Vzc2lvbkV4cGlyZWRFdmVudD59IGhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBvblNlc3Npb25FeHBpcmVkKGhhbmRsZXI6IEV2ZW50SGFuZGxlcjxTZXNzaW9uRXhwaXJlZEV2ZW50Pikge1xuICAgIHRoaXMuI29uU2Vzc2lvbkV4cGlyZWQucmVnaXN0ZXIoaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlciBhIGhhbmRsZXIgZm9yIHtAbGluayBFcnJvckV2ZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudEhhbmRsZXI8RXJyb3JFdmVudD59IGhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gdW5yZWdpc3Rlci5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaGFuZGxlciB3YXMgZm91bmQgKGFuZCB1bnJlZ2lzdGVyZWQpLlxuICAgKi9cbiAgdW5yZWdpc3Rlck9uRXJyb3IoaGFuZGxlcjogRXZlbnRIYW5kbGVyPEVycm9yRXZlbnQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI29uRXJyb3IudW5yZWdpc3RlcihoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIGEgaGFuZGxlciBmb3Ige0BsaW5rIFNlc3Npb25FeHBpcmVkRXZlbnR9LlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50SGFuZGxlcjxTZXNzaW9uRXhwaXJlZEV2ZW50Pn0gaGFuZGxlciBUaGUgaGFuZGxlciB0byB1bnJlZ2lzdGVyLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBoYW5kbGVyIHdhcyBmb3VuZCAoYW5kIHVucmVnaXN0ZXJlZCkuXG4gICAqL1xuICB1bnJlZ2lzdGVyT25TZXNzaW9uRXhwaXJlZChoYW5kbGVyOiBFdmVudEhhbmRsZXI8U2Vzc2lvbkV4cGlyZWRFdmVudD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jb25TZXNzaW9uRXhwaXJlZC51bnJlZ2lzdGVyKGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBhc3luYyB0cmlnZ2VyU2Vzc2lvbkV4cGlyZWQoKSB7XG4gICAgYXdhaXQgdGhpcy4jb25TZXNzaW9uRXhwaXJlZC5kaXNwYXRjaCg8U2Vzc2lvbkV4cGlyZWRFdmVudD57fSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvckV2ZW50fSBldmVudCBFdmVudCB0byB0cmlnZ2VyXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYXN5bmMgdHJpZ2dlckVycm9yRXZlbnQoZXZlbnQ6IEVycm9yRXZlbnQpIHtcbiAgICBhd2FpdCB0aGlzLiNvbkVycm9yLmRpc3BhdGNoKGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZWQgdG8gY2xhc3NpZnkgYW5kIGVtaXQgZXZlbnRzIHRvIG9uZSBvciBtb3JlIHtAbGluayBFdmVudHN9IGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50RW1pdHRlciB7XG4gIHJlYWRvbmx5ICNldmVudHM6IEV2ZW50c1tdO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50c1tdfSBldmVudHMgSW5zdGFuY2VzIHRvIHdoaWNoIHRvIGVtaXQgZXZlbnRzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2tpcEdsb2JhbCBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGdsb2JhbCBldmVudHMgaW5zdGFuY2Uge0BsaW5rIEdsb2JhbEV2ZW50c31cbiAgICovXG4gIGNvbnN0cnVjdG9yKGV2ZW50czogRXZlbnRzW10sIHNraXBHbG9iYWw/OiBib29sZWFuKSB7XG4gICAgc2tpcEdsb2JhbCA/Pz0gZmFsc2U7XG4gICAgdGhpcy4jZXZlbnRzID0gZXZlbnRzO1xuICAgIGlmICghc2tpcEdsb2JhbCkge1xuICAgICAgdGhpcy4jZXZlbnRzLnB1c2goR2xvYmFsRXZlbnRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHtAbGluayBDdWJlU2lnbmVyQXBpfSB3aGVuIGFuIEFQSSByZXNwb25zZSBpbmRpY2F0ZXMgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBwYXJhbSB7RXJyb3JFdmVudH0gZXJyIFRoZSBlcnJvciB0byBkaXNwYXRjaC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBhc3luYyBjbGFzc2lmeUFuZEVtaXRFcnJvcihlcnI6IEVycm9yRXZlbnQpIHtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIHRoaXMuI2V2ZW50cykge1xuICAgICAgYXdhaXQgZXYudHJpZ2dlckVycm9yRXZlbnQoZXJyKTtcbiAgICB9XG5cbiAgICAvLyBpZiBzdGF0dXMgaXMgNDAzIGFuZCBlcnJvciBtYXRjaGVzIG9uZSBvZiB0aGUgU2Vzc2lvbkV4cGlyZWRSZWdleGVzIHRyaWdnZXIgb25TZXNzaW9uRXhwaXJlZFxuICAgIC8vXG4gICAgLy8gVE9ETzogYmVjYXVzZSBlcnJvcnMgcmV0dXJuZWQgYnkgdGhlIGF1dGhvcml6ZXIgbGFtYmRhIGFyZSBub3QgZm9yd2FyZGVkIHRvIHRoZSBjbGllbnRcbiAgICAvLyAgICAgICB3ZSBhbHNvIHRyaWdnZXIgb25TZXNzaW9uRXhwaXJlZCB3aGVuIFwic2lnbmVyU2Vzc2lvblJlZnJlc2hcIiBmYWlsc1xuICAgIGlmIChcbiAgICAgIGVyci5zdGF0dXMgPT09IDQwMyAmJlxuICAgICAgKG1lc3NhZ2VNYXRjaGVzU2Vzc2lvbkV4cGlyZWQoZXJyLm1lc3NhZ2UpIHx8IGVyci5vcGVyYXRpb24gPT0gXCJzaWduZXJTZXNzaW9uUmVmcmVzaFwiKVxuICAgICkge1xuICAgICAgYXdhaXQgdGhpcy5lbWl0U2Vzc2lvbkV4cGlyZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHtAbGluayBTaWduZXJTZXNzaW9uTWFuYWdlcn0gdG8gbm90aWZ5IHRoYXQgdGhlIHNlc3Npb24gaXMgZXhwaXJlZFxuICAgKiBiZXlvbmQgdGhlIHBvc3NpYmlsaXR5IG9mIHJlZnJlc2hpbmcsIG1lYW5pbmcgdGhhdCBmdWxsIHJlLWxvZ2luIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGFzeW5jIGVtaXRTZXNzaW9uRXhwaXJlZCgpIHtcbiAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy4jZXZlbnRzKSB7XG4gICAgICBhd2FpdCBlLnRyaWdnZXJTZXNzaW9uRXhwaXJlZCgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdsb2JhbCBldmVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBHbG9iYWxFdmVudHMgPSBuZXcgRXZlbnRzKCk7XG4iXX0=
@@ -5,7 +5,6 @@ import { Org } from "./org";
5
5
  import { SignerSessionStorage, SignerSessionManager, SignerSessionData } from "./session/signer_session_manager";
6
6
  import { CubeSignerResponse } from "./response";
7
7
  import { SignerSession } from "./signer_session";
8
- import { CognitoSessionManager, CognitoSessionStorage } from "./session/cognito_manager";
9
8
  import { MfaReceipt } from "./mfa";
10
9
  import { IdentityProof, MfaRequestInfo, RatchetConfig, UserInfo } from "./schema_types";
11
10
  /** CubeSigner constructor options */
@@ -13,7 +12,7 @@ export interface CubeSignerOptions {
13
12
  /** The environment to use */
14
13
  env?: EnvInterface;
15
14
  /** The management authorization token */
16
- sessionMgr?: CognitoSessionManager | SignerSessionManager;
15
+ sessionMgr?: SignerSessionManager;
17
16
  /** Optional organization id */
18
17
  orgId?: string;
19
18
  }
@@ -24,7 +23,7 @@ export interface CubeSignerOptions {
24
23
  */
25
24
  export declare class CubeSigner {
26
25
  #private;
27
- readonly sessionMgr?: CognitoSessionManager | SignerSessionManager;
26
+ readonly sessionMgr?: SignerSessionManager;
28
27
  /**
29
28
  * Underlying {@link CubeSignerClient} instance, if set; otherwise throws.
30
29
  * @internal
@@ -42,12 +41,12 @@ export declare class CubeSigner {
42
41
  /**
43
42
  * Loads an existing management session and creates a CubeSigner instance.
44
43
  *
45
- * @param {CognitoSessionStorage} storage Optional session storage to load
44
+ * @param {SignerSessionStorage} storage Optional session storage to load
46
45
  * the session from. If not specified, the management session from the config
47
46
  * directory will be loaded.
48
47
  * @return {Promise<CubeSigner>} New CubeSigner instance
49
48
  */
50
- static loadManagementSession(storage?: CognitoSessionStorage): Promise<CubeSigner>;
49
+ static loadManagementSession(storage?: SignerSessionStorage): Promise<CubeSigner>;
51
50
  /**
52
51
  * Loads a signer session from a session storage (e.g., session file).
53
52
  * @param {SignerSessionStorage} storage Optional session storage to load
@@ -168,6 +167,8 @@ export declare class CubeSigner {
168
167
  */
169
168
  oidcLogin(oidcToken: string, orgId: string, scopes: Array<string>, lifetimes?: RatchetConfig, mfaReceipt?: MfaReceipt): Promise<CubeSignerResponse<SignerSessionData>>;
170
169
  }
170
+ /** Errors */
171
+ export * from "./error";
171
172
  /** API */
172
173
  export * from "./api";
173
174
  /** Client */
@@ -194,16 +195,12 @@ export * from "./schema_types";
194
195
  export * from "./signer_session";
195
196
  /** Session storage */
196
197
  export * from "./session/session_storage";
197
- /** Session manager */
198
- export * from "./session/session_manager";
199
- /** Management session manager */
200
- export * from "./session/cognito_manager";
201
198
  /** Signer session manager */
202
199
  export * from "./session/signer_session_manager";
200
+ /** Utils */
201
+ export * from "./util";
203
202
  /** User-export decryption helper */
204
203
  export { userExportDecrypt, userExportKeygen } from "./user_export";
205
- /** Export ethers.js Signer */
206
- export * as ethers from "./ethers";
207
204
  /** CubeSigner SDK package name */
208
205
  export declare const NAME: string;
209
206
  /** CubeSigner SDK version */