@eo-sdk/client 8.13.0-rc.1 → 8.14.0-rc.2

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/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.d.ts +1 -1
  2. package/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.d.ts +0 -1
  3. package/assets/_default/i18n/de.json +1 -0
  4. package/assets/_default/i18n/en.json +1 -0
  5. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +42 -8
  6. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  7. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  8. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  9. package/bundles/eo-sdk-client.umd.js +45 -60
  10. package/bundles/eo-sdk-client.umd.js.map +1 -1
  11. package/bundles/eo-sdk-client.umd.min.js +1 -1
  12. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  13. package/eo-sdk-client.metadata.json +1 -1
  14. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  15. package/esm2015/app/eo-client/settings/settings.component.js +7 -2
  16. package/esm2015/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.js +8 -5
  17. package/esm2015/app/eo-framework/app-shell/app-bar/app-process/app-process.component.js +17 -14
  18. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +2 -2
  19. package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +1 -1
  20. package/esm2015/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.js +4 -23
  21. package/esm2015/app/eo-framework/form-elements/id-reference/id-reference.component.js +3 -3
  22. package/esm2015/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.js +2 -5
  23. package/esm2015/app/eo-framework/form-elements/id-reference/service/reference-finder.service.js +2 -2
  24. package/esm2015/app/eo-framework/form-elements/organization/organization.component.js +1 -1
  25. package/esm2015/app/eo-framework/grid/filters/organization-filter.component.js +1 -1
  26. package/esm2015/projects/eo-sdk/core/lib/service/bpm/bpm.service.js +34 -8
  27. package/esm2015/projects/eo-sdk/core/lib/service/config/config.service.js +9 -1
  28. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +41 -7
  29. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  30. package/fesm2015/eo-sdk-client.js +42 -53
  31. package/fesm2015/eo-sdk-client.js.map +1 -1
  32. package/package.json +2 -2
  33. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  34. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +6 -1
  35. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +5 -0
  36. package/projects/eo-sdk/core/package.json +1 -1
  37. package/scss/_form.scss +1 -0
  38. package/styles.css +6 -0
