@lifeready/core 8.0.13 → 8.0.15
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 +118 -24
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/api/query-processor/query-processor.service.js +11 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +6 -1
- package/esm2015/lib/auth/auth.service.js +6 -1
- package/esm2015/lib/life-ready.config.js +6 -3
- package/esm2015/lib/plan/plan.types.js +1 -1
- package/esm2015/lib/scenario/scenario.service.js +5 -5
- package/esm2015/lib/trusted-party/trusted-party.gql.private.js +3 -1
- package/esm2015/lib/trusted-party/trusted-party.service.js +56 -8
- package/esm2015/lib/trusted-party/trusted-party.types.js +1 -1
- package/fesm2015/lifeready-core.js +83 -10
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +9 -0
- package/lib/auth/auth.service.d.ts +1 -0
- package/lib/life-ready.config.d.ts +2 -0
- package/lib/plan/plan.types.d.ts +1 -0
- package/lib/trusted-party/trusted-party.gql.private.d.ts +2 -1
- package/lib/trusted-party/trusted-party.service.d.ts +39 -14
- package/lib/trusted-party/trusted-party.types.d.ts +9 -2
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { __awaiter, __decorate } from "tslib";
|
|
|
2
2
|
import { Injectable, Injector, NgZone } from '@angular/core';
|
|
3
3
|
import { JWK } from 'node-jose';
|
|
4
4
|
import { LrMutation, LrService } from '../api/lr-graphql';
|
|
5
|
-
import { AccessRoleChoice } from '../api/types';
|
|
5
|
+
import { AccessRoleChoice, ShareTypeChoice, } from '../api/types';
|
|
6
6
|
import { EncryptionService } from '../encryption/encryption.service';
|
|
7
7
|
import { ItemService } from '../item/item.service';
|
|
8
8
|
import { KeyFactoryService } from '../key/key-factory.service';
|
|
@@ -70,7 +70,8 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
70
70
|
}
|
|
71
71
|
prepareCreateItemShareMutation(options) {
|
|
72
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
const { itemId, itemKeyId, tpId, tpSharedKeyId, accessRole, isDirectory, shareType, } = options;
|
|
73
|
+
const { itemId, itemKeyId, tpId, tpSharedKeyId, accessRole, isDirectory, shareType, plainMetaJson, } = options;
|
|
74
|
+
const plainMeta = plainMetaJson && JSON.stringify(plainMetaJson);
|
|
74
75
|
if (accessRole == AccessRoleChoice.DENY) {
|
|
75
76
|
if (itemKeyId || tpSharedKeyId) {
|
|
76
77
|
throw new KcBadArgumentException('If accessRole is AccessRoleChoice.DENY, must not specify any of itemId, itemKeyId, or tpSharedKeyId parameters');
|
|
@@ -84,6 +85,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
84
85
|
wrappingKeyId: null,
|
|
85
86
|
wrappedItemKey: null,
|
|
86
87
|
shareType,
|
|
88
|
+
plainMeta,
|
|
87
89
|
},
|
|
88
90
|
};
|
|
89
91
|
}
|
|
@@ -101,6 +103,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
101
103
|
wrappingKeyId: wrappingKey.id,
|
|
102
104
|
wrappedItemKey,
|
|
103
105
|
shareType,
|
|
106
|
+
plainMeta,
|
|
104
107
|
},
|
|
105
108
|
};
|
|
106
109
|
});
|
|
@@ -118,6 +121,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
118
121
|
});
|
|
119
122
|
});
|
|
120
123
|
}
|
|
124
|
+
updateDetachedDirectoryShare(options) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
return this.mutate(this.updateDetachedDirectoryShareMutation(options));
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
updateDetachedDirectoryShareMutation(options) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
return new LrMutation({
|
|
132
|
+
mutation: UpdateDirectoryShareMutation,
|
|
133
|
+
variables: yield this.prepareUpdateDetachedItemShareMutation(options),
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
121
137
|
updateFileShare(options) {
|
|
122
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
139
|
return this.mutate(this.updateFileShareMutation(options));
|
|
@@ -131,6 +147,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
131
147
|
});
|
|
132
148
|
});
|
|
133
149
|
}
|
|
150
|
+
updateDetachedFileShare(options) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
return this.mutate(this.updateDetachedFileShareMutation(options));
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
updateDetachedFileShareMutation(options) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
return new LrMutation({
|
|
158
|
+
mutation: UpdateFileShareMutation,
|
|
159
|
+
variables: yield this.prepareUpdateDetachedItemShareMutation(options),
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
134
163
|
getDirectoryShare(itemShareId) {
|
|
135
164
|
return this.lrGraphQL.query({
|
|
136
165
|
query: DirectoryShareQuery,
|
|
@@ -149,8 +178,13 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
149
178
|
}
|
|
150
179
|
prepareUpdateItemShareMutation(options) {
|
|
151
180
|
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
-
const { itemShareId, accessRole, isDirectory, itemId, itemKeyId, tpId, tpSharedKeyId, } = options;
|
|
153
|
-
|
|
181
|
+
const { itemShareId, accessRole, isDirectory, itemId, itemKeyId, tpId, tpSharedKeyId, plainMetaJson, } = options;
|
|
182
|
+
// If plainMetaJson is undefined, then plainMeta is undefined
|
|
183
|
+
// If plainMetaJson is null, then plainMeta is null
|
|
184
|
+
// If plainMetaJson has value, then plainMeta is JSON.stringify(plainMetaJson)
|
|
185
|
+
const plainMeta = plainMetaJson && JSON.stringify(plainMetaJson);
|
|
186
|
+
// If not updating access role or updating to DENY role, then we don't need any key material.
|
|
187
|
+
if (accessRole == null || accessRole == AccessRoleChoice.DENY) {
|
|
154
188
|
if (itemId || itemKeyId || tpId || tpSharedKeyId) {
|
|
155
189
|
throw new KcBadArgumentException('If accessRole is AccessRoleChoice.DENY, must not specify any of itemId, itemKeyId, tpId, or tpSharedKeyId parameters');
|
|
156
190
|
}
|
|
@@ -158,9 +192,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
158
192
|
input: {
|
|
159
193
|
id: itemShareId,
|
|
160
194
|
accessRole,
|
|
161
|
-
|
|
162
|
-
wrappingKeyId: null,
|
|
163
|
-
wrappedItemKey: null,
|
|
195
|
+
plainMeta,
|
|
164
196
|
},
|
|
165
197
|
};
|
|
166
198
|
}
|
|
@@ -175,6 +207,9 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
175
207
|
else {
|
|
176
208
|
itemShare = (yield this.getFileShare(itemShareId)).fileShare;
|
|
177
209
|
}
|
|
210
|
+
if (itemShare.shareType == ShareTypeChoice.DETACHED) {
|
|
211
|
+
throw new KcBadArgumentException('Use updateDetachedDirectoryShare() or updateDetachedFileShare() to updated DETACHED shares.');
|
|
212
|
+
}
|
|
178
213
|
}
|
|
179
214
|
return itemShare;
|
|
180
215
|
});
|
|
@@ -199,6 +234,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
199
234
|
itemKeyId: itemKey.id,
|
|
200
235
|
wrappingKeyId: wrappingKey.id,
|
|
201
236
|
wrappedItemKey,
|
|
237
|
+
plainMeta,
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
prepareUpdateDetachedItemShareMutation(options) {
|
|
243
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
244
|
+
const { itemShareId, accessRole, plainMetaJson } = options;
|
|
245
|
+
return {
|
|
246
|
+
input: {
|
|
247
|
+
id: itemShareId,
|
|
248
|
+
accessRole,
|
|
249
|
+
plainMeta: plainMetaJson && JSON.stringify(plainMetaJson),
|
|
202
250
|
},
|
|
203
251
|
};
|
|
204
252
|
});
|
|
@@ -402,4 +450,4 @@ TrustedPartyService = __decorate([
|
|
|
402
450
|
})
|
|
403
451
|
], TrustedPartyService);
|
|
404
452
|
export { TrustedPartyService };
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLGlDQUFpQyxFQUNqQywyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDRCQUE0QixFQUM1Qix1QkFBdUIsR0FDeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFP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WUFGVixpQkFBaUI7WUFGakIsaUJBQWlCOztBQTZDYixtQkFBbUI7SUFOL0IsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLG1CQUFtQixDQTBkL0I7U0ExZFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IEFjY2Vzc1JvbGVDaG9pY2UsIExyUmVsYXlJZElucHV0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSXRlbVNlcnZpY2UgfSBmcm9tICcuLi9pdGVtL2l0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleSB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHtcbiAgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbixcbiAgS2NCYWRTdGF0ZUV4Y2VwdGlvbixcbn0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENvbXBsZXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uLFxuICBDb21wbGV0ZURldGFjaGVkRmlsZVNoYXJlTXV0YXRpb24sXG4gIENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgQ3JlYXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbixcbiAgQ3JlYXRlRmlsZVNoYXJlTXV0YXRpb24sXG4gIERlbGV0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gIERlbGV0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICBEZWxldGVUcE11dGF0aW9uLFxuICBSZXF1ZXN0VHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIFVwZGF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gIFVwZGF0ZUZpbGVTaGFyZU11dGF0aW9uLFxufSBmcm9tICcuL3RydXN0ZWQtcGFydHkuZ3FsJztcbmltcG9ydCB7XG4gIERpcmVjdG9yeVNoYXJlUXVlcnksXG4gIERpcmVjdG9yeVNoYXJlUXVlcnlSZXN1bHQsXG4gIEZpbGVTaGFyZVF1ZXJ5LFxuICBGaWxlU2hhcmVRdWVyeVJlc3VsdCxcbiAgSXRlbVNoYXJlUXVlcnlSZXN1bHQsXG4gIFRwQ3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeSxcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LmdxbC5wcml2YXRlJztcbmltcG9ydCB7XG4gIENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zLFxuICBDcmVhdGVJdGVtU2hhcmVPcHRpb25zLFxuICBVcGRhdGVJdGVtU2hhcmVPcHRpb25zLFxufSBmcm9tICcuL3RydXN0ZWQtcGFydHkudHlwZXMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFBhcnR5U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGRlbGV0ZVRwKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKSk7XG4gIH1cblxuICBkZWxldGVUcE11dGF0aW9uKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGlyZWN0b3J5U2hhcmUob3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbihvcHRpb25zOiBDcmVhdGVJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVGaWxlU2hhcmUob3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnM6IENyZWF0ZUl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlSXRlbVNoYXJlTXV0YXRpb24oXG4gICAgb3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucyAmIHsgaXNEaXJlY3Rvcnk6IGJvb2xlYW4gfVxuICApIHtcbiAgICBjb25zdCB7XG4gICAgICBpdGVtSWQsXG4gICAgICBpdGVtS2V5SWQsXG4gICAgICB0cElkLFxuICAgICAgdHBTaGFyZWRLZXlJZCxcbiAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICBpc0RpcmVjdG9yeSxcbiAgICAgIHNoYXJlVHlwZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmIChhY2Nlc3NSb2xlID09IEFjY2Vzc1JvbGVDaG9pY2UuREVOWSkge1xuICAgICAgaWYgKGl0ZW1LZXlJZCB8fCB0cFNoYXJlZEtleUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAgICdJZiBhY2Nlc3NSb2xlIGlzIEFjY2Vzc1JvbGVDaG9pY2UuREVOWSwgbXVzdCBub3Qgc3BlY2lmeSBhbnkgb2YgaXRlbUlkLCBpdGVtS2V5SWQsIG9yIHRwU2hhcmVkS2V5SWQgcGFyYW1ldGVycydcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpdGVtSWQsXG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICAgIGl0ZW1LZXlJZDogbnVsbCxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiBudWxsLFxuICAgICAgICAgIHdyYXBwZWRJdGVtS2V5OiBudWxsLFxuICAgICAgICAgIHNoYXJlVHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGl0ZW1LZXlJZCwgKCkgPT5cbiAgICAgIGlzRGlyZWN0b3J5XG4gICAgICAgID8gdGhpcy5pdGVtU2VydmljZS5nZXREaXJlY3RvcnlLZXlJZChpdGVtSWQpXG4gICAgICAgIDogdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5SWQoaXRlbUlkKVxuICAgICk7XG5cbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHRwU2hhcmVkS2V5SWQsICgpID0+XG4gICAgICB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCkudGhlbigocmVzKSA9PiByZXMuc2hhcmVkS2V5LmlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkoXG4gICAgICB3cmFwcGluZ0tleSxcbiAgICAgIGl0ZW1LZXkuandrXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dDoge1xuICAgICAgICBpdGVtSWQsXG4gICAgICAgIHRwSWQsXG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5LFxuICAgICAgICBzaGFyZVR5cGUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhc3luYyB1cGRhdGVEaXJlY3RvcnlTaGFyZShvcHRpb25zOiBVcGRhdGVJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uKG9wdGlvbnM6IFVwZGF0ZUl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZUl0ZW1TaGFyZU11dGF0aW9uKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUZpbGVTaGFyZShvcHRpb25zOiBVcGRhdGVJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlRmlsZVNoYXJlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmlsZVNoYXJlTXV0YXRpb24ob3B0aW9uczogVXBkYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlRmlsZVNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZUl0ZW1TaGFyZU11dGF0aW9uKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERpcmVjdG9yeVNoYXJlKFxuICAgIGl0ZW1TaGFyZUlkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEaXJlY3RvcnlTaGFyZVF1ZXJ5UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBEaXJlY3RvcnlTaGFyZVF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkOiBpdGVtU2hhcmVJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVTaGFyZShpdGVtU2hhcmVJZDogc3RyaW5nKTogUHJvbWlzZTxGaWxlU2hhcmVRdWVyeVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICBxdWVyeTogRmlsZVNoYXJlUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWQ6IGl0ZW1TaGFyZUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUl0ZW1TaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IFVwZGF0ZUl0ZW1TaGFyZU9wdGlvbnMgJiB7IGlzRGlyZWN0b3J5OiBib29sZWFuIH1cbiAgKSB7XG4gICAgY29uc3Qge1xuICAgICAgaXRlbVNoYXJlSWQsXG4gICAgICBhY2Nlc3NSb2xlLFxuICAgICAgaXNEaXJlY3RvcnksXG4gICAgICBpdGVtSWQsXG4gICAgICBpdGVtS2V5SWQsXG4gICAgICB0cElkLFxuICAgICAgdHBTaGFyZWRLZXlJZCxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmIChhY2Nlc3NSb2xlID09IEFjY2Vzc1JvbGVDaG9pY2UuREVOWSkge1xuICAgICAgaWYgKGl0ZW1JZCB8fCBpdGVtS2V5SWQgfHwgdHBJZCB8fCB0cFNoYXJlZEtleUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAgICdJZiBhY2Nlc3NSb2xlIGlzIEFjY2Vzc1JvbGVDaG9pY2UuREVOWSwgbXVzdCBub3Qgc3BlY2lmeSBhbnkgb2YgaXRlbUlkLCBpdGVtS2V5SWQsIHRwSWQsIG9yIHRwU2hhcmVkS2V5SWQgcGFyYW1ldGVycydcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaXRlbVNoYXJlSWQsXG4gICAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgICBpdGVtS2V5SWQ6IG51bGwsXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogbnVsbCxcbiAgICAgICAgICB3cmFwcGVkSXRlbUtleTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2FjaGluZyB0aGUgcmVzdWx0IHNvIHdlIG9ubHkgbmVlZCBvbmUgY2FsbC5cbiAgICBsZXQgaXRlbVNoYXJlOiBJdGVtU2hhcmVRdWVyeVJlc3VsdDtcblxuICAgIGNvbnN0IGdldEl0ZW1TaGFyZSA9IGFzeW5jICgpOiBQcm9taXNlPEl0ZW1TaGFyZVF1ZXJ5UmVzdWx0PiA9PiB7XG4gICAgICBpZiAoIWl0ZW1TaGFyZSkge1xuICAgICAgICBpZiAoaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICBpdGVtU2hhcmUgPSAoYXdhaXQgdGhpcy5nZXREaXJlY3RvcnlTaGFyZShpdGVtU2hhcmVJZCkpXG4gICAgICAgICAgICAuZGlyZWN0b3J5U2hhcmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVNoYXJlID0gKGF3YWl0IHRoaXMuZ2V0RmlsZVNoYXJlKGl0ZW1TaGFyZUlkKSkuZmlsZVNoYXJlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtU2hhcmU7XG4gICAgfTtcblxuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShcbiAgICAgIGl0ZW1LZXlJZCxcbiAgICAgIGFzeW5jICgpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgICAgICBjb25zdCBpdGVtSWRfID0gaXRlbUlkIHx8IChhd2FpdCBnZXRJdGVtU2hhcmUoKSkuaXRlbS5pZDtcbiAgICAgICAgaWYgKGlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWQoaXRlbUlkXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVNlcnZpY2UuZ2V0RmlsZUtleUlkKGl0ZW1JZF8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB0cFNoYXJlZEtleUlkLFxuICAgICAgYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgICAgIGNvbnN0IHRwSWRfID0gdHBJZCB8fCAoYXdhaXQgZ2V0SXRlbVNoYXJlKCkpLnRwLmlkO1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkXykpLnNoYXJlZEtleS5pZDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3Qgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkoXG4gICAgICB3cmFwcGluZ0tleSxcbiAgICAgIGl0ZW1LZXkuandrXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dDoge1xuICAgICAgICBpZDogaXRlbVNoYXJlSWQsXG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRGlyZWN0b3J5U2hhcmUoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlbGV0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24oaWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24oaWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGVTaGFyZShpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlRmlsZVNoYXJlTXV0YXRpb24oaWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGVTaGFyZU11dGF0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVEZXRhY2hlZERpcmVjdG9yeVNoYXJlKFxuICAgIG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zXG4gICkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNvbXBsZXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zXG4gICkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ29tcGxldGVEZXRhY2hlZERpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IGF3YWl0IHRoaXMucHJlcGFyZUNvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb21wbGV0ZURldGFjaGVkRmlsZVNoYXJlKG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY29tcGxldGVEZXRhY2hlZEZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlRGV0YWNoZWRGaWxlU2hhcmVNdXRhdGlvbihcbiAgICBvcHRpb25zOiBDb21wbGV0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlRGV0YWNoZWRGaWxlU2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogYXdhaXQgdGhpcy5wcmVwYXJlQ29tcGxldGVEZXRhY2hlZEl0ZW1TaGFyZU11dGF0aW9uKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb21wbGV0ZURldGFjaGVkSXRlbVNoYXJlTXV0YXRpb24oXG4gICAgb3B0aW9uczogQ29tcGxldGVEZXRhY2hlZEl0ZW1TaGFyZU9wdGlvbnMgJiB7IGlzRGlyZWN0b3J5OiBib29sZWFuIH1cbiAgKSB7XG4gICAgY29uc3QgeyBpdGVtU2hhcmVJZCwgaXRlbUtleUlkLCBpc0RpcmVjdG9yeSB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShpdGVtS2V5SWQsICgpID0+XG4gICAgICBpc0RpcmVjdG9yeVxuICAgICAgICA/IHRoaXMuaXRlbVNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWRGcm9tRGlyZWN0b3J5U2hhcmUoaXRlbVNoYXJlSWQpXG4gICAgICAgIDogdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5SWRGcm9tRmlsZVNoYXJlKGl0ZW1TaGFyZUlkKVxuICAgICk7XG5cbiAgICBjb25zdCByb290S2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRSb290S2V5O1xuXG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShyb290S2V5LCBpdGVtS2V5Lmp3ayk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgaWQ6IGl0ZW1TaGFyZUlkLFxuICAgICAgICBrZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3RNa1Jlc2hhcmVNdXRhdGlvbih0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIGNvbnN0IHVzZXJTaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCk7XG5cbiAgICBpZiAodXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkU3RhdGVFeGNlcHRpb24oJ1RQIGFscmVhZHkgaGFzIG1rU2hhcmVkS2V5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFzdGVyS2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRNYXN0ZXJLZXk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc3BvbmRNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKCF1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgJ05vIGFjY2VzcyB0byB0aGUgbWtTaGFyZWRLZXkgc28gY2Fubm90IHJlc2hhcmUgaXQgd2l0aCBUUCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICAgICk7XG4gICAgY29uc3QgcGJrID0gYXdhaXQgSldLLmFzS2V5KHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlci5wYmspO1xuICAgIGNvbnN0IG1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSB7XG4gICAgICBta1NoYXJlZEtleToge1xuICAgICAgICBpZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgIGp3azogbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFdyYXAgd2l0aCBzaGFyZWRLZXkgdGhlbiBhZ2FpbiB3aXRoIFBia1xuICAgIGNvbnN0IG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBwYmssXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgICAgcGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkubWtQeGsuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIHByayxcbiAgICAgICAgdXNlclNoYXJlZEtleS5ta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBEb3VibGUgY2hlY2sgaXQncyBhIHZhbGlkIGtleS5cbiAgICBjb25zdCBta1NoYXJlZEtleTogS2V5ID0ge1xuICAgICAgaWQ6IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIubWtTaGFyZWRLZXkuaWQsXG4gICAgICBqd2s6IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5Lmp3ayksXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50TWFzdGVyS2V5O1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICBta1NoYXJlZEtleUlkOiBta1NoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1dyYXBwZWRNa1NoYXJlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIGFzeW5jIGdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgICBxdWVyeTogVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZDogdHBJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS50cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5O1xuICB9XG59XG4iXX0=
|
|
453
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZUFBZSxHQUNoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFD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QUUsRUFBRSxJQUFJO2lCQUNUO2FBQ0YsQ0FBQyxDQUNILENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztRQUMxQyxDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUF0aEJBLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckQ4QixNQUFNO1lBQWhCLFFBQVE7WUFXcEIsZUFBZTtZQUZmLFdBQVc7WUFHWCxVQUFVO1lBRlYsaUJBQWlCO1lBRmpCLGlCQUFpQjs7QUE4Q2IsbUJBQW1CO0lBTi9CLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxtQkFBbUIsQ0FtaEIvQjtTQW5oQlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7XG4gIEFjY2Vzc1JvbGVDaG9pY2UsXG4gIExyUmVsYXlJZElucHV0LFxuICBTaGFyZVR5cGVDaG9pY2UsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7XG4gIEtjQmFkQXJndW1lbnRFeGNlcHRpb24sXG4gIEtjQmFkU3RhdGVFeGNlcHRpb24sXG59IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZURldGFjaGVkRGlyZWN0b3J5U2hhcmVNdXRhdGlvbixcbiAgQ29tcGxldGVEZXRhY2hlZEZpbGVTaGFyZU11dGF0aW9uLFxuICBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIENyZWF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gIENyZWF0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICBEZWxldGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uLFxuICBEZWxldGVGaWxlU2hhcmVNdXRhdGlvbixcbiAgRGVsZXRlVHBNdXRhdGlvbixcbiAgUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIFJlc3BvbmRUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBVcGRhdGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uLFxuICBVcGRhdGVGaWxlU2hhcmVNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LmdxbCc7XG5pbXBvcnQge1xuICBEaXJlY3RvcnlTaGFyZVF1ZXJ5LFxuICBEaXJlY3RvcnlTaGFyZVF1ZXJ5UmVzdWx0LFxuICBGaWxlU2hhcmVRdWVyeSxcbiAgRmlsZVNoYXJlUXVlcnlSZXN1bHQsXG4gIEl0ZW1TaGFyZVF1ZXJ5UmVzdWx0LFxuICBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS5ncWwucHJpdmF0ZSc7XG5pbXBvcnQge1xuICBDb21wbGV0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9ucyxcbiAgQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucyxcbiAgVXBkYXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zLFxuICBVcGRhdGVJdGVtU2hhcmVPcHRpb25zLFxufSBmcm9tICcuL3RydXN0ZWQtcGFydHkudHlwZXMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFBhcnR5U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGRlbGV0ZVRwKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKSk7XG4gIH1cblxuICBkZWxldGVUcE11dGF0aW9uKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGlyZWN0b3J5U2hhcmUob3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbihvcHRpb25zOiBDcmVhdGVJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVGaWxlU2hhcmUob3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnM6IENyZWF0ZUl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlSXRlbVNoYXJlTXV0YXRpb24oXG4gICAgb3B0aW9uczogQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucyAmIHsgaXNEaXJlY3Rvcnk6IGJvb2xlYW4gfVxuICApIHtcbiAgICBjb25zdCB7XG4gICAgICBpdGVtSWQsXG4gICAgICBpdGVtS2V5SWQsXG4gICAgICB0cElkLFxuICAgICAgdHBTaGFyZWRLZXlJZCxcbiAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICBpc0RpcmVjdG9yeSxcbiAgICAgIHNoYXJlVHlwZSxcbiAgICAgIHBsYWluTWV0YUpzb24sXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwbGFpbk1ldGEgPSBwbGFpbk1ldGFKc29uICYmIEpTT04uc3RyaW5naWZ5KHBsYWluTWV0YUpzb24pO1xuXG4gICAgaWYgKGFjY2Vzc1JvbGUgPT0gQWNjZXNzUm9sZUNob2ljZS5ERU5ZKSB7XG4gICAgICBpZiAoaXRlbUtleUlkIHx8IHRwU2hhcmVkS2V5SWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICAgJ0lmIGFjY2Vzc1JvbGUgaXMgQWNjZXNzUm9sZUNob2ljZS5ERU5ZLCBtdXN0IG5vdCBzcGVjaWZ5IGFueSBvZiBpdGVtSWQsIGl0ZW1LZXlJZCwgb3IgdHBTaGFyZWRLZXlJZCBwYXJhbWV0ZXJzJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgICAgaXRlbUtleUlkOiBudWxsLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IG51bGwsXG4gICAgICAgICAgd3JhcHBlZEl0ZW1LZXk6IG51bGwsXG4gICAgICAgICAgc2hhcmVUeXBlLFxuICAgICAgICAgIHBsYWluTWV0YSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGl0ZW1LZXlJZCwgKCkgPT5cbiAgICAgIGlzRGlyZWN0b3J5XG4gICAgICAgID8gdGhpcy5pdGVtU2VydmljZS5nZXREaXJlY3RvcnlLZXlJZChpdGVtSWQpXG4gICAgICAgIDogdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5SWQoaXRlbUlkKVxuICAgICk7XG5cbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHRwU2hhcmVkS2V5SWQsICgpID0+XG4gICAgICB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCkudGhlbigocmVzKSA9PiByZXMuc2hhcmVkS2V5LmlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkoXG4gICAgICB3cmFwcGluZ0tleSxcbiAgICAgIGl0ZW1LZXkuandrXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dDoge1xuICAgICAgICBpdGVtSWQsXG4gICAgICAgIHRwSWQsXG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5LFxuICAgICAgICBzaGFyZVR5cGUsXG4gICAgICAgIHBsYWluTWV0YSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURpcmVjdG9yeVNoYXJlKG9wdGlvbnM6IFVwZGF0ZUl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVEaXJlY3RvcnlTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24ob3B0aW9uczogVXBkYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlSXRlbVNoYXJlTXV0YXRpb24oe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZShvcHRpb25zOiBVcGRhdGVEZXRhY2hlZEl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVEZXRhY2hlZERpcmVjdG9yeVNoYXJlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IFVwZGF0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZURldGFjaGVkSXRlbVNoYXJlTXV0YXRpb24ob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGaWxlU2hhcmUob3B0aW9uczogVXBkYXRlSXRlbVNoYXJlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVwZGF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnM6IFVwZGF0ZUl0ZW1TaGFyZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWNoZWRGaWxlU2hhcmUob3B0aW9uczogVXBkYXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlRGV0YWNoZWRGaWxlU2hhcmVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEZXRhY2hlZEZpbGVTaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IFVwZGF0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVEZXRhY2hlZEl0ZW1TaGFyZU11dGF0aW9uKG9wdGlvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXJlY3RvcnlTaGFyZShcbiAgICBpdGVtU2hhcmVJZDogc3RyaW5nXG4gICk6IFByb21pc2U8RGlyZWN0b3J5U2hhcmVRdWVyeVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICBxdWVyeTogRGlyZWN0b3J5U2hhcmVRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpZDogaXRlbVNoYXJlSWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlU2hhcmUoaXRlbVNoYXJlSWQ6IHN0cmluZyk6IFByb21pc2U8RmlsZVNoYXJlUXVlcnlSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgcXVlcnk6IEZpbGVTaGFyZVF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkOiBpdGVtU2hhcmVJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVJdGVtU2hhcmVNdXRhdGlvbihcbiAgICBvcHRpb25zOiBVcGRhdGVJdGVtU2hhcmVPcHRpb25zICYgeyBpc0RpcmVjdG9yeTogYm9vbGVhbiB9XG4gICkge1xuICAgIGNvbnN0IHtcbiAgICAgIGl0ZW1TaGFyZUlkLFxuICAgICAgYWNjZXNzUm9sZSxcbiAgICAgIGlzRGlyZWN0b3J5LFxuICAgICAgaXRlbUlkLFxuICAgICAgaXRlbUtleUlkLFxuICAgICAgdHBJZCxcbiAgICAgIHRwU2hhcmVkS2V5SWQsXG4gICAgICBwbGFpbk1ldGFKc29uLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gSWYgcGxhaW5NZXRhSnNvbiBpcyB1bmRlZmluZWQsIHRoZW4gcGxhaW5NZXRhIGlzIHVuZGVmaW5lZFxuICAgIC8vIElmIHBsYWluTWV0YUpzb24gaXMgbnVsbCwgdGhlbiBwbGFpbk1ldGEgaXMgbnVsbFxuICAgIC8vIElmIHBsYWluTWV0YUpzb24gaGFzIHZhbHVlLCB0aGVuIHBsYWluTWV0YSBpcyBKU09OLnN0cmluZ2lmeShwbGFpbk1ldGFKc29uKVxuICAgIGNvbnN0IHBsYWluTWV0YSA9IHBsYWluTWV0YUpzb24gJiYgSlNPTi5zdHJpbmdpZnkocGxhaW5NZXRhSnNvbik7XG5cbiAgICAvLyBJZiBub3QgdXBkYXRpbmcgYWNjZXNzIHJvbGUgb3IgdXBkYXRpbmcgdG8gREVOWSByb2xlLCB0aGVuIHdlIGRvbid0IG5lZWQgYW55IGtleSBtYXRlcmlhbC5cbiAgICBpZiAoYWNjZXNzUm9sZSA9PSBudWxsIHx8IGFjY2Vzc1JvbGUgPT0gQWNjZXNzUm9sZUNob2ljZS5ERU5ZKSB7XG4gICAgICBpZiAoaXRlbUlkIHx8IGl0ZW1LZXlJZCB8fCB0cElkIHx8IHRwU2hhcmVkS2V5SWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICAgJ0lmIGFjY2Vzc1JvbGUgaXMgQWNjZXNzUm9sZUNob2ljZS5ERU5ZLCBtdXN0IG5vdCBzcGVjaWZ5IGFueSBvZiBpdGVtSWQsIGl0ZW1LZXlJZCwgdHBJZCwgb3IgdHBTaGFyZWRLZXlJZCBwYXJhbWV0ZXJzJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpdGVtU2hhcmVJZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICAgIHBsYWluTWV0YSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2FjaGluZyB0aGUgcmVzdWx0IHNvIHdlIG9ubHkgbmVlZCBvbmUgY2FsbC5cbiAgICBsZXQgaXRlbVNoYXJlOiBJdGVtU2hhcmVRdWVyeVJlc3VsdDtcblxuICAgIGNvbnN0IGdldEl0ZW1TaGFyZSA9IGFzeW5jICgpOiBQcm9taXNlPEl0ZW1TaGFyZVF1ZXJ5UmVzdWx0PiA9PiB7XG4gICAgICBpZiAoIWl0ZW1TaGFyZSkge1xuICAgICAgICBpZiAoaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICBpdGVtU2hhcmUgPSAoYXdhaXQgdGhpcy5nZXREaXJlY3RvcnlTaGFyZShpdGVtU2hhcmVJZCkpXG4gICAgICAgICAgICAuZGlyZWN0b3J5U2hhcmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVNoYXJlID0gKGF3YWl0IHRoaXMuZ2V0RmlsZVNoYXJlKGl0ZW1TaGFyZUlkKSkuZmlsZVNoYXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1TaGFyZS5zaGFyZVR5cGUgPT0gU2hhcmVUeXBlQ2hvaWNlLkRFVEFDSEVEKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICAgICAnVXNlIHVwZGF0ZURldGFjaGVkRGlyZWN0b3J5U2hhcmUoKSBvciB1cGRhdGVEZXRhY2hlZEZpbGVTaGFyZSgpIHRvIHVwZGF0ZWQgREVUQUNIRUQgc2hhcmVzLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtU2hhcmU7XG4gICAgfTtcblxuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShcbiAgICAgIGl0ZW1LZXlJZCxcbiAgICAgIGFzeW5jICgpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgICAgICBjb25zdCBpdGVtSWRfID0gaXRlbUlkIHx8IChhd2FpdCBnZXRJdGVtU2hhcmUoKSkuaXRlbS5pZDtcbiAgICAgICAgaWYgKGlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWQoaXRlbUlkXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVNlcnZpY2UuZ2V0RmlsZUtleUlkKGl0ZW1JZF8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB0cFNoYXJlZEtleUlkLFxuICAgICAgYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgICAgIGNvbnN0IHRwSWRfID0gdHBJZCB8fCAoYXdhaXQgZ2V0SXRlbVNoYXJlKCkpLnRwLmlkO1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkXykpLnNoYXJlZEtleS5pZDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3Qgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkoXG4gICAgICB3cmFwcGluZ0tleSxcbiAgICAgIGl0ZW1LZXkuandrXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dDoge1xuICAgICAgICBpZDogaXRlbVNoYXJlSWQsXG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5LFxuICAgICAgICBwbGFpbk1ldGEsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVEZXRhY2hlZEl0ZW1TaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IFVwZGF0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGl0ZW1TaGFyZUlkLCBhY2Nlc3NSb2xlLCBwbGFpbk1ldGFKc29uIH0gPSBvcHRpb25zO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIGlkOiBpdGVtU2hhcmVJZCxcbiAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgcGxhaW5NZXRhOiBwbGFpbk1ldGFKc29uICYmIEpTT04uc3RyaW5naWZ5KHBsYWluTWV0YUpzb24pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRGlyZWN0b3J5U2hhcmUoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlbGV0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24oaWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZURpcmVjdG9yeVNoYXJlTXV0YXRpb24oaWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlRGlyZWN0b3J5U2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGVTaGFyZShpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlRmlsZVNoYXJlTXV0YXRpb24oaWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZpbGVTaGFyZU11dGF0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZUZpbGVTaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVEZXRhY2hlZERpcmVjdG9yeVNoYXJlKFxuICAgIG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zXG4gICkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNvbXBsZXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlRGV0YWNoZWREaXJlY3RvcnlTaGFyZU11dGF0aW9uKFxuICAgIG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zXG4gICkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ29tcGxldGVEZXRhY2hlZERpcmVjdG9yeVNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IGF3YWl0IHRoaXMucHJlcGFyZUNvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVNdXRhdGlvbih7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb21wbGV0ZURldGFjaGVkRmlsZVNoYXJlKG9wdGlvbnM6IENvbXBsZXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY29tcGxldGVEZXRhY2hlZEZpbGVTaGFyZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlRGV0YWNoZWRGaWxlU2hhcmVNdXRhdGlvbihcbiAgICBvcHRpb25zOiBDb21wbGV0ZURldGFjaGVkSXRlbVNoYXJlT3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlRGV0YWNoZWRGaWxlU2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogYXdhaXQgdGhpcy5wcmVwYXJlQ29tcGxldGVEZXRhY2hlZEl0ZW1TaGFyZU11dGF0aW9uKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb21wbGV0ZURldGFjaGVkSXRlbVNoYXJlTXV0YXRpb24oXG4gICAgb3B0aW9uczogQ29tcGxldGVEZXRhY2hlZEl0ZW1TaGFyZU9wdGlvbnMgJiB7IGlzRGlyZWN0b3J5OiBib29sZWFuIH1cbiAgKSB7XG4gICAgY29uc3QgeyBpdGVtU2hhcmVJZCwgaXRlbUtleUlkLCBpc0RpcmVjdG9yeSB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShpdGVtS2V5SWQsICgpID0+XG4gICAgICBpc0RpcmVjdG9yeVxuICAgICAgICA/IHRoaXMuaXRlbVNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWRGcm9tRGlyZWN0b3J5U2hhcmUoaXRlbVNoYXJlSWQpXG4gICAgICAgIDogdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5SWRGcm9tRmlsZVNoYXJlKGl0ZW1TaGFyZUlkKVxuICAgICk7XG5cbiAgICBjb25zdCByb290S2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRSb290S2V5O1xuXG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShyb290S2V5LCBpdGVtS2V5Lmp3ayk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgaWQ6IGl0ZW1TaGFyZUlkLFxuICAgICAgICBrZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3RNa1Jlc2hhcmVNdXRhdGlvbih0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIGNvbnN0IHVzZXJTaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCk7XG5cbiAgICBpZiAodXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkU3RhdGVFeGNlcHRpb24oJ1RQIGFscmVhZHkgaGFzIG1rU2hhcmVkS2V5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFzdGVyS2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRNYXN0ZXJLZXk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc3BvbmRNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKCF1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgJ05vIGFjY2VzcyB0byB0aGUgbWtTaGFyZWRLZXkgc28gY2Fubm90IHJlc2hhcmUgaXQgd2l0aCBUUCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICAgICk7XG4gICAgY29uc3QgcGJrID0gYXdhaXQgSldLLmFzS2V5KHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlci5wYmspO1xuICAgIGNvbnN0IG1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSB7XG4gICAgICBta1NoYXJlZEtleToge1xuICAgICAgICBpZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgIGp3azogbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFdyYXAgd2l0aCBzaGFyZWRLZXkgdGhlbiBhZ2FpbiB3aXRoIFBia1xuICAgIGNvbnN0IG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBwYmssXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgICAgcGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkubWtQeGsuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIHByayxcbiAgICAgICAgdXNlclNoYXJlZEtleS5ta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBEb3VibGUgY2hlY2sgaXQncyBhIHZhbGlkIGtleS5cbiAgICBjb25zdCBta1NoYXJlZEtleTogS2V5ID0ge1xuICAgICAgaWQ6IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIubWtTaGFyZWRLZXkuaWQsXG4gICAgICBqd2s6IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5Lmp3ayksXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50TWFzdGVyS2V5O1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICBta1NoYXJlZEtleUlkOiBta1NoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1dyYXBwZWRNa1NoYXJlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIGFzeW5jIGdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgICBxdWVyeTogVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZDogdHBJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS50cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5O1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjY2Vzc1JvbGVDaG9pY2UsXG4gIEpTT05PYmplY3QsXG4gIExyUmVsYXlJZElucHV0LFxuICBTaGFyZVR5cGVDaG9pY2UsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSXRlbVNoYXJlT3B0aW9ucyB7XG4gIGl0ZW1JZDogTHJSZWxheUlkSW5wdXQ7XG4gIHRwSWQ6IExyUmVsYXlJZElucHV0O1xuICBhY2Nlc3NSb2xlOiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBzaGFyZVR5cGU6IFNoYXJlVHlwZUNob2ljZTtcbiAgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIC8vIE9wdGlvbmFsIHRvIGltcHJvdmUgZWZmaWNpZW5jeVxuICBpdGVtS2V5SWQ/OiBMclJlbGF5SWRJbnB1dDtcbiAgdHBTaGFyZWRLZXlJZD86IExyUmVsYXlJZElucHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUl0ZW1TaGFyZU9wdGlvbnMge1xuICBpdGVtU2hhcmVJZDogTHJSZWxheUlkSW5wdXQ7XG4gIGFjY2Vzc1JvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBwbGFpbk1ldGFKc29uPzogSlNPTk9iamVjdDtcbiAgLy8gT3B0aW9uYWwgdG8gaW1wcm92ZSBlZmZpY2llbmN5XG4gIGl0ZW1JZD86IExyUmVsYXlJZElucHV0O1xuICBpdGVtS2V5SWQ/OiBMclJlbGF5SWRJbnB1dDtcbiAgdHBJZD86IExyUmVsYXlJZElucHV0O1xuICB0cFNoYXJlZEtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlRGV0YWNoZWRJdGVtU2hhcmVPcHRpb25zIHtcbiAgaXRlbVNoYXJlSWQ6IExyUmVsYXlJZElucHV0O1xuICBhY2Nlc3NSb2xlPzogQWNjZXNzUm9sZUNob2ljZTtcbiAgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGVEZXRhY2hlZEl0ZW1TaGFyZU9wdGlvbnMge1xuICBpdGVtU2hhcmVJZDogTHJSZWxheUlkSW5wdXQ7XG4gIC8vIE9wdGlvbmFsIHRvIGltcHJvdmUgZWZmaWNpZW5jeVxuICBpdGVtS2V5SWQ/OiBMclJlbGF5SWRJbnB1dDtcbn1cbiJdfQ==
|
|
@@ -870,13 +870,16 @@ KeyFactoryService.ctorParameters = () => [
|
|
|
870
870
|
const KC_CONFIG = new InjectionToken('KC_CONFIG');
|
|
871
871
|
const RETRY_ERROR_CODES = [KcErrorCode.CONCURRENT_ACCESS];
|
|
872
872
|
function httpOptions(auth, config) {
|
|
873
|
-
var _a;
|
|
873
|
+
var _a, _b;
|
|
874
874
|
return __awaiter(this, void 0, void 0, function* () {
|
|
875
875
|
const token = yield getAccessJwtToken(auth);
|
|
876
876
|
const debugUsername = (_a = config.debug) === null || _a === void 0 ? void 0 : _a.username;
|
|
877
|
+
const debugRbacCacheMode = (_b = config.debug) === null || _b === void 0 ? void 0 : _b.rbacCacheMode;
|
|
877
878
|
return {
|
|
878
879
|
withCredentials: true,
|
|
879
|
-
headers: Object.assign(Object.assign({}, (token && { authorization: `Bearer ${token}` })), (debugUsername && { 'x-kc-dev-user': debugUsername })),
|
|
880
|
+
headers: Object.assign(Object.assign(Object.assign({}, (token && { authorization: `Bearer ${token}` })), (debugUsername && { 'x-kc-dev-user': debugUsername })), (debugRbacCacheMode && {
|
|
881
|
+
'x-kc-dev-rbac-cache-mode': debugRbacCacheMode,
|
|
882
|
+
})),
|
|
880
883
|
};
|
|
881
884
|
});
|
|
882
885
|
}
|
|
@@ -2089,6 +2092,16 @@ let QueryProcessorService = class QueryProcessorService {
|
|
|
2089
2092
|
plainFieldName: 'plain',
|
|
2090
2093
|
}),
|
|
2091
2094
|
]));
|
|
2095
|
+
this.registerProcessor('DirectoryShareNode', common.series([
|
|
2096
|
+
common.makeJsonParseProcessor({
|
|
2097
|
+
plainFieldName: 'plainMeta',
|
|
2098
|
+
}),
|
|
2099
|
+
]));
|
|
2100
|
+
this.registerProcessor('FileShareNode', common.series([
|
|
2101
|
+
common.makeJsonParseProcessor({
|
|
2102
|
+
plainFieldName: 'plainMeta',
|
|
2103
|
+
}),
|
|
2104
|
+
]));
|
|
2092
2105
|
}
|
|
2093
2106
|
processQuery(fields, options) {
|
|
2094
2107
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -2889,6 +2902,11 @@ var LinkTypeField;
|
|
|
2889
2902
|
LinkTypeField["SOFT"] = "SOFT";
|
|
2890
2903
|
LinkTypeField["REFERENCE"] = "REFERENCE";
|
|
2891
2904
|
})(LinkTypeField || (LinkTypeField = {}));
|
|
2905
|
+
var BillingPeriodField;
|
|
2906
|
+
(function (BillingPeriodField) {
|
|
2907
|
+
BillingPeriodField["MONTHLY"] = "MONTHLY";
|
|
2908
|
+
BillingPeriodField["ANNUAL"] = "ANNUAL";
|
|
2909
|
+
})(BillingPeriodField || (BillingPeriodField = {}));
|
|
2892
2910
|
var PlanStateField;
|
|
2893
2911
|
(function (PlanStateField) {
|
|
2894
2912
|
PlanStateField["TRIALLING"] = "TRIALLING";
|
|
@@ -5536,6 +5554,8 @@ let AuthService = AuthService_1 = class AuthService extends LrService {
|
|
|
5536
5554
|
// This will fail if debug is null. But when debug is null, this function
|
|
5537
5555
|
// should not be called.
|
|
5538
5556
|
this.kcConfig.debug.username = username;
|
|
5557
|
+
// Reset it so we don't get surprises.
|
|
5558
|
+
this.kcConfig.debug.rbacCacheMode = null;
|
|
5539
5559
|
// This mechanism only works in a browser session because it needs to set cookies etc.
|
|
5540
5560
|
// But it sets the last_login field for the users which we need in some tests.
|
|
5541
5561
|
yield this.http
|
|
@@ -5577,6 +5597,9 @@ let AuthService = AuthService_1 = class AuthService extends LrService {
|
|
|
5577
5597
|
return userAttributes;
|
|
5578
5598
|
});
|
|
5579
5599
|
}
|
|
5600
|
+
debugRetainRbacCache(b) {
|
|
5601
|
+
this.kcConfig.debug.rbacCacheMode = b ? 'retain' : null;
|
|
5602
|
+
}
|
|
5580
5603
|
};
|
|
5581
5604
|
AuthService.CHALLENGE_TIMEOUT = 1000 * 60 * 5;
|
|
5582
5605
|
AuthService.ɵprov = ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(ɵɵinject(NgZone), ɵɵinject(INJECTOR), ɵɵinject(HttpClient), ɵɵinject(AuthClass), ɵɵinject(LrGraphQLService), ɵɵinject(KeyService), ɵɵinject(KeyGraphService), ɵɵinject(KeyFactoryService), ɵɵinject(PasswordService), ɵɵinject(IdleService), ɵɵinject(PersistService), ɵɵinject(EncryptionService), ɵɵinject(TpPasswordResetAssemblyController), ɵɵinject(KC_CONFIG)); }, token: AuthService, providedIn: "root" });
|
|
@@ -9216,7 +9239,7 @@ let ScenarioService = class ScenarioService extends LrService {
|
|
|
9216
9239
|
sharedCipherDataClearJson: existingDirectory.sharedCipherDataClearJson,
|
|
9217
9240
|
});
|
|
9218
9241
|
});
|
|
9219
|
-
// Fill in any missing update
|
|
9242
|
+
// Fill in any missing update files
|
|
9220
9243
|
mapEdges(existingReceiver.receiverItems.receiverFiles).forEach((existingFile) => {
|
|
9221
9244
|
if (deleteFilesOptions.includes(existingFile.file.id)) {
|
|
9222
9245
|
return;
|
|
@@ -10289,6 +10312,7 @@ query DirectoryShareQuery($id: LrRelayIdInput!) {
|
|
|
10289
10312
|
tp {
|
|
10290
10313
|
id
|
|
10291
10314
|
}
|
|
10315
|
+
shareType
|
|
10292
10316
|
}
|
|
10293
10317
|
}
|
|
10294
10318
|
`;
|
|
@@ -10301,6 +10325,7 @@ query FileShareItemIdQuery($id: LrRelayIdInput!) {
|
|
|
10301
10325
|
tp {
|
|
10302
10326
|
id
|
|
10303
10327
|
}
|
|
10328
|
+
shareType
|
|
10304
10329
|
}
|
|
10305
10330
|
}
|
|
10306
10331
|
`;
|
|
@@ -10357,7 +10382,8 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10357
10382
|
}
|
|
10358
10383
|
prepareCreateItemShareMutation(options) {
|
|
10359
10384
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10360
|
-
const { itemId, itemKeyId, tpId, tpSharedKeyId, accessRole, isDirectory, shareType, } = options;
|
|
10385
|
+
const { itemId, itemKeyId, tpId, tpSharedKeyId, accessRole, isDirectory, shareType, plainMetaJson, } = options;
|
|
10386
|
+
const plainMeta = plainMetaJson && JSON.stringify(plainMetaJson);
|
|
10361
10387
|
if (accessRole == AccessRoleChoice.DENY) {
|
|
10362
10388
|
if (itemKeyId || tpSharedKeyId) {
|
|
10363
10389
|
throw new KcBadArgumentException('If accessRole is AccessRoleChoice.DENY, must not specify any of itemId, itemKeyId, or tpSharedKeyId parameters');
|
|
@@ -10371,6 +10397,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10371
10397
|
wrappingKeyId: null,
|
|
10372
10398
|
wrappedItemKey: null,
|
|
10373
10399
|
shareType,
|
|
10400
|
+
plainMeta,
|
|
10374
10401
|
},
|
|
10375
10402
|
};
|
|
10376
10403
|
}
|
|
@@ -10388,6 +10415,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10388
10415
|
wrappingKeyId: wrappingKey.id,
|
|
10389
10416
|
wrappedItemKey,
|
|
10390
10417
|
shareType,
|
|
10418
|
+
plainMeta,
|
|
10391
10419
|
},
|
|
10392
10420
|
};
|
|
10393
10421
|
});
|
|
@@ -10405,6 +10433,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10405
10433
|
});
|
|
10406
10434
|
});
|
|
10407
10435
|
}
|
|
10436
|
+
updateDetachedDirectoryShare(options) {
|
|
10437
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10438
|
+
return this.mutate(this.updateDetachedDirectoryShareMutation(options));
|
|
10439
|
+
});
|
|
10440
|
+
}
|
|
10441
|
+
updateDetachedDirectoryShareMutation(options) {
|
|
10442
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10443
|
+
return new LrMutation({
|
|
10444
|
+
mutation: UpdateDirectoryShareMutation,
|
|
10445
|
+
variables: yield this.prepareUpdateDetachedItemShareMutation(options),
|
|
10446
|
+
});
|
|
10447
|
+
});
|
|
10448
|
+
}
|
|
10408
10449
|
updateFileShare(options) {
|
|
10409
10450
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10410
10451
|
return this.mutate(this.updateFileShareMutation(options));
|
|
@@ -10418,6 +10459,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10418
10459
|
});
|
|
10419
10460
|
});
|
|
10420
10461
|
}
|
|
10462
|
+
updateDetachedFileShare(options) {
|
|
10463
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10464
|
+
return this.mutate(this.updateDetachedFileShareMutation(options));
|
|
10465
|
+
});
|
|
10466
|
+
}
|
|
10467
|
+
updateDetachedFileShareMutation(options) {
|
|
10468
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10469
|
+
return new LrMutation({
|
|
10470
|
+
mutation: UpdateFileShareMutation,
|
|
10471
|
+
variables: yield this.prepareUpdateDetachedItemShareMutation(options),
|
|
10472
|
+
});
|
|
10473
|
+
});
|
|
10474
|
+
}
|
|
10421
10475
|
getDirectoryShare(itemShareId) {
|
|
10422
10476
|
return this.lrGraphQL.query({
|
|
10423
10477
|
query: DirectoryShareQuery,
|
|
@@ -10436,8 +10490,13 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10436
10490
|
}
|
|
10437
10491
|
prepareUpdateItemShareMutation(options) {
|
|
10438
10492
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10439
|
-
const { itemShareId, accessRole, isDirectory, itemId, itemKeyId, tpId, tpSharedKeyId, } = options;
|
|
10440
|
-
|
|
10493
|
+
const { itemShareId, accessRole, isDirectory, itemId, itemKeyId, tpId, tpSharedKeyId, plainMetaJson, } = options;
|
|
10494
|
+
// If plainMetaJson is undefined, then plainMeta is undefined
|
|
10495
|
+
// If plainMetaJson is null, then plainMeta is null
|
|
10496
|
+
// If plainMetaJson has value, then plainMeta is JSON.stringify(plainMetaJson)
|
|
10497
|
+
const plainMeta = plainMetaJson && JSON.stringify(plainMetaJson);
|
|
10498
|
+
// If not updating access role or updating to DENY role, then we don't need any key material.
|
|
10499
|
+
if (accessRole == null || accessRole == AccessRoleChoice.DENY) {
|
|
10441
10500
|
if (itemId || itemKeyId || tpId || tpSharedKeyId) {
|
|
10442
10501
|
throw new KcBadArgumentException('If accessRole is AccessRoleChoice.DENY, must not specify any of itemId, itemKeyId, tpId, or tpSharedKeyId parameters');
|
|
10443
10502
|
}
|
|
@@ -10445,9 +10504,7 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10445
10504
|
input: {
|
|
10446
10505
|
id: itemShareId,
|
|
10447
10506
|
accessRole,
|
|
10448
|
-
|
|
10449
|
-
wrappingKeyId: null,
|
|
10450
|
-
wrappedItemKey: null,
|
|
10507
|
+
plainMeta,
|
|
10451
10508
|
},
|
|
10452
10509
|
};
|
|
10453
10510
|
}
|
|
@@ -10462,6 +10519,9 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10462
10519
|
else {
|
|
10463
10520
|
itemShare = (yield this.getFileShare(itemShareId)).fileShare;
|
|
10464
10521
|
}
|
|
10522
|
+
if (itemShare.shareType == ShareTypeChoice.DETACHED) {
|
|
10523
|
+
throw new KcBadArgumentException('Use updateDetachedDirectoryShare() or updateDetachedFileShare() to updated DETACHED shares.');
|
|
10524
|
+
}
|
|
10465
10525
|
}
|
|
10466
10526
|
return itemShare;
|
|
10467
10527
|
});
|
|
@@ -10486,6 +10546,19 @@ let TrustedPartyService = class TrustedPartyService extends LrService {
|
|
|
10486
10546
|
itemKeyId: itemKey.id,
|
|
10487
10547
|
wrappingKeyId: wrappingKey.id,
|
|
10488
10548
|
wrappedItemKey,
|
|
10549
|
+
plainMeta,
|
|
10550
|
+
},
|
|
10551
|
+
};
|
|
10552
|
+
});
|
|
10553
|
+
}
|
|
10554
|
+
prepareUpdateDetachedItemShareMutation(options) {
|
|
10555
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10556
|
+
const { itemShareId, accessRole, plainMetaJson } = options;
|
|
10557
|
+
return {
|
|
10558
|
+
input: {
|
|
10559
|
+
id: itemShareId,
|
|
10560
|
+
accessRole,
|
|
10561
|
+
plainMeta: plainMetaJson && JSON.stringify(plainMetaJson),
|
|
10489
10562
|
},
|
|
10490
10563
|
};
|
|
10491
10564
|
});
|
|
@@ -10847,5 +10920,5 @@ UserService.ctorParameters = () => [
|
|
|
10847
10920
|
* Generated bundle index. Do not edit.
|
|
10848
10921
|
*/
|
|
10849
10922
|
|
|
10850
|
-
export { AccessRoleChoice, AccessRoleChoiceOrder, AccessRoleMethodChoice, ApiContactCard, ApiCurrentUser, ApproveScenarioClaimMutation, ApproveTpPasswordResetRequestMutation, ArchiveDirectoryMutation, ArchiveFileMutation, AuthService, BeginDeleteChildItemLinksWindowMutation, CancelKeyExchangeMutation, CancelScenarioClaimMutation, CancelTpPasswordResetRequestMutation, CancelUserDeleteMutation, ChangeDirectoryParentsMutation, ChangeFileParentsMutation, ClaimApproverState, ClaimState, CognitoChallengeName, CommonProcessorsService, CompleteKeyExchangeOtkMutation, CompleteTpPasswordResetRequestMutation, Config, ContactCard2Service, ContactCardAddress, ContactCardName, ContactCardsQuery, CreateContactCardMutation$1 as CreateContactCardMutation, CreateDirectoryMutation, CreateFileMutation, CreateLbopQuery, CreateScenarioClaimMutation, CreateScenarioMutation, CreateTpAssemblyKeyChallengeMutation, CreateTpPasswordResetMutation, CurrentUserKey, CurrentUserQuery, CurrentUserSharedKeyQuery2, DebugExpireScenarioClaimMutation, DebugExpireTpPasswordResetRequestMutation, DeclineKeyExchangeMutation, DefaultProcessorOptions, DeleteDirectoryMutation, DeleteFileMutation, DeleteLbopQuery, DeleteScenarioMutation, DeleteTpPasswordResetMutation, DetachedShareStateChoice, DirectoryQuery, ERROR_SOURCE, FeatureAction, Features, FetchKeyGraphField, FileOperationField, FileUploadService, GetOwnedContactCardKeyIdsQuery, GetReceivedContactCardKeyIdQuery, IdleService, InitiateKeyExchangeOtkMutation, ItemService, KC_CONFIG, KcAuthException, KcBadArgumentException, KcBadLogicException, KcBadRequestException, KcBadSignatureException, KcBadStateException, KcBadTimeSyncException, KcCodeMismatchException, KcConcurrentAccessException, KcEncryptionException, KcError, KcErrorCode, KcException, KcInternalErrorException, KcLbopErrorCode, KcLockedException, KcNotFoundException, KcSuspiciousOperationException, KcUnsupportedException, KeyExchangeFields, KeyExchangeMode, KeyExchangeOtkState, KeyExchangeQuery2, KeyExchangeService, KeyExchangeState, KeyExchangeTokenQuery2, KeyExchangesQuery2, KeyGraphField, KeyGraphFragment, LbopQuery, LbopService, LbopsQuery, LifeReadyModule, LinkTypeField, LockService, LockState, LoginHistoryQuery, LrApolloService, LrGraphQLService, LrMergedMutation, LrMutation, LrMutationBase, LrService, MainContactCardFields, MainContactCardPlainFields, MainContactCardProperty, NotificationService, OwnerPlainDataJson, PasswordChangeStatus, PasswordCheck, PasswordService, PermissionChoice, PersistService, PlanService, PlanState, PlanStateField, PreCompleteTpPasswordResetRequestMutation, ProfileDetailsService, ProfileService, QueryProcessorService, ReceiveScenarioClaimMutation, RecoveryStatus, RegisterResult, RegisterService, RejectScenarioClaimMutation, RejectTpPasswordResetRequestMutation, ReminderService, RequestUserDeleteMutation, RespondKeyExchangeOtkMutation, RevertFileMutation, ScenarioLastClaimState, ScenarioService, ScenarioState, ServerConfigService, ServerTimeQuery, SetDirectoryConfidentialMutation, SetFileConfidentialMutation, ShareTypeChoice, SharedContactCard2Service, SharedTrustedPartyDetails, SharedVaultFeature, TPFeatures, TempDirectoryQuery, TimeService, TpAssemblyState, TpClaimApproverState, TpClaimState, TpPasswordResetRequestService, TpPasswordResetService, TpPasswordResetUserService, TrustedPartiesQuery, TrustedParty, TrustedPartyDetails, TrustedPartyProperties, TrustedPartyService, TrustedPartyType, TwoFactorService, UnarchiveDirectoryMutation, UnarchiveFileMutation, UpdateContactCardMutation$1 as UpdateContactCardMutation, UpdateDirectoryMutation, UpdateFileMutation, UpdateLbopQuery, UpdateOwnedContactCardMutation, UpdateReceivedContactCardMutation, UpdateScenarioMutation, UpdateTpPasswordResetMutation, UserDeleteState, UserService, UserSharedKeyFields, WebCryptoService, awsFetch, configureAmplifyAuth, configureApollo, fragmentSpreadAstSelection, gqlTyped, handleApolloError, handleCognitoCallback, httpOptions, mapEdges, processConnection, throwClaimIdMismatch, throwClaimNotApproved, KeyGraphService as ɵa, EncryptionService as ɵb, KeyService as ɵc, KeyFactoryService as ɵd, LrService as ɵe, RunOutsideAngular as ɵf, LrGraphQLService as ɵg, KeyMetaService as ɵh, TpPasswordResetAssemblyController as ɵi, TpAssemblyController as ɵj, SharedContactCardFields as ɵk, SharedContactCardService as ɵl, ScenarioAssemblyController as ɵm, TpPasswordResetPrivateService as ɵn };
|
|
10923
|
+
export { AccessRoleChoice, AccessRoleChoiceOrder, AccessRoleMethodChoice, ApiContactCard, ApiCurrentUser, ApproveScenarioClaimMutation, ApproveTpPasswordResetRequestMutation, ArchiveDirectoryMutation, ArchiveFileMutation, AuthService, BeginDeleteChildItemLinksWindowMutation, BillingPeriodField, CancelKeyExchangeMutation, CancelScenarioClaimMutation, CancelTpPasswordResetRequestMutation, CancelUserDeleteMutation, ChangeDirectoryParentsMutation, ChangeFileParentsMutation, ClaimApproverState, ClaimState, CognitoChallengeName, CommonProcessorsService, CompleteKeyExchangeOtkMutation, CompleteTpPasswordResetRequestMutation, Config, ContactCard2Service, ContactCardAddress, ContactCardName, ContactCardsQuery, CreateContactCardMutation$1 as CreateContactCardMutation, CreateDirectoryMutation, CreateFileMutation, CreateLbopQuery, CreateScenarioClaimMutation, CreateScenarioMutation, CreateTpAssemblyKeyChallengeMutation, CreateTpPasswordResetMutation, CurrentUserKey, CurrentUserQuery, CurrentUserSharedKeyQuery2, DebugExpireScenarioClaimMutation, DebugExpireTpPasswordResetRequestMutation, DeclineKeyExchangeMutation, DefaultProcessorOptions, DeleteDirectoryMutation, DeleteFileMutation, DeleteLbopQuery, DeleteScenarioMutation, DeleteTpPasswordResetMutation, DetachedShareStateChoice, DirectoryQuery, ERROR_SOURCE, FeatureAction, Features, FetchKeyGraphField, FileOperationField, FileUploadService, GetOwnedContactCardKeyIdsQuery, GetReceivedContactCardKeyIdQuery, IdleService, InitiateKeyExchangeOtkMutation, ItemService, KC_CONFIG, KcAuthException, KcBadArgumentException, KcBadLogicException, KcBadRequestException, KcBadSignatureException, KcBadStateException, KcBadTimeSyncException, KcCodeMismatchException, KcConcurrentAccessException, KcEncryptionException, KcError, KcErrorCode, KcException, KcInternalErrorException, KcLbopErrorCode, KcLockedException, KcNotFoundException, KcSuspiciousOperationException, KcUnsupportedException, KeyExchangeFields, KeyExchangeMode, KeyExchangeOtkState, KeyExchangeQuery2, KeyExchangeService, KeyExchangeState, KeyExchangeTokenQuery2, KeyExchangesQuery2, KeyGraphField, KeyGraphFragment, LbopQuery, LbopService, LbopsQuery, LifeReadyModule, LinkTypeField, LockService, LockState, LoginHistoryQuery, LrApolloService, LrGraphQLService, LrMergedMutation, LrMutation, LrMutationBase, LrService, MainContactCardFields, MainContactCardPlainFields, MainContactCardProperty, NotificationService, OwnerPlainDataJson, PasswordChangeStatus, PasswordCheck, PasswordService, PermissionChoice, PersistService, PlanService, PlanState, PlanStateField, PreCompleteTpPasswordResetRequestMutation, ProfileDetailsService, ProfileService, QueryProcessorService, ReceiveScenarioClaimMutation, RecoveryStatus, RegisterResult, RegisterService, RejectScenarioClaimMutation, RejectTpPasswordResetRequestMutation, ReminderService, RequestUserDeleteMutation, RespondKeyExchangeOtkMutation, RevertFileMutation, ScenarioLastClaimState, ScenarioService, ScenarioState, ServerConfigService, ServerTimeQuery, SetDirectoryConfidentialMutation, SetFileConfidentialMutation, ShareTypeChoice, SharedContactCard2Service, SharedTrustedPartyDetails, SharedVaultFeature, TPFeatures, TempDirectoryQuery, TimeService, TpAssemblyState, TpClaimApproverState, TpClaimState, TpPasswordResetRequestService, TpPasswordResetService, TpPasswordResetUserService, TrustedPartiesQuery, TrustedParty, TrustedPartyDetails, TrustedPartyProperties, TrustedPartyService, TrustedPartyType, TwoFactorService, UnarchiveDirectoryMutation, UnarchiveFileMutation, UpdateContactCardMutation$1 as UpdateContactCardMutation, UpdateDirectoryMutation, UpdateFileMutation, UpdateLbopQuery, UpdateOwnedContactCardMutation, UpdateReceivedContactCardMutation, UpdateScenarioMutation, UpdateTpPasswordResetMutation, UserDeleteState, UserService, UserSharedKeyFields, WebCryptoService, awsFetch, configureAmplifyAuth, configureApollo, fragmentSpreadAstSelection, gqlTyped, handleApolloError, handleCognitoCallback, httpOptions, mapEdges, processConnection, throwClaimIdMismatch, throwClaimNotApproved, KeyGraphService as ɵa, EncryptionService as ɵb, KeyService as ɵc, KeyFactoryService as ɵd, LrService as ɵe, RunOutsideAngular as ɵf, LrGraphQLService as ɵg, KeyMetaService as ɵh, TpPasswordResetAssemblyController as ɵi, TpAssemblyController as ɵj, SharedContactCardFields as ɵk, SharedContactCardService as ɵl, ScenarioAssemblyController as ɵm, TpPasswordResetPrivateService as ɵn };
|
|
10851
10924
|
//# sourceMappingURL=lifeready-core.js.map
|