@lifeready/core 1.1.6 → 1.1.8
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 +74 -25
- 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/_common/exceptions.js +1 -1
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +15 -1
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +1 -2
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +42 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +3 -7
- package/esm2015/lib/item2/item2.service.js +11 -2
- package/esm2015/lib/key/key-graph.service.js +1 -4
- package/esm2015/lib/scenario/scenario.service.js +1 -2
- package/esm2015/lib/tp-assembly/tp-assembly.js +1 -3
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +1 -3
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +3 -4
- package/fesm2015/lifeready-core.js +69 -19
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +3 -0
- package/lib/api/lr-graphql/lr-mutation.d.ts +41 -0
- package/lib/api/types/lr-graphql.types.d.ts +7 -0
- package/lib/item2/item2.service.d.ts +10 -0
- package/package.json +1 -1
|
@@ -45,7 +45,6 @@ export class TpAssemblyController {
|
|
|
45
45
|
prepareAssembly({ subjectKey, rootKey, }) {
|
|
46
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
47
|
const assemblyKey = yield this.keyFactory.createKey();
|
|
48
|
-
console.log('prepareAssembly assemblyKey', assemblyKey);
|
|
49
48
|
const _a = assemblyKey.toJSON(true), { k: rawAssemblyKey } = _a, assemblyKeyParams = __rest(_a, ["k"]);
|
|
50
49
|
const assemblyKeyVerifierPrk = yield this.keyFactory.createPkcSignKey();
|
|
51
50
|
const wrappedAssemblyKeyVerifierPrk = yield this.encryptionService.encryptToString(assemblyKey, assemblyKeyVerifierPrk.toJSON(true));
|
|
@@ -314,7 +313,6 @@ export class TpAssemblyController {
|
|
|
314
313
|
},
|
|
315
314
|
assemblyKeyParams,
|
|
316
315
|
};
|
|
317
|
-
console.log('partialAssemblyKey', partialAssemblyKey);
|
|
318
316
|
const sharedCipherData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherDataClearJson || '');
|
|
319
317
|
const sharedCipherApprovalData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherApprovalDataClearJson || '');
|
|
320
318
|
const sharedCipherPartialAssemblyKey = yield this.encryptionService.encryptToString(sharedKey, partialAssemblyKey);
|
|
@@ -362,4 +360,4 @@ export class TpAssemblyController {
|
|
|
362
360
|
});
|
|
363
361
|
}
|
|
364
362
|
}
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QUFnRjtnQkFDaEYsNENBQTRDO2dCQUM1QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUNuQixhQUFhLEdBQUcsQ0FBQyxDQUFDO2lCQUNuQjtnQkFDRCxZQUFZLENBQUMsY0FBYyxDQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBMckJhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnNvbGUubG9nKCdwcmVwYXJlQXNzZW1ibHkgYXNzZW1ibHlLZXknLCBhc3NlbWJseUtleSk7XG5cbiAgICBjb25zdCB7IGs6IHJhd0Fzc2VtYmx5S2V5LCAuLi5hc3NlbWJseUtleVBhcmFtcyB9ID0gYXNzZW1ibHlLZXkudG9KU09OKFxuICAgICAgdHJ1ZVxuICAgICkgYXMgSlNPTk9iamVjdDtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY1NpZ25LZXkoKTtcbiAgICBjb25zdCB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByayA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgYXNzZW1ibHlLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5VmVyaWZpZXJQcmsudG9KU09OKHRydWUpXG4gICAgICApO1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5VmVyaWZpZXJQYmsgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIGFzc2VtYmx5S2V5VmVyaWZpZXJQcmsudG9KU09OKClcbiAgICApO1xuXG4gICAgY29uc3Qgc3ViamVjdEtleVdyYXBwZWRBc3NlbWJseUtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgYXNzZW1ibHlLZXkudG9KU09OKHRydWUpXG4gICAgICApO1xuXG4gICAgLy8gRW5jcnlwdCB0aGUgcm9vdEtleSB3aXRoIHRoZSBhc3NlbWJseUtleVxuICAgIGNvbnN0IGFzc2VtYmx5Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICB7XG4gICAgICAgIHJvb3RLZXk6IHJvb3RLZXkudG9KU09OKHRydWUpLFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByYXdBc3NlbWJseUtleSxcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRBc3NlbWJseUtleSxcbiAgICAgIGFzc2VtYmx5Q2lwaGVyRGF0YSxcbiAgICAgIGFzc2VtYmx5S2V5VmVyaWZpZXJQYmssXG4gICAgICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByayxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICBpbnB1dCxcbiAgICBzdWJqZWN0S2V5LFxuICAgIHNsaXBTdWJBc3NlbWJsaWVzLFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICB9OiB7XG4gICAgaW5wdXQ6IENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dFtdO1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXAuU3ViQXNzZW1ibHlbXTtcbiAgICBhc3NlbWJseUtleVBhcmFtczsgLy8gVE9ETyB0eXBlIHRoaXNcbiAgfSkge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGlucHV0Lm1hcChhc3luYyAoc2EsIHNhSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgIHNhLnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY3JlYXRlQXBwcm92ZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgc2EuYXBwcm92ZXJUcHMubWFwKGFzeW5jIChhcHByb3ZlclRwLCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICB0cDogYXBwcm92ZXJUcCxcbiAgICAgICAgICAgICAgYXBwcm92ZXJJbmRleCxcbiAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwU3ViQXNzZW1ibGllc1tzYUluZGV4XSxcbiAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNpbmdsZVJlamVjdDogc2Euc2luZ2xlUmVqZWN0LFxuICAgICAgICAgIHF1b3J1bTogc2EucXVvcnVtLFxuICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhLFxuICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycyxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlVXBkYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICBzdWJBc3NlbWJsaWVzLFxuICB9OiB7XG4gICAgaW5wdXQ6IFVwZGF0ZVRwU3ViQXNzZW1ibHlJbnB1dFtdO1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXAuU3ViQXNzZW1ibHlbXTtcbiAgICBhc3NlbWJseUtleVBhcmFtczsgLy8gVE9ETyB0eXBlIHRoaXNcbiAgICBzdWJBc3NlbWJsaWVzOiBDb25uZWN0aW9uPFRwU3ViQXNzZW1ibHlOb2RlPjtcbiAgfSkge1xuICAgIGlmIChzbGlwU3ViQXNzZW1ibGllcy5sZW5ndGggIT09IGlucHV0Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICdUaGUgc2xpcFN1YkFzc2VtYmxpZXMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGlucHV0J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZXhpc3Rpbmcgc3ViLWFzc2VtYmx5XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nU2EgPSBzdWJBc3NlbWJsaWVzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgKGVkZ2UpID0+IGVkZ2Uubm9kZS5pZCA9PT0gc2EuaWRcbiAgICAgICAgKS5ub2RlO1xuXG4gICAgICAgIC8vIEdldCBhcHByb3ZlcnMgdGhhdCBkbyBub3QgZXhpc3QgeWV0XG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IFtdO1xuICAgICAgICBjb25zdCB1cGRhdGVBcHByb3ZlcnMgPSBbXTtcblxuICAgICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKCh0cCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFwcHJvdmVyID0gZXhpc3RpbmdTYS5hcHByb3ZlcnMuZWRnZXMuZmluZChcbiAgICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUudHAuaWQgPT09IHRwLnRwSWRcbiAgICAgICAgICApPy5ub2RlO1xuICAgICAgICAgIGlmIChhcHByb3Zlcikge1xuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLnB1c2goe1xuICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXIuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3JlYXRlQXBwcm92ZXJzLnB1c2goe1xuICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2xpcFN1YkFzc2VtYmx5ID0gc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWJBc3NlbWJseUlkOiBzYS5pZCxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgY3JlYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJbmRleCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHVwZGF0ZUFwcHJvdmVyczogYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICB1cGRhdGVBcHByb3ZlcnMubWFwKGFzeW5jICh7IHRwLCBhcHByb3ZlcklkIH0sIGFwcHJvdmVySW5kZXgpID0+XG4gICAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgICBhcHByb3ZlcklkLFxuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXg6IGFwcHJvdmVySW5kZXggKyBjcmVhdGVBcHByb3ZlcnMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseSxcbiAgICAgICAgICAgICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbGxXcmFwcGluZ0tleUlkKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSwgdHBzOiBUcE5vZGVbXSkge1xuICAgIC8vIEZpbGwgaW4gd3JhcHBpbmdLZXlJZCBpZiBub3QgcHJlc2VudFxuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICBpZiAoIWFwcHJvdmVyLndyYXBwaW5nS2V5SWQpIHtcbiAgICAgICAgICBjb25zdCB0cCA9IHRwcy5maW5kKCh4KSA9PiB4LmlkID09PSBhcHByb3Zlci50cElkKTtcbiAgICAgICAgICBhcHByb3Zlci53cmFwcGluZ0tleUlkID0gdGhpcy5nZXRUcFdyYXBwaW5nS2V5SWQodHApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5wdXRBcHByb3ZlcnMoaW5wdXQ6IENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dFtdKSB7XG4gICAgY29uc3QgdHBJZHM6IHN0cmluZ1tdID0gW107XG4gICAgaW5wdXQuZm9yRWFjaCgoc2EpID0+IHtcbiAgICAgIHNhLmFwcHJvdmVyVHBzLmZvckVhY2goKGFwcHJvdmVyKSA9PiB7XG4gICAgICAgIHRwSWRzLnB1c2goYXBwcm92ZXIudHBJZCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHBJZHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlcGFyZUNyZWF0ZShpbnB1dDogQ3JlYXRlVHBBc3NlbWJseUlucHV0KSB7XG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IHN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG4gICAgY29uc3Qgcm9vdEtleVdyYXBwZWRTdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC53cmFwS2V5KFxuICAgICAgcm9vdEtleSxcbiAgICAgIHN1YmplY3RLZXlcbiAgICApO1xuXG4gICAgY29uc3QgeyBhc3NlbWJseUtleSwgcmF3QXNzZW1ibHlLZXksIGFzc2VtYmx5S2V5UGFyYW1zLCAuLi5hc3NlbWJseUlucHV0IH0gPVxuICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlQXNzZW1ibHkoe1xuICAgICAgICByb290S2V5OiByb290S2V5Lmp3ayxcbiAgICAgICAgc3ViamVjdEtleSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3Qgc2xpcEFzc2VtYmx5ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2xpcDM5KFxuICAgICAgaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIGlucHV0LnF1b3J1bSxcbiAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHRwSWRzID0gdGhpcy5nZXRJbnB1dEFwcHJvdmVycyhpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzKTtcblxuICAgIC8vIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYXNzZW1ibHkuXG4gICAgY29uc3QgdHBzID0gbWFwRWRnZXMoXG4gICAgICAoXG4gICAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFsLnF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogVHBzS2V5c1F1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaWRzOiB0cElkcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKS50cHNcbiAgICApO1xuXG4gICAgLy8gRmlsbCBpbiB3cmFwcGluZ0tleUlkIGlmIG5vdCBwcmVzZW50XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZChpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLCB0cHMpO1xuXG4gICAgY29uc3QgY3JlYXRlU3ViQXNzZW1ibGllcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNyZWF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgICAgaW5wdXQ6IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcyxcbiAgICAgIHN1YmplY3RLZXksXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleSxcbiAgICAgIGlucHV0LnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIG11dGF0aW9uSW5wdXQ6IHtcbiAgICAgICAgLi4uYXNzZW1ibHlJbnB1dCxcbiAgICAgICAgc2luZ2xlUmVqZWN0OiBpbnB1dC5zaW5nbGVSZWplY3QsXG4gICAgICAgIHF1b3J1bTogaW5wdXQucXVvcnVtLFxuICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgcm9vdEtleUlkOiByb290S2V5LmlkLFxuICAgICAgICByb290S2V5V3JhcHBlZFN1YmplY3RLZXksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFzc2VtYmx5QXBwcm92ZXJzKGFzc2VtYmx5OiBUcEFzc2VtYmx5Tm9kZSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gRmluZCBhbGwgVFBzIHRoYXQgYmVsb25nIHRvIHN1Yi1hc3NlbWJsaWVzXG4gICAgbWFwRWRnZXMoYXNzZW1ibHkuc3ViQXNzZW1ibGllcykubWFwKChzYSkgPT4ge1xuICAgICAgbWFwRWRnZXMoc2EuYXBwcm92ZXJzKS5mb3JFYWNoKChhcHByb3ZlcikgPT4gdHBJZHMucHVzaChhcHByb3Zlci50cC5pZCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVVcGRhdGUoXG4gICAgaW5wdXQ6IFVwZGF0ZVRwQXNzZW1ibHlJbnB1dCxcbiAgICBhc3NlbWJseTogVHBBc3NlbWJseU5vZGUgLy8gVE9ETyB0eXBlIHRoaXMgdG8gb25seSB3aGF0IHdlIG5lZWQuXG4gICkge1xuICAgIGlucHV0ID0ge1xuICAgICAgY3JlYXRlU3ViQXNzZW1ibGllczogW10sXG4gICAgICAuLi5pbnB1dCxcbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcbiAgICBjb25zdCB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC51cGRhdGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuICAgIGNvbnN0IGRlbGV0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LmRlbGV0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG5cbiAgICAvLyBNdXN0IGhhdmUgYXQgbGVhc3Qgb25lLlxuICAgIGlmIChcbiAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5sZW5ndGggPT09IDAgJiZcbiAgICAgIHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5sZW5ndGggPT09IDAgJiZcbiAgICAgIGRlbGV0ZVN1YkFzc2VtYmxpZXNJbnB1dC5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnTXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZjogW2NyZWF0ZVN1YkFzc2VtYmxpZXMsIHVwZGF0ZVN1YkFzc2VtYmxpZXMsIGRlbGV0ZVN1YkFzc2VtYmxpZXNdJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XG4gICAgY29uc3Qgc3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGFzc2VtYmx5LnN1YmplY3RLZXkuaWQpO1xuXG4gICAgY29uc3QgeyBhc3NlbWJseUtleSwgcmF3QXNzZW1ibHlLZXksIGFzc2VtYmx5S2V5UGFyYW1zLCAuLi5hc3NlbWJseUlucHV0IH0gPVxuICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlQXNzZW1ibHkoe1xuICAgICAgICByb290S2V5OiByb290S2V5Lmp3ayxcbiAgICAgICAgc3ViamVjdEtleTogc3ViamVjdEtleS5qd2ssXG4gICAgICB9KTtcblxuICAgIC8vIEZpbmQgYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkLCBkdXBsaWNhdGVzIGFyZSBubyBwcm9ibGVtLlxuICAgIC8vIEV4aXN0aW5nIGFwcHJvdmVyc1xuICAgIGNvbnN0IHRwSWRzID0gdGhpcy5nZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseSkuY29uY2F0KFxuICAgICAgdGhpcy5nZXRJbnB1dEFwcHJvdmVycyhjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQpLFxuICAgICAgdGhpcy5nZXRJbnB1dEFwcHJvdmVycyh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQpXG4gICAgKTtcblxuICAgIC8vIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYXNzZW1ibHkuXG4gICAgY29uc3QgdHBzID0gbWFwRWRnZXMoXG4gICAgICAoXG4gICAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFsLnF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogVHBzS2V5c1F1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaWRzOiB0cElkcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKS50cHNcbiAgICApO1xuXG4gICAgLy8gQXV0byBmaWxsIHRoZSB1cGRhdGVTdWJBc3NlbWJsaWVzIHdpdGggZXhpc3Rpbmcgc3ViIGFzc2VtYmxpZXMgaWYgdGhleSBhcmUgbm90XG4gICAgLy8gZXhwbGljaXRseSBkZWxldGVkLlxuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLmZvckVhY2goKGV4aXN0aW5nKSA9PiB7XG4gICAgICAvLyBEZWxldGluZyBleGlzdGluZywgZG9uJ3QgaW5jbHVkZSBpdFxuICAgICAgaWYgKGRlbGV0ZVN1YkFzc2VtYmxpZXNJbnB1dC5pbmNsdWRlcyhleGlzdGluZy5pZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgYWxyZWFkeSBzcGVjaWZpZWQgaW4gdGhlIGlucHV0XG4gICAgICBpZiAodXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnNvbWUoKHNhKSA9PiBzYS5pZCA9PT0gZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXBwcm92ZXJUcHM6IFRwQXNzZW1ibHlBcHByb3ZlcklucHV0W10gPSBtYXBFZGdlcyhcbiAgICAgICAgZXhpc3RpbmcuYXBwcm92ZXJzXG4gICAgICApLm1hcCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0cElkOiBhcHByb3Zlci50cC5pZCxcbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBhcHByb3Zlci5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbjpcbiAgICAgICAgICAgIGFwcHJvdmVyLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbixcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQucHVzaCh7XG4gICAgICAgIGlkOiBleGlzdGluZy5pZCxcbiAgICAgICAgcXVvcnVtOiBleGlzdGluZy5xdW9ydW0sXG4gICAgICAgIHNpbmdsZVJlamVjdDogZXhpc3Rpbmcuc2luZ2xlUmVqZWN0LFxuICAgICAgICBhcHByb3ZlclRwcyxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nLnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICB0aGlzLmZpbGxXcmFwcGluZ0tleUlkKGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCwgdHBzKTtcbiAgICB0aGlzLmZpbGxXcmFwcGluZ0tleUlkKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCwgdHBzKTtcblxuICAgIGxldCBzbGlwQXNzZW1ibHk7XG4gICAgdHJ5IHtcbiAgICAgIHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgICAgKGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCB8fCBbXSkuY29uY2F0KHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCB8fCBbXSksXG4gICAgICAgIGlucHV0LnF1b3J1bSxcbiAgICAgICAgcmF3QXNzZW1ibHlLZXlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFRPRE8gdGhpcyBzb21ldGltZXMgaGFwcGVucy4gTWF5YmUgbWlzc2luZyBhd2FpdC5cbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBjcmVhdGluZyBzbGlwIGFzc2VtYmx5JywgZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1vbiA9IHtcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgc3ViamVjdEtleTogc3ViamVjdEtleS5qd2ssXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBOZWVkIHRvIG1hdGNoIHRoZSBzbGlwIHN1YiBhc3NlbWJsaWVzIHRvIHRoZSBpbnB1dFxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllcyA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgICAgLi4uY29tbW9uLFxuICAgICAgaW5wdXQ6IHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCxcbiAgICAgIC8vIEFkZCBhbiBvZmZzZXQgdG8gdGhlIHN1YiBhc3NlbWJsaWVzIHRvIHNraXAgdGhlIG9uZSB0aGF0IGFyZSBjcmVhdGVkLlxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLnNsaWNlKFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoXG4gICAgICApLFxuICAgICAgc3ViQXNzZW1ibGllczogYXNzZW1ibHkuc3ViQXNzZW1ibGllcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzdWJqZWN0S2V5Lmp3ayxcbiAgICAgIGlucHV0LnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uID8/IGFzc2VtYmx5LnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIG11dGF0aW9uSW5wdXQ6IHtcbiAgICAgICAgLi4uYXNzZW1ibHlJbnB1dCxcbiAgICAgICAgc2luZ2xlUmVqZWN0OiBpbnB1dC5zaW5nbGVSZWplY3QsXG4gICAgICAgIHF1b3J1bTogaW5wdXQucXVvcnVtLFxuICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgc3ViamVjdEtleUlkOiBzdWJqZWN0S2V5LmlkLFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQXBwcm92ZXIoe1xuICAgIGFwcHJvdmVySWQsXG4gICAgdHAsXG4gICAgYXBwcm92ZXJJbmRleCxcbiAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViamVjdEtleSxcbiAgfToge1xuICAgIGFwcHJvdmVySWQ/OiBzdHJpbmc7IC8vIEdpdmVuIGlmIHVwZGF0aW5nIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgdHA6IFRwQXNzZW1ibHlBcHByb3ZlcklucHV0O1xuICAgIGFwcHJvdmVySW5kZXg6IG51bWJlcjtcbiAgICBzbGlwU3ViQXNzZW1ibHk6IHNsaXAuU3ViQXNzZW1ibHk7XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gIH0pIHtcbiAgICBjb25zdCB0cFdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5wcmVwYXJlVHBXcmFwcGluZ0tleSh0cCk7XG4gICAgLy8gc2hhcmVkIGtleSBpcyByb3RhdGVkIGV2ZXJ5IHRpbWUuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgLy8gRm9yIFRQIHRvIGFjY2VzcyBzaGFyZWRfa2V5XG4gICAgY29uc3QgdHBXcmFwcGVkU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICB0cFdyYXBwaW5nS2V5Lmp3ayxcbiAgICAgIHNoYXJlZEtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuICAgIC8vIEZvciBzdWJqZWN0IHRvIGFjY2VzcyBzaGFyZWRfa2V5XG4gICAgY29uc3Qgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIHNoYXJlZEtleS50b0pTT04odHJ1ZSlcbiAgICAgICk7XG5cbiAgICAvLyBJZiBxdW9ydW0gaXMgMSwgdGhlbiB1c2luZyB0aGUgc2FtZSBzaGFyZSBmb3IgZXZlcnkgbWVtYmVyLlxuICAgIGNvbnN0IHNoYXJlID1cbiAgICAgIHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQgPT09IDFcbiAgICAgICAgPyBzbGlwU3ViQXNzZW1ibHkuc2hhcmVzWzBdXG4gICAgICAgIDogc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1thcHByb3ZlckluZGV4XTtcblxuICAgIGNvbnN0IHBhcnRpYWxBc3NlbWJseUtleTogUGFydGlhbEFzc2VtYmx5S2V5ID0ge1xuICAgICAgc2xpcDM5OiB7XG4gICAgICAgIHNoYXJlLFxuICAgICAgICBzdWJBc3NlbWJseToge1xuICAgICAgICAgIHF1b3J1bTogc2xpcFN1YkFzc2VtYmx5LnRocmVzaG9sZCxcbiAgICAgICAgICBzaXplOiBzbGlwU3ViQXNzZW1ibHkuc2l6ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICB9O1xuXG4gICAgY29uc29sZS5sb2coJ3BhcnRpYWxBc3NlbWJseUtleScsIHBhcnRpYWxBc3NlbWJseUtleSk7XG5cbiAgICBjb25zdCBzaGFyZWRDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICB0cC5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICB0cC5zaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHNoYXJlZEtleSxcbiAgICAgICAgcGFydGlhbEFzc2VtYmx5S2V5XG4gICAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRwV3JhcHBpbmdLZXlJZDogdHBXcmFwcGluZ0tleS5pZCxcbiAgICAgIHRwV3JhcHBlZFNoYXJlZEtleSxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc2hhcmVkQ2lwaGVyRGF0YSxcbiAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YSxcbiAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleSxcbiAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVySWQgfHwgdm9pZCAwLCAvLyBJZiBleGlzdGluZyBhcHByb3ZlclxuICAgICAgdHBJZDogYXBwcm92ZXJJZCA/IHZvaWQgMCA6IHRwLnRwSWQsIC8vIGVsc2UgYWRkaW5nIG5ldyBUUFxuICAgIH07XG4gIH1cblxuICB2YWxpZGF0ZUFwcHJvdmVycyhhcHByb3ZlcnM6IFRwTm9kZVtdKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIGFsbCBhcHByb3ZlcnMgaGF2ZSBta1NoYXJlZEtleS5cbiAgICBmb3IgKGNvbnN0IHRwIG9mIGFwcHJvdmVycykge1xuICAgICAgaWYgKCF0cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5KSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGB0cCAke3RwLm90aGVyLnVzZXJuYW1lfSBkb2VzIG5vdCBoYXZlIG1rU2hhcmVkS2V5YDtcbiAgICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICAgICAgdGhyb3cgbmV3IExyQmFkQXJndW1lbnRFeGNlcHRpb24obXNnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmVwYXJlIHNsaXAzOVxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVNsaXAzOShcbiAgICBzdWJBc3NlbWJsaWVzLFxuICAgIGFzc2VtYmx5UXVvcnVtOiBudW1iZXIsXG4gICAgcmF3QXNzZW1ibHlLZXk6IHN0cmluZ1xuICApOiBQcm9taXNlPHNsaXAuQXNzZW1ibHk+IHtcbiAgICAvLyBJcyB0aGVyZSBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW1cbiAgICBpZiAoc3ViQXNzZW1ibGllcy5sZW5ndGggPCBhc3NlbWJseVF1b3J1bSkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICdOb3QgZW5vdWdoIHN1YiBhc3NlbWJsaWVzIHRvIG1lZXQgcXVvcnVtJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzbGlwQXNzZW1ibHkgPSBuZXcgc2xpcC5Bc3NlbWJseShhc3NlbWJseVF1b3J1bSk7XG5cbiAgICBzdWJBc3NlbWJsaWVzLmZvckVhY2goKHNhLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IGFwcHJvdmVyQ291bnQgPSBzYS5hcHByb3ZlclRwcy5sZW5ndGg7XG5cbiAgICAgIC8vIHNsaXAzOSByZXN0cmljdHMgcXVvcnVtID09IDEgdG8gaGF2ZSBvbmx5IDEgbWVtYmVyLiBTbyB3ZSBqdXN0IHNoYXJlIHRoZSBzYW1lXG4gICAgICAvLyBwYXJ0aWFsIGtleSBmb3IgYWxsIHN1YiBhc3NlbWJseSBtZW1iZXJzLlxuICAgICAgaWYgKHNhLnF1b3J1bSA9PT0gMSkge1xuICAgICAgICBhcHByb3ZlckNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIHNsaXBBc3NlbWJseS5hZGRTdWJBc3NlbWJseShcbiAgICAgICAgbmV3IHNsaXAuU3ViQXNzZW1ibHkoaW5kZXgsIHNhLnF1b3J1bSwgYXBwcm92ZXJDb3VudClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLnNsaXAzOVNlcnZpY2UuZ2VuZXJhdGVTaGFyZXMoXG4gICAgICByYXdBc3NlbWJseUtleSxcbiAgICAgIHRoaXMuc2xpcDM5UGFzc3BocmFzZSxcbiAgICAgIHNsaXBBc3NlbWJseVxuICAgICk7XG4gICAgcmV0dXJuIHNsaXBBc3NlbWJseTtcbiAgfVxufVxuIl19
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QUMsY0FBYyxDQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBMckJhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIEpTT05PYmplY3Q7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUGJrID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBpbmdLZXlJZChpbnB1dDogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W10sIHRwczogVHBOb2RlW10pIHtcbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICBpbnB1dC5mb3JFYWNoKChzYSkgPT4ge1xuICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgaWYgKCFhcHByb3Zlci53cmFwcGluZ0tleUlkKSB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gYXBwcm92ZXIudHBJZCk7XG4gICAgICAgICAgYXBwcm92ZXIud3JhcHBpbmdLZXlJZCA9IHRoaXMuZ2V0VHBXcmFwcGluZ0tleUlkKHRwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0QXBwcm92ZXJzKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICB0cElkcy5wdXNoKGFwcHJvdmVyLnRwSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShcbiAgICAgIHJvb3RLZXksXG4gICAgICBzdWJqZWN0S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICByYXdBc3NlbWJseUtleVxuICAgICk7XG5cbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEZpbGwgaW4gd3JhcHBpbmdLZXlJZCBpZiBub3QgcHJlc2VudFxuICAgIHRoaXMuZmlsbFdyYXBwaW5nS2V5SWQoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIGlucHV0OiBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHN1YmplY3RLZXksXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgIHJvb3RLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgcm9vdEtleVdyYXBwZWRTdWJqZWN0S2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseTogVHBBc3NlbWJseU5vZGUpIHtcbiAgICBjb25zdCB0cElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIEZpbmQgYWxsIFRQcyB0aGF0IGJlbG9uZyB0byBzdWItYXNzZW1ibGllc1xuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLm1hcCgoc2EpID0+IHtcbiAgICAgIG1hcEVkZ2VzKHNhLmFwcHJvdmVycykuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHRwSWRzLnB1c2goYXBwcm92ZXIudHAuaWQpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cElkcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVwYXJlVXBkYXRlKFxuICAgIGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG4gICAgYXNzZW1ibHk6IFRwQXNzZW1ibHlOb2RlIC8vIFRPRE8gdHlwZSB0aGlzIHRvIG9ubHkgd2hhdCB3ZSBuZWVkLlxuICApIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXM6IFtdLFxuICAgICAgLi4uaW5wdXQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQudXBkYXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcbiAgICBjb25zdCBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC5kZWxldGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuXG4gICAgLy8gTXVzdCBoYXZlIGF0IGxlYXN0IG9uZS5cbiAgICBpZiAoXG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ011c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2Y6IFtjcmVhdGVTdWJBc3NlbWJsaWVzLCB1cGRhdGVTdWJBc3NlbWJsaWVzLCBkZWxldGVTdWJBc3NlbWJsaWVzXSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IHN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShhc3NlbWJseS5zdWJqZWN0S2V5LmlkKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgICAgfSk7XG5cbiAgICAvLyBGaW5kIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCwgZHVwbGljYXRlcyBhcmUgbm8gcHJvYmxlbS5cbiAgICAvLyBFeGlzdGluZyBhcHByb3ZlcnNcbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0QXNzZW1ibHlBcHByb3ZlcnMoYXNzZW1ibHkpLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0KSxcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnModXBkYXRlU3ViQXNzZW1ibGllc0lucHV0KVxuICAgICk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEF1dG8gZmlsbCB0aGUgdXBkYXRlU3ViQXNzZW1ibGllcyB3aXRoIGV4aXN0aW5nIHN1YiBhc3NlbWJsaWVzIGlmIHRoZXkgYXJlIG5vdFxuICAgIC8vIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5mb3JFYWNoKChleGlzdGluZykgPT4ge1xuICAgICAgLy8gRGVsZXRpbmcgZXhpc3RpbmcsIGRvbid0IGluY2x1ZGUgaXRcbiAgICAgIGlmIChkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQuaW5jbHVkZXMoZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIGFscmVhZHkgc3BlY2lmaWVkIGluIHRoZSBpbnB1dFxuICAgICAgaWYgKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5zb21lKChzYSkgPT4gc2EuaWQgPT09IGV4aXN0aW5nLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcHJvdmVyVHBzOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFtdID0gbWFwRWRnZXMoXG4gICAgICAgIGV4aXN0aW5nLmFwcHJvdmVyc1xuICAgICAgKS5tYXAoKGFwcHJvdmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHBJZDogYXBwcm92ZXIudHAuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogYXBwcm92ZXIuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb246XG4gICAgICAgICAgICBhcHByb3Zlci5zaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24sXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnB1c2goe1xuICAgICAgICBpZDogZXhpc3RpbmcuaWQsXG4gICAgICAgIHF1b3J1bTogZXhpc3RpbmcucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGV4aXN0aW5nLnNpbmdsZVJlamVjdCxcbiAgICAgICAgYXBwcm92ZXJUcHMsXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZy5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRmlsbCBpbiB3cmFwcGluZ0tleUlkIGlmIG5vdCBwcmVzZW50XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG5cbiAgICBsZXQgc2xpcEFzc2VtYmx5O1xuICAgIHRyeSB7XG4gICAgICBzbGlwQXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICAgIChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLmNvbmNhdCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLFxuICAgICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgc29tZXRpbWVzIGhhcHBlbnMuIE1heWJlIG1pc3NpbmcgYXdhaXQuXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgY3JlYXRpbmcgc2xpcCBhc3NlbWJseScsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tb24gPSB7XG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgICAuLi5jb21tb24sXG4gICAgICBpbnB1dDogY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0LFxuICAgICAgLy8gTmVlZCB0byBtYXRjaCB0aGUgc2xpcCBzdWIgYXNzZW1ibGllcyB0byB0aGUgaW5wdXRcbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBBZGQgYW4gb2Zmc2V0IHRvIHRoZSBzdWIgYXNzZW1ibGllcyB0byBza2lwIHRoZSBvbmUgdGhhdCBhcmUgY3JlYXRlZC5cbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICAgIHN1YkFzc2VtYmxpZXM6IGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleS5qd2ssXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiA/PyBhc3NlbWJseS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIHN1YmplY3RLZXlJZDogc3ViamVjdEtleS5pZCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgIHN1YmplY3RLZXksXG4gIH06IHtcbiAgICBhcHByb3ZlcklkPzogc3RyaW5nOyAvLyBHaXZlbiBpZiB1cGRhdGluZyBleGlzdGluZyBhcHByb3ZlclxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dDtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwLlN1YkFzc2VtYmx5O1xuICAgIGFzc2VtYmx5S2V5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICB9KSB7XG4gICAgY29uc3QgdHBXcmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJlcGFyZVRwV3JhcHBpbmdLZXkodHApO1xuICAgIC8vIHNoYXJlZCBrZXkgaXMgcm90YXRlZCBldmVyeSB0aW1lLlxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgIC8vIEZvciBUUCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHRwV3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgdHBXcmFwcGluZ0tleS5qd2ssXG4gICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICAvLyBGb3Igc3ViamVjdCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgICApO1xuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzbGlwU3ViQXNzZW1ibHkudGhyZXNob2xkID09PSAxXG4gICAgICAgID8gc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1swXVxuICAgICAgICA6IHNsaXBTdWJBc3NlbWJseS5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2xpcFN1YkFzc2VtYmx5LnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHRwLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzaGFyZWRLZXksXG4gICAgICAgIHRwLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICBwYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHBXcmFwcGluZ0tleUlkOiB0cFdyYXBwaW5nS2V5LmlkLFxuICAgICAgdHBXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5LFxuICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXJJZCB8fCB2b2lkIDAsIC8vIElmIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgICB0cElkOiBhcHByb3ZlcklkID8gdm9pZCAwIDogdHAudHBJZCwgLy8gZWxzZSBhZGRpbmcgbmV3IFRQXG4gICAgfTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXBhcmUgc2xpcDM5XG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlLFxuICAgICAgc2xpcEFzc2VtYmx5XG4gICAgKTtcbiAgICByZXR1cm4gc2xpcEFzc2VtYmx5O1xuICB9XG59XG4iXX0=
|
|
@@ -50,7 +50,6 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
|
|
|
50
50
|
const sharedReset = yield this.privateService.getSharedReset(sharedResetId);
|
|
51
51
|
this.activeRequestOrRaise(sharedReset);
|
|
52
52
|
const pbk = yield JWK.asKey(JSON.parse(sharedReset.sharedRequest.pxk.pbk));
|
|
53
|
-
console.log(pbk.toJSON());
|
|
54
53
|
// TODO <AZ> Verify pbk against pbkFingerPrint
|
|
55
54
|
const claimApprovers = sharedReset.sharedRequest.claim.asClaimApprovers.edges.filter((edge) => edge.node.state === TpClaimApproverState.CLAIMED);
|
|
56
55
|
// A single approver may belong to multiple sub-assemblies. We approve them all here in a single
|
|
@@ -68,7 +67,6 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
|
|
|
68
67
|
};
|
|
69
68
|
}))),
|
|
70
69
|
};
|
|
71
|
-
console.log(input);
|
|
72
70
|
return new LrMutation({
|
|
73
71
|
mutation: ApproveTpPasswordResetRequestMutation,
|
|
74
72
|
variables: {
|
|
@@ -97,4 +95,4 @@ TpPasswordResetRequestService = __decorate([
|
|
|
97
95
|
})
|
|
98
96
|
], TpPasswordResetRequestService);
|
|
99
97
|
export { TpPasswordResetRequestService };
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsb0NBQW9DLEdBQ3JDLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7SUFRdkUsNkJBQTZCLFNBQTdCLDZCQUE4QixTQUFRLFNBQVM7SUFDMUQsWUFDVSxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsaUJBQW9DLEVBQ3BDLGNBQTZDO1FBRXJELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQStCO0lBR3ZELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUFXO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLEtBQUssS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsYUFBcUI7UUFDakMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFSyxxQkFBcUIsQ0FBQyxhQUFxQjs7WUFDL0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUU1RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdkMsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzVCLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUs7aUJBQ25ELE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssb0JBQW9CLENBQUMsT0FBTyxDQUFDO2lCQUNsRSxHQUFHLENBQ0YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksVUFBVSxDQUFDO2dCQUNiLFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFO2FBQ3hELENBQUMsQ0FDTCxDQUNKLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFSyxjQUFjLENBQUMsYUFBcUIsRUFBRSxjQUF1Qjs7WUFDakUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDNUIsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRUssc0JBQXNCLENBQzFCLGFBQXFCLEVBQ3JCLGVBQXdCOztZQUV4QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTNFLDhDQUE4QztZQUU5QyxNQUFNLGNBQWMsR0FDbEIsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDM0QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLG9CQUFvQixDQUFDLE9BQU8sQ0FDM0QsQ0FBQztZQUVKLGdHQUFnRztZQUNoRyxlQUFlO1lBQ2YsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzVCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixjQUFjLENBQUMsR0FBRyxDQUFDLENBQU8sWUFBWSxFQUFFLEVBQUU7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLE1BQU0sS0FBSyxHQUFHO29CQUNaLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDdEIsaUJBQWlCLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNsQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFPLFlBQVksRUFBRSxFQUFFO3dCQUNwRCxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO3dCQUM3QixPQUFPOzRCQUNMLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxFQUFFOzRCQUN6QixjQUFjLEVBQUUsRUFBRTs0QkFDbEIsZ0NBQWdDLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsR0FBRyxFQUNILEVBQUUsQ0FBQyx1Q0FBdUMsQ0FDM0M7eUJBQ0osQ0FBQztvQkFDSixDQUFDLENBQUEsQ0FBQyxDQUNIO2lCQUNGLENBQUM7Z0JBRUYsT0FBTyxJQUFJLFVBQVUsQ0FBQztvQkFDcEIsUUFBUSxFQUFFLHFDQUFxQztvQkFDL0MsU0FBUyxFQUFFO3dCQUNULEtBQUs7cUJBQ047aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFDSixDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUFuR0EsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFsQjhCLE1BQU07WUFBaEIsUUFBUTtZQUlwQixpQkFBaUI7WUFPakIsNkJBQTZCOztBQVF6Qiw2QkFBNkI7SUFOekMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLDZCQUE2QixDQWdHekM7U0FoR1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IFRwQXNzZW1ibHlTdGF0ZSwgVHBDbGFpbUFwcHJvdmVyU3RhdGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMckJhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5ncWwnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2UgfSBmcm9tICcuL3RwLXBhc3N3b3JkLXJlc2V0LnByaXZhdGUuc2VydmljZSc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcml2YXRlU2VydmljZTogVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5jbGFpbS5zdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IFRwQXNzZW1ibHlTdGF0ZS5DTEFJTUVEKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihgQ2xhaW0gaXMgYWxyZWFkeSBpbiAke3N0YXRlfSBzdGF0ZS5gKTtcbiAgICB9XG4gIH1cblxuICByZWplY3RSZXF1ZXN0KHNoYXJlZFJlc2V0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlamVjdFJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkKSk7XG4gIH1cblxuICBhc3luYyByZWplY3RSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LmNsYWltLmFzQ2xhaW1BcHByb3ZlcnMuZWRnZXNcbiAgICAgICAgLmZpbHRlcigoZWRnZSkgPT4gZWRnZS5ub2RlLnN0YXRlID09PSBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIChlZGdlKSA9PlxuICAgICAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBlZGdlLm5vZGUuaWQgfSB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdChzaGFyZWRSZXNldElkOiBzdHJpbmcsIHBia0ZpbmdlclByaW50Pzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFxuICAgICAgYXdhaXQgdGhpcy5hcHByb3ZlUmVxdWVzdE11dGF0aW9uKHNoYXJlZFJlc2V0SWQsIHBia0ZpbmdlclByaW50KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdE11dGF0aW9uKFxuICAgIHNoYXJlZFJlc2V0SWQ6IHN0cmluZyxcbiAgICBfcGJrRmluZ2VyUHJpbnQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICBjb25zdCBwYmsgPSBhd2FpdCBKV0suYXNLZXkoSlNPTi5wYXJzZShzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LnB4ay5wYmspKTtcblxuICAgIC8vIFRPRE8gPEFaPiBWZXJpZnkgcGJrIGFnYWluc3QgcGJrRmluZ2VyUHJpbnRcblxuICAgIGNvbnN0IGNsYWltQXBwcm92ZXJzID1cbiAgICAgIHNoYXJlZFJlc2V0LnNoYXJlZFJlcXVlc3QuY2xhaW0uYXNDbGFpbUFwcHJvdmVycy5lZGdlcy5maWx0ZXIoXG4gICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuc3RhdGUgPT09IFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICAgICk7XG5cbiAgICAvLyBBIHNpbmdsZSBhcHByb3ZlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzLiBXZSBhcHByb3ZlIHRoZW0gYWxsIGhlcmUgaW4gYSBzaW5nbGVcbiAgICAvLyB0cmFuc2FjdGlvbi5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2xhaW1BcHByb3ZlcnMubWFwKGFzeW5jIChhcHByb3ZlckVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjYSA9IGFwcHJvdmVyRWRnZS5ub2RlO1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAgICAgY2xhaW1BcHByb3ZlcklkOiBjYS5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY2EucmVjZWl2ZXJBcHByb3ZhbHMuZWRnZXMubWFwKGFzeW5jIChyZWNlaXZlckVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYSA9IHJlY2VpdmVyRWRnZS5ub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IHJhLmlkLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgIHBiayxcbiAgICAgICAgICAgICAgICAgICAgICBjYS5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -72,8 +72,7 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
|
|
|
72
72
|
master_key_wrapped_prk: masterKeyWrappedPrk,
|
|
73
73
|
})
|
|
74
74
|
.toPromise();
|
|
75
|
-
console.log(
|
|
76
|
-
console.log('Using new password: ', this.passwordService.getPassIdpString(passKeyBundle.passIdp));
|
|
75
|
+
console.log('Using new password');
|
|
77
76
|
// API call to create user on cognito
|
|
78
77
|
const signUpResult = yield this.auth.signUp({
|
|
79
78
|
username: requestResetResult.reset_username,
|
|
@@ -85,7 +84,7 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
|
|
|
85
84
|
}),
|
|
86
85
|
},
|
|
87
86
|
});
|
|
88
|
-
console.log('requestRest done
|
|
87
|
+
console.log('requestRest done');
|
|
89
88
|
return {
|
|
90
89
|
requestResetResult,
|
|
91
90
|
signUpResult,
|
|
@@ -115,4 +114,4 @@ TpPasswordResetUserService = __decorate([
|
|
|
115
114
|
})
|
|
116
115
|
], TpPasswordResetUserService);
|
|
117
116
|
export { TpPasswordResetUserService };
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtdXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LXVzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7SUFTdEQsMEJBQTBCLFNBQTFCLDBCQUEyQixTQUFRLFNBQVM7SUFDdkQsWUFDVSxNQUFjLEVBQ2QsUUFBa0IsRUFDQyxNQUF1QixFQUMxQyxVQUE2QixFQUM3QixpQkFBb0MsRUFDcEMsZUFBZ0MsRUFDaEMsSUFBZ0IsRUFDaEIsSUFBZTtRQUV2QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFUUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNDLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQzFDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FB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QUFFO3dCQUN6QiwwQkFBMEIsRUFDeEIsa0JBQWtCLENBQUMsMEJBQTBCO3FCQUNoRCxDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWhDLE9BQU87Z0JBQ0wsa0JBQWtCO2dCQUNsQixZQUFZO2FBQ2IsQ0FBQztRQUNKLENBQUM7S0FBQTtDQUNGLENBQUE7OztZQWhIQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQWhCc0MsTUFBTTtZQUFoQixRQUFROzRDQXFCaEMsTUFBTSxTQUFDLFNBQVM7WUFoQlosaUJBQWlCO1lBRGpCLGlCQUFpQjtZQUdqQixlQUFlO1lBUmYsVUFBVTtZQUVWLFNBQVM7O0FBZ0JMLDBCQUEwQjtJQU50QyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsMEJBQTBCLENBNkd0QztTQTdHWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoQ2xhc3MgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aC9saWItZXNtL0F1dGgnO1xuaW1wb3J0IHsgSVNpZ25VcFJlc3VsdCB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgUmVxdWVzdFJlc2V0UmVzdWx0IH0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC50eXBlcyc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcFBhc3N3b3JkUmVzZXRVc2VyU2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChMUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBMaWZlUmVhZHlDb25maWcsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBhc3N3b3JkU2VydmljZTogUGFzc3dvcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhDbGFzc1xuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlFbWFpbENvbnRhY3QoZW1haWwpOiBQcm9taXNlPHsgY2xhaW1JZDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBlbWFpbCxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgLnBvc3Q8YW55PihcbiAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hdXRoVXJsfXRwL3Bhc3N3b3JkLXJlc2V0L3ZlcmlmeS1jb250YWN0L2AsXG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeUNvbnRhY3RSZXNwb25kKFxuICAgIGNsYWltSWQ6IHN0cmluZyxcbiAgICBjbGFpbUNvZGU6IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgdG9rZW4gfSA9IGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyB0b2tlbiB9PihgJHt0aGlzLmNvbmZpZy5hdXRoVXJsfWNvdmUvcmVzcG9uZC9gLCB7XG4gICAgICAgIGNsYWltX2lkOiBjbGFpbUlkLFxuICAgICAgICB2X2NvZGU6IGNsYWltQ29kZSxcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdFJlc2V0KFxuICAgIHBhc3N3b3JkOiBzdHJpbmcsXG4gICAgY2xhaW1JZDogc3RyaW5nLFxuICAgIGNsYWltVG9rZW46IHN0cmluZ1xuICApOiBQcm9taXNlPHtcbiAgICByZXF1ZXN0UmVzZXRSZXN1bHQ6IFJlcXVlc3RSZXNldFJlc3VsdDtcbiAgICBzaWduVXBSZXN1bHQ6IElTaWduVXBSZXN1bHQ7XG4gIH0+IHtcbiAgICAvLyBHZW5lcmF0ZSB0aGUga2V5IG1hdGVyaWFsc1xuICAgIGNvbnN0IHBhc3NLZXlCdW5kbGUgPSBhd2FpdCB0aGlzLnBhc3N3b3JkU2VydmljZS5jcmVhdGVQYXNzS2V5QnVuZGxlKFxuICAgICAgcGFzc3dvcmRcbiAgICApO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHdyYXBwZWRNYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICBwYXNzS2V5QnVuZGxlLnBhc3NLZXksXG4gICAgICBtYXN0ZXJLZXkudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIC8vIEVwaGVtZXJhbCBQS0Mga2V5XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1hc3RlcktleVdyYXBwZWRQcmsgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICBtYXN0ZXJLZXksXG4gICAgICBwcmsudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIC8vIEFQSSBjYWxsIHRvIHNldHVwIHJlc2V0IHJlcXVlc3RcbiAgICBjb25zdCByZXF1ZXN0UmVzZXRSZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PFJlcXVlc3RSZXNldFJlc3VsdD4oXG4gICAgICAgIGAke3RoaXMuY29uZmlnLmF1dGhVcmx9dHAvcGFzc3dvcmQtcmVzZXQvcmVxdWVzdC9gLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhaW1JZCxcbiAgICAgICAgICBjbGFpbVRva2VuLFxuICAgICAgICAgIHBhc3Nfa2V5X3BhcmFtczogcGFzc0tleUJ1bmRsZS5wYXNzS2V5UGFyYW1zLFxuICAgICAgICAgIHBhc3NfaWRwX3BhcmFtczogcGFzc0tleUJ1bmRsZS5wYXNzSWRwUGFyYW1zLFxuICAgICAgICAgIHBhc3NfaWRwX3ZlcmlmaWVyX3BiazogcGFzc0tleUJ1bmRsZS5wYXNzSWRwVmVyaWZpZXIudG9KU09OKCksIC8vIHB1YmxpYyBrZXlcbiAgICAgICAgICB3cmFwcGVkX3Bhc3NfaWRwX3ZlcmlmaWVyX3ByazpcbiAgICAgICAgICAgIHBhc3NLZXlCdW5kbGUud3JhcHBlZFBhc3NJZHBWZXJpZmllclByayxcbiAgICAgICAgICB3cmFwcGVkX21hc3Rlcl9rZXk6IHdyYXBwZWRNYXN0ZXJLZXksXG4gICAgICAgICAgcGJrOiBwcmsudG9KU09OKCksIC8vIGVwaGVtZXJhbCBwdWJsaWMga2V5XG4gICAgICAgICAgbWFzdGVyX2tleV93cmFwcGVkX3ByazogbWFzdGVyS2V5V3JhcHBlZFByayxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgY29uc29sZS5sb2coJ1VzaW5nIG5ldyBwYXNzd29yZCcpO1xuXG4gICAgLy8gQVBJIGNhbGwgdG8gY3JlYXRlIHVzZXIgb24gY29nbml0b1xuICAgIGNvbnN0IHNpZ25VcFJlc3VsdCA9IGF3YWl0IHRoaXMuYXV0aC5zaWduVXAoe1xuICAgICAgdXNlcm5hbWU6IHJlcXVlc3RSZXNldFJlc3VsdC5yZXNldF91c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkU2VydmljZS5nZXRQYXNzSWRwU3RyaW5nKHBhc3NLZXlCdW5kbGUucGFzc0lkcCksXG4gICAgICBjbGllbnRNZXRhZGF0YToge1xuICAgICAgICB0cF9wYXNzd29yZF9yZXNldF9yZXF1ZXN0OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaWQ6IHJlcXVlc3RSZXNldFJlc3VsdC5pZCxcbiAgICAgICAgICBhc3NvY2lhdGVfcmVzZXRfdXNlcl90b2tlbjpcbiAgICAgICAgICAgIHJlcXVlc3RSZXNldFJlc3VsdC5hc3NvY2lhdGVfcmVzZXRfdXNlcl90b2tlbixcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coJ3JlcXVlc3RSZXN0IGRvbmUnKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZXF1ZXN0UmVzZXRSZXN1bHQsXG4gICAgICBzaWduVXBSZXN1bHQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1279,7 +1279,6 @@ class KeyGraphService {
|
|
|
1279
1279
|
}
|
|
1280
1280
|
_unwrapLink(wrappingKey, link, dstKey) {
|
|
1281
1281
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1282
|
-
// console.log("_unwrapLink:", link.data.keyId);
|
|
1283
1282
|
const wrappedKey = JSON.parse(link.data.wrappedKey);
|
|
1284
1283
|
// Signatures of keys contain the key itself. This way we only need
|
|
1285
1284
|
// to access the KeyLinks to decrypt/verify keys.
|
|
@@ -1298,10 +1297,8 @@ class KeyGraphService {
|
|
|
1298
1297
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1299
1298
|
for (const link of path) {
|
|
1300
1299
|
const dstKey = this.key(link.data.keyId);
|
|
1301
|
-
// console.log("key: ", link.data.keyId);
|
|
1302
1300
|
if (dstKey.jwk) {
|
|
1303
1301
|
key = dstKey.jwk;
|
|
1304
|
-
// console.log("Returning cached key: ", link.data.keyId);
|
|
1305
1302
|
continue;
|
|
1306
1303
|
}
|
|
1307
1304
|
if (!dstKey.task) {
|
|
@@ -2320,6 +2317,47 @@ class LrMutation extends LrMutationBase {
|
|
|
2320
2317
|
this.mutation = options.mutation;
|
|
2321
2318
|
this.variables = options.variables;
|
|
2322
2319
|
}
|
|
2320
|
+
/**
|
|
2321
|
+
* Select a different set of fields from the mutation. Example usage:
|
|
2322
|
+
*
|
|
2323
|
+
* interface CreateDirectoryMutationResult {
|
|
2324
|
+
* createDirectory: {
|
|
2325
|
+
* directory: DirectoryNode;
|
|
2326
|
+
* };
|
|
2327
|
+
* };
|
|
2328
|
+
*
|
|
2329
|
+
* const CreateDirectoryMutation = gqlTyped<CreateDirectoryMutationResult>`
|
|
2330
|
+
* mutation CreateDirectoryMutation(...) {
|
|
2331
|
+
* createDirectory(...) {
|
|
2332
|
+
* directory {
|
|
2333
|
+
* id
|
|
2334
|
+
* }
|
|
2335
|
+
* }
|
|
2336
|
+
* }
|
|
2337
|
+
* `
|
|
2338
|
+
* interface CreateDirectoryFragmentResult {
|
|
2339
|
+
* createDirectory: {
|
|
2340
|
+
* directory: DirectoryNode;
|
|
2341
|
+
* };
|
|
2342
|
+
* };
|
|
2343
|
+
*
|
|
2344
|
+
* const CreateDirectoryFragment = gqlTyped<CreateDirectoryFragmentResult>`
|
|
2345
|
+
* // Note that the string 'createDirectory' can not be changed.
|
|
2346
|
+
* // It must match with the mutation field above.
|
|
2347
|
+
* // The 'CreateDirectoryPayload' is the return type of the mutation.
|
|
2348
|
+
* fragment createDirectory on CreateDirectoryPayload {
|
|
2349
|
+
* directory {
|
|
2350
|
+
* plainMeta
|
|
2351
|
+
* }
|
|
2352
|
+
* }
|
|
2353
|
+
* `
|
|
2354
|
+
* lrGraphQLService.lrMutate({
|
|
2355
|
+
* mutation: CreateDirectoryMutation
|
|
2356
|
+
* }).select(CreateDirectoryFragment).createDirectory.directory.plainMeta.
|
|
2357
|
+
*
|
|
2358
|
+
* @param fragments
|
|
2359
|
+
* @returns
|
|
2360
|
+
*/
|
|
2323
2361
|
select(fragments) {
|
|
2324
2362
|
// Don't touch the original
|
|
2325
2363
|
const mutationDoc = cloneDeep(this.mutation);
|
|
@@ -2532,7 +2570,6 @@ class LrMergedMutation extends LrMutationBase {
|
|
|
2532
2570
|
...selections,
|
|
2533
2571
|
...this.renameSelections(childMutationNode.selectionSet.selections, prefix),
|
|
2534
2572
|
];
|
|
2535
|
-
// TODO Rename and merge fragments
|
|
2536
2573
|
// Rename and merge variables
|
|
2537
2574
|
for (const key2 of Object.keys(variables)) {
|
|
2538
2575
|
mergedVariables[prefix + key2] = variables[key2];
|
|
@@ -2600,6 +2637,13 @@ let LrGraphQLService = class LrGraphQLService {
|
|
|
2600
2637
|
keyGraphFieldAstSelection,
|
|
2601
2638
|
];
|
|
2602
2639
|
}
|
|
2640
|
+
if (options.name) {
|
|
2641
|
+
const operation = getQuery(options.query);
|
|
2642
|
+
operation.name = {
|
|
2643
|
+
kind: 'Name',
|
|
2644
|
+
value: options.name,
|
|
2645
|
+
};
|
|
2646
|
+
}
|
|
2603
2647
|
const response = yield this.apollo.query(options).toPromise();
|
|
2604
2648
|
this.stats.queryCount++;
|
|
2605
2649
|
handleApolloError(response.errors);
|
|
@@ -2643,6 +2687,13 @@ let LrGraphQLService = class LrGraphQLService {
|
|
|
2643
2687
|
fetchKeyGraphFieldAstSelection,
|
|
2644
2688
|
];
|
|
2645
2689
|
}
|
|
2690
|
+
if (options.name) {
|
|
2691
|
+
const operation = getMutation(options.mutation);
|
|
2692
|
+
operation.name = {
|
|
2693
|
+
kind: 'Name',
|
|
2694
|
+
value: options.name,
|
|
2695
|
+
};
|
|
2696
|
+
}
|
|
2646
2697
|
// Format to string and parse again. This allows the "loc": { "start": ... }
|
|
2647
2698
|
// part of the DocumentNode to be correctly setup. It's extra processing
|
|
2648
2699
|
// in serialising and parsing, but probably minimal overhead.
|
|
@@ -4821,7 +4872,6 @@ class TpAssemblyController {
|
|
|
4821
4872
|
prepareAssembly({ subjectKey, rootKey, }) {
|
|
4822
4873
|
return __awaiter(this, void 0, void 0, function* () {
|
|
4823
4874
|
const assemblyKey = yield this.keyFactory.createKey();
|
|
4824
|
-
console.log('prepareAssembly assemblyKey', assemblyKey);
|
|
4825
4875
|
const _a = assemblyKey.toJSON(true), { k: rawAssemblyKey } = _a, assemblyKeyParams = __rest(_a, ["k"]);
|
|
4826
4876
|
const assemblyKeyVerifierPrk = yield this.keyFactory.createPkcSignKey();
|
|
4827
4877
|
const wrappedAssemblyKeyVerifierPrk = yield this.encryptionService.encryptToString(assemblyKey, assemblyKeyVerifierPrk.toJSON(true));
|
|
@@ -5090,7 +5140,6 @@ class TpAssemblyController {
|
|
|
5090
5140
|
},
|
|
5091
5141
|
assemblyKeyParams,
|
|
5092
5142
|
};
|
|
5093
|
-
console.log('partialAssemblyKey', partialAssemblyKey);
|
|
5094
5143
|
const sharedCipherData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherDataClearJson || '');
|
|
5095
5144
|
const sharedCipherApprovalData = yield this.encryptionService.encryptToString(sharedKey, tp.sharedCipherApprovalDataClearJson || '');
|
|
5096
5145
|
const sharedCipherPartialAssemblyKey = yield this.encryptionService.encryptToString(sharedKey, partialAssemblyKey);
|
|
@@ -5725,13 +5774,13 @@ class LifeReadyAuthService {
|
|
|
5725
5774
|
const cognitoUser = yield this.auth.currentAuthenticatedUser();
|
|
5726
5775
|
const refreshToken = cognitoUser.getSignInUserSession().getRefreshToken();
|
|
5727
5776
|
return new Promise((resolve, reject) => {
|
|
5728
|
-
cognitoUser.refreshSession(refreshToken, (err
|
|
5777
|
+
cognitoUser.refreshSession(refreshToken, (err) => {
|
|
5729
5778
|
if (err) {
|
|
5730
5779
|
console.error('Error refreshing token: ', err);
|
|
5731
5780
|
reject(err);
|
|
5732
5781
|
}
|
|
5733
5782
|
else {
|
|
5734
|
-
console.log('Token refresh complete
|
|
5783
|
+
console.log('Token refresh complete');
|
|
5735
5784
|
resolve(0);
|
|
5736
5785
|
}
|
|
5737
5786
|
});
|
|
@@ -5749,7 +5798,6 @@ class LifeReadyAuthService {
|
|
|
5749
5798
|
// --------------------------------------------------------------
|
|
5750
5799
|
const assemblyKey = yield this.recoverAssemblyKey(resetUser);
|
|
5751
5800
|
const { rootKey } = yield this.encryptionService.decrypt(assemblyKey, resetUser.assemblyCipherData);
|
|
5752
|
-
console.log(rootKey);
|
|
5753
5801
|
// Making sure it's a valid key.
|
|
5754
5802
|
const rootKeyJwk = yield JWK.asKey(rootKey);
|
|
5755
5803
|
const masterKey = yield this.keyGraphService.getKey(resetUser.masterKey.id);
|
|
@@ -5768,11 +5816,9 @@ class LifeReadyAuthService {
|
|
|
5768
5816
|
}), {
|
|
5769
5817
|
includeKeyGraph: false,
|
|
5770
5818
|
})).createTpAssemblyKeyChallenge.challenge;
|
|
5771
|
-
console.log(challenge);
|
|
5772
5819
|
// Sign the challenge
|
|
5773
5820
|
// Generate a client side nonce that's no in the server's control.
|
|
5774
5821
|
challenge.clientNonce = this.keyFactory.randomString(TP_PASSWORD_RESET_CLIENT_NONCE_LENGTH);
|
|
5775
|
-
console.log(challenge);
|
|
5776
5822
|
const assemblyKeyVerifierPrk = yield this.encryptionService.decrypt(assemblyKey, resetUser.wrappedAssemblyKeyVerifierPrk);
|
|
5777
5823
|
const signedChallenge = yield this.encryptionService.sign(assemblyKeyVerifierPrk, challenge);
|
|
5778
5824
|
// --------------------------------------------------------------
|
|
@@ -5803,7 +5849,6 @@ class LifeReadyAuthService {
|
|
|
5803
5849
|
return;
|
|
5804
5850
|
}
|
|
5805
5851
|
Hub.remove('auth', listener);
|
|
5806
|
-
console.log(data.payload);
|
|
5807
5852
|
yield this.auth.signIn(resetUser.username, newIdpPassword);
|
|
5808
5853
|
// Switch over to the new set of keys
|
|
5809
5854
|
yield this.lrGraphQL.lrMutate(new LrMutation({
|
|
@@ -7186,6 +7231,16 @@ let Item2Service = Item2Service_1 = class Item2Service extends LrService {
|
|
|
7186
7231
|
beginDeleteChildItemLinksWindow(options) {
|
|
7187
7232
|
return this.mutate(this.beginDeleteChildItemLinksWindowMutation(options));
|
|
7188
7233
|
}
|
|
7234
|
+
/**
|
|
7235
|
+
* Schedule cleanup of the hard links in a directory.
|
|
7236
|
+
* The server will delete all hard link within the directory within a time window: starting from now and
|
|
7237
|
+
* ending at requestWindowMs after now.
|
|
7238
|
+
* The server decides _when_ it will perform the delete. It's not guaranteed that it will perform
|
|
7239
|
+
* the delete at "now + requestWindowMs", but it will happen at some time after "now + requestWindowMs".
|
|
7240
|
+
* This allows multiple overlapping calls to this function and the server allocates enough for each request.
|
|
7241
|
+
* The server has a setting that allows for a maximum value on requestWindowMs. If the requested value
|
|
7242
|
+
* is larger than this maximum, the call will fail.
|
|
7243
|
+
*/
|
|
7189
7244
|
beginDeleteChildItemLinksWindowMutation(options) {
|
|
7190
7245
|
return __awaiter(this, void 0, void 0, function* () {
|
|
7191
7246
|
return new LrMutation({
|
|
@@ -7372,7 +7427,6 @@ let Item2Service = Item2Service_1 = class Item2Service extends LrService {
|
|
|
7372
7427
|
encryptedContent: cipherFileContent,
|
|
7373
7428
|
});
|
|
7374
7429
|
}
|
|
7375
|
-
console.log('contentResource', contentResource);
|
|
7376
7430
|
}
|
|
7377
7431
|
return Object.assign(Object.assign({}, (yield this.prepareItem(fileStateKey, options))), { wrappedStateKey: yield this.keyGraph.wrapKey(fileKey, fileStateKey), contentResource });
|
|
7378
7432
|
});
|
|
@@ -11642,7 +11696,6 @@ let ScenarioService = class ScenarioService extends LrService {
|
|
|
11642
11696
|
}
|
|
11643
11697
|
const approvals = mapEdges(sharedScenario.sharedClaim.asClaimReceiver.approvals);
|
|
11644
11698
|
const assemblyKey = yield this.recoverAssemblyKey(approvals);
|
|
11645
|
-
console.log('receiveClaimMutation assemblyKey', assemblyKey);
|
|
11646
11699
|
// Decrypt all items
|
|
11647
11700
|
const receiverDirectories = yield Promise.all(sharedScenario.asReceiver.receiverDirectories.edges
|
|
11648
11701
|
.map((edge) => edge.node)
|
|
@@ -11975,7 +12028,6 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
|
|
|
11975
12028
|
const sharedReset = yield this.privateService.getSharedReset(sharedResetId);
|
|
11976
12029
|
this.activeRequestOrRaise(sharedReset);
|
|
11977
12030
|
const pbk = yield JWK.asKey(JSON.parse(sharedReset.sharedRequest.pxk.pbk));
|
|
11978
|
-
console.log(pbk.toJSON());
|
|
11979
12031
|
// TODO <AZ> Verify pbk against pbkFingerPrint
|
|
11980
12032
|
const claimApprovers = sharedReset.sharedRequest.claim.asClaimApprovers.edges.filter((edge) => edge.node.state === TpClaimApproverState.CLAIMED);
|
|
11981
12033
|
// A single approver may belong to multiple sub-assemblies. We approve them all here in a single
|
|
@@ -11993,7 +12045,6 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
|
|
|
11993
12045
|
};
|
|
11994
12046
|
}))),
|
|
11995
12047
|
};
|
|
11996
|
-
console.log(input);
|
|
11997
12048
|
return new LrMutation({
|
|
11998
12049
|
mutation: ApproveTpPasswordResetRequestMutation,
|
|
11999
12050
|
variables: {
|
|
@@ -12079,8 +12130,7 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
|
|
|
12079
12130
|
master_key_wrapped_prk: masterKeyWrappedPrk,
|
|
12080
12131
|
})
|
|
12081
12132
|
.toPromise();
|
|
12082
|
-
console.log(
|
|
12083
|
-
console.log('Using new password: ', this.passwordService.getPassIdpString(passKeyBundle.passIdp));
|
|
12133
|
+
console.log('Using new password');
|
|
12084
12134
|
// API call to create user on cognito
|
|
12085
12135
|
const signUpResult = yield this.auth.signUp({
|
|
12086
12136
|
username: requestResetResult.reset_username,
|
|
@@ -12092,7 +12142,7 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
|
|
|
12092
12142
|
}),
|
|
12093
12143
|
},
|
|
12094
12144
|
});
|
|
12095
|
-
console.log('requestRest done
|
|
12145
|
+
console.log('requestRest done');
|
|
12096
12146
|
return {
|
|
12097
12147
|
requestResetResult,
|
|
12098
12148
|
signUpResult,
|