@eo-sdk/client 11.0.0-beta.1 → 11.0.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 (94) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +7 -5
  4. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  5. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +2 -0
  6. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
  7. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +2 -0
  8. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
  9. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +3 -2
  10. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
  11. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +7 -0
  12. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
  13. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +6 -4
  14. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
  15. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
  16. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
  17. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +3 -2
  18. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -1
  19. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +3 -2
  20. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -1
  21. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +3 -2
  22. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -1
  23. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +22 -0
  24. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -0
  25. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +11 -5
  26. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
  27. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts +7 -0
  28. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts.map +1 -0
  29. package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -2
  30. package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
  31. package/app/eo-client/eo-client.module.d.ts +18 -17
  32. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  33. package/app/eo-client/settings/settings.component.d.ts +2 -11
  34. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  35. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +7 -3
  36. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  37. package/app/eo-framework/app-shell/app-shell.module.d.ts +17 -16
  38. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  39. package/app/eo-framework/app-shell/index.d.ts +1 -0
  40. package/app/eo-framework/app-shell/index.d.ts.map +1 -1
  41. package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts +10 -0
  42. package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts.map +1 -0
  43. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +1 -0
  44. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  45. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  46. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  47. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  48. package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
  49. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  50. package/app/eo-framework-core/error-handler/error-handler.service.d.ts.map +1 -1
  51. package/assets/_default/i18n/de.json +14 -9
  52. package/assets/_default/i18n/en.json +16 -11
  53. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  54. package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +3 -1
  55. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +51 -32
  56. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +46 -16
  57. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
  58. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +17 -11
  59. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +3 -3
  60. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
  61. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +30 -17
  62. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -8
  63. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +16 -10
  64. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -4
  65. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +15 -9
  66. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +16 -10
  67. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +75 -0
  68. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +93 -26
  69. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.mjs +2 -0
  70. package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +4 -7
  71. package/esm2022/app/eo-client/eo-client.module.mjs +6 -3
  72. package/esm2022/app/eo-client/settings/settings.component.mjs +28 -40
  73. package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
  74. package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +4 -3
  75. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +34 -22
  76. package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +13 -7
  77. package/esm2022/app/eo-framework/app-shell/index.mjs +2 -1
  78. package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +26 -0
  79. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +19 -15
  80. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +4 -1
  81. package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +2 -2
  82. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -3
  83. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +4 -4
  84. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +2 -2
  85. package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +15 -4
  86. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +16 -1
  87. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +10 -1
  88. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +2 -2
  89. package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +2 -2
  90. package/esm2022/app/eo-framework-core/api/grid.service.mjs +18 -21
  91. package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +6 -6
  92. package/fesm2022/eo-sdk-client.mjs +640 -360
  93. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  94. package/package.json +4 -4
@@ -6,28 +6,25 @@ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
6
6
  import { forkJoin, firstValueFrom } from 'rxjs';
7
7
  import { take, withLatestFrom } from 'rxjs/operators';
8
8
  import { agentConfigKeys } from '../../eo-framework-core/agent/agent.service';
9
- import { ResultListComponent } from '../../eo-framework/result-list/result-list.component';
10
9
  import { LockSettings } from './agent-lock-settings.enum';
11
10
  import * as i0 from "@angular/core";
12
11
  import * as i1 from "@eo-sdk/core";
13
12
  import * as i2 from "../../eo-framework-core/title/page-title.service";
14
13
  import * as i3 from "../../eo-framework-core/agent/agent.service";
15
14
  import * as i4 from "@angular/forms";
16
- import * as i5 from "./../../eo-framework/grid/extensions/services/list-settings.service";
17
- import * as i6 from "@angular/common";
18
- import * as i7 from "@ngx-translate/core";
19
- import * as i8 from "../../eo-framework/ui/eo-icon/eo-icon.component";
20
- import * as i9 from "../../eo-framework/ui/rtl-aware/rtl-aware.directive";
21
- import * as i10 from "../../eo-framework/ui/user-avatar/user-avatar.component";
22
- import * as i11 from "../../eo-framework/ui/eo-dialog/eo-dialog.component";
23
- import * as i12 from "../../eo-framework/form-elements/form-input/form-input.component";
24
- import * as i13 from "../../eo-framework/form-elements/organization/organization.component";
25
- import * as i14 from "../../eo-framework/form-elements/checkbox/checkbox.component";
26
- import * as i15 from "../../eo-framework/settings/change-password/change-password-form/change-password-form.component";
27
- import * as i16 from "../../eo-framework/settings/permissions/permissions.component";
28
- import * as i17 from "../../eo-framework/accordion/simple-accordion/simple-accordion.component";
15
+ import * as i5 from "@angular/common";
16
+ import * as i6 from "@ngx-translate/core";
17
+ import * as i7 from "../../eo-framework/ui/eo-icon/eo-icon.component";
18
+ import * as i8 from "../../eo-framework/ui/rtl-aware/rtl-aware.directive";
19
+ import * as i9 from "../../eo-framework/ui/user-avatar/user-avatar.component";
20
+ import * as i10 from "../../eo-framework/ui/eo-dialog/eo-dialog.component";
21
+ import * as i11 from "../../eo-framework/form-elements/organization/organization.component";
22
+ import * as i12 from "../../eo-framework/form-elements/checkbox/checkbox.component";
23
+ import * as i13 from "../../eo-framework/settings/change-password/change-password-form/change-password-form.component";
24
+ import * as i14 from "../../eo-framework/settings/permissions/permissions.component";
25
+ import * as i15 from "../../eo-framework/accordion/simple-accordion/simple-accordion.component";
29
26
  let SettingsComponent = class SettingsComponent {
30
- constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, listSettingsService, storageService, translate, elemRef, notification) {
27
+ constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, storageService, translate, elemRef, notification) {
31
28
  this.renderer = renderer;
32
29
  this.userService = userService;
33
30
  this.config = config;
@@ -39,7 +36,6 @@ let SettingsComponent = class SettingsComponent {
39
36
  this.agentService = agentService;
40
37
  this.fb = fb;
41
38
  this.cacheService = cacheService;
42
- this.listSettingsService = listSettingsService;
43
39
  this.storageService = storageService;
44
40
  this.translate = translate;
45
41
  this.elemRef = elemRef;
@@ -57,11 +53,6 @@ let SettingsComponent = class SettingsComponent {
57
53
  this.showErrorDialog = false;
58
54
  this.MAX_FILE_SIZE = 524288;
59
55
  this.viewMode = '';
60
- this.cache = {
61
- system: true,
62
- history: true,
63
- layout: true
64
- };
65
56
  this.files = {};
66
57
  this.titleService.setBaseTitle(this.translate.instant('eo.bar.button.settings.title'));
67
58
  this.clientLocales = config.getClientLocales();
@@ -82,9 +73,6 @@ let SettingsComponent = class SettingsComponent {
82
73
  this.useAgentControl.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.agentService.isConnected = this.useAgentControl.value);
83
74
  });
84
75
  }
85
- get isSSO() {
86
- return this.capabilities && this.capabilities.sso;
87
- }
88
76
  get agentStatus() {
89
77
  return this.agentService.isConnected$;
90
78
  }
@@ -166,8 +154,8 @@ let SettingsComponent = class SettingsComponent {
166
154
  error: (err) => {
167
155
  this.notification.error('', err.error.cause.messages[0]);
168
156
  this.file = null;
169
- this.translate.instant('eo.upload.global.error.title'),
170
- this.translate.instant('eo.upload.global.error.description');
157
+ this.translate.instant('eo.upload.global.error.title');
158
+ this.translate.instant('eo.upload.global.error.description');
171
159
  },
172
160
  });
173
161
  }
@@ -209,8 +197,8 @@ let SettingsComponent = class SettingsComponent {
209
197
  error: (err) => {
210
198
  this.notification.error('', err.error.cause.messages[0]);
211
199
  this.file = null;
212
- this.translate.instant('eo.upload.global.error.title'),
213
- this.translate.instant('eo.upload.global.error.description');
200
+ this.translate.instant('eo.upload.global.error.title');
201
+ this.translate.instant('eo.upload.global.error.description');
214
202
  },
215
203
  });
