@aneoconsultingfr/armonik.api.angular 3.9.0-edge.60.de40d5c → 3.9.0-edge.91.f4e5283
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/esm2022/lib/generated/applications-common.pb.mjs +137 -21
- package/esm2022/lib/generated/applications-service.pb.mjs +1 -1
- package/esm2022/lib/generated/applications-service.pbsc.mjs +10 -10
- package/esm2022/lib/generated/partitions-common.pb.mjs +139 -24
- package/esm2022/lib/generated/partitions-service.pb.mjs +1 -1
- package/esm2022/lib/generated/partitions-service.pbsc.mjs +10 -10
- package/esm2022/lib/generated/results-common.pb.mjs +139 -47
- package/esm2022/lib/generated/results-service.pb.mjs +1 -1
- package/esm2022/lib/generated/results-service.pbsc.mjs +39 -39
- package/esm2022/lib/generated/sessions-common.pb.mjs +140 -22
- package/esm2022/lib/generated/sessions-service.pb.mjs +1 -1
- package/esm2022/lib/generated/sessions-service.pbsc.mjs +18 -18
- package/esm2022/lib/generated/sort-direction.pb.mjs +13 -0
- package/esm2022/lib/generated/tasks-common.pb.mjs +317 -24
- package/esm2022/lib/generated/tasks-service.pb.mjs +1 -1
- package/esm2022/lib/generated/tasks-service.pbsc.mjs +30 -30
- package/esm2022/lib/index.mjs +5 -4
- package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs +981 -245
- package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs.map +1 -1
- package/lib/generated/applications-common.pb.d.ts +91 -20
- package/lib/generated/applications-service.pbsc.d.ts +9 -9
- package/lib/generated/partitions-common.pb.d.ts +93 -22
- package/lib/generated/partitions-service.pbsc.d.ts +9 -9
- package/lib/generated/results-common.pb.d.ts +94 -27
- package/lib/generated/results-service.pbsc.d.ts +38 -38
- package/lib/generated/sessions-common.pb.d.ts +94 -20
- package/lib/generated/sessions-service.pbsc.d.ts +17 -17
- package/lib/generated/sort-direction.pb.d.ts +5 -0
- package/lib/generated/tasks-common.pb.d.ts +196 -22
- package/lib/generated/tasks-service.pbsc.d.ts +29 -29
- package/lib/index.d.ts +4 -3
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1zZXJ2aWNlLnBiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5lb2NvbnN1bHRpbmdmci9hcm1vbmlrLmFwaS5hbmd1bGFyL3NyYy9saWIvZ2VuZXJhdGVkL3Jlc3VsdHMtc2VydmljZS5wYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDAgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVRhc2tfc3RhdHVzMDAxIGZyb20gJy4vdGFzay1zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDIgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdF9zdGF0dXMwMDMgZnJvbSAnLi9yZXN1bHQtc3RhdHVzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFTb3J0X2RpcmVjdGlvbjAwNCBmcm9tICcuL3NvcnQtZGlyZWN0aW9uLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjEwMDUgZnJvbSAnLi9vYmplY3RzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2IGZyb20gJy4vcmVzdWx0cy1jb21tb24ucGInO1xuIl19
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
8
8
|
import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
|
|
9
9
|
import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
|
|
10
|
-
import * as
|
|
11
|
-
import * as
|
|
10
|
+
import * as armonikApiGrpcV1005 from './objects.pb';
|
|
11
|
+
import * as armonikApiGrpcV1Results006 from './results-common.pb';
|
|
12
12
|
import { GRPC_RESULTS_CLIENT_SETTINGS } from './results-service.pbconf';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@ngx-grpc/core";
|
|
@@ -29,7 +29,7 @@ class ResultsClient {
|
|
|
29
29
|
*
|
|
30
30
|
* @param requestMessage Request message
|
|
31
31
|
* @param requestMetadata Request metadata
|
|
32
|
-
* @returns Observable<GrpcEvent<
|
|
32
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.ListResultsResponse>>
|
|
33
33
|
*/
|
|
34
34
|
listResults: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
35
35
|
return this.handler.handle({
|
|
@@ -38,8 +38,8 @@ class ResultsClient {
|
|
|
38
38
|
path: '/armonik.api.grpc.v1.results.Results/ListResults',
|
|
39
39
|
requestData,
|
|
40
40
|
requestMetadata,
|
|
41
|
-
requestClass:
|
|
42
|
-
responseClass:
|
|
41
|
+
requestClass: armonikApiGrpcV1Results006.ListResultsRequest,
|
|
42
|
+
responseClass: armonikApiGrpcV1Results006.ListResultsResponse
|
|
43
43
|
});
|
|
44
44
|
},
|
|
45
45
|
/**
|
|
@@ -47,7 +47,7 @@ class ResultsClient {
|
|
|
47
47
|
*
|
|
48
48
|
* @param requestMessage Request message
|
|
49
49
|
* @param requestMetadata Request metadata
|
|
50
|
-
* @returns Observable<GrpcEvent<
|
|
50
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.GetResultResponse>>
|
|
51
51
|
*/
|
|
52
52
|
getResult: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
53
53
|
return this.handler.handle({
|
|
@@ -56,8 +56,8 @@ class ResultsClient {
|
|
|
56
56
|
path: '/armonik.api.grpc.v1.results.Results/GetResult',
|
|
57
57
|
requestData,
|
|
58
58
|
requestMetadata,
|
|
59
|
-
requestClass:
|
|
60
|
-
responseClass:
|
|
59
|
+
requestClass: armonikApiGrpcV1Results006.GetResultRequest,
|
|
60
|
+
responseClass: armonikApiGrpcV1Results006.GetResultResponse
|
|
61
61
|
});
|
|
62
62
|
},
|
|
63
63
|
/**
|
|
@@ -65,7 +65,7 @@ class ResultsClient {
|
|
|
65
65
|
*
|
|
66
66
|
* @param requestMessage Request message
|
|
67
67
|
* @param requestMetadata Request metadata
|
|
68
|
-
* @returns Observable<GrpcEvent<
|
|
68
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.GetOwnerTaskIdResponse>>
|
|
69
69
|
*/
|
|
70
70
|
getOwnerTaskId: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
71
71
|
return this.handler.handle({
|
|
@@ -74,8 +74,8 @@ class ResultsClient {
|
|
|
74
74
|
path: '/armonik.api.grpc.v1.results.Results/GetOwnerTaskId',
|
|
75
75
|
requestData,
|
|
76
76
|
requestMetadata,
|
|
77
|
-
requestClass:
|
|
78
|
-
responseClass:
|
|
77
|
+
requestClass: armonikApiGrpcV1Results006.GetOwnerTaskIdRequest,
|
|
78
|
+
responseClass: armonikApiGrpcV1Results006.GetOwnerTaskIdResponse
|
|
79
79
|
});
|
|
80
80
|
},
|
|
81
81
|
/**
|
|
@@ -83,7 +83,7 @@ class ResultsClient {
|
|
|
83
83
|
*
|
|
84
84
|
* @param requestMessage Request message
|
|
85
85
|
* @param requestMetadata Request metadata
|
|
86
|
-
* @returns Observable<GrpcEvent<
|
|
86
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.CreateResultsMetaDataResponse>>
|
|
87
87
|
*/
|
|
88
88
|
createResultsMetaData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
89
89
|
return this.handler.handle({
|
|
@@ -92,8 +92,8 @@ class ResultsClient {
|
|
|
92
92
|
path: '/armonik.api.grpc.v1.results.Results/CreateResultsMetaData',
|
|
93
93
|
requestData,
|
|
94
94
|
requestMetadata,
|
|
95
|
-
requestClass:
|
|
96
|
-
responseClass:
|
|
95
|
+
requestClass: armonikApiGrpcV1Results006.CreateResultsMetaDataRequest,
|
|
96
|
+
responseClass: armonikApiGrpcV1Results006.CreateResultsMetaDataResponse
|
|
97
97
|
});
|
|
98
98
|
},
|
|
99
99
|
/**
|
|
@@ -101,7 +101,7 @@ class ResultsClient {
|
|
|
101
101
|
*
|
|
102
102
|
* @param requestMessage Request message
|
|
103
103
|
* @param requestMetadata Request metadata
|
|
104
|
-
* @returns Observable<GrpcEvent<
|
|
104
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.CreateResultsResponse>>
|
|
105
105
|
*/
|
|
106
106
|
createResults: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
107
107
|
return this.handler.handle({
|
|
@@ -110,8 +110,8 @@ class ResultsClient {
|
|
|
110
110
|
path: '/armonik.api.grpc.v1.results.Results/CreateResults',
|
|
111
111
|
requestData,
|
|
112
112
|
requestMetadata,
|
|
113
|
-
requestClass:
|
|
114
|
-
responseClass:
|
|
113
|
+
requestClass: armonikApiGrpcV1Results006.CreateResultsRequest,
|
|
114
|
+
responseClass: armonikApiGrpcV1Results006.CreateResultsResponse
|
|
115
115
|
});
|
|
116
116
|
},
|
|
117
117
|
/**
|
|
@@ -119,7 +119,7 @@ class ResultsClient {
|
|
|
119
119
|
*
|
|
120
120
|
* @param requestMessage Request message
|
|
121
121
|
* @param requestMetadata Request metadata
|
|
122
|
-
* @returns Observable<GrpcEvent<
|
|
122
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.UploadResultDataResponse>>
|
|
123
123
|
*/
|
|
124
124
|
uploadResultData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
125
125
|
return this.handler.handle({
|
|
@@ -128,8 +128,8 @@ class ResultsClient {
|
|
|
128
128
|
path: '/armonik.api.grpc.v1.results.Results/UploadResultData',
|
|
129
129
|
requestData,
|
|
130
130
|
requestMetadata,
|
|
131
|
-
requestClass:
|
|
132
|
-
responseClass:
|
|
131
|
+
requestClass: armonikApiGrpcV1Results006.UploadResultDataRequest,
|
|
132
|
+
responseClass: armonikApiGrpcV1Results006.UploadResultDataResponse
|
|
133
133
|
});
|
|
134
134
|
},
|
|
135
135
|
/**
|
|
@@ -137,7 +137,7 @@ class ResultsClient {
|
|
|
137
137
|
*
|
|
138
138
|
* @param requestMessage Request message
|
|
139
139
|
* @param requestMetadata Request metadata
|
|
140
|
-
* @returns Observable<GrpcEvent<
|
|
140
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.DownloadResultDataResponse>>
|
|
141
141
|
*/
|
|
142
142
|
downloadResultData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
143
143
|
return this.handler.handle({
|
|
@@ -146,8 +146,8 @@ class ResultsClient {
|
|
|
146
146
|
path: '/armonik.api.grpc.v1.results.Results/DownloadResultData',
|
|
147
147
|
requestData,
|
|
148
148
|
requestMetadata,
|
|
149
|
-
requestClass:
|
|
150
|
-
responseClass:
|
|
149
|
+
requestClass: armonikApiGrpcV1Results006.DownloadResultDataRequest,
|
|
150
|
+
responseClass: armonikApiGrpcV1Results006.DownloadResultDataResponse
|
|
151
151
|
});
|
|
152
152
|
},
|
|
153
153
|
/**
|
|
@@ -155,7 +155,7 @@ class ResultsClient {
|
|
|
155
155
|
*
|
|
156
156
|
* @param requestMessage Request message
|
|
157
157
|
* @param requestMetadata Request metadata
|
|
158
|
-
* @returns Observable<GrpcEvent<
|
|
158
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.DeleteResultsDataResponse>>
|
|
159
159
|
*/
|
|
160
160
|
deleteResultsData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
161
161
|
return this.handler.handle({
|
|
@@ -164,8 +164,8 @@ class ResultsClient {
|
|
|
164
164
|
path: '/armonik.api.grpc.v1.results.Results/DeleteResultsData',
|
|
165
165
|
requestData,
|
|
166
166
|
requestMetadata,
|
|
167
|
-
requestClass:
|
|
168
|
-
responseClass:
|
|
167
|
+
requestClass: armonikApiGrpcV1Results006.DeleteResultsDataRequest,
|
|
168
|
+
responseClass: armonikApiGrpcV1Results006.DeleteResultsDataResponse
|
|
169
169
|
});
|
|
170
170
|
},
|
|
171
171
|
/**
|
|
@@ -173,7 +173,7 @@ class ResultsClient {
|
|
|
173
173
|
*
|
|
174
174
|
* @param requestMessage Request message
|
|
175
175
|
* @param requestMetadata Request metadata
|
|
176
|
-
* @returns Observable<GrpcEvent<
|
|
176
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results006.ResultsServiceConfigurationResponse>>
|
|
177
177
|
*/
|
|
178
178
|
getServiceConfiguration: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
179
179
|
return this.handler.handle({
|
|
@@ -182,8 +182,8 @@ class ResultsClient {
|
|
|
182
182
|
path: '/armonik.api.grpc.v1.results.Results/GetServiceConfiguration',
|
|
183
183
|
requestData,
|
|
184
184
|
requestMetadata,
|
|
185
|
-
requestClass:
|
|
186
|
-
responseClass:
|
|
185
|
+
requestClass: armonikApiGrpcV1005.Empty,
|
|
186
|
+
responseClass: armonikApiGrpcV1Results006.ResultsServiceConfigurationResponse
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
};
|
|
@@ -194,7 +194,7 @@ class ResultsClient {
|
|
|
194
194
|
*
|
|
195
195
|
* @param requestMessage Request message
|
|
196
196
|
* @param requestMetadata Request metadata
|
|
197
|
-
* @returns Observable<
|
|
197
|
+
* @returns Observable<armonikApiGrpcV1Results006.ListResultsResponse>
|
|
198
198
|
*/
|
|
199
199
|
listResults(requestData, requestMetadata = new GrpcMetadata()) {
|
|
200
200
|
return this.$raw
|
|
@@ -206,7 +206,7 @@ class ResultsClient {
|
|
|
206
206
|
*
|
|
207
207
|
* @param requestMessage Request message
|
|
208
208
|
* @param requestMetadata Request metadata
|
|
209
|
-
* @returns Observable<
|
|
209
|
+
* @returns Observable<armonikApiGrpcV1Results006.GetResultResponse>
|
|
210
210
|
*/
|
|
211
211
|
getResult(requestData, requestMetadata = new GrpcMetadata()) {
|
|
212
212
|
return this.$raw
|
|
@@ -218,7 +218,7 @@ class ResultsClient {
|
|
|
218
218
|
*
|
|
219
219
|
* @param requestMessage Request message
|
|
220
220
|
* @param requestMetadata Request metadata
|
|
221
|
-
* @returns Observable<
|
|
221
|
+
* @returns Observable<armonikApiGrpcV1Results006.GetOwnerTaskIdResponse>
|
|
222
222
|
*/
|
|
223
223
|
getOwnerTaskId(requestData, requestMetadata = new GrpcMetadata()) {
|
|
224
224
|
return this.$raw
|
|
@@ -230,7 +230,7 @@ class ResultsClient {
|
|
|
230
230
|
*
|
|
231
231
|
* @param requestMessage Request message
|
|
232
232
|
* @param requestMetadata Request metadata
|
|
233
|
-
* @returns Observable<
|
|
233
|
+
* @returns Observable<armonikApiGrpcV1Results006.CreateResultsMetaDataResponse>
|
|
234
234
|
*/
|
|
235
235
|
createResultsMetaData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
236
236
|
return this.$raw
|
|
@@ -242,7 +242,7 @@ class ResultsClient {
|
|
|
242
242
|
*
|
|
243
243
|
* @param requestMessage Request message
|
|
244
244
|
* @param requestMetadata Request metadata
|
|
245
|
-
* @returns Observable<
|
|
245
|
+
* @returns Observable<armonikApiGrpcV1Results006.CreateResultsResponse>
|
|
246
246
|
*/
|
|
247
247
|
createResults(requestData, requestMetadata = new GrpcMetadata()) {
|
|
248
248
|
return this.$raw
|
|
@@ -254,7 +254,7 @@ class ResultsClient {
|
|
|
254
254
|
*
|
|
255
255
|
* @param requestMessage Request message
|
|
256
256
|
* @param requestMetadata Request metadata
|
|
257
|
-
* @returns Observable<
|
|
257
|
+
* @returns Observable<armonikApiGrpcV1Results006.UploadResultDataResponse>
|
|
258
258
|
*/
|
|
259
259
|
uploadResultData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
260
260
|
return this.$raw
|
|
@@ -266,7 +266,7 @@ class ResultsClient {
|
|
|
266
266
|
*
|
|
267
267
|
* @param requestMessage Request message
|
|
268
268
|
* @param requestMetadata Request metadata
|
|
269
|
-
* @returns Observable<
|
|
269
|
+
* @returns Observable<armonikApiGrpcV1Results006.DownloadResultDataResponse>
|
|
270
270
|
*/
|
|
271
271
|
downloadResultData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
272
272
|
return this.$raw
|
|
@@ -278,7 +278,7 @@ class ResultsClient {
|
|
|
278
278
|
*
|
|
279
279
|
* @param requestMessage Request message
|
|
280
280
|
* @param requestMetadata Request metadata
|
|
281
|
-
* @returns Observable<
|
|
281
|
+
* @returns Observable<armonikApiGrpcV1Results006.DeleteResultsDataResponse>
|
|
282
282
|
*/
|
|
283
283
|
deleteResultsData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
284
284
|
return this.$raw
|
|
@@ -290,7 +290,7 @@ class ResultsClient {
|
|
|
290
290
|
*
|
|
291
291
|
* @param requestMessage Request message
|
|
292
292
|
* @param requestMetadata Request metadata
|
|
293
|
-
* @returns Observable<
|
|
293
|
+
* @returns Observable<armonikApiGrpcV1Results006.ResultsServiceConfigurationResponse>
|
|
294
294
|
*/
|
|
295
295
|
getServiceConfiguration(requestData, requestMetadata = new GrpcMetadata()) {
|
|
296
296
|
return this.$raw
|
|
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
313
313
|
type: Inject,
|
|
314
314
|
args: [GRPC_CLIENT_FACTORY]
|
|
315
315
|
}] }, { type: i1.GrpcHandler }]; } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1zZXJ2aWNlLnBic2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvcmVzdWx0cy1zZXJ2aWNlLnBic2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixjQUFjO0FBQ2QsRUFBRTtBQUNGLDJCQUEyQjtBQUMzQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFDTCxZQUFZLEVBSVosWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEtBQUssMEJBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUN4RTs7R0FFRztBQUNILE1BQ2EsYUFBYTtJQTJOeEIsWUFDb0QsUUFBYSxFQUNsQyxhQUFxQyxFQUMxRCxPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBM045Qjs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHO1lBQ0w7Ozs7OztlQU1HO1lBQ0gsV0FBVyxFQUFFLENBQ1gsV0FBMEQsRUFDMUQsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JB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QUFzQyxFQUN0QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFJcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDckQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQXRYVSxhQUFhLGtCQTRORiw0QkFBNEIsNkJBQ3hDLG1CQUFtQjtrSEE3TmxCLGFBQWEsY0FEQSxLQUFLOztTQUNsQixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkE2TjVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNEJBQTRCOzswQkFDL0MsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHcnBjQ2FsbFR5cGUsXG4gIEdycGNDbGllbnQsXG4gIEdycGNDbGllbnRGYWN0b3J5LFxuICBHcnBjRXZlbnQsXG4gIEdycGNNZXRhZGF0YVxufSBmcm9tICdAbmd4LWdycGMvY29tbW9uJztcbmltcG9ydCB7XG4gIEdSUENfQ0xJRU5UX0ZBQ1RPUlksXG4gIEdycGNIYW5kbGVyLFxuICB0YWtlTWVzc2FnZXMsXG4gIHRocm93U3RhdHVzRXJyb3JzXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHRoaXNQcm90byBmcm9tICcuL3Jlc3VsdHMtc2VydmljZS5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxVGFza19zdGF0dXMwMDEgZnJvbSAnLi90YXNrLXN0YXR1cy5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMiBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0X3N0YXR1czAwMyBmcm9tICcuL3Jlc3VsdC1zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMTAwNCBmcm9tICcuL29iamVjdHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUgZnJvbSAnLi9yZXN1bHRzLWNvbW1vbi5wYic7XG5pbXBvcnQgeyBHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9yZXN1bHRzLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1Lkxpc3RSZXN1bHRzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5MaXN0UmVzdWx0c1Jlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvTGlzdFJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1Lkxpc3RSZXN1bHRzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuTGlzdFJlc3VsdHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0UmVzdWx0UmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGdldFJlc3VsdDogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5HZXRSZXN1bHRSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFJlc3VsdCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0UmVzdWx0UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0UmVzdWx0UmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0T3duZXJUYXNrSWRSZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0T3duZXJUYXNrSWQ6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkdldE93bmVyVGFza0lkUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRPd25lclRhc2tJZCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0T3duZXJUYXNrSWRSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5HZXRPd25lclRhc2tJZFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4+XG4gICAgICovXG4gICAgY3JlYXRlUmVzdWx0c01ldGFEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuQ3JlYXRlUmVzdWx0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuQ3JlYXRlUmVzdWx0c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0NyZWF0ZVJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5DcmVhdGVSZXN1bHRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIHVwbG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPFxuICAgICAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5VcGxvYWRSZXN1bHREYXRhUmVxdWVzdFxuICAgICAgPixcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUuY2xpZW50U3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2VydmVyIHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0Rvd25sb2FkUmVzdWx0RGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBkb3dubG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5Eb3dubG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnNlcnZlclN0cmVhbSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRvd25sb2FkUmVzdWx0RGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9EZWxldGVSZXN1bHRzRGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRlbGV0ZVJlc3VsdHNEYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRlbGV0ZVJlc3VsdHNEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuRGVsZXRlUmVzdWx0c0RhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0U2VydmljZUNvbmZpZ3VyYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0U2VydmljZUNvbmZpZ3VyYXRpb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxMDA0LkVtcHR5LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxMDA0LkVtcHR5LFxuICAgICAgICByZXNwb25zZUNsYXNzOlxuICAgICAgICAgIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LlJlc3VsdHNTZXJ2aWNlQ29uZmlndXJhdGlvblJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMnLFxuICAgICAgc2V0dGluZ3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1Lkxpc3RSZXN1bHRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0UmVzdWx0cyhcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1Lkxpc3RSZXN1bHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFJlc3VsdHMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0UmVzdWx0UmVzcG9uc2U+XG4gICAqL1xuICBnZXRSZXN1bHQoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0UmVzdWx0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0UmVzdWx0KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0T3duZXJUYXNrSWRSZXNwb25zZT5cbiAgICovXG4gIGdldE93bmVyVGFza0lkKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuR2V0T3duZXJUYXNrSWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRPd25lclRhc2tJZChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHNNZXRhRGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzTWV0YURhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHMoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpZW50IHN0cmVhbWluZyBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+XG4gICAqL1xuICB1cGxvYWRSZXN1bHREYXRhKFxuICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0PixcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAudXBsb2FkUmVzdWx0RGF0YShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlciBzdHJlYW1pbmcgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICovXG4gIGRvd25sb2FkUmVzdWx0RGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuRG93bmxvYWRSZXN1bHREYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kb3dubG9hZFJlc3VsdERhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgKi9cbiAgZGVsZXRlUmVzdWx0c0RhdGEoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA1LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmRlbGV0ZVJlc3VsdHNEYXRhKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUuUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2U+XG4gICAqL1xuICBnZXRTZXJ2aWNlQ29uZmlndXJhdGlvbihcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMTAwNC5FbXB0eSxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxcbiAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNS5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZVxuICA+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0U2VydmljZUNvbmZpZ3VyYXRpb24ocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxufVxuIl19
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1zZXJ2aWNlLnBic2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvcmVzdWx0cy1zZXJ2aWNlLnBic2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixjQUFjO0FBQ2QsRUFBRTtBQUNGLDJCQUEyQjtBQUMzQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFDTCxZQUFZLEVBSVosWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFReEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEtBQUssMEJBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUN4RTs7R0FFRztBQUNILE1BQ2EsYUFBYTtJQTJOeEIsWUFDb0QsUUFBYSxFQUNsQyxhQUFxQyxFQUMxRCxPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBM045Qjs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHO1lBQ0w7Ozs7OztlQU1HO1lBQ0gsV0FBVyxFQUFFLENBQ1gsV0FBMEQsRUFDMUQsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JB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QUFzQyxFQUN0QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFJcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDckQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQXRYVSxhQUFhLGtCQTRORiw0QkFBNEIsNkJBQ3hDLG1CQUFtQjtrSEE3TmxCLGFBQWEsY0FEQSxLQUFLOztTQUNsQixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkE2TjVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNEJBQTRCOzswQkFDL0MsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHcnBjQ2FsbFR5cGUsXG4gIEdycGNDbGllbnQsXG4gIEdycGNDbGllbnRGYWN0b3J5LFxuICBHcnBjRXZlbnQsXG4gIEdycGNNZXRhZGF0YVxufSBmcm9tICdAbmd4LWdycGMvY29tbW9uJztcbmltcG9ydCB7XG4gIEdSUENfQ0xJRU5UX0ZBQ1RPUlksXG4gIEdycGNIYW5kbGVyLFxuICB0YWtlTWVzc2FnZXMsXG4gIHRocm93U3RhdHVzRXJyb3JzXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHRoaXNQcm90byBmcm9tICcuL3Jlc3VsdHMtc2VydmljZS5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxVGFza19zdGF0dXMwMDEgZnJvbSAnLi90YXNrLXN0YXR1cy5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMiBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0X3N0YXR1czAwMyBmcm9tICcuL3Jlc3VsdC1zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVNvcnRfZGlyZWN0aW9uMDA0IGZyb20gJy4vc29ydC1kaXJlY3Rpb24ucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMTAwNSBmcm9tICcuL29iamVjdHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYgZnJvbSAnLi9yZXN1bHRzLWNvbW1vbi5wYic7XG5pbXBvcnQgeyBHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9yZXN1bHRzLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5MaXN0UmVzdWx0c1Jlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvTGlzdFJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuTGlzdFJlc3VsdHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGdldFJlc3VsdDogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRSZXN1bHRSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFJlc3VsdCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0T3duZXJUYXNrSWQ6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldE93bmVyVGFza0lkUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRPd25lclRhc2tJZCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRPd25lclRhc2tJZFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4+XG4gICAgICovXG4gICAgY3JlYXRlUmVzdWx0c01ldGFEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0NyZWF0ZVJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIHVwbG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPFxuICAgICAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVxdWVzdFxuICAgICAgPixcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUuY2xpZW50U3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2VydmVyIHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0Rvd25sb2FkUmVzdWx0RGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBkb3dubG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnNlcnZlclN0cmVhbSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRvd25sb2FkUmVzdWx0RGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9EZWxldGVSZXN1bHRzRGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRlbGV0ZVJlc3VsdHNEYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRlbGV0ZVJlc3VsdHNEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRGVsZXRlUmVzdWx0c0RhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0U2VydmljZUNvbmZpZ3VyYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0U2VydmljZUNvbmZpZ3VyYXRpb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxMDA1LkVtcHR5LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxMDA1LkVtcHR5LFxuICAgICAgICByZXNwb25zZUNsYXNzOlxuICAgICAgICAgIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LlJlc3VsdHNTZXJ2aWNlQ29uZmlndXJhdGlvblJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMnLFxuICAgICAgc2V0dGluZ3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0UmVzdWx0cyhcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFJlc3VsdHMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVzcG9uc2U+XG4gICAqL1xuICBnZXRSZXN1bHQoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0UmVzdWx0KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXNwb25zZT5cbiAgICovXG4gIGdldE93bmVyVGFza0lkKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRPd25lclRhc2tJZChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHNNZXRhRGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzTWV0YURhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHMoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpZW50IHN0cmVhbWluZyBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+XG4gICAqL1xuICB1cGxvYWRSZXN1bHREYXRhKFxuICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0PixcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAudXBsb2FkUmVzdWx0RGF0YShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlciBzdHJlYW1pbmcgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICovXG4gIGRvd25sb2FkUmVzdWx0RGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRG93bmxvYWRSZXN1bHREYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kb3dubG9hZFJlc3VsdERhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgKi9cbiAgZGVsZXRlUmVzdWx0c0RhdGEoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmRlbGV0ZVJlc3VsdHNEYXRhKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2U+XG4gICAqL1xuICBnZXRTZXJ2aWNlQ29uZmlndXJhdGlvbihcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMTAwNS5FbXB0eSxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxcbiAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZVxuICA+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0U2VydmljZUNvbmZpZ3VyYXRpb24ocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxufVxuIl19
|