@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.
- package/bundles/lifeready-core.umd.js +2769 -4786
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/utils.js +9 -1
- package/esm2015/lib/api/lock.service.js +10 -10
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +1 -1
- package/esm2015/lib/api/query-processor/query-processor.service.js +71 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +31 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +12 -24
- package/esm2015/lib/cryptography/encryption.service.js +3 -3
- package/esm2015/lib/cryptography/key-graph.service.js +24 -5
- package/esm2015/lib/items2/item2.gql.js +139 -0
- package/esm2015/lib/items2/item2.service.js +498 -0
- package/esm2015/lib/items2/item2.types.js +1 -0
- package/esm2015/lib/trusted-parties/tp-assembly.js +278 -0
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +4 -3
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +31 -0
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +5 -1
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +36 -240
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +3 -3
- package/esm2015/lifeready-core.js +5 -3
- package/esm2015/public-api.js +3 -15
- package/fesm2015/lifeready-core.js +5004 -6707
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/utils.d.ts +6 -0
- package/lib/api/lock.service.d.ts +12 -3
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +1 -0
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +105 -2
- package/lib/auth/life-ready-auth.service.d.ts +3 -1
- package/lib/cryptography/key-graph.service.d.ts +9 -1
- package/lib/{api → items2}/item2.gql.d.ts +28 -1
- package/lib/items2/item2.service.d.ts +203 -0
- package/lib/items2/item2.types.d.ts +70 -0
- package/lib/trusted-parties/tp-assembly.d.ts +206 -0
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +3 -3
- package/lib/trusted-parties/tp-password-reset.controller.d.ts +8 -0
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +5 -0
- package/lib/trusted-parties/tp-password-reset.service.d.ts +99 -41
- package/lib/trusted-parties/trusted-party2.service.d.ts +1 -1
- package/lifeready-core.d.ts +4 -2
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -14
- package/esm2015/lib/api/item2.gql.js +0 -110
- package/esm2015/lib/api/item2.service.js +0 -311
- package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +0 -105
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +0 -1
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +0 -300
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +0 -52
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +0 -97
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +0 -1
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +0 -150
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +0 -229
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +0 -1
- package/esm2015/lib/scenario/scenario-setup.service.js +0 -269
- package/esm2015/lib/scenario/scenario.gql.js +0 -368
- package/esm2015/lib/scenario/scenario.service.js +0 -611
- package/esm2015/lib/scenario/scenario.types.js +0 -64
- package/lib/api/item2.service.d.ts +0 -177
- package/lib/scenario/approvals/scenario-approval.gql.d.ts +0 -7
- package/lib/scenario/approvals/scenario-approval.types.d.ts +0 -63
- package/lib/scenario/approvals/scenario-approver.service.d.ts +0 -32
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +0 -5
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +0 -17
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +0 -18
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +0 -8
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +0 -30
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +0 -54
- package/lib/scenario/scenario-setup.service.d.ts +0 -22
- package/lib/scenario/scenario.gql.d.ts +0 -34
- package/lib/scenario/scenario.service.d.ts +0 -58
- package/lib/scenario/scenario.types.d.ts +0 -217
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { __awaiter, __rest } from "tslib";
|
|
2
|
+
import { EncryptionService } from '../cryptography/encryption.service';
|
|
3
|
+
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
4
|
+
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
5
|
+
import * as slip from '../cryptography/slip39.service';
|
|
6
|
+
import { LrBadArgumentException, LrBadStateException, } from '../_common/exceptions';
|
|
7
|
+
import { KeyService } from '../cryptography/key.service';
|
|
8
|
+
// export interface PrepareUpdateAssembly {
|
|
9
|
+
// subjectKeyId: string;
|
|
10
|
+
// subAssemblies: PrepareUpdateSubAssemblies;
|
|
11
|
+
// }
|
|
12
|
+
// export interface PrepareUpdateSubAssemblies {
|
|
13
|
+
// }
|
|
14
|
+
export class TpAssemblyController {
|
|
15
|
+
constructor(injector) {
|
|
16
|
+
this.keyFactory = injector.get(KeyFactoryService);
|
|
17
|
+
this.keyService = injector.get(KeyService);
|
|
18
|
+
this.encryptionService = injector.get(EncryptionService);
|
|
19
|
+
this.keyGraph = injector.get(KeyGraphService);
|
|
20
|
+
this.slip39Service = injector.get(slip.Slip39Service);
|
|
21
|
+
}
|
|
22
|
+
recoverAssemblyKey(partials) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
// Every receiverPbkCipher should contain this and they should all be the same.
|
|
25
|
+
let assemblyKeyParams;
|
|
26
|
+
const shares = partials.map((partial) => {
|
|
27
|
+
if (assemblyKeyParams) {
|
|
28
|
+
if (JSON.stringify(assemblyKeyParams) !==
|
|
29
|
+
JSON.stringify(partial.assemblyKeyParams)) {
|
|
30
|
+
throw new LrBadStateException('The assembly key parameters are different between the approvals.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
assemblyKeyParams = partial.assemblyKeyParams;
|
|
35
|
+
}
|
|
36
|
+
return partial.slip39.share.mnemonics;
|
|
37
|
+
});
|
|
38
|
+
const rawAssemblyKey = yield this.slip39Service.recoverSecret(shares, this.slip39Passphrase);
|
|
39
|
+
return yield KeyFactoryService.asKey(Object.assign(Object.assign({}, assemblyKeyParams), { k: rawAssemblyKey }));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
prepareTpWrappingKey(tp) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
return this.keyGraph.getKey(tp.wrappingKeyId);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
prepareAssembly({ subjectKey, rootKey, }) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const assemblyKey = yield this.keyFactory.createKey();
|
|
50
|
+
console.log('prepareAssembly assemblyKey', assemblyKey);
|
|
51
|
+
const _a = assemblyKey.toJSON(true), { k: rawAssemblyKey } = _a, assemblyKeyParams = __rest(_a, ["k"]);
|
|
52
|
+
const assemblyKeyVerifierPrk = yield this.keyFactory.createPkcSignKey();
|
|
53
|
+
const wrappedAssemblyKeyVerifierPrk = yield this.encryptionService.encryptToString(assemblyKey, assemblyKeyVerifierPrk.toJSON(true));
|
|
54
|
+
const assemblyKeyVerifierPbk = JSON.stringify(assemblyKeyVerifierPrk.toJSON());
|
|
55
|
+
const subjectKeyWrappedAssemblyKey = yield this.encryptionService.encryptToString(subjectKey, assemblyKey.toJSON(true));
|
|
56
|
+
// Encrypt the rootKey with the assemblyKey
|
|
57
|
+
const assemblyCipherData = yield this.encryptionService.encryptToString(assemblyKey, {
|
|
58
|
+
rootKey: rootKey.toJSON(true),
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
assemblyKey,
|
|
62
|
+
rawAssemblyKey,
|
|
63
|
+
assemblyKeyParams,
|
|
64
|
+
subjectKeyWrappedAssemblyKey,
|
|
65
|
+
assemblyCipherData,
|
|
66
|
+
assemblyKeyVerifierPbk,
|
|
67
|
+
wrappedAssemblyKeyVerifierPrk,
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
prepareCreateSubAssemblies({ input, subjectKey, slipSubAssemblies, assemblyKeyParams, }) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
return Promise.all(input.map((sa, saIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const subjectCipherData = yield this.encryptionService.encryptToString(subjectKey, sa.subjectCipherDataClearJson || '');
|
|
75
|
+
const createApprovers = yield Promise.all(sa.approverTps.map((approverTp, approverIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
return this.prepareApprover({
|
|
77
|
+
tp: approverTp,
|
|
78
|
+
approverIndex,
|
|
79
|
+
slipSubAssembly: slipSubAssemblies[saIndex],
|
|
80
|
+
assemblyKeyParams,
|
|
81
|
+
subjectKey,
|
|
82
|
+
});
|
|
83
|
+
})));
|
|
84
|
+
return {
|
|
85
|
+
singleReject: sa.singleReject,
|
|
86
|
+
quorum: sa.quorum,
|
|
87
|
+
subjectCipherData,
|
|
88
|
+
createApprovers,
|
|
89
|
+
};
|
|
90
|
+
})));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
prepareUpdateSubAssemblies({ input, subjectKey, slipSubAssemblies, assemblyKeyParams, subAssemblies, }) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
if (slipSubAssemblies.length !== input.length) {
|
|
96
|
+
throw new LrBadArgumentException('The slipSubAssemblies must be the same length as the input');
|
|
97
|
+
}
|
|
98
|
+
return Promise.all(input.map((sa, saIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
const subjectCipherData = yield this.encryptionService.encryptToString(subjectKey, sa.subjectCipherDataClearJson || '');
|
|
100
|
+
// Get the existing sub-assembly
|
|
101
|
+
const existingSa = subAssemblies.edges.find((edge) => edge.node.id === sa.id).node;
|
|
102
|
+
// Get approvers that do not exist yet
|
|
103
|
+
const createApprovers = [];
|
|
104
|
+
const updateApprovers = [];
|
|
105
|
+
sa.approverTps.forEach((tp) => {
|
|
106
|
+
var _a;
|
|
107
|
+
const approver = (_a = existingSa.approvers.edges.find((edge) => edge.node.tp.id === tp.tpId)) === null || _a === void 0 ? void 0 : _a.node;
|
|
108
|
+
if (approver) {
|
|
109
|
+
updateApprovers.push({
|
|
110
|
+
tp,
|
|
111
|
+
approverId: approver.id,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
createApprovers.push({
|
|
116
|
+
tp,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const slipSubAssembly = slipSubAssemblies[saIndex];
|
|
121
|
+
return {
|
|
122
|
+
subAssemblyId: sa.id,
|
|
123
|
+
singleReject: sa.singleReject,
|
|
124
|
+
quorum: sa.quorum,
|
|
125
|
+
subjectCipherData,
|
|
126
|
+
createApprovers: yield Promise.all(createApprovers.map(({ tp }, approverIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
return this.prepareApprover({
|
|
128
|
+
tp,
|
|
129
|
+
approverIndex,
|
|
130
|
+
slipSubAssembly,
|
|
131
|
+
assemblyKeyParams,
|
|
132
|
+
subjectKey,
|
|
133
|
+
});
|
|
134
|
+
}))),
|
|
135
|
+
updateApprovers: yield Promise.all(updateApprovers.map(({ tp, approverId }, approverIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
return this.prepareApprover({
|
|
137
|
+
approverId,
|
|
138
|
+
tp,
|
|
139
|
+
approverIndex: approverIndex + createApprovers.length,
|
|
140
|
+
slipSubAssembly,
|
|
141
|
+
assemblyKeyParams,
|
|
142
|
+
subjectKey,
|
|
143
|
+
});
|
|
144
|
+
}))),
|
|
145
|
+
};
|
|
146
|
+
})));
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
prepareCreate(input) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
const rootKey = yield this.keyService.getCurrentRootKey();
|
|
152
|
+
const subjectKey = yield this.keyFactory.createKey();
|
|
153
|
+
const rootKeyWrappedSubjectKey = yield this.keyGraph.wrapKey(rootKey, subjectKey);
|
|
154
|
+
const _a = yield this.prepareAssembly({
|
|
155
|
+
rootKey: rootKey.jwk,
|
|
156
|
+
subjectKey,
|
|
157
|
+
}), { assemblyKey, rawAssemblyKey, assemblyKeyParams } = _a, assemblyInput = __rest(_a, ["assemblyKey", "rawAssemblyKey", "assemblyKeyParams"]);
|
|
158
|
+
const slipAssembly = yield this.prepareSlip39(input.createSubAssemblies, input.quorum, rawAssemblyKey);
|
|
159
|
+
const createSubAssemblies = yield this.prepareCreateSubAssemblies({
|
|
160
|
+
input: input.createSubAssemblies,
|
|
161
|
+
assemblyKeyParams,
|
|
162
|
+
slipSubAssemblies: slipAssembly.subAssemblies,
|
|
163
|
+
subjectKey,
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
assemblyKey,
|
|
167
|
+
mutationInput: Object.assign(Object.assign({}, assemblyInput), { singleReject: input.singleReject, quorum: input.quorum, subjectCipherData: '', // TODO make this a parameter
|
|
168
|
+
createSubAssemblies, rootKeyId: rootKey.id, rootKeyWrappedSubjectKey }),
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
prepareUpdate(input, assembly // TODO type this to only what we need.
|
|
173
|
+
) {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
175
|
+
input = Object.assign({ createSubAssemblies: [] }, input);
|
|
176
|
+
const rootKey = yield this.keyService.getCurrentRootKey();
|
|
177
|
+
const subjectKey = yield this.keyGraph.getKey(assembly.subjectKey.id);
|
|
178
|
+
const _a = yield this.prepareAssembly({
|
|
179
|
+
rootKey: rootKey.jwk,
|
|
180
|
+
subjectKey: subjectKey.jwk,
|
|
181
|
+
}), { assemblyKey, rawAssemblyKey, assemblyKeyParams } = _a, assemblyInput = __rest(_a, ["assemblyKey", "rawAssemblyKey", "assemblyKeyParams"]);
|
|
182
|
+
let slipAssembly;
|
|
183
|
+
try {
|
|
184
|
+
slipAssembly = yield this.prepareSlip39((input.createSubAssemblies || []).concat(input.updateSubAssemblies || []), input.quorum, rawAssemblyKey);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
// TODO this sometimes happens. Maybe missing await.
|
|
188
|
+
console.log('Error while creating slip assembly', error);
|
|
189
|
+
}
|
|
190
|
+
const common = {
|
|
191
|
+
assemblyKeyParams,
|
|
192
|
+
subjectKey: subjectKey.jwk,
|
|
193
|
+
};
|
|
194
|
+
const createSubAssemblies = yield this.prepareCreateSubAssemblies(Object.assign(Object.assign({}, common), { input: input.createSubAssemblies,
|
|
195
|
+
// Need to match the slip sub assemblies to the input
|
|
196
|
+
slipSubAssemblies: slipAssembly.subAssemblies.slice(0, input.createSubAssemblies.length) }));
|
|
197
|
+
const updateSubAssemblies = yield this.prepareUpdateSubAssemblies(Object.assign(Object.assign({}, common), { input: input.updateSubAssemblies,
|
|
198
|
+
// Add an offset to the sub assemblies to skip the one that are created.
|
|
199
|
+
slipSubAssemblies: slipAssembly.subAssemblies.slice(input.createSubAssemblies.length), subAssemblies: assembly.subAssemblies }));
|
|
200
|
+
return {
|
|
201
|
+
assemblyKey,
|
|
202
|
+
mutationInput: Object.assign(Object.assign({}, assemblyInput), { singleReject: input.singleReject, quorum: input.quorum, subjectCipherData: '', subjectKeyId: subjectKey.id, createSubAssemblies,
|
|
203
|
+
updateSubAssemblies }),
|
|
204
|
+
};
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
prepareApprover({ approverId, tp, approverIndex, slipSubAssembly, assemblyKeyParams, subjectKey, }) {
|
|
208
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
const tpWrappingKey = yield this.prepareTpWrappingKey(tp);
|
|
210
|
+
// shared key is rotated every time.
|
|
211
|
+
const sharedKey = yield this.keyFactory.createKey();
|
|
212
|
+
// For TP to access shared_key
|
|
213
|
+
const tpWrappedSharedKey = yield this.encryptionService.encryptToString(tpWrappingKey.jwk, sharedKey.toJSON(true));
|
|
214
|
+
// For subject to access shared_key
|
|
215
|
+
const subjectKeyWrappedSharedKey = yield this.encryptionService.encryptToString(subjectKey, sharedKey.toJSON(true));
|
|
216
|
+
// If quorum is 1, then using the same share for every member.
|
|
217
|
+
const share = slipSubAssembly.threshold === 1
|
|
218
|
+
? slipSubAssembly.shares[0]
|
|
219
|
+
: slipSubAssembly.shares[approverIndex];
|
|
220
|
+
const partialAssemblyKey = {
|
|
221
|
+
slip39: {
|
|
222
|
+
share,
|
|
223
|
+
subAssembly: {
|
|
224
|
+
quorum: slipSubAssembly.threshold,
|
|
225
|
+
size: slipSubAssembly.size,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
assemblyKeyParams,
|
|
229
|
+
};
|
|
230
|
+
console.log('partialAssemblyKey', partialAssemblyKey);
|
|
231
|
+
const sharedCipherData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherDataClearJson || '');
|
|
232
|
+
const sharedCipherApprovalData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherApprovalDataClearJson || '');
|
|
233
|
+
const sharedCipherPartialAssemblyKey = yield this.encryptionService.encryptToString(sharedKey, partialAssemblyKey);
|
|
234
|
+
return {
|
|
235
|
+
tpWrappingKeyId: tpWrappingKey.id,
|
|
236
|
+
tpWrappedSharedKey,
|
|
237
|
+
subjectKeyWrappedSharedKey,
|
|
238
|
+
sharedCipherData,
|
|
239
|
+
sharedCipherApprovalData,
|
|
240
|
+
sharedCipherPartialAssemblyKey,
|
|
241
|
+
approverId: approverId || void 0,
|
|
242
|
+
tpId: approverId ? void 0 : tp.tpId,
|
|
243
|
+
};
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
validateApprovers(approvers) {
|
|
247
|
+
// Ensure all approvers have mkSharedKey.
|
|
248
|
+
for (const tp of approvers) {
|
|
249
|
+
if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
|
|
250
|
+
const msg = `tp ${tp.other.username} does not have mkSharedKey`;
|
|
251
|
+
console.log(msg);
|
|
252
|
+
throw new LrBadArgumentException(msg);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Prepare slip39
|
|
257
|
+
prepareSlip39(subAssemblies, assemblyQuorum, rawAssemblyKey) {
|
|
258
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
259
|
+
// Is there enough sub assemblies to meet quorum
|
|
260
|
+
if (subAssemblies.length < assemblyQuorum) {
|
|
261
|
+
throw new LrBadArgumentException('Not enough sub assemblies to meet quorum');
|
|
262
|
+
}
|
|
263
|
+
const slipAssembly = new slip.Assembly(assemblyQuorum);
|
|
264
|
+
subAssemblies.forEach((sa, index) => {
|
|
265
|
+
let approverCount = sa.approverTps.length;
|
|
266
|
+
// slip39 restricts quorum == 1 to have only 1 member. So we just share the same
|
|
267
|
+
// partial key for all sub assembly members.
|
|
268
|
+
if (sa.quorum === 1) {
|
|
269
|
+
approverCount = 1;
|
|
270
|
+
}
|
|
271
|
+
slipAssembly.addSubAssembly(new slip.SubAssembly(index, sa.quorum, approverCount));
|
|
272
|
+
});
|
|
273
|
+
yield this.slip39Service.generateShares(rawAssemblyKey, this.slip39Passphrase, slipAssembly);
|
|
274
|
+
return slipAssembly;
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydGllcy90cC1hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBUUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxJQUFJLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkQsT0FBTyxFQUNMLHNCQUFzQixFQUV0QixtQkFBbUIsR0FDcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFtRHpELDJDQUEyQztBQUMzQywwQkFBMEI7QUFDMUIsK0NBQStDO0FBQy9DLElBQUk7QUFFSixnREFBZ0Q7QUFFaEQsSUFBSTtBQUVKLE1BQU0sT0FBZ0Isb0JBQW9CO0lBU3hDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJ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SUFBSSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QztTQUNGO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtJQUNELGFBQWEsQ0FDM0IsYUFBYSxFQUNiLGNBQXNCLEVBQ3RCLGNBQXNCOztZQUV0QixnREFBZ0Q7WUFDaEQsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLGNBQWMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLHNCQUFzQixDQUM5QiwwQ0FBMEMsQ0FDM0MsQ0FBQzthQUNIO1lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXZELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO2dCQUUxQyxnRkFBZ0Y7Z0JBQ2hGLDRDQUE0QztnQkFDNUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDbkIsYUFBYSxHQUFHLENBQUMsQ0FBQztpQkFDbkI7Z0JBQ0QsWUFBWSxDQUFDLGNBQWMsQ0FDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUN0RCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUNyQyxjQUFjLEVBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixZQUFZLENBQ2IsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBUcEFzc2VtYmx5Tm9kZSxcbiAgVHBOb2RlLFxuICBUcFN1YkFzc2VtYmx5Tm9kZSxcbn0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL2NyeXB0b2dyYXBoeS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7XG4gIExyQmFkQXJndW1lbnRFeGNlcHRpb24sXG4gIExyQmFkTG9naWNFeGNlcHRpb24sXG4gIExyQmFkU3RhdGVFeGNlcHRpb24sXG59IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsQXNzZW1ibHlLZXkge1xuICBzbGlwMzk6IHtcbiAgICBzaGFyZTogc2xpcC5TZWNyZXRTaGFyZTtcbiAgICAvLyBNYWlubHkgZm9yIGRlYnVnZ2luZy5cbiAgICBzdWJBc3NlbWJseToge1xuICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICBzaXplOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgYXNzZW1ibHlLZXlQYXJhbXM6IG9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXQge1xuICBxdW9ydW06IG51bWJlcjtcbiAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICBhcHByb3ZlclRwczogVHBBc3NlbWJseUFwcHJvdmVySW5wdXRbXTsgLy8gTWFrZSB0aGlzIGV4cGxpY2l0IHR5cGluZywgbWF5YmUgdXNlIHRzIHRvIHBpY2sgbWVtYmVyc1xuICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQgZXh0ZW5kcyBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXQge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwQXNzZW1ibHlJbnB1dCB7XG4gIHF1b3J1bTogbnVtYmVyO1xuICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVHBBc3NlbWJseUlucHV0IGV4dGVuZHMgVHBBc3NlbWJseUlucHV0IHtcbiAgY3JlYXRlU3ViQXNzZW1ibGllczogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVHBBc3NlbWJseUlucHV0IGV4dGVuZHMgVHBBc3NlbWJseUlucHV0IHtcbiAgY3JlYXRlU3ViQXNzZW1ibGllcz86IENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dFtdO1xuICB1cGRhdGVTdWJBc3NlbWJsaWVzOiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCB7XG4gIHRwSWQ6IHN0cmluZztcbiAgLy8gVGhpcyB3cmFwcGluZyBrZXkgaXMgdXNlZCB0byBlbmNyeXB0IHRoZSBzaGFyZWQga2V5IGJldHdlZW4gdGhlIGN1cnJlbnQgdXNlclxuICAvLyBhbmQgdGhlIFRQLiBUaGlzIGNhbiBiZSBlaXRoZXIgdGhlIHNoYXJlZEtleSBvciBta1NoYXJlZEtleSBkZXBlbmRpbmcgb24gdGhlIG11dGF0aW9uLlxuICAvLyBlZy4gZm9yIHRwIHBhc3N3b3JkIHJlc3QsIHdlIHdhbnQgdG8gdXNlIG1rU2hhcmVkS2V5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBjYXNjYWRpbmdcbiAgLy8gYnJlYWNoZXMgb2YgdGhlIHJvb3Qga2V5LiBGb3Igc2NlbmFyaW8sIHdlIHVzZSBzaGFyZWRLZXkgYmVjYXVzZSB3ZSB3YW50IHRvIHNjZW5hcmlvc1xuICAvLyB0byBwZXJzaXN0IGFmdGVyIG1hc3RlciBrZXkgaGFzIGJlZW4gcmVzZXQuXG4gIHdyYXBwaW5nS2V5SWQ6IHN0cmluZzsgLy8gVE9ETyBtYWtlIHRoaXMgb3B0aW9uYWwgYW5kIGZldGNoIHRoZSBrZXlzLlxuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogYW55O1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBhbnk7XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZVVwZGF0ZUFzc2VtYmx5IHtcbi8vICAgc3ViamVjdEtleUlkOiBzdHJpbmc7XG4vLyAgIHN1YkFzc2VtYmxpZXM6IFByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzO1xuLy8gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIFByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzIHtcblxuLy8gfVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IG9iamVjdDtcblxuICAgIGNvbnN0IHNoYXJlcyA9IHBhcnRpYWxzLm1hcCgocGFydGlhbCkgPT4ge1xuICAgICAgaWYgKGFzc2VtYmx5S2V5UGFyYW1zKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShhc3NlbWJseUtleVBhcmFtcykgIT09XG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkocGFydGlhbC5hc3NlbWJseUtleVBhcmFtcylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICAgICAnVGhlIGFzc2VtYmx5IGtleSBwYXJhbWV0ZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgYXBwcm92YWxzLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlbWJseUtleVBhcmFtcyA9IHBhcnRpYWwuYXNzZW1ibHlLZXlQYXJhbXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydGlhbC5zbGlwMzkuc2hhcmUubW5lbW9uaWNzO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmF3QXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLnNsaXAzOVNlcnZpY2UucmVjb3ZlclNlY3JldChcbiAgICAgIHNoYXJlcyxcbiAgICAgIHRoaXMuc2xpcDM5UGFzc3BocmFzZVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgS2V5RmFjdG9yeVNlcnZpY2UuYXNLZXkoe1xuICAgICAgLi4uYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBrOiByYXdBc3NlbWJseUtleSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlVHBXcmFwcGluZ0tleShcbiAgICB0cDogVHBBc3NlbWJseUFwcHJvdmVySW5wdXRcbiAgKTogUHJvbWlzZTxLZXk+IHtcbiAgICByZXR1cm4gdGhpcy5rZXlHcmFwaC5nZXRLZXkodHAud3JhcHBpbmdLZXlJZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZUFzc2VtYmx5KHtcbiAgICBzdWJqZWN0S2V5LFxuICAgIHJvb3RLZXksXG4gIH06IHtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHJvb3RLZXk6IEpXSy5LZXk7XG4gIH0pIHtcbiAgICBjb25zdCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBjb25zb2xlLmxvZygncHJlcGFyZUFzc2VtYmx5IGFzc2VtYmx5S2V5JywgYXNzZW1ibHlLZXkpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIGFueTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY1NpZ25LZXkoKTtcbiAgICBjb25zdCB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclBiayA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXNzZW1ibHlLZXlWZXJpZmllclByay50b0pTT04oKVxuICAgICk7XG5cbiAgICBjb25zdCBzdWJqZWN0S2V5V3JhcHBlZEFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzdWJqZWN0S2V5LFxuICAgICAgYXNzZW1ibHlLZXkudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShcbiAgICAgIHJvb3RLZXksXG4gICAgICBzdWJqZWN0S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIC4uLmFzc2VtYmx5SW5wdXRcbiAgICB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlQXNzZW1ibHkoe1xuICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2xpcEFzc2VtYmx5ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2xpcDM5KFxuICAgICAgaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIGlucHV0LnF1b3J1bSxcbiAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIGlucHV0OiBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICAuLi5hc3NlbWJseUlucHV0LFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGlucHV0LnNpbmdsZVJlamVjdCxcbiAgICAgICAgcXVvcnVtOiBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhOiAnJywgLy8gVE9ETyBtYWtlIHRoaXMgYSBwYXJhbWV0ZXJcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgcm9vdEtleUlkOiByb290S2V5LmlkLFxuICAgICAgICByb290S2V5V3JhcHBlZFN1YmplY3RLZXksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlcGFyZVVwZGF0ZShcbiAgICBpbnB1dDogVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICAgIGFzc2VtYmx5OiBUcEFzc2VtYmx5Tm9kZSAvLyBUT0RPIHR5cGUgdGhpcyB0byBvbmx5IHdoYXQgd2UgbmVlZC5cbiAgKSB7XG4gICAgaW5wdXQgPSB7XG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzOiBbXSxcbiAgICAgIC4uLmlucHV0LFxuICAgIH07XG5cbiAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XG4gICAgY29uc3Qgc3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGFzc2VtYmx5LnN1YmplY3RLZXkuaWQpO1xuXG4gICAgY29uc3Qge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByYXdBc3NlbWJseUtleSxcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgLi4uYXNzZW1ibHlJbnB1dFxuICAgIH0gPSBhd2FpdCB0aGlzLnByZXBhcmVBc3NlbWJseSh7XG4gICAgICByb290S2V5OiByb290S2V5Lmp3ayxcbiAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgIH0pO1xuXG4gICAgbGV0IHNsaXBBc3NlbWJseTtcbiAgICB0cnkge1xuICAgICAgc2xpcEFzc2VtYmx5ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2xpcDM5KFxuICAgICAgICAoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyB8fCBbXSkuY29uY2F0KFxuICAgICAgICAgIGlucHV0LnVwZGF0ZVN1YkFzc2VtYmxpZXMgfHwgW11cbiAgICAgICAgKSxcbiAgICAgICAgaW5wdXQucXVvcnVtLFxuICAgICAgICByYXdBc3NlbWJseUtleVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gVE9ETyB0aGlzIHNvbWV0aW1lcyBoYXBwZW5zLiBNYXliZSBtaXNzaW5nIGF3YWl0LlxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGNyZWF0aW5nIHNsaXAgYXNzZW1ibHknLCBlcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3QgY29tbW9uID0ge1xuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzdWJqZWN0S2V5OiBzdWJqZWN0S2V5Lmp3ayxcbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlU3ViQXNzZW1ibGllcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNyZWF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgICAgLi4uY29tbW9uLFxuICAgICAgaW5wdXQ6IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAvLyBOZWVkIHRvIG1hdGNoIHRoZSBzbGlwIHN1YiBhc3NlbWJsaWVzIHRvIHRoZSBpbnB1dFxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLmxlbmd0aFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiBpbnB1dC51cGRhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgLy8gQWRkIGFuIG9mZnNldCB0byB0aGUgc3ViIGFzc2VtYmxpZXMgdG8gc2tpcCB0aGUgb25lIHRoYXQgYXJlIGNyZWF0ZWQuXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMuc2xpY2UoXG4gICAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMubGVuZ3RoXG4gICAgICApLFxuICAgICAgc3ViQXNzZW1ibGllczogYXNzZW1ibHkuc3ViQXNzZW1ibGllcyxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIG11dGF0aW9uSW5wdXQ6IHtcbiAgICAgICAgLi4uYXNzZW1ibHlJbnB1dCxcbiAgICAgICAgc2luZ2xlUmVqZWN0OiBpbnB1dC5zaW5nbGVSZWplY3QsXG4gICAgICAgIHF1b3J1bTogaW5wdXQucXVvcnVtLFxuICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YTogJycsIC8vIFRPRE8gbWFrZSB0aGlzIGEgcGFyYW1ldGVyXG4gICAgICAgIHN1YmplY3RLZXlJZDogc3ViamVjdEtleS5pZCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgIHN1YmplY3RLZXksXG4gIH06IHtcbiAgICBhcHByb3ZlcklkPzogc3RyaW5nOyAvLyBHaXZlbiBpZiB1cGRhdGluZyBleGlzdGluZyBhcHByb3ZlclxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dDtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwLlN1YkFzc2VtYmx5O1xuICAgIGFzc2VtYmx5S2V5UGFyYW1zOiBvYmplY3Q7XG4gICAgc3ViamVjdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IHRwV3JhcHBpbmdLZXkgPSBhd2FpdCB0aGlzLnByZXBhcmVUcFdyYXBwaW5nS2V5KHRwKTtcbiAgICAvLyBzaGFyZWQga2V5IGlzIHJvdGF0ZWQgZXZlcnkgdGltZS5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICAvLyBGb3IgVFAgdG8gYWNjZXNzIHNoYXJlZF9rZXlcbiAgICBjb25zdCB0cFdyYXBwZWRTaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHRwV3JhcHBpbmdLZXkuandrLFxuICAgICAgc2hhcmVkS2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG4gICAgLy8gRm9yIHN1YmplY3QgdG8gYWNjZXNzIHNoYXJlZF9rZXlcbiAgICBjb25zdCBzdWJqZWN0S2V5V3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleSxcbiAgICAgIHNoYXJlZEtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzbGlwU3ViQXNzZW1ibHkudGhyZXNob2xkID09PSAxXG4gICAgICAgID8gc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1swXVxuICAgICAgICA6IHNsaXBTdWJBc3NlbWJseS5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2xpcFN1YkFzc2VtYmx5LnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKCdwYXJ0aWFsQXNzZW1ibHlLZXknLCBwYXJ0aWFsQXNzZW1ibHlLZXkpO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgdHAuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHRwLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHBhcnRpYWxBc3NlbWJseUtleVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHBXcmFwcGluZ0tleUlkOiB0cFdyYXBwaW5nS2V5LmlkLFxuICAgICAgdHBXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5LFxuICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXJJZCB8fCB2b2lkIDAsIC8vIElmIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgICB0cElkOiBhcHByb3ZlcklkID8gdm9pZCAwIDogdHAudHBJZCwgLy8gZWxzZSBhZGRpbmcgbmV3IFRQXG4gICAgfTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXBhcmUgc2xpcDM5XG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlLFxuICAgICAgc2xpcEFzc2VtYmx5XG4gICAgKTtcbiAgICByZXR1cm4gc2xpcEFzc2VtYmx5O1xuICB9XG59XG4iXX0=
|
|
@@ -54,9 +54,10 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
|
|
|
54
54
|
})));
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
// ?? TODO The return from this should not be any.
|
|
58
57
|
approveRequest(sharedResetId, pbkFingerPrint) {
|
|
59
|
-
return
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
return this.lrGraphQL.lrMutate(yield this.approveRequestMutation(sharedResetId, pbkFingerPrint));
|
|
60
|
+
});
|
|
60
61
|
}
|
|
61
62
|
approveRequestMutation(sharedResetId, pbkFingerPrint) {
|
|
62
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -109,4 +110,4 @@ TpPasswordResetRequestService = __decorate([
|
|
|
109
110
|
})
|
|
110
111
|
], TpPasswordResetRequestService);
|
|
111
112
|
export { TpPasswordResetRequestService };
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFFVixTQUFTLEdBQ1YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsb0NBQW9DLEVBQ3BDLDBCQUEwQixFQUMxQiwyQkFBMkIsR0FDNUIsTUFBTSx5QkFBeUIsQ0FBQzs7O0lBUXBCLDZCQUE2QixTQUE3Qiw2QkFBOEIsU0FBUSxTQUFTO0lBQzFELFlBQ1UsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLGlCQUFvQztRQUU1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBRzlDLENBQUM7SUFFSyxlQUFlOztZQUNuQixPQUFPLENBQ0wsTUFBTSxJ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b25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHtcbiAgTHJHcmFwaFFMU2VydmljZSxcbiAgTHJNZXJnZWRNdXRhdGlvbixcbiAgTHJNdXRhdGlvbixcbiAgTHJNdXRhdGlvbkJhc2UsXG4gIExyU2VydmljZSxcbn0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgVHBBc3NlbWJseVN0YXRlLCBUcENsYWltQXBwcm92ZXJTdGF0ZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTHJCYWRTdGF0ZUV4Y2VwdGlvbiB9IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5LFxuICBTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnksXG59IGZyb20gJy4vdHAtcGFzc3dvcmQtcmVzZXQuZ3FsJztcblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRwUGFzc3dvcmRSZXNldFJlcXVlc3RTZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBhc3luYyBnZXRTaGFyZWRSZXNldHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5LFxuICAgICAgfSlcbiAgICApLnNoYXJlZFRwUGFzc3dvcmRSZXNldHM7XG4gIH1cblxuICBhc3luYyBnZXRTaGFyZWRSZXNldChpZCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgICAgcXVlcnk6IFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5zaGFyZWRUcFBhc3N3b3JkUmVzZXQ7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZVJlcXVlc3RPclJhaXNlKHNoYXJlZFJlc2V0KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSBzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LmNsYWltLnN0YXRlO1xuICAgIGlmIChzdGF0ZSAhPT0gVHBBc3NlbWJseVN0YXRlLkNMQUlNRUQpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKGBDbGFpbSBpcyBhbHJlYWR5IGluICR7c3RhdGV9IHN0YXRlLmApO1xuICAgIH1cbiAgfVxuXG4gIHJlamVjdFJlcXVlc3Qoc2hhcmVkUmVzZXRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMucmVqZWN0UmVxdWVzdE11dGF0aW9uKHNoYXJlZFJlc2V0SWQpKTtcbiAgfVxuXG4gIGFzeW5jIHJlamVjdFJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzaGFyZWRSZXNldCA9IGF3YWl0IHRoaXMuZ2V0U2hhcmVkUmVzZXQoc2hhcmVkUmVzZXRJZCk7XG5cbiAgICB0aGlzLmFjdGl2ZVJlcXVlc3RPclJhaXNlKHNoYXJlZFJlc2V0KTtcblxuICAgIHJldHVybiBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShcbiAgICAgIHNoYXJlZFJlc2V0LnNoYXJlZFJlcXVlc3QuY2xhaW0uYXNDbGFpbUFwcHJvdmVycy5lZGdlc1xuICAgICAgICAuZmlsdGVyKChlZGdlKSA9PiBlZGdlLm5vZGUuc3RhdGUgPT09IFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRUQpXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKGVkZ2UpID0+XG4gICAgICAgICAgICBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgICAgIG11dGF0aW9uOiBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyBjbGFpbUFwcHJvdmVySWQ6IGVkZ2Uubm9kZS5pZCB9IH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8vID8/IFRPRE8gVGhlIHJldHVybiBmcm9tIHRoaXMgc2hvdWxkIG5vdCBiZSBhbnkuXG4gIGFwcHJvdmVSZXF1ZXN0KHNoYXJlZFJlc2V0SWQ6IHN0cmluZywgcGJrRmluZ2VyUHJpbnQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUoXG4gICAgICB0aGlzLmFwcHJvdmVSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZCwgcGJrRmluZ2VyUHJpbnQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGFwcHJvdmVSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZDogc3RyaW5nLCBwYmtGaW5nZXJQcmludD86IHN0cmluZykge1xuICAgIGNvbnN0IHNoYXJlZFJlc2V0ID0gYXdhaXQgdGhpcy5nZXRTaGFyZWRSZXNldChzaGFyZWRSZXNldElkKTtcblxuICAgIHRoaXMuYWN0aXZlUmVxdWVzdE9yUmFpc2Uoc2hhcmVkUmVzZXQpO1xuXG4gICAgY29uc3QgcGJrID0gYXdhaXQgSldLLmFzS2V5KEpTT04ucGFyc2Uoc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5weGsucGJrKSk7XG4gICAgY29uc29sZS5sb2cocGJrLnRvSlNPTigpKTtcblxuICAgIC8vIFRPRE8gPEFaPiBWZXJpZnkgcGJrIGFnYWluc3QgcGJrRmluZ2VyUHJpbnRcblxuICAgIGNvbnN0IGNsYWltQXBwcm92ZXJzID0gc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5jbGFpbS5hc0NsYWltQXBwcm92ZXJzLmVkZ2VzLmZpbHRlcihcbiAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuc3RhdGUgPT09IFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICApO1xuXG4gICAgLy8gQSBzaW5nbGUgYXBwcm92ZXIgbWF5IGJlbG9uZyB0byBtdWx0aXBsZSBzdWItYXNzZW1ibGllcy4gV2UgYXBwcm92ZSB0aGVtIGFsbCBoZXJlIGluIGEgc2luZ2xlXG4gICAgLy8gdHJhbnNhY3Rpb24uXG4gICAgcmV0dXJuIExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNsYWltQXBwcm92ZXJzLm1hcChhc3luYyAoYXBwcm92ZXJFZGdlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2EgPSBhcHByb3ZlckVkZ2Uubm9kZTtcbiAgICAgICAgICBjb25zdCBpbnB1dCA9IHtcbiAgICAgICAgICAgIGNsYWltQXBwcm92ZXJJZDogY2EuaWQsXG4gICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsczogYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIGNhLnJlY2VpdmVyQXBwcm92YWxzLmVkZ2VzLm1hcChhc3luYyAocmVjZWl2ZXJFZGdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmEgPSByZWNlaXZlckVkZ2Uubm9kZTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbElkOiByYS5pZCxcbiAgICAgICAgICAgICAgICAgIHJlY2VpdmVyQ2lwaGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5OiBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgcGJrLFxuICAgICAgICAgICAgICAgICAgICBjYS5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKGlucHV0KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICAgICAgICBtdXRhdGlvbjogQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFFVixTQUFTLEdBQ1YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsb0NBQW9DLEVBQ3BDLDBCQUEwQixFQUMxQiwyQkFBMkIsR0FDNUIsTUFBTSx5QkFBeUIsQ0FBQzs7O0lBUXBCLDZCQUE2QixTQUE3Qiw2QkFBOEIsU0FBUSxTQUFTO0lBQzFELFlBQ1UsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLGlCQUFvQztRQUU1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBRzlDLENBQUM7SUFFSyxlQUFlOztZQUNuQixPQUFPLENBQ0wsTUFBTSxJ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dG9yLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQge1xuICBMckdyYXBoUUxTZXJ2aWNlLFxuICBMck1lcmdlZE11dGF0aW9uLFxuICBMck11dGF0aW9uLFxuICBMck11dGF0aW9uQmFzZSxcbiAgTHJTZXJ2aWNlLFxufSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBUcEFzc2VtYmx5U3RhdGUsIFRwQ2xhaW1BcHByb3ZlclN0YXRlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMckJhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnksXG4gIFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeSxcbn0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5ncWwnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0UmVxdWVzdFNlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNoYXJlZFJlc2V0cygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5xdWVyeSh7XG4gICAgICAgIHF1ZXJ5OiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnksXG4gICAgICB9KVxuICAgICkuc2hhcmVkVHBQYXNzd29yZFJlc2V0cztcbiAgfVxuXG4gIGFzeW5jIGdldFNoYXJlZFJlc2V0KGlkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLnNoYXJlZFRwUGFzc3dvcmRSZXNldDtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlUmVxdWVzdE9yUmFpc2Uoc2hhcmVkUmVzZXQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHNoYXJlZFJlc2V0LnNoYXJlZFJlcXVlc3QuY2xhaW0uc3RhdGU7XG4gICAgaWYgKHN0YXRlICE9PSBUcEFzc2VtYmx5U3RhdGUuQ0xBSU1FRCkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oYENsYWltIGlzIGFscmVhZHkgaW4gJHtzdGF0ZX0gc3RhdGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmVqZWN0UmVxdWVzdChzaGFyZWRSZXNldElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5yZWplY3RSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVqZWN0UmVxdWVzdE11dGF0aW9uKHNoYXJlZFJlc2V0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNoYXJlZFJlc2V0ID0gYXdhaXQgdGhpcy5nZXRTaGFyZWRSZXNldChzaGFyZWRSZXNldElkKTtcblxuICAgIHRoaXMuYWN0aXZlUmVxdWVzdE9yUmFpc2Uoc2hhcmVkUmVzZXQpO1xuXG4gICAgcmV0dXJuIExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKFxuICAgICAgc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5jbGFpbS5hc0NsYWltQXBwcm92ZXJzLmVkZ2VzXG4gICAgICAgIC5maWx0ZXIoKGVkZ2UpID0+IGVkZ2Uubm9kZS5zdGF0ZSA9PT0gVHBDbGFpbUFwcHJvdmVyU3RhdGUuQ0xBSU1FRClcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoZWRnZSkgPT5cbiAgICAgICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICAgICAgbXV0YXRpb246IFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgICAgICAgICAgICAgdmFyaWFibGVzOiB7IGlucHV0OiB7IGNsYWltQXBwcm92ZXJJZDogZWRnZS5ub2RlLmlkIH0gfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYXBwcm92ZVJlcXVlc3Qoc2hhcmVkUmVzZXRJZDogc3RyaW5nLCBwYmtGaW5nZXJQcmludD86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgIGF3YWl0IHRoaXMuYXBwcm92ZVJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkLCBwYmtGaW5nZXJQcmludClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYXBwcm92ZVJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkOiBzdHJpbmcsIHBia0ZpbmdlclByaW50Pzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICBjb25zdCBwYmsgPSBhd2FpdCBKV0suYXNLZXkoSlNPTi5wYXJzZShzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LnB4ay5wYmspKTtcbiAgICBjb25zb2xlLmxvZyhwYmsudG9KU09OKCkpO1xuXG4gICAgLy8gVE9ETyA8QVo+IFZlcmlmeSBwYmsgYWdhaW5zdCBwYmtGaW5nZXJQcmludFxuXG4gICAgY29uc3QgY2xhaW1BcHByb3ZlcnMgPSBzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LmNsYWltLmFzQ2xhaW1BcHByb3ZlcnMuZWRnZXMuZmlsdGVyKFxuICAgICAgKGVkZ2UpID0+IGVkZ2Uubm9kZS5zdGF0ZSA9PT0gVHBDbGFpbUFwcHJvdmVyU3RhdGUuQ0xBSU1FRFxuICAgICk7XG5cbiAgICAvLyBBIHNpbmdsZSBhcHByb3ZlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzLiBXZSBhcHByb3ZlIHRoZW0gYWxsIGhlcmUgaW4gYSBzaW5nbGVcbiAgICAvLyB0cmFuc2FjdGlvbi5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2xhaW1BcHByb3ZlcnMubWFwKGFzeW5jIChhcHByb3ZlckVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjYSA9IGFwcHJvdmVyRWRnZS5ub2RlO1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAgICAgY2xhaW1BcHByb3ZlcklkOiBjYS5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY2EucmVjZWl2ZXJBcHByb3ZhbHMuZWRnZXMubWFwKGFzeW5jIChyZWNlaXZlckVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYSA9IHJlY2VpdmVyRWRnZS5ub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IHJhLmlkLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICBwYmssXG4gICAgICAgICAgICAgICAgICAgIGNhLnNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvblxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc29sZS5sb2coaW5wdXQpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable, Injector, NgZone } from '@angular/core';
|
|
3
|
+
import { RunOutsideAngular } from '../_common/run-outside-angular';
|
|
4
|
+
import { TpAssemblyController } from './tp-assembly';
|
|
5
|
+
import { TP_PASSWORD_RESET_SLIP39_PASSPHRASE } from './tp-password-reset.constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
let TpPasswordResetAssemblyController = class TpPasswordResetAssemblyController extends TpAssemblyController {
|
|
8
|
+
constructor(ngZone, injector) {
|
|
9
|
+
super(injector);
|
|
10
|
+
this.ngZone = ngZone;
|
|
11
|
+
this.injector = injector;
|
|
12
|
+
this.slip39Passphrase = TP_PASSWORD_RESET_SLIP39_PASSPHRASE;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
TpPasswordResetAssemblyController.ɵprov = i0.ɵɵdefineInjectable({ factory: function TpPasswordResetAssemblyController_Factory() { return new TpPasswordResetAssemblyController(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR)); }, token: TpPasswordResetAssemblyController, providedIn: "root" });
|
|
16
|
+
TpPasswordResetAssemblyController.decorators = [
|
|
17
|
+
{ type: Injectable, args: [{
|
|
18
|
+
providedIn: 'root',
|
|
19
|
+
},] }
|
|
20
|
+
];
|
|
21
|
+
TpPasswordResetAssemblyController.ctorParameters = () => [
|
|
22
|
+
{ type: NgZone },
|
|
23
|
+
{ type: Injector }
|
|
24
|
+
];
|
|
25
|
+
TpPasswordResetAssemblyController = __decorate([
|
|
26
|
+
RunOutsideAngular({
|
|
27
|
+
ngZoneName: 'ngZone',
|
|
28
|
+
})
|
|
29
|
+
], TpPasswordResetAssemblyController);
|
|
30
|
+
export { TpPasswordResetAssemblyController };
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RwLXBhc3N3b3JkLXJlc2V0LmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0lBUXZFLGlDQUFpQyxTQUFqQyxpQ0FBa0MsU0FBUSxvQkFBb0I7SUFHekUsWUFBb0IsTUFBYyxFQUFVLFFBQWtCO1FBQzVELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRjlELHFCQUFnQixHQUFHLG1DQUFtQyxDQUFDO0lBSXZELENBQUM7Q0FDRixDQUFBOzs7WUFUQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVY4QixNQUFNO1lBQWhCLFFBQVE7O0FBV2hCLGlDQUFpQztJQU43QyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsaUNBQWlDLENBTTdDO1NBTlksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVHBBc3NlbWJseUNvbnRyb2xsZXIgfSBmcm9tICcuL3RwLWFzc2VtYmx5JztcbmltcG9ydCB7IFRQX1BBU1NXT1JEX1JFU0VUX1NMSVAzOV9QQVNTUEhSQVNFIH0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5jb25zdGFudHMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0QXNzZW1ibHlDb250cm9sbGVyIGV4dGVuZHMgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBzbGlwMzlQYXNzcGhyYXNlID0gVFBfUEFTU1dPUkRfUkVTRVRfU0xJUDM5X1BBU1NQSFJBU0U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -173,6 +173,7 @@ query TpPasswordResetQuery {
|
|
|
173
173
|
assembly {
|
|
174
174
|
singleReject
|
|
175
175
|
quorum
|
|
176
|
+
subjectCipherData
|
|
176
177
|
subjectKey {
|
|
177
178
|
id
|
|
178
179
|
}
|
|
@@ -187,6 +188,9 @@ query TpPasswordResetQuery {
|
|
|
187
188
|
singleReject
|
|
188
189
|
quorum
|
|
189
190
|
subjectCipherData
|
|
191
|
+
subjectKey {
|
|
192
|
+
id
|
|
193
|
+
}
|
|
190
194
|
approvers {
|
|
191
195
|
edges {
|
|
192
196
|
node {
|
|
@@ -229,4 +233,4 @@ mutation UpdateTpPasswordResetMutation($input: UpdateTpPasswordResetInput!) {
|
|
|
229
233
|
}
|
|
230
234
|
}
|
|
231
235
|
}`;
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuZ3FsLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQStEMUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFEakYsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBbUM7Ozs7Ozs7Ozs7RUFVcEYsNkJBQTZCO0NBQzlCLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQWtDOzs7Ozs7RUFNbEYsNkJBQTZCO0NBQzlCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7OztFQUt0RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsUUFBUSxDQUE0Qzs7Ozs7OztFQU90RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsUUFBUSxDQUFpRDs7Ozs7OztFQU9oSCxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUE4Qzs7Ozs7OztFQU8xRyxDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsUUFBUSxDQUE2Qzs7Ozs7Ozs7O0VBU3hHLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7Ozs7Ozs7RUFTdEcsQ0FBQztBQTJDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlDOUUsQ0FBQztBQTRDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlDdEUsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7Ozs7RUFPeEYsQ0FBQztBQU9ILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7O0VBS3hGLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7O0VBT3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljU2NhbGFyLCBJRCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIFRwQ2xhaW1TdGF0ZSxcbiAgVHBDbGFpbUFwcHJvdmVyU3RhdGUsXG59IGZyb20gJy4uL2FwaS90eXBlcy9sci1ncmFwaHFsLnR5cGVzJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnLi4vYXBpL3R5cGVzL2dyYXBocWwudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0IHtcbiAgaWQ6IElEO1xuICB0cDoge1xuICAgIGlkOiBJRDtcbiAgICBvdGhlcjoge1xuICAgICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBhc3NlbWJseToge1xuICAgIGFzQXBwcm92ZXJzOiB7XG4gICAgICBlZGdlczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgIHNoYXJlZEtleToge1xuICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgIH07XG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGFueTtcbiAgICAgICAgfTtcbiAgICAgIH1bXTtcbiAgICB9O1xuICB9O1xuICBzaGFyZWRSZXF1ZXN0OiB7XG4gICAgaWQ6IElEO1xuICAgIHB4azoge1xuICAgICAgaWQ6IElEO1xuICAgICAgcGJrOiBzdHJpbmc7XG4gICAgfTtcbiAgICBjbGFpbToge1xuICAgICAgaWQ6IElEO1xuICAgICAgc3RhdGU6IFRwQ2xhaW1TdGF0ZTtcbiAgICAgIGFzQ2xhaW1BcHByb3ZlcnM6IHtcbiAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICBzdGF0ZTogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gICAgICAgICAgICBzaGFyZWRLZXk6IHtcbiAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uOiBhbnk7XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IHN0cmluZztcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbHM6IHtcbiAgICAgICAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9O1xuICAgICAgICB9W107XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5jb25zdCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudCA9IGdxbFR5cGVkPFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0PmBcbmZyYWdtZW50IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50IG9uIFNoYXJlZFRwUGFzc3dvcmRSZXNldE5vZGUge1xuICBpZFxuICB0cCB7XG4gICAgaWRcbiAgICBvdGhlciB7XG4gICAgICB1c2VybmFtZVxuICAgIH1cbiAgfVxuICBhc3NlbWJseSB7XG4gICAgYXNBcHByb3ZlcnMge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICAgIHNoYXJlZEtleSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgIH1cbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2hhcmVkUmVxdWVzdCB7XG4gICAgaWRcbiAgICBweGsge1xuICAgICAgaWRcbiAgICAgIHBia1xuICAgIH1cbiAgICBjbGFpbSB7XG4gICAgICBpZFxuICAgICAgc3RhdGVcbiAgICAgIGFzQ2xhaW1BcHByb3ZlcnMge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgIHNoYXJlZEtleSB7XG4gICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbHMge1xuICAgICAgICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5UmVzdWx0IHtcbiAgc2hhcmVkVHBQYXNzd29yZFJlc2V0czoge1xuICAgIGVkZ2VzOiB7XG4gICAgICBub2RlOiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdDtcbiAgICB9W107XG4gIH07XG59XG5leHBvcnQgY29uc3QgU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5ID0gZ3FsVHlwZWQ8U2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeSB7XG4gIHNoYXJlZFRwUGFzc3dvcmRSZXNldHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAuLi5TaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuJHtTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQge1xuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXQ6IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0O1xufVxuZXhwb3J0IGNvbnN0IFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5ID0gZ3FsVHlwZWQ8U2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQ+YFxucXVlcnkgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgc2hhcmVkVHBQYXNzd29yZFJlc2V0KGlkOiAkaWQpIHtcbiAgICAuLi5TaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFxuICB9XG59XG4ke1NoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgaWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdD5gXG5tdXRhdGlvbiBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24ge1xuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiB7fSkge1xuICAgIGlkXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvblJlc3VsdCB7XG4gIGNyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2U6IHtcbiAgICBjaGFsbGVuZ2U6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24gPSBncWxUeXBlZDxDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uKFxuICAkaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VJbnB1dCFcbikge1xuICBjcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICBjaGFsbGVuZ2VcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBwcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICBpZHBQYXNzd29yZDogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24oXG4gICRpbnB1dDogUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0SW5wdXQhXG4pIHtcbiAgcHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiAkaW5wdXQpIHtcbiAgICBpZHBQYXNzd29yZFxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XG4gIGNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgIGlkOiBJRDtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxuICAkaW5wdXQ6IENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIGNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgaWRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XG4gIGFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgY2xhaW1BcHByb3Zlcjoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcbiAgJGlucHV0OiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIGFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiAkaW5wdXQpIHtcbiAgICBjbGFpbUFwcHJvdmVyIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICByZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgY2xhaW1BcHByb3Zlcjoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcbiAgJGlucHV0OiBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0SW5wdXQhXG4pIHtcbiAgcmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgY2xhaW1BcHByb3ZlciB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5UmVzdWx0IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlcjoge1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcmVzZXRVc2VybmFtZTogc3RyaW5nO1xuICAgIHN0YXRlOiBUcENsYWltU3RhdGU7XG4gICAgcGFzc0tleToge1xuICAgICAgaWQ6IElEO1xuICAgICAgcGFzc0tleVBhcmFtczogR2VuZXJpY1NjYWxhcjtcbiAgICAgIHBhc3NJZHBQYXJhbXM6IEdlbmVyaWNTY2FsYXI7XG4gICAgfTtcbiAgICBtYXN0ZXJLZXk6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICAgIHB4azoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbiAgICBhc3NlbWJseToge1xuICAgICAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICBzdWJBc3NlbWJsaWVzOiB7XG4gICAgICAgIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICAgIGFwcHJvdmVyczoge1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIHN0YXRlOiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbiAgICAgICAgfVtdO1xuICAgICAgfVtdO1xuICAgIH07XG4gICAgYXBwcm92YWxzOiB7XG4gICAgICBpZDogSUQ7XG4gICAgICBtb2RpZmllZDogRGF0ZVRpbWU7XG4gICAgICBhcHByb3ZlckVtYWlsOiBzdHJpbmc7XG4gICAgICByZWNlaXZlckNpcGhlcjogc3RyaW5nO1xuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IHN0cmluZztcbiAgICB9W107XG4gICAgYXNzZW1ibHlDaXBoZXJEYXRhOiBzdHJpbmc7XG4gICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcms6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBUcFBhc3N3b3JkUmVzZXRVc2VyUXVlcnkgPSBncWxUeXBlZDxUcFBhc3N3b3JkUmVzZXRVc2VyUXVlcnlSZXN1bHQ+YFxucXVlcnkgVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlciB7XG4gICAgdXNlcm5hbWVcbiAgICByZXNldFVzZXJuYW1lXG4gICAgc3RhdGVcbiAgICBwYXNzS2V5IHtcbiAgICAgIGlkXG4gICAgICBwYXNzS2V5UGFyYW1zXG4gICAgICBwYXNzSWRwUGFyYW1zXG4gICAgfVxuICAgIG1hc3RlcktleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBweGsge1xuICAgICAgaWRcbiAgICB9XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcbiAgICBhc3NlbWJseSB7XG4gICAgICBzaW5nbGVSZWplY3RcbiAgICAgIHF1b3J1bVxuICAgICAgc3ViQXNzZW1ibGllcyB7XG4gICAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgICBxdW9ydW1cbiAgICAgICAgYXBwcm92ZXJzIHtcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgZW1haWxcbiAgICAgICAgICBzdGF0ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGFwcHJvdmFscyB7XG4gICAgICBpZFxuICAgICAgbW9kaWZpZWRcbiAgICAgIGFwcHJvdmVyRW1haWxcbiAgICAgIHJlY2VpdmVyQ2lwaGVyXG4gICAgICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgIH1cbiAgICBhc3NlbWJseUNpcGhlckRhdGFcbiAgICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclBya1xuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRRdWVyeVJlc3VsdCB7XG4gIHRwUGFzc3dvcmRSZXNldDoge1xuICAgIGlkOiBJRDtcbiAgICBhcHBsaWVkOiBib29sZWFuO1xuICAgIGFzc2VtYmx5OiB7XG4gICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICBxdW9ydW06IG51bWJlcjtcbiAgICAgIHN1YmplY3RLZXk6IHtcbiAgICAgICAgaWQ6IElEO1xuICAgICAgfTtcbiAgICAgIGFzc2VtYmx5S2V5OiB7XG4gICAgICAgIGlkOiBJRDtcbiAgICAgIH07XG4gICAgICBhc3NlbWJseUNpcGhlckRhdGE6IHN0cmluZztcbiAgICAgIHN1YkFzc2VtYmxpZXM6IHtcbiAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICAgICAgICBxdW9ydW06IG51bWJlcjtcbiAgICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhOiBzdHJpbmc7XG4gICAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgYXBwcm92ZXJzOiB7XG4gICAgICAgICAgICAgIGVkZ2VzOiB7XG4gICAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgdHA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHNoYXJlZEtleToge1xuICAgICAgICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFRwUGFzc3dvcmRSZXNldFF1ZXJ5ID0gZ3FsVHlwZWQ8VHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQ+YFxucXVlcnkgVHBQYXNzd29yZFJlc2V0UXVlcnkge1xuICB0cFBhc3N3b3JkUmVzZXQge1xuICAgIGlkXG4gICAgYXBwbGllZFxuICAgIGFzc2VtYmx5IHtcbiAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgcXVvcnVtXG4gICAgICBzdWJqZWN0S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIGFzc2VtYmx5S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIGFzc2VtYmx5Q2lwaGVyRGF0YVxuICAgICAgc3ViQXNzZW1ibGllcyB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzaW5nbGVSZWplY3RcbiAgICAgICAgICAgIHF1b3J1bVxuICAgICAgICAgICAgc3ViamVjdENpcGhlckRhdGFcbiAgICAgICAgICAgIGFwcHJvdmVycyB7XG4gICAgICAgICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB0cCB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICBjcmVhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENyZWF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBDcmVhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgY3JlYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uUmVzdWx0IHtcbiAgZGVsZXRlVHBQYXNzd29yZFJlc2V0OiB7XG4gICAgaWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gRGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24ge1xuICBkZWxldGVUcFBhc3N3b3JkUmVzZXQoaW5wdXQ6IHt9KSB7XG4gICAgaWRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICB1cGRhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFVwZGF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8VXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBVcGRhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgdXBkYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuZ3FsLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQStEMUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFEakYsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBbUM7Ozs7Ozs7Ozs7RUFVcEYsNkJBQTZCO0NBQzlCLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQWtDOzs7Ozs7RUFNbEYsNkJBQTZCO0NBQzlCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7OztFQUt0RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsUUFBUSxDQUE0Qzs7Ozs7OztFQU90RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsUUFBUSxDQUFpRDs7Ozs7OztFQU9oSCxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUE4Qzs7Ozs7OztFQU8xRyxDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsUUFBUSxDQUE2Qzs7Ozs7Ozs7O0VBU3hHLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7Ozs7Ozs7RUFTdEcsQ0FBQztBQTJDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlDOUUsQ0FBQztBQWlESCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2Q3RFLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7O0VBT3hGLENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7OztFQUt4RixDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsUUFBUSxDQUFxQzs7Ozs7OztFQU94RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJpY1NjYWxhciwgSUQgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5pbXBvcnQge1xuICBUcENsYWltU3RhdGUsXG4gIFRwQ2xhaW1BcHByb3ZlclN0YXRlLFxufSBmcm9tICcuLi9hcGkvdHlwZXMvbHItZ3JhcGhxbC50eXBlcyc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJy4uL2FwaS90eXBlcy9ncmFwaHFsLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdCB7XG4gIGlkOiBJRDtcbiAgdHA6IHtcbiAgICBpZDogSUQ7XG4gICAgb3RoZXI6IHtcbiAgICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgYXNzZW1ibHk6IHtcbiAgICBhc0FwcHJvdmVyczoge1xuICAgICAgZWRnZXM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIGlkOiBJRDtcbiAgICAgICAgICBzaGFyZWRLZXk6IHtcbiAgICAgICAgICAgIGlkOiBJRDtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGE6IHN0cmluZztcbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBhbnk7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgfTtcbiAgfTtcbiAgc2hhcmVkUmVxdWVzdDoge1xuICAgIGlkOiBJRDtcbiAgICBweGs6IHtcbiAgICAgIGlkOiBJRDtcbiAgICAgIHBiazogc3RyaW5nO1xuICAgIH07XG4gICAgY2xhaW06IHtcbiAgICAgIGlkOiBJRDtcbiAgICAgIHN0YXRlOiBUcENsYWltU3RhdGU7XG4gICAgICBhc0NsYWltQXBwcm92ZXJzOiB7XG4gICAgICAgIGVkZ2VzOiB7XG4gICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xuICAgICAgICAgICAgc2hhcmVkS2V5OiB7XG4gICAgICAgICAgICAgIGlkOiBJRDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGE6IHN0cmluZztcbiAgICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5OiBzdHJpbmc7XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb246IGFueTtcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzOiB7XG4gICAgICAgICAgICAgIGVkZ2VzOiB7XG4gICAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuY29uc3QgU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnQgPSBncWxUeXBlZDxTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdD5gXG5mcmFnbWVudCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudCBvbiBTaGFyZWRUcFBhc3N3b3JkUmVzZXROb2RlIHtcbiAgaWRcbiAgdHAge1xuICAgIGlkXG4gICAgb3RoZXIge1xuICAgICAgdXNlcm5hbWVcbiAgICB9XG4gIH1cbiAgYXNzZW1ibHkge1xuICAgIGFzQXBwcm92ZXJzIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICB9XG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNoYXJlZFJlcXVlc3Qge1xuICAgIGlkXG4gICAgcHhrIHtcbiAgICAgIGlkXG4gICAgICBwYmtcbiAgICB9XG4gICAgY2xhaW0ge1xuICAgICAgaWRcbiAgICAgIHN0YXRlXG4gICAgICBhc0NsYWltQXBwcm92ZXJzIHtcbiAgICAgICAgZWRnZXMge1xuICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhXG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzIHtcbiAgICAgICAgICAgICAgZWRnZXMge1xuICAgICAgICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeVJlc3VsdCB7XG4gIHNoYXJlZFRwUGFzc3dvcmRSZXNldHM6IHtcbiAgICBlZGdlczoge1xuICAgICAgbm9kZTogU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnRSZXN1bHQ7XG4gICAgfVtdO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeSA9IGdxbFR5cGVkPFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeVJlc3VsdD5gXG5xdWVyeSBTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnkge1xuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXRzIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgLi4uU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiR7U2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5UmVzdWx0IHtcbiAgc2hhcmVkVHBQYXNzd29yZFJlc2V0OiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdDtcbn1cbmV4cG9ydCBjb25zdCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRRdWVyeSA9IGdxbFR5cGVkPFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5KCRpZDogTHJSZWxheUlkSW5wdXQhKSB7XG4gIHNoYXJlZFRwUGFzc3dvcmRSZXNldChpZDogJGlkKSB7XG4gICAgLi4uU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnRcbiAgfVxufVxuJHtTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0IHtcbiAgY2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgIGlkOiBJRDtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24gPSBncWxUeXBlZDxDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uIHtcbiAgY2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDoge30pIHtcbiAgICBpZFxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb25SZXN1bHQge1xuICBjcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlOiB7XG4gICAgY2hhbGxlbmdlOiBhbnk7XG4gIH07XG59XG5leHBvcnQgY29uc3QgQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvbihcbiAgJGlucHV0OiBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlSW5wdXQhXG4pIHtcbiAgY3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZShpbnB1dDogJGlucHV0KSB7XG4gICAgY2hhbGxlbmdlXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0IHtcbiAgcHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgaWRwUGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxuICAkaW5wdXQ6IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIHByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgaWRwUGFzc3dvcmRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBjb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICBpZDogSUQ7XG4gIH07XG59XG5leHBvcnQgY29uc3QgQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24gPSBncWxUeXBlZDxDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdD5gXG5tdXRhdGlvbiBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcbiAgJGlucHV0OiBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RJbnB1dCFcbikge1xuICBjb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3QoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGlkXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBhcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgIGNsYWltQXBwcm92ZXI6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24gPSBncWxUeXBlZDxBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24oXG4gICRpbnB1dDogQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RJbnB1dCFcbikge1xuICBhcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgY2xhaW1BcHByb3ZlciB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0IHtcbiAgcmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgIGNsYWltQXBwcm92ZXI6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdD5gXG5tdXRhdGlvbiBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24oXG4gICRpbnB1dDogUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIHJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3QoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGNsYWltQXBwcm92ZXIge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeVJlc3VsdCB7XG4gIHRwUGFzc3dvcmRSZXNldFVzZXI6IHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHJlc2V0VXNlcm5hbWU6IHN0cmluZztcbiAgICBzdGF0ZTogVHBDbGFpbVN0YXRlO1xuICAgIHBhc3NLZXk6IHtcbiAgICAgIGlkOiBJRDtcbiAgICAgIHBhc3NLZXlQYXJhbXM6IEdlbmVyaWNTY2FsYXI7XG4gICAgICBwYXNzSWRwUGFyYW1zOiBHZW5lcmljU2NhbGFyO1xuICAgIH07XG4gICAgbWFzdGVyS2V5OiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgICBweGs6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBzdHJpbmc7XG4gICAgYXNzZW1ibHk6IHtcbiAgICAgIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgICAgIHF1b3J1bTogbnVtYmVyO1xuICAgICAgc3ViQXNzZW1ibGllczoge1xuICAgICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICAgIHF1b3J1bTogbnVtYmVyO1xuICAgICAgICBhcHByb3ZlcnM6IHtcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICBzdGF0ZTogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gICAgICAgIH1bXTtcbiAgICAgIH1bXTtcbiAgICB9O1xuICAgIGFwcHJvdmFsczoge1xuICAgICAgaWQ6IElEO1xuICAgICAgbW9kaWZpZWQ6IERhdGVUaW1lO1xuICAgICAgYXBwcm92ZXJFbWFpbDogc3RyaW5nO1xuICAgICAgcmVjZWl2ZXJDaXBoZXI6IHN0cmluZztcbiAgICAgIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5OiBzdHJpbmc7XG4gICAgfVtdO1xuICAgIGFzc2VtYmx5Q2lwaGVyRGF0YTogc3RyaW5nO1xuICAgIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrOiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY29uc3QgVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5ID0gZ3FsVHlwZWQ8VHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeSB7XG4gIHRwUGFzc3dvcmRSZXNldFVzZXIge1xuICAgIHVzZXJuYW1lXG4gICAgcmVzZXRVc2VybmFtZVxuICAgIHN0YXRlXG4gICAgcGFzc0tleSB7XG4gICAgICBpZFxuICAgICAgcGFzc0tleVBhcmFtc1xuICAgICAgcGFzc0lkcFBhcmFtc1xuICAgIH1cbiAgICBtYXN0ZXJLZXkge1xuICAgICAgaWRcbiAgICB9XG4gICAgcHhrIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5XG4gICAgYXNzZW1ibHkge1xuICAgICAgc2luZ2xlUmVqZWN0XG4gICAgICBxdW9ydW1cbiAgICAgIHN1YkFzc2VtYmxpZXMge1xuICAgICAgICBzaW5nbGVSZWplY3RcbiAgICAgICAgcXVvcnVtXG4gICAgICAgIGFwcHJvdmVycyB7XG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIGVtYWlsXG4gICAgICAgICAgc3RhdGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBhcHByb3ZhbHMge1xuICAgICAgaWRcbiAgICAgIG1vZGlmaWVkXG4gICAgICBhcHByb3ZlckVtYWlsXG4gICAgICByZWNlaXZlckNpcGhlclxuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICB9XG4gICAgYXNzZW1ibHlDaXBoZXJEYXRhXG4gICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmtcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQge1xuICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICBpZDogSUQ7XG4gICAgYXBwbGllZDogYm9vbGVhbjtcbiAgICBhc3NlbWJseToge1xuICAgICAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICBzdWJqZWN0Q2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IGFueTtcbiAgICAgIHN1YmplY3RLZXk6IHtcbiAgICAgICAgaWQ6IElEO1xuICAgICAgfTtcbiAgICAgIGFzc2VtYmx5S2V5OiB7XG4gICAgICAgIGlkOiBJRDtcbiAgICAgIH07XG4gICAgICBhc3NlbWJseUNpcGhlckRhdGE6IHN0cmluZztcbiAgICAgIHN1YkFzc2VtYmxpZXM6IHtcbiAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICAgICAgICBxdW9ydW06IG51bWJlcjtcbiAgICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhOiBzdHJpbmc7XG4gICAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgc3ViamVjdEtleToge1xuICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXBwcm92ZXJzOiB7XG4gICAgICAgICAgICAgIGVkZ2VzOiB7XG4gICAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgdHA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHNoYXJlZEtleToge1xuICAgICAgICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFRwUGFzc3dvcmRSZXNldFF1ZXJ5ID0gZ3FsVHlwZWQ8VHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQ+YFxucXVlcnkgVHBQYXNzd29yZFJlc2V0UXVlcnkge1xuICB0cFBhc3N3b3JkUmVzZXQge1xuICAgIGlkXG4gICAgYXBwbGllZFxuICAgIGFzc2VtYmx5IHtcbiAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgcXVvcnVtXG4gICAgICBzdWJqZWN0Q2lwaGVyRGF0YVxuICAgICAgc3ViamVjdEtleSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICBhc3NlbWJseUtleSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICBhc3NlbWJseUNpcGhlckRhdGFcbiAgICAgIHN1YkFzc2VtYmxpZXMge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgc2luZ2xlUmVqZWN0XG4gICAgICAgICAgICBxdW9ydW1cbiAgICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhXG4gICAgICAgICAgICBzdWJqZWN0S2V5IHtcbiAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcHJvdmVycyB7XG4gICAgICAgICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB0cCB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICBjcmVhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENyZWF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBDcmVhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgY3JlYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uUmVzdWx0IHtcbiAgZGVsZXRlVHBQYXNzd29yZFJlc2V0OiB7XG4gICAgaWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gRGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24ge1xuICBkZWxldGVUcFBhc3N3b3JkUmVzZXQoaW5wdXQ6IHt9KSB7XG4gICAgaWRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICB1cGRhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFVwZGF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8VXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBVcGRhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgdXBkYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuIl19
|