216
204
  }
@@ -233,15 +221,15 @@ let SettingsComponent = class SettingsComponent {
233
221
  this.renderer.setStyle(this.headerBg.nativeElement, 'background-image', `url(${imageUri + '&t=' + timestamp})`);
234
222
  }
235
223
  }
236
- clearCache() {
224
+ clearLocalSettings() {
237
225
  const actions = [
238
- this.cache.history && this.listSettingsService.clearSettings(),
239
- this.cache.history && this.cacheService.clear((key) => !key.match(/^eo.+(layout)/) && !key.match(/^eo.framework.cache/)),
240
- this.cache.layout && this.storageService.clear((key) => key === ResultListComponent.COLUMNS_DEFINITION),
241
- this.cache.layout && this.cacheService.clear((key) => !!key.match(/^eo.+(layout)/)),
242
- this.cache.system && this.systemService.fetchSystemDefinition(this.user),
226
+ this.cacheService.clear(),
227
+ this.storageService.clear(),
243
228
  ].filter(a => a);
244
- return actions.length ? forkJoin(actions).subscribe(() => this.notify.success(this.translate.instant('eo.state.settings.cache.clear.success')), () => this.notify.error(this.translate.instant('eo.state.settings.cache.clear.error'))) && true : false;
229
+ return actions.length ? forkJoin(actions).subscribe(() => {
230
+ this.notify.success(this.translate.instant('eo.state.settings.cache.clear.success'));
231
+ this.saveLocalSettings();
232
+ }, () => this.notify.error(this.translate.instant('eo.state.settings.cache.clear.error'))) && true : false;
245
233
  }
246
234
  async saveLocalSettings() {
247
235
  const localSettings = this.storageService.getStorage();
@@ -255,8 +243,8 @@ let SettingsComponent = class SettingsComponent {
255
243
  this.cacheService.replaceStorage(settings.cacheSettings);
256
244
  });
257
245
  }
258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: i2.PageTitleService }, { token: i3.AgentService }, { token: i4.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i5.ListSettingsService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i9.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i10.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i11.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i12.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i13.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i14.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i15.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i16.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i17.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: i2.PageTitleService }, { token: i3.AgentService }, { token: i4.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i8.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i9.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i10.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i14.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i15.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
260
248
  };
