@sunbird-cb/tree-hierarchy 0.0.2-cbrelease-4.8.26 → 0.0.2-cbrelease-4.8.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2022/lib/components/approve-view/approve-view.component.mjs +1 -1
  2. package/esm2022/lib/components/category-edit/category-edit-module/category-edit-module.component.mjs +55 -0
  3. package/esm2022/lib/components/create-term-from-framework/create-term-from-framework.component.mjs +4 -3
  4. package/esm2022/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.mjs +120 -46
  5. package/esm2022/lib/components/term-card/term-card.component.mjs +37 -6
  6. package/esm2022/lib/components/tree-column-view/tree-column-view.component.mjs +39 -5
  7. package/esm2022/lib/components/tree-view/tree-view.component.mjs +325 -27
  8. package/esm2022/lib/models/framework.model.mjs +1 -1
  9. package/esm2022/lib/services/connector.service.mjs +51 -5
  10. package/esm2022/lib/services/framework.service.mjs +151 -12
  11. package/esm2022/lib/tree-hierarchy.component.mjs +1 -1
  12. package/esm2022/lib/tree-hierarchy.module.mjs +11 -4
  13. package/esm2022/lib/tree-hierarchy.service.mjs +18 -2
  14. package/esm2022/material.module.mjs +2 -2
  15. package/fesm2022/sunbird-cb-tree-hierarchy.mjs +809 -127
  16. package/fesm2022/sunbird-cb-tree-hierarchy.mjs.map +1 -1
  17. package/lib/components/category-edit/category-edit-module/category-edit-module.component.d.ts +18 -0
  18. package/lib/components/category-edit/category-edit-module/category-edit-module.component.d.ts.map +1 -0
  19. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts +18 -3
  20. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts.map +1 -1
  21. package/lib/components/term-card/term-card.component.d.ts +13 -2
  22. package/lib/components/term-card/term-card.component.d.ts.map +1 -1
  23. package/lib/components/tree-column-view/tree-column-view.component.d.ts +6 -1
  24. package/lib/components/tree-column-view/tree-column-view.component.d.ts.map +1 -1
  25. package/lib/components/tree-view/tree-view.component.d.ts +13 -2
  26. package/lib/components/tree-view/tree-view.component.d.ts.map +1 -1
  27. package/lib/models/framework.model.d.ts +1 -0
  28. package/lib/models/framework.model.d.ts.map +1 -1
  29. package/lib/services/connector.service.d.ts +1 -0
  30. package/lib/services/connector.service.d.ts.map +1 -1
  31. package/lib/services/framework.service.d.ts +10 -3
  32. package/lib/services/framework.service.d.ts.map +1 -1
  33. package/lib/tree-hierarchy.module.d.ts +6 -4
  34. package/lib/tree-hierarchy.module.d.ts.map +1 -1
  35. package/lib/tree-hierarchy.service.d.ts +4 -0
  36. package/lib/tree-hierarchy.service.d.ts.map +1 -1
  37. package/material.module.d.ts +2 -2
  38. package/package.json +1 -1
@@ -1,12 +1,22 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, of } from 'rxjs';
3
- import { catchError, map, tap } from 'rxjs/operators';
3
+ import { catchError, map, switchMap, tap } from 'rxjs/operators';
4
4
  import { FRAMEWORK } from '../constants/data';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
  import _ from 'lodash';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
9
  import * as i2 from "./local-connection.service";
