@lifeready/core 6.1.3 → 6.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/bundles/lifeready-core.umd.js +303 -295
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +1 -1
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/auth/auth.config.js +57 -0
  6. package/esm2015/lib/auth/auth.gql.private.js +85 -0
  7. package/esm2015/lib/auth/auth.service.js +602 -0
  8. package/esm2015/lib/auth/auth.types.js +21 -0
  9. package/esm2015/lib/idle/idle.service.js +3 -3
  10. package/esm2015/lib/item/item.gql.js +164 -0
  11. package/esm2015/lib/item/item.gql.private.js +23 -0
  12. package/esm2015/lib/item/item.service.js +592 -0
  13. package/esm2015/lib/item/item.types.js +2 -0
  14. package/esm2015/lib/key-exchange/key-exchange.gql.js +174 -0
  15. package/esm2015/lib/key-exchange/key-exchange.service.js +480 -0
  16. package/esm2015/lib/lbop/lbop.service.js +7 -15
  17. package/esm2015/lib/life-ready.module.js +2 -2
  18. package/esm2015/lib/password/password.service.js +1 -1
  19. package/esm2015/lib/plan/plan.gql.js +91 -0
  20. package/esm2015/lib/plan/plan.service.js +191 -0
  21. package/esm2015/lib/plan/plan.types.js +2 -0
  22. package/esm2015/lib/profile/profile.gql.js +2 -2
  23. package/esm2015/lib/profile/profile.service.js +1 -8
  24. package/esm2015/lib/profile/profile.types.js +1 -8
  25. package/esm2015/lib/scenario/scenario.service.js +8 -8
  26. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +1 -1
  27. package/esm2015/lib/trusted-party/trusted-party.gql.js +64 -0
  28. package/esm2015/lib/trusted-party/trusted-party.gql.private.js +25 -0
  29. package/esm2015/lib/trusted-party/trusted-party.service.js +240 -0
  30. package/esm2015/lib/trusted-party/trusted-party.types.js +2 -0
  31. package/esm2015/public-api.js +17 -12
  32. package/fesm2015/lifeready-core.js +191 -213
  33. package/fesm2015/lifeready-core.js.map +1 -1
  34. package/lib/{auth2/auth2.service.d.ts → auth/auth.service.d.ts} +2 -2
  35. package/lib/idle/idle.service.d.ts +9 -2
  36. package/lib/{item2/item2.service.d.ts → item/item.service.d.ts} +39 -39
  37. package/lib/key-exchange/{key-exchange2.service.d.ts → key-exchange.service.d.ts} +2 -2
  38. package/lib/lbop/lbop.service.d.ts +1 -5
  39. package/lib/password/password.service.d.ts +1 -1
  40. package/lib/{plan2/plan2.service.d.ts → plan/plan.service.d.ts} +20 -20
  41. package/lib/profile/profile.service.d.ts +1 -2
  42. package/lib/profile/profile.types.d.ts +2 -15
  43. package/lib/scenario/scenario.service.d.ts +3 -3
  44. package/lib/shared-contact-card/shared-contact-card2.service.d.ts +1 -1
  45. package/lib/trusted-party/{trusted-party2.service.d.ts → trusted-party.service.d.ts} +6 -6
  46. package/lifeready-core.metadata.json +1 -1
  47. package/package.json +1 -1
  48. package/public-api.d.ts +16 -11
  49. package/esm2015/lib/auth2/auth.config.js +0 -57
  50. package/esm2015/lib/auth2/auth2.gql.private.js +0 -85
  51. package/esm2015/lib/auth2/auth2.service.js +0 -602
  52. package/esm2015/lib/auth2/auth2.types.js +0 -21
  53. package/esm2015/lib/item2/item2.gql.js +0 -164
  54. package/esm2015/lib/item2/item2.gql.private.js +0 -23
  55. package/esm2015/lib/item2/item2.service.js +0 -592
  56. package/esm2015/lib/item2/item2.types.js +0 -2
  57. package/esm2015/lib/key-exchange/key-exchange2.gql.js +0 -174
  58. package/esm2015/lib/key-exchange/key-exchange2.service.js +0 -480
  59. package/esm2015/lib/plan2/plan2.gql.js +0 -91
  60. package/esm2015/lib/plan2/plan2.service.js +0 -191
  61. package/esm2015/lib/plan2/plan2.types.js +0 -2
  62. package/esm2015/lib/trusted-party/trusted-party2.gql.js +0 -64
  63. package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +0 -25
  64. package/esm2015/lib/trusted-party/trusted-party2.service.js +0 -240
  65. package/esm2015/lib/trusted-party/trusted-party2.types.js +0 -2
  66. /package/lib/{auth2 → auth}/auth.config.d.ts +0 -0
  67. /package/lib/{auth2/auth2.gql.private.d.ts → auth/auth.gql.private.d.ts} +0 -0
  68. /package/lib/{auth2/auth2.types.d.ts → auth/auth.types.d.ts} +0 -0
  69. /package/lib/{item2/item2.gql.d.ts → item/item.gql.d.ts} +0 -0
  70. /package/lib/{item2/item2.gql.private.d.ts → item/item.gql.private.d.ts} +0 -0
  71. /package/lib/{item2/item2.types.d.ts → item/item.types.d.ts} +0 -0
  72. /package/lib/key-exchange/{key-exchange2.gql.d.ts → key-exchange.gql.d.ts} +0 -0
  73. /package/lib/{plan2/plan2.gql.d.ts → plan/plan.gql.d.ts} +0 -0
  74. /package/lib/{plan2/plan2.types.d.ts → plan/plan.types.d.ts} +0 -0
  75. /package/lib/trusted-party/{trusted-party2.gql.d.ts → trusted-party.gql.d.ts} +0 -0
  76. /package/lib/trusted-party/{trusted-party2.gql.private.d.ts → trusted-party.gql.private.d.ts} +0 -0
  77. /package/lib/trusted-party/{trusted-party2.types.d.ts → trusted-party.types.d.ts} +0 -0