261
249
  SettingsComponent = __decorate([
262
250
  UntilDestroy()
@@ -264,8 +252,8 @@ SettingsComponent = __decorate([
264
252
  export { SettingsComponent };
265
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SettingsComponent, decorators: [{
266
254
  type: Component,
267
- args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.cache</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"clearCache()\">eo.state.settings.cache.clear</button>\n <div class=\"cache\">\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.system' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.system\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.history' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.history\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input class=\"checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.state.settings.config.cache.layout' | translate\">\n <eo-checkbox [(ngModel)]=\"cache.layout\" [ngModelOptions]=\"{ standalone: true }\"></eo-checkbox>\n </eo-form-input>\n </div>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
268
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: i2.PageTitleService }, { type: i3.AgentService }, { type: i4.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i5.ListSettingsService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }], propDecorators: { files: [{
255
+ args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.state.settings.deputies.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.delete.dialog.ok</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
256
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: i2.PageTitleService }, { type: i3.AgentService }, { type: i4.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }], propDecorators: { files: [{
269
257
  type: ViewChild,
270
258
  args: ['files']
271
259
  }], headerBg: [{
@@ -284,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
284
272
  type: ViewChild,
285
273
  args: [NgForm]
286
274
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBS0wsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRTFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBR3pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9qRCxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQTZDNUIsWUFBb0IsUUFBbUIsRUFDOUIsV0FBd0IsRUFDeEIsTUFBYyxFQUNiLE1BQTRCLEVBQzVCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN4QyxZQUE4QixFQUM5QixZQUEwQixFQUMxQixFQUFzQixFQUN0QixZQUE2QixFQUM3QixtQkFBd0MsRUFDeEMsY0FBbUMsRUFDcEMsU0FBMkIsRUFDMUIsT0FBbUIsRUFDbkIsWUFBa0M7UUFmeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBakRyQyxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUduQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFcEMsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBRS9CLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFDcEMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFHbEIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUN2QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBR3RCLFVBQUssR0FBRztZQUNOLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFFa0IsVUFBSyxHQUFlLEVBQWdCLENBQUM7UUF1QnZELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDL0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNoQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEksSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzSSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBaUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBMEI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2FBQzdDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hDLCtGQUErRjtZQUMvRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixXQUFXO1lBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTthQUM3QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FDaEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsRUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaURBQWlELENBQUMsQ0FBQyxDQUM3RSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBVTtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDNUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxFQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQyxDQUN2RSxDQUNBLENBQUM7SUFDTixDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXO2FBQ2IsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM1QixJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1NBRUYsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQixRQUFRLEtBQUssRUFBRSxDQUFDO2dCQUVkLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0csSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO29CQUM1QixNQUFNO2dCQUVSLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQzVCLE1BQU07Z0JBRVI7b0JBRUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTt3QkFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztvQkFDaEMsQ0FBQyxDQUFDO29CQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBRWhCLElBQUksQ0FBQyxXQUFXO2FBQ2IsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakMsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDO29CQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO1lBQzlELENBQUM7U0FDTixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUMsU0FBUyxDQUFDLEtBQXVCO1FBQy9CLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELGdDQUFnQyxDQUFDLFFBQWdCO1FBQy9DLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sUUFBUSxHQUFHLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xILENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRTtZQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2hJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssbUJBQW1CLENBQUMsa0JBQWtCLENBQUM7WUFDL0csSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN6RSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDakQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxFQUMxRixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQ3ZGLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FBTyxhQUFhLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FyU1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsd2pCQTJDakIsTUFBTSxnREMzRW5CLDIxWUFvUEE7O0FEcE5hLGlCQUFpQjtJQU43QixZQUFZLEVBQUU7R0FNRixpQkFBaUIsQ0FzUzdCOzsyRkF0U1ksaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGFBQWE7aWhCQTBDSCxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0ssUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNJLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDUSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNLLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ2IsWUFBWTtzQkFBOUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQXBwQ2FjaGVTZXJ2aWNlLFxuICBDYXBhYmlsaXRpZXMsXG4gIENhcGFiaWxpdGllc1NlcnZpY2UsXG4gIENvbmZpZyxcbiAgRW5haW9FdmVudCxcbiAgRW9Vc2VyLFxuICBFdmVudFNlcnZpY2UsXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgZm9ya0pvaW4sIGZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZSwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlLCBhZ2VudENvbmZpZ0tleXN9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHtSZXN1bHRMaXN0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7VXNlckF2YXRhckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3VpL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQge0xpc3RTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9zZXJ2aWNlcy9saXN0LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2NrU2V0dGluZ3N9IGZyb20gJy4vYWdlbnQtbG9jay1zZXR0aW5ncy5lbnVtJztcbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgdXNlcjogRW9Vc2VyO1xuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgZGVwdXRpZXM6IHtcbiAgICBkYXRhOiBzdHJpbmdbXSxcbiAgICBkYXRhTWV0YTogYW55W11cbiAgfTtcbiAgc2hvd0NoYW5nZVBhc3N3b3JkRm9ybTogYm9vbGVhbjtcbiAgY2xpZW50TG9jYWxlczogYW55O1xuICBzY2hlbWFMb2NhbGVzOiBhbnlbXTtcbiAgcHVibGljIExvY2tTZXR0aW5ncyA9IExvY2tTZXR0aW5ncztcbiAgYWdlbnRMb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncztcbiAgdXNlQWdlbnRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHNob3dBZ2VudENvbmZpZzogYm9vbGVhbiA9IHRydWU7XG4gIGRlZmF1bHRMb2NrU2V0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVzZXIkID0gdGhpcy51c2VyU2VydmljZS51c2VyJDtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHVzZXJJZCA9ICcnO1xuICBzaG93RGVsZXRlSWNvblRyYXNoOiBib29sZWFuID0gdHJ1ZTtcbiAgdXNlckltYWdlVXJpID0gJyc7XG4gIHByZXZpZXc6IHN0cmluZztcbiAgZmlsZTogYW55O1xuICBob3ZlclNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dQcmV2aWV3RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dEZWxldGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Vycm9yRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIE1BWF9GSUxFX1NJWkUgPSA1MjQyODg7XG4gIHZpZXdNb2RlOiBzdHJpbmcgPSAnJztcbiAgZmlsZU5hbWU6IHN0cmluZztcblxuICBjYWNoZSA9IHtcbiAgICBzeXN0ZW06IHRydWUsXG4gICAgaGlzdG9yeTogdHJ1ZSxcbiAgICBsYXlvdXQ6IHRydWVcbiAgfTtcblxuICBAVmlld0NoaWxkKCdmaWxlcycpIGZpbGVzOiBFbGVtZW50UmVmID0ge30gYXMgRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaGVhZGVyQmcnKSBoZWFkZXJCZztcbiAgQFZpZXdDaGlsZCgndXNlckF2YXRhcicpIHVzZXJBdmF0YXI6IFVzZXJBdmF0YXJDb21wb25lbnRcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZUJ0bicpIGNvbmZpcm1EZWxldGVCdG46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3Byb2ZpbGVJbWFnZU92ZXJsYXknKSBwcm9maWxlSW1hZ2VPdmVybGF5OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKE5nRm9ybSkgZGVwdXRpZXNGb3JtOiBOZ0Zvcm07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZzogQ29uZmlnLFxuICAgIHByaXZhdGUgbm90aWZ5OiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IEFwcENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RTZXR0aW5nc1NlcnZpY2U6IExpc3RTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbVJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uc1NlcnZpY2UpIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRCYXNlVGl0bGUodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYmFyLmJ1dHRvbi5zZXR0aW5ncy50aXRsZScpKTtcbiAgICB0aGlzLmNsaWVudExvY2FsZXMgPSBjb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpO1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLmdldENhcGFiaWxpdGllcygpO1xuICAgIHRoaXMuZ2V0U2NoZW1hTG9jYWxlcygpO1xuICAgIHRoaXMuZ2V0VXNlckRhdGEoKTtcbiAgICB0aGlzLmFnZW50TG9ja1NldHRpbmdzID0gdXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS51c2VyU2V0dGluZ3MuYWx3YXlzbG9jaztcbiAgICB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQucGlwZSh0YWtlKDEpLCB3aXRoTGF0ZXN0RnJvbSh0aGlzLmFnZW50U2VydmljZS5hZ2VudENvbmZpZyQpKS5zdWJzY3JpYmUoKFtpc0Nvbm5lY3RlZCwgY29uZmlnXSkgPT4ge1xuICAgICAgdGhpcy51c2VBZ2VudENvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woaXNDb25uZWN0ZWQpO1xuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShhZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1QpKSB7XG4gICAgICAgIHRoaXMuc2hvd0FnZW50Q29uZmlnID0gY29uZmlnW2FnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVF1cbiAgICAgICAgdGhpcy51c2VBZ2VudENvbnRyb2wuZGlzYWJsZSgpXG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1MpICYmIE9iamVjdC52YWx1ZXMoTG9ja1NldHRpbmdzKS5pbmNsdWRlcyhjb25maWdbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU10pKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdExvY2tTZXR0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGNvbmZpZ1thZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTXTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQgPSB0aGlzLnVzZUFnZW50Q29udHJvbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldCBpc1NTTygpIHtcbiAgICByZXR1cm4gdGhpcy5jYXBhYmlsaXRpZXMgJiYgdGhpcy5jYXBhYmlsaXRpZXMuc3NvO1xuICB9XG5cbiAgZ2V0IGFnZW50U3RhdHVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQ7XG4gIH1cblxuICBnZXQgYWN0aXZlU2NoZW1hKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZ2V0U2NoZW1hTG9jYWxlKCk7XG4gIH1cblxuICBoYXNQcml2aWxlZ2UocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5oYXNQcml2aWxlZ2UocHJpdmlsZWdlKTtcbiAgfVxuXG4gIGNoYW5nZUxvY2tTZXR0aW5ncyhsb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncykge1xuICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTG9ja1NldHRpbmcobG9ja1NldHRpbmdzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGxvY2tTZXR0aW5ncyk7XG4gIH1cblxuICBnZXRTY2hlbWFMb2NhbGVzKCkge1xuICAgIHRoaXMuc3lzdGVtU2VydmljZS5zeXN0ZW0kLnN1YnNjcmliZSgoc3lzdGVtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgdGhpcy5zY2hlbWFMb2NhbGVzID0gc3lzdGVtRGVmaW5pdGlvbi5sb2NhbGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnZGlzcGxheW5hbWUnKSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlRGVwdXRpZXMoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXREZXB1dGllcyh0aGlzLmRlcHV0aWVzLmRhdGEpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmRlcHV0aWVzRm9ybS5yZXNldEZvcm0oe2RlcHV0aWVzOiB0aGlzLmRlcHV0aWVzLmRhdGF9KSk7XG4gIH1cblxuICByZXNldERlcHV0aWVzKCkge1xuICAgIHRoaXMuZGVwdXRpZXNGb3JtLnJlc2V0Rm9ybSh7ZGVwdXRpZXM6IHRoaXMudXNlci5kZXB1dGllcy5tYXAoZCA9PiBkLm5hbWUpfSlcbiAgfVxuXG4gIGdldFVzZXJEYXRhKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgICAvLyB0aGlzLnVzZXIgPSBPYmplY3QuYXNzaWduKHVzZXIsIHtjYXBhYmlsaXRpZXM6IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKX0pO1xuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIC8vIGRlcHV0aWVzXG4gICAgICB0aGlzLmRlcHV0aWVzID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnVzZXIuZGVwdXRpZXMubWFwKGQgPT4gZC5uYW1lKSxcbiAgICAgICAgZGF0YU1ldGE6IHRoaXMudXNlci5kZXB1dGllc1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZEZvcm0gPSBmYWxzZTtcbiAgfVxuXG4gIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRTdXBwb3J0ZWRDbGllbnRMb2NhbGVzKCkuaW5jbHVkZXMoaXNvKSkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VDbGllbnRMb2NhbGUoaXNvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuZXJyb3InKSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlU2NoZW1hTG9jYWxlKGlzbzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudXNlci5zY2hlbWFMb2NhbGUgIT09IGlzbykge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VTY2hlbWFMb2NhbGUoaXNvKS5zdWJzY3JpYmUoXG4gICAgICAgIF8gPT4gVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci50aXRsZScpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVzZXIuc2VydmljZS5zY2hlbWEubG9jYWxlLmVycm9yLmRlc2NyaXB0aW9uJykpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmVsZW1SZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjcHJlc2VuY2UnKS5mb2N1cygpO1xuICAgIHRoaXMudXNlciQuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgdGhpcy51c2VySWQgPSB1c2VyLmlkO1xuICAgICAgdGhpcy51c2VySW1hZ2VVcmkgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaSh0aGlzLnVzZXJJZCk7XG4gICAgICB0aGlzLnJlZnJlc2hVc2VySW1hZ2VIZWFkZXJCYWNrZ3JvdW5kKHRoaXMudXNlckltYWdlVXJpKTtcbiAgICAgIHRoaXMuc2hvd0RlbGV0ZUljb25UcmFzaCA9ICEhdXNlci5pbWFnZVVyaTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFByZXNlbmNlKGI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFByZXNlbmNlKGIpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgKTtcbiAgfVxuICBjbG9zZVByZXZpZXdEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93UHJldmlld0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBkZWxldGVVc2VySW1hZ2UoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZShudWxsKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcignJywgZXJyLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgICAgfSxcblxuICAgICAgfSk7XG5cbiAgfVxuXG4gIHNlbGVjdEltYWdlKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5maWxlID0gZXZlbnQuZmlsZXNbMF07XG4gICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xuICAgICAgc3dpdGNoIChmYWxzZSkge1xuXG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdpbWFnZS8nKSAmJiB0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnanBlZycpIHx8IHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdwbmcnKSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdpbWFnZSc7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS5zaXplIDw9IHRoaXMuTUFYX0ZJTEVfU0laRSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdzaXplJztcbiAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9ICcnO1xuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMuc2hvd1ByZXZpZXdEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWROZXdVc2VySW1hZ2UoKSB7XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuc2V0VXNlckltYWdlKHRoaXMuZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLmNsb3NlUHJldmlld0RpYWxvZygpO1xuICAgICAgICAgIHRoaXMuc2hvd0RlbGV0ZUljb25UcmFzaCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoJycsIGVyci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpXG4gICAgICAgIH0sXG4gIH0pXG59XG5cbiAgdGFiQWN0aW9uKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgaW5wdXQuYmx1cigpO1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIG1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5ob3ZlclNlbGVjdG9yID0gdHJ1ZTtcbiAgfVxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIHRyYXNoSWNvbkNsaWNrKCkge1xuICAgIHRoaXMuc2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XG4gIH1cblxuICByZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZChpbWFnZVVyaTogc3RyaW5nKSB7XG4gICAgaWYgKGltYWdlVXJpKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhlYWRlckJnLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWltYWdlJywgYHVybCgke2ltYWdlVXJpICsgJyZ0PScgKyB0aW1lc3RhbXB9KWApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ2FjaGUoKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgIHRoaXMuY2FjaGUuaGlzdG9yeSAmJiB0aGlzLmxpc3RTZXR0aW5nc1NlcnZpY2UuY2xlYXJTZXR0aW5ncygpLFxuICAgICAgdGhpcy5jYWNoZS5oaXN0b3J5ICYmIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKChrZXk6IHN0cmluZykgPT4gIWtleS5tYXRjaCgvXmVvLisobGF5b3V0KS8pICYmICFrZXkubWF0Y2goL15lby5mcmFtZXdvcmsuY2FjaGUvKSksXG4gICAgICB0aGlzLmNhY2hlLmxheW91dCAmJiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyKChrZXk6IHN0cmluZykgPT4ga2V5ID09PSBSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTiksXG4gICAgICB0aGlzLmNhY2hlLmxheW91dCAmJiB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigoa2V5OiBzdHJpbmcpID0+ICEha2V5Lm1hdGNoKC9eZW8uKyhsYXlvdXQpLykpLFxuICAgICAgdGhpcy5jYWNoZS5zeXN0ZW0gJiYgdGhpcy5zeXN0ZW1TZXJ2aWNlLmZldGNoU3lzdGVtRGVmaW5pdGlvbih0aGlzLnVzZXIpLFxuICAgIF0uZmlsdGVyKGEgPT4gYSk7XG5cbiAgICByZXR1cm4gYWN0aW9ucy5sZW5ndGggPyBmb3JrSm9pbihhY3Rpb25zKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmNhY2hlLmNsZWFyLnN1Y2Nlc3MnKSksXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5lcnJvcicpKVxuICAgICkgJiYgdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUxvY2FsU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgbG9jYWxTZXR0aW5ncyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U3RvcmFnZSgpO1xuICAgIGNvbnN0IGNhY2hlU2V0dGluZ3MgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhY2hlU2VydmljZS5nZXRTdG9yYWdlKCkpO1xuICAgIGRlbGV0ZSBjYWNoZVNldHRpbmdzWydlby5mcmFtZXdvcmsuY2FjaGUuc3lzdGVtZGVmaW5pdGlvbiddO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2F2ZUxvY2FsU2V0dGluZ3MobG9jYWxTZXR0aW5ncywgY2FjaGVTZXR0aW5ncykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkTG9jYWxTZXR0aW5ncygpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvYWRMb2NhbFNldHRpbmdzKCkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U3RvcmFnZShzZXR0aW5ncy5sb2NhbFNldHRpbmdzKTtcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlcGxhY2VTdG9yYWdlKHNldHRpbmdzLmNhY2hlU2V0dGluZ3MpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tc2V0dGluZ3NcIiAqbmdJZj1cInVzZXJcIiBlb1J0bEF3YXJlPlxuXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cblxuICAgIDxkaXYgI2hlYWRlckJnIGNsYXNzPVwiYmdcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgdXNlcm5hbWVcIj57e3VzZXIubmFtZX19PC9kaXY+XG4gICAgICA8aDE+e3t1c2VyLmZpcnN0bmFtZX19IHt7dXNlci5sYXN0bmFtZX19PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhIGVtYWlsXCI+e3t1c2VyLmVtYWlsfX08L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInByZXNlbmNlXCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaW5ib3hcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBkYXJrIHByZXNlbnRcIiBpZD1cInByZXNlbmNlXCIgKGNsaWNrKT1cInNldFByZXNlbmNlKHRydWUpXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogdXNlci5wcmVzZW50fVwiXG4gICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UucHJlc2VudDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGRhcmsgYWJzZW50XCIgKGNsaWNrKT1cInNldFByZXNlbmNlKGZhbHNlKVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAhdXNlci5wcmVzZW50fVwiXG4gICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmFic2VudDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKClcIiAoa2V5ZG93bi50YWIpPVwibW91c2VFbnRlcigpXCI+XG5cbiAgICAgIDxlby11c2VyLWF2YXRhciAjdXNlckF2YXRhciBjbGFzcz1cInVzZXJJbWFnZVwiIHRhYmluZGV4PVwiLTFcIiBlb1J0bEF3YXJlPVwiZnVsbFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi5qcGcsIC5wbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiAjZmlsZXMgKGNoYW5nZSk9XCJzZWxlY3RJbWFnZSgkZXZlbnQudGFyZ2V0KVwiIChjbGljayk9XCIkZXZlbnQudGFyZ2V0LnZhbHVlPW51bGxcIj5cbiAgICAgIDwvZW8tdXNlci1hdmF0YXI+XG4gICAgICA8ZW8tZGlhbG9nICBbc3R5bGVDbGFzc109XCIndmlldydcIiBbbWluV2lkdGhdPVwiJzMwMHB4J1wiIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZXZpZXdEaWFsb2dcIiBbZm9jdXNPblNob3ddPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhXCI+XG4gICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwicHJldmlld1wiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItYXZhdGFyXCIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgPGVvLXVzZXItYXZhdGFyIGNsYXNzPVwicHJldmlldy1yb3VuZFwiIFtwcmV2aWV3VXJpXT1cInByZXZpZXdcIj48L2VvLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tYmxvY2tcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVByZXZpZXdEaWFsb2coKVwiIGNsYXNzPVwiYnV0dG9uIGRhbmdlclwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cInVwbG9hZE5ld1VzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRpYWxvZy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9lby1kaWFsb2c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgI3Byb2ZpbGVJbWFnZU92ZXJsYXkgdGFiaW5kZXg9XCIwXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVNZXNzYWdlXCIgKm5nSWY9XCJob3ZlclNlbGVjdG9yXCI+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwiZmlsZXMuY2xpY2soKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2VkaXQuc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsZXMuY2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJ0cmFzaEljb25DbGljaygpXCIgKm5nSWY9XCJzaG93RGVsZXRlSWNvblRyYXNoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIChjbGljayk9XCJ0cmFzaEljb25DbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5LXdyYXBcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1kZXB1dGllc1wiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmJwbSAmJiBoYXNQcml2aWxlZ2UoJ01BTkFHRV9ERVBVVFlfTElTVCcpXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXM8L2gzPlxuXG4gICAgICAgIDwhLS0gZGVwdXRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBkZXB1dGllc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxmb3JtICNkZXB1dGllc0Zvcm09XCJuZ0Zvcm1cIiBbbmdDbGFzc109XCJ7ZGlydHk6IGRlcHV0aWVzRm9ybS5kaXJ0eX1cIj5cbiAgICAgICAgICAgICAgPGVvLW9yZ2FuaXphdGlvbiBuYW1lPVwiZGVwdXRpZXNcIiBbZGF0YU1ldGFdPVwiZGVwdXRpZXMuZGF0YU1ldGFcIiBbZmlsdGVyT2JqZWN0XT1cInt0eXBlOiAnVVNFUid9XCJcbiAgICAgICAgICAgICAgICBbZXhjZXB0aW9uc109XCJbdXNlci5uYW1lXVwiIFttdWx0aXNlbGVjdF09XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCIgWyhuZ01vZGVsKV09XCJkZXB1dGllcy5kYXRhXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJkZXB1dGllc0Zvcm0udmFsaWQgJiYgZGVwdXRpZXNGb3JtLmRpcnR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJyZXNldERlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZURlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBzdWJzdGl0dXRlIG9mIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgc3Vic3RpdHV0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5zdWJzaXR1dGVvZi5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBzdWIgb2YgdXNlci5zdWJzdGl0dXRlc09mXCIgW25nQ2xhc3NdPVwie3ByZXNlbnQ6IHN1Yi5wcmVzZW50fVwiPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1wcmVzZW50XCIgKm5nSWY9XCJzdWIucHJlc2VudFwiXG4gICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZG9uZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1hd2F5XCIgKm5nSWY9XCIhc3ViLnByZXNlbnRcIlxuICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7c3ViLnRpdGxlfX0gKHt7c3ViLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcGFzc3dvcmQgLS0+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1wYXNzd29yZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8ucGFzc3dvcmQucmVzZXQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvbiAjc2ltcGxlQWNjIFtoZWFkZXJdPVwiKCdlby5wYXNzd29yZC5yZXNldCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW3N0eWxlc109XCInc2V0dGluZ19fY2hhbmdlLXBhc3N3b3JkJ1wiIFtoZWFkZXJDbGFzc109XCInc2V0dGluZ19fY2hhbmdlLXBhc3N3b3JkLWhlYWRlcidcIj5cblxuICAgICAgICAgICAgICA8ZW8tY2hhbmdlLXBhc3N3b3JkLWZvcm0gKG9uRm9ybVN1bWJpdCk9XCJzaW1wbGVBY2Muc2VsZWN0ZWQgPSBmYWxzZVwiPjwvZW8tY2hhbmdlLXBhc3N3b3JkLWZvcm0+XG4gICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIGxhbmd1YWdlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1sYW5nXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2U8L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgbGFuZy1hcHBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuY2xpZW50PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZVwiIChjbGljayk9XCJjaGFuZ2VDbGllbnRMb2NhbGUobG9jYWxlLmlzbylcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiB0cmFuc2xhdGUuY3VycmVudExhbmcgPT09IGxvY2FsZS5pc299XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvY2FsZSBvZiBjbGllbnRMb2NhbGVzXCI+e3tsb2NhbGUubGFiZWx9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsYW5nLWRlZlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZS5zY2hlbWE8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlXCIgKGNsaWNrKT1cImNoYW5nZVNjaGVtYUxvY2FsZShsb2NhbGUuY29kZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhY3RpdmVTY2hlbWEgPT09IGxvY2FsZS5jb2RlfVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb2NhbGUgb2Ygc2NoZW1hTG9jYWxlc1wiPnt7bG9jYWxlLmRpc3BsYXluYW1lfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBwZXJtaXNzaW9ucyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tcGVybVwiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnBlcm1pc3Npb248L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgcGVybS1yb2xlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5yb2xlczwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXMgcm9sZXNcIj5cbiAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uIFtoZWFkZXJdPVwiKCdlby5zdGF0ZS5zZXR0aW5ncy5yb2xlcycgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgICAgICAgIDxlby1wZXJtaXNzaW9ucyBbcm9sZXNdPVwidXNlci5yb2xlc1wiPjwvZW8tcGVybWlzc2lvbnM+XG4gICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gYWdlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLW90aGVyc1wiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLm90aGVyczwvaDM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QWdlbnRDb25maWdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5hZ2VudDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlLWFnZW50XCI+XG4gICAgICAgICAgICAgICAgPGVvLWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJ1c2VBZ2VudENvbnRyb2xcIiBbcmVhZG9ubHldPVwidXNlQWdlbnRDb250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidXNlQWdlbnRDb250cm9sXCI+PC9lby1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZS1hZ2VudC1sYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5hZ2VudC51c2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiaHR0cHM6Ly9oZWxwLm9wdGltYWwtc3lzdGVtcy5jb20veXV1dmlzUkFEL3Y2MC91c2VyL2NsaWVudC9kZS9jbGllbnQvaW50ZWdyYXRpb24vY2xuX3Rza19hZ2VudF9nbG9iYWwuaHRtP0hpZ2hsaWdodD1hZ2VudFwiPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiaW5mby1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfaW5mby5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICA8L2E+IC0tPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgbG9jay1zZXR0aW5nc1wiIFtuZ0NsYXNzXT1cInsnbG9jay1zZXR0aW5ncy0tc2hvdyc6IChhZ2VudFN0YXR1cyB8IGFzeW5jKX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWVuYWJsZWRcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5hbHdheXMpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhZ2VudExvY2tTZXR0aW5ncyA9PT0gTG9ja1NldHRpbmdzLmFsd2F5c31cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5lbmFibGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tZGlzYWJsZWRcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5uZXZlcilcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MubmV2ZXJ9XCIgW2Rpc2FibGVkXT1cImRlZmF1bHRMb2NrU2V0dGluZ1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2suZGlzYWJsZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1hc2tcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5hc2spXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhZ2VudExvY2tTZXR0aW5ncyA9PT0gTG9ja1NldHRpbmdzLmFza31cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5hc2s8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmNhY2hlPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJjbGVhckNhY2hlKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhcjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FjaGVcIj5cbiAgICAgICAgICAgICAgICA8ZW8tZm9ybS1pbnB1dCBjbGFzcz1cImNoZWNrYm94XCIgW3NraXBUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmNvbmZpZy5jYWNoZS5zeXN0ZW0nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjYWNoZS5zeXN0ZW1cIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8ZW8tZm9ybS1pbnB1dCBjbGFzcz1cImNoZWNrYm94XCIgW3NraXBUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmNvbmZpZy5jYWNoZS5oaXN0b3J5JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPGVvLWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2FjaGUuaGlzdG9yeVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiPjwvZW8tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuICAgICAgICAgICAgICAgIDxlby1mb3JtLWlucHV0IGNsYXNzPVwiY2hlY2tib3hcIiBbc2tpcFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZW8uc3RhdGUuc2V0dGluZ3MuY29uZmlnLmNhY2hlLmxheW91dCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNhY2hlLmxheW91dFwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiPjwvZW8tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9lby1mb3JtLWlucHV0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3M8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cInNhdmVMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImxvYWRMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidkZWxldGVfX2RpYWxvZydcIj5cbiAgICA8ZGl2Pnt7J2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiID5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5jYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAjY29uZmlybURlbGV0ZUJ0biAoY2xpY2spPVwiZGVsZXRlVXNlckltYWdlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5vazwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2VvLWRpYWxvZz5cblxuICA8ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0Vycm9yRGlhbG9nXCJcbiAgICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2RlbGV0ZV9fZGlhbG9nJ1wiPlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPnt7ZmlsZU5hbWV9fTwvcD5cbiAgICAgIDxwICpuZ0lmPVwidmlld01vZGUgPT09J3NpemUnXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5zaXplRXJyb3I8L3A+XG4gICAgICA8cCAqbmdJZj1cInZpZXdNb2RlID09PSdpbWFnZSdcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLmZpbGVFcnJvciA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dFcnJvckRpYWxvZyA9IGZhbHNlXCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5jYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAoY2xpY2spPVwiZmlsZXMuY2xpY2soKTsgc2hvd0Vycm9yRGlhbG9nID0gZmFsc2VcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5iYWNrPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZW8tZGlhbG9nPlxuPC9kaXY+XG4iXX0=
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBS0wsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRzFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPakQsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFzQzVCLFlBQW9CLFFBQW1CLEVBQzlCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDYixNQUE0QixFQUM1QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsWUFBOEIsRUFDOUIsWUFBMEIsRUFDMUIsRUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FBbUMsRUFDcEMsU0FBMkIsRUFDMUIsT0FBbUIsRUFDbkIsWUFBa0M7UUFkeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUM5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bnRSZWYsIFJlbmRlcmVyMiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQXBwQ2FjaGVTZXJ2aWNlLFxuICBDYXBhYmlsaXRpZXMsXG4gIENhcGFiaWxpdGllc1NlcnZpY2UsXG4gIENvbmZpZyxcbiAgRW5haW9FdmVudCxcbiAgRW9Vc2VyLFxuICBFdmVudFNlcnZpY2UsXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgZm9ya0pvaW4sIGZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZSwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlLCBhZ2VudENvbmZpZ0tleXN9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyQXZhdGFyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvdWkvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7TG9ja1NldHRpbmdzfSBmcm9tICcuL2FnZW50LWxvY2stc2V0dGluZ3MuZW51bSc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHVzZXI6IEVvVXNlcjtcbiAgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXM7XG4gIGRlcHV0aWVzOiB7XG4gICAgZGF0YTogc3RyaW5nW10sXG4gICAgZGF0YU1ldGE6IGFueVtdXG4gIH07XG4gIHNob3dDaGFuZ2VQYXNzd29yZEZvcm06IGJvb2xlYW47XG4gIGNsaWVudExvY2FsZXM6IGFueTtcbiAgc2NoZW1hTG9jYWxlczogYW55W107XG4gIHB1YmxpYyBMb2NrU2V0dGluZ3MgPSBMb2NrU2V0dGluZ3M7XG4gIGFnZW50TG9ja1NldHRpbmdzOiBMb2NrU2V0dGluZ3M7XG4gIHVzZUFnZW50Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBzaG93QWdlbnRDb25maWcgPSB0cnVlO1xuICBkZWZhdWx0TG9ja1NldHRpbmcgPSBmYWxzZTtcblxuICB1c2VyJCA9IHRoaXMudXNlclNlcnZpY2UudXNlciQ7XG4gIHVzZXJJZCA9ICcnO1xuICBzaG93RGVsZXRlSWNvblRyYXNoID0gdHJ1ZTtcbiAgdXNlckltYWdlVXJpID0gJyc7XG4gIHByZXZpZXc6IHN0cmluZztcbiAgZmlsZTogYW55O1xuICBob3ZlclNlbGVjdG9yID0gZmFsc2U7XG4gIHNob3dQcmV2aWV3RGlhbG9nID0gZmFsc2U7XG4gIHNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgc2hvd0Vycm9yRGlhbG9nID0gZmFsc2U7XG4gIE1BWF9GSUxFX1NJWkUgPSA1MjQyODg7XG4gIHZpZXdNb2RlID0gJyc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZXMnKSBmaWxlczogRWxlbWVudFJlZiA9IHt9IGFzIEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlckJnJykgaGVhZGVyQmc7XG4gIEBWaWV3Q2hpbGQoJ3VzZXJBdmF0YXInKSB1c2VyQXZhdGFyOiBVc2VyQXZhdGFyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjb25maXJtRGVsZXRlQnRuJykgY29uZmlybURlbGV0ZUJ0bjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncHJvZmlsZUltYWdlT3ZlcmxheScpIHByb2ZpbGVJbWFnZU92ZXJsYXk6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoTmdGb3JtKSBkZXB1dGllc0Zvcm06IE5nRm9ybTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnOiBDb25maWcsXG4gICAgcHJpdmF0ZSBub3RpZnk6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJhci5idXR0b24uc2V0dGluZ3MudGl0bGUnKSk7XG4gICAgdGhpcy5jbGllbnRMb2NhbGVzID0gY29uZmlnLmdldENsaWVudExvY2FsZXMoKTtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLmdldFNjaGVtYUxvY2FsZXMoKTtcbiAgICB0aGlzLmdldFVzZXJEYXRhKCk7XG4gICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IHVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkudXNlclNldHRpbmdzLmFsd2F5c2xvY2s7XG4gICAgdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkLnBpcGUodGFrZSgxKSwgd2l0aExhdGVzdEZyb20odGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRDb25maWckKSkuc3Vic2NyaWJlKChbaXNDb25uZWN0ZWQsIGNvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sID0gdGhpcy5mYi5jb250cm9sKGlzQ29ubmVjdGVkKTtcbiAgICAgIGlmIChjb25maWcuaGFzT3duUHJvcGVydHkoYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUKSkge1xuICAgICAgICB0aGlzLnNob3dBZ2VudENvbmZpZyA9IGNvbmZpZ1thZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1RdO1xuICAgICAgICB0aGlzLnVzZUFnZW50Q29udHJvbC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1MpICYmIE9iamVjdC52YWx1ZXMoTG9ja1NldHRpbmdzKS5pbmNsdWRlcyhjb25maWdbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU10pKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdExvY2tTZXR0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGNvbmZpZ1thZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTXTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQgPSB0aGlzLnVzZUFnZW50Q29udHJvbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgYWdlbnRTdGF0dXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkJDtcbiAgfVxuXG4gIGdldCBhY3RpdmVTY2hlbWEoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5nZXRTY2hlbWFMb2NhbGUoKTtcbiAgfVxuXG4gIGhhc1ByaXZpbGVnZShwcml2aWxlZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1ByaXZpbGVnZShwcml2aWxlZ2UpO1xuICB9XG5cbiAgY2hhbmdlTG9ja1NldHRpbmdzKGxvY2tTZXR0aW5nczogTG9ja1NldHRpbmdzKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VMb2NrU2V0dGluZyhsb2NrU2V0dGluZ3MpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFnZW50TG9ja1NldHRpbmdzID0gbG9ja1NldHRpbmdzKTtcbiAgfVxuXG4gIGdldFNjaGVtYUxvY2FsZXMoKSB7XG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLnN5c3RlbSQuc3Vic2NyaWJlKChzeXN0ZW1EZWZpbml0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNjaGVtYUxvY2FsZXMgPSBzeXN0ZW1EZWZpbml0aW9uLmxvY2FsZXMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdkaXNwbGF5bmFtZScpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVEZXB1dGllcygpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldERlcHV0aWVzKHRoaXMuZGVwdXRpZXMuZGF0YSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHRoaXMuZGVwdXRpZXNGb3JtLnJlc2V0Rm9ybSh7ZGVwdXRpZXM6IHRoaXMuZGVwdXRpZXMuZGF0YX0pKTtcbiAgfVxuXG4gIHJlc2V0RGVwdXRpZXMoKSB7XG4gICAgdGhpcy5kZXB1dGllc0Zvcm0ucmVzZXRGb3JtKHtkZXB1dGllczogdGhpcy51c2VyLmRlcHV0aWVzLm1hcChkID0+IGQubmFtZSl9KTtcbiAgfVxuXG4gIGdldFVzZXJEYXRhKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgICAvLyB0aGlzLnVzZXIgPSBPYmplY3QuYXNzaWduKHVzZXIsIHtjYXBhYmlsaXRpZXM6IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKX0pO1xuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIC8vIGRlcHV0aWVzXG4gICAgICB0aGlzLmRlcHV0aWVzID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnVzZXIuZGVwdXRpZXMubWFwKGQgPT4gZC5uYW1lKSxcbiAgICAgICAgZGF0YU1ldGE6IHRoaXMudXNlci5kZXB1dGllc1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZEZvcm0gPSBmYWxzZTtcbiAgfVxuXG4gIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRTdXBwb3J0ZWRDbGllbnRMb2NhbGVzKCkuaW5jbHVkZXMoaXNvKSkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VDbGllbnRMb2NhbGUoaXNvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuZXJyb3InKSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlU2NoZW1hTG9jYWxlKGlzbzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudXNlci5zY2hlbWFMb2NhbGUgIT09IGlzbykge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VTY2hlbWFMb2NhbGUoaXNvKS5zdWJzY3JpYmUoXG4gICAgICAgIF8gPT4gVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci50aXRsZScpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVzZXIuc2VydmljZS5zY2hlbWEubG9jYWxlLmVycm9yLmRlc2NyaXB0aW9uJykpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmVsZW1SZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjcHJlc2VuY2UnKS5mb2N1cygpO1xuICAgIHRoaXMudXNlciQuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgdGhpcy51c2VySWQgPSB1c2VyLmlkO1xuICAgICAgdGhpcy51c2VySW1hZ2VVcmkgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaSh0aGlzLnVzZXJJZCk7XG4gICAgICB0aGlzLnJlZnJlc2hVc2VySW1hZ2VIZWFkZXJCYWNrZ3JvdW5kKHRoaXMudXNlckltYWdlVXJpKTtcbiAgICAgIHRoaXMuc2hvd0RlbGV0ZUljb25UcmFzaCA9ICEhdXNlci5pbWFnZVVyaTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFByZXNlbmNlKGI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFByZXNlbmNlKGIpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgKTtcbiAgfVxuICBjbG9zZVByZXZpZXdEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93UHJldmlld0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBkZWxldGVVc2VySW1hZ2UoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZShudWxsKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcignJywgZXJyLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJyk7XG4gICAgICAgIH0sXG5cbiAgICAgIH0pO1xuXG4gIH1cblxuICBzZWxlY3RJbWFnZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xuICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGUubmFtZTtcbiAgICAgIHN3aXRjaCAoZmFsc2UpIHtcblxuICAgICAgICBjYXNlICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnaW1hZ2UvJykgJiYgdGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJ2pwZWcnKSB8fCB0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygncG5nJykpOlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPSAnaW1hZ2UnO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yRGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICh0aGlzLmZpbGUuc2l6ZSA8PSB0aGlzLk1BWF9GSUxFX1NJWkUpOlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPSAnc2l6ZSc7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSAnJztcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLnNob3dQcmV2aWV3RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkTmV3VXNlckltYWdlKCkge1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZSh0aGlzLmZpbGUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2ZpbGVJbWFnZU92ZXJsYXkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lNQUdFX0NIQU5HRSk7XG4gICAgICAgICAgdGhpcy5jbG9zZVByZXZpZXdEaWFsb2coKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKCcnLCBlcnIuZXJyb3IuY2F1c2UubWVzc2FnZXNbMF0pO1xuICAgICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKTtcbiAgICAgICAgfSxcbiAgfSk7XG59XG5cbiAgdGFiQWN0aW9uKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgaW5wdXQuYmx1cigpO1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIG1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5ob3ZlclNlbGVjdG9yID0gdHJ1ZTtcbiAgfVxuICBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIHRyYXNoSWNvbkNsaWNrKCkge1xuICAgIHRoaXMuc2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XG4gIH1cblxuICByZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZChpbWFnZVVyaTogc3RyaW5nKSB7XG4gICAgaWYgKGltYWdlVXJpKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhlYWRlckJnLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWltYWdlJywgYHVybCgke2ltYWdlVXJpICsgJyZ0PScgKyB0aW1lc3RhbXB9KWApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTG9jYWxTZXR0aW5ncygpIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW1xuICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKSxcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXIoKSxcbiAgICBdLmZpbHRlcihhID0+IGEpO1xuXG4gICAgcmV0dXJuIGFjdGlvbnMubGVuZ3RoID8gZm9ya0pvaW4oYWN0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmNhY2hlLmNsZWFyLnN1Y2Nlc3MnKSk7XG4gICAgICAgIHRoaXMuc2F2ZUxvY2FsU2V0dGluZ3MoKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5lcnJvcicpKVxuICAgICkgJiYgdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUxvY2FsU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgbG9jYWxTZXR0aW5ncyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U3RvcmFnZSgpO1xuICAgIGNvbnN0IGNhY2hlU2V0dGluZ3MgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhY2hlU2VydmljZS5nZXRTdG9yYWdlKCkpO1xuICAgIGRlbGV0ZSBjYWNoZVNldHRpbmdzWydlby5mcmFtZXdvcmsuY2FjaGUuc3lzdGVtZGVmaW5pdGlvbiddO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2F2ZUxvY2FsU2V0dGluZ3MobG9jYWxTZXR0aW5ncywgY2FjaGVTZXR0aW5ncykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkTG9jYWxTZXR0aW5ncygpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvYWRMb2NhbFNldHRpbmdzKCkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U3RvcmFnZShzZXR0aW5ncy5sb2NhbFNldHRpbmdzKTtcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlcGxhY2VTdG9yYWdlKHNldHRpbmdzLmNhY2hlU2V0dGluZ3MpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tc2V0dGluZ3NcIiAqbmdJZj1cInVzZXJcIiBlb1J0bEF3YXJlPlxuXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cblxuICAgIDxkaXYgI2hlYWRlckJnIGNsYXNzPVwiYmdcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgdXNlcm5hbWVcIj57e3VzZXIubmFtZX19PC9kaXY+XG4gICAgICA8aDE+e3t1c2VyLmZpcnN0bmFtZX19IHt7dXNlci5sYXN0bmFtZX19PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhIGVtYWlsXCI+e3t1c2VyLmVtYWlsfX08L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInByZXNlbmNlXCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaW5ib3hcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBkYXJrIHByZXNlbnRcIiBpZD1cInByZXNlbmNlXCIgKGNsaWNrKT1cInNldFByZXNlbmNlKHRydWUpXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogdXNlci5wcmVzZW50fVwiXG4gICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UucHJlc2VudDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGRhcmsgYWJzZW50XCIgKGNsaWNrKT1cInNldFByZXNlbmNlKGZhbHNlKVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAhdXNlci5wcmVzZW50fVwiXG4gICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmFic2VudDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKClcIiAoa2V5ZG93bi50YWIpPVwibW91c2VFbnRlcigpXCI+XG5cbiAgICAgIDxlby11c2VyLWF2YXRhciAjdXNlckF2YXRhciBjbGFzcz1cInVzZXJJbWFnZVwiIHRhYmluZGV4PVwiLTFcIiBlb1J0bEF3YXJlPVwiZnVsbFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi5qcGcsIC5wbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiAjZmlsZXMgKGNoYW5nZSk9XCJzZWxlY3RJbWFnZSgkZXZlbnQudGFyZ2V0KVwiIChjbGljayk9XCIkZXZlbnQudGFyZ2V0LnZhbHVlPW51bGxcIj5cbiAgICAgIDwvZW8tdXNlci1hdmF0YXI+XG4gICAgICA8ZW8tZGlhbG9nICBbc3R5bGVDbGFzc109XCIndmlldydcIiBbbWluV2lkdGhdPVwiJzMwMHB4J1wiIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZXZpZXdEaWFsb2dcIiBbZm9jdXNPblNob3ddPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhXCI+XG4gICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwicHJldmlld1wiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItYXZhdGFyXCIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgPGVvLXVzZXItYXZhdGFyIGNsYXNzPVwicHJldmlldy1yb3VuZFwiIFtwcmV2aWV3VXJpXT1cInByZXZpZXdcIj48L2VvLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tYmxvY2tcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVByZXZpZXdEaWFsb2coKVwiIGNsYXNzPVwiYnV0dG9uIGRhbmdlclwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cInVwbG9hZE5ld1VzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRpYWxvZy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9lby1kaWFsb2c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgI3Byb2ZpbGVJbWFnZU92ZXJsYXkgdGFiaW5kZXg9XCIwXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVNZXNzYWdlXCIgKm5nSWY9XCJob3ZlclNlbGVjdG9yXCI+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwiZmlsZXMuY2xpY2soKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2VkaXQuc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsZXMuY2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJ0cmFzaEljb25DbGljaygpXCIgKm5nSWY9XCJzaG93RGVsZXRlSWNvblRyYXNoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIChjbGljayk9XCJ0cmFzaEljb25DbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5LXdyYXBcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1kZXB1dGllc1wiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmJwbSAmJiBoYXNQcml2aWxlZ2UoJ01BTkFHRV9ERVBVVFlfTElTVCcpXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXM8L2gzPlxuXG4gICAgICAgIDwhLS0gZGVwdXRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBkZXB1dGllc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxmb3JtICNkZXB1dGllc0Zvcm09XCJuZ0Zvcm1cIiBbbmdDbGFzc109XCJ7ZGlydHk6IGRlcHV0aWVzRm9ybS5kaXJ0eX1cIj5cbiAgICAgICAgICAgICAgPGVvLW9yZ2FuaXphdGlvbiBuYW1lPVwiZGVwdXRpZXNcIiBbZGF0YU1ldGFdPVwiZGVwdXRpZXMuZGF0YU1ldGFcIiBbZmlsdGVyT2JqZWN0XT1cInt0eXBlOiAnVVNFUid9XCJcbiAgICAgICAgICAgICAgICBbZXhjZXB0aW9uc109XCJbdXNlci5uYW1lXVwiIFttdWx0aXNlbGVjdF09XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCIgWyhuZ01vZGVsKV09XCJkZXB1dGllcy5kYXRhXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJkZXB1dGllc0Zvcm0udmFsaWQgJiYgZGVwdXRpZXNGb3JtLmRpcnR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJyZXNldERlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZURlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXMuc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBzdWJzdGl0dXRlIG9mIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgc3Vic3RpdHV0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5zdWJzaXR1dGVvZi5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBzdWIgb2YgdXNlci5zdWJzdGl0dXRlc09mXCIgW25nQ2xhc3NdPVwie3ByZXNlbnQ6IHN1Yi5wcmVzZW50fVwiPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1wcmVzZW50XCIgKm5nSWY9XCJzdWIucHJlc2VudFwiXG4gICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZG9uZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImNoaXAgc3Vic3RpdHV0ZSBzdWJzdGl0dXRlLS1hd2F5XCIgKm5nSWY9XCIhc3ViLnByZXNlbnRcIlxuICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7c3ViLnRpdGxlfX0gKHt7c3ViLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcGFzc3dvcmQgLS0+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1wYXNzd29yZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8ucGFzc3dvcmQucmVzZXQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvbiAjc2ltcGxlQWNjIFtoZWFkZXJdPVwiKCdlby5wYXNzd29yZC5yZXNldCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW3N0eWxlc109XCInc2V0dGluZ19fY2hhbmdlLXBhc3N3b3JkJ1wiIFtoZWFkZXJDbGFzc109XCInc2V0dGluZ19fY2hhbmdlLXBhc3N3b3JkLWhlYWRlcidcIj5cblxuICAgICAgICAgICAgICA8ZW8tY2hhbmdlLXBhc3N3b3JkLWZvcm0gKG9uRm9ybVN1bWJpdCk9XCJzaW1wbGVBY2Muc2VsZWN0ZWQgPSBmYWxzZVwiPjwvZW8tY2hhbmdlLXBhc3N3b3JkLWZvcm0+XG4gICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIGxhbmd1YWdlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1sYW5nXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2U8L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgbGFuZy1hcHBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuY2xpZW50PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZVwiIChjbGljayk9XCJjaGFuZ2VDbGllbnRMb2NhbGUobG9jYWxlLmlzbylcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiB0cmFuc2xhdGUuY3VycmVudExhbmcgPT09IGxvY2FsZS5pc299XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvY2FsZSBvZiBjbGllbnRMb2NhbGVzXCI+e3tsb2NhbGUubGFiZWx9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsYW5nLWRlZlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZS5zY2hlbWE8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlXCIgKGNsaWNrKT1cImNoYW5nZVNjaGVtYUxvY2FsZShsb2NhbGUuY29kZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhY3RpdmVTY2hlbWEgPT09IGxvY2FsZS5jb2RlfVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb2NhbGUgb2Ygc2NoZW1hTG9jYWxlc1wiPnt7bG9jYWxlLmRpc3BsYXluYW1lfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBwZXJtaXNzaW9ucyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tcGVybVwiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnBlcm1pc3Npb248L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgcGVybS1yb2xlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5yb2xlczwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXMgcm9sZXNcIj5cbiAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uIFtoZWFkZXJdPVwiKCdlby5zdGF0ZS5zZXR0aW5ncy5yb2xlcycgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgICAgICAgIDxlby1wZXJtaXNzaW9ucyBbcm9sZXNdPVwidXNlci5yb2xlc1wiPjwvZW8tcGVybWlzc2lvbnM+XG4gICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gYWdlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLW90aGVyc1wiPlxuICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLm90aGVyczwvaDM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QWdlbnRDb25maWdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5hZ2VudDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlLWFnZW50XCI+XG4gICAgICAgICAgICAgICAgPGVvLWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJ1c2VBZ2VudENvbnRyb2xcIiBbcmVhZG9ubHldPVwidXNlQWdlbnRDb250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidXNlQWdlbnRDb250cm9sXCI+PC9lby1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZS1hZ2VudC1sYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5hZ2VudC51c2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiaHR0cHM6Ly9oZWxwLm9wdGltYWwtc3lzdGVtcy5jb20veXV1dmlzUkFEL3Y2MC91c2VyL2NsaWVudC9kZS9jbGllbnQvaW50ZWdyYXRpb24vY2xuX3Rza19hZ2VudF9nbG9iYWwuaHRtP0hpZ2hsaWdodD1hZ2VudFwiPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiaW5mby1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfaW5mby5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICA8L2E+IC0tPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnkgbG9jay1zZXR0aW5nc1wiIFtuZ0NsYXNzXT1cInsnbG9jay1zZXR0aW5ncy0tc2hvdyc6IChhZ2VudFN0YXR1cyB8IGFzeW5jKX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWVuYWJsZWRcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5hbHdheXMpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhZ2VudExvY2tTZXR0aW5ncyA9PT0gTG9ja1NldHRpbmdzLmFsd2F5c31cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5lbmFibGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tZGlzYWJsZWRcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5uZXZlcilcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MubmV2ZXJ9XCIgW2Rpc2FibGVkXT1cImRlZmF1bHRMb2NrU2V0dGluZ1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2suZGlzYWJsZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1hc2tcIiAoY2xpY2spPVwiY2hhbmdlTG9ja1NldHRpbmdzKExvY2tTZXR0aW5ncy5hc2spXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBhZ2VudExvY2tTZXR0aW5ncyA9PT0gTG9ja1NldHRpbmdzLmFza31cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5hc2s8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJzYXZlTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJsb2FkTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5sb2FkPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gdHJhbnNsYXRlIChjbGljayk9XCJjbGVhckxvY2FsU2V0dGluZ3MoKVwiPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3MuY2xlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidkZWxldGVfX2RpYWxvZydcIj5cbiAgICA8ZGl2Pnt7J2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiID5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5jYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAjY29uZmlybURlbGV0ZUJ0biAoY2xpY2spPVwiZGVsZXRlVXNlckltYWdlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5vazwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2VvLWRpYWxvZz5cblxuICA8ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0Vycm9yRGlhbG9nXCJcbiAgICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2RlbGV0ZV9fZGlhbG9nJ1wiPlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPnt7ZmlsZU5hbWV9fTwvcD5cbiAgICAgIDxwICpuZ0lmPVwidmlld01vZGUgPT09J3NpemUnXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5zaXplRXJyb3I8L3A+XG4gICAgICA8cCAqbmdJZj1cInZpZXdNb2RlID09PSdpbWFnZSdcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLmZpbGVFcnJvciA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dFcnJvckRpYWxvZyA9IGZhbHNlXCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5jYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAoY2xpY2spPVwiZmlsZXMuY2xpY2soKTsgc2hvd0Vycm9yRGlhbG9nID0gZmFsc2VcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5iYWNrPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZW8tZGlhbG9nPlxuPC9kaXY+XG4iXX0=