@eo-sdk/client 10.0.0-beta.2 → 10.0.0-beta.4

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 (176) hide show
  1. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
  2. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +7 -3
  3. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  4. package/app/eo-framework/app-shell/app-shell.module.d.ts +2 -1
  5. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  6. package/app/eo-framework/eo-framework.module.d.ts +26 -29
  7. package/app/eo-framework/eo-framework.module.d.ts.map +1 -1
  8. package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts.map +1 -1
  9. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +3 -1
  10. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
  11. package/app/eo-framework/form-elements/date/date.component.d.ts +2 -0
  12. package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
  13. package/app/eo-framework/form-elements/date/year-range/year-range.directive.d.ts.map +1 -0
  14. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +3 -1
  15. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  16. package/app/eo-framework/form-elements/form-elements.module.d.ts +37 -39
  17. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  18. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  19. package/app/eo-framework/form-elements/index.d.ts +1 -3
  20. package/app/eo-framework/form-elements/index.d.ts.map +1 -1
  21. package/app/eo-framework/form-elements/reference/reference.component.d.ts.map +1 -1
  22. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +3 -2
  23. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts.map +1 -1
  24. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts +1 -5
  25. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts.map +1 -1
  26. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +4 -7
  27. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  28. package/app/eo-framework/grid/grid.module.d.ts +4 -3
  29. package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
  30. package/app/eo-framework/inbox-details/inbox-details.component.d.ts +2 -7
  31. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  32. package/app/eo-framework/index.d.ts +0 -1
  33. package/app/eo-framework/index.d.ts.map +1 -1
  34. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  35. package/app/eo-framework/object-details/object-details.component.d.ts +2 -7
  36. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  37. package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
  38. package/app/eo-framework/object-form/object-form/object-form.component.d.ts +6 -59
  39. package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
  40. package/app/eo-framework/object-form/object-form-helper.service.d.ts +86 -2
  41. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  42. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +3 -11
  43. package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
  44. package/app/eo-framework/plugins/plugin.component.d.ts +0 -2
  45. package/app/eo-framework/plugins/plugin.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/process/details/process-details.component.d.ts +2 -7
  48. package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
  49. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +2 -7
  50. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
  51. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -1
  52. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  53. package/assets/_default/i18n/de.json +2 -0
  54. package/assets/_default/i18n/en.json +4 -2
  55. package/esm2020/app/eo-client/about-state/about-state.component.mjs +5 -5
  56. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +3 -3
  57. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  58. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +3 -3
  59. package/esm2020/app/eo-client/login/login.component.mjs +5 -6
  60. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  61. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +4 -4
  62. package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +1 -1
  63. package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +6 -8
  64. package/esm2020/app/eo-client/settings/settings.component.mjs +3 -3
  65. package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +4 -4
  66. package/esm2020/app/eo-client/version-state/version-state.component.mjs +1 -1
  67. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +3 -3
  68. package/esm2020/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +1 -1
  69. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +1 -1
  70. package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +1 -1
  71. package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +2 -2
  72. package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +1 -1
  73. package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +1 -1
  74. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +32 -20
  75. package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +8 -4
  76. package/esm2020/app/eo-framework/eo-framework.module.mjs +3 -36
  77. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +1 -4
  78. package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +9 -3
  79. package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +9 -24
  80. package/esm2020/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +44 -0
  81. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +2 -2
  82. package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +9 -3
  83. package/esm2020/app/eo-framework/form-elements/form-elements.module.mjs +3 -13
  84. package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +11 -12
  85. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +2 -2
  86. package/esm2020/app/eo-framework/form-elements/index.mjs +2 -4
  87. package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +2 -2
  88. package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
  89. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +5 -5
  90. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +3 -3
  91. package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +8 -3
  92. package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +9 -17
  93. package/esm2020/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +3 -3
  94. package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +2 -2
  95. package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +9 -27
  96. package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +2 -2
  97. package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +3 -3
  98. package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +2 -2
  99. package/esm2020/app/eo-framework/grid/grid.component.mjs +2 -2
  100. package/esm2020/app/eo-framework/grid/grid.module.mjs +5 -8
  101. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -15
  102. package/esm2020/app/eo-framework/index.mjs +1 -2
  103. package/esm2020/app/eo-framework/media/media.component.mjs +5 -4
  104. package/esm2020/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +1 -1
  105. package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +1 -1
  106. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +10 -15
  107. package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +1 -2
  108. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +4 -4
  109. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -1
  110. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +18 -494
  111. package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +1 -1
  112. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +506 -7
  113. package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +19 -27
  114. package/esm2020/app/eo-framework/plugins/plugin.component.mjs +5 -7
  115. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -4
  116. package/esm2020/app/eo-framework/process/details/process-details.component.mjs +10 -16
  117. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +7 -16
  118. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +1 -1
  119. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +6 -3
  120. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +3 -3
  121. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +6 -1
  122. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +5 -0
  123. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  124. package/fesm2015/eo-sdk-client.mjs +3744 -4567
  125. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  126. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +5 -0
  127. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  128. package/fesm2020/eo-sdk-client.mjs +3746 -4568
  129. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  130. package/package.json +4 -4
  131. package/projects/eo-sdk/core/lib/util/utils.d.ts +1 -0
  132. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +1 -1
  133. package/scss/_eo-variables.scss +70 -40
  134. package/scss/_form.scss +6 -0
  135. package/scss/_main.scss +1 -1
  136. package/scss/_theme-dark.scss +22 -0
  137. package/scss/_yuuvis-components.scss +13 -2
  138. package/styles.css +51 -24
  139. package/styles.scss +5 -10
  140. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.d.ts +0 -67
  141. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.d.ts.map +0 -1
  142. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.d.ts +0 -21
  143. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.d.ts.map +0 -1
  144. package/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.d.ts +0 -33
  145. package/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.d.ts.map +0 -1
  146. package/app/eo-framework/form-elements/datetime/datetime.component.d.ts +0 -51
  147. package/app/eo-framework/form-elements/datetime/datetime.component.d.ts.map +0 -1
  148. package/app/eo-framework/form-elements/datetime/year-range/year-range.directive.d.ts.map +0 -1
  149. package/app/eo-framework/tab-container/index.d.ts +0 -6
  150. package/app/eo-framework/tab-container/index.d.ts.map +0 -1
  151. package/app/eo-framework/tab-container/tab-container.component.d.ts +0 -62
  152. package/app/eo-framework/tab-container/tab-container.component.d.ts.map +0 -1
  153. package/app/eo-framework/tab-container/tab-container.module.d.ts +0 -18
  154. package/app/eo-framework/tab-container/tab-container.module.d.ts.map +0 -1
  155. package/app/eo-framework/tab-container/tab-panel/tab-panel.component.d.ts +0 -13
  156. package/app/eo-framework/tab-container/tab-panel/tab-panel.component.d.ts.map +0 -1
  157. package/app/eo-framework/tab-container/tab-view/tab-view.component.d.ts +0 -19
  158. package/app/eo-framework/tab-container/tab-view/tab-view.component.d.ts.map +0 -1
  159. package/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.d.ts +0 -11
  160. package/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.d.ts.map +0 -1
  161. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.mjs +0 -239
  162. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.mjs +0 -2
  163. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.mjs +0 -109
  164. package/esm2020/app/eo-framework/form-elements/datetime/datetime.component.mjs +0 -142
  165. package/esm2020/app/eo-framework/form-elements/datetime/year-range/year-range.directive.mjs +0 -44
  166. package/esm2020/app/eo-framework/tab-container/index.mjs +0 -6
  167. package/esm2020/app/eo-framework/tab-container/tab-container.component.mjs +0 -184
  168. package/esm2020/app/eo-framework/tab-container/tab-container.module.mjs +0 -47
  169. package/esm2020/app/eo-framework/tab-container/tab-panel/tab-panel.component.mjs +0 -26
  170. package/esm2020/app/eo-framework/tab-container/tab-view/tab-view.component.mjs +0 -61
  171. package/esm2020/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.mjs +0 -25
  172. package/scss/_eo-inverted.scss +0 -73
  173. package/scss/_eo-pink-theme.scss +0 -73
  174. package/scss/_eo-theme.scss +0 -81
  175. package/scss/_eo-vars.scss +0 -3
  176. /package/app/eo-framework/form-elements/{datetime → date}/year-range/year-range.directive.d.ts +0 -0
@@ -1,9 +1,7 @@
1
1
  import { CellRenderer } from './../../eo-framework-core/api/grid.service';
2
- import { Component, ContentChildren, HostBinding, Input, QueryList, ViewChild } from '@angular/core';
2
+ import { Component, HostBinding, Input, ViewChild } from '@angular/core';
3
3
  import { ClipboardAction, EnaioEvent, InboxItem, Utils } from '@eo-sdk/core';
4
4
  import { catchError, map, takeUntil } from 'rxjs/operators';
5
- import { TabPluginComponent } from '../plugins/plugin.component';
6
- import { TabPanelComponent } from '../tab-container/tab-panel/tab-panel.component';
7
5
  import { UnsubscribeOnDestroy } from '../util/unsubscribe/unsubscribe.component';
8
6
  import * as i0 from "@angular/core";
9
7
  import * as i1 from "@eo-sdk/core";
@@ -57,7 +55,6 @@ export class InboxDetailsComponent extends UnsubscribeOnDestroy {
57
55
  this.initializing = { closed: true };
58
56
  this.filesAdding = { closed: true };
59
57
  this.storageKeyLastItemID = 'eo.inbox.lastItemID';
60
- this.externalPanels = new QueryList();
61
58
  this.addDefaultActionIfEmpty = (res) => {
62
59
  if (!res.actions?.length) {
63
60
  res.actions = [this.defaultWorkItemAction];
@@ -429,25 +426,21 @@ export class InboxDetailsComponent extends UnsubscribeOnDestroy {
429
426
  }
430
427
  }
431
428
  ngAfterViewInit() {
432
- let panels = this.tabPanels.toArray();
433
- this.tabPlugins.forEach(p => (panels = panels.concat(p.tabPanels.toArray())));
434
- this.externalPanels.reset(panels);
429
+ // let panels = this.tabPanels.toArray();
430
+ // this.tabPlugins.forEach(
431
+ // p => (panels = panels.concat(p.tabPanels.toArray()))
432
+ // );
433
+ // this.externalPanels.reset(panels);
435
434
  }
436
435
  }
437
436
  InboxDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: InboxDetailsComponent, deps: [{ token: i1.BpmService }, { token: i1.UserService }, { token: i1.InboxService }, { token: i2.SelectionService }, { token: i3.Router }, { token: i1.EventService }, { token: i1.ClipboardService }, { token: i1.TranslateService }, { token: i4.PendingChangesService }, { token: i1.NotificationsService }, { token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
438
- InboxDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: InboxDetailsComponent, selector: "eo-inbox-details", inputs: { emptyState: "emptyState", applySelection: "applySelection", item: "item" }, host: { properties: { "attr.data-type": "this.dataType" } }, queries: [{ propertyName: "tabPanels", predicate: TabPanelComponent }, { propertyName: "tabPlugins", predicate: TabPluginComponent }], viewQueries: [{ propertyName: "bpmFormEl", first: true, predicate: ["bpmForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"inbox-details\" *ngIf=\"item; else noItem\" [ngClass]=\"{bpm: item.type === 'BPM'}\">\n\n <div class=\"eo-head\" [ngClass]=\"{'eo-head-tabs': item.type === 'BPM'}\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"!item.iconId\" title=\"{{item?.type}}\"\n [iconSrc]=\"'assets/_default/svg/ic_loop.svg'\"></eo-icon>\n <eo-icon class=\"eo-header-icon\" *ngIf=\"item.iconId\" title=\"{{item?.type}}\" [iconId]=\"item.iconId\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 *ngIf=\"item.description\" class=\"eo-header-subtitle\">{{item.description}}</h3>\n <h3 *ngIf=\"workItem && !item.description\" class=\"eo-header-subtitle\">{{workItem.qmodelname}}</h3>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button primary refresh-button\" *ngIf=\"initializing.closed\" (click)=\"refresh()\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\" *ngIf=\"initializing.closed\">\n\n <div class=\"load-error\" *ngIf=\"loadError\">\n <eo-error-message></eo-error-message>\n </div>\n\n <!-- details for BPM items -->\n <yvc-tabs *ngIf=\"item.type === 'BPM'; else dmsTask\">\n <!-- task -->\n <ng-template [yvcTab]=\"{id: 'task', label: 'eo.process.details.tab.task' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel\">\n\n <div class=\"process-description\" *ngIf=\"workItem?.description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{workItem.description}}</div>\n </div>\n\n <eo-duetimeInfo *ngIf=\"item?.duetime\" [item]=\"item\"></eo-duetimeInfo>\n\n <div class=\"process-performer\" *ngIf=\"workItem?.inSubstituteOf?.length\">\n <div class=\"head\" [ngClass]=\"{performerShow: substituteShow}\">\n <div class=\"label\" translate>eo.process.substitute</div>\n <div class=\"action\" (click)=\"substituteShow = !substituteShow\">\n <div class=\"count\">{{workItem.inSubstituteOf.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"substituteShow\">\n <div class=\"performer\" *ngFor=\"let u of workItem.inSubstituteOf\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"locked; else unlocked\">\n\n <div class=\"process-form\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"workItem?.form\"\n (statusChanged)=\"onFormStatusChanged($event)\" #bpmForm></eo-object-form>\n </div>\n </ng-container>\n\n <ng-template #unlocked>\n\n <div class=\"notice\" translate>eo.process.task.continue</div>\n\n <div class=\"process-performer\" *ngIf=\"workItem\">\n <div class=\"head\" [ngClass]=\"{performerShow: performerShow}\">\n <div class=\"label\" translate>eo.process.recipients</div>\n <div class=\"action\" (click)=\"performerShow = !performerShow\">\n <div class=\"count\">{{workItem.performer.users.length + workItem.performer.roles.length +\n workItem.performer.groups.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"performerShow\">\n\n <div class=\"performer\" *ngFor=\"let g of workItem.performer.groups\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_group.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{g.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let r of workItem.performer.roles\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_role.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{r.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let u of workItem.performer.users\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata\" *ngIf=\"workItemIndexdata?.data\">\n <h3 translate>eo.process.details.tab.task.indexdata</h3>\n <eo-indexdata-summary [indexdata]=\"workItemIndexdata\"></eo-indexdata-summary>\n </div>\n\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"locked; else unlockedActions\">\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n\n <div class=\"secondary\">\n <button class=\"btn-unlock\" (click)=\"unlockWorkItem()\" translate>eo.process.depersonalize</button>\n <button class=\"btn-save\" (click)=\"saveWorkItemData()\"\n *ngIf=\"workItem?.form && !formState?.invalid && formState?.dirty\"\n translate>eo.object.indexdata.save</button>\n </div>\n\n <div class=\"primary\" [ngClass]=\"{disabled: preventClickThrough}\">\n <button class=\"primary btn-execute\" *ngFor=\"let action of workItem.actions; trackBy: trackByCode\"\n (click)=\"executeWorkItemAction(action)\" [ngClass]=\"{ext: action.url}\"\n [disabled]=\"(!!formState && formState?.invalid) || !action.feasible\">{{action.title}}</button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #unlockedActions>\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed || !workItem}\">\n <div class=\"primary\">\n <button class=\"primary btn-lock\" (click)=\"lockWorkItem()\" translate>eo.process.personalize</button>\n </div>\n </div>\n </ng-template>\n\n </div>\n </ng-template>\n\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.process.details.tab.progress' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-history\">\n <eo-process-history [history]=\"history\"></eo-process-history>\n </div>\n </div>\n </ng-template>\n\n <!-- attachments -->\n <ng-template [yvcTab]=\"{id: 'file', label: 'eo.process.details.tab.attachments' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-files\">\n <eo-process-file [processFile]=\"workItem?.file\" [permissions]=\"workItem?.fileEntryPermissions\"\n [isDisabled]=\"!filesAdding.closed\" [clipboard]=\"clipboard\" [editable]=\"true\"\n [selectedContentFileId]=\"selectedContentFileId\"\n (onOpenWorkItemContentInContext)=\"openWorkItemContentInContext($event)\"\n (onOpenWorkItemContent)=\"openWorkItemContent($event)\"\n (onRemoveWorkItemContent)=\"removeWorkItemContent($event)\" (onPasteProcessFile)=\"addFromClipboard()\">\n </eo-process-file>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- body when we have a subscription or a resubmission -->\n <ng-template #dmsTask>\n <div class=\"tab-panel\">\n <div class=\"panel\">\n <div class=\"process-description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{settings?.description}}</div>\n </div>\n </div>\n\n <!-- actions for the current process item -->\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n <div class=\"primary\">\n <button class=\"primary btn-confirm\" [disabled]=\"preventClickThrough\"\n (click)=\"confirmInboxItem()\">{{settings?.actionTitle}}</button>\n </div>\n </div>\n\n </div>\n </ng-template>\n\n </div>\n</div>\n<ng-template #noItem>\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>", styles: [".inbox-details{background-color:var(--panel-background-grey);height:100%;position:relative;display:flex;flex-flow:column}.inbox-details yvc-tabs{height:100%}.inbox-details yvc-tabs ::ng-deep nav{background:var(--panel-background);border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-head{border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-body{flex:1;overflow:hidden}.inbox-details .eo-head{background-color:var(--color-white)}.inbox-details .eo-body .load-error{position:absolute;inset:0;background-color:var(--panel-background-grey);z-index:5;display:flex;flex-flow:column;justify-content:center;align-items:center}.inbox-details .eo-body .load-error eo-icon{width:20%;color:var(--text-color-hint);opacity:.5}.inbox-details .eo-body .tab-panel{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .panel:not(.process-history){padding:var(--app-pane-padding);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow-y:auto}.inbox-details .eo-body .tab-panel .panel.process-history,.inbox-details .eo-body .tab-panel .panel.process-files{height:100%}.inbox-details .eo-body .tab-panel .process-actions{display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;justify-content:space-between;padding:0 calc(var(--app-pane-padding) * .75) 0!important}.inbox-details .eo-body .tab-panel .process-actions button{margin:calc(var(--app-pane-padding) / 8)}.inbox-details .eo-body .tab-panel .process-actions button.ext{position:relative}.inbox-details .eo-body .tab-panel .process-actions button.ext:after{content:\"\";position:absolute;right:calc(var(--app-pane-padding) / 8);top:calc(var(--app-pane-padding) / 8);height:calc(var(--app-pane-padding) * .5);width:calc(var(--app-pane-padding) * .5);box-sizing:border-box;border:2px solid rgba(var(--color-white-rgb),.7);border-bottom-width:0;border-left-width:0}.inbox-details .eo-body .tab-panel .process-actions div.primary{justify-content:flex-end;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;flex:1 1 auto;padding:var(--app-pane-padding) 0}.inbox-details .eo-body .tab-panel .process-actions div.primary.disabled{pointer-events:none;opacity:.2}.inbox-details .eo-body .tab-panel .process-actions div.secondary{padding:var(--app-pane-padding) 0;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .process-actions.disabled{opacity:.5}.inbox-details .eo-body .tab-panel .process-actions.disabled button{pointer-events:none;cursor:default}.inbox-details .eo-body h3{font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0 0 calc(var(--app-pane-padding) / 2) 0;padding:0 0 calc(var(--app-pane-padding) / 4) 0;color:var(--text-color-caption);border-bottom:1px solid rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .indexdata{margin-top:calc(var(--app-pane-padding) / 2)}.inbox-details .eo-body .process-description{margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .process-performer{margin:calc(var(--app-pane-padding) / 4) 0}.inbox-details .eo-body .process-performer .head{display:flex;flex-flow:row nowrap;align-items:center}.inbox-details .eo-body .process-performer .head .label{flex:1 1 auto}.inbox-details .eo-body .process-performer .head .action{border-radius:2px;border:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:row nowrap;align-items:center;cursor:pointer;overflow:hidden;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}.inbox-details .eo-body .process-performer .head .action .count{line-height:1em;color:var(--text-color-caption)}.inbox-details .eo-body .process-performer .head .action eo-icon{color:var(--text-color-hint);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}.inbox-details .eo-body .process-performer .head .action:hover{background:rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .process-performer .head.performerShow .action eo-icon{transform:rotate(180deg)}.inbox-details .eo-body .process-performer .body{padding:calc(var(--app-pane-padding) / 2) 0}.inbox-details .eo-body .process-performer .body .performer{display:flex;flex-flow:row nowrap;align-items:center;border-radius:2px;padding:2px;margin-bottom:2px;background-color:var(--color-white);animation:eoFadeInDown var(--app-default-transition-duration);-webkit-user-select:none;-moz-user-select:none;user-select:none}.inbox-details .eo-body .process-performer .body .performer .icon-wrap{border-radius:2px;flex:0 0 auto;background-color:var(--color-primary-3);color:var(--color-white);padding:2px}.inbox-details .eo-body .process-performer .body .performer .name{flex:1 1 auto;padding:0 var(--app-pane-padding)}.inbox-details .eo-body .process-performer .body .performer .name .qname{display:inline-block;border-radius:2px;background-color:rgba(var(--color-black-rgb),.08);font-size:var(--font-hint);padding:2px calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.inbox-details .eo-body .no-files{padding:var(--app-pane-padding)}\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: "component", type: i6.ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { 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: "component", type: i9.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i11.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i12.ProcessHistoryComponent, selector: "eo-process-history", inputs: ["history"] }, { kind: "component", type: i13.ProcessFileComponent, selector: "eo-process-file", inputs: ["processFile", "permissions", "clipboard", "selectedContentFileId", "isDisabled", "editable"], outputs: ["onOpenWorkItemContentInContext", "onOpenWorkItemContent", "onRemoveWorkItemContent", "onPasteProcessFile"] }, { kind: "component", type: i14.DuetimeInfoComponent, selector: "eo-duetimeInfo", inputs: ["item"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
437
+ InboxDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: InboxDetailsComponent, selector: "eo-inbox-details", inputs: { emptyState: "emptyState", applySelection: "applySelection", item: "item" }, host: { properties: { "attr.data-type": "this.dataType" } }, viewQueries: [{ propertyName: "bpmFormEl", first: true, predicate: ["bpmForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"inbox-details\" *ngIf=\"item; else noItem\" [ngClass]=\"{bpm: item.type === 'BPM'}\">\n\n <div class=\"eo-head\" [ngClass]=\"{'eo-head-tabs': item.type === 'BPM'}\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"!item.iconId\" title=\"{{item?.type}}\"\n [iconSrc]=\"'assets/_default/svg/ic_loop.svg'\"></eo-icon>\n <eo-icon class=\"eo-header-icon\" *ngIf=\"item.iconId\" title=\"{{item?.type}}\" [iconId]=\"item.iconId\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 *ngIf=\"item.description\" class=\"eo-header-subtitle\">{{item.description}}</h3>\n <h3 *ngIf=\"workItem && !item.description\" class=\"eo-header-subtitle\">{{workItem.qmodelname}}</h3>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button primary refresh-button\" *ngIf=\"initializing.closed\" (click)=\"refresh()\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\" *ngIf=\"initializing.closed\">\n\n <div class=\"load-error\" *ngIf=\"loadError\">\n <eo-error-message></eo-error-message>\n </div>\n\n <!-- details for BPM items -->\n <yvc-tabs *ngIf=\"item.type === 'BPM'; else dmsTask\">\n <!-- task -->\n <ng-template [yvcTab]=\"{id: 'task', label: 'eo.process.details.tab.task' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel\">\n\n <div class=\"process-description\" *ngIf=\"workItem?.description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{workItem.description}}</div>\n </div>\n\n <eo-duetimeInfo *ngIf=\"item?.duetime\" [item]=\"item\"></eo-duetimeInfo>\n\n <div class=\"process-performer\" *ngIf=\"workItem?.inSubstituteOf?.length\">\n <div class=\"head\" [ngClass]=\"{performerShow: substituteShow}\">\n <div class=\"label\" translate>eo.process.substitute</div>\n <div class=\"action\" (click)=\"substituteShow = !substituteShow\">\n <div class=\"count\">{{workItem.inSubstituteOf.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"substituteShow\">\n <div class=\"performer\" *ngFor=\"let u of workItem.inSubstituteOf\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"locked; else unlocked\">\n\n <div class=\"process-form\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"workItem?.form\"\n (statusChanged)=\"onFormStatusChanged($event)\" #bpmForm></eo-object-form>\n </div>\n </ng-container>\n\n <ng-template #unlocked>\n\n <div class=\"notice\" translate>eo.process.task.continue</div>\n\n <div class=\"process-performer\" *ngIf=\"workItem\">\n <div class=\"head\" [ngClass]=\"{performerShow: performerShow}\">\n <div class=\"label\" translate>eo.process.recipients</div>\n <div class=\"action\" (click)=\"performerShow = !performerShow\">\n <div class=\"count\">{{workItem.performer.users.length + workItem.performer.roles.length +\n workItem.performer.groups.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"performerShow\">\n\n <div class=\"performer\" *ngFor=\"let g of workItem.performer.groups\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_group.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{g.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let r of workItem.performer.roles\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_role.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{r.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let u of workItem.performer.users\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata\" *ngIf=\"workItemIndexdata?.data\">\n <h3 translate>eo.process.details.tab.task.indexdata</h3>\n <eo-indexdata-summary [indexdata]=\"workItemIndexdata\"></eo-indexdata-summary>\n </div>\n\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"locked; else unlockedActions\">\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n\n <div class=\"secondary\">\n <button class=\"btn-unlock\" (click)=\"unlockWorkItem()\" translate>eo.process.depersonalize</button>\n <button class=\"btn-save\" (click)=\"saveWorkItemData()\"\n *ngIf=\"workItem?.form && !formState?.invalid && formState?.dirty\"\n translate>eo.object.indexdata.save</button>\n </div>\n\n <div class=\"primary\" [ngClass]=\"{disabled: preventClickThrough}\">\n <button class=\"primary btn-execute\" *ngFor=\"let action of workItem.actions; trackBy: trackByCode\"\n (click)=\"executeWorkItemAction(action)\" [ngClass]=\"{ext: action.url}\"\n [disabled]=\"(!!formState && formState?.invalid) || !action.feasible\">{{action.title}}</button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #unlockedActions>\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed || !workItem}\">\n <div class=\"primary\">\n <button class=\"primary btn-lock\" (click)=\"lockWorkItem()\" translate>eo.process.personalize</button>\n </div>\n </div>\n </ng-template>\n\n </div>\n </ng-template>\n\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.process.details.tab.progress' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-history\">\n <eo-process-history [history]=\"history\"></eo-process-history>\n </div>\n </div>\n </ng-template>\n\n <!-- attachments -->\n <ng-template [yvcTab]=\"{id: 'file', label: 'eo.process.details.tab.attachments' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-files\">\n <eo-process-file [processFile]=\"workItem?.file\" [permissions]=\"workItem?.fileEntryPermissions\"\n [isDisabled]=\"!filesAdding.closed\" [clipboard]=\"clipboard\" [editable]=\"true\"\n [selectedContentFileId]=\"selectedContentFileId\"\n (onOpenWorkItemContentInContext)=\"openWorkItemContentInContext($event)\"\n (onOpenWorkItemContent)=\"openWorkItemContent($event)\"\n (onRemoveWorkItemContent)=\"removeWorkItemContent($event)\" (onPasteProcessFile)=\"addFromClipboard()\">\n </eo-process-file>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- body when we have a subscription or a resubmission -->\n <ng-template #dmsTask>\n <div class=\"tab-panel\">\n <div class=\"panel\">\n <div class=\"process-description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{settings?.description}}</div>\n </div>\n </div>\n\n <!-- actions for the current process item -->\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n <div class=\"primary\">\n <button class=\"primary btn-confirm\" [disabled]=\"preventClickThrough\"\n (click)=\"confirmInboxItem()\">{{settings?.actionTitle}}</button>\n </div>\n </div>\n\n </div>\n </ng-template>\n\n </div>\n</div>\n<ng-template #noItem>\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>", styles: [".inbox-details{background-color:var(--panel-background-grey);height:100%;position:relative;display:flex;flex-flow:column}.inbox-details yvc-tabs{height:100%}.inbox-details yvc-tabs ::ng-deep nav{background:var(--panel-background);border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-head{border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-body{flex:1;overflow:hidden}.inbox-details .eo-head{background-color:var(--color-white)}.inbox-details .eo-body .load-error{position:absolute;inset:0;background-color:var(--panel-background-grey);z-index:5;display:flex;flex-flow:column;justify-content:center;align-items:center}.inbox-details .eo-body .load-error eo-icon{width:20%;color:var(--text-color-hint);opacity:.5}.inbox-details .eo-body .tab-panel{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .panel:not(.process-history){padding:var(--app-pane-padding);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow-y:auto}.inbox-details .eo-body .tab-panel .panel.process-history,.inbox-details .eo-body .tab-panel .panel.process-files{height:100%}.inbox-details .eo-body .tab-panel .process-actions{display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;justify-content:space-between;padding:0 calc(var(--app-pane-padding) * .75) 0!important}.inbox-details .eo-body .tab-panel .process-actions button{margin:calc(var(--app-pane-padding) / 8)}.inbox-details .eo-body .tab-panel .process-actions button.ext{position:relative}.inbox-details .eo-body .tab-panel .process-actions button.ext:after{content:\"\";position:absolute;right:calc(var(--app-pane-padding) / 8);top:calc(var(--app-pane-padding) / 8);height:calc(var(--app-pane-padding) * .5);width:calc(var(--app-pane-padding) * .5);box-sizing:border-box;border:2px solid rgba(var(--color-white-rgb),.7);border-bottom-width:0;border-left-width:0}.inbox-details .eo-body .tab-panel .process-actions div.primary{justify-content:flex-end;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;flex:1 1 auto;padding:var(--app-pane-padding) 0}.inbox-details .eo-body .tab-panel .process-actions div.primary.disabled{pointer-events:none;opacity:.2}.inbox-details .eo-body .tab-panel .process-actions div.secondary{padding:var(--app-pane-padding) 0;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .process-actions.disabled{opacity:.5}.inbox-details .eo-body .tab-panel .process-actions.disabled button{pointer-events:none;cursor:default}.inbox-details .eo-body h3{font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0 0 calc(var(--app-pane-padding) / 2) 0;padding:0 0 calc(var(--app-pane-padding) / 4) 0;color:var(--text-color-caption);border-bottom:1px solid rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .indexdata{margin-top:calc(var(--app-pane-padding) / 2)}.inbox-details .eo-body .process-description{margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .process-performer{margin:calc(var(--app-pane-padding) / 4) 0}.inbox-details .eo-body .process-performer .head{display:flex;flex-flow:row nowrap;align-items:center}.inbox-details .eo-body .process-performer .head .label{flex:1 1 auto}.inbox-details .eo-body .process-performer .head .action{border-radius:2px;border:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:row nowrap;align-items:center;cursor:pointer;overflow:hidden;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}.inbox-details .eo-body .process-performer .head .action .count{line-height:1em;color:var(--text-color-caption)}.inbox-details .eo-body .process-performer .head .action eo-icon{color:var(--text-color-hint);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}.inbox-details .eo-body .process-performer .head .action:hover{background:rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .process-performer .head.performerShow .action eo-icon{transform:rotate(180deg)}.inbox-details .eo-body .process-performer .body{padding:calc(var(--app-pane-padding) / 2) 0}.inbox-details .eo-body .process-performer .body .performer{display:flex;flex-flow:row nowrap;align-items:center;border-radius:2px;padding:2px;margin-bottom:2px;background-color:var(--color-white);animation:eoFadeInDown var(--app-default-transition-duration);-webkit-user-select:none;-moz-user-select:none;user-select:none}.inbox-details .eo-body .process-performer .body .performer .icon-wrap{border-radius:2px;flex:0 0 auto;background-color:var(--color-primary-3);color:var(--color-white);padding:2px}.inbox-details .eo-body .process-performer .body .performer .name{flex:1 1 auto;padding:0 var(--app-pane-padding)}.inbox-details .eo-body .process-performer .body .performer .name .qname{display:inline-block;border-radius:2px;background-color:rgba(var(--color-black-rgb),.08);font-size:var(--font-hint);padding:2px calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.inbox-details .eo-body .no-files{padding:var(--app-pane-padding)}\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: "component", type: i6.ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { 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: "component", type: i9.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i10.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i11.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i11.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i12.ProcessHistoryComponent, selector: "eo-process-history", inputs: ["history"] }, { kind: "component", type: i13.ProcessFileComponent, selector: "eo-process-file", inputs: ["processFile", "permissions", "clipboard", "selectedContentFileId", "isDisabled", "editable"], outputs: ["onOpenWorkItemContentInContext", "onOpenWorkItemContent", "onRemoveWorkItemContent", "onPasteProcessFile"] }, { kind: "component", type: i14.DuetimeInfoComponent, selector: "eo-duetimeInfo", inputs: ["item"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
439
438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: InboxDetailsComponent, decorators: [{
440
439
  type: Component,
441
440
  args: [{ selector: 'eo-inbox-details', template: "<div class=\"inbox-details\" *ngIf=\"item; else noItem\" [ngClass]=\"{bpm: item.type === 'BPM'}\">\n\n <div class=\"eo-head\" [ngClass]=\"{'eo-head-tabs': item.type === 'BPM'}\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"!item.iconId\" title=\"{{item?.type}}\"\n [iconSrc]=\"'assets/_default/svg/ic_loop.svg'\"></eo-icon>\n <eo-icon class=\"eo-header-icon\" *ngIf=\"item.iconId\" title=\"{{item?.type}}\" [iconId]=\"item.iconId\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 *ngIf=\"item.description\" class=\"eo-header-subtitle\">{{item.description}}</h3>\n <h3 *ngIf=\"workItem && !item.description\" class=\"eo-header-subtitle\">{{workItem.qmodelname}}</h3>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button primary refresh-button\" *ngIf=\"initializing.closed\" (click)=\"refresh()\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\" *ngIf=\"initializing.closed\">\n\n <div class=\"load-error\" *ngIf=\"loadError\">\n <eo-error-message></eo-error-message>\n </div>\n\n <!-- details for BPM items -->\n <yvc-tabs *ngIf=\"item.type === 'BPM'; else dmsTask\">\n <!-- task -->\n <ng-template [yvcTab]=\"{id: 'task', label: 'eo.process.details.tab.task' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel\">\n\n <div class=\"process-description\" *ngIf=\"workItem?.description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{workItem.description}}</div>\n </div>\n\n <eo-duetimeInfo *ngIf=\"item?.duetime\" [item]=\"item\"></eo-duetimeInfo>\n\n <div class=\"process-performer\" *ngIf=\"workItem?.inSubstituteOf?.length\">\n <div class=\"head\" [ngClass]=\"{performerShow: substituteShow}\">\n <div class=\"label\" translate>eo.process.substitute</div>\n <div class=\"action\" (click)=\"substituteShow = !substituteShow\">\n <div class=\"count\">{{workItem.inSubstituteOf.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"substituteShow\">\n <div class=\"performer\" *ngFor=\"let u of workItem.inSubstituteOf\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"locked; else unlocked\">\n\n <div class=\"process-form\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"workItem?.form\"\n (statusChanged)=\"onFormStatusChanged($event)\" #bpmForm></eo-object-form>\n </div>\n </ng-container>\n\n <ng-template #unlocked>\n\n <div class=\"notice\" translate>eo.process.task.continue</div>\n\n <div class=\"process-performer\" *ngIf=\"workItem\">\n <div class=\"head\" [ngClass]=\"{performerShow: performerShow}\">\n <div class=\"label\" translate>eo.process.recipients</div>\n <div class=\"action\" (click)=\"performerShow = !performerShow\">\n <div class=\"count\">{{workItem.performer.users.length + workItem.performer.roles.length +\n workItem.performer.groups.length}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"body\" *ngIf=\"performerShow\">\n\n <div class=\"performer\" *ngFor=\"let g of workItem.performer.groups\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_group.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{g.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let r of workItem.performer.roles\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_role.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{r.name}}</div>\n </div>\n\n <div class=\"performer\" *ngFor=\"let u of workItem.performer.users\">\n <div class=\"icon-wrap\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_orga_user.svg'\"></eo-icon>\n </div>\n <div class=\"name\">{{u.firstname}} {{u.lastname}} <span class=\"qname\">{{u.name}}</span></div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata\" *ngIf=\"workItemIndexdata?.data\">\n <h3 translate>eo.process.details.tab.task.indexdata</h3>\n <eo-indexdata-summary [indexdata]=\"workItemIndexdata\"></eo-indexdata-summary>\n </div>\n\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"locked; else unlockedActions\">\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n\n <div class=\"secondary\">\n <button class=\"btn-unlock\" (click)=\"unlockWorkItem()\" translate>eo.process.depersonalize</button>\n <button class=\"btn-save\" (click)=\"saveWorkItemData()\"\n *ngIf=\"workItem?.form && !formState?.invalid && formState?.dirty\"\n translate>eo.object.indexdata.save</button>\n </div>\n\n <div class=\"primary\" [ngClass]=\"{disabled: preventClickThrough}\">\n <button class=\"primary btn-execute\" *ngFor=\"let action of workItem.actions; trackBy: trackByCode\"\n (click)=\"executeWorkItemAction(action)\" [ngClass]=\"{ext: action.url}\"\n [disabled]=\"(!!formState && formState?.invalid) || !action.feasible\">{{action.title}}</button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #unlockedActions>\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed || !workItem}\">\n <div class=\"primary\">\n <button class=\"primary btn-lock\" (click)=\"lockWorkItem()\" translate>eo.process.personalize</button>\n </div>\n </div>\n </ng-template>\n\n </div>\n </ng-template>\n\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.process.details.tab.progress' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-history\">\n <eo-process-history [history]=\"history\"></eo-process-history>\n </div>\n </div>\n </ng-template>\n\n <!-- attachments -->\n <ng-template [yvcTab]=\"{id: 'file', label: 'eo.process.details.tab.attachments' | translate}\">\n <div class=\"tab-panel\">\n <div class=\"panel process-files\">\n <eo-process-file [processFile]=\"workItem?.file\" [permissions]=\"workItem?.fileEntryPermissions\"\n [isDisabled]=\"!filesAdding.closed\" [clipboard]=\"clipboard\" [editable]=\"true\"\n [selectedContentFileId]=\"selectedContentFileId\"\n (onOpenWorkItemContentInContext)=\"openWorkItemContentInContext($event)\"\n (onOpenWorkItemContent)=\"openWorkItemContent($event)\"\n (onRemoveWorkItemContent)=\"removeWorkItemContent($event)\" (onPasteProcessFile)=\"addFromClipboard()\">\n </eo-process-file>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- body when we have a subscription or a resubmission -->\n <ng-template #dmsTask>\n <div class=\"tab-panel\">\n <div class=\"panel\">\n <div class=\"process-description\">\n <h3 translate>eo.process.details.tab.task.description</h3>\n <div>{{settings?.description}}</div>\n </div>\n </div>\n\n <!-- actions for the current process item -->\n <div class=\"process-actions\" [ngClass]=\"{disabled: !actionProcessing.closed}\">\n <div class=\"primary\">\n <button class=\"primary btn-confirm\" [disabled]=\"preventClickThrough\"\n (click)=\"confirmInboxItem()\">{{settings?.actionTitle}}</button>\n </div>\n </div>\n\n </div>\n </ng-template>\n\n </div>\n</div>\n<ng-template #noItem>\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>", styles: [".inbox-details{background-color:var(--panel-background-grey);height:100%;position:relative;display:flex;flex-flow:column}.inbox-details yvc-tabs{height:100%}.inbox-details yvc-tabs ::ng-deep nav{background:var(--panel-background);border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-head{border-bottom:1px solid var(--panel-header-border-bottom-color)}.inbox-details:not(.bpm) .eo-body{flex:1;overflow:hidden}.inbox-details .eo-head{background-color:var(--color-white)}.inbox-details .eo-body .load-error{position:absolute;inset:0;background-color:var(--panel-background-grey);z-index:5;display:flex;flex-flow:column;justify-content:center;align-items:center}.inbox-details .eo-body .load-error eo-icon{width:20%;color:var(--text-color-hint);opacity:.5}.inbox-details .eo-body .tab-panel{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .panel:not(.process-history){padding:var(--app-pane-padding);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow-y:auto}.inbox-details .eo-body .tab-panel .panel.process-history,.inbox-details .eo-body .tab-panel .panel.process-files{height:100%}.inbox-details .eo-body .tab-panel .process-actions{display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;justify-content:space-between;padding:0 calc(var(--app-pane-padding) * .75) 0!important}.inbox-details .eo-body .tab-panel .process-actions button{margin:calc(var(--app-pane-padding) / 8)}.inbox-details .eo-body .tab-panel .process-actions button.ext{position:relative}.inbox-details .eo-body .tab-panel .process-actions button.ext:after{content:\"\";position:absolute;right:calc(var(--app-pane-padding) / 8);top:calc(var(--app-pane-padding) / 8);height:calc(var(--app-pane-padding) * .5);width:calc(var(--app-pane-padding) * .5);box-sizing:border-box;border:2px solid rgba(var(--color-white-rgb),.7);border-bottom-width:0;border-left-width:0}.inbox-details .eo-body .tab-panel .process-actions div.primary{justify-content:flex-end;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;flex-wrap:wrap;flex:1 1 auto;padding:var(--app-pane-padding) 0}.inbox-details .eo-body .tab-panel .process-actions div.primary.disabled{pointer-events:none;opacity:.2}.inbox-details .eo-body .tab-panel .process-actions div.secondary{padding:var(--app-pane-padding) 0;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0}.inbox-details .eo-body .tab-panel .process-actions.disabled{opacity:.5}.inbox-details .eo-body .tab-panel .process-actions.disabled button{pointer-events:none;cursor:default}.inbox-details .eo-body h3{font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0 0 calc(var(--app-pane-padding) / 2) 0;padding:0 0 calc(var(--app-pane-padding) / 4) 0;color:var(--text-color-caption);border-bottom:1px solid rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .indexdata{margin-top:calc(var(--app-pane-padding) / 2)}.inbox-details .eo-body .process-description{margin-bottom:var(--app-pane-padding)}.inbox-details .eo-body .process-performer{margin:calc(var(--app-pane-padding) / 4) 0}.inbox-details .eo-body .process-performer .head{display:flex;flex-flow:row nowrap;align-items:center}.inbox-details .eo-body .process-performer .head .label{flex:1 1 auto}.inbox-details .eo-body .process-performer .head .action{border-radius:2px;border:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:row nowrap;align-items:center;cursor:pointer;overflow:hidden;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}.inbox-details .eo-body .process-performer .head .action .count{line-height:1em;color:var(--text-color-caption)}.inbox-details .eo-body .process-performer .head .action eo-icon{color:var(--text-color-hint);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}.inbox-details .eo-body .process-performer .head .action:hover{background:rgba(var(--color-black-rgb),.1)}.inbox-details .eo-body .process-performer .head.performerShow .action eo-icon{transform:rotate(180deg)}.inbox-details .eo-body .process-performer .body{padding:calc(var(--app-pane-padding) / 2) 0}.inbox-details .eo-body .process-performer .body .performer{display:flex;flex-flow:row nowrap;align-items:center;border-radius:2px;padding:2px;margin-bottom:2px;background-color:var(--color-white);animation:eoFadeInDown var(--app-default-transition-duration);-webkit-user-select:none;-moz-user-select:none;user-select:none}.inbox-details .eo-body .process-performer .body .performer .icon-wrap{border-radius:2px;flex:0 0 auto;background-color:var(--color-primary-3);color:var(--color-white);padding:2px}.inbox-details .eo-body .process-performer .body .performer .name{flex:1 1 auto;padding:0 var(--app-pane-padding)}.inbox-details .eo-body .process-performer .body .performer .name .qname{display:inline-block;border-radius:2px;background-color:rgba(var(--color-black-rgb),.08);font-size:var(--font-hint);padding:2px calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.inbox-details .eo-body .no-files{padding:var(--app-pane-padding)}\n"] }]
442
441
  }], ctorParameters: function () { return [{ type: i1.BpmService }, { type: i1.UserService }, { type: i1.InboxService }, { type: i2.SelectionService }, { type: i3.Router }, { type: i1.EventService }, { type: i1.ClipboardService }, { type: i1.TranslateService }, { type: i4.PendingChangesService }, { type: i1.NotificationsService }, { type: i1.LocalStorageService }]; }, propDecorators: { bpmFormEl: [{
443
442
  type: ViewChild,
444
443
  args: ['bpmForm']
445
- }], tabPanels: [{
446
- type: ContentChildren,
447
- args: [TabPanelComponent]
448
- }], tabPlugins: [{
449
- type: ContentChildren,
450
- args: [TabPluginComponent]
451
444
  }], emptyState: [{
452
445
  type: Input
453
446
  }], applySelection: [{
@@ -459,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
459
452
  type: HostBinding,
460
453
  args: ['attr.data-type']
461
454
  }] } });
462
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixXQUFXLEVBQ1gsS0FBSyxFQUVMLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUdMLGVBQWUsRUFFZixVQUFVLEVBR1YsU0FBUyxFQU1ULEtBQUssRUFJTixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU8xRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUVqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQU8vRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBOEM3RCxJQUNJLElBQUksQ0FBQyxDQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEVBQUU7WUFDTCxlQUFlO1lBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxD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O3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0YsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBa0JzQixRQUFRO3NCQUExQyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2VsbFJlbmRlcmVyfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQnBtU2VydmljZSxcbiAgQ2xpcGJvYXJkLFxuICBDbGlwYm9hcmRBY3Rpb24sXG4gIENsaXBib2FyZFNlcnZpY2UsXG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgRmlsZUVudHJ5LFxuICBJbmJveEl0ZW0sXG4gIEluYm94U2VydmljZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlscyxcbiAgV29ya0l0ZW0sXG4gIFdvcmtJdGVtQWN0aW9uLFxuICBXb3JrSXRlbUhpc3RvcnlFbnRyeVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJQbHVnaW5Db21wb25lbnR9IGZyb20gJy4uL3BsdWdpbnMvcGx1Z2luLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYlBhbmVsQ29tcG9uZW50fSBmcm9tICcuLi90YWItY29udGFpbmVyL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7SW5kZXhEYXRhfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1pbmJveC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luYm94LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW5ib3hEZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3lcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdicG1Gb3JtJykgYnBtRm9ybUVsOiBPYmplY3RGb3JtQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgZGVmYXVsdFdvcmtJdGVtQWN0aW9uOiBXb3JrSXRlbUFjdGlvbjtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfaXRlbTogSW5ib3hJdGVtO1xuICB3b3JrSXRlbTogV29ya0l0ZW07XG4gIGhpc3Rvcnk6IFdvcmtJdGVtSGlzdG9yeUVudHJ5W107XG4gIC8vIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgd29yayBpdGVtIGlzIGxvY2tlZCBieSB0aGUgdXNlclxuICBsb2NrZWQ6IGJvb2xlYW47XG4gIC8vIENPT0wtMTE1MDZcbiAgcHJldmVudENsaWNrVGhyb3VnaDogYm9vbGVhbjtcbiAgLy8gY3VycmVudCBjbGlwYm9hcmQgY29udGVudHNcbiAgY2xpcGJvYXJkOiBDbGlwYm9hcmQ7XG5cbiAgLy8gdXNlZCBmb3IgaGFuZGxpbmcgU1VCU0NSSVBUSU9OUyBhbmQgUkVTVUJNSVNTSU9OU1xuICBzZXR0aW5nczoge1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYWN0aW9uVGl0bGU6IHN0cmluZztcbiAgfTtcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIHNlbGVjdGVkQ29udGVudEZpbGVJZDogc3RyaW5nO1xuICB3b3JrSXRlbUluZGV4ZGF0YTogSW5kZXhEYXRhO1xuICBwZXJmb3JtZXJTaG93OiBib29sZWFuO1xuICBzdWJzdGl0dXRlU2hvdzogYm9vbGVhbjtcbiAgYWN0aW9uUHJvY2Vzc2luZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGluaXRpYWxpemluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGZpbGVzQWRkaW5nOiBTdWJzY3JpcHRpb24gfCBhbnkgPSB7Y2xvc2VkOiB0cnVlfTtcbiAgbG9hZEVycm9yOiBib29sZWFuO1xuICBzdG9yYWdlS2V5TGFzdEl0ZW1JRCA9ICdlby5pbmJveC5sYXN0SXRlbUlEJztcblxuICBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGFuZWxDb21wb25lbnQpIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQbHVnaW5Db21wb25lbnQpIHRhYlBsdWdpbnM6IFF1ZXJ5TGlzdDxcbiAgICBUYWJQbHVnaW5Db21wb25lbnRcbiAgPjtcblxuICBASW5wdXQoKSBlbXB0eVN0YXRlOiBFbXB0eVN0YXRlO1xuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBpdGVtKGk6IEluYm94SXRlbSkge1xuICAgIHRoaXMuX2l0ZW0gPSBpO1xuICAgIGlmIChpKSB7XG4gICAgICAvLyByZXNldCB2YWx1ZXNcbiAgICAgIHRoaXMud29ya0l0ZW0gPSBudWxsO1xuICAgICAgdGhpcy5oaXN0b3J5ID0gW107XG4gICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByb2Nlc3MoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHlwZScpIGdldCBkYXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtID8gdGhpcy5pdGVtLnR5cGUgOiAnbm9uZSc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVmYXVsdFdvcmtJdGVtQWN0aW9uID0ge1xuICAgICAgY29kZTogMCxcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLnRhc2suYWN0aW9ucy5kZWZhdWx0LnRpdGxlJyksXG4gICAgICB0eXBlOiAnRk9SV0FSRCdcbiAgICB9O1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBpZiAodGhpcy5pdGVtLnR5cGUgPT09IEluYm94SXRlbS5UWVBFX0JQTSkge1xuICAgICAgdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW0gPSB0aGlzLl9pdGVtO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0OiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHRoZSBjdXJyZW50IGluYm94IGl0ZW1cbiAgICovXG4gIHByaXZhdGUgcHJvY2VzcygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaW5pdGlhbGl6aW5nLmNsb3NlZCA9IGZhbHNlO1xuXG4gICAgc3dpdGNoICh0aGlzLml0ZW0udHlwZSkge1xuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9CUE06IHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXppbmcgPSB0aGlzLmNyZWF0ZUJQTVdvcmtJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9TVUJTQ1JJUFRJT046IHtcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdzdWJzY3JpcHRpb24nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX1JFU1VCTUlTU0lPTjoge1xuICAgICAgICB0aGlzLmNyZWF0ZURNU0l0ZW0oJ3Jlc3VibWlzc2lvbicpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVETVNJdGVtKGRtc1R5cGUpIHtcbiAgICB0aGlzLnNldHRpbmdzID0ge1xuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgIGBlby5wcm9jZXNzLmRldGFpbHMudGFzay4ke2Rtc1R5cGV9LmRlc2NyaXB0aW9uYFxuICAgICAgKSxcbiAgICAgIGFjdGlvblRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBgZW8ucHJvY2Vzcy5kZXRhaWxzLmJ1dHRvbi4ke2Rtc1R5cGV9LnJlbW92ZWBcbiAgICAgIClcbiAgICB9O1xuICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudCh0aGlzLml0ZW0udGFyZ2V0KTtcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0QWN0aW9uSWZFbXB0eSA9IChyZXM6IFdvcmtJdGVtKTogV29ya0l0ZW0gPT4ge1xuICAgIGlmICghcmVzLmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmVzLmFjdGlvbnMgPSBbdGhpcy5kZWZhdWx0V29ya0l0ZW1BY3Rpb25dO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLy8gZm9yIGl0ZW1zIG9mIHR5cGUgJ0JQTScgZmV0Y2ggd29yayBpdGVtIGZvciBtb3JlIGluZm9ybWF0aW9uc1xuICBjcmVhdGVCUE1Xb3JrSXRlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5icG1TZXJ2aWNlXG4gICAgICAuZ2V0V29ya0l0ZW0odGhpcy5pdGVtLnNvdXJjZUlkLCB0aGlzLml0ZW0uaWQpXG4gICAgICAucGlwZShtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XG4gICAgICAgICAgdGhpcy5zZXR1cFdvcmtJdGVtKCk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZm9ybSxcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZGF0YSxcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uYWN0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gYXV0by1zZWxlY3QgZmlyc3QgYXR0YWNoZWQgY29udGVudFxuICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZmlsZS5sZW5ndGggPyB0aGlzLndvcmtJdGVtLmZpbGVbMF0gOiBudWxsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLm5vdGlmeS5lcnJvcihcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZGV0YWlscy53b3JraXRlbS5sb2FkLmZhaWwnKSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnM6IFdvcmtJdGVtQWN0aW9uW10pIHtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgZm9ybS5zaXR1YXRpb24gPSAnRURJVCc7XG4gICAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xuICAgICAgICAuLi57XG4gICAgICAgICAgZm9ybU1vZGVsOiBmb3JtLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgYWN0aW9uczogYWN0aW9ucyA/IHRoaXMudHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKSA6IHt9LFxuICAgICAgICAgIC8vIGZvcm0gc2NyaXB0IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCB0aGUgbGlzdCBvZiBmaWxlIGVudHJpZXNcbiAgICAgICAgICAvLyBhdHRhY2hlZCB0byB0aGUgY3VycmVudCB3b3JrIGl0ZW1cbiAgICAgICAgICBvYmplY3RzOiB0aGlzLndvcmtJdGVtLmZpbGVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5ib3hTYXRlKCkge1xuICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnJlZnJlc2hJbmJveFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykge1xuICAgIGxldCB0cmFuc2Zvcm1lZEFjdGlvbnMgPSB7fTtcbiAgICBhY3Rpb25zLmZvckVhY2goYSA9PiB7XG4gICAgICBpZiAoYS5mZWFzaWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGEuZmVhc2libGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgYS5mZWFzaWJpbGl0eSA9IHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhLmZlYXNpYmxlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEuZmVhc2libGU7XG4gICAgICB9O1xuICAgICAgdHJhbnNmb3JtZWRBY3Rpb25zW2EuY29kZS50b1N0cmluZygpXSA9IGE7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQWN0aW9ucztcbiAgfVxuXG4gIC8qIExvY2tzIGEgd29yayBpdGVtIChwZXJzb25hbGl6ZSkgKi9cbiAgbG9ja1dvcmtJdGVtKCkge1xuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxuICAgICAgLmxvY2tXb3JrSXRlbSh0aGlzLndvcmtJdGVtKVxuICAgICAgLnBpcGUobWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBjb25zdCB7YWN0aW9ucywgZGF0YSwgZm9ybX0gPSByZXM7XG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XG4gICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgICAgICB0aGlzLnNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xuICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDkpIHtcbiAgICAgICAgICBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uZXZlbnQuc2NyaXB0LmV4ZWN1dGlvbi5lcnJvcicpLCB0aGlzLndvcmtJdGVtLnRpdGxlKS5jYWxsKHRoaXMsIHt9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmFjdGl2aXR5LmxvY2suZGVuaWVkJyksIHRoaXMud29ya0l0ZW0udGl0bGUpLmNhbGwodGhpcywge30pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbi1Mb2NrcyBhIHdvcmsgaXRlbSAoZGUtcGVyc29uYWxpemUpXG4gICAqL1xuICB1bmxvY2tXb3JrSXRlbSgpIHtcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkge1xuICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5icG1TZXJ2aWNlXG4gICAgICAgIC51bmxvY2tXb3JrSXRlbSh0aGlzLndvcmtJdGVtKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xuICAgICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmFjdGl2aXR5LnVubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHdvcmsgaXRlbXMgYWN0aW9uLlxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gYmUgZXhlY3V0ZXNcbiAgICovXG4gIGV4ZWN1dGVXb3JrSXRlbUFjdGlvbihhY3Rpb246IFdvcmtJdGVtQWN0aW9uKSB7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZSB8fCAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICBpZiAoYWN0aW9uLnVybCkge1xuICAgICAgICAgIC8vIHByb2Nlc3MgZXh0ZXJuYWwgYWN0aW9uIGJ5IHNhdmluZyB3b3JrIGl0ZW0gYW5kIHJlZGlyZWN0IHRvIGFjdGlvbnMgdXJsXG4gICAgICAgICAgaWYgKHRoaXMuYnBtRm9ybUVsKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub3BlbkFjdGlvblVybChhY3Rpb24udXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHBlbmRpbmcgdGFzayBiZWNhdXNlIHRoZSBmb3JtIHdpbGwgYmUgZGVzdHJveWVkIHdpdGhvdXQgc2F2aW5nXG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAgICAgICAuZm9yd2FyZFdvcmtJdGVtKHRoaXMud29ya0l0ZW0sIGFjdGlvbilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLnN1Y2Nlc3MnKSxcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0udGl0bGVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5pdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkFjdGlvblVybCh1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmwuc3Vic3RyKDAsIDQpID09PSAnaHR0cCcpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSB3b3JrIGl0ZW1zIGZpbGUgZW50cnkuXG4gICAqIEBwYXJhbSBmaWxlIEZpbGVFbnRyeSBlbGVtZW50IHRvIGJlIHNlbGVjdGVkXG4gICAqL1xuICBvcGVuV29ya0l0ZW1Db250ZW50KGZpbGU/OiBGaWxlRW50cnkpIHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IGZpbGUuaWQ7XG4gICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICBpZDogZmlsZS5pZCxcbiAgICAgICAgdHlwZTogZmlsZS50eXBlXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMocGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGZpbGUgKGF0dGFjaGVkIERNU09iamVjdCkgaW4gb2JqZWN0IHN0YXRlXG4gICAqIEBwYXJhbSBmaWxlXG4gICAqL1xuICBvcGVuV29ya0l0ZW1Db250ZW50SW5Db250ZXh0KGV2dCkge1xuICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhIHx8IHt9O1xuICAgIGNvbnN0IGZpbGVUeXBlOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7dHlwZTogZmlsZS50eXBlfX07XG4gICAgaWYgKGV2dC5jdHJsS2V5KSB7XG4gICAgICB3aW5kb3cub3BlbihDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydvYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGZpbGUuaWRdLCBmaWxlVHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgY2xpcGJvYXJkIGNvbnRlbnQgdG8gdGhlIHdvcmsgaXRlbVxuICAgKi9cbiAgYWRkRnJvbUNsaXBib2FyZCgpIHtcbiAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5hZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHRoaXMud29ya0l0ZW0sIHRoaXMuY2xpcGJvYXJkKVxuICAgICAgLnN1YnNjcmliZSh3b3JrSXRlbSA9PiB7XG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCkge1xuICAgICAgICAgIC8vIG9wZW4gZmlyc3QgaXRlbSB3aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWRcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy53b3JrSXRlbS5maWxlWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5lcnJvcicpLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmZpbGUubm90aWZpY2F0aW9uLmFkZC5tZXNzYWdlJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBmaWxlIGVudHJ5IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZVxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBlbnRyeSB0byBiZSByZW1vdmVkXG4gICAqIEBwYXJhbSBldnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICByZW1vdmVXb3JrSXRlbUNvbnRlbnQoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChldnQuZGF0YSkge1xuICAgICAgY29uc3QgZmlsZTogRmlsZUVudHJ5ID0gZXZ0LmRhdGE7XG4gICAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgICAgLnJlbW92ZUZpbGVFbGVtZW50KHRoaXMud29ya0l0ZW0ucHJvY2Vzc0lkLCB0aGlzLndvcmtJdGVtLmlkLCBmaWxlLmlkKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUgPSB0aGlzLndvcmtJdGVtLmZpbGUuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID09PSBmaWxlLmlkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQoXG4gICAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZmlsZS5sZW5ndGggPyB0aGlzLndvcmtJdGVtLmZpbGVbMF0gOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUnKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUubWVzc2FnZScpKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHdvcmsgaXRlbXMgZm9ybSBkYXRhXG4gICAqL1xuICBzYXZlV29ya0l0ZW1EYXRhKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkICYmIHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtOiBXb3JrSXRlbSk6IGJvb2xlYW4ge1xuICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcbiAgICBjb25zdCB7YWN0aW9ucywgZm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xuICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XG4gICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJylcbiAgICApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlV29ya0l0ZW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLndvcmtJdGVtLmRhdGEgPSB0aGlzLmJwbUZvcm1FbC5nZXRGb3JtRGF0YSgpO1xuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2Uuc2F2ZVdvcmtJdGVtKHRoaXMud29ya0l0ZW0pLnBpcGUoXG4gICAgICBtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSksXG4gICAgICBtYXAod29ya0l0ZW0gPT4gdGhpcy5wcmVwYXJlTmV3V29ya0l0ZW0od29ya0l0ZW0pKSxcbiAgICAgIGNhdGNoRXJyb3IoXG4gICAgICAgIFV0aWxzLmNhdGNoKFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmluZGV4ZGF0YS5zYXZlLmVycm9yJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgY3VycmVudCBpdGVtIGZyb20gdGhlIGluYm94LlxuICAgKi9cbiAgY29uZmlybUluYm94SXRlbSgpIHtcbiAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gZmFsc2U7XG4gICAgfSwgMTAwMCk7XG4gICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5pbmJveFNlcnZpY2VcbiAgICAgIC5yZW1vdmVJdGVtKHRoaXMuaXRlbSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LmFjdGl2aXR5LmNvbmZpcm0uc3VjY2VzcycpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5JTkJPWF9JVEVNX0NPTkZJUk1FRCwgdGhpcy5pdGVtKTtcbiAgICAgICAgdGhpcy5pdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICAgICAgfSwgVXRpbHMuY2F0Y2gobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5pdGVtLnJlbW92ZS5mYWlsJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHN0YXRlIGFuZCBkYXRhIGZvciB0aGUgY3VycmVudCB3b3JrIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIHNldHVwV29ya0l0ZW0oKSB7XG4gICAgdGhpcy5sb2NrZWQgPSB0aGlzLndvcmtJdGVtLnN0YXRlID09PSAnUEVSU09OJztcbiAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gZmFsc2UsIDEwMDApO1xuICAgIGNvbnN0IHtmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XG4gICAgY29uc3Qgd29ya0l0ZW0gPSB7Zm9ybSwgZGF0YX07XG4gICAgdGhpcy53b3JrSXRlbUluZGV4ZGF0YSA9IGZvcm0gJiYgZGF0YSA/IHdvcmtJdGVtIDogbnVsbDtcblxuICAgIC8vIGZldGNoIGhpc3RvcnlcbiAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5nZXRQcm9jZXNzSGlzdG9yeSh0aGlzLndvcmtJdGVtLnByb2Nlc3NJZClcbiAgICAgIC5waXBlKG1hcChyZXMgPT4ge1xuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5lZGl0b3IpIHtcbiAgICAgICAgICAgIGl0ZW0uZGF0YS5pbWFnZSA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckltYWdlVXJpKGl0ZW0uZWRpdG9yLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBzb3J0IGJ5IG51bWJlciBiZWNhdXNlIHRoaXMgaXMgdGhlIGF1dG8taW5jcmVtZW50aW5nXG4gICAgICAgIC8vIGluZGV4IG9mIGFkZGVkIGhpc3RvcnkgZW50cmllc1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSByZXMuc29ydCgoYSwgYikgPT4gYi5udW1iZXIgLSBhLm51bWJlcik7XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlDb2RlKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcbiAgfVxuXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNsaXBib2FyZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGNsaXBib2FyZDogQ2xpcGJvYXJkKSA9PlxuICAgICAgICAodGhpcy5jbGlwYm9hcmQgPVxuICAgICAgICAgIGNsaXBib2FyZC5hY3Rpb24gPT09IENsaXBib2FyZEFjdGlvbi5DT1BZID8gY2xpcGJvYXJkIDogbnVsbClcbiAgICAgICk7XG4gICAgLy8gY29tcG9uZW50IGlzIG9ubHkgaW50ZXJlc3RlZCBpbiBjb3BpZWQgaXRlbXNcblxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAuZm9jdXMkLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQsIHRoaXMuaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcbiAgICB0aGlzLnRhYlBsdWdpbnMuZm9yRWFjaChcbiAgICAgIHAgPT4gKHBhbmVscyA9IHBhbmVscy5jb25jYXQocC50YWJQYW5lbHMudG9BcnJheSgpKSlcbiAgICApO1xuICAgIHRoaXMuZXh0ZXJuYWxQYW5lbHMucmVzZXQocGFuZWxzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImluYm94LWRldGFpbHNcIiAqbmdJZj1cIml0ZW07IGVsc2Ugbm9JdGVtXCIgW25nQ2xhc3NdPVwie2JwbTogaXRlbS50eXBlID09PSAnQlBNJ31cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZFwiIFtuZ0NsYXNzXT1cInsnZW8taGVhZC10YWJzJzogaXRlbS50eXBlID09PSAnQlBNJ31cIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZW8taGVhZGVyXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgKm5nSWY9XCIhaXRlbS5pY29uSWRcIiB0aXRsZT1cInt7aXRlbT8udHlwZX19XCJcbiAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbG9vcC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiICpuZ0lmPVwiaXRlbS5pY29uSWRcIiB0aXRsZT1cInt7aXRlbT8udHlwZX19XCIgW2ljb25JZF09XCJpdGVtLmljb25JZFwiPjwvZW8taWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICA8aDIgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIj57e2l0ZW0udGl0bGV9fTwvaDI+XG4gICAgICAgIDxoMyAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cImVvLWhlYWRlci1zdWJ0aXRsZVwiPnt7aXRlbS5kZXNjcmlwdGlvbn19PC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwid29ya0l0ZW0gJiYgIWl0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cImVvLWhlYWRlci1zdWJ0aXRsZVwiPnt7d29ya0l0ZW0ucW1vZGVsbmFtZX19PC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHByaW1hcnkgcmVmcmVzaC1idXR0b25cIiAqbmdJZj1cImluaXRpYWxpemluZy5jbG9zZWRcIiAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIiAqbmdJZj1cImluaXRpYWxpemluZy5jbG9zZWRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJsb2FkLWVycm9yXCIgKm5nSWY9XCJsb2FkRXJyb3JcIj5cbiAgICAgIDxlby1lcnJvci1tZXNzYWdlPjwvZW8tZXJyb3ItbWVzc2FnZT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gZGV0YWlscyBmb3IgQlBNIGl0ZW1zIC0tPlxuICAgIDx5dmMtdGFicyAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ0JQTSc7IGVsc2UgZG1zVGFza1wiPlxuICAgICAgPCEtLSB0YXNrIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAndGFzaycsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbFwiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1kZXNjcmlwdGlvblwiICpuZ0lmPVwid29ya0l0ZW0/LmRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrLmRlc2NyaXB0aW9uPC9oMz5cbiAgICAgICAgICAgICAgPGRpdj57e3dvcmtJdGVtLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZW8tZHVldGltZUluZm8gKm5nSWY9XCJpdGVtPy5kdWV0aW1lXCIgW2l0ZW1dPVwiaXRlbVwiPjwvZW8tZHVldGltZUluZm8+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLXBlcmZvcm1lclwiICpuZ0lmPVwid29ya0l0ZW0/LmluU3Vic3RpdHV0ZU9mPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRcIiBbbmdDbGFzc109XCJ7cGVyZm9ybWVyU2hvdzogc3Vic3RpdHV0ZVNob3d9XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3Muc3Vic3RpdHV0ZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIiAoY2xpY2spPVwic3Vic3RpdHV0ZVNob3cgPSAhc3Vic3RpdHV0ZVNob3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7d29ya0l0ZW0uaW5TdWJzdGl0dXRlT2YubGVuZ3RofX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJzdWJzdGl0dXRlU2hvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtZXJcIiAqbmdGb3I9XCJsZXQgdSBvZiB3b3JrSXRlbS5pblN1YnN0aXR1dGVPZlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX3VzZXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3UuZmlyc3RuYW1lfX0ge3t1Lmxhc3RuYW1lfX0gPHNwYW4gY2xhc3M9XCJxbmFtZVwiPnt7dS5uYW1lfX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2NrZWQ7IGVsc2UgdW5sb2NrZWRcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1mb3JtXCI+XG4gICAgICAgICAgICAgICAgPGVvLW9iamVjdC1mb3JtIFtmb3JtT3B0aW9uc109XCJmb3JtT3B0aW9uc1wiICpuZ0lmPVwid29ya0l0ZW0/LmZvcm1cIlxuICAgICAgICAgICAgICAgICAgKHN0YXR1c0NoYW5nZWQpPVwib25Gb3JtU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCIgI2JwbUZvcm0+PC9lby1vYmplY3QtZm9ybT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1bmxvY2tlZD5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWNlXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MudGFzay5jb250aW51ZTwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLXBlcmZvcm1lclwiICpuZ0lmPVwid29ya0l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZFwiIFtuZ0NsYXNzXT1cIntwZXJmb3JtZXJTaG93OiBwZXJmb3JtZXJTaG93fVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MucmVjaXBpZW50czwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvblwiIChjbGljayk9XCJwZXJmb3JtZXJTaG93ID0gIXBlcmZvcm1lclNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t3b3JrSXRlbS5wZXJmb3JtZXIudXNlcnMubGVuZ3RoICsgd29ya0l0ZW0ucGVyZm9ybWVyLnJvbGVzLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAgICAgd29ya0l0ZW0ucGVyZm9ybWVyLmdyb3Vwcy5sZW5ndGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hcnJvd19kb3duLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwicGVyZm9ybWVyU2hvd1wiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IGcgb2Ygd29ya0l0ZW0ucGVyZm9ybWVyLmdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV9ncm91cC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e2cubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1lclwiICpuZ0Zvcj1cImxldCByIG9mIHdvcmtJdGVtLnBlcmZvcm1lci5yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV9yb2xlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7ci5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IHUgb2Ygd29ya0l0ZW0ucGVyZm9ybWVyLnVzZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX3VzZXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t1LmZpcnN0bmFtZX19IHt7dS5sYXN0bmFtZX19IDxzcGFuIGNsYXNzPVwicW5hbWVcIj57e3UubmFtZX19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRleGRhdGFcIiAqbmdJZj1cIndvcmtJdGVtSW5kZXhkYXRhPy5kYXRhXCI+XG4gICAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRldGFpbHMudGFiLnRhc2suaW5kZXhkYXRhPC9oMz5cbiAgICAgICAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJ3b3JrSXRlbUluZGV4ZGF0YVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZDsgZWxzZSB1bmxvY2tlZEFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICFhY3Rpb25Qcm9jZXNzaW5nLmNsb3NlZH1cIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi11bmxvY2tcIiAoY2xpY2spPVwidW5sb2NrV29ya0l0ZW0oKVwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRlcGVyc29uYWxpemU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNhdmVcIiAoY2xpY2spPVwic2F2ZVdvcmtJdGVtRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya0l0ZW0/LmZvcm0gJiYgIWZvcm1TdGF0ZT8uaW52YWxpZCAmJiBmb3JtU3RhdGU/LmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IHByZXZlbnRDbGlja1Rocm91Z2h9XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWV4ZWN1dGVcIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHdvcmtJdGVtLmFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlDb2RlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uKVwiIFtuZ0NsYXNzXT1cIntleHQ6IGFjdGlvbi51cmx9XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoISFmb3JtU3RhdGUgJiYgZm9ybVN0YXRlPy5pbnZhbGlkKSB8fCAhYWN0aW9uLmZlYXNpYmxlXCI+e3thY3Rpb24udGl0bGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN1bmxvY2tlZEFjdGlvbnM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1hY3Rpb25zXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhYWN0aW9uUHJvY2Vzc2luZy5jbG9zZWQgfHwgIXdvcmtJdGVtfVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sb2NrXCIgKGNsaWNrKT1cImxvY2tXb3JrSXRlbSgpXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MucGVyc29uYWxpemU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi5wcm9ncmVzcycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcHJvY2Vzcy1oaXN0b3J5XCI+XG4gICAgICAgICAgICA8ZW8tcHJvY2Vzcy1oaXN0b3J5IFtoaXN0b3J5XT1cImhpc3RvcnlcIj48L2VvLXByb2Nlc3MtaGlzdG9yeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGF0dGFjaG1lbnRzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnZmlsZScsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi5hdHRhY2htZW50cycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcHJvY2Vzcy1maWxlc1wiPlxuICAgICAgICAgICAgPGVvLXByb2Nlc3MtZmlsZSBbcHJvY2Vzc0ZpbGVdPVwid29ya0l0ZW0/LmZpbGVcIiBbcGVybWlzc2lvbnNdPVwid29ya0l0ZW0/LmZpbGVFbnRyeVBlcm1pc3Npb25zXCJcbiAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiIWZpbGVzQWRkaW5nLmNsb3NlZFwiIFtjbGlwYm9hcmRdPVwiY2xpcGJvYXJkXCIgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRDb250ZW50RmlsZUlkXT1cInNlbGVjdGVkQ29udGVudEZpbGVJZFwiXG4gICAgICAgICAgICAgIChvbk9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQpPVwib3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG9uT3BlbldvcmtJdGVtQ29udGVudCk9XCJvcGVuV29ya0l0ZW1Db250ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAob25SZW1vdmVXb3JrSXRlbUNvbnRlbnQpPVwicmVtb3ZlV29ya0l0ZW1Db250ZW50KCRldmVudClcIiAob25QYXN0ZVByb2Nlc3NGaWxlKT1cImFkZEZyb21DbGlwYm9hcmQoKVwiPlxuICAgICAgICAgICAgPC9lby1wcm9jZXNzLWZpbGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3l2Yy10YWJzPlxuXG4gICAgPCEtLSBib2R5IHdoZW4gd2UgaGF2ZSBhIHN1YnNjcmlwdGlvbiBvciBhIHJlc3VibWlzc2lvbiAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2Rtc1Rhc2s+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmVsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByb2Nlc3MuZGV0YWlscy50YWIudGFzay5kZXNjcmlwdGlvbjwvaDM+XG4gICAgICAgICAgICA8ZGl2Pnt7c2V0dGluZ3M/LmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBhY3Rpb25zIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIGl0ZW0gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICFhY3Rpb25Qcm9jZXNzaW5nLmNsb3NlZH1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWNvbmZpcm1cIiBbZGlzYWJsZWRdPVwicHJldmVudENsaWNrVGhyb3VnaFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtSW5ib3hJdGVtKClcIj57e3NldHRpbmdzPy5hY3Rpb25UaXRsZX19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxlQUFlLEVBRWYsVUFBVSxFQUdWLFNBQVMsRUFNVCxLQUFLLEVBSU4sTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFVMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPL0UsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQThDN0QsSUFDSSxJQUFJLENBQUMsQ0FBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxFQUFFO1lBQ0wsZUFBZTtZQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFD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QUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDaEQsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxFQUFFO29CQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO29CQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDdEU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYix5Q0FBeUM7UUFDekMsMkJBQTJCO1FBQzNCLHlEQUF5RDtRQUN6RCxLQUFLO1FBQ0wscUNBQXFDO0lBQ3ZDLENBQUM7O2tIQXpnQlUscUJBQXFCO3NHQUFyQixxQkFBcUIsd1VDakRsQyx3bFNBZ01jOzJGRC9JRCxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOzRZQU1OLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUztnQkF5Q1gsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxNQUFNO2dCQWtCc0IsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJwbVNlcnZpY2UsXG4gIENsaXBib2FyZCxcbiAgQ2xpcGJvYXJkQWN0aW9uLFxuICBDbGlwYm9hcmRTZXJ2aWNlLFxuICBFbmFpb0V2ZW50LFxuICBFdmVudFNlcnZpY2UsXG4gIEZpbGVFbnRyeSxcbiAgSW5ib3hJdGVtLFxuICBJbmJveFNlcnZpY2UsXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFdvcmtJdGVtLFxuICBXb3JrSXRlbUFjdGlvbixcbiAgV29ya0l0ZW1IaXN0b3J5RW50cnlcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RW1wdHlTdGF0ZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0Zvcm1TdGF0dXNDaGFuZ2VkRXZlbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL2Zvcm0tc3RhdHVzLWNoYW5nZWQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7VGFiUGx1Z2luQ29tcG9uZW50fSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbi5jb21wb25lbnQnO1xuLy8gaW1wb3J0IHtUYWJQYW5lbENvbXBvbmVudH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8taW5ib3gtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5ib3gtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluYm94RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnYnBtRm9ybScpIGJwbUZvcm1FbDogT2JqZWN0Rm9ybUNvbXBvbmVudDtcblxuICBwcml2YXRlIGRlZmF1bHRXb3JrSXRlbUFjdGlvbjogV29ya0l0ZW1BY3Rpb247XG5cbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIGluZGV4ZGF0YVxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXG4gIHByaXZhdGUgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2l0ZW06IEluYm94SXRlbTtcbiAgd29ya0l0ZW06IFdvcmtJdGVtO1xuICBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xuICAvLyBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHdvcmsgaXRlbSBpcyBsb2NrZWQgYnkgdGhlIHVzZXJcbiAgbG9ja2VkOiBib29sZWFuO1xuICAvLyBDT09MLTExNTA2XG4gIHByZXZlbnRDbGlja1Rocm91Z2g6IGJvb2xlYW47XG4gIC8vIGN1cnJlbnQgY2xpcGJvYXJkIGNvbnRlbnRzXG4gIGNsaXBib2FyZDogQ2xpcGJvYXJkO1xuXG4gIC8vIHVzZWQgZm9yIGhhbmRsaW5nIFNVQlNDUklQVElPTlMgYW5kIFJFU1VCTUlTU0lPTlNcbiAgc2V0dGluZ3M6IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGFjdGlvblRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBzZWxlY3RlZENvbnRlbnRGaWxlSWQ6IHN0cmluZztcbiAgd29ya0l0ZW1JbmRleGRhdGE6IEluZGV4RGF0YTtcbiAgcGVyZm9ybWVyU2hvdzogYm9vbGVhbjtcbiAgc3Vic3RpdHV0ZVNob3c6IGJvb2xlYW47XG4gIGFjdGlvblByb2Nlc3Npbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xuICBpbml0aWFsaXppbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xuICBmaWxlc0FkZGluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGxvYWRFcnJvcjogYm9vbGVhbjtcbiAgc3RvcmFnZUtleUxhc3RJdGVtSUQgPSAnZW8uaW5ib3gubGFzdEl0ZW1JRCc7XG5cbiAgLy8gZXh0ZXJuYWxQYW5lbHMgPSBuZXcgUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PigpO1xuICAvLyBAQ29udGVudENoaWxkcmVuKFRhYlBhbmVsQ29tcG9uZW50KSB0YWJQYW5lbHM6IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD47XG4gIC8vIEBDb250ZW50Q2hpbGRyZW4oVGFiUGx1Z2luQ29tcG9uZW50KSB0YWJQbHVnaW5zOiBRdWVyeUxpc3Q8XG4gIC8vICAgVGFiUGx1Z2luQ29tcG9uZW50XG4gIC8vID47XG5cbiAgQElucHV0KCkgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZTtcbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcblxuICBASW5wdXQoJ2l0ZW0nKVxuICBzZXQgaXRlbShpOiBJbmJveEl0ZW0pIHtcbiAgICB0aGlzLl9pdGVtID0gaTtcbiAgICBpZiAoaSkge1xuICAgICAgLy8gcmVzZXQgdmFsdWVzXG4gICAgICB0aGlzLndvcmtJdGVtID0gbnVsbDtcbiAgICAgIHRoaXMuaGlzdG9yeSA9IFtdO1xuICAgICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXRlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlIDogJ25vbmUnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZnk6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbiA9IHtcbiAgICAgIGNvZGU6IDAsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy50YXNrLmFjdGlvbnMuZGVmYXVsdC50aXRsZScpLFxuICAgICAgdHlwZTogJ0ZPUldBUkQnXG4gICAgfTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXRlbS50eXBlID09PSBJbmJveEl0ZW0uVFlQRV9CUE0pIHtcbiAgICAgIHRoaXMuY3JlYXRlQlBNV29ya0l0ZW0oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtID0gdGhpcy5faXRlbTtcbiAgICB9XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuZm9ybVN0YXRlID0gZXZ0O1xuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgLy8gYmVjYXVzZSB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmb3JtIHN0YXR1cyBjaGFuZ2VzLFxuICAgIC8vIHBlbmRpbmcgdGFzayB3aWxsIG9ubHkgYmUgc3RhcnRlZCBvbmNlIHVudGlsIGl0IHdhcyBmaW5pc2hlZFxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xuICAgICAgdGhpcy5wZW5kaW5nVGFza0lkID0gdGhpcy5wZW5kaW5nQ2hhbmdlcy5zdGFydFRhc2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyB0aGUgY3VycmVudCBpbmJveCBpdGVtXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3MoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSBmYWxzZTtcblxuICAgIHN3aXRjaCAodGhpcy5pdGVtLnR5cGUpIHtcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfQlBNOiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfU1VCU0NSSVBUSU9OOiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRE1TSXRlbSgnc3Vic2NyaXB0aW9uJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9SRVNVQk1JU1NJT046IHtcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdyZXN1Ym1pc3Npb24nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRE1TSXRlbShkbXNUeXBlKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBgZW8ucHJvY2Vzcy5kZXRhaWxzLnRhc2suJHtkbXNUeXBlfS5kZXNjcmlwdGlvbmBcbiAgICAgICksXG4gICAgICBhY3Rpb25UaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy5idXR0b24uJHtkbXNUeXBlfS5yZW1vdmVgXG4gICAgICApXG4gICAgfTtcbiAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy5pdGVtLnRhcmdldCk7XG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkgPSAocmVzOiBXb3JrSXRlbSk6IFdvcmtJdGVtID0+IHtcbiAgICBpZiAoIXJlcy5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJlcy5hY3Rpb25zID0gW3RoaXMuZGVmYXVsdFdvcmtJdGVtQWN0aW9uXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIGZvciBpdGVtcyBvZiB0eXBlICdCUE0nIGZldGNoIHdvcmsgaXRlbSBmb3IgbW9yZSBpbmZvcm1hdGlvbnNcbiAgY3JlYXRlQlBNV29ya0l0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZVxuICAgICAgLmdldFdvcmtJdGVtKHRoaXMuaXRlbS5zb3VyY2VJZCwgdGhpcy5pdGVtLmlkKVxuICAgICAgLnBpcGUobWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZvcm0sXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEsXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmFjdGlvbnNcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIGF1dG8tc2VsZWN0IGZpcnN0IGF0dGFjaGVkIGNvbnRlbnRcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQoXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ub3RpZnkuZXJyb3IoXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsJyksXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbC5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtT3B0aW9ucyhmb3JtLCBkYXRhLCBhY3Rpb25zOiBXb3JrSXRlbUFjdGlvbltdKSB7XG4gICAgaWYgKGZvcm0pIHtcbiAgICAgIGZvcm0uc2l0dWF0aW9uID0gJ0VESVQnO1xuICAgICAgdGhpcy5mb3JtT3B0aW9ucyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIGZvcm1Nb2RlbDogZm9ybSxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgPyB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykgOiB7fSxcbiAgICAgICAgICAvLyBmb3JtIHNjcmlwdCB3aWxsIGJlIHByb3ZpZGVkIHdpdGggdGhlIGxpc3Qgb2YgZmlsZSBlbnRyaWVzXG4gICAgICAgICAgLy8gYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQgd29yayBpdGVtXG4gICAgICAgICAgb2JqZWN0czogdGhpcy53b3JrSXRlbS5maWxlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluYm94U2F0ZSgpIHtcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIHtcbiAgICBsZXQgdHJhbnNmb3JtZWRBY3Rpb25zID0ge307XG4gICAgYWN0aW9ucy5mb3JFYWNoKGEgPT4ge1xuICAgICAgaWYgKGEuZmVhc2libGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhLmZlYXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGEuZmVhc2liaWxpdHkgPSB2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYS5mZWFzaWJsZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmZlYXNpYmxlO1xuICAgICAgfTtcbiAgICAgIHRyYW5zZm9ybWVkQWN0aW9uc1thLmNvZGUudG9TdHJpbmcoKV0gPSBhO1xuICAgIH0pO1xuICAgIHJldHVybiB0cmFuc2Zvcm1lZEFjdGlvbnM7XG4gIH1cblxuICAvKiBMb2NrcyBhIHdvcmsgaXRlbSAocGVyc29uYWxpemUpICovXG4gIGxvY2tXb3JrSXRlbSgpIHtcbiAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5sb2NrV29ya0l0ZW0odGhpcy53b3JrSXRlbSlcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc3Qge2FjdGlvbnMsIGRhdGEsIGZvcm19ID0gcmVzO1xuICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xuICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhmb3JtLCBkYXRhLCBhY3Rpb25zKTtcbiAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICAgICAgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmV2ZW50LnNjcmlwdC5leGVjdXRpb24uZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkuY2FsbCh0aGlzLCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKS5jYWxsKHRoaXMsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVW4tTG9ja3MgYSB3b3JrIGl0ZW0gKGRlLXBlcnNvbmFsaXplKVxuICAgKi9cbiAgdW5sb2NrV29ya0l0ZW0oKSB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrKCkpIHtcbiAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxuICAgICAgICAudW5sb2NrV29ya0l0ZW0odGhpcy53b3JrSXRlbSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XG4gICAgICAgICAgdGhpcy5zZXR1cFdvcmtJdGVtKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS51bmxvY2suZGVuaWVkJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSB3b3JrIGl0ZW1zIGFjdGlvbi5cbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGJlIGV4ZWN1dGVzXG4gICAqL1xuICBleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uOiBXb3JrSXRlbUFjdGlvbikge1xuICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcbiAgICB9LCAxMDAwKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcbiAgICAgICAgaWYgKGFjdGlvbi51cmwpIHtcbiAgICAgICAgICAvLyBwcm9jZXNzIGV4dGVybmFsIGFjdGlvbiBieSBzYXZpbmcgd29yayBpdGVtIGFuZCByZWRpcmVjdCB0byBhY3Rpb25zIHVybFxuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5zYXZlV29ya0l0ZW0oKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuQWN0aW9uVXJsKGFjdGlvbi51cmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5icG1Gb3JtRWwpIHtcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZGF0YSA9IHRoaXMuYnBtRm9ybUVsLmdldEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5nIHRhc2sgYmVjYXVzZSB0aGUgZm9ybSB3aWxsIGJlIGRlc3Ryb3llZCB3aXRob3V0IHNhdmluZ1xuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYnBtU2VydmljZVxuICAgICAgICAgICAgLmZvcndhcmRXb3JrSXRlbSh0aGlzLndvcmtJdGVtLCBhY3Rpb24pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuZm9yd2FyZC5zdWNjZXNzJyksXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnRpdGxlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLmVycm9yJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5BY3Rpb25VcmwodXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodXJsLnN1YnN0cigwLCA0KSA9PT0gJ2h0dHAnKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIGEgd29yayBpdGVtcyBmaWxlIGVudHJ5LlxuICAgKiBAcGFyYW0gZmlsZSBGaWxlRW50cnkgZWxlbWVudCB0byBiZSBzZWxlY3RlZFxuICAgKi9cbiAgb3BlbldvcmtJdGVtQ29udGVudChmaWxlPzogRmlsZUVudHJ5KSB7XG4gICAgaWYgKCFmaWxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IG51bGw7XG4gICAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBmaWxlLmlkO1xuICAgICAgbGV0IHBhcmFtcyA9IHtcbiAgICAgICAgaWQ6IGZpbGUuaWQsXG4gICAgICAgIHR5cGU6IGZpbGUudHlwZVxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBmaWxlIChhdHRhY2hlZCBETVNPYmplY3QpIGluIG9iamVjdCBzdGF0ZVxuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgb3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dChldnQpIHtcbiAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YSB8fCB7fTtcbiAgICBjb25zdCBmaWxlVHlwZTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczoge3R5cGU6IGZpbGUudHlwZX19O1xuICAgIGlmIChldnQuY3RybEtleSkge1xuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNsaXBib2FyZCBjb250ZW50IHRvIHRoZSB3b3JrIGl0ZW1cbiAgICovXG4gIGFkZEZyb21DbGlwYm9hcmQoKSB7XG4gICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAuYWRkRmlsZUVsZW1lbnRzRnJvbUNsaXBib2FyZCh0aGlzLndvcmtJdGVtLCB0aGlzLmNsaXBib2FyZClcbiAgICAgIC5zdWJzY3JpYmUod29ya0l0ZW0gPT4ge1xuICAgICAgICB0aGlzLndvcmtJdGVtID0gd29ya0l0ZW07XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jbGVhcigpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQpIHtcbiAgICAgICAgICAvLyBvcGVuIGZpcnN0IGl0ZW0gd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkXG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMud29ya0l0ZW0uZmlsZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uZXJyb3InKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5hZGQubWVzc2FnZScpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgZmlsZSBlbnRyeSBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGVcbiAgICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgZW50cnkgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gZXZ0IFRoZSBjbGljayBldmVudFxuICAgKi9cbiAgcmVtb3ZlV29ya0l0ZW1Db250ZW50KGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZXZ0LmRhdGEpIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhO1xuICAgICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAgIC5yZW1vdmVGaWxlRWxlbWVudCh0aGlzLndvcmtJdGVtLnByb2Nlc3NJZCwgdGhpcy53b3JrSXRlbS5pZCwgZmlsZS5pZClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlID0gdGhpcy53b3JrSXRlbS5maWxlLmZpbHRlcihmID0+IGYuaWQgIT09IGZpbGUuaWQpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9PT0gZmlsZS5pZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KFxuICAgICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlLm1lc3NhZ2UnKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSB3b3JrIGl0ZW1zIGZvcm0gZGF0YVxuICAgKi9cbiAgc2F2ZVdvcmtJdGVtRGF0YSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCAmJiB0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xuICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHByZXBhcmVOZXdXb3JrSXRlbSh3b3JrSXRlbTogV29ya0l0ZW0pOiBib29sZWFuIHtcbiAgICB0aGlzLndvcmtJdGVtID0gd29ya0l0ZW07XG4gICAgY29uc3Qge2FjdGlvbnMsIGZvcm0sIGRhdGF9ID0gdGhpcy53b3JrSXRlbTtcbiAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICB0aGlzLnNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnMpO1xuICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3MoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuc3VjY2VzcycpXG4gICAgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY3VycmVudCB3b3JrIGl0ZW1cbiAgICovXG4gIHByaXZhdGUgc2F2ZVdvcmtJdGVtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcbiAgICByZXR1cm4gdGhpcy5icG1TZXJ2aWNlLnNhdmVXb3JrSXRlbSh0aGlzLndvcmtJdGVtKS5waXBlKFxuICAgICAgbWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpLFxuICAgICAgbWFwKHdvcmtJdGVtID0+IHRoaXMucHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtKSksXG4gICAgICBjYXRjaEVycm9yKFxuICAgICAgICBVdGlscy5jYXRjaChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5pbmRleGRhdGEuc2F2ZS5lcnJvcicpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSBpbmJveC5cbiAgICovXG4gIGNvbmZpcm1JbmJveEl0ZW0oKSB7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuaW5ib3hTZXJ2aWNlXG4gICAgICAucmVtb3ZlSXRlbSh0aGlzLml0ZW0pXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5hY3Rpdml0eS5jb25maXJtLnN1Y2Nlc3MnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQsIHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuaXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgICAgIH0sIFV0aWxzLmNhdGNoKG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuaXRlbS5yZW1vdmUuZmFpbCcpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBzdGF0ZSBhbmQgZGF0YSBmb3IgdGhlIGN1cnJlbnQgd29yayBpdGVtLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFdvcmtJdGVtKCkge1xuICAgIHRoaXMubG9ja2VkID0gdGhpcy53b3JrSXRlbS5zdGF0ZSA9PT0gJ1BFUlNPTic7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlLCAxMDAwKTtcbiAgICBjb25zdCB7Zm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xuICAgIGNvbnN0IHdvcmtJdGVtID0ge2Zvcm0sIGRhdGF9O1xuICAgIHRoaXMud29ya0l0ZW1JbmRleGRhdGEgPSBmb3JtICYmIGRhdGEgPyB3b3JrSXRlbSA6IG51bGw7XG5cbiAgICAvLyBmZXRjaCBoaXN0b3J5XG4gICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0hpc3RvcnkodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQpXG4gICAgICAucGlwZShtYXAocmVzID0+IHtcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uZWRpdG9yKSB7XG4gICAgICAgICAgICBpdGVtLmRhdGEuaW1hZ2UgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaShpdGVtLmVkaXRvci5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gc29ydCBieSBudW1iZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBhdXRvLWluY3JlbWVudGluZ1xuICAgICAgICAvLyBpbmRleCBvZiBhZGRlZCBoaXN0b3J5IGVudHJpZXNcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0gcmVzLnNvcnQoKGEsIGIpID0+IGIubnVtYmVyIC0gYS5udW1iZXIpO1xuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmNvZGU7XG4gIH1cblxuICB0cmFja0J5SWQoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHN1YnNjcmliZSBmb3IgY2hhbmdlcyB0byB0aGUgY2xpcGJvYXJkIHRvIGVuYWJsZSBhZGRpbmcgY29udGVudHMgdG8gdGhlIHdvcmsgaXRlbVxuICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jbGlwYm9hcmQkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChjbGlwYm9hcmQ6IENsaXBib2FyZCkgPT5cbiAgICAgICAgKHRoaXMuY2xpcGJvYXJkID1cbiAgICAgICAgICBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSA/IGNsaXBib2FyZCA6IG51bGwpXG4gICAgICApO1xuICAgIC8vIGNvbXBvbmVudCBpcyBvbmx5IGludGVyZXN0ZWQgaW4gY29waWVkIGl0ZW1zXG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgLmZvY3VzJC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlELCB0aGlzLml0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGxldCBwYW5lbHMgPSB0aGlzLnRhYlBhbmVscy50b0FycmF5KCk7XG4gICAgLy8gdGhpcy50YWJQbHVnaW5zLmZvckVhY2goXG4gICAgLy8gICBwID0+IChwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpXG4gICAgLy8gKTtcbiAgICAvLyB0aGlzLmV4dGVybmFsUGFuZWxzLnJlc2V0KHBhbmVscyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbmJveC1kZXRhaWxzXCIgKm5nSWY9XCJpdGVtOyBlbHNlIG5vSXRlbVwiIFtuZ0NsYXNzXT1cInticG06IGl0ZW0udHlwZSA9PT0gJ0JQTSd9XCI+XG5cbiAgPGRpdiBjbGFzcz1cImVvLWhlYWRcIiBbbmdDbGFzc109XCJ7J2VvLWhlYWQtdGFicyc6IGl0ZW0udHlwZSA9PT0gJ0JQTSd9XCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiICpuZ0lmPVwiIWl0ZW0uaWNvbklkXCIgdGl0bGU9XCJ7e2l0ZW0/LnR5cGV9fVwiXG4gICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2xvb3Auc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvbklkXCIgdGl0bGU9XCJ7e2l0ZW0/LnR5cGV9fVwiIFtpY29uSWRdPVwiaXRlbS5pY29uSWRcIj48L2VvLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3tpdGVtLnRpdGxlfX08L2gyPlxuICAgICAgICA8aDMgKm5nSWY9XCJpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e2l0ZW0uZGVzY3JpcHRpb259fTwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cIndvcmtJdGVtICYmICFpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e3dvcmtJdGVtLnFtb2RlbG5hbWV9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5IHJlZnJlc2gtYnV0dG9uXCIgKm5nSWY9XCJpbml0aWFsaXppbmcuY2xvc2VkXCIgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJlby1ib2R5XCIgKm5nSWY9XCJpbml0aWFsaXppbmcuY2xvc2VkXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZC1lcnJvclwiICpuZ0lmPVwibG9hZEVycm9yXCI+XG4gICAgICA8ZW8tZXJyb3ItbWVzc2FnZT48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIGRldGFpbHMgZm9yIEJQTSBpdGVtcyAtLT5cbiAgICA8eXZjLXRhYnMgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdCUE0nOyBlbHNlIGRtc1Rhc2tcIj5cbiAgICAgIDwhLS0gdGFzayAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3Rhc2snLCBsYWJlbDogJ2VvLnByb2Nlc3MuZGV0YWlscy50YWIudGFzaycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtZGVzY3JpcHRpb25cIiAqbmdJZj1cIndvcmtJdGVtPy5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByb2Nlc3MuZGV0YWlscy50YWIudGFzay5kZXNjcmlwdGlvbjwvaDM+XG4gICAgICAgICAgICAgIDxkaXY+e3t3b3JrSXRlbS5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGVvLWR1ZXRpbWVJbmZvICpuZ0lmPVwiaXRlbT8uZHVldGltZVwiIFtpdGVtXT1cIml0ZW1cIj48L2VvLWR1ZXRpbWVJbmZvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1wZXJmb3JtZXJcIiAqbmdJZj1cIndvcmtJdGVtPy5pblN1YnN0aXR1dGVPZj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkXCIgW25nQ2xhc3NdPVwie3BlcmZvcm1lclNob3c6IHN1YnN0aXR1dGVTaG93fVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLnN1YnN0aXR1dGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCIgKGNsaWNrKT1cInN1YnN0aXR1dGVTaG93ID0gIXN1YnN0aXR1dGVTaG93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3dvcmtJdGVtLmluU3Vic3RpdHV0ZU9mLmxlbmd0aH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hcnJvd19kb3duLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwic3Vic3RpdHV0ZVNob3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IHUgb2Ygd29ya0l0ZW0uaW5TdWJzdGl0dXRlT2ZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV91c2VyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t1LmZpcnN0bmFtZX19IHt7dS5sYXN0bmFtZX19IDxzcGFuIGNsYXNzPVwicW5hbWVcIj57e3UubmFtZX19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkOyBlbHNlIHVubG9ja2VkXCI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtZm9ybVwiPlxuICAgICAgICAgICAgICAgIDxlby1vYmplY3QtZm9ybSBbZm9ybU9wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIiAqbmdJZj1cIndvcmtJdGVtPy5mb3JtXCJcbiAgICAgICAgICAgICAgICAgIChzdGF0dXNDaGFuZ2VkKT1cIm9uRm9ybVN0YXR1c0NoYW5nZWQoJGV2ZW50KVwiICNicG1Gb3JtPjwvZW8tb2JqZWN0LWZvcm0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5sb2NrZWQ+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGljZVwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLnRhc2suY29udGludWU8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1wZXJmb3JtZXJcIiAqbmdJZj1cIndvcmtJdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRcIiBbbmdDbGFzc109XCJ7cGVyZm9ybWVyU2hvdzogcGVyZm9ybWVyU2hvd31cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLnJlY2lwaWVudHM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIiAoY2xpY2spPVwicGVyZm9ybWVyU2hvdyA9ICFwZXJmb3JtZXJTaG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7d29ya0l0ZW0ucGVyZm9ybWVyLnVzZXJzLmxlbmd0aCArIHdvcmtJdGVtLnBlcmZvcm1lci5yb2xlcy5sZW5ndGggK1xuICAgICAgICAgICAgICAgICAgICAgIHdvcmtJdGVtLnBlcmZvcm1lci5ncm91cHMubGVuZ3RofX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cInBlcmZvcm1lclNob3dcIj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1lclwiICpuZ0Zvcj1cImxldCBnIG9mIHdvcmtJdGVtLnBlcmZvcm1lci5ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX29yZ2FfZ3JvdXAuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3tnLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtZXJcIiAqbmdGb3I9XCJsZXQgciBvZiB3b3JrSXRlbS5wZXJmb3JtZXIucm9sZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX29yZ2Ffcm9sZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3IubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1lclwiICpuZ0Zvcj1cImxldCB1IG9mIHdvcmtJdGVtLnBlcmZvcm1lci51c2Vyc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV91c2VyLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7dS5maXJzdG5hbWV9fSB7e3UubGFzdG5hbWV9fSA8c3BhbiBjbGFzcz1cInFuYW1lXCI+e3t1Lm5hbWV9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kZXhkYXRhXCIgKm5nSWY9XCJ3b3JrSXRlbUluZGV4ZGF0YT8uZGF0YVwiPlxuICAgICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrLmluZGV4ZGF0YTwvaDM+XG4gICAgICAgICAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtpbmRleGRhdGFdPVwid29ya0l0ZW1JbmRleGRhdGFcIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2NrZWQ7IGVsc2UgdW5sb2NrZWRBY3Rpb25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1hY3Rpb25zXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhYWN0aW9uUHJvY2Vzc2luZy5jbG9zZWR9XCI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdW5sb2NrXCIgKGNsaWNrKT1cInVubG9ja1dvcmtJdGVtKClcIiB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5kZXBlcnNvbmFsaXplPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1zYXZlXCIgKGNsaWNrKT1cInNhdmVXb3JrSXRlbURhdGEoKVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtJdGVtPy5mb3JtICYmICFmb3JtU3RhdGU/LmludmFsaWQgJiYgZm9ybVN0YXRlPy5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBwcmV2ZW50Q2xpY2tUaHJvdWdofVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1leGVjdXRlXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB3b3JrSXRlbS5hY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5Q29kZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZVdvcmtJdGVtQWN0aW9uKGFjdGlvbilcIiBbbmdDbGFzc109XCJ7ZXh0OiBhY3Rpb24udXJsfVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCEhZm9ybVN0YXRlICYmIGZvcm1TdGF0ZT8uaW52YWxpZCkgfHwgIWFjdGlvbi5mZWFzaWJsZVwiPnt7YWN0aW9uLnRpdGxlfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5sb2NrZWRBY3Rpb25zPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtYWN0aW9uc1wiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogIWFjdGlvblByb2Nlc3NpbmcuY2xvc2VkIHx8ICF3b3JrSXRlbX1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbG9ja1wiIChjbGljayk9XCJsb2NrV29ya0l0ZW0oKVwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLnBlcnNvbmFsaXplPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gaGlzdG9yeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2hpc3RvcnknLCBsYWJlbDogJ2VvLnByb2Nlc3MuZGV0YWlscy50YWIucHJvZ3Jlc3MnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsIHByb2Nlc3MtaGlzdG9yeVwiPlxuICAgICAgICAgICAgPGVvLXByb2Nlc3MtaGlzdG9yeSBbaGlzdG9yeV09XCJoaXN0b3J5XCI+PC9lby1wcm9jZXNzLWhpc3Rvcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBhdHRhY2htZW50cyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2ZpbGUnLCBsYWJlbDogJ2VvLnByb2Nlc3MuZGV0YWlscy50YWIuYXR0YWNobWVudHMnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsIHByb2Nlc3MtZmlsZXNcIj5cbiAgICAgICAgICAgIDxlby1wcm9jZXNzLWZpbGUgW3Byb2Nlc3NGaWxlXT1cIndvcmtJdGVtPy5maWxlXCIgW3Blcm1pc3Npb25zXT1cIndvcmtJdGVtPy5maWxlRW50cnlQZXJtaXNzaW9uc1wiXG4gICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIiFmaWxlc0FkZGluZy5jbG9zZWRcIiBbY2xpcGJvYXJkXT1cImNsaXBib2FyZFwiIFtlZGl0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkQ29udGVudEZpbGVJZF09XCJzZWxlY3RlZENvbnRlbnRGaWxlSWRcIlxuICAgICAgICAgICAgICAob25PcGVuV29ya0l0ZW1Db250ZW50SW5Db250ZXh0KT1cIm9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvbk9wZW5Xb3JrSXRlbUNvbnRlbnQpPVwib3BlbldvcmtJdGVtQ29udGVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG9uUmVtb3ZlV29ya0l0ZW1Db250ZW50KT1cInJlbW92ZVdvcmtJdGVtQ29udGVudCgkZXZlbnQpXCIgKG9uUGFzdGVQcm9jZXNzRmlsZSk9XCJhZGRGcm9tQ2xpcGJvYXJkKClcIj5cbiAgICAgICAgICAgIDwvZW8tcHJvY2Vzcy1maWxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtdGFicz5cblxuICAgIDwhLS0gYm9keSB3aGVuIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gb3IgYSByZXN1Ym1pc3Npb24gLS0+XG4gICAgPG5nLXRlbXBsYXRlICNkbXNUYXNrPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRldGFpbHMudGFiLnRhc2suZGVzY3JpcHRpb248L2gzPlxuICAgICAgICAgICAgPGRpdj57e3NldHRpbmdzPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gYWN0aW9ucyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpdGVtIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1hY3Rpb25zXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhYWN0aW9uUHJvY2Vzc2luZy5jbG9zZWR9XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1jb25maXJtXCIgW2Rpc2FibGVkXT1cInByZXZlbnRDbGlja1Rocm91Z2hcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUluYm94SXRlbSgpXCI+e3tzZXR0aW5ncz8uYWN0aW9uVGl0bGV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxlby1lcnJvci1tZXNzYWdlIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+Il19
@@ -28,7 +28,6 @@ export * from './settings/index';
28
28
  export * from './shortcuts/index';
29
29
  export * from './split/index';
30
30
  export * from './stored-query/index';
31
- export * from './tab-container/index';
32
31
  export * from './tree/index';
33
32
  export * from './ui/index';
34
33
  export * from './undock-split/undock-split.component';
@@ -36,4 +35,4 @@ export * from './undock-split/undock-split.service';
36
35
  export * from './undock-split/undock-state.interface';
37
36
  export * from './upload-overlay/upload-overlay.component';
38
37
  export * from './util/index';
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZW8tZnJhbWV3b3JrLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbnMvYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1zaGVsbC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZyYW1lL2ZyYW1lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2N0YS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1lbGVtZW50cy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvc29ydGFibGUvb3JkZXItYnkucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZyYW1lL2ZyYW1lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzdC1jb250YWluZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9tZWRpYS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1kZXRhaWxzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LWZvcm0vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3Qtc3RhdGUtZGV0YWlscy9vYmplY3Qtc3RhdGUtZGV0YWlscy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWN5Y2xlYmluLWRldGFpbHMvcmVjeWNsZWJpbi1kZXRhaWxzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3MvZGV0YWlscy9wcm9jZXNzLWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvY2Vzcy9oaXN0b3J5L3Byb2Nlc3MtaGlzdG9yeS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9jZXNzL3Byb2Nlc3MtZmlsZS9wcm9jZXNzLWZpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcXVpY2stc2VhcmNoL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzdWx0LWxpc3QvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Nob3J0Y3V0cy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NwbGl0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVkLXF1ZXJ5L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdGFiLWNvbnRhaW5lci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi91aS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3VuZG9jay1zcGxpdC91bmRvY2stc3BsaXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW5kb2NrLXNwbGl0L3VuZG9jay1zcGxpdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdW5kb2NrLXNwbGl0L3VuZG9jay1zdGF0ZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtb3ZlcmxheS91cGxvYWQtb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsL2luZGV4JztcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VvLWZyYW1ld29yay5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FjY29yZGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb25zL2FuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHAtc2hlbGwvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mcmFtZS9mcmFtZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jdGEvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZWxlbWVudHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsL3NvcnRhYmxlL29yZGVyLWJ5LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mcmFtZS9mcmFtZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaW5ib3gtZGV0YWlscy9pbmJveC1kZXRhaWxzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3QtY29udGFpbmVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbWVkaWEvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QtZGV0YWlscy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1mb3JtL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LXN0YXRlLWRldGFpbHMvb2JqZWN0LXN0YXRlLWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVjeWNsZWJpbi1kZXRhaWxzL3JlY3ljbGViaW4tZGV0YWlscy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9jZXNzL2RldGFpbHMvcHJvY2Vzcy1kZXRhaWxzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3MvaGlzdG9yeS9wcm9jZXNzLWhpc3RvcnkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvY2Vzcy9wcm9jZXNzLWZpbGUvcHJvY2Vzcy1maWxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWNrLXNlYXJjaC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3VsdC1saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2V0dGluZ3MvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zaG9ydGN1dHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGxpdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlZC1xdWVyeS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi91aS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3VuZG9jay1zcGxpdC91bmRvY2stc3BsaXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW5kb2NrLXNwbGl0L3VuZG9jay1zcGxpdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdW5kb2NrLXNwbGl0L3VuZG9jay1zdGF0ZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtb3ZlcmxheS91cGxvYWQtb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsL2luZGV4JztcbiJdfQ==