@lifeready/core 1.0.10 → 1.0.11

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 (74) hide show
  1. package/bundles/lifeready-core.umd.js +2769 -4786
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +2 -2
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/utils.js +9 -1
  6. package/esm2015/lib/api/lock.service.js +10 -10
  7. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +1 -1
  8. package/esm2015/lib/api/query-processor/query-processor.service.js +71 -1
  9. package/esm2015/lib/api/types/lr-graphql.types.js +31 -1
  10. package/esm2015/lib/auth/life-ready-auth.service.js +12 -24
  11. package/esm2015/lib/cryptography/encryption.service.js +3 -3
  12. package/esm2015/lib/cryptography/key-graph.service.js +24 -5
  13. package/esm2015/lib/items2/item2.gql.js +139 -0
  14. package/esm2015/lib/items2/item2.service.js +498 -0
  15. package/esm2015/lib/items2/item2.types.js +1 -0
  16. package/esm2015/lib/trusted-parties/tp-assembly.js +278 -0
  17. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +4 -3
  18. package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +31 -0
  19. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +5 -1
  20. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +36 -240
  21. package/esm2015/lib/trusted-parties/trusted-party2.service.js +3 -3
  22. package/esm2015/lifeready-core.js +5 -3
  23. package/esm2015/public-api.js +3 -15
  24. package/fesm2015/lifeready-core.js +5004 -6707
  25. package/fesm2015/lifeready-core.js.map +1 -1
  26. package/lib/_common/utils.d.ts +6 -0
  27. package/lib/api/lock.service.d.ts +12 -3
  28. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +1 -0
  29. package/lib/api/query-processor/query-processor.service.d.ts +1 -1
  30. package/lib/api/types/lr-graphql.types.d.ts +105 -2
  31. package/lib/auth/life-ready-auth.service.d.ts +3 -1
  32. package/lib/cryptography/key-graph.service.d.ts +9 -1
  33. package/lib/{api → items2}/item2.gql.d.ts +28 -1
  34. package/lib/items2/item2.service.d.ts +203 -0
  35. package/lib/items2/item2.types.d.ts +70 -0
  36. package/lib/trusted-parties/tp-assembly.d.ts +206 -0
  37. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +3 -3
  38. package/lib/trusted-parties/tp-password-reset.controller.d.ts +8 -0
  39. package/lib/trusted-parties/tp-password-reset.gql.d.ts +5 -0
  40. package/lib/trusted-parties/tp-password-reset.service.d.ts +99 -41
  41. package/lib/trusted-parties/trusted-party2.service.d.ts +1 -1
  42. package/lifeready-core.d.ts +4 -2
  43. package/lifeready-core.metadata.json +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +2 -14
  46. package/esm2015/lib/api/item2.gql.js +0 -110
  47. package/esm2015/lib/api/item2.service.js +0 -311
  48. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +0 -105
  49. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +0 -1
  50. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +0 -300
  51. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +0 -52
  52. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +0 -97
  53. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +0 -1
  54. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +0 -150
  55. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +0 -229
  56. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +0 -1
  57. package/esm2015/lib/scenario/scenario-setup.service.js +0 -269
  58. package/esm2015/lib/scenario/scenario.gql.js +0 -368
  59. package/esm2015/lib/scenario/scenario.service.js +0 -611
  60. package/esm2015/lib/scenario/scenario.types.js +0 -64
  61. package/lib/api/item2.service.d.ts +0 -177
  62. package/lib/scenario/approvals/scenario-approval.gql.d.ts +0 -7
  63. package/lib/scenario/approvals/scenario-approval.types.d.ts +0 -63
  64. package/lib/scenario/approvals/scenario-approver.service.d.ts +0 -32
  65. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +0 -5
  66. package/lib/scenario/claimants/scenario-claimant.service.d.ts +0 -17
  67. package/lib/scenario/claimants/scenario-claimant.types.d.ts +0 -18
  68. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +0 -8
  69. package/lib/scenario/receivers/scenario-receiver.service.d.ts +0 -30
  70. package/lib/scenario/receivers/scenario-receiver.types.d.ts +0 -54
  71. package/lib/scenario/scenario-setup.service.d.ts +0 -22
  72. package/lib/scenario/scenario.gql.d.ts +0 -34
  73. package/lib/scenario/scenario.service.d.ts +0 -58
  74. package/lib/scenario/scenario.types.d.ts +0 -217
@@ -1,39 +1,19 @@
1
- import { __awaiter, __decorate, __rest } from "tslib";
1
+ import { __awaiter, __decorate } from "tslib";
2
2
  import { Injectable, Injector, NgZone } from '@angular/core';
3
- import { KeyService } from '../cryptography/key.service';
4
- import { EncryptionService } from '../cryptography/encryption.service';
5
3
  import { CreateTpPasswordResetMutation, DeleteTpPasswordResetMutation, TpPasswordResetQuery, UpdateTpPasswordResetMutation, CancelTpPasswordResetRequestMutation, } from './tp-password-reset.gql';
6
- import { KeyGraphService } from '../cryptography/key-graph.service';
7
- import * as slip from '../cryptography/slip39.service';
8
- import { LrBadArgumentException, LrBadLogicException, } from '../_common/exceptions';
9
- import { KeyFactoryService } from '../cryptography/key-factory.service';
10
- import { LrMutation, LrService } from '../api/lr-graphql';
11
4
  import { RunOutsideAngular } from '../_common/run-outside-angular';
12
5
  import { TP_PASSWORD_RESET_SLIP39_PASSPHRASE } from './tp-password-reset.constants';
6
+ import { TpPasswordResetAssemblyController } from './tp-password-reset.controller';
7
+ import { LrMutation, LrService } from '../api/lr-graphql';
13
8
  import * as i0 from "@angular/core";
14
- import * as i1 from "../cryptography/key.service";
15
- import * as i2 from "../cryptography/key-factory.service";
16
- import * as i3 from "../cryptography/encryption.service";
17
- import * as i4 from "../cryptography/key-graph.service";
18
- import * as i5 from "../cryptography/slip39.service";
19
- export class CreateSubAssembliesInput {
20
- }
21
- export class UpdateSubAssembliesInput extends CreateSubAssembliesInput {
22
- }
23
- export class CreateTpPasswordResetInput {
24
- }
25
- export class UpdateTpPasswordResetInput extends CreateTpPasswordResetInput {
26
- }
9
+ import * as i1 from "./tp-password-reset.controller";
27
10
  let TpPasswordResetService = class TpPasswordResetService extends LrService {
28
- constructor(ngZone, injector, keyService, keyFactory, encryptionService, keyGraph, slip39Service) {
11
+ constructor(ngZone, injector, assemblyController) {
29
12
  super(injector);
30
13
  this.ngZone = ngZone;
31
14
  this.injector = injector;
32
- this.keyService = keyService;
33
- this.keyFactory = keyFactory;
34
- this.encryptionService = encryptionService;
35
- this.keyGraph = keyGraph;
36
- this.slip39Service = slip39Service;
15
+ this.assemblyController = assemblyController;
16
+ this.slip39Passphrase = TP_PASSWORD_RESET_SLIP39_PASSPHRASE;
37
17
  }
38
18
  getReset() {
39
19
  return __awaiter(this, void 0, void 0, function* () {
@@ -42,20 +22,12 @@ let TpPasswordResetService = class TpPasswordResetService extends LrService {
42
22
  })).tpPasswordReset;
43
23
  });
44
24
  }
45
- createReset(input) {
46
- return this.mutate(this.createResetMutation(input));
25
+ cancelResetRequest() {
26
+ return this.mutate(this.cancelResetRequestMutation());
47
27
  }
48
- createResetMutation(input) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const { mutationInput } = yield this._createReset(input, (rawAssemblyKey) => __awaiter(this, void 0, void 0, function* () {
51
- return this.prepareSlip39(input.createSubAssemblies, input.quorum, rawAssemblyKey);
52
- }));
53
- return new LrMutation({
54
- mutation: CreateTpPasswordResetMutation,
55
- variables: {
56
- input: mutationInput,
57
- },
58
- });
28
+ cancelResetRequestMutation() {
29
+ return new LrMutation({
30
+ mutation: CancelTpPasswordResetRequestMutation,
59
31
  });
60
32
  }
61
33
  deleteReset() {
@@ -66,216 +38,44 @@ let TpPasswordResetService = class TpPasswordResetService extends LrService {
66
38
  mutation: DeleteTpPasswordResetMutation,
67
39
  });
68
40
  }