@@ -1,240 +0,0 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Injectable, Injector, NgZone } from '@angular/core';
3
- import { JWK } from 'node-jose';
4
- import { LrMutation, LrService } from '../api/lr-graphql';
5
- import { EncryptionService } from '../encryption/encryption.service';
6
- import { Item2Service } from '../item2/item2.service';
7
- import { KeyFactoryService } from '../key/key-factory.service';
8
- import { KeyGraphService } from '../key/key-graph.service';
9
- import { KeyService } from '../key/key.service';
10
- import { KcBadStateException } from '../_common/exceptions';
11
- import { RunOutsideAngular } from '../_common/run-outside-angular';
12
- import { CompleteTpMkReshareMutation, DeleteTpMutation, RequestTpMkReshareMutation, RespondTpMkReshareMutation, ShareDirectoryMutation, ShareFileMutation, UnshareDirectoryMutation, UnshareFileMutation, } from './trusted-party2.gql';
13
- import { TpCurrentUserSharedKeyQuery } from './trusted-party2.gql.private';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../key/key-graph.service";
16
- import * as i2 from "../item2/item2.service";
17
- import * as i3 from "../key/key.service";
18
- import * as i4 from "../key/key-factory.service";
19
- import * as i5 from "../encryption/encryption.service";
20
- let TrustedParty2Service = class TrustedParty2Service extends LrService {
21
- constructor(ngZone, injector, keyGraph, item2Service, keyService, keyFactory, encryptionService) {
22
- super(injector);
23
- this.ngZone = ngZone;
24
- this.injector = injector;
25
- this.keyGraph = keyGraph;
26
- this.item2Service = item2Service;
27
- this.keyService = keyService;
28
- this.keyFactory = keyFactory;
29
- this.encryptionService = encryptionService;
30
- }
31
- deleteTp(tpId) {
32
- return this.mutate(this.deleteTpMutation(tpId));
33
- }
34
- deleteTpMutation(tpId) {
35
- return new LrMutation({
36
- mutation: DeleteTpMutation,
37
- variables: {
38
- input: {
39
- id: tpId,
40
- },
41
- },
42
- });
43
- }
44
- shareDirectory(options) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- return this.mutate(this.shareDirectoryMutation(options));
47
- });
48
- }
49
- shareDirectoryMutation(options) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- return this.shareItemMutation(Object.assign(Object.assign({}, options), { isDirectory: true }));
52
- });
53
- }
54
- shareFile(options) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- return this.mutate(this.shareFileMutation(options));
57
- });
58
- }
59
- shareFileMutation(options) {
60
- return __awaiter(this, void 0, void 0, function* () {
61
- return this.shareItemMutation(Object.assign(Object.assign({}, options), { isDirectory: false }));
62
- });
63
- }
64
- shareItemMutation({ itemId, itemKeyId, tpId, tpSharedKeyId, accessRole, isDirectory, }) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- const itemKey = yield this.keyGraph.getKey(itemKeyId, () => isDirectory
67
- ? this.item2Service.getDirectoryKeyId(itemId)
68
- : this.item2Service.getFileKeyId(itemId));
69
- const wrappingKey = yield this.keyGraph.getKey(tpSharedKeyId, () => this.getTpCurrentUserSharedKey(tpId).then((res) => res.sharedKey.id));
70
- const wrappedKey = yield this.keyGraph.wrapKey(wrappingKey, itemKey.jwk);
71
- return new LrMutation({
72
- mutation: isDirectory ? ShareDirectoryMutation : ShareFileMutation,
73
- variables: {
74
- input: {
75
- id: itemId,
76
- tpId,
77
- accessRole,
78
- keyId: itemKey.id,
79
- wrappingKeyId: wrappingKey.id,
80
- wrappedKey,
81
- },
82
- },
83
- });
84
- });
85
- }
86
- unshareDirectory(options) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- return this.mutate(this.unshareDirectoryMutation(options));
89
- });
90
- }
91
- unshareDirectoryMutation(options) {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- return this.unshareItemMutation(Object.assign(Object.assign({}, options), { isDirectory: true }));
94
- });
95
- }
96
- unshareFile(options) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- return this.mutate(this.unshareFileMutation(options));
99
- });
100
- }
101
- unshareFileMutation(options) {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- return this.unshareItemMutation(Object.assign(Object.assign({}, options), { isDirectory: false }));
104
- });
105
- }
106
- unshareItemMutation({ itemId, tpId, isDirectory, }) {
107
- return __awaiter(this, void 0, void 0, function* () {
108
- return new LrMutation({
109
- mutation: isDirectory ? UnshareDirectoryMutation : UnshareFileMutation,
110
- variables: {
111
- input: {
112
- id: itemId,
113
- tpId,
114
- },
115
- },
116
- });
117
- });
118
- }
119
- requestMkReshareMutation(tpId) {
120
- return __awaiter(this, void 0, void 0, function* () {
121
- const userSharedKey = yield this.getTpCurrentUserSharedKey(tpId);
122
- if (userSharedKey.mkSharedKey) {
123
- throw new KcBadStateException('TP already has mkSharedKey');
124
- }
125
- const masterKey = this.keyService.currentMasterKey;
126
- const prk = yield this.keyFactory.createPkcKey();
127
- const mkWrappedMkPrk = yield this.encryptionService.encryptToString(masterKey.jwk, prk.toJSON(true));
128
- const sharedKey = yield this.keyGraph.getKey(userSharedKey.sharedKey.id);
129
- const mkReshareRequestCipher = yield this.encryptionService.encryptToString(sharedKey.jwk, {
130
- pbk: prk.toJSON(),
131
- });
132
- return yield new LrMutation({
133
- mutation: RequestTpMkReshareMutation,
134
- variables: {
135
- input: {
136
- tpId,
137
- masterKeyId: masterKey.id,
138
- mkPbk: JSON.stringify(prk.toJSON()),
139
- mkWrappedMkPrk,
140
- sharedKeyId: sharedKey.id,
141
- mkReshareRequestCipher,
142
- },
143
- },
144
- });
145
- });
146
- }
147
- respondMkReshare(tpId) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const userSharedKey = yield this.getTpCurrentUserSharedKey(tpId);
150
- if (!userSharedKey.mkSharedKey) {
151
- throw new KcBadStateException('No access to the mkSharedKey so cannot reshare it with TP');
152
- }
153
- const sharedKey = yield this.keyGraph.getKey(userSharedKey.sharedKey.id);
154
- const plainMkReshareRequestCipher = yield this.encryptionService.decrypt(sharedKey, userSharedKey.mkReshareRequestCipher);
155
- const pbk = yield JWK.asKey(plainMkReshareRequestCipher.pbk);
156
- const mkSharedKey = yield this.keyGraph.getKey(userSharedKey.mkSharedKey.id);
157
- const plainMkReshareResponseCipher = {
158
- mkSharedKey: {
159
- id: mkSharedKey.id,
160
- jwk: mkSharedKey.jwk.toJSON(true),
161
- },
162
- };
163
- // Wrap with sharedKey then again with Pbk
164
- const mkReshareResponseCipher = yield this.encryptionService.encryptToString(pbk, yield this.encryptionService.encryptToString(sharedKey.jwk, plainMkReshareResponseCipher));
165
- return new LrMutation({
166
- mutation: RespondTpMkReshareMutation,
167
- variables: {
168
- input: {
169
- tpId,
170
- mkSharedKeyId: mkSharedKey.id,
171
- mkReshareResponseCipher,
172
- },
173
- },
174
- });
175
- });
176
- }
177
- completeMkReshare(tpId) {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- const userSharedKey = yield this.getTpCurrentUserSharedKey(tpId);
180
- const sharedKey = yield this.keyGraph.getKey(userSharedKey.sharedKey.id);
181
- const prk = yield this.keyGraph.getKey(userSharedKey.mkPxk.id);
182
- const plainMkReshareResponseCipher = yield this.encryptionService.decrypt(sharedKey, yield this.encryptionService.decrypt(prk, userSharedKey.mkReshareResponseCipher));
183
- // Double check it's a valid key.
184
- const mkSharedKey = {
185
- id: plainMkReshareResponseCipher.mkSharedKey.id,
186
- jwk: yield JWK.asKey(plainMkReshareResponseCipher.mkSharedKey.jwk),
187
- };
188
- const masterKey = this.keyService.currentMasterKey;
189
- const mkWrappedMkSharedKey = yield this.encryptionService.encryptToString(masterKey.jwk, mkSharedKey.jwk.toJSON(true));
190
- return new LrMutation({
191
- mutation: CompleteTpMkReshareMutation,
192
- variables: {
193
- input: {
194
- tpId,
195
- masterKeyId: masterKey.id,
196
- mkSharedKeyId: mkSharedKey.id,
197
- mkWrappedMkSharedKey,
198
- },
199
- },
200
- });
201
- });
202
- }
203
- // ------------------------------------------------------------------------------------
204
- // ------------------------------------------------------------------------------------
205
- // Helpers
206
- // ------------------------------------------------------------------------------------
207
- // ------------------------------------------------------------------------------------
208
- getTpCurrentUserSharedKey(tpId) {
209
- return __awaiter(this, void 0, void 0, function* () {
210
- return (yield this.lrGraphQL.query({
211
- query: TpCurrentUserSharedKeyQuery,
212
- variables: {
213
- id: tpId,
214
- },
215
- })).tp.currentUserSharedKey.userSharedKey;
216
- });
217
- }
218
- };
219
- TrustedParty2Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function TrustedParty2Service_Factory() { return new TrustedParty2Service(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.KeyGraphService), i0.ɵɵinject(i2.Item2Service), i0.ɵɵinject(i3.KeyService), i0.ɵɵinject(i4.KeyFactoryService), i0.ɵɵinject(i5.EncryptionService)); }, token: TrustedParty2Service, providedIn: "root" });
220
- TrustedParty2Service.decorators = [
221
- { type: Injectable, args: [{
222
- providedIn: 'root',
223
- },] }
224
- ];
225
- TrustedParty2Service.ctorParameters = () => [
226
- { type: NgZone },
227
- { type: Injector },
228
- { type: KeyGraphService },
229
- { type: Item2Service },
230
- { type: KeyService },
231
- { type: KeyFactoryService },
232
- { type: EncryptionService }
233
- ];
234
- TrustedParty2Service = __decorate([
235
- RunOutsideAngular({
236
- ngZoneName: 'ngZone',
237
- })
238
- ], TrustedParty2Service);
239
- export { TrustedParty2Service };
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixtQkFBbUIsR0FDcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztJQVM5RCxvQkFBb0IsU0FBcEIsb0JBQXFCLFNBQVEsU0FBUztJQUNqRCxZQUNVLE1BQWMsRUFDZCxRQUFrQixFQUNs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V0FBVyxDQUFDLEVBQUU7d0JBQzdCLG9CQUFvQjtxQkFDckI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFRCx1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3ZGLFVBQVU7SUFDVix1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3pFLHlCQUF5QixDQUFDLElBQW9COztZQUMxRCxPQUFPLENBQ0wsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDekIsS0FBSyxFQUFFLDJCQUEyQjtnQkFDbEMsU0FBUyxFQUFFO29CQUNULEVBQUUsRUFBRSxJQUFJO2lCQUNUO2FBQ0YsQ0FBQyxDQUNILENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztRQUMxQyxDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUE1UEEsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUE5QjhCLE1BQU07WUFBaEIsUUFBUTtZQU9wQixlQUFlO1lBRmYsWUFBWTtZQUdaLFVBQVU7WUFGVixpQkFBaUI7WUFGakIsaUJBQWlCOztBQTJCYixvQkFBb0I7SUFOaEMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLG9CQUFvQixDQXlQaEM7U0F6UFksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IExyUmVsYXlJZElucHV0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSXRlbTJTZXJ2aWNlIH0gZnJvbSAnLi4vaXRlbTIvaXRlbTIuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleSB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHsgS2NCYWRTdGF0ZUV4Y2VwdGlvbiB9IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIERlbGV0ZVRwTXV0YXRpb24sXG4gIFJlcXVlc3RUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgU2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgU2hhcmVGaWxlTXV0YXRpb24sXG4gIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUZpbGVNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwnO1xuaW1wb3J0IHsgVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5IH0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwucHJpdmF0ZSc7XG5pbXBvcnQgeyBTaGFyZUl0ZW1PcHRpb25zLCBVbnNoYXJlSXRlbU9wdGlvbnMgfSBmcm9tICcuL3RydXN0ZWQtcGFydHkyLnR5cGVzJztcblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eTJTZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtMlNlcnZpY2U6IEl0ZW0yU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBkZWxldGVUcCh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlbGV0ZVRwTXV0YXRpb24odHBJZCkpO1xuICB9XG5cbiAgZGVsZXRlVHBNdXRhdGlvbih0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlVHBNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiB0cElkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlRGlyZWN0b3J5KG9wdGlvbnM6IFNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5zaGFyZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNoYXJlSXRlbU11dGF0aW9uKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IHRydWUgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZUZpbGUob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnNoYXJlRmlsZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlRmlsZU11dGF0aW9uKG9wdGlvbnM6IFNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZUl0ZW1NdXRhdGlvbih7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hhcmVJdGVtTXV0YXRpb24oe1xuICAgIGl0ZW1JZCxcbiAgICBpdGVtS2V5SWQsXG4gICAgdHBJZCxcbiAgICB0cFNoYXJlZEtleUlkLFxuICAgIGFjY2Vzc1JvbGUsXG4gICAgaXNEaXJlY3RvcnksXG4gIH06IFNoYXJlSXRlbU9wdGlvbnMgJiB7XG4gICAgaXNEaXJlY3Rvcnk6IGJvb2xlYW47XG4gIH0pIHtcbiAgICBjb25zdCBpdGVtS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoaXRlbUtleUlkLCAoKSA9PlxuICAgICAgaXNEaXJlY3RvcnlcbiAgICAgICAgPyB0aGlzLml0ZW0yU2VydmljZS5nZXREaXJlY3RvcnlLZXlJZChpdGVtSWQpXG4gICAgICAgIDogdGhpcy5pdGVtMlNlcnZpY2UuZ2V0RmlsZUtleUlkKGl0ZW1JZClcbiAgICApO1xuICAgIGNvbnN0IHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodHBTaGFyZWRLZXlJZCwgKCkgPT5cbiAgICAgIHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKS50aGVuKChyZXMpID0+IHJlcy5zaGFyZWRLZXkuaWQpXG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC53cmFwS2V5KHdyYXBwaW5nS2V5LCBpdGVtS2V5Lmp3ayk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IGlzRGlyZWN0b3J5ID8gU2hhcmVEaXJlY3RvcnlNdXRhdGlvbiA6IFNoYXJlRmlsZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGl0ZW1JZCxcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgICAga2V5SWQ6IGl0ZW1LZXkuaWQsXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bnNoYXJlRGlyZWN0b3J5KG9wdGlvbnM6IFVuc2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyB1bnNoYXJlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudW5zaGFyZUl0ZW1NdXRhdGlvbih7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZUZpbGUob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudW5zaGFyZUZpbGVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyB1bnNoYXJlRmlsZU11dGF0aW9uKG9wdGlvbnM6IFVuc2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnVuc2hhcmVJdGVtTXV0YXRpb24oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVuc2hhcmVJdGVtTXV0YXRpb24oe1xuICAgIGl0ZW1JZCxcbiAgICB0cElkLFxuICAgIGlzRGlyZWN0b3J5LFxuICB9OiBVbnNoYXJlSXRlbU9wdGlvbnMgJiB7IGlzRGlyZWN0b3J5OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IGlzRGlyZWN0b3J5ID8gVW5zaGFyZURpcmVjdG9yeU11dGF0aW9uIDogVW5zaGFyZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpdGVtSWQsXG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0TWtSZXNoYXJlTXV0YXRpb24odHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKHVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKCdUUCBhbHJlYWR5IGhhcyBta1NoYXJlZEtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hc3RlcktleSA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50TWFzdGVyS2V5O1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NLZXkoKTtcbiAgICBjb25zdCBta1dyYXBwZWRNa1ByayA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgbWFzdGVyS2V5Lmp3ayxcbiAgICAgIHByay50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IG1rUmVzaGFyZVJlcXVlc3RDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICB7XG4gICAgICAgIHBiazogcHJrLnRvSlNPTigpLFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFJlcXVlc3RUcE1rUmVzaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBtYXN0ZXJLZXlJZDogbWFzdGVyS2V5LmlkLFxuICAgICAgICAgIG1rUGJrOiBKU09OLnN0cmluZ2lmeShwcmsudG9KU09OKCkpLFxuICAgICAgICAgIG1rV3JhcHBlZE1rUHJrLFxuICAgICAgICAgIHNoYXJlZEtleUlkOiBzaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVxdWVzdENpcGhlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZXNwb25kTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGlmICghdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdObyBhY2Nlc3MgdG8gdGhlIG1rU2hhcmVkS2V5IHNvIGNhbm5vdCByZXNoYXJlIGl0IHdpdGggVFAnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rUmVzaGFyZVJlcXVlc3RDaXBoZXJcbiAgICApO1xuICAgIGNvbnN0IHBiayA9IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlcXVlc3RDaXBoZXIucGJrKTtcbiAgICBjb25zdCBta1NoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KFxuICAgICAgdXNlclNoYXJlZEtleS5ta1NoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0ge1xuICAgICAgbWtTaGFyZWRLZXk6IHtcbiAgICAgICAgaWQ6IG1rU2hhcmVkS2V5LmlkLFxuICAgICAgICBqd2s6IG1rU2hhcmVkS2V5Lmp3ay50b0pTT04odHJ1ZSksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBXcmFwIHdpdGggc2hhcmVkS2V5IHRoZW4gYWdhaW4gd2l0aCBQYmtcbiAgICBjb25zdCBta1Jlc2hhcmVSZXNwb25zZUNpcGhlciA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgcGJrLFxuICAgICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgICBzaGFyZWRLZXkuandrLFxuICAgICAgICAgIHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1rU2hhcmVkS2V5SWQ6IG1rU2hhcmVkS2V5LmlkLFxuICAgICAgICAgIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlTWtSZXNoYXJlKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgY29uc3QgdXNlclNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkKTtcblxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkKTtcbiAgICBjb25zdCBwcmsgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5Lm1rUHhrLmlkKTtcbiAgICBjb25zdCBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICBwcmssXG4gICAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gRG91YmxlIGNoZWNrIGl0J3MgYSB2YWxpZCBrZXkuXG4gICAgY29uc3QgbWtTaGFyZWRLZXk6IEtleSA9IHtcbiAgICAgIGlkOiBwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5LmlkLFxuICAgICAgandrOiBhd2FpdCBKV0suYXNLZXkocGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlci5ta1NoYXJlZEtleS5qd2spLFxuICAgIH07XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSB0aGlzLmtleVNlcnZpY2UuY3VycmVudE1hc3RlcktleTtcbiAgICBjb25zdCBta1dyYXBwZWRNa1NoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgbWFzdGVyS2V5Lmp3ayxcbiAgICAgIG1rU2hhcmVkS2V5Lmp3ay50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtXcmFwcGVkTWtTaGFyZWRLZXksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFMLnF1ZXJ5KHtcbiAgICAgICAgcXVlcnk6IFRwQ3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkudHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHJ1c3RlZC1wYXJ0eS90cnVzdGVkLXBhcnR5Mi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzUm9sZUNob2ljZSwgTHJSZWxheUlkSW5wdXQgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuXG4vLyBJZiB4eHhLZXlJZCBub3QgZ2l2ZW4sIHRoZW4gZmV0Y2ggdGhlbSB3aXRoIEFQSSBjYWxsc1xuZXhwb3J0IGludGVyZmFjZSBTaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBMclJlbGF5SWRJbnB1dDtcbiAgaXRlbUtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIHRwSWQ6IExyUmVsYXlJZElucHV0O1xuICB0cFNoYXJlZEtleUlkPzogTHJSZWxheUlkSW5wdXQ7XG4gIGFjY2Vzc1JvbGU6IEFjY2Vzc1JvbGVDaG9pY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zaGFyZUl0ZW1PcHRpb25zIHtcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIHRwSWQ6IHN0cmluZztcbn1cbiJdfQ==
File without changes