@@ -49,11 +49,14 @@ export class BpmService {
49
49
  * Getter for the executable Processes. If types are provided, you'll get
50
50
  * only the processes that are executable for all of them
51
51
  * @param types List of dms object types to fetch executable processes for
52
+ * @param useCached If the cached data should be returned rather than requesting again
53
+ * @param additionalData If the additional form data should be also included
54
+ * @param modelid The process model ID to only return the data for one process
52
55
  * @returns List of executable processes
53
56
  */
54
- getExecutableProcesses(types, useCached) {
57
+ getExecutableProcesses(types, useCached, additionalData, modelid) {
55
58
  if (this.capabilities.hasCapability('bpm')) {
56
- return (!!this.executableProcesses && useCached) ? observableOf(this.executableProcesses) : this.fetchExecutableProcesses(types);
59
+ return (!!this.executableProcesses && useCached) ? observableOf(this.executableProcesses) : this.fetchExecutableProcesses(types, additionalData, modelid);
57
60
  }
58
61
  else {
59
62
  return observableOf([]);
@@ -70,19 +73,42 @@ export class BpmService {
70
73
  * @returns List of executable processes
71
74
  */
72
75
  getExecutableProcessesForDmsObjects(dmsObjects) {
73
- return this.getExecutableProcesses(dmsObjects.map(o => o.typeName));
76
+ return this.getExecutableProcesses(dmsObjects.map(o => o.typeName), false, true);
74
77
  }
75
78
  /**
76
79
  * Fetches executable Processes from the backend.
77
80
  * @param types List of dms object types to fetch executable processes for
81
+ * @param additionalData If the additional form data should be also included
82
+ * @param modelid The process model ID to only return the data for one process
78
83
  * @returns List of executable processes
79
84
  */
80
- fetchExecutableProcesses(types) {
81
- let uri = '/bpm/process/executable?form=true&fields=true';
85
+ fetchExecutableProcesses(types, additionalData, modelid) {
86
+ let uri = '/bpm/process/executable';
87
+ if (additionalData) {
88
+ uri += '?form=true&fields=true';
89
+ }
82
90
  if (types) {
83
- uri += `&type=${types.join(',')}`;
91
+ uri += (additionalData ? '&' : '?') + `type=${types.join(',')}`;
92
+ }
93
+ if (modelid) {
94
+ uri += (additionalData || types ? '&' : '?') + `modelid=${modelid}`;
84
95
  }
85
- return this.backend.get(uri).pipe(map(res => res), tap(res => this.executableProcesses = res));
96
+ return this.backend.get(uri).pipe(map(res => res), tap(res => {
97
+ // Extend existing processes with additional data, instead of overwriting all processes
98
+ if (additionalData) {
99
+ if (!this.executableProcesses)
100
+ this.executableProcesses = [];
101
+ res.forEach(proc => {
102
+ var existingProcIndex = this.executableProcesses.findIndex(item => item.id == proc.id);
103
+ if (existingProcIndex == -1)
104
+ this.executableProcesses.push(proc);
105
+ else
106
+ this.executableProcesses[existingProcIndex] = proc;
107
+ });
108
+ }
109
+ else
110
+ this.executableProcesses = res;
111
+ }));
86
112
  }
87
113
  /**
88
114
  * Getter for a processes file. The file of a process contains
@@ -251,4 +277,4 @@ BpmService.ctorParameters = () => [
251
277
  { type: EventService },
252
278
  { type: InboxService }
253
279
  ];
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFVckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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VUFBVSxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDRCQUE0QixDQUFDLFFBQWtCLEVBQUUsU0FBb0I7UUFDbkUsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtZQUMxSSxJQUFJLFFBQXFCLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsOERBQThEO2dCQUM5RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUFwUUYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG4gIGhhc01haW5FeGVjdXRhYmxlUHJvY2Vzc2VzOiBib29sZWFuO1xyXG4gIHByaXZhdGUgZXhlY3V0YWJsZVByb2Nlc3NlczogRXhlY3V0YWJsZVByb2Nlc3NbXTtcclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSwgdXNlQ2FjaGVkPzogYm9vbGVhbik6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiAoISF0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXMgJiYgdXNlQ2FjaGVkKSA/IG9ic2VydmFibGVPZih0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXMpIDogdGhpcy5mZXRjaEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0RXhlY3V0YWJsZVByb2Nlc3NlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVyaSA9ICcvYnBtL3Byb2Nlc3MvZXhlY3V0YWJsZSc7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldCh1cmkpLnBpcGUodGFwKHJlcyA9PiB0aGlzLmhhc01haW5FeGVjdXRhYmxlUHJvY2Vzc2VzID0gcmVzPy5sZW5ndGgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+IHJlcyBhcyBFeGVjdXRhYmxlUHJvY2Vzc1tdKSxcclxuICAgICAgdGFwKHJlcyA9PiB0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXMgPSByZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciBhIHByb2Nlc3NlcyBmaWxlLiBUaGUgZmlsZSBvZiBhIHByb2Nlc3MgY29udGFpbnNcclxuICAgKiBkbXMgb2JqZWN0cyBhdHRhY2hlZCB0byB0aGUgcHJvY2Vzcy5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIElEIG9mIHRoZSBwcm9jZXNzIHRvIGZldGNoIGF0dGFjaGVkIG9iamVjdHMgZm9yXHJcbiAgICovXHJcbiAgZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbGVFbnRyeVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiByZXMuY29udGVudC5tYXAoaSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogaS5lbGVtZW50aWQsXHJcbiAgICAgICAgICAgIHRpdGxlOiBpLnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaS5kZXNjcmlwdGlvbiA/IGkuZGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICAgICAgaWNvbmlkOiBpLmljb25pZCxcclxuICAgICAgICAgICAgY3JlYXRvcjogaS5jcmVhdG9yLFxyXG4gICAgICAgICAgICBhZGR0aW1lOiBpLmFkZHRpbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IGkudHlwZVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIHdvcmsgaXRlbS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIElEIG9mIHRoZSBwYXJlbnQgcHJvY2Vzc1xyXG4gICAqIEBwYXJhbSBpdGVtSWQgSUQgb2YgdGhlIHdvcmsgaXRlbSBpdHNlbGZcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGJlIGFkZGVkIHRvIHRoZSBiYWNrZW5kIGNhbGxcclxuICAgKiBAcmV0dXJucyBhIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkOiBzdHJpbmcsIGl0ZW1JZDogc3RyaW5nLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucyA/IG9wdGlvbnMgOiB7Zm9ybTogdHJ1ZSwgZmllbGRzOiB0cnVlfTtcclxuICAgIGNvbnN0IHRhc2tzID0gW1xyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbihVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2l0ZW1JZH1gLCBwYXJhbXMpKSxcclxuICAgICAgdGhpcy5nZXRQcm9jZXNzRmlsZShwcm9jZXNzSWQpXHJcbiAgICBdO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0YXNrcykucGlwZShcclxuICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgY29uc3Qgd2kgPSBuZXcgV29ya0l0ZW0ocmVzWzBdKTtcclxuICAgICAgICB3aS5zZXRGaWxlKHJlc1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHdpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyBhIHdvcmsgaXRlbS5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIHNhdmVkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBzYXZlV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB7aWQsIHByb2Nlc3NJZCwgZmlsZSwgZGF0YX0gPSBpdGVtO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtjb250ZW50czogZmlsZSwgZGF0YX07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IHRydWUsIGlzYXV0b2xvY2s6IGZhbHNlfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wb3N0KFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9LyR7aWR9L3NhdmVgLCBwYXJhbXMpLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yd2FyZHMgYSB3b3JrIGl0ZW0uIElmIGEgV29ya0l0ZW0gcHJvdmlkZXMgZGlmZmVyZW50IGFjdGlvbnMgKEBsaW5rIFdvcmtJdGVtQWN0aW9uKVxyXG4gICAqIHlvdSBjYW4gcHJvdmlkZSB0aGUgc2VsZWN0ZWQgYWN0aW9uIHRvby5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIGZvcndhcmRlZFxyXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHVzZWQgZm9yIGZvcndhcmRpbmdcclxuICAgKi9cclxuICBmb3J3YXJkV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0sIGFjdGlvbj86IFdvcmtJdGVtQWN0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtrZWVwbG9jazogZmFsc2UsIGlzYXV0b2xvY2s6IGZhbHNlfTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICBjb250ZW50czogaXRlbS5maWxlLFxyXG4gICAgICBkYXRhOiBpdGVtLmRhdGFcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wb3N0KFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuaW5ib3hTZXJ2aWNlLnVwZGF0ZUluYm94SXRlbXMoaXRlbS5pZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2NrcyBhIFdvcmtJdGVtIGZvciB0aGUgY3VycmVudCB1c2VyIChwZXJzb25hbGl6YXRpb24pLCBtZWFuaW5nIHRoYXQgdGhlXHJcbiAgICogY3VycmVudCB1c2VyIGlzIG5vdyBpbiBjaGFyZ2Ugb2YgZnVsZmlsbGluZyB0aGUgV29ya0l0ZW0gdGFzay5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgV29ya0l0ZW0gdG8gYmUgbG9ja2VkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBsb2NrV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dChgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vbG9ja2ApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0oaXRlbS5wcm9jZXNzSWQsIGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVsZWFzZXMgdGhlIGxvY2sgZm9yIGEgV29ya0l0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSB1bmxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgdW5sb2NrV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vbG9ja2ApLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0oaXRlbS5wcm9jZXNzSWQsIGl0ZW0uaWQpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBhbiBleGVjdXRhYmxlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIGV4ZWN1dGFibGVQcm9jZXNzSWQgSUQgb2YgdGhlIGV4ZWN1dGFibGUgUHJvY2VzcyB0byBiZSBzdGFydGVkXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIHByb2Nlc3MgKHNpbXBsZSBvYmplY3Qgb2Yga2V5L3ZhbHVlIHBhaXJzKVxyXG4gICAqIEBwYXJhbSBjb250ZW50cyBPYmplY3RzIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBwcm9jZXNzIChwcm9jZXNzLmZpbGUpLlxyXG4gICAqL1xyXG4gIHN0YXJ0UHJvY2VzcyhleGVjdXRhYmxlUHJvY2Vzc0lkOiBzdHJpbmcsIGRhdGE6IGFueSwgY29udGVudHM6IHtpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmd9W10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KGAvYnBtL3Byb2Nlc3MvP21vZGVsaWQ9JHtleGVjdXRhYmxlUHJvY2Vzc0lkfWAsIHtcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgY29udGVudHM6IGNvbnRlbnRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGhpc3RvcnkgZm9yIGEgcHJvY2Vzcy4gV2hpY2ggZW50cmllcyBhcmUgcmV0dXJuZWQgZGVwZW5kcyBvbiB0aGVcclxuICAgKiBwZXJtaXNzaW9ucyBvZiB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzIHRvIGZldGNoIGhpc3RvcnkgZm9yXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxXb3JrSXRlbUhpc3RvcnlFbnRyeVtdPlxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NIaXN0b3J5KHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXb3JrSXRlbUhpc3RvcnlFbnRyeVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2hpc3RvcnlgKVxyXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcyAmJiByZXMubGVuZ3RoID8gcmVzLm1hcChpdGVtID0+IG5ldyBXb3JrSXRlbUhpc3RvcnlFbnRyeShpdGVtKSkgOiBbXSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGNvbnRlbnQgZnJvbSB0aGUgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzIHRvIHJlbW92ZSB0aGUgaXRlbSBmcm9tXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSB3b3JrIGl0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gd29ya0l0ZW1Db250ZW50SWQgVGhlIHRoZSBJRCBvZiB0aGUgZmlsZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICByZW1vdmVGaWxlRWxlbWVudChwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCB3b3JrSXRlbUNvbnRlbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmRlbChgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGUvJHt3b3JrSXRlbUNvbnRlbnRJZH0/YWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgY29udGVudHMgdG8gYSB3b3JrIGl0ZW1zIGZpbGUuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBUaGUgSUQgb2YgdGhlIHByb2Nlc3NcclxuICAgKiBAcGFyYW0gd29ya0l0ZW1JZCBUaGUgSUQgb2YgdGhlIGFjdGl2aXR5XHJcbiAgICogQHBhcmFtIGVsZW1lbnRzIFRoZSBFbGVtZW50cyB0byBiZSBhZGRlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgYWRkRmlsZUVsZW1lbnRzKHByb2Nlc3NJZDogc3RyaW5nLCB3b3JrSXRlbUlkOiBzdHJpbmcsIGVsZW1lbnRzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHRhc2tzID0gW107XHJcbiAgICBlbGVtZW50cy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgIHRhc2tzLnB1c2godGhpcy5iYWNrZW5kLnBvc3QoXHJcbiAgICAgICAgYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7ZS5pZH0/dHlwZT0ke2UudHlwZS5uYW1lfSZhY3Rpdml0eWlkPSR7d29ya0l0ZW1JZH1gLFxyXG4gICAgICAgIHt9LCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkLCB3b3JrSXRlbUlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIG9iamVjdHMgZnJvbSB0aGUgY2xpcGJvYXJkIHRvIGEgV29ya0l0ZW0uXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtIFRoZSB3b3JrSXRlbSB0byBhZGQgdGhlIG9iamVjdHMgdG9cclxuICAgKiBAcGFyYW0gY2xpcGJvYXJkIENsaXBib2FyZCBvYmplY3QgaG9sZGluZyB1c2VyIHNlbGVjdGVkIG9iamVjdHNcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50c0Zyb21DbGlwYm9hcmQod29ya0l0ZW06IFdvcmtJdGVtLCBjbGlwYm9hcmQ6IENsaXBib2FyZCk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGlmICgod29ya0l0ZW0gJiYgd29ya0l0ZW0uZmlsZUVudHJ5UGVybWlzc2lvbnMuYWRkKSAmJiBjbGlwYm9hcmQgJiYgY2xpcGJvYXJkLmVsZW1lbnRzLmxlbmd0aCAmJiBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSkge1xyXG4gICAgICBsZXQgY29udGVudHM6IERtc09iamVjdFtdO1xyXG4gICAgICBpZiAod29ya0l0ZW0uZmlsZS5sZW5ndGgpIHtcclxuICAgICAgICAvLyBvbmx5IGFkZCBpdGVtcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBhdHRhY2htZW50c1xyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRJZHMgPSB3b3JrSXRlbS5maWxlLm1hcChlID0+IGUuaWQpO1xyXG4gICAgICAgIGNvbnRlbnRzID0gY2xpcGJvYXJkLmVsZW1lbnRzLmZpbHRlcihlID0+IGF0dGFjaG1lbnRJZHMuaW5kZXhPZihlLmlkKSA9PT0gLTEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRlbnRzID0gY2xpcGJvYXJkLmVsZW1lbnRzO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmFkZEZpbGVFbGVtZW50cyh3b3JrSXRlbS5wcm9jZXNzSWQsIHdvcmtJdGVtLmlkLCBjb250ZW50cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoJ2Vycm9yJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFVckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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LFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQzFJLElBQUksUUFBcUIsQ0FBQztZQUMxQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN4Qiw4REFBOEQ7Z0JBQzlELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9FO2lCQUFNO2dCQUNMLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO2FBQy9CO1lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN4RTthQUFNO1lBQ0wsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7OztZQTdSRixVQUFVOzs7WUFmSCxtQkFBbUI7WUFMbkIsY0FBYztZQUlkLFlBQVk7WUFEWixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mIGFzIG9ic2VydmFibGVPZiwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWVyZ2VNYXAsIHRhcCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7V29ya0l0ZW1IaXN0b3J5RW50cnl9IGZyb20gJy4uLy4uL21vZGVsL3dvcmstaXRlbS1oaXN0b3J5Lm1vZGVsJztcclxuaW1wb3J0IHtEbXNPYmplY3R9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xyXG5pbXBvcnQge0luYm94U2VydmljZX0gZnJvbSAnLi4vaW5ib3gvaW5ib3guc2VydmljZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7Q2FwYWJpbGl0aWVzU2VydmljZX0gZnJvbSAnLi4vY2FwYWJpbGl0aWVzL2NhcGFiaWxpdGllcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeGVjdXRhYmxlUHJvY2VzcywgRmlsZUVudHJ5LCBQcm9jZXNzLCBXb3JrSXRlbSwgV29ya0l0ZW1BY3Rpb259IGZyb20gJy4uLy4uL21vZGVsL2JwbS5tb2RlbCc7XHJcbmltcG9ydCB7Q2xpcGJvYXJkfSBmcm9tICcuLi9jbGlwYm9hcmQvY2xpcGJvYXJkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Q2xpcGJvYXJkQWN0aW9ufSBmcm9tICcuLi9jbGlwYm9hcmQvY2xpcGJvYXJkLWFjdGlvbi5lbnVtJztcclxuXHJcbi8qKlxyXG4gKiBgQnBtU2VydmljZWAgaGFuZGxlcyBpbnRlcmFjdGlvbiByZWxhdGVkIHRvIEJQTSB0YXNrcy5cclxuICpcclxuICogVGhlIG1haW4gcGFydHMgcHJvdmlkZWQgYW5kIHVzZWQgYnkgdGhpcyBzZXJ2aWNlIGFyZSBQcm9jZXNzZXMgYW5kIFdvcmtJdGVtcy5cclxuICogUHJvY2Vzc2VzIGFyZSBkZWZpbmVkIG9uIHRoZSBiYWNrZW5kIHNpZGUuIFRoZXkgZGVzY3JpYmUgYSBzZXQgb2YgdGFza3MgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGJ5IHRoZSBwcm9jZXNzLlxyXG4gKiBUYXNrcyB0aGF0IHJlcXVpcmUgdXNlciBpbnRlcmFjdGlvbiBhcmUgcmVmZXJyZWQgdG8gYXMgV29ya0l0ZW1zLlxyXG4gKlxyXG4gKiBQcm9jZXNzZXMgY2FuIGJlIHJlbGF0ZWQgdG8gYSBzcGVjaWFsIG9iamVjdCB0eXBlLCBidXQgdGhleSBkb24ndCBoYXZlIHRvLiBJbiBhZGRpdGlvbiB0byB0aGF0IHRoZXkgY2FuIHJlZmVyXHJcbiAqIHRvIGRtcyBvYmplY3RzLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQnBtU2VydmljZSB7XHJcbiAgaGFzTWFpbkV4ZWN1dGFibGVQcm9jZXNzZXM6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBleGVjdXRhYmxlUHJvY2Vzc2VzOiBFeGVjdXRhYmxlUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zOiBQcm9jZXNzW107XHJcbiAgcHJpdmF0ZSBwcm9jZXNzSXRlbXNTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxQcm9jZXNzW10+KDEpO1xyXG4gIC8qKlxyXG4gICAqIExvbmcgdGVybSBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBjdXJyZW50IHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIHByb2Nlc3NJdGVtcyQ6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiA9IHRoaXMucHJvY2Vzc0l0ZW1zU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYWxsIHByb2Nlc3NlcyBvZiB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHNpemUgTWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcmV0dXJucyBMaXN0IG9mIFByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NlcyhzaXplOiBudW1iZXIgPSAxMDAwKTogT2JzZXJ2YWJsZTxQcm9jZXNzW10+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24oYC9wcm9jZXNzL3VzZXI/c2l6ZT0ke3NpemV9YCwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmNvbnRlbnQubWFwKGl0ZW0gPT4gbmV3IFByb2Nlc3MoaXRlbSkpKSxcclxuICAgICAgICB0YXAoKHByb2Nlc3NlczogUHJvY2Vzc1tdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtcyA9IHByb2Nlc3NlcztcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc0l0ZW1zU291cmNlLm5leHQodGhpcy5wcm9jZXNzSXRlbXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBleGVjdXRhYmxlIFByb2Nlc3Nlcy4gSWYgdHlwZXMgYXJlIHByb3ZpZGVkLCB5b3UnbGwgZ2V0XHJcbiAgICogb25seSB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGV4ZWN1dGFibGUgZm9yIGFsbCBvZiB0aGVtXHJcbiAgICogQHBhcmFtIHR5cGVzIExpc3Qgb2YgZG1zIG9iamVjdCB0eXBlcyB0byBmZXRjaCBleGVjdXRhYmxlIHByb2Nlc3NlcyBmb3JcclxuICAgKiBAcGFyYW0gdXNlQ2FjaGVkIElmIHRoZSBjYWNoZWQgZGF0YSBzaG91bGQgYmUgcmV0dXJuZWQgcmF0aGVyIHRoYW4gcmVxdWVzdGluZyBhZ2FpblxyXG4gICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBJZiB0aGUgYWRkaXRpb25hbCBmb3JtIGRhdGEgc2hvdWxkIGJlIGFsc28gaW5jbHVkZWRcclxuICAgKiBAcGFyYW0gbW9kZWxpZCBUaGUgcHJvY2VzcyBtb2RlbCBJRCB0byBvbmx5IHJldHVybiB0aGUgZGF0YSBmb3Igb25lIHByb2Nlc3NcclxuICAgKiBAcmV0dXJucyBMaXN0IG9mIGV4ZWN1dGFibGUgcHJvY2Vzc2VzXHJcbiAgICovXHJcbiAgZ2V0RXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdLCB1c2VDYWNoZWQ/OiBib29sZWFuLCBhZGRpdGlvbmFsRGF0YT86IGJvb2xlYW4sIG1vZGVsaWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV4ZWN1dGFibGVQcm9jZXNzW10+IHtcclxuICAgIGlmICh0aGlzLmNhcGFiaWxpdGllcy5oYXNDYXBhYmlsaXR5KCdicG0nKSkge1xyXG4gICAgICByZXR1cm4gKCEhdGhpcy5leGVjdXRhYmxlUHJvY2Vzc2VzICYmIHVzZUNhY2hlZCkgPyBvYnNlcnZhYmxlT2YodGhpcy5leGVjdXRhYmxlUHJvY2Vzc2VzKSA6IHRoaXMuZmV0Y2hFeGVjdXRhYmxlUHJvY2Vzc2VzKHR5cGVzLCBhZGRpdGlvbmFsRGF0YSwgbW9kZWxpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRFeGVjdXRhYmxlUHJvY2Vzc2VzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlJztcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KHVyaSkucGlwZSh0YXAocmVzID0+IHRoaXMuaGFzTWFpbkV4ZWN1dGFibGVQcm9jZXNzZXMgPSByZXM/Lmxlbmd0aCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBleGVjdXRhYmxlIFByb2Nlc3NlcyBmb3IgYSBnaXZlbiBzZXQgb2YgZG1zIG9iamVjdC5Zb3UnbGwgZ2V0XHJcbiAgICogb25seSB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGV4ZWN1dGFibGUgZm9yIGFsbCBvZiB0aGVtLlxyXG4gICAqIEBwYXJhbSBkbXNPYmplY3RzIExpc3Qgb2YgZG1zIG9iamVjdHMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXNGb3JEbXNPYmplY3RzKGRtc09iamVjdHM6IERtc09iamVjdFtdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFeGVjdXRhYmxlUHJvY2Vzc2VzKGRtc09iamVjdHMubWFwKG8gPT4gby50eXBlTmFtZSksIGZhbHNlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBJZiB0aGUgYWRkaXRpb25hbCBmb3JtIGRhdGEgc2hvdWxkIGJlIGFsc28gaW5jbHVkZWRcclxuICAgKiBAcGFyYW0gbW9kZWxpZCBUaGUgcHJvY2VzcyBtb2RlbCBJRCB0byBvbmx5IHJldHVybiB0aGUgZGF0YSBmb3Igb25lIHByb2Nlc3NcclxuICAgKiBAcmV0dXJucyBMaXN0IG9mIGV4ZWN1dGFibGUgcHJvY2Vzc2VzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSwgYWRkaXRpb25hbERhdGE/OiBib29sZWFuLCBtb2RlbGlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlJztcclxuICAgIGlmIChhZGRpdGlvbmFsRGF0YSkge1xyXG4gICAgICB1cmkgKz0gJz9mb3JtPXRydWUmZmllbGRzPXRydWUnO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVzKSB7XHJcbiAgICAgIHVyaSArPSAoYWRkaXRpb25hbERhdGEgPyAnJicgOiAnPycpICsgYHR5cGU9JHt0eXBlcy5qb2luKCcsJyl9YDtcclxuICAgIH1cclxuICAgIGlmIChtb2RlbGlkKSB7XHJcbiAgICAgIHVyaSArPSAoYWRkaXRpb25hbERhdGEgfHwgdHlwZXMgPyAnJicgOiAnPycpICsgYG1vZGVsaWQ9JHttb2RlbGlkfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldCh1cmkpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pLFxyXG4gICAgICB0YXAocmVzID0+IHtcclxuICAgICAgICAvLyBFeHRlbmQgZXhpc3RpbmcgcHJvY2Vzc2VzIHdpdGggYWRkaXRpb25hbCBkYXRhLCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGFsbCBwcm9jZXNzZXNcclxuICAgICAgICBpZiAoYWRkaXRpb25hbERhdGEpIHtcclxuICAgICAgICAgIGlmKCF0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXMpIHRoaXMuZXhlY3V0YWJsZVByb2Nlc3NlcyA9IFtdO1xyXG4gICAgICAgICAgcmVzLmZvckVhY2gocHJvYyA9PiB7XHJcbiAgICAgICAgICAgIHZhciBleGlzdGluZ1Byb2NJbmRleCA9IHRoaXMuZXhlY3V0YWJsZVByb2Nlc3Nlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IHByb2MuaWQpO1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdQcm9jSW5kZXggPT0gLTEpXHJcbiAgICAgICAgICAgICAgdGhpcy5leGVjdXRhYmxlUHJvY2Vzc2VzLnB1c2gocHJvYyk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXNbZXhpc3RpbmdQcm9jSW5kZXhdID0gcHJvYztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmV4ZWN1dGFibGVQcm9jZXNzZXMgPSByZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciBhIHByb2Nlc3NlcyBmaWxlLiBUaGUgZmlsZSBvZiBhIHByb2Nlc3MgY29udGFpbnNcclxuICAgKiBkbXMgb2JqZWN0cyBhdHRhY2hlZCB0byB0aGUgcHJvY2Vzcy5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIElEIG9mIHRoZSBwcm9jZXNzIHRvIGZldGNoIGF0dGFjaGVkIG9iamVjdHMgZm9yXHJcbiAgICovXHJcbiAgZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbGVFbnRyeVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiByZXMuY29udGVudC5tYXAoaSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogaS5lbGVtZW50aWQsXHJcbiAgICAgICAgICAgIHRpdGxlOiBpLnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaS5kZXNjcmlwdGlvbiA/IGkuZGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICAgICAgaWNvbmlkOiBpLmljb25pZCxcclxuICAgICAgICAgICAgY3JlYXRvcjogaS5jcmVhdG9yLFxyXG4gICAgICAgICAgICBhZGR0aW1lOiBpLmFkZHRpbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IGkudHlwZVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIHdvcmsgaXRlbS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIElEIG9mIHRoZSBwYXJlbnQgcHJvY2Vzc1xyXG4gICAqIEBwYXJhbSBpdGVtSWQgSUQgb2YgdGhlIHdvcmsgaXRlbSBpdHNlbGZcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGJlIGFkZGVkIHRvIHRoZSBiYWNrZW5kIGNhbGxcclxuICAgKiBAcmV0dXJucyBhIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkOiBzdHJpbmcsIGl0ZW1JZDogc3RyaW5nLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucyA/IG9wdGlvbnMgOiB7Zm9ybTogdHJ1ZSwgZmllbGRzOiB0cnVlfTtcclxuICAgIGNvbnN0IHRhc2tzID0gW1xyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbihVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2l0ZW1JZH1gLCBwYXJhbXMpKSxcclxuICAgICAgdGhpcy5nZXRQcm9jZXNzRmlsZShwcm9jZXNzSWQpXHJcbiAgICBdO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0YXNrcykucGlwZShcclxuICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgY29uc3Qgd2kgPSBuZXcgV29ya0l0ZW0ocmVzWzBdKTtcclxuICAgICAgICB3aS5zZXRGaWxlKHJlc1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHdpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyBhIHdvcmsgaXRlbS5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIHNhdmVkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBzYXZlV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB7aWQsIHByb2Nlc3NJZCwgZmlsZSwgZGF0YX0gPSBpdGVtO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtjb250ZW50czogZmlsZSwgZGF0YX07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IHRydWUsIGlzYXV0b2xvY2s6IGZhbHNlfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wb3N0KFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9LyR7aWR9L3NhdmVgLCBwYXJhbXMpLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yd2FyZHMgYSB3b3JrIGl0ZW0uIElmIGEgV29ya0l0ZW0gcHJvdmlkZXMgZGlmZmVyZW50IGFjdGlvbnMgKEBsaW5rIFdvcmtJdGVtQWN0aW9uKVxyXG4gICAqIHlvdSBjYW4gcHJvdmlkZSB0aGUgc2VsZWN0ZWQgYWN0aW9uIHRvby5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIGZvcndhcmRlZFxyXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHVzZWQgZm9yIGZvcndhcmRpbmdcclxuICAgKi9cclxuICBmb3J3YXJkV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0sIGFjdGlvbj86IFdvcmtJdGVtQWN0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtrZWVwbG9jazogZmFsc2UsIGlzYXV0b2xvY2s6IGZhbHNlfTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICBjb250ZW50czogaXRlbS5maWxlLFxyXG4gICAgICBkYXRhOiBpdGVtLmRhdGFcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wb3N0KFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuaW5ib3hTZXJ2aWNlLnVwZGF0ZUluYm94SXRlbXMoaXRlbS5pZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2NrcyBhIFdvcmtJdGVtIGZvciB0aGUgY3VycmVudCB1c2VyIChwZXJzb25hbGl6YXRpb24pLCBtZWFuaW5nIHRoYXQgdGhlXHJcbiAgICogY3VycmVudCB1c2VyIGlzIG5vdyBpbiBjaGFyZ2Ugb2YgZnVsZmlsbGluZyB0aGUgV29ya0l0ZW0gdGFzay5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgV29ya0l0ZW0gdG8gYmUgbG9ja2VkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBsb2NrV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dChgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vbG9ja2ApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0oaXRlbS5wcm9jZXNzSWQsIGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVsZWFzZXMgdGhlIGxvY2sgZm9yIGEgV29ya0l0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSB1bmxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgdW5sb2NrV29ya0l0ZW0oaXRlbTogV29ya0l0ZW0pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vbG9ja2ApLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0oaXRlbS5wcm9jZXNzSWQsIGl0ZW0uaWQpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBhbiBleGVjdXRhYmxlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIGV4ZWN1dGFibGVQcm9jZXNzSWQgSUQgb2YgdGhlIGV4ZWN1dGFibGUgUHJvY2VzcyB0byBiZSBzdGFydGVkXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIHByb2Nlc3MgKHNpbXBsZSBvYmplY3Qgb2Yga2V5L3ZhbHVlIHBhaXJzKVxyXG4gICAqIEBwYXJhbSBjb250ZW50cyBPYmplY3RzIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBwcm9jZXNzIChwcm9jZXNzLmZpbGUpLlxyXG4gICAqL1xyXG4gIHN0YXJ0UHJvY2VzcyhleGVjdXRhYmxlUHJvY2Vzc0lkOiBzdHJpbmcsIGRhdGE6IGFueSwgY29udGVudHM6IHtpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmd9W10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KGAvYnBtL3Byb2Nlc3MvP21vZGVsaWQ9JHtleGVjdXRhYmxlUHJvY2Vzc0lkfWAsIHtcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgY29udGVudHM6IGNvbnRlbnRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGhpc3RvcnkgZm9yIGEgcHJvY2Vzcy4gV2hpY2ggZW50cmllcyBhcmUgcmV0dXJuZWQgZGVwZW5kcyBvbiB0aGVcclxuICAgKiBwZXJtaXNzaW9ucyBvZiB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzIHRvIGZldGNoIGhpc3RvcnkgZm9yXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxXb3JrSXRlbUhpc3RvcnlFbnRyeVtdPlxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NIaXN0b3J5KHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXb3JrSXRlbUhpc3RvcnlFbnRyeVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2hpc3RvcnlgKVxyXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcyAmJiByZXMubGVuZ3RoID8gcmVzLm1hcChpdGVtID0+IG5ldyBXb3JrSXRlbUhpc3RvcnlFbnRyeShpdGVtKSkgOiBbXSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGNvbnRlbnQgZnJvbSB0aGUgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzIHRvIHJlbW92ZSB0aGUgaXRlbSBmcm9tXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSB3b3JrIGl0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gd29ya0l0ZW1Db250ZW50SWQgVGhlIHRoZSBJRCBvZiB0aGUgZmlsZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICByZW1vdmVGaWxlRWxlbWVudChwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCB3b3JrSXRlbUNvbnRlbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmRlbChgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGUvJHt3b3JrSXRlbUNvbnRlbnRJZH0/YWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgY29udGVudHMgdG8gYSB3b3JrIGl0ZW1zIGZpbGUuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBUaGUgSUQgb2YgdGhlIHByb2Nlc3NcclxuICAgKiBAcGFyYW0gd29ya0l0ZW1JZCBUaGUgSUQgb2YgdGhlIGFjdGl2aXR5XHJcbiAgICogQHBhcmFtIGVsZW1lbnRzIFRoZSBFbGVtZW50cyB0byBiZSBhZGRlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgYWRkRmlsZUVsZW1lbnRzKHByb2Nlc3NJZDogc3RyaW5nLCB3b3JrSXRlbUlkOiBzdHJpbmcsIGVsZW1lbnRzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHRhc2tzID0gW107XHJcbiAgICBlbGVtZW50cy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgIHRhc2tzLnB1c2godGhpcy5iYWNrZW5kLnBvc3QoXHJcbiAgICAgICAgYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7ZS5pZH0/dHlwZT0ke2UudHlwZS5uYW1lfSZhY3Rpdml0eWlkPSR7d29ya0l0ZW1JZH1gLFxyXG4gICAgICAgIHt9LCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkLCB3b3JrSXRlbUlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIG9iamVjdHMgZnJvbSB0aGUgY2xpcGJvYXJkIHRvIGEgV29ya0l0ZW0uXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtIFRoZSB3b3JrSXRlbSB0byBhZGQgdGhlIG9iamVjdHMgdG9cclxuICAgKiBAcGFyYW0gY2xpcGJvYXJkIENsaXBib2FyZCBvYmplY3QgaG9sZGluZyB1c2VyIHNlbGVjdGVkIG9iamVjdHNcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50c0Zyb21DbGlwYm9hcmQod29ya0l0ZW06IFdvcmtJdGVtLCBjbGlwYm9hcmQ6IENsaXBib2FyZCk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGlmICgod29ya0l0ZW0gJiYgd29ya0l0ZW0uZmlsZUVudHJ5UGVybWlzc2lvbnMuYWRkKSAmJiBjbGlwYm9hcmQgJiYgY2xpcGJvYXJkLmVsZW1lbnRzLmxlbmd0aCAmJiBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSkge1xyXG4gICAgICBsZXQgY29udGVudHM6IERtc09iamVjdFtdO1xyXG4gICAgICBpZiAod29ya0l0ZW0uZmlsZS5sZW5ndGgpIHtcclxuICAgICAgICAvLyBvbmx5IGFkZCBpdGVtcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBhdHRhY2htZW50c1xyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRJZHMgPSB3b3JrSXRlbS5maWxlLm1hcChlID0+IGUuaWQpO1xyXG4gICAgICAgIGNvbnRlbnRzID0gY2xpcGJvYXJkLmVsZW1lbnRzLmZpbHRlcihlID0+IGF0dGFjaG1lbnRJZHMuaW5kZXhPZihlLmlkKSA9PT0gLTEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRlbnRzID0gY2xpcGJvYXJkLmVsZW1lbnRzO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmFkZEZpbGVFbGVtZW50cyh3b3JrSXRlbS5wcm9jZXNzSWQsIHdvcmtJdGVtLmlkLCBjb250ZW50cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoJ2Vycm9yJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -58,6 +58,14 @@ export class Config {
58
58
  getClientLocales() {
59
59
  return this.cfg['languages'];
60
60
  }
61
+ /**
62
+ * Getter for the supported client locales
63
+ * @returns supported client locales
64
+ */
65
+ getSupportedClientLocales() {
66
+ return ['en', 'de', 'ar', 'es', 'pt', 'fr', 'zh', 'lv', 'ru', 'it', 'nl', 'sk', 'pl', 'uk', 'ja', 'ko', 'hi', 'bn', 'de-CH', 'zh-Hant',
67
+ 'th', 'vi', 'en-GB', 'he'];
68
+ }
61
69
  /**
62
70
  * Get the dashboards background image
63
71
  * @returns background image uri for the dashboards background image
@@ -104,4 +112,4 @@ Config.ctorParameters = () => [
104
112
  { type: TranslateService },
105
113
  { type: EventService }
106
114
  ];
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvY29uZmlnL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFNUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sTUFBTTtJQUlqQjs7T0FFRztJQUNILFlBQW9CLFNBQTJCLEVBQVUsS0FBbUI7UUFBeEQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBTHBFLFFBQUcsR0FBZ0IsSUFBSSxDQUFDO0lBTWhDLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxHQUFHLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFxQjtRQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxzQkFBc0I7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBdEdGLFVBQVU7OztZQVRILGdCQUFnQjtZQUVoQixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9Db25maWd9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBhbGwgQ29uZmlndXJhdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZyB7XHJcblxyXG4gIHByaXZhdGUgY2ZnOiBFbmFpb0NvbmZpZyA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBldmVudDogRXZlbnRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplR3JpZCgpIHtcclxuICAgIHRoaXMuZXZlbnQudHJpZ2dlcihFbmFpb0V2ZW50LkVPX0xJQ0VOU0VfR1JJRCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogU2V0IGR1cmluZyBhcHAgaW5pdCAoc2VlIENvcmVJbml0KVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXQoY2ZnOiBFbmFpb0NvbmZpZykge1xyXG4gICAgdGhpcy5jZmcgPSBjZmc7XHJcbiAgICBjb25zdCBsYW5ndWFnZXMgPSB0aGlzLmdldENsaWVudExvY2FsZXMoKS5tYXAobGFuZyA9PiBsYW5nLmlzbyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcodGhpcy5nZXREZWZhdWx0Q2xpZW50TG9jYWxlKCkpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplR3JpZCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldExvZ2luQmFzZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxiID0gdGhpcy5nZXRVcmkoJ2xvZ2luQmFzZScpO1xyXG4gICAgcmV0dXJuIChsYiAmJiBsYiAhPT0gJy8nKSA/IGxiIDogJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIG5lc3RlZCBwcm9wZXJ0eSBvZiBjb25maWcgfCBjb21wbGV0ZSBjb25maWcgYnkgZGVmYXVsdFxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgcmV0cmlldmVkXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJhdyhwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBwcm9wZXJ0eSA/IFV0aWxzLmdldFByb3BlcnR5KHRoaXMuY2ZnLCBwcm9wZXJ0eSkgOiB0aGlzLmNmZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIFVSSVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkvdXJpIHRvIGJlIHJldHJpZXZlZFxyXG4gICAqIEByZXR1cm5zIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBmcm9tIHRoZSBVUkktU2VjdGlvbiBvZiB0aGUgY29uZmlnXHJcbiAgICovXHJcbiAgcHVibGljIGdldFVyaShwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNmZ1sndXJpJ11bcHJvcGVydHldO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgYXZhaWxhYmxlIGNsaWVudCBsb2NhbGVzXHJcbiAgICogQHJldHVybnMgYXZhaWxhYmxlIGNsaWVudCBsb2NhbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGdldENsaWVudExvY2FsZXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2ZnWydsYW5ndWFnZXMnXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGFzaGJvYXJkcyBiYWNrZ3JvdW5kIGltYWdlXHJcbiAgICogQHJldHVybnMgYmFja2dyb3VuZCBpbWFnZSB1cmkgZm9yIHRoZSBkYXNoYm9hcmRzIGJhY2tncm91bmQgaW1hZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RGFzaGJvYXJkQmFja2dyb3VuZEltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ2Rhc2hib2FyZEJhY2tncm91bmRJbWFnZSddO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBzaWRlYmFycyBoZWFkZXIgYmFja2dyb3VuZCBpbWFnZVxyXG4gICAqIEByZXR1cm5zIGJhY2tncm91bmQgaW1hZ2UgdXJpIGZvciB0aGUgc2lkZWJhcnMgaGVhZGVyIGJhY2tncm91bmQgaW1hZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2lkZUJhckhlYWRlckltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ3NpZGVCYXJIZWFkZXJJbWFnZSddO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBuYXZpZ2F0aW9uIGJhciBpbWFnZSAoTG9nbylcclxuICAgKiBvbmx5IGFjY2VwdHMgc3ZnLlxyXG4gICAqIEByZXR1cm5zIGJhY2tncm91bmQgaW1hZ2UgdXJpIGZvciB0aGUgTmF2aWdhdGlvbmJhciAoTG9nbylcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TmF2aWdhdGlvbkJhckltYWdlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbG9nbyA9IHRoaXMuY2ZnWyduYXZCYXJMb2dvJ107XHJcbiAgICBsb2dvID0gbG9nby5lbmRzV2l0aCgnLnN2ZycpID8gbG9nbyA6IGA8c3ZnPjwvc3ZnPmA7XHJcbiAgICByZXR1cm4gbG9nbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGVmYXVsdCBjbGllbnQgbG9jYWxlXHJcbiAgICogQHJldHVybnMgSVNPIHN0cmluZyBvZiB0aGUgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGdldERlZmF1bHRDbGllbnRMb2NhbGUoKSB7XHJcbiAgICBjb25zdCBsYW5nID0gdGhpcy5nZXRDbGllbnRMb2NhbGVzKCkuZmluZChfID0+IF8uZmFsbGJhY2spO1xyXG4gICAgcmV0dXJuIGxhbmcgPyBsYW5nLmlzbyA6ICdlbic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBBZ2VudCBDb25maWd1cmF0aW9uXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFnZW50Q29uZmlnKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ2FnZW50J107XHJcbiAgfVxyXG59XHJcbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvY29uZmlnL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFNUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sTUFBTTtJQUlqQjs7T0FFRztJQUNILFlBQW9CLFNBQTJCLEVBQVUsS0FBbUI7UUFBeEQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBTHBFLFFBQUcsR0FBZ0IsSUFBSSxDQUFDO0lBTWhDLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxHQUFHLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTO1lBQ3BJLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFxQjtRQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxzQkFBc0I7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBL0dGLFVBQVU7OztZQVRILGdCQUFnQjtZQUVoQixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9Db25maWd9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBhbGwgQ29uZmlndXJhdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZyB7XHJcblxyXG4gIHByaXZhdGUgY2ZnOiBFbmFpb0NvbmZpZyA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBldmVudDogRXZlbnRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplR3JpZCgpIHtcclxuICAgIHRoaXMuZXZlbnQudHJpZ2dlcihFbmFpb0V2ZW50LkVPX0xJQ0VOU0VfR1JJRCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogU2V0IGR1cmluZyBhcHAgaW5pdCAoc2VlIENvcmVJbml0KVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXQoY2ZnOiBFbmFpb0NvbmZpZykge1xyXG4gICAgdGhpcy5jZmcgPSBjZmc7XHJcbiAgICBjb25zdCBsYW5ndWFnZXMgPSB0aGlzLmdldENsaWVudExvY2FsZXMoKS5tYXAobGFuZyA9PiBsYW5nLmlzbyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcodGhpcy5nZXREZWZhdWx0Q2xpZW50TG9jYWxlKCkpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplR3JpZCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldExvZ2luQmFzZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxiID0gdGhpcy5nZXRVcmkoJ2xvZ2luQmFzZScpO1xyXG4gICAgcmV0dXJuIChsYiAmJiBsYiAhPT0gJy8nKSA/IGxiIDogJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIG5lc3RlZCBwcm9wZXJ0eSBvZiBjb25maWcgfCBjb21wbGV0ZSBjb25maWcgYnkgZGVmYXVsdFxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgcmV0cmlldmVkXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJhdyhwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBwcm9wZXJ0eSA/IFV0aWxzLmdldFByb3BlcnR5KHRoaXMuY2ZnLCBwcm9wZXJ0eSkgOiB0aGlzLmNmZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIFVSSVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkvdXJpIHRvIGJlIHJldHJpZXZlZFxyXG4gICAqIEByZXR1cm5zIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBmcm9tIHRoZSBVUkktU2VjdGlvbiBvZiB0aGUgY29uZmlnXHJcbiAgICovXHJcbiAgcHVibGljIGdldFVyaShwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNmZ1sndXJpJ11bcHJvcGVydHldO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgYXZhaWxhYmxlIGNsaWVudCBsb2NhbGVzXHJcbiAgICogQHJldHVybnMgYXZhaWxhYmxlIGNsaWVudCBsb2NhbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGdldENsaWVudExvY2FsZXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2ZnWydsYW5ndWFnZXMnXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIHN1cHBvcnRlZCBjbGllbnQgbG9jYWxlc1xyXG4gICAqIEByZXR1cm5zIHN1cHBvcnRlZCBjbGllbnQgbG9jYWxlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTdXBwb3J0ZWRDbGllbnRMb2NhbGVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbJ2VuJywgJ2RlJywgJ2FyJywgJ2VzJywgJ3B0JywgJ2ZyJywgJ3poJywgJ2x2JywgJ3J1JywgJ2l0JywgJ25sJywgJ3NrJywgJ3BsJywgJ3VrJywgJ2phJywgJ2tvJywgJ2hpJywgJ2JuJywgJ2RlLUNIJywgJ3poLUhhbnQnLFxyXG4gICAgICAndGgnLCAndmknLCAnZW4tR0InLCAnaGUnXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGFzaGJvYXJkcyBiYWNrZ3JvdW5kIGltYWdlXHJcbiAgICogQHJldHVybnMgYmFja2dyb3VuZCBpbWFnZSB1cmkgZm9yIHRoZSBkYXNoYm9hcmRzIGJhY2tncm91bmQgaW1hZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RGFzaGJvYXJkQmFja2dyb3VuZEltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ2Rhc2hib2FyZEJhY2tncm91bmRJbWFnZSddO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBzaWRlYmFycyBoZWFkZXIgYmFja2dyb3VuZCBpbWFnZVxyXG4gICAqIEByZXR1cm5zIGJhY2tncm91bmQgaW1hZ2UgdXJpIGZvciB0aGUgc2lkZWJhcnMgaGVhZGVyIGJhY2tncm91bmQgaW1hZ2VcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2lkZUJhckhlYWRlckltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ3NpZGVCYXJIZWFkZXJJbWFnZSddO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBuYXZpZ2F0aW9uIGJhciBpbWFnZSAoTG9nbylcclxuICAgKiBvbmx5IGFjY2VwdHMgc3ZnLlxyXG4gICAqIEByZXR1cm5zIGJhY2tncm91bmQgaW1hZ2UgdXJpIGZvciB0aGUgTmF2aWdhdGlvbmJhciAoTG9nbylcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TmF2aWdhdGlvbkJhckltYWdlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbG9nbyA9IHRoaXMuY2ZnWyduYXZCYXJMb2dvJ107XHJcbiAgICBsb2dvID0gbG9nby5lbmRzV2l0aCgnLnN2ZycpID8gbG9nbyA6IGA8c3ZnPjwvc3ZnPmA7XHJcbiAgICByZXR1cm4gbG9nbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGVmYXVsdCBjbGllbnQgbG9jYWxlXHJcbiAgICogQHJldHVybnMgSVNPIHN0cmluZyBvZiB0aGUgbG9jYWxlXHJcbiAgICovXHJcbiAgcHVibGljIGdldERlZmF1bHRDbGllbnRMb2NhbGUoKSB7XHJcbiAgICBjb25zdCBsYW5nID0gdGhpcy5nZXRDbGllbnRMb2NhbGVzKCkuZmluZChfID0+IF8uZmFsbGJhY2spO1xyXG4gICAgcmV0dXJuIGxhbmcgPyBsYW5nLmlzbyA6ICdlbic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBBZ2VudCBDb25maWd1cmF0aW9uXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFnZW50Q29uZmlnKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmdbJ2FnZW50J107XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -589,6 +589,14 @@ class Config {
589
589
  getClientLocales() {
590
590
  return this.cfg['languages'];
591
591
  }
592
+ /**
593
+ * Getter for the supported client locales
594
+ * @returns supported client locales
595
+ */
596
+ getSupportedClientLocales() {
597
+ return ['en', 'de', 'ar', 'es', 'pt', 'fr', 'zh', 'lv', 'ru', 'it', 'nl', 'sk', 'pl', 'uk', 'ja', 'ko', 'hi', 'bn', 'de-CH', 'zh-Hant',
598
+ 'th', 'vi', 'en-GB', 'he'];
599
+ }
592
600
  /**
593
601
  * Get the dashboards background image
594
602
  * @returns background image uri for the dashboards background image
@@ -2726,11 +2734,14 @@ class BpmService {
2726
2734
  * Getter for the executable Processes. If types are provided, you'll get
2727
2735
  * only the processes that are executable for all of them
2728
2736
  * @param types List of dms object types to fetch executable processes for
2737
+ * @param useCached If the cached data should be returned rather than requesting again
2738
+ * @param additionalData If the additional form data should be also included
2739
+ * @param modelid The process model ID to only return the data for one process
2729
2740
  * @returns List of executable processes
2730
2741
  */
2731
- getExecutableProcesses(types, useCached) {
2742
+ getExecutableProcesses(types, useCached, additionalData, modelid) {
2732
2743
  if (this.capabilities.hasCapability('bpm')) {
2733
- return (!!this.executableProcesses && useCached) ? of(this.executableProcesses) : this.fetchExecutableProcesses(types);
2744
+ return (!!this.executableProcesses && useCached) ? of(this.executableProcesses) : this.fetchExecutableProcesses(types, additionalData, modelid);
2734
2745
  }
2735
2746
  else {
2736
2747
  return of([]);
@@ -2747,19 +2758,42 @@ class BpmService {
2747
2758
  * @returns List of executable processes
2748
2759
  */
2749
2760
  getExecutableProcessesForDmsObjects(dmsObjects) {
2750
- return this.getExecutableProcesses(dmsObjects.map(o => o.typeName));
2761
+ return this.getExecutableProcesses(dmsObjects.map(o => o.typeName), false, true);
2751
2762
  }
2752
2763
  /**
2753
2764
  * Fetches executable Processes from the backend.
2754
2765
  * @param types List of dms object types to fetch executable processes for
2766
+ * @param additionalData If the additional form data should be also included
2767
+ * @param modelid The process model ID to only return the data for one process
2755
2768
  * @returns List of executable processes
2756
2769
  */
2757
- fetchExecutableProcesses(types) {
2758
- let uri = '/bpm/process/executable?form=true&fields=true';
2770
+ fetchExecutableProcesses(types, additionalData, modelid) {
2771
+ let uri = '/bpm/process/executable';
2772
+ if (additionalData) {
2773
+ uri += '?form=true&fields=true';
2774
+ }
2759
2775
  if (types) {
2760
- uri += `&type=${types.join(',')}`;
2776
+ uri += (additionalData ? '&' : '?') + `type=${types.join(',')}`;
2761
2777
  }
2762
- return this.backend.get(uri).pipe(map(res => res), tap(res => this.executableProcesses = res));
2778
+ if (modelid) {
2779
+ uri += (additionalData || types ? '&' : '?') + `modelid=${modelid}`;
2780
+ }
2781
+ return this.backend.get(uri).pipe(map(res => res), tap(res => {
2782
+ // Extend existing processes with additional data, instead of overwriting all processes
2783
+ if (additionalData) {
2784
+ if (!this.executableProcesses)
2785
+ this.executableProcesses = [];
2786
+ res.forEach(proc => {
2787
+ var existingProcIndex = this.executableProcesses.findIndex(item => item.id == proc.id);
2788
+ if (existingProcIndex == -1)
2789
+ this.executableProcesses.push(proc);
2790
+ else
2791
+ this.executableProcesses[existingProcIndex] = proc;
2792
+ });
2793
+ }
2794
+ else
2795
+ this.executableProcesses = res;
2796
+ }));
2763
2797
  }
2764
2798
  /**
2765
2799
  * Getter for a processes file. The file of a process contains