10
+ const API_ENDPOINT = {
11
+ ORG_V1_SEARCH: '/apis/proxies/v8/org/v1/search',
12
+ CREATE_TERMS: `/apis/proxies/v8/action/framework/v3/term/create`,
13
+ UPDATE_TERMS: `/apis/proxies/v8/framework/v1/term/update/`,
14
+ UPDATE_ASSOCIATION: `/apis/proxies/v8/framework/v1/term/update/`,
15
+ PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`,
16
+ RETIRE_TREM: `/apis/proxies/v8/framework/v1/term/retire`,
17
+ UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`,
18
+ USERS_SEARCH: `apis/proxies/v8/user/v1/search`
19
+ };
10
20
  export class FrameworkService {
11
21
  constructor(http, localConfig) {
12
22
  this.http = http;
@@ -22,19 +32,28 @@ export class FrameworkService {
22
32
  this.proxiesPath = 'apis/proxies/v8';
23
33
  this.CurrentCardClk = new BehaviorSubject(null);
24
34
  }
25
- getFrameworkInfo(_orgData) {
35
+ getFrameworkInfo(_orgData, _childOrgData) {
26
36
  localStorage.removeItem('terms');
27
37
  if (this.localConfig.connectionType === 'online') {
28
38
  let url = `/${this.proxiesPath}/framework/v1/read/`;
29
39
  if (_orgData) {
30
- url = url + _orgData.identifier + '_org_hierarchy';
40
+ url = url + _orgData.orgHierarchyFrameworkId;
31
41
  }
32
42
  else {
33
43
  url = url + this.environment.frameworkName;
34
44
  }
35
- return this.http.get(`${url}`, { withCredentials: true }).pipe(tap((response) => {
45
+ return this.http.get(`${url}`, { withCredentials: true }).pipe(switchMap((frameworkResponse) => {
46
+ const originalFrameworkResponse = frameworkResponse;
47
+ return this.getSelectedStateOrg(_orgData).pipe(switchMap((orgListData) => {
48
+ this.additionalData = orgListData?.result?.response?.content || [];
49
+ return this.getUserPerOrg().pipe(map(() => {
50
+ return originalFrameworkResponse;
51
+ }));
52
+ }));
53
+ }), tap(async (response) => {
36
54
  this.resetAll();
37
- this.formateData(response);
55
+ this.formateData(response, _orgData, _childOrgData);
56
+ this.completeResponse = response.result.framework;
38
57
  }), catchError((err) => {
39
58
  this.resetAll();
40
59
  this.list.clear();
@@ -163,13 +182,18 @@ export class FrameworkService {
163
182
  }) || [];
164
183
  return filteredData;
165
184
  }
166
- formateData(response) {
185
+ formateData(response, _orgData, _childOrgData) {
167
186
  this.frameworkId = response.result.framework.code;
168
- (response.result.framework.categories).forEach((a, _idx) => {
187
+ let categories = response.result.framework.categories;
188
+ if (_childOrgData?.id !== _orgData?.id) {
189
+ categories = this.getOrgFromChildOnwards(categories || [], _childOrgData || '');
190
+ }
191
+ response.result.framework.categories = categories;
192
+ (categories).forEach((a, _idx) => {
169
193
  this.list.set(a.code, {
170
194
  code: a.code,
171
195
  identifier: a.identifier,
172
- index: a.index,
196
+ index: (_idx + 1),
173
197
  name: a.name,
174
198
  selected: a.selected,
175
199
  status: a.status,
@@ -177,9 +201,11 @@ export class FrameworkService {
177
201
  translations: a.translations,
178
202
  category: a.category,
179
203
  associations: a.associations,
180
- config: this.getConfig(a.code),
204
+ config: this.getConfig(a.code, _childOrgData),
181
205
  children: (a.terms || []).map((c) => {
182
206
  const associations = c.associations || [];
207
+ const tempCount = this.getUserCount(c);
208
+ Object.assign(c, { userCount: tempCount });
183
209
  if (associations.length > 0) {
184
210
  Object.assign(c, { children: associations });
185
211
  }
@@ -201,6 +227,25 @@ export class FrameworkService {
201
227
  });
202
228
  this.categoriesHash.next(allCategories);
203
229
  }
230
+ getOrgFromChildOnwards(_categories, _childOrgData) {
231
+ const colIndexToBeRemoved = [];
232
+ let termFoundIndex = -1;
233
+ if (_categories?.length > 0) {
234
+ _categories.forEach((ele) => {
235
+ if (ele?.terms?.length > 0) {
236
+ const termFound = ele.terms.find((term) => term.name === _childOrgData.channel);
237
+ if (!termFound && termFoundIndex === -1) {
238
+ colIndexToBeRemoved.push(ele.index);
239
+ }
240
+ else if (termFoundIndex === -1) {
241
+ termFoundIndex = ele.index;
242
+ ele.terms = ele.terms.filter((term) => term.name === _childOrgData.channel);
243
+ }
244
+ }
245
+ });
246
+ }
247
+ return _categories.filter((category) => !colIndexToBeRemoved.includes(category.index));
248
+ }
204
249
  removeOldLine() {
205
250
  const eles = Array.from(document.getElementsByClassName('leader-line') || []);
206
251
  if (eles.length > 0) {
@@ -210,7 +255,7 @@ export class FrameworkService {
210
255
  setConfig(config) {
211
256
  this.rootConfig = config;
212
257
  }
213
- getConfig(code) {
258
+ getConfig(code, _childOrgData) {
214
259
  let categoryConfig;
215
260
  if (this.rootConfig && this.rootConfig[0]) {
216
261
  this.rootConfig.forEach((config) => {
@@ -220,7 +265,8 @@ export class FrameworkService {
220
265
  });
221
266
  }
222
267
  if (!categoryConfig) {
223
- return this.rootConfig.config[0];
268
+ const config = this.rootConfig.config[0];
269
+ return config;
224
270
  }
225
271
  return categoryConfig;
226
272
  }
@@ -375,6 +421,99 @@ export class FrameworkService {
375
421
  });
376
422
  }
377
423
  }
424
+ getSelectedStateOrg(_orgData) {
425
+ const requestBody = {
426
+ request: {
427
+ filters: {
428
+ status: 1,
429
+ ministryOrStateType: (_orgData) ?
430
+ _orgData.sbOrgType : '',
431
+ ministryOrStateId: (_orgData) ?
432
+ _orgData.identifier : ''
433
+ },
434
+ sort_by: {
435
+ createdDate: "desc"
436
+ },
437
+ limit: 9999,
438
+ offset: 0,
439
+ fields: [
440
+ 'identifier',
441
+ 'orgName',
442
+ 'description',
443
+ 'parentOrgName',
444
+ 'ministryOrStateId',
445
+ 'ministryOrStateType',
446
+ 'ministryOrStateName',
447
+ 'sbOrgSubType'
448
+ ]
449
+ }
450
+ };
451
+ return this.http.post(`${API_ENDPOINT.ORG_V1_SEARCH}`, requestBody).pipe(catchError(error => {
452
+ console.error('Error fetching Org data:', error);
453
+ return of({});
454
+ }));
455
+ }
456
+ getUserPerOrg(_orgData) {
457
+ const orgIds = this.additionalData.map((org) => org.identifier);
458
+ const requestBody = {
459
+ request: {
460
+ filters: {
461
+ rootOrgId: orgIds
462
+ },
463
+ fields: [
464
+ 'identifier',
465
+ 'rootOrgId'
466
+ ],
467
+ limit: 1,
468
+ facets: [
469
+ "rootOrgId"
470
+ ],
471
+ sort_by: {
472
+ "createdDate": "desc"
473
+ }
474
+ }
475
+ };
476
+ const orgIdCounts = [];
477
+ if (this.additionalData && this.additionalData.length > 0) {
478
+ this.additionalData.forEach((org) => {
479
+ if (org.identifier) {
480
+ orgIdCounts.push({
481
+ id: org.identifier,
482
+ count: 0
483
+ });
484
+ }
485
+ });
486
+ }
487
+ return this.http.post(`${API_ENDPOINT.USERS_SEARCH}`, requestBody).pipe(map((res) => {
488
+ if (res && res.result && res.result.response && res.result.response.count) {
489
+ const facetsValue = res.result.response.facets || [];
490
+ if (facetsValue && facetsValue.length > 0) {
491
+ const orgFacet = facetsValue.find((facet) => facet.name === 'rootOrgId');
492
+ if (orgFacet && orgFacet.values) {
493
+ orgFacet.values.forEach((value) => {
494
+ const orgIndex = orgIdCounts.findIndex(org => org.id === value.name);
495
+ if (orgIndex !== -1) {
496
+ orgIdCounts[orgIndex].count = value.count || 0;
497
+ }
498
+ });
499
+ }
500
+ }
501
+ }
502
+ this.userCountData = orgIdCounts;
503
+ }), catchError(error => {
504
+ console.error('Error fetching user count data:', error);
505
+ return of({});
506
+ }));
507
+ }
508
+ getUserCount(term) {
509
+ if (term && term.additionalProperties && term.additionalProperties.orgId) {
510
+ if (this.userCountData && this.userCountData.length > 0) {
511
+ const userCount = this.userCountData.filter((user) => user.id === term.additionalProperties.orgId)[0]?.count;
512
+ return userCount || 0;
513
+ }
514
+ }
515
+ return 0;
516
+ }
378
517
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, deps: [{ token: i1.HttpClient }, { token: i2.LocalConnectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
379
518
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, providedIn: 'root' }); }
380
519
  }
@@ -384,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
384
523
  providedIn: 'root'
385
524
  }]
386
525
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalConnectionService }]; } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLGdCQUFnQjtJQWtCM0IsWUFDVSxJQUFnQixFQUNqQixXQUFtQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQW5CNUMsbUJBQWMsR0FBa0QsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlFLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUF1RSxJQUFJLENBQUMsQ0FBQztRQUNsRyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDN0UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN2Qywr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RUFBRSxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDNUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQ2xFO2dCQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDM0M7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzsrR0F2YVUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGUkFNRVdPUksgfSBmcm9tICcuLi9jb25zdGFudHMvZGF0YSc7XG5pbXBvcnQgeyBOU0ZyYW1ld29yayB9IGZyb20gJy4uL21vZGVscy9mcmFtZXdvcmsubW9kZWwnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSUNvbm5lY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1jb25uZWN0aW9uLnNlcnZpY2UnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5cbmludGVyZmFjZSBOb3RpZmllclR5cGUge1xuICB0eXBlOiAnc2VsZWN0JyB8ICdpbnNlcnQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRnJhbWV3b3JrU2VydmljZSB7XG4gIGNhdGVnb3JpZXNIYXNoOiBCZWhhdmlvclN1YmplY3Q8TlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gfCBbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+KFtdKTtcbiAgaXNEYXRhVXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGN1cnJlbnRTZWxlY3Rpb246IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4gPSBcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnksIGNhcmRSZWY/OiBhbnksIGlzVXBkYXRlPzpib29sZWFuIH0gfCBudWxsPihudWxsKTtcbiAgdGVybVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBhZnRlckFkZE9yRWRpdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBsaXN0ID0gbmV3IE1hcDxzdHJpbmcsIE5TRnJhbWV3b3JrLklDb2x1bW5WaWV3PigpO1xuICBzZWxlY3Rpb25MaXN0ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgaW5zZXJ0VXBkYXRlRGVsZXRlTm90aWZpZXI6IEJlaGF2aW9yU3ViamVjdDxOb3RpZmllclR5cGUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4obnVsbCk7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGxpYkNvbmZpZyE6IElDb25uZWN0aW9uO1xuICBmcmFtZXdvcmtJZCE6IHN0cmluZztcbiAgcm9vdENvbmZpZzogYW55O1xuICBwcm94aWVzUGF0aCA9ICdhcGlzL3Byb3hpZXMvdjgnO1xuICBjYXJkQ2xrRGF0YTogYW55O1xuICBDdXJyZW50Q2FyZENsayA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgbG9jYWxDb25maWc6IExvY2FsQ29ubmVjdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZyYW1ld29ya0luZm8oX29yZ0RhdGE/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlcm1zJyk7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAvL2ZyYW1ld29yay92MS9yZWFkLzAxMzU4OTEyMjkzODM5NjY3MjQxX29yZ19oaWVyYXJjaHlcbiAgICAgIC8vZnJhbWV3b3JrL3YxL3JlYWQvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9XG4gICAgICBsZXQgdXJsID0gYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkL2BcbiAgICAgIGlmIChfb3JnRGF0YSkge1xuICAgICAgICB1cmwgID0gdXJsICsgX29yZ0RhdGEuaWRlbnRpZmllciArICdfb3JnX2hpZXJhcmNoeSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSB1cmwgKyB0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt1cmx9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMuZm9ybWF0ZURhdGEocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIGluIHNvdXJjZS4gRGV0YWlsczogJyArIGVycjtcbiAgICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICB0aGlzLmZvcm1hdGVEYXRhKEZSQU1FV09SSyk7XG4gICAgICByZXR1cm4gb2YoRlJBTUVXT1JLKTtcbiAgICB9XG4gIH1cblxuICByZWFkVGVybXMoZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3NlYXJjaD9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLnJlc3VsdCkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vY3JlYXRlP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG4gXG4gIGNyZWF0ZVRlcm1zV3JhcHBlcihjYXRlZ29yeTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgY2F0ZWdvcnlJdGVtOiBzdHJpbmc7XG4gICAgaWYgKGNhdGVnb3J5ID09PSAndGhlbWUnKSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVRoZW1lJztcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lTdWJUaGVtZSc7XG4gICAgfVxuICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS8ke2NhdGVnb3J5SXRlbX0vY3JlYXRlL3Rlcm1gLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0JykpKTtcbiAgfVxuXG4gIHJldGlyZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWApO1xuICB9XG5cbiAgcmV0aXJlTXVsdGlwbGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgY2F0ZWdvcnlUZXJtQ29kZTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS91cGRhdGUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmFtZXdvcmsoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9wdWJsaXNoLyR7dGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lfWAsIHt9KTtcbiAgfVxuXG4gIGdldFV1aWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXVpZHY0KCk7XG4gIH1cblxuICB1cGRhdGVFbnZpcm9ubWVudChlbnY6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnY7XG4gIH1cblxuICBnZXRFbnZpcm9tZW50KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXRGcmFtZXdvcmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1ld29ya0lkO1xuICB9XG5cbiAgZ2V0TmV4dENhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeTogc3RyaW5nKTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5IHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY3VycmVudENhdGVnb3J5O1xuICAgIH0pO1xuICAgIGxldCBjYXRlZ29yeUxlbmd0aCA9IHRoaXMuY2F0ZWdvcmllc0hhc2guZ2V0VmFsdWUoKS5sZW5ndGg7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggKyAxKSA8IGNhdGVnb3J5TGVuZ3RoID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCArIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzQ2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggLSAxKSA+PSAwID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFBhcmVudFRlcm0oY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnkpIHx8IG51bGw7XG4gICAgcmV0dXJuIHBhcmVudCA/IHRoaXMuc2VsZWN0aW9uTGlzdC5nZXQocGFyZW50LmNvZGUpIDogbnVsbDtcbiAgfVxuXG4gIGNoaWxkQ2xpY2soZXZlbnQ6IHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnkgfSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmNsZWFyKCk7XG4gICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gIH1cblxuICBpc0xhc3RDb2x1bW4oY29sQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUgJiYgKHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGNvbENvZGU7XG4gICAgfSkpID09PSAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW1Gcm9tQXJyYXkoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpOiBhbnlbXSB7XG4gICAgLyogYXNzaWduIGEgZW1wdHkgYXJyYXkgKi9cbiAgICB2YXIgdG1wOiBhbnlbXSA9IFtdO1xuICAgIC8qIGxvb3Agb3ZlciBhbGwgYXJyYXkgaXRlbXMgKi9cbiAgICBmb3IgKHZhciBpbmRleCBpbiBhcnJheSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSAhPT0gaXRlbSkge1xuICAgICAgICAvKiBwdXNoIHRvIHRlbXBvcmFyeSBhcnJheSBpZiBub3QgbGlrZSBpdGVtICovXG4gICAgICAgIHRtcC5wdXNoKGFycmF5W2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIHJldHVybiB0aGUgdGVtcG9yYXJ5IGFycmF5ICovXG4gICAgcmV0dXJuIHRtcDtcbiAgfVxuXG4gIHNldCBzZXRUZXJtKHJlczogYW55KSB7XG4gICAgdGhpcy50ZXJtU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgbGV0IG9sZFRlcm1zID0gdGhpcy5nZXRUZXJtIHx8IFtdO1xuICAgIG9sZFRlcm1zLnB1c2gocmVzKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVybXMnLCBKU09OLnN0cmluZ2lmeShvbGRUZXJtcykpO1xuICB9XG5cbiAgZ2V0IGdldFRlcm0oKTogYW55W10ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZXJtcycpIHx8ICdbXScpIHx8IFtdO1xuICB9XG5cbiAgdXBkYXRlQWZ0ZXJBZGRPckVkaXRTdWJqZWN0KHJlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHJlcykge1xuICAgICAgdGhpcy5hZnRlckFkZE9yRWRpdFN1YmplY3QubmV4dChyZXMpO1xuICAgIH0gXG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlQYXJlbnQocGFyZW50Q29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5wYXJlbnQgJiYgeC5wYXJlbnQuY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhLm1hcCh4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm07XG4gICAgfSk7XG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlDYXRlZ29yeShwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm0gJiYgeC50ZXJtLmNhdGVnb3J5ID09PSBwYXJlbnRDb2RlO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnk7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZm9ybWF0ZURhdGEocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZnJhbWV3b3JrSWQgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNvZGU7XG4gICAgKHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY2F0ZWdvcmllcykuZm9yRWFjaCgoYTogYW55LCBfaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMubGlzdC5zZXQoYS5jb2RlLCB7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzZWxlY3RlZDogYS5zZWxlY3RlZCxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICAgIGNhdGVnb3J5OiBhLmNhdGVnb3J5LFxuICAgICAgICBhc3NvY2lhdGlvbnM6IGEuYXNzb2NpYXRpb25zLFxuICAgICAgICBjb25maWc6IHRoaXMuZ2V0Q29uZmlnKGEuY29kZSksXG4gICAgICAgIGNoaWxkcmVuOiAoYS50ZXJtcyB8fCBbXSkubWFwKChjOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBjLmFzc29jaWF0aW9ucyB8fCBbXTtcbiAgICAgICAgICBpZiAoYXNzb2NpYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYywgeyBjaGlsZHJlbjogYXNzb2NpYXRpb25zIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IGFsbENhdGVnb3JpZXM6IE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2goYSA9PiB7XG4gICAgICBhbGxDYXRlZ29yaWVzLnB1c2goe1xuICAgICAgICBjb2RlOiBhLmNvZGUsXG4gICAgICAgIGlkZW50aWZpZXI6IGEuaWRlbnRpZmllcixcbiAgICAgICAgaW5kZXg6IGEuaW5kZXgsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICB9IGFzIE5TRnJhbWV3b3JrLklDYXRlZ29yeSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KGFsbENhdGVnb3JpZXMpO1xuICB9XG5cbiAgcmVtb3ZlT2xkTGluZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsZWFkZXItbGluZScpIHx8IFtdKTtcbiAgICBpZiAoZWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbGVzLmZvckVhY2goZWxlID0+IGVsZS5yZW1vdmUoKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yb290Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnKGNvZGU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZy5jb25maWcuZmluZCgob2JqOiBhbnkpID0+IG9iai5jYXRlZ29yeSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghY2F0ZWdvcnlDb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb25maWcuY29uZmlnWzBdXG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldEFsbFNlbGVjdGVkVGVybXMoKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2gobCA9PiB7XG4gICAgICBpZiAobC5jaGlsZHJlbiAmJiBsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBsLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgaWYgKGMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGVybXMucHVzaChjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKGNvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBsZXQgcHJldlNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goc2wgPT4ge1xuICAgICAgaWYgKHNsLmNhdGVnb3J5ICE9PSBjb2RlKSB7XG4gICAgICAgIHByZXZTZWxlY3RlZFRlcm1zLnB1c2goc2wpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmV2U2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldEtjbVNlYXJjaExpc3QocmVxdWVzdEJvZHk6IGFueSwgY2F0ZWdvcnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNhdGVnb3J5SXRlbTogc3RyaW5nO1xuICAgIGlmIChjYXRlZ29yeSA9PT0gJ3RoZW1lJykge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lUaGVtZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5U3ViVGhlbWUnO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9zZWFyY2hgLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdCcpKSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3QoaXRlbTogYW55LCBwYXJlbnQ6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICAgICAgICBpZiAoaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuICYmIGl0bURhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhICA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBpdG1EYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5pdG1EYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuID8gWy4uLml0bURhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcmFtZXdvcmtMaXN0KGNvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoY29sdW1uQ29kZSk7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgbGlzdERhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgfVxuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuYXNzb2NpYXRpb25zID8gWy4uLmxpc3REYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuID8gWy4uLmxpc3REYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7IFxuICAgIH1cbiAgfVxuXG4gIGdldEZyYW1ld29ya1JlYWQoZnJhbWVXb3JrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvJHtmcmFtZVdvcmtJZH1gLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0LmZyYW1ld29yaycpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDb25maWdPZkNhdGVnb3J5Q29uZmlnQnlGcmFtZVdvcmtJZChjb2RlOiBzdHJpbmcsIGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnQnlGcmFtZVdvcmtJZChmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIHVwZGF0ZUZ1bGxUZXJtRGF0YUxvY2FsTWFwKF9jb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShsaXN0RGF0YSwgcGFyZW50RGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3RUZXJtKGl0ZW06IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgIGl0bURhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBwYXJlbnRbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICAgICAgaXRtRGF0YVsnYWRkaXRpb25hbFByb3BlcnRpZXMnXSA9IHBhcmVudFsnYWRkaXRpb25hbFByb3BlcnRpZXMnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShpdG1EYXRhLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0iXX0=
526
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJcEMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBSXZCLE1BQU0sWUFBWSxHQUFHO0lBQ25CLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsWUFBWSxFQUFFLGtEQUFrRDtJQUNoRSxZQUFZLEVBQUUsNENBQTRDO0lBQzFELGtCQUFrQixFQUFFLDRDQUE0QztJQUNoRSxpQkFBaUIsRUFBRSx3Q0FBd0M7SUFDM0QsV0FBVyxFQUFFLDJDQUEyQztJQUN4RCxlQUFlLEVBQUUsZ0RBQWdEO0lBQ2pFLFlBQVksRUFBRSxnQ0FBZ0M7Q0FDL0MsQ0FBQTtBQVdELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCLFlBQ1UsSUFBZ0IsRUFDakIsV0FBbUM7UUFEbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUF0QjVDLG1CQUFjLEdBQWtELElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUN0SCxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FB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Q2hEO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFO1lBQ3hFLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQ2pILE9BQU8sU0FBUyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNGO1FBQ0QsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDOytHQXpqQlUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZSQU1FV09SSyB9IGZyb20gJy4uL2NvbnN0YW50cy9kYXRhJztcbmltcG9ydCB7IE5TRnJhbWV3b3JrIH0gZnJvbSAnLi4vbW9kZWxzL2ZyYW1ld29yay5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb25uZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IExvY2FsQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLWNvbm5lY3Rpb24uc2VydmljZSc7XG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbi8vIGltcG9ydCB7IFRyZWVIaWVyYXJjaHlTZXJ2aWNlIH0gZnJvbSAnLi4vdHJlZS1oaWVyYXJjaHkuc2VydmljZSc7XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5cbmNvbnN0IEFQSV9FTkRQT0lOVCA9IHtcbiAgT1JHX1YxX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvb3JnL3YxL3NlYXJjaCcsXG4gIENSRUFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2ZyYW1ld29yay92My90ZXJtL2NyZWF0ZWAsXG4gIFVQREFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFVQREFURV9BU1NPQ0lBVElPTjogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFBVQkxJU0hfRlJBTUVXT1JLOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvcHVibGlzaC9gLFxuICBSRVRJUkVfVFJFTTogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlYCxcbiAgVVBEQVRFX0NBVEVHT1JZOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvY2F0ZWdvcnkvdXBkYXRlL2AsXG4gIFVTRVJTX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC91c2VyL3YxL3NlYXJjaGBcbn1cblxuaW50ZXJmYWNlIE5vdGlmaWVyVHlwZSB7XG4gIHR5cGU6ICdzZWxlY3QnIHwgJ2luc2VydCcgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICBhY3Rpb246IHN0cmluZztcbiAgZGF0YTogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGcmFtZXdvcmtTZXJ2aWNlIHtcbiAgY2F0ZWdvcmllc0hhc2g6IEJlaGF2aW9yU3ViamVjdDxOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSB8IFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gfCBbXT4oW10pO1xuICBpc0RhdGFVcGRhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY3VycmVudFNlbGVjdGlvbjogQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnksIGNhcmRSZWY/OiBhbnksIGlzVXBkYXRlPzpib29sZWFuIH0gfCBudWxsPiA9IFxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8eyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgY2FyZFJlZj86IGFueSwgaXNVcGRhdGU/OmJvb2xlYW4gfSB8IG51bGw+KG51bGwpO1xuICB0ZXJtU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGFmdGVyQWRkT3JFZGl0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGxpc3QgPSBuZXcgTWFwPHN0cmluZywgTlNGcmFtZXdvcmsuSUNvbHVtblZpZXc+KCk7XG4gIHNlbGVjdGlvbkxpc3QgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBpbnNlcnRVcGRhdGVEZWxldGVOb3RpZmllcjogQmVoYXZpb3JTdWJqZWN0PE5vdGlmaWVyVHlwZSB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOb3RpZmllclR5cGUgfCBudWxsPihudWxsKTtcbiAgZW52aXJvbm1lbnQ6IGFueTtcbiAgbGliQ29uZmlnITogSUNvbm5lY3Rpb247XG4gIGZyYW1ld29ya0lkITogc3RyaW5nO1xuICByb290Q29uZmlnOiBhbnk7XG4gIHByb3hpZXNQYXRoID0gJ2FwaXMvcHJveGllcy92OCc7XG4gIGNhcmRDbGtEYXRhOiBhbnk7XG4gIEN1cnJlbnRDYXJkQ2xrID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBjb21wbGV0ZVJlc3BvbnNlOiBhbnk7XG4gIGFkZGl0aW9uYWxEYXRhOiBhbnk7IC8vIEFkZCBhIHByb3BlcnR5IHRvIHN0b3JlIGFkZGl0aW9uYWwgZGF0YVxuICB1c2VyQ291bnREYXRhOiBhbnk7IC8vIEFkZCBhIHByb3BlcnR5IHRvIHN0b3JlIHVzZXIgY291bnQgZGF0YVxuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHB1YmxpYyBsb2NhbENvbmZpZzogTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICAvLyBwcml2YXRlIHRyZWVIaWVyYXJjaHlTdmM6IFRyZWVIaWVyYXJjaHlTZXJ2aWNlXG4gICkge31cblxuICBnZXRGcmFtZXdvcmtJbmZvKF9vcmdEYXRhPzphbnksIF9jaGlsZE9yZ0RhdGE/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlcm1zJyk7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBsZXQgdXJsID0gYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkL2BcbiAgICAgIGlmIChfb3JnRGF0YSkge1xuICAgICAgICB1cmwgPSB1cmwgKyBfb3JnRGF0YS5vcmdIaWVyYXJjaHlGcmFtZXdvcmtJZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHVybCArIHRoaXMuZW52aXJvbm1lbnQuZnJhbWV3b3JrTmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3VybH1gLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZyYW1ld29ya1Jlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEZyYW1ld29ya1Jlc3BvbnNlID0gZnJhbWV3b3JrUmVzcG9uc2U7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRTdGF0ZU9yZyhfb3JnRGF0YSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgob3JnTGlzdERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhID0gb3JnTGlzdERhdGE/LnJlc3VsdD8ucmVzcG9uc2U/LmNvbnRlbnQgfHwgW107XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFVzZXJQZXJPcmcoKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGcmFtZXdvcmtSZXNwb25zZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICAgICAgdGhpcy5mb3JtYXRlRGF0YShyZXNwb25zZSwgX29yZ0RhdGEsIF9jaGlsZE9yZ0RhdGEpO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVSZXNwb25zZSA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcms7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICAgICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICAgICAgICB0aHJvdyAnRXJyb3IgaW4gc291cmNlLiBEZXRhaWxzOiAnICsgZXJyO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgdGhpcy5mb3JtYXRlRGF0YShGUkFNRVdPUkspO1xuICAgICAgcmV0dXJuIG9mKEZSQU1FV09SSyk7XG4gICAgfVxuICB9XG5cbiAgcmVhZFRlcm1zKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9zZWFyY2g/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5yZXN1bHQpKTtcbiAgfVxuXG4gIGNyZWF0ZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL2NyZWF0ZT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuIFxuICBjcmVhdGVUZXJtc1dyYXBwZXIoY2F0ZWdvcnk6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNhdGVnb3J5SXRlbTogc3RyaW5nO1xuICAgIGlmIChjYXRlZ29yeSA9PT0gJ3RoZW1lJykge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lUaGVtZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5U3ViVGhlbWUnO1xuICAgIH1cbiAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vJHtjYXRlZ29yeUl0ZW19L2NyZWF0ZS90ZXJtYCwgcmVxdWVzdEJvZHkpXG4gICAgICAucGlwZShtYXAocmVzID0+IF8uZ2V0KHJlcywgJ3Jlc3VsdCcpKSk7XG4gIH1cblxuICByZXRpcmVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgY2F0ZWdvcnlUZXJtQ29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlLyR7Y2F0ZWdvcnlUZXJtQ29kZX0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gKTtcbiAgfVxuXG4gIHJldGlyZU11bHRpcGxlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgdXBkYXRlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIGNhdGVnb3J5VGVybUNvZGU6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlLyR7Y2F0ZWdvcnlUZXJtQ29kZX0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICBwdWJsaXNoRnJhbWV3b3JrKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvcHVibGlzaC8ke3RoaXMuZW52aXJvbm1lbnQuZnJhbWV3b3JrTmFtZX1gLCB7fSk7XG4gIH1cblxuICBnZXRVdWlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV1aWR2NCgpO1xuICB9XG5cbiAgdXBkYXRlRW52aXJvbm1lbnQoZW52OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52O1xuICB9XG5cbiAgZ2V0RW52aXJvbWVudCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0RnJhbWV3b3JrSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXdvcmtJZDtcbiAgfVxuXG4gIGdldE5leHRDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGN1cnJlbnRDYXRlZ29yeTtcbiAgICB9KTtcbiAgICBsZXQgY2F0ZWdvcnlMZW5ndGggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKCkubGVuZ3RoO1xuICAgIHJldHVybiAoY3VycmVudEluZGV4ICsgMSkgPCBjYXRlZ29yeUxlbmd0aCA/IHRoaXMuY2F0ZWdvcmllc0hhc2guZ2V0VmFsdWUoKVtjdXJyZW50SW5kZXggKyAxXSA6IG51bGw7XG4gIH1cblxuICBnZXRQcmV2aW91c0NhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeTogc3RyaW5nKTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5IHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY3VycmVudENhdGVnb3J5O1xuICAgIH0pO1xuICAgIHJldHVybiAoY3VycmVudEluZGV4IC0gMSkgPj0gMCA/IHRoaXMuY2F0ZWdvcmllc0hhc2guZ2V0VmFsdWUoKVtjdXJyZW50SW5kZXggLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXRQYXJlbnRUZXJtKGN1cnJlbnRDYXRlZ29yeTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFByZXZpb3VzQ2F0ZWdvcnkoY3VycmVudENhdGVnb3J5KSB8fCBudWxsO1xuICAgIHJldHVybiBwYXJlbnQgPyB0aGlzLnNlbGVjdGlvbkxpc3QuZ2V0KHBhcmVudC5jb2RlKSA6IG51bGw7XG4gIH1cblxuICBjaGlsZENsaWNrKGV2ZW50OiB7IHR5cGU6IHN0cmluZywgZGF0YTogYW55IH0pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24ubmV4dChldmVudCk7XG4gIH1cblxuICByZXNldEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXNIYXNoLm5leHQoW10pO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5uZXh0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5jbGVhcigpO1xuICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICB9XG5cbiAgaXNMYXN0Q29sdW1uKGNvbENvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlICYmICh0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjb2xDb2RlO1xuICAgIH0pKSA9PT0gKHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZW1vdmVJdGVtRnJvbUFycmF5KGFycmF5OiBhbnlbXSwgaXRlbTogYW55KTogYW55W10ge1xuICAgIC8qIGFzc2lnbiBhIGVtcHR5IGFycmF5ICovXG4gICAgdmFyIHRtcDogYW55W10gPSBbXTtcbiAgICAvKiBsb29wIG92ZXIgYWxsIGFycmF5IGl0ZW1zICovXG4gICAgZm9yICh2YXIgaW5kZXggaW4gYXJyYXkpIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gIT09IGl0ZW0pIHtcbiAgICAgICAgLyogcHVzaCB0byB0ZW1wb3JhcnkgYXJyYXkgaWYgbm90IGxpa2UgaXRlbSAqL1xuICAgICAgICB0bXAucHVzaChhcnJheVtpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiByZXR1cm4gdGhlIHRlbXBvcmFyeSBhcnJheSAqL1xuICAgIHJldHVybiB0bXA7XG4gIH1cblxuICBzZXQgc2V0VGVybShyZXM6IGFueSkge1xuICAgIHRoaXMudGVybVN1YmplY3QubmV4dChyZXMpO1xuICAgIGxldCBvbGRUZXJtcyA9IHRoaXMuZ2V0VGVybSB8fCBbXTtcbiAgICBvbGRUZXJtcy5wdXNoKHJlcyk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rlcm1zJywgSlNPTi5zdHJpbmdpZnkob2xkVGVybXMpKTtcbiAgfVxuXG4gIGdldCBnZXRUZXJtKCk6IGFueVtdIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVybXMnKSB8fCAnW10nKSB8fCBbXTtcbiAgfVxuXG4gIHVwZGF0ZUFmdGVyQWRkT3JFZGl0U3ViamVjdChyZXM6IGFueSk6IHZvaWQge1xuICAgIGlmIChyZXMpIHtcbiAgICAgIHRoaXMuYWZ0ZXJBZGRPckVkaXRTdWJqZWN0Lm5leHQocmVzKTtcbiAgICB9IFxuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0J5UGFyZW50KHBhcmVudENvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHgucGFyZW50ICYmIHgucGFyZW50LmNhdGVnb3J5ID09PSBwYXJlbnRDb2RlO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkRGF0YS5tYXAoeCA9PiB7XG4gICAgICByZXR1cm4geC50ZXJtO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0J5Q2F0ZWdvcnkocGFyZW50Q29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC50ZXJtICYmIHgudGVybS5jYXRlZ29yeSA9PT0gcGFyZW50Q29kZTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQ2F0ZWdvcnkoY2F0ZWdvcnk6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHguY2F0ZWdvcnkgPT09IGNhdGVnb3J5O1xuICAgIH0pIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIGZvcm1hdGVEYXRhKHJlc3BvbnNlOiBhbnksIF9vcmdEYXRhPzogYW55LCBfY2hpbGRPcmdEYXRhPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtJZCA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY29kZTsgXG4gICAgbGV0IGNhdGVnb3JpZXMgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNhdGVnb3JpZXM7XG4gICAgaWYgKF9jaGlsZE9yZ0RhdGE/LmlkICE9PSBfb3JnRGF0YT8uaWQpIHtcbiAgICAgIGNhdGVnb3JpZXMgPSB0aGlzLmdldE9yZ0Zyb21DaGlsZE9ud2FyZHMoY2F0ZWdvcmllcyB8fCBbXSwgX2NoaWxkT3JnRGF0YSB8fCAnJylcbiAgICB9XG4gICAgcmVzcG9uc2UucmVzdWx0LmZyYW1ld29yay5jYXRlZ29yaWVzID0gY2F0ZWdvcmllcztcbiAgICAoY2F0ZWdvcmllcykuZm9yRWFjaCgoYTogYW55LCBfaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMubGlzdC5zZXQoYS5jb2RlLCB7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogKF9pZHggKyAxKSxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzZWxlY3RlZDogYS5zZWxlY3RlZCxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICAgIGNhdGVnb3J5OiBhLmNhdGVnb3J5LFxuICAgICAgICBhc3NvY2lhdGlvbnM6IGEuYXNzb2NpYXRpb25zLFxuICAgICAgICBjb25maWc6IHRoaXMuZ2V0Q29uZmlnKGEuY29kZSxfY2hpbGRPcmdEYXRhKSxcbiAgICAgICAgY2hpbGRyZW46IChhLnRlcm1zIHx8IFtdKS5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGMuYXNzb2NpYXRpb25zIHx8IFtdO1xuICAgICAgICAgIGNvbnN0IHRlbXBDb3VudCA9IHRoaXMuZ2V0VXNlckNvdW50KGMpXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IHVzZXJDb3VudDogdGVtcENvdW50IH0pXG4gICAgICAgICAgaWYgKGFzc29jaWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGMsIHsgY2hpbGRyZW46IGFzc29jaWF0aW9ucyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgYWxsQ2F0ZWdvcmllczogTlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gPSBbXTtcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChhID0+IHtcbiAgICAgIGFsbENhdGVnb3JpZXMucHVzaCh7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgIH0gYXMgTlNGcmFtZXdvcmsuSUNhdGVnb3J5KTtcbiAgICB9KTtcbiAgICB0aGlzLmNhdGVnb3JpZXNIYXNoLm5leHQoYWxsQ2F0ZWdvcmllcyk7XG4gIH1cblxuICBnZXRPcmdGcm9tQ2hpbGRPbndhcmRzKF9jYXRlZ29yaWVzOiBhbnksIF9jaGlsZE9yZ0RhdGE6IGFueSkge1xuICAgIGNvbnN0IGNvbEluZGV4VG9CZVJlbW92ZWQ6IG51bWJlcltdID0gW11cbiAgICBsZXQgdGVybUZvdW5kSW5kZXg6IGFueSA9IC0xO1xuICAgIGlmIChfY2F0ZWdvcmllcz8ubGVuZ3RoID4gMCkge1xuICAgICAgX2NhdGVnb3JpZXMuZm9yRWFjaCgoZWxlOmFueSkgPT4ge1xuICAgICAgICBpZiAoZWxlPy50ZXJtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRlcm1Gb3VuZCA9IGVsZS50ZXJtcy5maW5kKCh0ZXJtOiBhbnkpID0+IHRlcm0ubmFtZSA9PT0gX2NoaWxkT3JnRGF0YS5jaGFubmVsKTtcbiAgICAgICAgICBpZiAoIXRlcm1Gb3VuZCAmJiB0ZXJtRm91bmRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbEluZGV4VG9CZVJlbW92ZWQucHVzaChlbGUuaW5kZXgpXG4gICAgICAgICAgfSBlbHNlIGlmKHRlcm1Gb3VuZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGVybUZvdW5kSW5kZXggPSBlbGUuaW5kZXg7XG4gICAgICAgICAgICBlbGUudGVybXMgPSBlbGUudGVybXMuZmlsdGVyKCh0ZXJtOiBhbnkpID0+IHRlcm0ubmFtZSA9PT0gX2NoaWxkT3JnRGF0YS5jaGFubmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBfY2F0ZWdvcmllcy5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+ICFjb2xJbmRleFRvQmVSZW1vdmVkLmluY2x1ZGVzKGNhdGVnb3J5LmluZGV4KSk7XG4gIH1cblxuICByZW1vdmVPbGRMaW5lKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xlYWRlci1saW5lJykgfHwgW10pO1xuICAgIGlmIChlbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVsZXMuZm9yRWFjaChlbGUgPT4gZWxlLnJlbW92ZSgpKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb25maWcoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJvb3RDb25maWcgPSBjb25maWc7XG4gIH1cblxuICBnZXRDb25maWcoY29kZTogc3RyaW5nLF9jaGlsZE9yZ0RhdGE/OiBhbnkpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWcuY29uZmlnLmZpbmQoKG9iajogYW55KSA9PiBvYmouY2F0ZWdvcnkgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWNhdGVnb3J5Q29uZmlnKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvb3RDb25maWcuY29uZmlnWzBdXG4gICAgICByZXR1cm4gY29uZmlnXG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldEFsbFNlbGVjdGVkVGVybXMoKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2gobCA9PiB7XG4gICAgICBpZiAobC5jaGlsZHJlbiAmJiBsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBsLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgaWYgKGMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGVybXMucHVzaChjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKGNvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBsZXQgcHJldlNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goc2wgPT4ge1xuICAgICAgaWYgKHNsLmNhdGVnb3J5ICE9PSBjb2RlKSB7XG4gICAgICAgIHByZXZTZWxlY3RlZFRlcm1zLnB1c2goc2wpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmV2U2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldEtjbVNlYXJjaExpc3QocmVxdWVzdEJvZHk6IGFueSwgY2F0ZWdvcnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNhdGVnb3J5SXRlbTogc3RyaW5nO1xuICAgIGlmIChjYXRlZ29yeSA9PT0gJ3RoZW1lJykge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lUaGVtZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5U3ViVGhlbWUnO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9zZWFyY2hgLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdCcpKSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3QoaXRlbTogYW55LCBwYXJlbnQ6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICAgICAgICBpZiAoaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuICYmIGl0bURhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhICA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBpdG1EYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5pdG1EYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuID8gWy4uLml0bURhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcmFtZXdvcmtMaXN0KGNvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoY29sdW1uQ29kZSk7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgbGlzdERhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgfVxuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuYXNzb2NpYXRpb25zID8gWy4uLmxpc3REYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuID8gWy4uLmxpc3REYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7IFxuICAgIH1cbiAgfVxuXG4gIGdldEZyYW1ld29ya1JlYWQoZnJhbWVXb3JrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvJHtmcmFtZVdvcmtJZH1gLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0LmZyYW1ld29yaycpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDb25maWdPZkNhdGVnb3J5Q29uZmlnQnlGcmFtZVdvcmtJZChjb2RlOiBzdHJpbmcsIGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnQnlGcmFtZVdvcmtJZChmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIHVwZGF0ZUZ1bGxUZXJtRGF0YUxvY2FsTWFwKF9jb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShsaXN0RGF0YSwgcGFyZW50RGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3RUZXJtKGl0ZW06IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgIGl0bURhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBwYXJlbnRbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICAgICAgaXRtRGF0YVsnYWRkaXRpb25hbFByb3BlcnRpZXMnXSA9IHBhcmVudFsnYWRkaXRpb25hbFByb3BlcnRpZXMnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShpdG1EYXRhLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkU3RhdGVPcmcoX29yZ0RhdGE/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiAxLFxuICAgICAgICAgICAgbWluaXN0cnlPclN0YXRlVHlwZTogKF9vcmdEYXRhKSA/XG4gICAgICAgICAgICAgIF9vcmdEYXRhLnNiT3JnVHlwZSA6ICcnLFxuICAgICAgICAgICAgbWluaXN0cnlPclN0YXRlSWQ6IChfb3JnRGF0YSkgPyBcbiAgICAgICAgICAgICAgX29yZ0RhdGEuaWRlbnRpZmllciA6ICcnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzb3J0X2J5OiB7XG4gICAgICAgICAgICBjcmVhdGVkRGF0ZTogXCJkZXNjXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbWl0OiA5OTk5LFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICdvcmdOYW1lJyxcbiAgICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAncGFyZW50T3JnTmFtZScsXG4gICAgICAgICAgICAnbWluaXN0cnlPclN0YXRlSWQnLFxuICAgICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZVR5cGUnLFxuICAgICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZU5hbWUnLCBcbiAgICAgICAgICAgICdzYk9yZ1N1YlR5cGUnXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9ICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuT1JHX1YxX1NFQVJDSH1gLCByZXF1ZXN0Qm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBPcmcgZGF0YTonLCBlcnJvcik7XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBkYXRhIHRvIGNvbnRpbnVlIHRoZSBjaGFpbiBldmVuIGlmIHRoaXMgQVBJIGZhaWxzXG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJQZXJPcmcoX29yZ0RhdGE/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IG9yZ0lkcyA9IHRoaXMuYWRkaXRpb25hbERhdGEubWFwKChvcmc6IGFueSkgPT4gb3JnLmlkZW50aWZpZXIpO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICByb290T3JnSWQ6IG9yZ0lkc1xuICAgICAgICB9LFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICdyb290T3JnSWQnXG4gICAgICAgICAgXSxcbiAgICAgICAgbGltaXQ6IDEsXG4gICAgICAgIGZhY2V0czogW1xuICAgICAgICAgICAgXCJyb290T3JnSWRcIlxuICAgICAgICBdLFxuICAgICAgICBzb3J0X2J5OiB7XG4gICAgICAgICAgICBcImNyZWF0ZWREYXRlXCI6IFwiZGVzY1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb3JnSWRDb3VudHM6IHsgaWQ6IHN0cmluZywgY291bnQ6IG51bWJlciB9W10gPSBbXTtcbiAgICBpZiAodGhpcy5hZGRpdGlvbmFsRGF0YSAmJiB0aGlzLmFkZGl0aW9uYWxEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWRkaXRpb25hbERhdGEuZm9yRWFjaCgob3JnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG9yZy5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgb3JnSWRDb3VudHMucHVzaCh7XG4gICAgICAgICAgICBpZDogb3JnLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBjb3VudDogMCBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke0FQSV9FTkRQT0lOVC5VU0VSU19TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LnJlc3BvbnNlICYmIHJlcy5yZXN1bHQucmVzcG9uc2UuY291bnQpe1xuICAgICAgICBjb25zdCBmYWNldHNWYWx1ZSA9IHJlcy5yZXN1bHQucmVzcG9uc2UuZmFjZXRzIHx8IFtdOyAgXG4gICAgICAgICAgaWYgKGZhY2V0c1ZhbHVlICYmIGZhY2V0c1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9yZ0ZhY2V0ID0gZmFjZXRzVmFsdWUuZmluZCgoZmFjZXQ6IGFueSkgPT4gZmFjZXQubmFtZSA9PT0gJ3Jvb3RPcmdJZCcpO1xuICAgICAgICAgICAgaWYgKG9yZ0ZhY2V0ICYmIG9yZ0ZhY2V0LnZhbHVlcykge1xuICAgICAgICAgICAgICBvcmdGYWNldC52YWx1ZXMuZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yZ0luZGV4ID0gb3JnSWRDb3VudHMuZmluZEluZGV4KG9yZyA9PiBvcmcuaWQgPT09IHZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChvcmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIG9yZ0lkQ291bnRzW29yZ0luZGV4XS5jb3VudCA9IHZhbHVlLmNvdW50IHx8IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2VyQ291bnREYXRhID0gb3JnSWRDb3VudHM7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB1c2VyIGNvdW50IGRhdGE6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlckNvdW50KHRlcm06IGFueSk6IG51bWJlciB7XG4gICAgaWYgKHRlcm0gJiYgdGVybS5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiB0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKSB7XG4gICAgICBpZiAodGhpcy51c2VyQ291bnREYXRhICYmIHRoaXMudXNlckNvdW50RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHVzZXJDb3VudCA9IHRoaXMudXNlckNvdW50RGF0YS5maWx0ZXIoKHVzZXI6YW55KSA9PiB1c2VyLmlkID09PSB0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKVswXT8uY291bnQ7XG4gICAgICAgIHJldHVybiB1c2VyQ291bnQgfHwgMDtcbiAgICAgIH1cbiAgICB9IFxuICAgIHJldHVybiAwXG4gIH1cbn0iXX0=
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21
21
  }], taxonomyConfig: [{
22
22
  type: Input
23
23
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekQsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FWVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxSUNSbkMsaUNBQStCOzs0RkRRbEIsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjt1R0FLdEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtdjItdHJlZS1oaWVyYXJjaHknLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBlbnZpcm9ubWVudDogYW55O1xuICBASW5wdXQoKSB0YXhvbm9teUNvbmZpZzogYW55O1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnVwZGF0ZUVudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnQpO1xuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZXRDb25maWcodGhpcy50YXhvbm9teUNvbmZpZyk7XG4gIH1cbn1cbiIsIjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekQsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FWVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxSUNSbkMsaUNBQStCOzs0RkRRbEIsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjt1R0FLdEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtdjItdHJlZS1oaWVyYXJjaHknLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlSGllcmFyY2h5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW52aXJvbm1lbnQ6IGFueTtcbiAgQElucHV0KCkgdGF4b25vbXlDb25maWc6IGFueTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSkgeyBcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS51cGRhdGVFbnZpcm9ubWVudCh0aGlzLmVudmlyb25tZW50KTtcbiAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMudGF4b25vbXlDb25maWcpO1xuICB9XG59XG4iLCI8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
@@ -29,6 +29,8 @@ import { OdcsService } from './services/odcs.service';
29
29
  import { ENVIRONMENT } from './services/connection.service';
30
30
  import { OrgHierarchyAddModalComponent } from './components/org-hierarchy-add-modal/org-hierarchy-add-modal.component';
31
31
  import { TreeHierarchyService } from './tree-hierarchy.service';
32
+ import { CategoryEditModuleComponent } from './components/category-edit/category-edit-module/category-edit-module.component';
33
+ import { MatChipsModule } from '@angular/material/chips';
32
34
  import * as i0 from "@angular/core";
33
35
  export class TreeHierarchyModule {
34
36
  static forRoot(config) {
@@ -62,9 +64,11 @@ export class TreeHierarchyModule {
62
64
  OrderByPipe,
63
65
  ConforamtionPopupComponent,
64
66
  CreateTermFromFrameworkComponent,
65
- OrgHierarchyAddModalComponent], imports: [CommonModule,
67
+ OrgHierarchyAddModalComponent,
68
+ CategoryEditModuleComponent], imports: [CommonModule,
66
69
  MaterialModule,
67
- TreeEditorRoutingModule], exports: [TreeHierarchyComponent,
70
+ TreeEditorRoutingModule,
71
+ MatChipsModule], exports: [TreeHierarchyComponent,
68
72
  CreateCategoriesComponent,
69
73
  ConfigFrameworkComponent,
70
74
  TreeViewComponent,
@@ -82,7 +86,8 @@ export class TreeHierarchyModule {
82
86
  TreeHierarchyService
83
87
  ], imports: [CommonModule,
84
88
  MaterialModule,
85
- TreeEditorRoutingModule] }); }
89
+ TreeEditorRoutingModule,
90
+ MatChipsModule] }); }
86
91
  }
87
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyModule, decorators: [{
88
93
  type: NgModule,
@@ -108,11 +113,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
108
113
  ConforamtionPopupComponent,
109
114
  CreateTermFromFrameworkComponent,
110
115
  OrgHierarchyAddModalComponent,
116
+ CategoryEditModuleComponent,
111
117
  ],
112
118
  imports: [
113
119
  CommonModule,
114
120
  MaterialModule,
115
121
  TreeEditorRoutingModule,
122
+ MatChipsModule
116
123
  ],
117
124
  providers: [
118
125
  DatePipe,
@@ -135,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
135
142
  ]
136
143
  }]
137
144
  }] });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxD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bUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHVCQUF1QjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULFFBQVE7d0JBQ1IsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFO3dCQUVoRixFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ3hFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsRUFBRTt3QkFDcEUsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsV0FBVzt3QkFDWCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyZWVIaWVyYXJjaHlDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBBY3Rpb25CYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHByb3ZhbC9hcHByb3ZhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92ZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwcm92ZS12aWV3L2FwcHJvdmUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2F0ZWdvcmllcy1wcmV2aWV3L2NhdGVnb3JpZXMtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZm9yYW10aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29uZm9yYW10aW9uLXBvcHVwL2NvbmZvcmFtdGlvbi1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nvbm5lY3Rvci9jb25uZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZUNhdGVnb3JpZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLWNhdGVnb3JpZXMvY3JlYXRlLWNhdGVnb3JpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVUZXJtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS10ZXJtL2NyZWF0ZS10ZXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZW5kaW5nQXBwcm92YWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGVuZGluZy1hcHByb3ZhbC9wZW5kaW5nLWFwcHJvdmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlQ29sdW1uVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLWNvbHVtbi12aWV3L3RyZWUtY29sdW1uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRlcm1DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rlcm0tY2FyZC90ZXJtLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVycy9jb25maWctZnJhbWV3b3JrL2NvbmZpZy1mcmFtZXdvcmsuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVycy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmRlckJ5UGlwZSB9IGZyb20gJy4vcGlwZXMvb3JkZXItYnkucGlwZSc7XG5pbXBvcnQgeyBUcmVlRWRpdG9yUm91dGluZ01vZHVsZSB9IGZyb20gJy4vdHJlZS1oaWVyYXJjaHktcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNQVRfU05BQ0tfQkFSX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBNQVRfVEFCU19DT05GSUcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZyYW1ld29yay5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2xvY2FsLWNvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPZGNzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvb2Rjcy5zZXJ2aWNlJztcbmltcG9ydCB7IElDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2Nvbm5lY3Rpb24tdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4vc2VydmljZXMvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ0hpZXJhcmNoeUFkZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlSGllcmFyY2h5U2VydmljZSB9IGZyb20gJy4vdHJlZS1oaWVyYXJjaHkuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRyZWVIaWVyYXJjaHlDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcbiAgICBUZXJtQ2FyZENvbXBvbmVudCxcbiAgICBUcmVlQ29sdW1uVmlld0NvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudCxcbiAgICBDcmVhdGVUZXJtQ29tcG9uZW50LFxuICAgIENvbm5lY3RvckNvbXBvbmVudCxcbiAgICBBY3Rpb25CYXJDb21wb25lbnQsXG4gICAgQXBwcm92YWxDb21wb25lbnQsXG4gICAgUGVuZGluZ0FwcHJvdmFsQ29tcG9uZW50LFxuICAgIEFwcHJvdmVWaWV3Q29tcG9uZW50LFxuICAgIE9yZGVyQnlQaXBlLFxuICAgIENvbmZvcmFtdGlvblBvcHVwQ29tcG9uZW50LFxuICAgIENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgIE9yZ0hpZXJhcmNoeUFkZE1vZGFsQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFRyZWVFZGl0b3JSb3V0aW5nTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEYXRlUGlwZSxcbiAgICB7IHByb3ZpZGU6IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgYXBwZWFyYW5jZTogJ291dGxpbmUnIH0gfSxcbiAgICAvLyB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVG9rZW5JbnRlcmNlcHRvclNlcnZpY2UsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBNQVRfU05BQ0tfQkFSX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgZHVyYXRpb246IDIwMDAgfSB9LFxuICAgIHsgcHJvdmlkZTogTUFUX1RBQlNfQ09ORklHLCB1c2VWYWx1ZTogeyBhbmltYXRpb25EdXJhdGlvbjogJzBtcycgfSB9LFxuICAgIEZyYW1ld29ya1NlcnZpY2UsXG4gICAgQ29ubmVjdG9yU2VydmljZSxcbiAgICBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgIE9kY3NTZXJ2aWNlLFxuICAgIFRyZWVIaWVyYXJjaHlTZXJ2aWNlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmVlSGllcmFyY2h5Q29tcG9uZW50LFxuICAgIENyZWF0ZUNhdGVnb3JpZXNDb21wb25lbnQsXG4gICAgQ29uZmlnRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxuICAgIFRlcm1DYXJkQ29tcG9uZW50LFxuICAgIENhdGVnb3JpZXNQcmV2aWV3Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZUhpZXJhcmNoeU1vZHVsZSB7IFxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IElDb25uZWN0aW9uVHlwZSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VHJlZUhpZXJhcmNoeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVHJlZUhpZXJhcmNoeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlQsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufSJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxD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QWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3QiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixjQUFjO3FCQUNmO29CQUNELFNBQVMsRUFBRTt3QkFDVCxRQUFRO3dCQUNSLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRTt3QkFFaEYsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUN4RSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ3BFLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLFdBQVc7d0JBQ1gsb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmVlSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgQWN0aW9uQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwcm92YWwvYXBwcm92YWwuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FwcHJvdmUtdmlldy9hcHByb3ZlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGVnb3JpZXNQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhdGVnb3JpZXMtcHJldmlldy9jYXRlZ29yaWVzLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZvcmFtdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbmZvcmFtdGlvbi1wb3B1cC9jb25mb3JhbXRpb24tcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IENvbm5lY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0b3IvY29ubmVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS1jYXRlZ29yaWVzL2NyZWF0ZS1jYXRlZ29yaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVUZXJtRnJvbUZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtdGVybS1mcm9tLWZyYW1ld29yay9jcmVhdGUtdGVybS1mcm9tLWZyYW1ld29yay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3JlYXRlVGVybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtdGVybS9jcmVhdGUtdGVybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVuZGluZ0FwcHJvdmFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZUNvbHVtblZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS1jb2x1bW4tdmlldy90cmVlLWNvbHVtbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXJtQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZXJtLWNhcmQvdGVybS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maWdGcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuL2NvbnRhaW5lcnMvY29uZmlnLWZyYW1ld29yay9jb25maWctZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRhaW5lcnMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3JkZXJCeVBpcGUgfSBmcm9tICcuL3BpcGVzL29yZGVyLWJ5LnBpcGUnO1xuaW1wb3J0IHsgVHJlZUVkaXRvclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTUFUX1NOQUNLX0JBUl9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTUFUX1RBQlNfQ09ORklHIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9sb2NhbC1jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2Rjc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL29kY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9jb25uZWN0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZUhpZXJhcmNoeVNlcnZpY2UgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlFZGl0TW9kdWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhdGVnb3J5LWVkaXQvY2F0ZWdvcnktZWRpdC1tb2R1bGUvY2F0ZWdvcnktZWRpdC1tb2R1bGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUcmVlSGllcmFyY2h5Q29tcG9uZW50LFxuICAgIERhc2hib2FyZENvbXBvbmVudCxcbiAgICBDb25maWdGcmFtZXdvcmtDb21wb25lbnQsXG4gICAgQ3JlYXRlQ2F0ZWdvcmllc0NvbXBvbmVudCxcbiAgICBDb25maWdGcmFtZXdvcmtDb21wb25lbnQsXG4gICAgVHJlZVZpZXdDb21wb25lbnQsXG4gICAgVGVybUNhcmRDb21wb25lbnQsXG4gICAgVHJlZUNvbHVtblZpZXdDb21wb25lbnQsXG4gICAgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQsXG4gICAgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQsXG4gICAgQ3JlYXRlVGVybUNvbXBvbmVudCxcbiAgICBDb25uZWN0b3JDb21wb25lbnQsXG4gICAgQWN0aW9uQmFyQ29tcG9uZW50LFxuICAgIEFwcHJvdmFsQ29tcG9uZW50LFxuICAgIFBlbmRpbmdBcHByb3ZhbENvbXBvbmVudCxcbiAgICBBcHByb3ZlVmlld0NvbXBvbmVudCxcbiAgICBPcmRlckJ5UGlwZSxcbiAgICBDb25mb3JhbXRpb25Qb3B1cENvbXBvbmVudCxcbiAgICBDcmVhdGVUZXJtRnJvbUZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudCxcbiAgICBDYXRlZ29yeUVkaXRNb2R1bGVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgVHJlZUVkaXRvclJvdXRpbmdNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJyB9IH0sXG4gICAgLy8geyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFRva2VuSW50ZXJjZXB0b3JTZXJ2aWNlLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTUFUX1NOQUNLX0JBUl9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGR1cmF0aW9uOiAyMDAwIH0gfSxcbiAgICB7IHByb3ZpZGU6IE1BVF9UQUJTX0NPTkZJRywgdXNlVmFsdWU6IHsgYW5pbWF0aW9uRHVyYXRpb246ICcwbXMnIH0gfSxcbiAgICBGcmFtZXdvcmtTZXJ2aWNlLFxuICAgIENvbm5lY3RvclNlcnZpY2UsXG4gICAgTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICBPZGNzU2VydmljZSxcbiAgICBUcmVlSGllcmFyY2h5U2VydmljZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVHJlZUhpZXJhcmNoeUNvbXBvbmVudCxcbiAgICBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcbiAgICBUZXJtQ2FyZENvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlNb2R1bGUgeyBcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBJQ29ubmVjdGlvblR5cGUpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRyZWVIaWVyYXJjaHlNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRyZWVIaWVyYXJjaHlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEVOVklST05NRU5ULFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn0iXX0=