69
- updateReset(input) {
70
- return this.mutate(this.updateResetMutation(input));
41
+ validateApprovers(approvers) {
42
+ return this.assemblyController.validateApprovers(approvers);
71
43
  }
72
- updateResetMutation(input) {
44
+ createReset(input) {
45
+ return this.mutate(this.createResetMutation(input));
46
+ }
47
+ createResetMutation(input) {
73
48
  return __awaiter(this, void 0, void 0, function* () {
74
- const passwordReset = yield this.getReset();
75
- const { mutationInput, subjectKey, slipAssembly, assemblyKeyParams, } = yield this._createReset(input, (rawAssemblyKey) => __awaiter(this, void 0, void 0, function* () {
76
- return this.prepareSlip39(input.createSubAssemblies.concat(input.updateSubAssemblies), input.quorum, rawAssemblyKey);
77
- }));
78
- const updateSubAssemblies = yield Promise.all(input.updateSubAssemblies.map((sa, saIndex) => __awaiter(this, void 0, void 0, function* () {
79
- const subjectCipherData = yield this.encryptionService.encryptToString(subjectKey, {
80
- name: sa.name,
81
- });
82
- // Get the existing sub-assembly
83
- const existingSa = passwordReset.assembly.subAssemblies.edges.find((edge) => edge.node.id === sa.id).node;
84
- // Get approvers that do not exist yet
85
- const createApprovers = [];
86
- const updateApprovers = [];
87
- sa.approverTps.forEach((tp) => {
88
- var _a;
89
- const approver = (_a = existingSa.approvers.edges.find((edge) => edge.node.tp.id === tp.id)) === null || _a === void 0 ? void 0 : _a.node;
90
- if (approver) {
91
- updateApprovers.push({
92
- tp,
93
- approverId: approver.id,
94
- });
95
- }
96
- else {
97
- createApprovers.push({
98
- tp,
99
- });
100
- }
101
- });
102
- return {
103
- subAssemblyId: sa.id,
104
- singleReject: sa.singleReject,
105
- quorum: sa.quorum,
106
- subjectCipherData,
107
- createApprovers: yield Promise.all(createApprovers.map(({ tp }, approverIndex) => __awaiter(this, void 0, void 0, function* () {
108
- return this.prepareApprover({
109
- tp,
110
- approverIndex,
111
- saIndex: saIndex + input.createSubAssemblies.length,
112
- slipAssembly,
113
- assemblyKeyParams,
114
- subjectKey,
115
- });
116
- }))),
117
- updateApprovers: yield Promise.all(updateApprovers.map(({ tp, approverId }, approverIndex) => __awaiter(this, void 0, void 0, function* () {
118
- return this.prepareApprover({
119
- approverId,
120
- tp,
121
- approverIndex: approverIndex + createApprovers.length,
122
- saIndex: saIndex + input.createSubAssemblies.length,
123
- slipAssembly,
124
- assemblyKeyParams,
125
- subjectKey,
126
- });
127
- }))),
128
- };
129
- })));
49
+ const { mutationInput } = yield this.assemblyController.prepareCreate(input);
130
50
  return new LrMutation({
131
- mutation: UpdateTpPasswordResetMutation,
51
+ mutation: CreateTpPasswordResetMutation,
132
52
  variables: {
133
- input: Object.assign(Object.assign({}, mutationInput), { assembly: Object.assign(Object.assign({}, mutationInput.assembly), { updateSubAssemblies }) }),
53
+ input: {
54
+ assembly: Object.assign({}, mutationInput),
55
+ },
134
56
  },
135
57
  });
136
58
  });
137
59
  }
138
- cancelResetRequest() {
139
- return this.mutate(this.cancelResetRequestMutation());
140
- }
141
- cancelResetRequestMutation() {
142
- return new LrMutation({
143
- mutation: CancelTpPasswordResetRequestMutation,
144
- });
145
- }
146
- validateApprovers(approvers) {
147
- // Ensure all approvers have mkSharedKey.
148
- for (const tp of approvers) {
149
- if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
150
- const msg = `tp ${tp.other.username} does not have mkSharedKey`;
151
- console.log(msg);
152
- throw new LrBadArgumentException(msg);
153
- }
154
- }
60
+ updateReset(input) {
61
+ return this.mutate(this.updateResetMutation(input));
155
62
  }
156
- prepareApprover({ approverId, tp, approverIndex, saIndex, slipAssembly, assemblyKeyParams, subjectKey, }) {
63
+ updateResetMutation(input) {
157
64
  return __awaiter(this, void 0, void 0, function* () {
158
- if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
159
- throw new LrBadArgumentException(`Tp ${tp.other.username} does not have mkSharedKey. Need to reshared it first.`);
160
- }
161
- const sharedKey = yield this.keyFactory.createKey();
162
- const tpMkSharedKey = yield this.keyGraph.getKey(tp.currentUserSharedKey.userSharedKey.mkSharedKey.id);
163
- // For TP to access shared_key
164
- const tpMkSharedKeyWrappedSharedKey = yield this.encryptionService.encryptToString(tpMkSharedKey.jwk, sharedKey.toJSON(true));
165
- // For subject to access shared_key
166
- const subjectKeyWrappedSharedKey = yield this.encryptionService.encryptToString(subjectKey, sharedKey.toJSON(true));
167
- const saSlip = slipAssembly.subAssemblies[saIndex];
168
- if (saSlip.index !== saIndex) {
169
- // Paranoia
170
- throw new LrBadLogicException('slip sub assembly index should match with array index');
171
- }
172
- // If quorum is 1, then using the same share for every member.
173
- const share = saSlip.threshold === 1 ? saSlip.shares[0] : saSlip.shares[approverIndex];
174
- const partialAssemblyKey = {
175
- slip39: {
176
- share,
177
- subAssembly: {
178
- quorum: saSlip.threshold,
179
- size: saSlip.size,
65
+ const passwordReset = yield this.getReset();
66
+ const { mutationInput } = yield this.assemblyController.prepareUpdate(input, passwordReset.assembly);
67
+ return new LrMutation({
68
+ mutation: UpdateTpPasswordResetMutation,
69
+ variables: {
70
+ input: {
71
+ assembly: Object.assign({}, mutationInput),
180
72
  },
181
73
  },
182
- assemblyKeyParams,
183
- };
184
- console.log('partialAssemblyKey', partialAssemblyKey);
185
- return {
186
- tpMkSharedKeyId: tpMkSharedKey.id,
187
- tpMkSharedKeyWrappedSharedKey,
188
- subjectKeyWrappedSharedKey,
189
- sharedCipherData: yield this.encryptionService.encryptToString(sharedKey, { a: '123' }),
190
- sharedCipherApprovalData: '',
191
- sharedCipherPartialAssemblyKey: yield this.encryptionService.encryptToString(sharedKey, partialAssemblyKey),
192
- approverId: approverId || void 0,
193
- tpId: approverId ? void 0 : tp.id,
194
- };
195
- });
196
- }
197
- // Prepare slip39
198
- prepareSlip39(subAssemblies, assemblyQuorum, rawAssemblyKey) {
199
- return __awaiter(this, void 0, void 0, function* () {
200
- // Is there enough sub assemblies to meet quorum
201
- if (subAssemblies.length < assemblyQuorum) {
202
- throw new LrBadArgumentException('Not enough sub assemblies to meet quorum');
203
- }
204
- const slipAssembly = new slip.Assembly(assemblyQuorum);
205
- subAssemblies.forEach((sa, index) => {
206
- let approverCount = sa.approverTps.length;
207
- // slip39 restricts quorum == 1 to have only 1 member. So we just share the same
208
- // partial key for all sub assembly members.
209
- if (sa.quorum === 1) {
210
- approverCount = 1;
211
- }
212
- slipAssembly.addSubAssembly(new slip.SubAssembly(index, sa.quorum, approverCount));
213
74
  });
214
- yield this.slip39Service.generateShares(rawAssemblyKey, TP_PASSWORD_RESET_SLIP39_PASSPHRASE, slipAssembly);
215
- return slipAssembly;
216
- });
217
- }
218
- _createReset(input, createSlipAssembly) {
219
- return __awaiter(this, void 0, void 0, function* () {
220
- // Create subject key
221
- const masterKey = yield this.keyService.getCurrentMasterKey();
222
- const subjectKey = yield this.keyFactory.createKey();
223
- const assemblyKey = yield this.keyFactory.createKey();
224
- const _a = assemblyKey.toJSON(true), { k: rawAssemblyKey } = _a, assemblyKeyParams = __rest(_a, ["k"]);
225
- const assemblyKeyVerifierPrk = yield this.keyFactory.createPkcSignKey();
226
- const wrappedAssemblyKeyVerifierPrk = yield this.encryptionService.encryptToString(assemblyKey, assemblyKeyVerifierPrk.toJSON(true));
227
- const masterKeyWrappedSubjectKey = yield this.encryptionService.encryptToString(masterKey.jwk, subjectKey.toJSON(true));
228
- const subjectKeyWrappedAssemblyKey = yield this.encryptionService.encryptToString(subjectKey, assemblyKey.toJSON(true));
229
- // Encrypt the rootKey with the assemblyKey
230
- const rootKey = yield this.keyService.getCurrentRootKey();
231
- const assemblyCipherData = yield this.encryptionService.encryptToString(assemblyKey, {
232
- rootKey: rootKey.jwk.toJSON(true),
233
- });
234
- const slipAssembly = yield createSlipAssembly(rawAssemblyKey);
235
- // const slipAssembly = await this.prepareSlip39(input.createSubAssemblies, input.quorum, rawAssemblyKey);
236
- const createSubAssemblies = yield Promise.all(input.createSubAssemblies.map((sa, saIndex) => __awaiter(this, void 0, void 0, function* () {
237
- const subjectCipherData = yield this.encryptionService.encryptToString(subjectKey, {
238
- name: sa.name,
239
- });
240
- return {
241
- singleReject: sa.singleReject,
242
- quorum: sa.quorum,
243
- subjectCipherData,
244
- createApprovers: yield Promise.all(sa.approverTps.map((approverTp, approverIndex) => __awaiter(this, void 0, void 0, function* () {
245
- return this.prepareApprover({
246
- tp: approverTp,
247
- approverIndex,
248
- saIndex,
249
- slipAssembly,
250
- assemblyKeyParams,
251
- subjectKey,
252
- });
253
- }))),
254
- };
255
- })));
256
- return {
257
- subjectKey,
258
- slipAssembly,
259
- assemblyKeyParams,
260
- mutationInput: {
261
- assembly: {
262
- singleReject: input.singleReject,
263
- quorum: input.quorum,
264
- masterKeyId: masterKey.id,
265
- masterKeyWrappedSubjectKey,
266
- subjectKeyWrappedAssemblyKey,
267
- subjectCipherData: '',
268
- assemblyCipherData,
269
- createSubAssemblies,
270
- assemblyKeyVerifierPbk: JSON.stringify(assemblyKeyVerifierPrk.toJSON()),
271
- wrappedAssemblyKeyVerifierPrk,
272
- },
273
- },
274
- };
275
75
  });
276
76
  }
277
77
  };
278
- TpPasswordResetService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TpPasswordResetService_Factory() { return new TpPasswordResetService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.KeyService), i0.ɵɵinject(i2.KeyFactoryService), i0.ɵɵinject(i3.EncryptionService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.Slip39Service)); }, token: TpPasswordResetService, providedIn: "root" });
78
+ TpPasswordResetService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TpPasswordResetService_Factory() { return new TpPasswordResetService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.TpPasswordResetAssemblyController)); }, token: TpPasswordResetService, providedIn: "root" });
279
79
  TpPasswordResetService.decorators = [
280
80
  { type: Injectable, args: [{
281
81
  providedIn: 'root',
@@ -284,11 +84,7 @@ TpPasswordResetService.decorators = [
284
84
  TpPasswordResetService.ctorParameters = () => [
285
85
  { type: NgZone },
286
86
  { type: Injector },
287
- { type: KeyService },
288
- { type: KeyFactoryService },
289
- { type: EncryptionService },
290
- { type: KeyGraphService },
291
- { type: slip.Slip39Service }
87
+ { type: TpPasswordResetAssemblyController }
292
88
  ];
293
89
  TpPasswordResetService = __decorate([
294
90
  RunOutsideAngular({
@@ -296,4 +92,4 @@ TpPasswordResetService = __decorate([
296
92
  })
297
93
  ], TpPasswordResetService);
298
94
  export { TpPasswordResetService };
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0Isb0JBQW9CLEVBQ3BCLDZCQUE2QixFQUM3QixvQ0FBb0MsR0FDckMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxLQUFLLElBQUksTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBSS9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBb0IsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBRXBGLE1BQU0sT0FBTyx3QkFBd0I7Q0FLcEM7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0NBRXJFO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtDQUl0QztBQUVELE1BQU0sT0FB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Q25CLHNCQUFzQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3BDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUNoQzt3QkFDRCw2QkFBNkI7cUJBQzlCO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7S0FBQTtDQUNGLENBQUE7OztZQXBZQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTlGOEIsTUFBTTtZQUFoQixRQUFRO1lBQ3BCLFVBQVU7WUFrQlYsaUJBQWlCO1lBakJqQixpQkFBaUI7WUFRakIsZUFBZTtZQUNaLElBQUksQ0E0RmdCLGFBQWE7O0FBUmhDLHNCQUFzQjtJQU5sQyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsc0JBQXNCLENBaVlsQztTQWpZWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBDcmVhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbixcbiAgRGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gIFRwUGFzc3dvcmRSZXNldFF1ZXJ5LFxuICBVcGRhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbixcbiAgQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxufSBmcm9tICcuL3RwLXBhc3N3b3JkLXJlc2V0LmdxbCc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgc2xpcCBmcm9tICcuLi9jcnlwdG9ncmFwaHkvc2xpcDM5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbixcbiAgTHJCYWRMb2dpY0V4Y2VwdGlvbixcbn0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFBhcnRpYWxBc3NlbWJseUtleSB9IGZyb20gJy4uL3NjZW5hcmlvL3NjZW5hcmlvLnR5cGVzJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTHJHcmFwaFFMU2VydmljZSwgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgVHBOb2RlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7IFRQX1BBU1NXT1JEX1JFU0VUX1NMSVAzOV9QQVNTUEhSQVNFIH0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlU3ViQXNzZW1ibGllc0lucHV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBxdW9ydW06IG51bWJlcjtcbiAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICBhcHByb3ZlclRwczogVHBOb2RlW107XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgZXh0ZW5kcyBDcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlVHBQYXNzd29yZFJlc2V0SW5wdXQge1xuICBxdW9ydW06IG51bWJlcjtcbiAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICBjcmVhdGVTdWJBc3NlbWJsaWVzOiBDcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXRbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZVRwUGFzc3dvcmRSZXNldElucHV0IGV4dGVuZHMgQ3JlYXRlVHBQYXNzd29yZFJlc2V0SW5wdXQge1xuICB1cGRhdGVTdWJBc3NlbWJsaWVzOiBVcGRhdGVTdWJBc3NlbWJsaWVzSW5wdXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5QXBwcm92ZXJzIHtcbiAgaWQ6IHN0cmluZztcbiAgdHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICB9O1xuICBzaGFyZWRLZXk6IEtleTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IGFueTtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBTdWJBc3NlbWJseSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgcXVvcnVtOiBudW1iZXI7XG4gIHN1YmplY3RDaXBoZXJEYXRhOiBzdHJpbmc7XG4gIHBsYWluU3ViamVjdENpcGhlckRhdGE6IGFueTtcbiAgYXBwcm92ZXJzOiBUcEFzc2VtYmx5QXBwcm92ZXJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseSB7XG4gIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgcXVvcnVtOiBudW1iZXI7XG4gIHN1YmplY3RLZXk6IEtleTtcbiAgYXNzZW1ibHlLZXk6IEtleTtcbiAgYXNzZW1ibHlDaXBoZXJEYXRhOiBzdHJpbmc7XG4gIHBsYWluQXNzZW1ibHlDaXBoZXJEYXRhOiBhbnk7XG4gIHN1YkFzc2VtYmxpZXM6IFRwU3ViQXNzZW1ibHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXQge1xuICBpZDogc3RyaW5nO1xuICBhc3NlbWJseTogVHBBc3NlbWJseTtcbiAgYXBwbGllZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmVzZXRSZXN1bHQge1xuICBpZDogc3RyaW5nO1xuICBhc3NvY2lhdGVfcmVzZXRfdXNlcl90b2tlbjogc3RyaW5nO1xuICByZXNldF91c2VybmFtZTogc3RyaW5nO1xufVxuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2xpcDM5U2VydmljZTogc2xpcC5TbGlwMzlTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGFzeW5jIGdldFJlc2V0KCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgICAgcXVlcnk6IFRwUGFzc3dvcmRSZXNldFF1ZXJ5LFxuICAgICAgfSlcbiAgICApLnRwUGFzc3dvcmRSZXNldDtcbiAgfVxuXG4gIGNyZWF0ZVJlc2V0KGlucHV0OiBDcmVhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQ6IENyZWF0ZVRwUGFzc3dvcmRSZXNldElucHV0KSB7XG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLl9jcmVhdGVSZXNldChcbiAgICAgIGlucHV0LFxuICAgICAgYXN5bmMgKHJhd0Fzc2VtYmx5S2V5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICAgICAgaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICAgICAgcmF3QXNzZW1ibHlLZXlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogbXV0YXRpb25JbnB1dCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVSZXNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWxldGVSZXNldE11dGF0aW9uKCkpO1xuICB9XG5cbiAgZGVsZXRlUmVzZXRNdXRhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlUmVzZXQoaW5wdXQ6IFVwZGF0ZVRwUGFzc3dvcmRSZXNldElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlUmVzZXRNdXRhdGlvbihpbnB1dCkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUmVzZXRNdXRhdGlvbihpbnB1dDogVXBkYXRlVHBQYXNzd29yZFJlc2V0SW5wdXQpIHtcbiAgICBjb25zdCBwYXNzd29yZFJlc2V0ID0gYXdhaXQgdGhpcy5nZXRSZXNldCgpO1xuXG4gICAgY29uc3Qge1xuICAgICAgbXV0YXRpb25JbnB1dCxcbiAgICAgIHN1YmplY3RLZXksXG4gICAgICBzbGlwQXNzZW1ibHksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICB9ID0gYXdhaXQgdGhpcy5fY3JlYXRlUmVzZXQoaW5wdXQsIGFzeW5jIChyYXdBc3NlbWJseUtleSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgICAgaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcy5jb25jYXQoaW5wdXQudXBkYXRlU3ViQXNzZW1ibGllcyksXG4gICAgICAgIGlucHV0LnF1b3J1bSxcbiAgICAgICAgcmF3QXNzZW1ibHlLZXlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1cGRhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC51cGRhdGVTdWJBc3NlbWJsaWVzLm1hcChhc3luYyAoc2EsIHNhSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHNhLm5hbWUsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZXhpc3Rpbmcgc3ViLWFzc2VtYmx5XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nU2EgPSBwYXNzd29yZFJlc2V0LmFzc2VtYmx5LnN1YkFzc2VtYmxpZXMuZWRnZXMuZmluZChcbiAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLmlkID09PSBzYS5pZFxuICAgICAgICApLm5vZGU7XG5cbiAgICAgICAgLy8gR2V0IGFwcHJvdmVycyB0aGF0IGRvIG5vdCBleGlzdCB5ZXRcbiAgICAgICAgY29uc3QgY3JlYXRlQXBwcm92ZXJzID0gW107XG4gICAgICAgIGNvbnN0IHVwZGF0ZUFwcHJvdmVycyA9IFtdO1xuXG4gICAgICAgIHNhLmFwcHJvdmVyVHBzLmZvckVhY2goKHRwKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXBwcm92ZXIgPSBleGlzdGluZ1NhLmFwcHJvdmVycy5lZGdlcy5maW5kKFxuICAgICAgICAgICAgKGVkZ2UpID0+IGVkZ2Uubm9kZS50cC5pZCA9PT0gdHAuaWRcbiAgICAgICAgICApPy5ub2RlO1xuICAgICAgICAgIGlmIChhcHByb3Zlcikge1xuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLnB1c2goe1xuICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXIuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3JlYXRlQXBwcm92ZXJzLnB1c2goe1xuICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWJBc3NlbWJseUlkOiBzYS5pZCxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgY3JlYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJbmRleCxcbiAgICAgICAgICAgICAgICBzYUluZGV4OiBzYUluZGV4ICsgaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcy5sZW5ndGgsIC8vIHNsaXBBc3NlbWJseSBpcyBhbGwgc3ViLWFzc2VtYmxpZXMgY29tYmluZWRcbiAgICAgICAgICAgICAgICBzbGlwQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHVwZGF0ZUFwcHJvdmVyczogYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICB1cGRhdGVBcHByb3ZlcnMubWFwKGFzeW5jICh7IHRwLCBhcHByb3ZlcklkIH0sIGFwcHJvdmVySW5kZXgpID0+XG4gICAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgICBhcHByb3ZlcklkLFxuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXg6IGFwcHJvdmVySW5kZXggKyBjcmVhdGVBcHByb3ZlcnMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNhSW5kZXg6IHNhSW5kZXggKyBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLmxlbmd0aCwgLy8gc2xpcEFzc2VtYmx5IGlzIGFsbCBzdWItYXNzZW1ibGllcyBjb21iaW5lZFxuICAgICAgICAgICAgICAgIHNsaXBBc3NlbWJseSxcbiAgICAgICAgICAgICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgICAgLi4ubXV0YXRpb25JbnB1dC5hc3NlbWJseSxcbiAgICAgICAgICAgIHVwZGF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSZXNldFJlcXVlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY2FuY2VsUmVzZXRSZXF1ZXN0TXV0YXRpb24oKSk7XG4gIH1cblxuICBjYW5jZWxSZXNldFJlcXVlc3RNdXRhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2FJbmRleCxcbiAgICBzbGlwQXNzZW1ibHksXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViamVjdEtleSxcbiAgfToge1xuICAgIGFwcHJvdmVySWQ/OiBzdHJpbmc7XG4gICAgdHA6IFRwTm9kZTtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2FJbmRleDogbnVtYmVyO1xuICAgIHNsaXBBc3NlbWJseTogc2xpcC5Bc3NlbWJseTtcbiAgICBhc3NlbWJseUtleVBhcmFtczogb2JqZWN0O1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gIH0pIHtcbiAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICBgVHAgJHt0cC5vdGhlci51c2VybmFtZX0gZG9lcyBub3QgaGF2ZSBta1NoYXJlZEtleS4gTmVlZCB0byByZXNoYXJlZCBpdCBmaXJzdC5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBjb25zdCB0cE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB0cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5LmlkXG4gICAgKTtcbiAgICAvLyBGb3IgVFAgdG8gYWNjZXNzIHNoYXJlZF9rZXlcbiAgICBjb25zdCB0cE1rU2hhcmVkS2V5V3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgdHBNa1NoYXJlZEtleS5qd2ssXG4gICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICAvLyBGb3Igc3ViamVjdCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzdWJqZWN0S2V5LFxuICAgICAgc2hhcmVkS2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzYVNsaXAgPSBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllc1tzYUluZGV4XTtcbiAgICBpZiAoc2FTbGlwLmluZGV4ICE9PSBzYUluZGV4KSB7XG4gICAgICAvLyBQYXJhbm9pYVxuICAgICAgdGhyb3cgbmV3IExyQmFkTG9naWNFeGNlcHRpb24oXG4gICAgICAgICdzbGlwIHN1YiBhc3NlbWJseSBpbmRleCBzaG91bGQgbWF0Y2ggd2l0aCBhcnJheSBpbmRleCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzYVNsaXAudGhyZXNob2xkID09PSAxID8gc2FTbGlwLnNoYXJlc1swXSA6IHNhU2xpcC5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNhU2xpcC50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2FTbGlwLnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKCdwYXJ0aWFsQXNzZW1ibHlLZXknLCBwYXJ0aWFsQXNzZW1ibHlLZXkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRwTWtTaGFyZWRLZXlJZDogdHBNa1NoYXJlZEtleS5pZCxcbiAgICAgIHRwTWtTaGFyZWRLZXlXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhOiBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICB7IGE6ICcxMjMnIH1cbiAgICAgICksXG4gICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGE6ICcnLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5OiBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICBwYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICksXG4gICAgICBhcHByb3ZlcklkOiBhcHByb3ZlcklkIHx8IHZvaWQgMCxcbiAgICAgIHRwSWQ6IGFwcHJvdmVySWQgPyB2b2lkIDAgOiB0cC5pZCxcbiAgICB9O1xuICB9XG5cbiAgLy8gUHJlcGFyZSBzbGlwMzlcbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgVFBfUEFTU1dPUkRfUkVTRVRfU0xJUDM5X1BBU1NQSFJBU0UsXG4gICAgICBzbGlwQXNzZW1ibHlcbiAgICApO1xuICAgIHJldHVybiBzbGlwQXNzZW1ibHk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jcmVhdGVSZXNldChcbiAgICBpbnB1dDogQ3JlYXRlVHBQYXNzd29yZFJlc2V0SW5wdXQsXG4gICAgY3JlYXRlU2xpcEFzc2VtYmx5XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gQ3JlYXRlIHN1YmplY3Qga2V5XG4gICAgY29uc3QgbWFzdGVyS2V5ID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRNYXN0ZXJLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHsgazogcmF3QXNzZW1ibHlLZXksIC4uLmFzc2VtYmx5S2V5UGFyYW1zIH0gPSBhc3NlbWJseUtleS50b0pTT04oXG4gICAgICB0cnVlXG4gICAgKSBhcyBhbnk7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgYXNzZW1ibHlLZXlWZXJpZmllclByay50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5V3JhcHBlZFN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIG1hc3RlcktleS5qd2ssXG4gICAgICBzdWJqZWN0S2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG4gICAgY29uc3Qgc3ViamVjdEtleVdyYXBwZWRBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleSxcbiAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICAvLyBFbmNyeXB0IHRoZSByb290S2V5IHdpdGggdGhlIGFzc2VtYmx5S2V5XG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuXG4gICAgY29uc3QgYXNzZW1ibHlDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2sudG9KU09OKHRydWUpLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzbGlwQXNzZW1ibHkgPSBhd2FpdCBjcmVhdGVTbGlwQXNzZW1ibHkocmF3QXNzZW1ibHlLZXkpO1xuICAgIC8vIGNvbnN0IHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLCBpbnB1dC5xdW9ydW0sIHJhd0Fzc2VtYmx5S2V5KTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogc2EubmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgc2EuYXBwcm92ZXJUcHMubWFwKGFzeW5jIChhcHByb3ZlclRwLCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJbmRleCxcbiAgICAgICAgICAgICAgICBzYUluZGV4LFxuICAgICAgICAgICAgICAgIHNsaXBBc3NlbWJseSxcbiAgICAgICAgICAgICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3ViamVjdEtleSxcbiAgICAgIHNsaXBBc3NlbWJseSxcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICAgIHF1b3J1bTogaW5wdXQucXVvcnVtLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWFzdGVyS2V5V3JhcHBlZFN1YmplY3RLZXksXG4gICAgICAgICAgc3ViamVjdEtleVdyYXBwZWRBc3NlbWJseUtleSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YTogJycsXG4gICAgICAgICAgYXNzZW1ibHlDaXBoZXJEYXRhLFxuICAgICAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgICAgYXNzZW1ibHlLZXlWZXJpZmllclBiazogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByayxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsNkJBQTZCLEVBQzdCLG9DQUFvQyxHQUNyQyxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztJQW9EN0Msc0JBQXNCLFNBQXRCLHNCQUF1QixTQUFRLFNBQVM7SUFHbkQsWUFDVSxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsa0JBQXFEO1FBRTdELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUM7UUFML0QscUJBQWdCLEdBQUcsbUNBQW1DLENBQUM7SUFRdkQsQ0FBQztJQUVLLFFBQVE7O1lBQ1osT0FBTyxDQUNMLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDZixLQUFLLEVBQUUsb0JBQW9CO2FBQzVCLENBQUMsQ0FDSCxDQUFDLGVBQWUsQ0FBQztRQUNwQixDQUFDO0tBQUE7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxvQ0FBb0M7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxVQUFVLENBQUM7WUFDcEIsUUFBUSxFQUFFLDZCQUE2QjtTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE0QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVLLG1CQUFtQixDQUFDLEtBQTRCOztZQUNwRCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUNuRSxLQUFLLENBQ04sQ0FBQztZQUVGLE9BQU8sSUFBSSxVQUFVLENBQUM7Z0JBQ3BCLFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsUUFBUSxvQkFDSCxhQUFhLENBQ2pCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRUQsV0FBVyxDQUFDLEtBQTRCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUssbUJBQW1CLENBQUMsS0FBNEI7O1lBQ3BELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTVDLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQ25FLEtBQUssRUFDTCxhQUFhLENBQUMsUUFBUSxDQUN2QixDQUFDO1lBRUYsT0FBTyxJQUFJLFVBQVUsQ0FBQztnQkFDcEIsUUFBUSxFQUFFLDZCQUE2QjtnQkFDdkMsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRTt3QkFDTCxRQUFRLG9CQUNILGFBQWEsQ0FDakI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUExRkEsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFoRThCLE1BQU07WUFBaEIsUUFBUTtZQVlwQixpQ0FBaUM7O0FBcUQ3QixzQkFBc0I7SUFObEMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLHNCQUFzQixDQXVGbEM7U0F2Rlksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gIERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICBUcFBhc3N3b3JkUmVzZXRRdWVyeSxcbiAgVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gIENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5ncWwnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2NyeXB0b2dyYXBoeS50eXBlcyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUUF9QQVNTV09SRF9SRVNFVF9TTElQMzlfUEFTU1BIUkFTRSB9IGZyb20gJy4vdHAtcGFzc3dvcmQtcmVzZXQuY29uc3RhbnRzJztcbmltcG9ydCB7IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCwgVXBkYXRlVHBBc3NlbWJseUlucHV0IH0gZnJvbSAnLi90cC1hc3NlbWJseSc7XG5pbXBvcnQgeyBUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXIgfSBmcm9tICcuL3RwLXBhc3N3b3JkLXJlc2V0LmNvbnRyb2xsZXInO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgVHBOb2RlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5QXBwcm92ZXJzIHtcbiAgaWQ6IHN0cmluZztcbiAgdHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICB9O1xuICBzaGFyZWRLZXk6IEtleTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IGFueTtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBTdWJBc3NlbWJseSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgcXVvcnVtOiBudW1iZXI7XG4gIHN1YmplY3RDaXBoZXJEYXRhOiBzdHJpbmc7XG4gIHBsYWluU3ViamVjdENpcGhlckRhdGE6IGFueTtcbiAgYXBwcm92ZXJzOiBUcEFzc2VtYmx5QXBwcm92ZXJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseSB7XG4gIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgcXVvcnVtOiBudW1iZXI7XG4gIHN1YmplY3RLZXk6IEtleTtcbiAgYXNzZW1ibHlLZXk6IEtleTtcbiAgYXNzZW1ibHlDaXBoZXJEYXRhOiBzdHJpbmc7XG4gIHBsYWluQXNzZW1ibHlDaXBoZXJEYXRhOiBhbnk7XG4gIHN1YkFzc2VtYmxpZXM6IFRwU3ViQXNzZW1ibHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXQge1xuICBpZDogc3RyaW5nO1xuICBhc3NlbWJseTogVHBBc3NlbWJseTtcbiAgYXBwbGllZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmVzZXRSZXN1bHQge1xuICBpZDogc3RyaW5nO1xuICBhc3NvY2lhdGVfcmVzZXRfdXNlcl90b2tlbjogc3RyaW5nO1xuICByZXNldF91c2VybmFtZTogc3RyaW5nO1xufVxuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIHNsaXAzOVBhc3NwaHJhc2UgPSBUUF9QQVNTV09SRF9SRVNFVF9TTElQMzlfUEFTU1BIUkFTRTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgYXNzZW1ibHlDb250cm9sbGVyOiBUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXJcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmVzZXQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogVHBQYXNzd29yZFJlc2V0UXVlcnksXG4gICAgICB9KVxuICAgICkudHBQYXNzd29yZFJlc2V0O1xuICB9XG5cbiAgY2FuY2VsUmVzZXRSZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNhbmNlbFJlc2V0UmVxdWVzdE11dGF0aW9uKCkpO1xuICB9XG5cbiAgY2FuY2VsUmVzZXRSZXF1ZXN0TXV0YXRpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVSZXNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWxldGVSZXNldE11dGF0aW9uKCkpO1xuICB9XG5cbiAgZGVsZXRlUmVzZXRNdXRhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVBcHByb3ZlcnMoYXBwcm92ZXJzOiBUcE5vZGVbXSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci52YWxpZGF0ZUFwcHJvdmVycyhhcHByb3ZlcnMpO1xuICB9XG5cbiAgY3JlYXRlUmVzZXQoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHsgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucHJlcGFyZUNyZWF0ZShcbiAgICAgIGlucHV0XG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVJlc2V0KGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVSZXNldE11dGF0aW9uKGlucHV0KSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVSZXNldE11dGF0aW9uKGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQpIHtcbiAgICBjb25zdCBwYXNzd29yZFJlc2V0ID0gYXdhaXQgdGhpcy5nZXRSZXNldCgpO1xuXG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci5wcmVwYXJlVXBkYXRlKFxuICAgICAgaW5wdXQsXG4gICAgICBwYXNzd29yZFJlc2V0LmFzc2VtYmx5XG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { Injectable, NgZone } from '@angular/core';
3
3
  import { JWK } from 'node-jose';
4
- import { Item2Service } from '../api/item2.service';
4
+ import { Item2Service } from '../items2/item2.service';
5
5
  import { LrGraphQLService, LrMutation } from '../api/lr-graphql';
6
6
  import { EncryptionService } from '../cryptography/encryption.service';
7
7
  import { KeyFactoryService } from '../cryptography/key-factory.service';
@@ -13,7 +13,7 @@ import { CompleteTpMkReshareMutation, DeleteTpMutation, RequestTpMkReshareMutati
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "../cryptography/key-graph.service";
15
15
  import * as i2 from "../api/lr-graphql/lr-graphql.service";
16
- import * as i3 from "../api/item2.service";
16
+ import * as i3 from "../items2/item2.service";
17
17
  import * as i4 from "../cryptography/key.service";
18
18
  import * as i5 from "../cryptography/key-factory.service";
19
19
  import * as i6 from "../cryptography/encryption.service";
@@ -212,4 +212,4 @@ TrustedParty2Service = __decorate([
212
212
  })
213
213
  ], TrustedParty2Service);
214
214
  export { TrustedParty2Service };
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztJQXNCakIsb0JBQW9CLFNBQXBCLG9CQUFvQjtJQUMvQixZQUNVLE1BQWMsRUFDZCxRQUF5QixFQUN6QixTQUEyQixFQUMzQixZQUEwQixFQUMxQixV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QW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtaW4gfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IEl0ZW0yU2VydmljZSB9IGZyb20gJy4uL2FwaS9pdGVtMi5zZXJ2aWNlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UsIExyTXV0YXRpb24gfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBBY2Nlc3NSb2xlQ2hvaWNlLCBMclJlbGF5SWRJbnB1dCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IExyQmFkU3RhdGVFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQ29tcGxldGVUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBEZWxldGVUcE11dGF0aW9uLFxuICBSZXF1ZXN0VHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIFNoYXJlRGlyZWN0b3J5TXV0YXRpb24sXG4gIFNoYXJlRmlsZU11dGF0aW9uLFxuICBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG4gIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUZpbGVNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwnO1xuXG4vLyBJZiB4eHhLZXlJZCBub3QgZ2l2ZW4sIHRoZW4gZmV0Y2ggdGhlbSB3aXRoIEFQSSBjYWxsc1xuZXhwb3J0IGludGVyZmFjZSBTaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBMclJlbGF5SWRJbnB1dDtcbiAgaXRlbUtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIHRwSWQ6IExyUmVsYXlJZElucHV0O1xuICB0cFNoYXJlZEtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIGFjY2Vzc1JvbGU6IEFjY2Vzc1JvbGVDaG9pY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIHRwSWQ6IHN0cmluZztcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eTJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsckdyYXBoUUw6IExyR3JhcGhRTFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtMlNlcnZpY2U6IEl0ZW0yU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgLy8gVE9ETzogZGVwcmVjYXRlIHRoaXNcbiAgcHVibGljIGRlbGV0ZVRwKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVUcE11dGF0aW9uKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICAgIHF1ZXJ5OiBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkOiB0cElkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLnRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXk7XG4gIH1cblxuICBhc3luYyBzaGFyZURpcmVjdG9yeShvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVJdGVtKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IHRydWUgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZUZpbGUob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNoYXJlSXRlbSh7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hhcmVJdGVtKHtcbiAgICBpdGVtSWQsXG4gICAgaXRlbUtleUlkLFxuICAgIHRwSWQsXG4gICAgdHBTaGFyZWRLZXlJZCxcbiAgICBhY2Nlc3NSb2xlLFxuICAgIGlzRGlyZWN0b3J5LFxuICB9OiBTaGFyZUl0ZW1PcHRpb25zICYge1xuICAgIGlzRGlyZWN0b3J5OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGl0ZW1LZXlJZCwgKCkgPT5cbiAgICAgIGlzRGlyZWN0b3J5XG4gICAgICAgID8gdGhpcy5pdGVtMlNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWQoaXRlbUlkKVxuICAgICAgICA6IHRoaXMuaXRlbTJTZXJ2aWNlLmdldEZpbGVLZXlJZChpdGVtSWQpXG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHRwU2hhcmVkS2V5SWQsICgpID0+XG4gICAgICB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCkudGhlbigocmVzKSA9PiByZXMuc2hhcmVkS2V5LmlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleSh3cmFwcGluZ0tleSwgaXRlbUtleS5qd2spO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFNoYXJlRGlyZWN0b3J5TXV0YXRpb24gOiBTaGFyZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpdGVtSWQsXG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICAgIGtleUlkOiBpdGVtS2V5LmlkLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51bnNoYXJlSXRlbSh7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZUZpbGUob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudW5zaGFyZUl0ZW0oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVuc2hhcmVJdGVtKHtcbiAgICBpdGVtSWQsXG4gICAgdHBJZCxcbiAgICBpc0RpcmVjdG9yeSxcbiAgfTogVW5zaGFyZUl0ZW1PcHRpb25zICYgeyBpc0RpcmVjdG9yeTogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbiA6IFVuc2hhcmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaXRlbUlkLFxuICAgICAgICAgIHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKHVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKCdUUCBhbHJlYWR5IGhhcyBta1NoYXJlZEtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50TWFzdGVyS2V5KCk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNwb25kTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGlmICghdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdObyBhY2Nlc3MgdG8gdGhlIG1rU2hhcmVkS2V5IHNvIGNhbm5vdCByZXNoYXJlIGl0IHdpdGggVFAnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rUmVzaGFyZVJlcXVlc3RDaXBoZXJcbiAgICApO1xuICAgIGNvbnN0IHBiayA9IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIucGJrKTtcbiAgICBjb25zdCBta1NoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KFxuICAgICAgdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0ge1xuICAgICAgbWtTaGFyZWRLZXk6IHtcbiAgICAgICAgaWQ6IG1rU2hhcmVkS2V5LmlkLFxuICAgICAgICBqd2s6IG1rU2hhcmVkS2V5Lmp3ay50b0pTT04odHJ1ZSksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBXcmFwIHdpdGggc2hhcmVkS2V5IHRoZW4gYWdhaW4gd2l0aCBQYmtcbiAgICBjb25zdCBta1Jlc2hhcmVSZXNwb25zZUNpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgcGJrLFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgIHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbXBsZXRlTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwcmsgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5Lm1rUHhrLmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICBwcmssXG4gICAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gRG91YmxlIGNoZWNrIGl0J3MgYSB2YWxpZCBrZXkuXG4gICAgY29uc3QgbWtTaGFyZWRLZXk6IEtleSA9IHtcbiAgICAgIGlkOiBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5LmlkLFxuICAgICAgandrOiBhd2FpdCBKV0suYXNLZXkocGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlci5ta1NoYXJlZEtleS5qd2spLFxuICAgIH07XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudE1hc3RlcktleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICBta1NoYXJlZEtleUlkOiBta1NoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1dyYXBwZWRNa1NoYXJlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztJQXNCakIsb0JBQW9CLFNBQXBCLG9CQUFvQjtJQUMvQixZQUNVLE1BQWMsRUFDZCxRQUF5QixFQUN6QixTQUEyQixFQUMzQixZQUEwQixFQUMxQixV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QW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtaW4gfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IEl0ZW0yU2VydmljZSB9IGZyb20gJy4uL2l0ZW1zMi9pdGVtMi5zZXJ2aWNlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UsIExyTXV0YXRpb24gfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBBY2Nlc3NSb2xlQ2hvaWNlLCBMclJlbGF5SWRJbnB1dCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IExyQmFkU3RhdGVFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQ29tcGxldGVUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBEZWxldGVUcE11dGF0aW9uLFxuICBSZXF1ZXN0VHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIFNoYXJlRGlyZWN0b3J5TXV0YXRpb24sXG4gIFNoYXJlRmlsZU11dGF0aW9uLFxuICBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG4gIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUZpbGVNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwnO1xuXG4vLyBJZiB4eHhLZXlJZCBub3QgZ2l2ZW4sIHRoZW4gZmV0Y2ggdGhlbSB3aXRoIEFQSSBjYWxsc1xuZXhwb3J0IGludGVyZmFjZSBTaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBMclJlbGF5SWRJbnB1dDtcbiAgaXRlbUtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIHRwSWQ6IExyUmVsYXlJZElucHV0O1xuICB0cFNoYXJlZEtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIGFjY2Vzc1JvbGU6IEFjY2Vzc1JvbGVDaG9pY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIHRwSWQ6IHN0cmluZztcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eTJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsckdyYXBoUUw6IExyR3JhcGhRTFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtMlNlcnZpY2U6IEl0ZW0yU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgLy8gVE9ETzogZGVwcmVjYXRlIHRoaXNcbiAgcHVibGljIGRlbGV0ZVRwKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVUcE11dGF0aW9uKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICAgIHF1ZXJ5OiBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkOiB0cElkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLnRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXk7XG4gIH1cblxuICBhc3luYyBzaGFyZURpcmVjdG9yeShvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVJdGVtKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IHRydWUgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZUZpbGUob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNoYXJlSXRlbSh7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hhcmVJdGVtKHtcbiAgICBpdGVtSWQsXG4gICAgaXRlbUtleUlkLFxuICAgIHRwSWQsXG4gICAgdHBTaGFyZWRLZXlJZCxcbiAgICBhY2Nlc3NSb2xlLFxuICAgIGlzRGlyZWN0b3J5LFxuICB9OiBTaGFyZUl0ZW1PcHRpb25zICYge1xuICAgIGlzRGlyZWN0b3J5OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGl0ZW1LZXlJZCwgKCkgPT5cbiAgICAgIGlzRGlyZWN0b3J5XG4gICAgICAgID8gdGhpcy5pdGVtMlNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWQoaXRlbUlkKVxuICAgICAgICA6IHRoaXMuaXRlbTJTZXJ2aWNlLmdldEZpbGVLZXlJZChpdGVtSWQpXG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHRwU2hhcmVkS2V5SWQsICgpID0+XG4gICAgICB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCkudGhlbigocmVzKSA9PiByZXMuc2hhcmVkS2V5LmlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleSh3cmFwcGluZ0tleSwgaXRlbUtleS5qd2spO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFNoYXJlRGlyZWN0b3J5TXV0YXRpb24gOiBTaGFyZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpdGVtSWQsXG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICAgIGtleUlkOiBpdGVtS2V5LmlkLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51bnNoYXJlSXRlbSh7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZUZpbGUob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudW5zaGFyZUl0ZW0oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVuc2hhcmVJdGVtKHtcbiAgICBpdGVtSWQsXG4gICAgdHBJZCxcbiAgICBpc0RpcmVjdG9yeSxcbiAgfTogVW5zaGFyZUl0ZW1PcHRpb25zICYgeyBpc0RpcmVjdG9yeTogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbiA6IFVuc2hhcmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaXRlbUlkLFxuICAgICAgICAgIHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKHVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKCdUUCBhbHJlYWR5IGhhcyBta1NoYXJlZEtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50TWFzdGVyS2V5KCk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNwb25kTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGlmICghdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdObyBhY2Nlc3MgdG8gdGhlIG1rU2hhcmVkS2V5IHNvIGNhbm5vdCByZXNoYXJlIGl0IHdpdGggVFAnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rUmVzaGFyZVJlcXVlc3RDaXBoZXJcbiAgICApO1xuICAgIGNvbnN0IHBiayA9IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIucGJrKTtcbiAgICBjb25zdCBta1NoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KFxuICAgICAgdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0ge1xuICAgICAgbWtTaGFyZWRLZXk6IHtcbiAgICAgICAgaWQ6IG1rU2hhcmVkS2V5LmlkLFxuICAgICAgICBqd2s6IG1rU2hhcmVkS2V5Lmp3ay50b0pTT04odHJ1ZSksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBXcmFwIHdpdGggc2hhcmVkS2V5IHRoZW4gYWdhaW4gd2l0aCBQYmtcbiAgICBjb25zdCBta1Jlc2hhcmVSZXNwb25zZUNpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgcGJrLFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgIHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbXBsZXRlTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwcmsgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5Lm1rUHhrLmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICBwcmssXG4gICAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gRG91YmxlIGNoZWNrIGl0J3MgYSB2YWxpZCBrZXkuXG4gICAgY29uc3QgbWtTaGFyZWRLZXk6IEtleSA9IHtcbiAgICAgIGlkOiBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5LmlkLFxuICAgICAgandrOiBhd2FpdCBKV0suYXNLZXkocGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlci5ta1NoYXJlZEtleS5qd2spLFxuICAgIH07XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudE1hc3RlcktleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICBta1NoYXJlZEtleUlkOiBta1NoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1dyYXBwZWRNa1NoYXJlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -3,8 +3,10 @@
3
3
  */
4
4
  export * from './public-api';
5
5
  export { RunOutsideAngular as ɵd } from './lib/_common/run-outside-angular';
6
- export { LrGraphQLService as ɵb, LrService as ɵg } from './lib/api/lr-graphql';
6
+ export { LrGraphQLService as ɵb, LrService as ɵi } from './lib/api/lr-graphql';
7
7
  export { TpPasswordResetProcessorService as ɵc } from './lib/api/query-processor/tp-password-reset-processor.service';
8
- export { SharedContactCardFields as ɵe, SharedContactCardService as ɵf } from './lib/api/shared-contact-card.service';
8
+ export { SharedContactCardFields as ɵg, SharedContactCardService as ɵh } from './lib/api/shared-contact-card.service';
9
9
  export { TimeService as ɵa } from './lib/api/time.service';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZXJlYWR5LWNvcmUuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGlmZXJlYWR5LWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxTQUFTLElBQUksRUFBRSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFDLCtCQUErQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3BILE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDbkgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtSdW5PdXRzaWRlQW5ndWxhciBhcyDJtWR9IGZyb20gJy4vbGliL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5leHBvcnQge0xyR3JhcGhRTFNlcnZpY2UgYXMgybViLExyU2VydmljZSBhcyDJtWd9IGZyb20gJy4vbGliL2FwaS9sci1ncmFwaHFsJztcbmV4cG9ydCB7VHBQYXNzd29yZFJlc2V0UHJvY2Vzc29yU2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL2FwaS9xdWVyeS1wcm9jZXNzb3IvdHAtcGFzc3dvcmQtcmVzZXQtcHJvY2Vzc29yLnNlcnZpY2UnO1xuZXhwb3J0IHtTaGFyZWRDb250YWN0Q2FyZEZpZWxkcyBhcyDJtWUsU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlIGFzIMm1Zn0gZnJvbSAnLi9saWIvYXBpL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5leHBvcnQge1RpbWVTZXJ2aWNlIGFzIMm1YX0gZnJvbSAnLi9saWIvYXBpL3RpbWUuc2VydmljZSc7Il19
10
+ export { TpAssemblyController as ɵf } from './lib/trusted-parties/tp-assembly';
11
+ export { TpPasswordResetAssemblyController as ɵe } from './lib/trusted-parties/tp-password-reset.controller';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZXJlYWR5LWNvcmUuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGlmZXJlYWR5LWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxTQUFTLElBQUksRUFBRSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFDLCtCQUErQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3BILE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDbkgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlDQUFpQyxJQUFJLEVBQUUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge1J1bk91dHNpZGVBbmd1bGFyIGFzIMm1ZH0gZnJvbSAnLi9saWIvX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmV4cG9ydCB7THJHcmFwaFFMU2VydmljZSBhcyDJtWIsTHJTZXJ2aWNlIGFzIMm1aX0gZnJvbSAnLi9saWIvYXBpL2xyLWdyYXBocWwnO1xuZXhwb3J0IHtUcFBhc3N3b3JkUmVzZXRQcm9jZXNzb3JTZXJ2aWNlIGFzIMm1Y30gZnJvbSAnLi9saWIvYXBpL3F1ZXJ5LXByb2Nlc3Nvci90cC1wYXNzd29yZC1yZXNldC1wcm9jZXNzb3Iuc2VydmljZSc7XG5leHBvcnQge1NoYXJlZENvbnRhY3RDYXJkRmllbGRzIGFzIMm1ZyxTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgYXMgybVofSBmcm9tICcuL2xpYi9hcGkvc2hhcmVkLWNvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmV4cG9ydCB7VGltZVNlcnZpY2UgYXMgybVhfSBmcm9tICcuL2xpYi9hcGkvdGltZS5zZXJ2aWNlJztcbmV4cG9ydCB7VHBBc3NlbWJseUNvbnRyb2xsZXIgYXMgybVmfSBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHAtYXNzZW1ibHknO1xuZXhwb3J0IHtUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXIgYXMgybVlfSBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7Il19
@@ -40,19 +40,6 @@ export * from './lib/record-type/record-type.service';
40
40
  export * from './lib/trusted-parties/trusted-party.types';
41
41
  export * from './lib/trusted-parties/trusted-party.gql';
42
42
  export * from './lib/trusted-parties/trusted-party.service';
43
- export * from './lib/scenario/scenario.types';
44
- export * from './lib/scenario/scenario.gql';
45
- export * from './lib/scenario/scenario.service';
46
- export * from './lib/scenario/scenario-setup.service';
47
- export * from './lib/scenario/approvals/scenario-approval.types';
48
- export * from './lib/scenario/approvals/scenario-approval.gql';
49
- export * from './lib/scenario/approvals/scenario-approver.service';
50
- export * from './lib/scenario/claimants/scenario-claimant.types';
51
- export * from './lib/scenario/claimants/scenario-claimant.gql';
52
- export * from './lib/scenario/claimants/scenario-claimant.service';
53
- export * from './lib/scenario/receivers/scenario-receiver.types';
54
- export * from './lib/scenario/receivers/scenario-receiver.gql';
55
- export * from './lib/scenario/receivers/scenario-receiver.service';
56
43
  export * from './lib/users/profile.gql';
57
44
  export * from './lib/users/profile.service';
58
45
  export * from './lib/users/profile-details.service';
@@ -68,13 +55,14 @@ export { gqlTyped } from './lib/_common/ast';
68
55
  export * from './lib/api/lr-graphql';
69
56
  export * from './lib/api/query-processor';
70
57
  export * from './lib/api/contact-card2.service';
71
- export * from './lib/api/item2.service';
72
58
  export * from './lib/api/key-exchange2.service';
73
59
  export * from './lib/api/shared-contact-card2.service';
74
60
  export * from './lib/api/lock.service';
61
+ export * from './lib/items2/item2.types';
62
+ export * from './lib/items2/item2.service';
75
63
  export * from './lib/trusted-parties/trusted-party2.service';
76
64
  export * from './lib/trusted-parties/tp-password-reset.service';
77
65
  export * from './lib/trusted-parties/tp-password-reset-user.service';
78
66
  export * from './lib/trusted-parties/tp-password-reset-request.service';
79
67
  export * from './lib/notification/notification.service';
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBsci1hdXRoXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvX2NvbW1vbi9leGNlcHRpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2ZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkva2V5LWV4Y2hhbmdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkva2V5LWV4Y2hhbmdlLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3BlcnNpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbWVzc2FnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL19jb21tb24vcXVlcmllcy5ncWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2F1dGgudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9hdXRoLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2xib3Auc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2xpZmUtcmVhZHktYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvcGFzc3dvcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL3JlZ2lzdGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC90d28tZmFjdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9pZGxlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvaWRsZS5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS9jcnlwdG9ncmFwaHkudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L3NsaXAzOS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS93ZWItY3J5cHRvLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS1tZXRhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnkudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnkuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGVnb3J5L2NhdGVnb3J5LnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLWF0dGFjaG1lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC9yZWNvcmQuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC9yZWNvcmQuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC10eXBlL3JlY29yZC10eXBlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC10eXBlL3JlY29yZC10eXBlLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHJ1c3RlZC1wYXJ0eS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHJ1c3RlZC1wYXJ0eS5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3NjZW5hcmlvLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3NjZW5hcmlvLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3NjZW5hcmlvLXNldHVwLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY2VuYXJpby9hcHByb3ZhbHMvc2NlbmFyaW8tYXBwcm92YWwudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NlbmFyaW8vYXBwcm92YWxzL3NjZW5hcmlvLWFwcHJvdmFsLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY2VuYXJpby9hcHByb3ZhbHMvc2NlbmFyaW8tYXBwcm92ZXIuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL2NsYWltYW50cy9zY2VuYXJpby1jbGFpbWFudC50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY2VuYXJpby9jbGFpbWFudHMvc2NlbmFyaW8tY2xhaW1hbnQuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL2NsYWltYW50cy9zY2VuYXJpby1jbGFpbWFudC5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NlbmFyaW8vcmVjZWl2ZXJzL3NjZW5hcmlvLXJlY2VpdmVyLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NlbmFyaW8vcmVjZWl2ZXJzL3NjZW5hcmlvLXJlY2VpdmVyLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy9wcm9maWxlLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlcnMvcHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlcnMvcHJvZmlsZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy91c2VyLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlcnMvdXNlci50eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpZmUtcmVhZHkuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpZmUtcmVhZHkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYW4vcGxhbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFuL3BsYW4uc2VydmljZSc7XG5cbmV4cG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi9saWIvX2NvbW1vbi9hc3QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbHItZ3JhcGhxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvcXVlcnktcHJvY2Vzc29yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb250YWN0LWNhcmQyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2l0ZW0yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2tleS1leGNoYW5nZTIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvc2hhcmVkLWNvbnRhY3QtY2FyZDIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbG9jay5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5Mi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cC1wYXNzd29yZC1yZXNldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cC1wYXNzd29yZC1yZXNldC11c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBsci1hdXRoXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvX2NvbW1vbi9leGNlcHRpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2ZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkva2V5LWV4Y2hhbmdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkva2V5LWV4Y2hhbmdlLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3BlcnNpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbWVzc2FnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL19jb21tb24vcXVlcmllcy5ncWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2F1dGgudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9hdXRoLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2xib3Auc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2xpZmUtcmVhZHktYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvcGFzc3dvcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL3JlZ2lzdGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC90d28tZmFjdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9pZGxlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvaWRsZS5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS9jcnlwdG9ncmFwaHkudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3J5cHRvZ3JhcGh5L3NsaXAzOS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyeXB0b2dyYXBoeS93ZWItY3J5cHRvLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS1tZXRhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnkudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnkuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGVnb3J5L2NhdGVnb3J5LnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLWF0dGFjaG1lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC9yZWNvcmQuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC9yZWNvcmQuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC10eXBlL3JlY29yZC10eXBlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC10eXBlL3JlY29yZC10eXBlLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHJ1c3RlZC1wYXJ0eS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnRpZXMvdHJ1c3RlZC1wYXJ0eS5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXJzL3Byb2ZpbGUuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXJzL3Byb2ZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy9wcm9maWxlLWRldGFpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy9wcm9maWxlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXJzL3VzZXIuZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXJzL3VzZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2Vycy91c2VyLnR5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlmZS1yZWFkeS5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlmZS1yZWFkeS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGxhbi9wbGFuLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYW4vcGxhbi5zZXJ2aWNlJztcblxuZXhwb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuL2xpYi9fY29tbW9uL2FzdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9sci1ncmFwaHFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9xdWVyeS1wcm9jZXNzb3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2NvbnRhY3QtY2FyZDIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkva2V5LWV4Y2hhbmdlMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9zaGFyZWQtY29udGFjdC1jYXJkMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9sb2NrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlbXMyL2l0ZW0yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2l0ZW1zMi9pdGVtMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5Mi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cC1wYXNzd29yZC1yZXNldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydXN0ZWQtcGFydGllcy90cC1wYXNzd29yZC1yZXNldC11c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuIl19