@lifeready/core 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -62
- package/bundles/lifeready-core.umd.js +14315 -14315
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/ast.js +40 -40
- package/esm2015/lib/_common/deferred-promise.js +24 -24
- package/esm2015/lib/_common/exceptions.js +157 -157
- package/esm2015/lib/_common/queries.gql.js +190 -190
- package/esm2015/lib/_common/run-outside-angular.js +79 -79
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/_common/utils.js +52 -52
- package/esm2015/lib/api/contact-card.gql.js +79 -79
- package/esm2015/lib/api/contact-card.service.js +154 -154
- package/esm2015/lib/api/contact-card2.gql.js +60 -60
- package/esm2015/lib/api/contact-card2.service.js +103 -103
- package/esm2015/lib/api/file.service.js +74 -74
- package/esm2015/lib/api/key-exchange.gql.js +188 -188
- package/esm2015/lib/api/key-exchange.service.js +442 -442
- package/esm2015/lib/api/key-exchange.types.js +18 -18
- package/esm2015/lib/api/key-exchange2.gql.js +171 -171
- package/esm2015/lib/api/key-exchange2.service.js +479 -479
- package/esm2015/lib/api/lock.gql.js +40 -40
- package/esm2015/lib/api/lock.service.js +64 -64
- package/esm2015/lib/api/lr-apollo.service.js +46 -46
- package/esm2015/lib/api/lr-graphql/index.js +6 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
- package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
- package/esm2015/lib/api/message.service.js +138 -138
- package/esm2015/lib/api/persist.service.js +181 -181
- package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
- package/esm2015/lib/api/query-processor/index.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +262 -262
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
- package/esm2015/lib/api/shared-contact-card.service.js +119 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
- package/esm2015/lib/api/time.service.js +146 -146
- package/esm2015/lib/api/types/graphql.types.js +7 -7
- package/esm2015/lib/api/types/index.js +3 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +101 -101
- package/esm2015/lib/auth/auth.config.js +57 -57
- package/esm2015/lib/auth/auth.gql.js +48 -48
- package/esm2015/lib/auth/auth.types.js +27 -27
- package/esm2015/lib/auth/idle.service.js +168 -168
- package/esm2015/lib/auth/idle.types.js +7 -7
- package/esm2015/lib/auth/lbop.service.js +355 -355
- package/esm2015/lib/auth/life-ready-auth.service.js +488 -488
- package/esm2015/lib/auth/password.service.js +320 -320
- package/esm2015/lib/auth/register.service.js +172 -172
- package/esm2015/lib/auth/two-factor.service.js +74 -74
- package/esm2015/lib/category/category-meta.service.js +99 -99
- package/esm2015/lib/category/category.gql.js +406 -406
- package/esm2015/lib/category/category.service.js +390 -390
- package/esm2015/lib/category/category.types.js +29 -29
- package/esm2015/lib/cryptography/cryptography.types.js +11 -11
- package/esm2015/lib/cryptography/encryption.service.js +189 -189
- package/esm2015/lib/cryptography/key-factory.service.js +237 -237
- package/esm2015/lib/cryptography/key-graph.service.js +299 -299
- package/esm2015/lib/cryptography/key-meta.service.js +200 -200
- package/esm2015/lib/cryptography/key.service.js +124 -124
- package/esm2015/lib/cryptography/slip39.service.js +169 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
- package/esm2015/lib/items2/item2.gql.js +139 -139
- package/esm2015/lib/items2/item2.service.js +498 -498
- package/esm2015/lib/items2/item2.types.js +1 -1
- package/esm2015/lib/life-ready.config.js +84 -84
- package/esm2015/lib/life-ready.module.js +74 -74
- package/esm2015/lib/notification/notification.gql.js +43 -43
- package/esm2015/lib/notification/notification.service.js +118 -118
- package/esm2015/lib/plan/plan.gql.js +123 -123
- package/esm2015/lib/plan/plan.service.js +149 -149
- package/esm2015/lib/plan/plan.types.js +11 -11
- package/esm2015/lib/record/record-attachment.service.js +101 -101
- package/esm2015/lib/record/record.gql.js +179 -179
- package/esm2015/lib/record/record.service.js +206 -206
- package/esm2015/lib/record/record.types.js +15 -15
- package/esm2015/lib/record-type/record-type.service.js +75 -75
- package/esm2015/lib/record-type/record-type.types.js +28 -28
- package/esm2015/lib/scenario/scenario.constants.js +2 -2
- package/esm2015/lib/scenario/scenario.controller.js +34 -34
- package/esm2015/lib/scenario/scenario.gql.js +72 -72
- package/esm2015/lib/scenario/scenario.gql.private.js +198 -198
- package/esm2015/lib/scenario/scenario.service.js +538 -538
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +22 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +362 -362
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +1 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +113 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +34 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +236 -236
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +95 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
- package/esm2015/lib/users/profile-details.service.js +214 -214
- package/esm2015/lib/users/profile.gql.js +97 -97
- package/esm2015/lib/users/profile.service.js +169 -169
- package/esm2015/lib/users/profile.types.js +34 -34
- package/esm2015/lib/users/user.gql.js +60 -60
- package/esm2015/lib/users/user.service.js +79 -79
- package/esm2015/lib/users/user.types.js +5 -5
- package/esm2015/lifeready-core.js +13 -13
- package/esm2015/public-api.js +71 -71
- package/fesm2015/lifeready-core.js +12258 -12258
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/ast.d.ts +11 -11
- package/lib/_common/deferred-promise.d.ts +12 -12
- package/lib/_common/exceptions.d.ts +109 -109
- package/lib/_common/queries.gql.d.ts +10 -10
- package/lib/_common/run-outside-angular.d.ts +14 -14
- package/lib/_common/types.d.ts +10 -10
- package/lib/_common/utils.d.ts +9 -9
- package/lib/api/contact-card.gql.d.ts +7 -7
- package/lib/api/contact-card.service.d.ts +52 -52
- package/lib/api/contact-card2.gql.d.ts +34 -34
- package/lib/api/contact-card2.service.d.ts +49 -49
- package/lib/api/file.service.d.ts +18 -18
- package/lib/api/key-exchange.gql.d.ts +9 -9
- package/lib/api/key-exchange.service.d.ts +39 -39
- package/lib/api/key-exchange.types.d.ts +196 -196
- package/lib/api/key-exchange2.gql.d.ts +125 -125
- package/lib/api/key-exchange2.service.d.ts +187 -187
- package/lib/api/lock.gql.d.ts +27 -27
- package/lib/api/lock.service.d.ts +34 -34
- package/lib/api/lr-apollo.service.d.ts +15 -15
- package/lib/api/lr-graphql/index.d.ts +5 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +28 -28
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
- package/lib/api/lr-graphql/lr.service.d.ts +9 -9
- package/lib/api/message.service.d.ts +58 -58
- package/lib/api/persist.service.d.ts +31 -31
- package/lib/api/query-processor/common-processors.service.d.ts +36 -36
- package/lib/api/query-processor/index.d.ts +2 -2
- package/lib/api/query-processor/query-processor.service.d.ts +18 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
- package/lib/api/shared-contact-card.service.d.ts +33 -33
- package/lib/api/shared-contact-card2.gql.d.ts +36 -36
- package/lib/api/shared-contact-card2.service.d.ts +45 -45
- package/lib/api/time.service.d.ts +16 -16
- package/lib/api/types/graphql.types.d.ts +29 -29
- package/lib/api/types/index.d.ts +2 -2
- package/lib/api/types/lr-graphql.types.d.ts +502 -502
- package/lib/auth/auth.config.d.ts +5 -5
- package/lib/auth/auth.gql.d.ts +15 -15
- package/lib/auth/auth.types.d.ts +66 -66
- package/lib/auth/idle.service.d.ts +40 -40
- package/lib/auth/idle.types.d.ts +10 -10
- package/lib/auth/lbop.service.d.ts +91 -91
- package/lib/auth/life-ready-auth.service.d.ts +61 -61
- package/lib/auth/password.service.d.ts +78 -78
- package/lib/auth/register.service.d.ts +25 -25
- package/lib/auth/two-factor.service.d.ts +15 -15
- package/lib/category/category-meta.service.d.ts +23 -23
- package/lib/category/category.gql.d.ts +45 -45
- package/lib/category/category.service.d.ts +67 -67
- package/lib/category/category.types.d.ts +79 -79
- package/lib/cryptography/cryptography.types.d.ts +83 -83
- package/lib/cryptography/encryption.service.d.ts +41 -41
- package/lib/cryptography/key-factory.service.d.ts +38 -38
- package/lib/cryptography/key-graph.service.d.ts +41 -41
- package/lib/cryptography/key-meta.service.d.ts +44 -44
- package/lib/cryptography/key.service.d.ts +36 -36
- package/lib/cryptography/slip39.service.d.ts +43 -43
- package/lib/cryptography/web-crypto.service.d.ts +5 -5
- package/lib/items2/item2.gql.d.ts +123 -123
- package/lib/items2/item2.service.d.ts +203 -203
- package/lib/items2/item2.types.d.ts +70 -70
- package/lib/life-ready.config.d.ts +14 -14
- package/lib/life-ready.module.d.ts +5 -5
- package/lib/notification/notification.gql.d.ts +37 -37
- package/lib/notification/notification.service.d.ts +63 -63
- package/lib/plan/plan.gql.d.ts +11 -11
- package/lib/plan/plan.service.d.ts +33 -33
- package/lib/plan/plan.types.d.ts +31 -31
- package/lib/record/record-attachment.service.d.ts +16 -16
- package/lib/record/record.gql.d.ts +14 -14
- package/lib/record/record.service.d.ts +25 -25
- package/lib/record/record.types.d.ts +57 -57
- package/lib/record-type/record-type.service.d.ts +11 -11
- package/lib/record-type/record-type.types.d.ts +50 -50
- package/lib/scenario/scenario.constants.d.ts +1 -1
- package/lib/scenario/scenario.controller.d.ts +10 -10
- package/lib/scenario/scenario.gql.d.ts +62 -62
- package/lib/scenario/scenario.gql.private.d.ts +16 -16
- package/lib/scenario/scenario.service.d.ts +233 -233
- package/lib/scenario/scenario.types.d.ts +50 -50
- package/lib/trusted-parties/tp-assembly.d.ts +177 -177
- package/lib/trusted-parties/tp-assembly.gql.private.d.ts +5 -5
- package/lib/trusted-parties/tp-assembly.types.d.ts +38 -38
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
- package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
- package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
- package/lib/trusted-parties/tp-password-reset.controller.d.ts +10 -10
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +223 -223
- package/lib/trusted-parties/tp-password-reset.service.d.ts +188 -188
- package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
- package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
- package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
- package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
- package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
- package/lib/users/profile-details.service.d.ts +21 -21
- package/lib/users/profile.gql.d.ts +11 -11
- package/lib/users/profile.service.d.ts +35 -35
- package/lib/users/profile.types.d.ts +96 -96
- package/lib/users/user.gql.d.ts +9 -9
- package/lib/users/user.service.d.ts +12 -12
- package/lib/users/user.types.d.ts +23 -23
- package/lifeready-core.d.ts +12 -12
- package/package.json +1 -1
- package/public-api.d.ts +67 -67
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import * as lodash from 'lodash';
|
|
3
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
4
|
-
import { Apollo } from 'apollo-angular';
|
|
5
|
-
import { KeyGraphService } from '../../cryptography/key-graph.service';
|
|
6
|
-
import { handleApolloError, LrBadStateException, LrUnsupportedException, } from '../../_common/exceptions';
|
|
7
|
-
import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
|
|
8
|
-
import { getQuery, getMutation } from '../../_common/ast';
|
|
9
|
-
import gql from 'graphql-tag';
|
|
10
|
-
import { QueryProcessorService } from '../query-processor';
|
|
11
|
-
import { RunOutsideAngular } from '../../_common/run-outside-angular';
|
|
12
|
-
import * as gqlPrinter from 'graphql/language/printer';
|
|
13
|
-
import { LrMergedMutation } from './lr-merged-mutation';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "apollo-angular";
|
|
16
|
-
import * as i2 from "../../cryptography/key-graph.service";
|
|
17
|
-
import * as i3 from "../query-processor/query-processor.service";
|
|
18
|
-
// Data structures
|
|
19
|
-
// --------------------------------------------------------------------------
|
|
20
|
-
const keyGraphFieldAstSelection = getQuery(gql `
|
|
21
|
-
query {
|
|
22
|
-
${KeyGraphField}
|
|
23
|
-
}
|
|
24
|
-
`).selectionSet.selections[0];
|
|
25
|
-
const fetchKeyGraphFieldAstSelection = getQuery(gql `
|
|
26
|
-
query {
|
|
27
|
-
${FetchKeyGraphField}
|
|
28
|
-
}
|
|
29
|
-
`).selectionSet.selections[0];
|
|
30
|
-
let LrGraphQLService = class LrGraphQLService {
|
|
31
|
-
constructor(ngZone, apollo, keyGraph, queryProcessor) {
|
|
32
|
-
this.ngZone = ngZone;
|
|
33
|
-
this.apollo = apollo;
|
|
34
|
-
this.keyGraph = keyGraph;
|
|
35
|
-
this.queryProcessor = queryProcessor;
|
|
36
|
-
this.stats = {
|
|
37
|
-
queryCount: 0,
|
|
38
|
-
mutationCount: 0,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
query(options) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
// Make copies to avoid side effect.
|
|
44
|
-
options = lodash.cloneDeep(options);
|
|
45
|
-
// Append the key graph query
|
|
46
|
-
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
47
|
-
if (includeKeyGraph) {
|
|
48
|
-
const operation = getQuery(options.query);
|
|
49
|
-
operation.selectionSet.selections = [
|
|
50
|
-
...operation.selectionSet.selections,
|
|
51
|
-
keyGraphFieldAstSelection,
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
|
-
const response = yield this.apollo.query(options).toPromise();
|
|
55
|
-
this.stats.queryCount++;
|
|
56
|
-
handleApolloError(response.errors);
|
|
57
|
-
this.addKeys(response);
|
|
58
|
-
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
59
|
-
return data;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
lrMutateImpl(lrMutation, options) {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
if (options === null || options === void 0 ? void 0 : options.variables) {
|
|
65
|
-
throw new LrUnsupportedException('Unsupported field: "options.variables"');
|
|
66
|
-
}
|
|
67
|
-
if (lrMutation.executed) {
|
|
68
|
-
throw new LrBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
|
|
69
|
-
}
|
|
70
|
-
lrMutation.setExecuted();
|
|
71
|
-
return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
|
|
72
|
-
.then((res) => {
|
|
73
|
-
// Resolve promises set on the lrMutation rather than the lrMutate() call.
|
|
74
|
-
lrMutation.resolve(res);
|
|
75
|
-
// Still need to return value to the promise waiting for the results of lrMutate().
|
|
76
|
-
return res;
|
|
77
|
-
})
|
|
78
|
-
.catch((error) => {
|
|
79
|
-
lrMutation.reject(error);
|
|
80
|
-
throw error;
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
apolloMutate(options) {
|
|
85
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
// Make copies to avoid side effect.
|
|
87
|
-
options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
|
|
88
|
-
// Append the key graph query
|
|
89
|
-
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
90
|
-
if (includeKeyGraph) {
|
|
91
|
-
const operation = getMutation(options.mutation);
|
|
92
|
-
operation.selectionSet.selections = [
|
|
93
|
-
...operation.selectionSet.selections,
|
|
94
|
-
fetchKeyGraphFieldAstSelection,
|
|
95
|
-
];
|
|
96
|
-
}
|
|
97
|
-
// Format to string and parse again. This allows the "loc": { "start": ... }
|
|
98
|
-
// part of the DocumentNode to be correctly setup. It's extra processing
|
|
99
|
-
// in serialising and parsing, but probably minimal overhead.
|
|
100
|
-
options.mutation = gql(gqlPrinter.print(options.mutation));
|
|
101
|
-
const response = yield this.apollo.mutate(options).toPromise();
|
|
102
|
-
this.stats.mutationCount++;
|
|
103
|
-
handleApolloError(response.errors);
|
|
104
|
-
this.addKeys(response);
|
|
105
|
-
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
106
|
-
return data;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
statsSnapshot() {
|
|
110
|
-
return lodash.cloneDeep(this.stats);
|
|
111
|
-
}
|
|
112
|
-
addKeys(response) {
|
|
113
|
-
if (response.data.keyGraph) {
|
|
114
|
-
this.keyGraph.addKeys(response.data.keyGraph);
|
|
115
|
-
delete response.data.keyGraph;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
isIncludeKeyGraph(includeKeyGraph) {
|
|
119
|
-
// Default to true when null or undefined.
|
|
120
|
-
return includeKeyGraph == null ? true : false;
|
|
121
|
-
}
|
|
122
|
-
lrMutate(lrMutations, options) {
|
|
123
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
if (lrMutations instanceof Array) {
|
|
125
|
-
const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
|
|
126
|
-
yield this.lrMutateImpl(merged, options);
|
|
127
|
-
return merged.promise;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
const resolved = yield lrMutations;
|
|
131
|
-
yield this.lrMutateImpl(resolved, options);
|
|
132
|
-
return resolved.promise;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
|
|
138
|
-
LrGraphQLService.decorators = [
|
|
139
|
-
{ type: Injectable, args: [{
|
|
140
|
-
providedIn: 'root',
|
|
141
|
-
},] }
|
|
142
|
-
];
|
|
143
|
-
LrGraphQLService.ctorParameters = () => [
|
|
144
|
-
{ type: NgZone },
|
|
145
|
-
{ type: Apollo },
|
|
146
|
-
{ type: KeyGraphService },
|
|
147
|
-
{ type: QueryProcessorService }
|
|
148
|
-
];
|
|
149
|
-
LrGraphQLService = __decorate([
|
|
150
|
-
RunOutsideAngular({
|
|
151
|
-
ngZoneName: 'ngZone',
|
|
152
|
-
})
|
|
153
|
-
], LrGraphQLService);
|
|
154
|
-
export { LrGraphQLService };
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbHItZ3JhcGhxbC9sci1ncmFwaHFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVF4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsc0JBQXNCLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBcUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHdEUsT0FBTyxLQUFLLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFFeEQsa0JBQWtCO0FBQ2xCLDZFQUE2RTtBQUM3RSxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7O0lBRTFDLGFBQWE7O0NBRWhCLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBYyxDQUFDO0FBRTNDLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTs7SUFFL0Msa0JBQWtCOztDQUVyQixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQWMsQ0FBQztJQWdEOUIsZ0JBQWdCLFNBQWhCLGdCQUFnQjtJQU0zQixZQUNVLE1BQWMsRUFDZCxNQUFjLEVBQ2QsUUFBeUIsRUFDekIsY0FBcUM7UUFIckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFUdkMsVUFBSyxHQUEwQjtZQUNyQyxVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1NBQ2pCLENBQUM7SUFPQyxDQUFDO0lBRUUsS0FBSyxDQUNULE9BQTZCOztZQUU3QixvQ0FBb0M7WUFDcEMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEMsNkJBQTZCO1lBQzdCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEUsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHO29CQUNsQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVTtvQkFDcEMseUJBQXlCO2lCQUMxQixDQUFDO2FBQ0g7WUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFPLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRXBFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFeEIsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FDakQsUUFBUSxDQUFDLElBQUksRUFDYixPQUFPLENBQUMsZ0JBQWdCLENBQ3pCLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVhLFlBQVksQ0FBQyxVQUFVLEVBQUUsT0FBUTs7WUFDN0MsSUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsU0FBUyxFQUFFO2dCQUN0QixNQUFNLElBQUksc0JBQXNCLENBQzlCLHdDQUF3QyxDQUN6QyxDQUFDO2FBQ0g7WUFFRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsNkhBQTZILENBQzlILENBQUM7YUFDSDtZQUVELFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6QixPQUFPLElBQUksQ0FBQyxZQUFZLGlDQUNuQixPQUFPLEdBQ1AsVUFBVSxDQUFDLGNBQWMsRUFDNUI7aUJBQ0MsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osMEVBQTBFO2dCQUMxRSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixtRkFBbUY7Z0JBQ25GLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7SUFFSyxZQUFZLENBQ2hCLE9BQStDOztZQUUvQyxvQ0FBb0M7WUFDcEMsT0FBTyxtQ0FDRixPQUFPLEtBQ1YsUUFBUSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUM3QyxDQUFDO1lBRUYsNkJBQTZCO1lBQzdCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFeEUsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHO29CQUNsQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVTtvQkFDcEMsOEJBQThCO2lCQUMvQixDQUFDO2FBQ0g7WUFFRCw0RUFBNEU7WUFDNUUsd0VBQXdFO1lBQ3hFLDZEQUE2RDtZQUM3RCxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBRTNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUksT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUUzQixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUNqRCxRQUFRLENBQUMsSUFBSSxFQUNiLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRUQsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUFRO1FBQ3RCLElBQUssUUFBUSxDQUFDLElBQW9CLENBQUMsUUFBUSxFQUFFO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBQyxJQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsZUFBZTtRQUN2QywwQ0FBMEM7UUFDMUMsT0FBTyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBd0VLLFFBQVEsQ0FDWixXQUVxQyxFQUNyQyxPQUEyQjs7WUFFM0IsSUFBSSxXQUFXLFlBQVksS0FBSyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7O1lBOU5BLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckZvQixNQUFNO1lBQ2xCLE1BQU07WUFRTixlQUFlO1lBVUcscUJBQXFCOztBQW1FbkMsZ0JBQWdCO0lBTjVCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxnQkFBZ0IsQ0EyTjVCO1NBM05ZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQge1xuICBRdWVyeU9wdGlvbnMsXG4gIE11dGF0aW9uT3B0aW9ucyxcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxuICBGZXRjaFBvbGljeSxcbn0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBNdXRhdGlvbkJhc2VPcHRpb25zIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZS93YXRjaFF1ZXJ5T3B0aW9ucyc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7XG4gIGhhbmRsZUFwb2xsb0Vycm9yLFxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxuICBMclVuc3VwcG9ydGVkRXhjZXB0aW9uLFxufSBmcm9tICcuLi8uLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgRmV0Y2hLZXlHcmFwaEZpZWxkLCBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSwgZ2V0UXVlcnksIGdldE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9hc3QnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBQcm9jZXNzb3JPcHRpb25zLCBRdWVyeVByb2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS1wcm9jZXNzb3InO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi8uLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgRmllbGROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5pbXBvcnQgKiBhcyBncWxQcmludGVyIGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlcic7XG5pbXBvcnQgeyBMck1lcmdlZE11dGF0aW9uIH0gZnJvbSAnLi9sci1tZXJnZWQtbXV0YXRpb24nO1xuXG4vLyBEYXRhIHN0cnVjdHVyZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBrZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxucXVlcnkge1xuICAke0tleUdyYXBoRmllbGR9XG59XG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XG5cbmNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9IGdldFF1ZXJ5KGdxbGBcbnF1ZXJ5IHtcbiAgJHtGZXRjaEtleUdyYXBoRmllbGR9XG59XG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XG5cbi8vIGNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9rZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uKSBhcyBGaWVsZE5vZGU7XG4vLyBjb25zdCBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9mZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBMclF1ZXJ5T3B0aW9uczxULCBUVmFyaWFibGVzPlxuICBleHRlbmRzIFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzPiB7XG4gIHF1ZXJ5OiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XG59XG5cbi8vIENvcGllZCBmcm9tIE11dGF0aW9uT3B0aW9uc1xuLy8gUmVtb3ZlZCByZXF1aXJlZCBmaWVsZCBcIm11dGF0aW9uXCIuIFRoZSBcInZhcmlhYmxlc1wiIGZpZWxkIGlzIHN0aWxsIHRoZXJlXG4vLyBidXQgaXQncyBkeW5hbWljYWxseSBjaGVja2VkLlxuZXhwb3J0IGludGVyZmFjZSBMck11dGF0aW9uT3B0aW9uczxcbiAgVCA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0sXG4gIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXNcbj4gZXh0ZW5kcyBNdXRhdGlvbkJhc2VPcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcbiAgY29udGV4dD86IGFueTtcbiAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbn1cblxuLy8gVGhlIFwibXV0YXRpb25cIiBhbmQgXCJ2YXJpYWJsZVwiIGZpZWxkcyBhcmUgaW5oZXJpdGVkIGJ1dCBkeW5hbWljYWxseSBwcm9oaWJpdGVkIGJlY2F1c2Vcbi8vIHRoZXkgYXJlIHByb3ZpZGVkIGJ5IExyTXV0YXRpb24uIEl0J3MgYSBiaXQgdW5jbGVhbiBidXQgYXZvaWRzIGEgbG90IG9mIHR5cGluZyB3b3JrLlxuZXhwb3J0IGludGVyZmFjZSBMckFwb2xsb011dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPlxuICBleHRlbmRzIE11dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzPiB7XG4gIG11dGF0aW9uOiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XG59XG5cbmludGVyZmFjZSBMckdyYXBoUUxTZXJ2aWNlU3RhdHMge1xuICBxdWVyeUNvdW50OiBudW1iZXI7XG4gIG11dGF0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExyR3JhcGhRTFNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRzOiBMckdyYXBoUUxTZXJ2aWNlU3RhdHMgPSB7XG4gICAgcXVlcnlDb3VudDogMCxcbiAgICBtdXRhdGlvbkNvdW50OiAwLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVByb2Nlc3NvcjogUXVlcnlQcm9jZXNzb3JTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogTHJRdWVyeU9wdGlvbnM8VCwgVj5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXG4gICAgb3B0aW9ucyA9IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucyk7XG5cbiAgICAvLyBBcHBlbmQgdGhlIGtleSBncmFwaCBxdWVyeVxuICAgIGNvbnN0IGluY2x1ZGVLZXlHcmFwaCA9IHRoaXMuaXNJbmNsdWRlS2V5R3JhcGgob3B0aW9ucy5pbmNsdWRlS2V5R3JhcGgpO1xuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldFF1ZXJ5KG9wdGlvbnMucXVlcnkpO1xuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXG4gICAgICAgIGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICB0aGlzLnN0YXRzLnF1ZXJ5Q291bnQrKztcblxuICAgIGhhbmRsZUFwb2xsb0Vycm9yKHJlc3BvbnNlLmVycm9ycyk7XG5cbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucXVlcnlQcm9jZXNzb3IucHJvY2Vzc1F1ZXJ5KFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIG9wdGlvbnMucHJvY2Vzc29yT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbHJNdXRhdGVJbXBsKGxyTXV0YXRpb24sIG9wdGlvbnM/KSB7XG4gICAgaWYgKG9wdGlvbnM/LnZhcmlhYmxlcykge1xuICAgICAgdGhyb3cgbmV3IExyVW5zdXBwb3J0ZWRFeGNlcHRpb24oXG4gICAgICAgICdVbnN1cHBvcnRlZCBmaWVsZDogXCJvcHRpb25zLnZhcmlhYmxlc1wiJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobHJNdXRhdGlvbi5leGVjdXRlZCkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdMck11dGF0aW9uIGhhcyBhbHJlYWR5IGV4ZWN1dGVkLiBMck11dGF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBpbiBhIGxyTXV0YXRlKCkgY2FsbC4gQ3JlYXRlIG5ldyBpbnN0YW5jZXMgb2YgTHJNdXRhdGlvbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGxyTXV0YXRpb24uc2V0RXhlY3V0ZWQoKTtcblxuICAgIHJldHVybiB0aGlzLmFwb2xsb011dGF0ZSh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4ubHJNdXRhdGlvbi5sck11dGF0aW9uRGF0YSxcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlIHByb21pc2VzIHNldCBvbiB0aGUgbHJNdXRhdGlvbiByYXRoZXIgdGhhbiB0aGUgbHJNdXRhdGUoKSBjYWxsLlxuICAgICAgICBsck11dGF0aW9uLnJlc29sdmUocmVzKTtcbiAgICAgICAgLy8gU3RpbGwgbmVlZCB0byByZXR1cm4gdmFsdWUgdG8gdGhlIHByb21pc2Ugd2FpdGluZyBmb3IgdGhlIHJlc3VsdHMgb2YgbHJNdXRhdGUoKS5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGxyTXV0YXRpb24ucmVqZWN0KGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGFwb2xsb011dGF0ZTxUIGV4dGVuZHMgYW55LCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogTHJBcG9sbG9NdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcz5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtdXRhdGlvbjogbG9kYXNoLmNsb25lRGVlcChvcHRpb25zLm11dGF0aW9uKSxcbiAgICB9O1xuXG4gICAgLy8gQXBwZW5kIHRoZSBrZXkgZ3JhcGggcXVlcnlcbiAgICBjb25zdCBpbmNsdWRlS2V5R3JhcGggPSB0aGlzLmlzSW5jbHVkZUtleUdyYXBoKG9wdGlvbnMuaW5jbHVkZUtleUdyYXBoKTtcblxuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE11dGF0aW9uKG9wdGlvbnMubXV0YXRpb24pO1xuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXG4gICAgICAgIGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IHRvIHN0cmluZyBhbmQgcGFyc2UgYWdhaW4uIFRoaXMgYWxsb3dzIHRoZSBcImxvY1wiOiB7IFwic3RhcnRcIjogLi4uIH1cbiAgICAvLyBwYXJ0IG9mIHRoZSBEb2N1bWVudE5vZGUgdG8gYmUgY29ycmVjdGx5IHNldHVwLiBJdCdzIGV4dHJhIHByb2Nlc3NpbmdcbiAgICAvLyBpbiBzZXJpYWxpc2luZyBhbmQgcGFyc2luZywgYnV0IHByb2JhYmx5IG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgb3B0aW9ucy5tdXRhdGlvbiA9IGdxbChncWxQcmludGVyLnByaW50KG9wdGlvbnMubXV0YXRpb24pKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ubXV0YXRlPFQ+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5tdXRhdGlvbkNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBzdGF0c1NuYXBzaG90KCk6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gICAgcmV0dXJuIGxvZGFzaC5jbG9uZURlZXAodGhpcy5zdGF0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICAgIGRlbGV0ZSByZXNwb25zZS5kYXRhLmtleUdyYXBoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbmNsdWRlS2V5R3JhcGgoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgLy8gRGVmYXVsdCB0byB0cnVlIHdoZW4gbnVsbCBvciB1bmRlZmluZWQuXG4gICAgcmV0dXJuIGluY2x1ZGVLZXlHcmFwaCA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+XG4gICAgXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczIsIFQzLCBUVmFyaWFibGVzMz4oXG4gICAgbHJNdXRhdGlvbnM6IFtcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDNdPjtcblxuICBhc3luYyBsck11dGF0ZTxcbiAgICBUMSxcbiAgICBUVmFyaWFibGVzMSxcbiAgICBUMixcbiAgICBUVmFyaWFibGVzMixcbiAgICBUMyxcbiAgICBUVmFyaWFibGVzMyxcbiAgICBUNCxcbiAgICBUVmFyaWFibGVzNFxuICA+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8XG4gICAgVDEsXG4gICAgVFZhcmlhYmxlczEsXG4gICAgVDIsXG4gICAgVFZhcmlhYmxlczIsXG4gICAgVDMsXG4gICAgVFZhcmlhYmxlczMsXG4gICAgVDQsXG4gICAgVFZhcmlhYmxlczQsXG4gICAgVDUsXG4gICAgVFZhcmlhYmxlczVcbiAgPihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDUsIFRWYXJpYWJsZXM1PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBsck11dGF0aW9uOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOlxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk7XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOlxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICkge1xuICAgIGlmIChsck11dGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBtZXJnZWQgPSBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChsck11dGF0aW9ucykpO1xuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwobWVyZ2VkLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBtZXJnZWQucHJvbWlzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBsck11dGF0aW9ucztcbiAgICAgIGF3YWl0IHRoaXMubHJNdXRhdGVJbXBsKHJlc29sdmVkLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiByZXNvbHZlZC5wcm9taXNlO1xuICAgIH1cbiAgfVxufVxuXG50eXBlIExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPiA9XG4gIHwgTHJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcz5cbiAgfCBQcm9taXNlPExyTXV0YXRpb25CYXNlPFQsIFRWYXJpYWJsZXM+PlxuICB8IExyTWVyZ2VkTXV0YXRpb248VD5cbiAgfCBQcm9taXNlPExyTWVyZ2VkTXV0YXRpb248VD4+O1xuIl19
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import * as lodash from 'lodash';
|
|
3
|
+
import { Injectable, NgZone } from '@angular/core';
|
|
4
|
+
import { Apollo } from 'apollo-angular';
|
|
5
|
+
import { KeyGraphService } from '../../cryptography/key-graph.service';
|
|
6
|
+
import { handleApolloError, LrBadStateException, LrUnsupportedException, } from '../../_common/exceptions';
|
|
7
|
+
import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
|
|
8
|
+
import { getQuery, getMutation } from '../../_common/ast';
|
|
9
|
+
import gql from 'graphql-tag';
|
|
10
|
+
import { QueryProcessorService } from '../query-processor';
|
|
11
|
+
import { RunOutsideAngular } from '../../_common/run-outside-angular';
|
|
12
|
+
import * as gqlPrinter from 'graphql/language/printer';
|
|
13
|
+
import { LrMergedMutation } from './lr-merged-mutation';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "apollo-angular";
|
|
16
|
+
import * as i2 from "../../cryptography/key-graph.service";
|
|
17
|
+
import * as i3 from "../query-processor/query-processor.service";
|
|
18
|
+
// Data structures
|
|
19
|
+
// --------------------------------------------------------------------------
|
|
20
|
+
const keyGraphFieldAstSelection = getQuery(gql `
|
|
21
|
+
query {
|
|
22
|
+
${KeyGraphField}
|
|
23
|
+
}
|
|
24
|
+
`).selectionSet.selections[0];
|
|
25
|
+
const fetchKeyGraphFieldAstSelection = getQuery(gql `
|
|
26
|
+
query {
|
|
27
|
+
${FetchKeyGraphField}
|
|
28
|
+
}
|
|
29
|
+
`).selectionSet.selections[0];
|
|
30
|
+
let LrGraphQLService = class LrGraphQLService {
|
|
31
|
+
constructor(ngZone, apollo, keyGraph, queryProcessor) {
|
|
32
|
+
this.ngZone = ngZone;
|
|
33
|
+
this.apollo = apollo;
|
|
34
|
+
this.keyGraph = keyGraph;
|
|
35
|
+
this.queryProcessor = queryProcessor;
|
|
36
|
+
this.stats = {
|
|
37
|
+
queryCount: 0,
|
|
38
|
+
mutationCount: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
query(options) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
// Make copies to avoid side effect.
|
|
44
|
+
options = lodash.cloneDeep(options);
|
|
45
|
+
// Append the key graph query
|
|
46
|
+
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
47
|
+
if (includeKeyGraph) {
|
|
48
|
+
const operation = getQuery(options.query);
|
|
49
|
+
operation.selectionSet.selections = [
|
|
50
|
+
...operation.selectionSet.selections,
|
|
51
|
+
keyGraphFieldAstSelection,
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
const response = yield this.apollo.query(options).toPromise();
|
|
55
|
+
this.stats.queryCount++;
|
|
56
|
+
handleApolloError(response.errors);
|
|
57
|
+
this.addKeys(response);
|
|
58
|
+
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
59
|
+
return data;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
lrMutateImpl(lrMutation, options) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
if (options === null || options === void 0 ? void 0 : options.variables) {
|
|
65
|
+
throw new LrUnsupportedException('Unsupported field: "options.variables"');
|
|
66
|
+
}
|
|
67
|
+
if (lrMutation.executed) {
|
|
68
|
+
throw new LrBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
|
|
69
|
+
}
|
|
70
|
+
lrMutation.setExecuted();
|
|
71
|
+
return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
|
|
72
|
+
.then((res) => {
|
|
73
|
+
// Resolve promises set on the lrMutation rather than the lrMutate() call.
|
|
74
|
+
lrMutation.resolve(res);
|
|
75
|
+
// Still need to return value to the promise waiting for the results of lrMutate().
|
|
76
|
+
return res;
|
|
77
|
+
})
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
lrMutation.reject(error);
|
|
80
|
+
throw error;
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
apolloMutate(options) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
// Make copies to avoid side effect.
|
|
87
|
+
options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
|
|
88
|
+
// Append the key graph query
|
|
89
|
+
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
90
|
+
if (includeKeyGraph) {
|
|
91
|
+
const operation = getMutation(options.mutation);
|
|
92
|
+
operation.selectionSet.selections = [
|
|
93
|
+
...operation.selectionSet.selections,
|
|
94
|
+
fetchKeyGraphFieldAstSelection,
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
// Format to string and parse again. This allows the "loc": { "start": ... }
|
|
98
|
+
// part of the DocumentNode to be correctly setup. It's extra processing
|
|
99
|
+
// in serialising and parsing, but probably minimal overhead.
|
|
100
|
+
options.mutation = gql(gqlPrinter.print(options.mutation));
|
|
101
|
+
const response = yield this.apollo.mutate(options).toPromise();
|
|
102
|
+
this.stats.mutationCount++;
|
|
103
|
+
handleApolloError(response.errors);
|
|
104
|
+
this.addKeys(response);
|
|
105
|
+
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
106
|
+
return data;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
statsSnapshot() {
|
|
110
|
+
return lodash.cloneDeep(this.stats);
|
|
111
|
+
}
|
|
112
|
+
addKeys(response) {
|
|
113
|
+
if (response.data.keyGraph) {
|
|
114
|
+
this.keyGraph.addKeys(response.data.keyGraph);
|
|
115
|
+
delete response.data.keyGraph;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
isIncludeKeyGraph(includeKeyGraph) {
|
|
119
|
+
// Default to true when null or undefined.
|
|
120
|
+
return includeKeyGraph == null ? true : false;
|
|
121
|
+
}
|
|
122
|
+
lrMutate(lrMutations, options) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
if (lrMutations instanceof Array) {
|
|
125
|
+
const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
|
|
126
|
+
yield this.lrMutateImpl(merged, options);
|
|
127
|
+
return merged.promise;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const resolved = yield lrMutations;
|
|
131
|
+
yield this.lrMutateImpl(resolved, options);
|
|
132
|
+
return resolved.promise;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
|
|
138
|
+
LrGraphQLService.decorators = [
|
|
139
|
+
{ type: Injectable, args: [{
|
|
140
|
+
providedIn: 'root',
|
|
141
|
+
},] }
|
|
142
|
+
];
|
|
143
|
+
LrGraphQLService.ctorParameters = () => [
|
|
144
|
+
{ type: NgZone },
|
|
145
|
+
{ type: Apollo },
|
|
146
|
+
{ type: KeyGraphService },
|
|
147
|
+
{ type: QueryProcessorService }
|
|
148
|
+
];
|
|
149
|
+
LrGraphQLService = __decorate([
|
|
150
|
+
RunOutsideAngular({
|
|
151
|
+
ngZoneName: 'ngZone',
|
|
152
|
+
})
|
|
153
|
+
], LrGraphQLService);
|
|
154
|
+
export { LrGraphQLService };
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL2tjLWNsaWVudC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbHItZ3JhcGhxbC9sci1ncmFwaHFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVF4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsc0JBQXNCLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBcUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHdEUsT0FBTyxLQUFLLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFFeEQsa0JBQWtCO0FBQ2xCLDZFQUE2RTtBQUM3RSxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7O0lBRTFDLGFBQWE7O0NBRWhCLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBYyxDQUFDO0FBRTNDLE1BQU0sOEJBQThCLEdBQUcsUUFB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QUFDO1lBQy9ELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsZUFBZTtRQUN2QywwQ0FBMEM7UUFDMUMsT0FBTyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBd0VLLFFBQVEsQ0FDWixXQUVxQyxFQUNyQyxPQUEyQjs7WUFFM0IsSUFBSSxXQUFXLFlBQVksS0FBSyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7O1lBOU5BLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckZvQixNQUFNO1lBQ2xCLE1BQU07WUFRTixlQUFlO1lBVUcscUJBQXFCOztBQW1FbkMsZ0JBQWdCO0lBTjVCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxnQkFBZ0IsQ0EyTjVCO1NBM05ZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBvbGxvIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5pbXBvcnQge1xyXG4gIFF1ZXJ5T3B0aW9ucyxcclxuICBNdXRhdGlvbk9wdGlvbnMsXHJcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxyXG4gIEZldGNoUG9saWN5LFxyXG59IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xyXG5pbXBvcnQgeyBNdXRhdGlvbkJhc2VPcHRpb25zIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZS93YXRjaFF1ZXJ5T3B0aW9ucyc7XHJcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uLy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XHJcbmltcG9ydCB7IEhhc0tleUdyYXBoIH0gZnJvbSAnLi4vLi4vY3J5cHRvZ3JhcGh5L2NyeXB0b2dyYXBoeS50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgaGFuZGxlQXBvbGxvRXJyb3IsXHJcbiAgTHJCYWRTdGF0ZUV4Y2VwdGlvbixcclxuICBMclVuc3VwcG9ydGVkRXhjZXB0aW9uLFxyXG59IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XHJcbmltcG9ydCB7IEZldGNoS2V5R3JhcGhGaWVsZCwgS2V5R3JhcGhGaWVsZCB9IGZyb20gJy4uLy4uL19jb21tb24vcXVlcmllcy5ncWwnO1xyXG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSwgZ2V0UXVlcnksIGdldE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9hc3QnO1xyXG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcclxuaW1wb3J0IHsgUHJvY2Vzc29yT3B0aW9ucywgUXVlcnlQcm9jZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnktcHJvY2Vzc29yJztcclxuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi8uLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBGaWVsZE5vZGUgfSBmcm9tICdncmFwaHFsJztcclxuaW1wb3J0IHsgTHJNdXRhdGlvbkJhc2UgfSBmcm9tICcuL2xyLW11dGF0aW9uLWJhc2UnO1xyXG5pbXBvcnQgKiBhcyBncWxQcmludGVyIGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlcic7XHJcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24gfSBmcm9tICcuL2xyLW1lcmdlZC1tdXRhdGlvbic7XHJcblxyXG4vLyBEYXRhIHN0cnVjdHVyZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuY29uc3Qga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9IGdldFF1ZXJ5KGdxbGBcclxucXVlcnkge1xyXG4gICR7S2V5R3JhcGhGaWVsZH1cclxufVxyXG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XHJcblxyXG5jb25zdCBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSBnZXRRdWVyeShncWxgXHJcbnF1ZXJ5IHtcclxuICAke0ZldGNoS2V5R3JhcGhGaWVsZH1cclxufVxyXG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XHJcblxyXG4vLyBjb25zdCBrZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gKCkgPT5cclxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9rZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uKSBhcyBGaWVsZE5vZGU7XHJcbi8vIGNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XHJcbi8vICAgbG9kYXNoLmRlZXBDbG9uZShfZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uKSBhcyBGaWVsZE5vZGU7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExyUXVlcnlPcHRpb25zPFQsIFRWYXJpYWJsZXM+XHJcbiAgZXh0ZW5kcyBRdWVyeU9wdGlvbnM8VFZhcmlhYmxlcz4ge1xyXG4gIHF1ZXJ5OiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcclxuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xyXG4gIHByb2Nlc3Nvck9wdGlvbnM/OiBQcm9jZXNzb3JPcHRpb25zO1xyXG59XHJcblxyXG4vLyBDb3BpZWQgZnJvbSBNdXRhdGlvbk9wdGlvbnNcclxuLy8gUmVtb3ZlZCByZXF1aXJlZCBmaWVsZCBcIm11dGF0aW9uXCIuIFRoZSBcInZhcmlhYmxlc1wiIGZpZWxkIGlzIHN0aWxsIHRoZXJlXHJcbi8vIGJ1dCBpdCdzIGR5bmFtaWNhbGx5IGNoZWNrZWQuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTHJNdXRhdGlvbk9wdGlvbnM8XHJcbiAgVCA9IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxuICB9LFxyXG4gIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXNcclxuPiBleHRlbmRzIE11dGF0aW9uQmFzZU9wdGlvbnM8VCwgVFZhcmlhYmxlcz4ge1xyXG4gIGNvbnRleHQ/OiBhbnk7XHJcbiAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTtcclxuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBUaGUgXCJtdXRhdGlvblwiIGFuZCBcInZhcmlhYmxlXCIgZmllbGRzIGFyZSBpbmhlcml0ZWQgYnV0IGR5bmFtaWNhbGx5IHByb2hpYml0ZWQgYmVjYXVzZVxyXG4vLyB0aGV5IGFyZSBwcm92aWRlZCBieSBMck11dGF0aW9uLiBJdCdzIGEgYml0IHVuY2xlYW4gYnV0IGF2b2lkcyBhIGxvdCBvZiB0eXBpbmcgd29yay5cclxuZXhwb3J0IGludGVyZmFjZSBMckFwb2xsb011dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPlxyXG4gIGV4dGVuZHMgTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcclxuICBtdXRhdGlvbjogVHlwZWREb2N1bWVudE5vZGU8VD47XHJcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcclxuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcclxufVxyXG5cclxuaW50ZXJmYWNlIExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XHJcbiAgcXVlcnlDb3VudDogbnVtYmVyO1xyXG4gIG11dGF0aW9uQ291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcclxuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcclxufSlcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExyR3JhcGhRTFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RhdHM6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyA9IHtcclxuICAgIHF1ZXJ5Q291bnQ6IDAsXHJcbiAgICBtdXRhdGlvbkNvdW50OiAwLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgYXBvbGxvOiBBcG9sbG8sXHJcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHF1ZXJ5UHJvY2Vzc29yOiBRdWVyeVByb2Nlc3NvclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIHF1ZXJ5PFQsIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIG9wdGlvbnM6IExyUXVlcnlPcHRpb25zPFQsIFY+XHJcbiAgKTogUHJvbWlzZTxUPiB7XHJcbiAgICAvLyBNYWtlIGNvcGllcyB0byBhdm9pZCBzaWRlIGVmZmVjdC5cclxuICAgIG9wdGlvbnMgPSBsb2Rhc2guY2xvbmVEZWVwKG9wdGlvbnMpO1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XHJcbiAgICBjb25zdCBpbmNsdWRlS2V5R3JhcGggPSB0aGlzLmlzSW5jbHVkZUtleUdyYXBoKG9wdGlvbnMuaW5jbHVkZUtleUdyYXBoKTtcclxuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcclxuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0UXVlcnkob3B0aW9ucy5xdWVyeSk7XHJcbiAgICAgIG9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyA9IFtcclxuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXHJcbiAgICAgICAga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBvbGxvLnF1ZXJ5PFQsIFY+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIHRoaXMuc3RhdHMucXVlcnlDb3VudCsrO1xyXG5cclxuICAgIGhhbmRsZUFwb2xsb0Vycm9yKHJlc3BvbnNlLmVycm9ycyk7XHJcblxyXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5xdWVyeVByb2Nlc3Nvci5wcm9jZXNzUXVlcnkoXHJcbiAgICAgIHJlc3BvbnNlLmRhdGEsXHJcbiAgICAgIG9wdGlvbnMucHJvY2Vzc29yT3B0aW9uc1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbHJNdXRhdGVJbXBsKGxyTXV0YXRpb24sIG9wdGlvbnM/KSB7XHJcbiAgICBpZiAob3B0aW9ucz8udmFyaWFibGVzKSB7XHJcbiAgICAgIHRocm93IG5ldyBMclVuc3VwcG9ydGVkRXhjZXB0aW9uKFxyXG4gICAgICAgICdVbnN1cHBvcnRlZCBmaWVsZDogXCJvcHRpb25zLnZhcmlhYmxlc1wiJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsck11dGF0aW9uLmV4ZWN1dGVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKFxyXG4gICAgICAgICdMck11dGF0aW9uIGhhcyBhbHJlYWR5IGV4ZWN1dGVkLiBMck11dGF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBpbiBhIGxyTXV0YXRlKCkgY2FsbC4gQ3JlYXRlIG5ldyBpbnN0YW5jZXMgb2YgTHJNdXRhdGlvbi4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbHJNdXRhdGlvbi5zZXRFeGVjdXRlZCgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmFwb2xsb011dGF0ZSh7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIC4uLmxyTXV0YXRpb24ubHJNdXRhdGlvbkRhdGEsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgLy8gUmVzb2x2ZSBwcm9taXNlcyBzZXQgb24gdGhlIGxyTXV0YXRpb24gcmF0aGVyIHRoYW4gdGhlIGxyTXV0YXRlKCkgY2FsbC5cclxuICAgICAgICBsck11dGF0aW9uLnJlc29sdmUocmVzKTtcclxuICAgICAgICAvLyBTdGlsbCBuZWVkIHRvIHJldHVybiB2YWx1ZSB0byB0aGUgcHJvbWlzZSB3YWl0aW5nIGZvciB0aGUgcmVzdWx0cyBvZiBsck11dGF0ZSgpLlxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICBsck11dGF0aW9uLnJlamVjdChlcnJvcik7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXBvbGxvTXV0YXRlPFQgZXh0ZW5kcyBhbnksIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIG9wdGlvbnM6IExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XHJcbiAgKTogUHJvbWlzZTxUPiB7XHJcbiAgICAvLyBNYWtlIGNvcGllcyB0byBhdm9pZCBzaWRlIGVmZmVjdC5cclxuICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIG11dGF0aW9uOiBsb2Rhc2guY2xvbmVEZWVwKG9wdGlvbnMubXV0YXRpb24pLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBcHBlbmQgdGhlIGtleSBncmFwaCBxdWVyeVxyXG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XHJcblxyXG4gICAgaWYgKGluY2x1ZGVLZXlHcmFwaCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRNdXRhdGlvbihvcHRpb25zLm11dGF0aW9uKTtcclxuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xyXG4gICAgICAgIC4uLm9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcclxuICAgICAgICBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRm9ybWF0IHRvIHN0cmluZyBhbmQgcGFyc2UgYWdhaW4uIFRoaXMgYWxsb3dzIHRoZSBcImxvY1wiOiB7IFwic3RhcnRcIjogLi4uIH1cclxuICAgIC8vIHBhcnQgb2YgdGhlIERvY3VtZW50Tm9kZSB0byBiZSBjb3JyZWN0bHkgc2V0dXAuIEl0J3MgZXh0cmEgcHJvY2Vzc2luZ1xyXG4gICAgLy8gaW4gc2VyaWFsaXNpbmcgYW5kIHBhcnNpbmcsIGJ1dCBwcm9iYWJseSBtaW5pbWFsIG92ZXJoZWFkLlxyXG4gICAgb3B0aW9ucy5tdXRhdGlvbiA9IGdxbChncWxQcmludGVyLnByaW50KG9wdGlvbnMubXV0YXRpb24pKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBvbGxvLm11dGF0ZTxUPihvcHRpb25zKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICB0aGlzLnN0YXRzLm11dGF0aW9uQ291bnQrKztcclxuXHJcbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xyXG5cclxuICAgIHRoaXMuYWRkS2V5cyhyZXNwb25zZSk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucXVlcnlQcm9jZXNzb3IucHJvY2Vzc1F1ZXJ5KFxyXG4gICAgICByZXNwb25zZS5kYXRhLFxyXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBzdGF0c1NuYXBzaG90KCk6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XHJcbiAgICByZXR1cm4gbG9kYXNoLmNsb25lRGVlcCh0aGlzLnN0YXRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkS2V5cyhyZXNwb25zZSkge1xyXG4gICAgaWYgKChyZXNwb25zZS5kYXRhIGFzIEhhc0tleUdyYXBoKS5rZXlHcmFwaCkge1xyXG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcclxuICAgICAgZGVsZXRlIHJlc3BvbnNlLmRhdGEua2V5R3JhcGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW5jbHVkZUtleUdyYXBoKGluY2x1ZGVLZXlHcmFwaCkge1xyXG4gICAgLy8gRGVmYXVsdCB0byB0cnVlIHdoZW4gbnVsbCBvciB1bmRlZmluZWQuXHJcbiAgICByZXR1cm4gaW5jbHVkZUtleUdyYXBoID09IG51bGwgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsck11dGF0ZTxUMSwgVFZhcmlhYmxlczEsIFQyLCBUVmFyaWFibGVzMj4oXHJcbiAgICBsck11dGF0aW9uczogW1xyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj5cclxuICAgIF0sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApOiBQcm9taXNlPFtUMSwgVDJdPjtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczIsIFQzLCBUVmFyaWFibGVzMz4oXHJcbiAgICBsck11dGF0aW9uczogW1xyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+XHJcbiAgICBdLFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKTogUHJvbWlzZTxbVDEsIFQyLCBUM10+O1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxcclxuICAgIFQxLFxyXG4gICAgVFZhcmlhYmxlczEsXHJcbiAgICBUMixcclxuICAgIFRWYXJpYWJsZXMyLFxyXG4gICAgVDMsXHJcbiAgICBUVmFyaWFibGVzMyxcclxuICAgIFQ0LFxyXG4gICAgVFZhcmlhYmxlczRcclxuICA+KFxyXG4gICAgbHJNdXRhdGlvbnM6IFtcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND5cclxuICAgIF0sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApOiBQcm9taXNlPFtUMSwgVDIsIFQzLCBUNF0+O1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxcclxuICAgIFQxLFxyXG4gICAgVFZhcmlhYmxlczEsXHJcbiAgICBUMixcclxuICAgIFRWYXJpYWJsZXMyLFxyXG4gICAgVDMsXHJcbiAgICBUVmFyaWFibGVzMyxcclxuICAgIFQ0LFxyXG4gICAgVFZhcmlhYmxlczQsXHJcbiAgICBUNSxcclxuICAgIFRWYXJpYWJsZXM1XHJcbiAgPihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUNCwgVFZhcmlhYmxlczQ+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDUsIFRWYXJpYWJsZXM1PlxyXG4gICAgXSxcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxULCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBsck11dGF0aW9uOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcz5cclxuICApOiBQcm9taXNlPFQ+O1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxULCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBsck11dGF0aW9uczpcclxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxyXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPixcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICk7XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIGxyTXV0YXRpb25zOlxyXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPltdXHJcbiAgICAgIHwgTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+LFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAobHJNdXRhdGlvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBjb25zdCBtZXJnZWQgPSBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChsck11dGF0aW9ucykpO1xyXG4gICAgICBhd2FpdCB0aGlzLmxyTXV0YXRlSW1wbChtZXJnZWQsIG9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gbWVyZ2VkLnByb21pc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGxyTXV0YXRpb25zO1xyXG4gICAgICBhd2FpdCB0aGlzLmxyTXV0YXRlSW1wbChyZXNvbHZlZCwgb3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiByZXNvbHZlZC5wcm9taXNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxudHlwZSBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4gPVxyXG4gIHwgTHJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcz5cclxuICB8IFByb21pc2U8THJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcz4+XHJcbiAgfCBMck1lcmdlZE11dGF0aW9uPFQ+XHJcbiAgfCBQcm9taXNlPExyTWVyZ2VkTXV0YXRpb248VD4+O1xyXG4iXX0=
|