@skyux/list-builder 6.0.0-beta.4 → 6.0.0-beta.7

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 (153) hide show
  1. package/documentation.json +774 -531
  2. package/esm2020/lib/modules/list/list-data-request.model.mjs +4 -1
  3. package/esm2020/lib/modules/list/list-data-response.model.mjs +4 -1
  4. package/esm2020/lib/modules/list/list-data.provider.mjs +2 -1
  5. package/esm2020/lib/modules/list/list-paging.component.mjs +2 -1
  6. package/esm2020/lib/modules/list/list-view.component.mjs +2 -1
  7. package/esm2020/lib/modules/list/list.component.mjs +14 -4
  8. package/esm2020/lib/modules/list/list.module.mjs +4 -1
  9. package/esm2020/lib/modules/list/state/filters/filters.orchestrator.mjs +2 -1
  10. package/esm2020/lib/modules/list/state/filters/update.action.mjs +2 -1
  11. package/esm2020/lib/modules/list/state/items/items.orchestrator.mjs +2 -1
  12. package/esm2020/lib/modules/list/state/items/load.action.mjs +2 -1
  13. package/esm2020/lib/modules/list/state/items/set-items-selected.action.mjs +2 -1
  14. package/esm2020/lib/modules/list/state/items/set-loading.action.mjs +2 -1
  15. package/esm2020/lib/modules/list/state/list-state-action.type.mjs +1 -1
  16. package/esm2020/lib/modules/list/state/list-state.model.mjs +2 -1
  17. package/esm2020/lib/modules/list/state/list-state.rxstate.mjs +3 -1
  18. package/esm2020/lib/modules/list/state/list-state.state-node.mjs +2 -1
  19. package/esm2020/lib/modules/list/state/paging/paging.model.mjs +2 -1
  20. package/esm2020/lib/modules/list/state/paging/paging.orchestrator.mjs +2 -1
  21. package/esm2020/lib/modules/list/state/paging/set-items-per-page.action.mjs +2 -1
  22. package/esm2020/lib/modules/list/state/paging/set-max-pages.action.mjs +2 -1
  23. package/esm2020/lib/modules/list/state/paging/set-page-number.action.mjs +2 -1
  24. package/esm2020/lib/modules/list/state/search/search.model.mjs +2 -1
  25. package/esm2020/lib/modules/list/state/search/search.orchestrator.mjs +2 -1
  26. package/esm2020/lib/modules/list/state/search/set-field-selectors.action.mjs +2 -1
  27. package/esm2020/lib/modules/list/state/search/set-functions.action.mjs +2 -1
  28. package/esm2020/lib/modules/list/state/search/set-options.action.mjs +2 -1
  29. package/esm2020/lib/modules/list/state/search/set-search-text.action.mjs +2 -1
  30. package/esm2020/lib/modules/list/state/selected/load.action.mjs +2 -1
  31. package/esm2020/lib/modules/list/state/selected/selected.model.mjs +2 -1
  32. package/esm2020/lib/modules/list/state/selected/selected.orchestrator.mjs +2 -1
  33. package/esm2020/lib/modules/list/state/selected/set-item-selected.action.mjs +2 -1
  34. package/esm2020/lib/modules/list/state/selected/set-items-selected.action.mjs +2 -1
  35. package/esm2020/lib/modules/list/state/selected/set-loading.action.mjs +2 -1
  36. package/esm2020/lib/modules/list/state/sort/label.model.mjs +2 -1
  37. package/esm2020/lib/modules/list/state/sort/set-available.action.mjs +2 -1
  38. package/esm2020/lib/modules/list/state/sort/set-field-selectors.action.mjs +2 -1
  39. package/esm2020/lib/modules/list/state/sort/set-global.action.mjs +2 -1
  40. package/esm2020/lib/modules/list/state/sort/sort.model.mjs +2 -1
  41. package/esm2020/lib/modules/list/state/sort/sort.orchestrator.mjs +2 -1
  42. package/esm2020/lib/modules/list/state/toolbar/disable.action.mjs +2 -1
  43. package/esm2020/lib/modules/list/state/toolbar/load.action.mjs +2 -1
  44. package/esm2020/lib/modules/list/state/toolbar/remove.action.mjs +2 -1
  45. package/esm2020/lib/modules/list/state/toolbar/set-exists.action.mjs +2 -1
  46. package/esm2020/lib/modules/list/state/toolbar/set-type.action.mjs +2 -1
  47. package/esm2020/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.mjs +2 -1
  48. package/esm2020/lib/modules/list/state/toolbar/toolbar-item.model.mjs +2 -1
  49. package/esm2020/lib/modules/list/state/toolbar/toolbar.model.mjs +2 -1
  50. package/esm2020/lib/modules/list/state/toolbar/toolbar.orchestrator.mjs +2 -1
  51. package/esm2020/lib/modules/list/state/views/load.action.mjs +2 -1
  52. package/esm2020/lib/modules/list/state/views/set-active.action.mjs +2 -1
  53. package/esm2020/lib/modules/list/state/views/view.model.mjs +2 -1
  54. package/esm2020/lib/modules/list/state/views/views.model.mjs +2 -1
  55. package/esm2020/lib/modules/list/state/views/views.orchestrator.mjs +2 -1
  56. package/esm2020/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.mjs +4 -1
  57. package/esm2020/lib/modules/list-filters/list-filter-button.component.mjs +2 -1
  58. package/esm2020/lib/modules/list-filters/list-filter-inline-item.component.mjs +2 -1
  59. package/esm2020/lib/modules/list-filters/list-filter-inline.component.mjs +2 -1
  60. package/esm2020/lib/modules/list-filters/list-filter-summary.component.mjs +2 -1
  61. package/esm2020/lib/modules/list-filters/list-filters.module.mjs +4 -1
  62. package/esm2020/lib/modules/list-paging/list-paging.component.mjs +15 -7
  63. package/esm2020/lib/modules/list-paging/list-paging.module.mjs +4 -1
  64. package/esm2020/lib/modules/list-toolbar/list-multiselect-toolbar.component.mjs +2 -1
  65. package/esm2020/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.mjs +2 -1
  66. package/esm2020/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.mjs +1 -1
  67. package/esm2020/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.mjs +1 -1
  68. package/esm2020/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.mjs +2 -1
  69. package/esm2020/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.mjs +4 -1
  70. package/esm2020/lib/modules/list-toolbar/list-toolbar-item.component.mjs +2 -1
  71. package/esm2020/lib/modules/list-toolbar/list-toolbar-search-actions.component.mjs +2 -1
  72. package/esm2020/lib/modules/list-toolbar/list-toolbar-sort.component.mjs +2 -1
  73. package/esm2020/lib/modules/list-toolbar/list-toolbar-view-actions.component.mjs +13 -3
  74. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +20 -11
  75. package/esm2020/lib/modules/list-toolbar/list-toolbar.module.mjs +4 -1
  76. package/fesm2015/skyux-list-builder.mjs +135 -21
  77. package/fesm2015/skyux-list-builder.mjs.map +1 -1
  78. package/fesm2020/skyux-list-builder.mjs +135 -21
  79. package/fesm2020/skyux-list-builder.mjs.map +1 -1
  80. package/lib/modules/list/list-data-request.model.d.ts +3 -0
  81. package/lib/modules/list/list-data-response.model.d.ts +3 -0
  82. package/lib/modules/list/list-data.provider.d.ts +1 -0
  83. package/lib/modules/list/list-paging.component.d.ts +1 -0
  84. package/lib/modules/list/list-view.component.d.ts +1 -0
  85. package/lib/modules/list/list.component.d.ts +5 -1
  86. package/lib/modules/list/list.module.d.ts +3 -0
  87. package/lib/modules/list/state/filters/filters.orchestrator.d.ts +1 -0
  88. package/lib/modules/list/state/filters/update.action.d.ts +1 -0
  89. package/lib/modules/list/state/items/items.orchestrator.d.ts +1 -0
  90. package/lib/modules/list/state/items/load.action.d.ts +1 -0
  91. package/lib/modules/list/state/items/set-items-selected.action.d.ts +1 -0
  92. package/lib/modules/list/state/items/set-loading.action.d.ts +1 -0
  93. package/lib/modules/list/state/list-state-action.type.d.ts +1 -0
  94. package/lib/modules/list/state/list-state.model.d.ts +1 -0
  95. package/lib/modules/list/state/list-state.rxstate.d.ts +2 -0
  96. package/lib/modules/list/state/list-state.state-node.d.ts +1 -0
  97. package/lib/modules/list/state/paging/paging.model.d.ts +1 -0
  98. package/lib/modules/list/state/paging/paging.orchestrator.d.ts +1 -0
  99. package/lib/modules/list/state/paging/set-items-per-page.action.d.ts +1 -0
  100. package/lib/modules/list/state/paging/set-max-pages.action.d.ts +1 -0
  101. package/lib/modules/list/state/paging/set-page-number.action.d.ts +1 -0
  102. package/lib/modules/list/state/search/search.model.d.ts +1 -0
  103. package/lib/modules/list/state/search/search.orchestrator.d.ts +1 -0
  104. package/lib/modules/list/state/search/set-field-selectors.action.d.ts +1 -0
  105. package/lib/modules/list/state/search/set-functions.action.d.ts +1 -0
  106. package/lib/modules/list/state/search/set-options.action.d.ts +1 -0
  107. package/lib/modules/list/state/search/set-search-text.action.d.ts +1 -0
  108. package/lib/modules/list/state/selected/load.action.d.ts +1 -0
  109. package/lib/modules/list/state/selected/selected.model.d.ts +1 -0
  110. package/lib/modules/list/state/selected/selected.orchestrator.d.ts +1 -0
  111. package/lib/modules/list/state/selected/set-item-selected.action.d.ts +1 -0
  112. package/lib/modules/list/state/selected/set-items-selected.action.d.ts +1 -0
  113. package/lib/modules/list/state/selected/set-loading.action.d.ts +1 -0
  114. package/lib/modules/list/state/sort/label.model.d.ts +1 -0
  115. package/lib/modules/list/state/sort/set-available.action.d.ts +1 -0
  116. package/lib/modules/list/state/sort/set-field-selectors.action.d.ts +1 -0
  117. package/lib/modules/list/state/sort/set-global.action.d.ts +1 -0
  118. package/lib/modules/list/state/sort/sort.model.d.ts +1 -0
  119. package/lib/modules/list/state/sort/sort.orchestrator.d.ts +1 -0
  120. package/lib/modules/list/state/toolbar/disable.action.d.ts +1 -0
  121. package/lib/modules/list/state/toolbar/load.action.d.ts +1 -0
  122. package/lib/modules/list/state/toolbar/remove.action.d.ts +1 -0
  123. package/lib/modules/list/state/toolbar/set-exists.action.d.ts +1 -0
  124. package/lib/modules/list/state/toolbar/set-type.action.d.ts +1 -0
  125. package/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.d.ts +1 -0
  126. package/lib/modules/list/state/toolbar/toolbar-item.model.d.ts +1 -0
  127. package/lib/modules/list/state/toolbar/toolbar.model.d.ts +1 -0
  128. package/lib/modules/list/state/toolbar/toolbar.orchestrator.d.ts +1 -0
  129. package/lib/modules/list/state/views/load.action.d.ts +1 -0
  130. package/lib/modules/list/state/views/set-active.action.d.ts +1 -0
  131. package/lib/modules/list/state/views/view.model.d.ts +1 -0
  132. package/lib/modules/list/state/views/views.model.d.ts +1 -0
  133. package/lib/modules/list/state/views/views.orchestrator.d.ts +1 -0
  134. package/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.d.ts +3 -0
  135. package/lib/modules/list-filters/list-filter-button.component.d.ts +1 -0
  136. package/lib/modules/list-filters/list-filter-inline-item.component.d.ts +1 -0
  137. package/lib/modules/list-filters/list-filter-inline.component.d.ts +1 -0
  138. package/lib/modules/list-filters/list-filter-summary.component.d.ts +1 -0
  139. package/lib/modules/list-filters/list-filters.module.d.ts +3 -0
  140. package/lib/modules/list-paging/list-paging.component.d.ts +3 -1
  141. package/lib/modules/list-paging/list-paging.module.d.ts +3 -0
  142. package/lib/modules/list-toolbar/list-multiselect-toolbar.component.d.ts +1 -0
  143. package/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.d.ts +1 -0
  144. package/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.d.ts +1 -0
  145. package/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.d.ts +1 -0
  146. package/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.d.ts +3 -0
  147. package/lib/modules/list-toolbar/list-toolbar-item.component.d.ts +1 -0
  148. package/lib/modules/list-toolbar/list-toolbar-search-actions.component.d.ts +1 -0
  149. package/lib/modules/list-toolbar/list-toolbar-sort.component.d.ts +1 -0
  150. package/lib/modules/list-toolbar/list-toolbar-view-actions.component.d.ts +3 -0
  151. package/lib/modules/list-toolbar/list-toolbar.component.d.ts +4 -1
  152. package/lib/modules/list-toolbar/list-toolbar.module.d.ts +3 -0
  153. package/package.json +10 -9
@@ -1,4 +1,5 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, QueryList, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { SkyLogService } from '@skyux/core';
2
3
  import { getValue } from '@skyux/list-builder-common';
3
4
  import { SkySearchComponent } from '@skyux/lookup';
4
5
  import { Subject, combineLatest as observableCombineLatest, } from 'rxjs';
@@ -24,18 +25,20 @@ import * as i1 from "../list/state/list-state.state-node";
24
25
  import * as i2 from "../list/state/list-state.rxstate";
25
26
  import * as i3 from "./state/toolbar-state.state-node";
26
27
  import * as i4 from "./state/toolbar-state.rxstate";
27
- import * as i5 from "@skyux/layout";
28
- import * as i6 from "./list-toolbar-item-renderer.component";
29
- import * as i7 from "./list-multiselect-toolbar.component";
30
- import * as i8 from "@skyux/lookup";
31
- import * as i9 from "@skyux/lists";
32
- import * as i10 from "@angular/common";
28
+ import * as i5 from "@skyux/core";
29
+ import * as i6 from "@skyux/layout";
30
+ import * as i7 from "./list-toolbar-item-renderer.component";
31
+ import * as i8 from "./list-multiselect-toolbar.component";
32
+ import * as i9 from "@skyux/lookup";
33
+ import * as i10 from "@skyux/lists";
34
+ import * as i11 from "@angular/common";
33
35
  let nextId = 0;
34
36
  /**
35
37
  * Displays a toolbar for a SKY UX-themed list of data.
38
+ * @deprecated
36
39
  */
37
40
  export class SkyListToolbarComponent {
38
- constructor(changeDetector, state, dispatcher, toolbarState, toolbarDispatcher) {
41
+ constructor(changeDetector, state, dispatcher, toolbarState, toolbarDispatcher, logger) {
39
42
  this.changeDetector = changeDetector;
40
43
  this.state = state;
41
44
  this.dispatcher = dispatcher;
@@ -57,6 +60,7 @@ export class SkyListToolbarComponent {
57
60
  /**
58
61
  * Fires when users submit a search.
59
62
  * @internal
63
+ * @deprecated
60
64
  */
61
65
  this.searchApplied = new Subject();
62
66
  this.customItemIds = [];
@@ -64,6 +68,11 @@ export class SkyListToolbarComponent {
64
68
  this.inlineFiltersItemToolbarIndex = 5000;
65
69
  this.sortSelectorItemToolbarIndex = 6000;
66
70
  this.ngUnsubscribe = new Subject();
71
+ logger.deprecated('SkyListToolbarComponent', {
72
+ deprecationMajorVersion: 6,
73
+ moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/data-manager',
74
+ replacementRecommendation: 'Use data manager instead.',
75
+ });
67
76
  }
68
77
  /**
69
78
  * Indicates whether to use the in-memory search.
@@ -286,12 +295,12 @@ export class SkyListToolbarComponent {
286
295
  });
287
296
  }
288
297
  }
289
- SkyListToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyListToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ListState }, { token: i2.ListStateDispatcher }, { token: i3.ListToolbarState }, { token: i4.ListToolbarStateDispatcher }], target: i0.ɵɵFactoryTarget.Component });
298
+ SkyListToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyListToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ListState }, { token: i2.ListStateDispatcher }, { token: i3.ListToolbarState }, { token: i4.ListToolbarStateDispatcher }, { token: i5.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
290
299
  SkyListToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyListToolbarComponent, selector: "sky-list-toolbar", inputs: { inMemorySearchEnabled: "inMemorySearchEnabled", placeholder: "placeholder", searchEnabled: "searchEnabled", sortSelectorEnabled: "sortSelectorEnabled", toolbarType: "toolbarType", searchText: "searchText" }, providers: [
291
300
  ListToolbarState,
292
301
  ListToolbarStateDispatcher,
293
302
  ListToolbarStateModel,
294
- ], queries: [{ propertyName: "toolbarItems", predicate: SkyListToolbarItemComponent }, { propertyName: "toolbarSorts", predicate: SkyListToolbarSortComponent }, { propertyName: "filterSummary", predicate: SkyListFilterSummaryComponent }, { propertyName: "inlineFilter", predicate: SkyListFilterInlineComponent }, { propertyName: "viewActions", predicate: SkyListToolbarViewActionsComponent }], viewQueries: [{ propertyName: "searchComponent", first: true, predicate: SkySearchComponent, descendants: true, read: SkySearchComponent }, { propertyName: "searchTemplate", first: true, predicate: ["search"], descendants: true, read: TemplateRef, static: true }, { propertyName: "sortSelectorTemplate", first: true, predicate: ["sortSelector"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineFilterButtonTemplate", first: true, predicate: ["inlineFilterButton"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-list-toolbar-container\">\n <sky-toolbar *ngIf=\"(type | async) !== 'search'\">\n <sky-toolbar-section>\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n\n <sky-toolbar-section\n *ngIf=\"showFilterSummary && (hasAppliedFilters | async)\"\n >\n <ng-content select=\"sky-list-filter-summary\"> </ng-content>\n </sky-toolbar-section>\n </sky-toolbar>\n\n <div\n *ngIf=\"\n (type | async) === 'search' &&\n ((isSearchEnabled | async) || hasAdditionalToolbarSection)\n \"\n class=\"sky-list-toolbar-search\"\n >\n <sky-toolbar>\n <sky-toolbar-section *ngIf=\"isSearchEnabled | async\">\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer\n sky-cmp-id=\"search\"\n [template]=\"search\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n </sky-toolbar-section>\n <sky-toolbar-section [hidden]=\"!hasAdditionalToolbarSection\">\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n *ngIf=\"item.id !== 'search'\"\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"isFilterBarDisplayed\"\n [attr.aria-labelledby]=\"filterButtonId\"\n [id]=\"listFilterInlineId\"\n >\n <ng-content select=\"sky-list-filter-inline\"> </ng-content>\n </div>\n <sky-list-multiselect-toolbar *ngIf=\"isMultiselectEnabled | async\">\n </sky-list-multiselect-toolbar>\n</div>\n\n<ng-template #search>\n <div *ngIf=\"isSearchEnabled | async\" class=\"sky-list-toolbar-search-wrapper\">\n <sky-search\n [disabled]=\"isToolbarDisabled\"\n [expandMode]=\"(type | async) === 'search' ? 'fit' : 'responsive'\"\n [placeholderText]=\"placeholder\"\n [searchText]=\"searchTextInput | async\"\n (searchApply)=\"updateSearchText($event)\"\n >\n </sky-search>\n <ng-content select=\"sky-list-toolbar-search-actions\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortSelector>\n <div\n *ngIf=\"\n (isSortSelectorEnabled | async) && (sortSelectors | async).length > 0\n \"\n class=\"sky-toolbar-item-sort-container\"\n >\n <sky-sort [showButtonText]=\"true\">\n <sky-sort-item\n *ngFor=\"let item of sortSelectors | async\"\n [active]=\"item.selected\"\n (itemSelect)=\"setSort(item.sort)\"\n >\n {{ item.sort.text }}\n </sky-sort-item>\n </sky-sort>\n </div>\n</ng-template>\n\n<ng-template #inlineFilterButton>\n <sky-filter-button\n [active]=\"hasAppliedFilters | async\"\n [ariaControls]=\"filterButtonAriaControls\"\n [ariaExpanded]=\"inlineFilterBarExpanded\"\n [disabled]=\"isToolbarDisabled\"\n [filterButtonId]=\"filterButtonId\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"inlineFilterButtonClick()\"\n >\n </sky-filter-button>\n</ng-template>\n", styles: [".sky-list-toolbar-search-wrapper{display:flex}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-dismiss-absolute{padding:0;position:static}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-container{position:relative;height:100%}.sky-list-toolbar-search-wrapper ::ng-deep sky-search{flex:1 1 auto}.sky-list-toolbar-search-wrapper ::ng-deep sky-list-toolbar-search-actions{flex:0 0 auto;z-index:1}.sky-list-toolbar-container ::ng-deep .sky-toolbar-section-items sky-toolbar-item{flex:0 1 auto;align-self:flex-start}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section{padding-top:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section-items{display:block;width:100%}.sky-list-toolbar-search ::ng-deep .sky-toolbar-item{margin:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-container,.sky-list-toolbar-search ::ng-deep .sky-search-dismiss-absolute{background-color:#eeeeef}.sky-list-toolbar-search ::ng-deep input[type=text]:disabled,.sky-list-toolbar-search ::ng-deep .sky-search-btn:disabled{background-color:#cdcfd2;opacity:1}.sky-list-toolbar-container ::ng-deep sky-toolbar-item[sky-toolbar-id=sort-selector] .sky-toolbar-item{margin-right:0}.sky-list-toolbar-container ::ng-deep sky-checkbox{position:relative;top:-2px}\n"], components: [{ type: i5.λ37, selector: "sky-toolbar" }, { type: i5.λ38, selector: "sky-toolbar-section" }, { type: i5.λ39, selector: "sky-toolbar-item" }, { type: i6.SkyListToolbarItemRendererComponent, selector: "sky-list-toolbar-item-renderer", inputs: ["template"] }, { type: i5.λ40, selector: "sky-toolbar-view-actions" }, { type: i7.SkyListMultiselectToolbarComponent, selector: "sky-list-multiselect-toolbar", inputs: ["showOnlySelected"] }, { type: i8.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { type: i9.λ14, selector: "sky-sort", inputs: ["showButtonText"] }, { type: i9.λ13, selector: "sky-sort-item", inputs: ["active"], outputs: ["itemSelect"] }, { type: i9.λ1, selector: "sky-filter-button", inputs: ["filterButtonId", "ariaControls", "ariaExpanded", "active", "disabled", "showButtonText"], outputs: ["filterButtonClick"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i10.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
303
+ ], queries: [{ propertyName: "toolbarItems", predicate: SkyListToolbarItemComponent }, { propertyName: "toolbarSorts", predicate: SkyListToolbarSortComponent }, { propertyName: "filterSummary", predicate: SkyListFilterSummaryComponent }, { propertyName: "inlineFilter", predicate: SkyListFilterInlineComponent }, { propertyName: "viewActions", predicate: SkyListToolbarViewActionsComponent }], viewQueries: [{ propertyName: "searchComponent", first: true, predicate: SkySearchComponent, descendants: true, read: SkySearchComponent }, { propertyName: "searchTemplate", first: true, predicate: ["search"], descendants: true, read: TemplateRef, static: true }, { propertyName: "sortSelectorTemplate", first: true, predicate: ["sortSelector"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineFilterButtonTemplate", first: true, predicate: ["inlineFilterButton"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-list-toolbar-container\">\n <sky-toolbar *ngIf=\"(type | async) !== 'search'\">\n <sky-toolbar-section>\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n\n <sky-toolbar-section\n *ngIf=\"showFilterSummary && (hasAppliedFilters | async)\"\n >\n <ng-content select=\"sky-list-filter-summary\"> </ng-content>\n </sky-toolbar-section>\n </sky-toolbar>\n\n <div\n *ngIf=\"\n (type | async) === 'search' &&\n ((isSearchEnabled | async) || hasAdditionalToolbarSection)\n \"\n class=\"sky-list-toolbar-search\"\n >\n <sky-toolbar>\n <sky-toolbar-section *ngIf=\"isSearchEnabled | async\">\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer\n sky-cmp-id=\"search\"\n [template]=\"search\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n </sky-toolbar-section>\n <sky-toolbar-section [hidden]=\"!hasAdditionalToolbarSection\">\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n *ngIf=\"item.id !== 'search'\"\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"isFilterBarDisplayed\"\n [attr.aria-labelledby]=\"filterButtonId\"\n [id]=\"listFilterInlineId\"\n >\n <ng-content select=\"sky-list-filter-inline\"> </ng-content>\n </div>\n <sky-list-multiselect-toolbar *ngIf=\"isMultiselectEnabled | async\">\n </sky-list-multiselect-toolbar>\n</div>\n\n<ng-template #search>\n <div *ngIf=\"isSearchEnabled | async\" class=\"sky-list-toolbar-search-wrapper\">\n <sky-search\n [disabled]=\"isToolbarDisabled\"\n [expandMode]=\"(type | async) === 'search' ? 'fit' : 'responsive'\"\n [placeholderText]=\"placeholder\"\n [searchText]=\"searchTextInput | async\"\n (searchApply)=\"updateSearchText($event)\"\n >\n </sky-search>\n <ng-content select=\"sky-list-toolbar-search-actions\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortSelector>\n <div\n *ngIf=\"\n (isSortSelectorEnabled | async) && (sortSelectors | async).length > 0\n \"\n class=\"sky-toolbar-item-sort-container\"\n >\n <sky-sort [showButtonText]=\"true\">\n <sky-sort-item\n *ngFor=\"let item of sortSelectors | async\"\n [active]=\"item.selected\"\n (itemSelect)=\"setSort(item.sort)\"\n >\n {{ item.sort.text }}\n </sky-sort-item>\n </sky-sort>\n </div>\n</ng-template>\n\n<ng-template #inlineFilterButton>\n <sky-filter-button\n [active]=\"hasAppliedFilters | async\"\n [ariaControls]=\"filterButtonAriaControls\"\n [ariaExpanded]=\"inlineFilterBarExpanded\"\n [disabled]=\"isToolbarDisabled\"\n [filterButtonId]=\"filterButtonId\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"inlineFilterButtonClick()\"\n >\n </sky-filter-button>\n</ng-template>\n", styles: [".sky-list-toolbar-search-wrapper{display:flex}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-dismiss-absolute{padding:0;position:static}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-container{position:relative;height:100%}.sky-list-toolbar-search-wrapper ::ng-deep sky-search{flex:1 1 auto}.sky-list-toolbar-search-wrapper ::ng-deep sky-list-toolbar-search-actions{flex:0 0 auto;z-index:1}.sky-list-toolbar-container ::ng-deep .sky-toolbar-section-items sky-toolbar-item{flex:0 1 auto;align-self:flex-start}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section{padding-top:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section-items{display:block;width:100%}.sky-list-toolbar-search ::ng-deep .sky-toolbar-item{margin:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-container,.sky-list-toolbar-search ::ng-deep .sky-search-dismiss-absolute{background-color:#eeeeef}.sky-list-toolbar-search ::ng-deep input[type=text]:disabled,.sky-list-toolbar-search ::ng-deep .sky-search-btn:disabled{background-color:#cdcfd2;opacity:1}.sky-list-toolbar-container ::ng-deep sky-toolbar-item[sky-toolbar-id=sort-selector] .sky-toolbar-item{margin-right:0}.sky-list-toolbar-container ::ng-deep sky-checkbox{position:relative;top:-2px}\n"], components: [{ type: i6.λ37, selector: "sky-toolbar" }, { type: i6.λ38, selector: "sky-toolbar-section" }, { type: i6.λ39, selector: "sky-toolbar-item" }, { type: i7.SkyListToolbarItemRendererComponent, selector: "sky-list-toolbar-item-renderer", inputs: ["template"] }, { type: i6.λ40, selector: "sky-toolbar-view-actions" }, { type: i8.SkyListMultiselectToolbarComponent, selector: "sky-list-multiselect-toolbar", inputs: ["showOnlySelected"] }, { type: i9.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { type: i10.λ14, selector: "sky-sort", inputs: ["showButtonText"] }, { type: i10.λ13, selector: "sky-sort-item", inputs: ["active"], outputs: ["itemSelect"] }, { type: i10.λ1, selector: "sky-filter-button", inputs: ["filterButtonId", "ariaControls", "ariaExpanded", "active", "disabled", "showButtonText"], outputs: ["filterButtonClick"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i11.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
295
304
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyListToolbarComponent, decorators: [{
296
305
  type: Component,
297
306
  args: [{ selector: 'sky-list-toolbar', providers: [
@@ -299,7 +308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
299
308
  ListToolbarStateDispatcher,
300
309
  ListToolbarStateModel,
301
310
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-list-toolbar-container\">\n <sky-toolbar *ngIf=\"(type | async) !== 'search'\">\n <sky-toolbar-section>\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n\n <sky-toolbar-section\n *ngIf=\"showFilterSummary && (hasAppliedFilters | async)\"\n >\n <ng-content select=\"sky-list-filter-summary\"> </ng-content>\n </sky-toolbar-section>\n </sky-toolbar>\n\n <div\n *ngIf=\"\n (type | async) === 'search' &&\n ((isSearchEnabled | async) || hasAdditionalToolbarSection)\n \"\n class=\"sky-list-toolbar-search\"\n >\n <sky-toolbar>\n <sky-toolbar-section *ngIf=\"isSearchEnabled | async\">\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer\n sky-cmp-id=\"search\"\n [template]=\"search\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n </sky-toolbar-section>\n <sky-toolbar-section [hidden]=\"!hasAdditionalToolbarSection\">\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item\n *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n *ngIf=\"item.id !== 'search'\"\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content select=\"sky-list-toolbar-view-actions\"> </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"isFilterBarDisplayed\"\n [attr.aria-labelledby]=\"filterButtonId\"\n [id]=\"listFilterInlineId\"\n >\n <ng-content select=\"sky-list-filter-inline\"> </ng-content>\n </div>\n <sky-list-multiselect-toolbar *ngIf=\"isMultiselectEnabled | async\">\n </sky-list-multiselect-toolbar>\n</div>\n\n<ng-template #search>\n <div *ngIf=\"isSearchEnabled | async\" class=\"sky-list-toolbar-search-wrapper\">\n <sky-search\n [disabled]=\"isToolbarDisabled\"\n [expandMode]=\"(type | async) === 'search' ? 'fit' : 'responsive'\"\n [placeholderText]=\"placeholder\"\n [searchText]=\"searchTextInput | async\"\n (searchApply)=\"updateSearchText($event)\"\n >\n </sky-search>\n <ng-content select=\"sky-list-toolbar-search-actions\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortSelector>\n <div\n *ngIf=\"\n (isSortSelectorEnabled | async) && (sortSelectors | async).length > 0\n \"\n class=\"sky-toolbar-item-sort-container\"\n >\n <sky-sort [showButtonText]=\"true\">\n <sky-sort-item\n *ngFor=\"let item of sortSelectors | async\"\n [active]=\"item.selected\"\n (itemSelect)=\"setSort(item.sort)\"\n >\n {{ item.sort.text }}\n </sky-sort-item>\n </sky-sort>\n </div>\n</ng-template>\n\n<ng-template #inlineFilterButton>\n <sky-filter-button\n [active]=\"hasAppliedFilters | async\"\n [ariaControls]=\"filterButtonAriaControls\"\n [ariaExpanded]=\"inlineFilterBarExpanded\"\n [disabled]=\"isToolbarDisabled\"\n [filterButtonId]=\"filterButtonId\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"inlineFilterButtonClick()\"\n >\n </sky-filter-button>\n</ng-template>\n", styles: [".sky-list-toolbar-search-wrapper{display:flex}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-dismiss-absolute{padding:0;position:static}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-container{position:relative;height:100%}.sky-list-toolbar-search-wrapper ::ng-deep sky-search{flex:1 1 auto}.sky-list-toolbar-search-wrapper ::ng-deep sky-list-toolbar-search-actions{flex:0 0 auto;z-index:1}.sky-list-toolbar-container ::ng-deep .sky-toolbar-section-items sky-toolbar-item{flex:0 1 auto;align-self:flex-start}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section{padding-top:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section-items{display:block;width:100%}.sky-list-toolbar-search ::ng-deep .sky-toolbar-item{margin:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-container,.sky-list-toolbar-search ::ng-deep .sky-search-dismiss-absolute{background-color:#eeeeef}.sky-list-toolbar-search ::ng-deep input[type=text]:disabled,.sky-list-toolbar-search ::ng-deep .sky-search-btn:disabled{background-color:#cdcfd2;opacity:1}.sky-list-toolbar-container ::ng-deep sky-toolbar-item[sky-toolbar-id=sort-selector] .sky-toolbar-item{margin-right:0}.sky-list-toolbar-container ::ng-deep sky-checkbox{position:relative;top:-2px}\n"] }]
302
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ListState }, { type: i2.ListStateDispatcher }, { type: i3.ListToolbarState }, { type: i4.ListToolbarStateDispatcher }]; }, propDecorators: { inMemorySearchEnabled: [{
311
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ListState }, { type: i2.ListStateDispatcher }, { type: i3.ListToolbarState }, { type: i4.ListToolbarStateDispatcher }, { type: i5.SkyLogService }]; }, propDecorators: { inMemorySearchEnabled: [{
303
312
  type: Input
304
313
  }], placeholder: [{
305
314
  type: Input
@@ -351,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
351
360
  static: true,
352
361
  }]
353
362
  }] } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvbGlzdC10b29sYmFyL2xpc3QtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFHTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFFTCxPQUFPLEVBQ1AsYUFBYSxJQUFJLHVCQUF1QixHQUN6QyxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxJQUFJLGFBQWEsRUFDcEIsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUdoRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNoSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRXBFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOztHQUVHO0FBWUgsTUFBTSxPQUFPLHVCQUF1QjtJQWtKbEMsWUFDVSxjQUFpQyxFQUNqQyxLQUFnQixFQUNoQixVQUErQixFQUMvQixZQUE4QixFQUMvQixpQkFBNkM7UUFKNUMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFyR3REOzs7OztXQUtHO1FBRUksZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUE0QnpCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQU8xQiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDaEMsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLG1CQUFjLEdBQUcsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDOUQsdUJBQWtCLEdBQUcsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFekU7OztXQUdHO1FBQ0ksa0JBQWEsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQW1DdEQsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGtDQUE2QixHQUFHLElBQUksQ0FBQztRQUNyQyxpQ0FBNEIsR0FBRyxJQUFJLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBVW5DLENBQUM7SUFySko7Ozs7OztPQU1HO0lBQ0gsSUFDVyxxQkFBcUIsQ0FBQyxLQUFjO1FBQzdDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcscUJBQXFCO1FBQzlCLElBQUksSUFBSSxDQUFDLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQTZDRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsSUFBSSxDQUFDLHVCQUF1QixDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6RSxDQUFDO0lBK0VNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGFBQXNCLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN6QixJQUFJLHVDQUF1QyxDQUN6QyxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FDbkQsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsbUJBQXdCLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN6QixJQUFJLDZDQUE2QyxDQUMvQyxtQkFBbUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQy9ELENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU3QyxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLGFBQWE7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2FBQzNELFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pCLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDO29CQUM5QixJQUFJLG9CQUFvQixDQUFDO3dCQUN2QixFQUFFLEVBQUUsZUFBZTt3QkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7d0JBQ25DLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtxQkFDekMsQ0FBQztpQkFDSCxDQUFDLENBQUM7YUFDSjtpQkFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFDekMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDcEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQzVDLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdEUsSUFBSSxXQUFXLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztvQkFDOUIsSUFBSSxvQkFBb0IsQ0FBQzt3QkFDdkIsRUFBRSxFQUFFLFFBQVE7d0JBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO3dCQUM3QixRQUFRLEVBQUUsT0FBTztxQkFDbEIsQ0FBQztpQkFDSCxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0MsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQzlCLG9CQUFvQixFQUFFLEVBQ3RCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUN0QyxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUs7YUFDUCxJQUFJLENBQ0gsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLG9CQUFvQixFQUFFLEVBQ3RCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUNqQzthQUNBLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUM5QixvQkFBb0IsRUFBRSxFQUN0QixhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsRUFDdEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FDL0MsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLEVBQ3RCLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekMsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtvQkFDZCxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7b0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSztvQkFDakIsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsWUFBWSxDQUMzQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsUUFBZ0QsRUFBRSxFQUFFO1lBQzlELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVsRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7WUFFbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFO29CQUNoRCxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3RDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLGtCQUFrQixDQUFDO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3BCLE1BQU0sRUFBRSxJQUFJO1lBQ1osVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztnQkFDOUIsSUFBSSxvQkFBb0IsQ0FBQztvQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQywwQkFBMEI7b0JBQ3pDLFFBQVEsRUFBRSxNQUFNO29CQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLDZCQUE2QjtpQkFDMUMsQ0FBQzthQUNILENBQUMsQ0FBQztTQUNKO1FBRUQseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBd0I7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDbEQsSUFDRSxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQzlCLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsRUFDcEM7Z0JBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDcEMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNuRSxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQy9ELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDbEQsSUFDRSxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVU7b0JBQzlCLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsRUFDcEM7b0JBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNwRTtnQkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQ3ZELE9BQU8sUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssVUFBVSxDQUFDO0lBQzNELENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTyx1QkFBdUIsQ0FDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN0QyxvQkFBb0IsRUFBRSxDQUN2QixFQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDbkMsb0JBQW9CLEVBQUUsQ0FDdkIsRUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzNDLG9CQUFvQixFQUFFLENBQ3ZCLEVBQ0QsQ0FDRSxTQUFvQyxFQUNwQyxNQUFpQyxFQUNqQyxjQUFpRCxFQUNqRCxFQUFFO1lBQ0YsaUVBQWlFO1lBQ2pFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3pCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUM7aUJBQ3pELE1BQU0sS0FBSyxDQUFDLENBQ2xCLENBQUM7WUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQ3RELENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLGFBQWEsS0FBSyxVQUFVLENBQUMsYUFBYTt3QkFDNUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsVUFBVSxDQUN2QyxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDakIsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDakI7Z0JBRUQsT0FBTztvQkFDTCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsUUFBUSxFQUFFLFFBQVE7aUJBQ25CLENBQUM7WUFDSixDQUFDLENBQ0YsQ0FBQztZQUVGLE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQyxDQUNGLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sY0FBYztRQUNwQix1QkFBdUIsQ0FDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLENBQ3ZCLEVBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUN0QyxDQUFDLE9BQXlCLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUF1QixFQUFFLEVBQUU7Z0JBQzdELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1lBRTFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUEwQixFQUFFLEVBQUU7Z0JBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUNGO2FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O29IQTdkVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixxUUFQdkI7UUFDVCxnQkFBZ0I7UUFDaEIsMEJBQTBCO1FBQzFCLHFCQUFxQjtLQUN0Qix1REE0R2dCLDJCQUEyQiwrQ0FHM0IsMkJBQTJCLGdEQUczQiw2QkFBNkIsK0NBRzdCLDRCQUE0Qiw4Q0FHNUIsa0NBQWtDLDhFQWhGeEMsa0JBQWtCLDJCQUNyQixrQkFBa0IsbUdBbUZsQixXQUFXLDZIQU1YLFdBQVcseUlBTVgsV0FBVywyQ0N0TXJCLGc0SkFxSkE7MkZEcEZhLHVCQUF1QjtrQkFYbkMsU0FBUzsrQkFDRSxrQkFBa0IsYUFHakI7d0JBQ1QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjtxQkFDdEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07ME9BYXBDLHFCQUFxQjtzQkFEL0IsS0FBSztnQkFrQkMsV0FBVztzQkFEakIsS0FBSztnQkFRQyxhQUFhO3NCQURuQixLQUFLO2dCQU9DLGVBQWU7c0JBSnJCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLE1BQU0sRUFBRSxLQUFLO3FCQUNkO2dCQVFNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFVQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNENFLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsMkJBQTJCO2dCQUlwQyxZQUFZO3NCQURuQixlQUFlO3VCQUFDLDJCQUEyQjtnQkFJcEMsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyw2QkFBNkI7Z0JBSXRDLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsNEJBQTRCO2dCQUlyQyxXQUFXO3NCQURsQixlQUFlO3VCQUFDLGtDQUFrQztnQkFPM0MsY0FBYztzQkFKckIsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxvQkFBb0I7c0JBSjNCLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT08sMEJBQTBCO3NCQUpqQyxTQUFTO3VCQUFDLG9CQUFvQixFQUFFO3dCQUMvQixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRWYWx1ZSB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcbmltcG9ydCB7IExpc3RTb3J0RmllbGRTZWxlY3Rvck1vZGVsIH0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuaW1wb3J0IHsgU2t5U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QgYXMgb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCBhcyBvYnNlcnZhYmxlTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTGlzdEZpbHRlck1vZGVsIH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBTa3lMaXN0RmlsdGVySW5saW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVyLWlubGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdEZpbHRlclN1bW1hcnlDb21wb25lbnQgfSBmcm9tICcuLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXItc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFN0YXRlRGlzcGF0Y2hlciB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvbGlzdC1zdGF0ZS5yeHN0YXRlJztcbmltcG9ydCB7IExpc3RTdGF0ZSB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvbGlzdC1zdGF0ZS5zdGF0ZS1ub2RlJztcbmltcG9ydCB7IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9wYWdpbmcvc2V0LXBhZ2UtbnVtYmVyLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0U29ydExhYmVsTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3NvcnQvbGFiZWwubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS90b29sYmFyL3NldC10eXBlLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci90b29sYmFyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJNb2RlbCB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci90b29sYmFyLm1vZGVsJztcblxuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItc29ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXZpZXctYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJDb25maWdTZXRTZWFyY2hFbmFibGVkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9jb25maWcvc2V0LXNlYXJjaC1lbmFibGVkLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhckNvbmZpZ1NldFNvcnRTZWxlY3RvckVuYWJsZWRBY3Rpb24gfSBmcm9tICcuL3N0YXRlL2NvbmZpZy9zZXQtc29ydC1zZWxlY3Rvci1lbmFibGVkLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhclN0YXRlTW9kZWwgfSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZURpc3BhdGNoZXIgfSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBMaXN0VG9vbGJhclN0YXRlIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLnN0YXRlLW5vZGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBEaXNwbGF5cyBhIHRvb2xiYXIgZm9yIGEgU0tZIFVYLXRoZW1lZCBsaXN0IG9mIGRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1saXN0LXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIExpc3RUb29sYmFyU3RhdGUsXG4gICAgTGlzdFRvb2xiYXJTdGF0ZURpc3BhdGNoZXIsXG4gICAgTGlzdFRvb2xiYXJTdGF0ZU1vZGVsLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFRvb2xiYXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBpbi1tZW1vcnkgc2VhcmNoLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gYGZhbHNlYCB3aWxsIGFsbG93IGNvbnN1bWVycyB0byBydW4gdGhlaXIgb3duIHNlYXJjaGVzIHJlbW90ZWx5LFxuICAgKiBhbmQgcHVzaCBuZXcgdmFsdWVzIHRvIHRoZSBsaXN0IGNvbXBvbmVudCBieSB1cGRhdGluZyB0aGUgYGRhdGFgIHByb3BlcnR5LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbk1lbW9yeVNlYXJjaEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbk1lbW9yeVNlYXJjaEVuYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5NZW1vcnlTZWFyY2hFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9pbk1lbW9yeVNlYXJjaEVuYWJsZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pbk1lbW9yeVNlYXJjaEVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBzZWFyY2ggYmFyIHRoYXQgdGhlIGxpc3QgdG9vbGJhciBjcmVhdGVzIHdpdGhcbiAgICogYSBbc2VhcmNoIGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3NlYXJjaCkuXG4gICAqIEBkZWZhdWx0IFwiRmluZCBpbiB0aGlzIGxpc3RcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgc2VhcmNoIGJhci5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBWaWV3Q2hpbGQoU2t5U2VhcmNoQ29tcG9uZW50LCB7XG4gICAgcmVhZDogU2t5U2VhcmNoQ29tcG9uZW50LFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHB1YmxpYyBzZWFyY2hDb21wb25lbnQ6IFNreVNlYXJjaENvbXBvbmVudDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBzb3J0IHNlbGVjdG9yLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRTZWxlY3RvckVuYWJsZWQ6IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBzZWFyY2ggYmFyIGluIHRoZSBzdGFuZGFyZCBwb3NpdGlvbiBvciBpbiBhIHNlcGFyYXRlIHNlY3Rpb24uXG4gICAqIFRvIGhpZ2hsaWdodCB0aGUgc2VhcmNoIGJhciBpbiBhIHNlY3Rpb24gYWJvdmUgYWxsIG90aGVyIHRvb2xiYXIgaXRlbXMsXG4gICAqIHNldCB0aGlzIHByb3BlcnR5IHRvIGBzZWFyY2hgLlxuICAgKiBAZGVmYXVsdCBcInN0YW5kYXJkXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b29sYmFyVHlwZSA9ICdzdGFuZGFyZCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRleHQgc3RyaW5nIHRvIHNlYXJjaCB3aXRoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgZ2V0IGlzRmlsdGVyQmFyRGlzcGxheWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5pc1Rvb2xiYXJEaXNhYmxlZCAmJlxuICAgICAgdGhpcy5oYXNJbmxpbmVGaWx0ZXJzICYmXG4gICAgICB0aGlzLmlubGluZUZpbHRlckJhckV4cGFuZGVkXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyQnV0dG9uQXJpYUNvbnRyb2xzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJCYXJEaXNwbGF5ZWQgPyB0aGlzLmxpc3RGaWx0ZXJJbmxpbmVJZCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0U2VsZWN0b3JzOiBPYnNlcnZhYmxlPEFycmF5PGFueT4+O1xuICBwdWJsaWMgc2VhcmNoVGV4dElucHV0OiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHB1YmxpYyB2aWV3OiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHB1YmxpYyBsZWZ0VGVtcGxhdGVzOiBMaXN0VG9vbGJhckl0ZW1Nb2RlbFtdO1xuICBwdWJsaWMgY2VudGVyVGVtcGxhdGVzOiBMaXN0VG9vbGJhckl0ZW1Nb2RlbFtdO1xuICBwdWJsaWMgcmlnaHRUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyB0eXBlOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHB1YmxpYyBpc1NlYXJjaEVuYWJsZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc1Rvb2xiYXJEaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgaXNNdWx0aXNlbGVjdEVuYWJsZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc1NvcnRTZWxlY3RvckVuYWJsZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBhcHBsaWVkRmlsdGVyczogT2JzZXJ2YWJsZTxBcnJheTxMaXN0RmlsdGVyTW9kZWw+PjtcbiAgcHVibGljIGhhc0FwcGxpZWRGaWx0ZXJzOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgc2hvd0ZpbHRlclN1bW1hcnk6IGJvb2xlYW47XG4gIHB1YmxpYyBoYXNJbmxpbmVGaWx0ZXJzOiBib29sZWFuO1xuICBwdWJsaWMgaW5saW5lRmlsdGVyQmFyRXhwYW5kZWQgPSBmYWxzZTtcbiAgcHVibGljIGhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgaGFzVmlld0FjdGlvbnMgPSBmYWxzZTtcblxuICBwdWJsaWMgZmlsdGVyQnV0dG9uSWQgPSBgc2t5LWxpc3QtdG9vbGJhci1maWx0ZXItYnV0dG9uLSR7KytuZXh0SWR9YDtcbiAgcHVibGljIGxpc3RGaWx0ZXJJbmxpbmVJZCA9IGBza3ktbGlzdC10b29sYmFyLWZpbHRlci1pbmxpbmUtJHsrK25leHRJZH1gO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHN1Ym1pdCBhIHNlYXJjaC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoQXBwbGllZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50KVxuICBwcml2YXRlIHRvb2xiYXJJdGVtczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQpXG4gIHByaXZhdGUgdG9vbGJhclNvcnRzOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50KVxuICBwcml2YXRlIGZpbHRlclN1bW1hcnk6IFF1ZXJ5TGlzdDxTa3lMaXN0RmlsdGVyU3VtbWFyeUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0RmlsdGVySW5saW5lQ29tcG9uZW50KVxuICBwcml2YXRlIGlubGluZUZpbHRlcjogUXVlcnlMaXN0PFNreUxpc3RGaWx0ZXJJbmxpbmVDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudClcbiAgcHJpdmF0ZSB2aWV3QWN0aW9uczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaCcsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgc2VhcmNoVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnc29ydFNlbGVjdG9yJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBzb3J0U2VsZWN0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdpbmxpbmVGaWx0ZXJCdXR0b24nLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIGlubGluZUZpbHRlckJ1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgY3VzdG9tSXRlbUlkczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBoYXNTb3J0U2VsZWN0b3JzID0gZmFsc2U7XG4gIHByaXZhdGUgaW5saW5lRmlsdGVyc0l0ZW1Ub29sYmFySW5kZXggPSA1MDAwO1xuICBwcml2YXRlIHNvcnRTZWxlY3Rvckl0ZW1Ub29sYmFySW5kZXggPSA2MDAwO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2luTWVtb3J5U2VhcmNoRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHN0YXRlOiBMaXN0U3RhdGUsXG4gICAgcHJpdmF0ZSBkaXNwYXRjaGVyOiBMaXN0U3RhdGVEaXNwYXRjaGVyLFxuICAgIHByaXZhdGUgdG9vbGJhclN0YXRlOiBMaXN0VG9vbGJhclN0YXRlLFxuICAgIHB1YmxpYyB0b29sYmFyRGlzcGF0Y2hlcjogTGlzdFRvb2xiYXJTdGF0ZURpc3BhdGNoZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckV4aXN0cyh0cnVlKTtcblxuICAgIGdldFZhbHVlKHRoaXMuc2VhcmNoVGV4dCwgKHNlYXJjaFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTZWFyY2hUZXh0KHNlYXJjaFRleHQpO1xuICAgIH0pO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zZWFyY2hFbmFibGVkLCAoc2VhcmNoRW5hYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgdGhpcy50b29sYmFyRGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICBuZXcgTGlzdFRvb2xiYXJDb25maWdTZXRTZWFyY2hFbmFibGVkQWN0aW9uKFxuICAgICAgICAgIHNlYXJjaEVuYWJsZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBzZWFyY2hFbmFibGVkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnRvb2xiYXJUeXBlLCAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChuZXcgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uKHRoaXMudG9vbGJhclR5cGUpKTtcbiAgICB9KTtcblxuICAgIGdldFZhbHVlKHRoaXMuc29ydFNlbGVjdG9yRW5hYmxlZCwgKHNvcnRTZWxlY3RvckVuYWJsZWQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy50b29sYmFyRGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICBuZXcgTGlzdFRvb2xiYXJDb25maWdTZXRTb3J0U2VsZWN0b3JFbmFibGVkQWN0aW9uKFxuICAgICAgICAgIHNvcnRTZWxlY3RvckVuYWJsZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBzb3J0U2VsZWN0b3JFbmFibGVkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvcnRTZWxlY3RvcnMgPSB0aGlzLmdldFNvcnRTZWxlY3RvcnMoKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHNvcnQgdG9vbGJhciBpdGVtIGlmIG5lY2Vzc2FyeVxuICAgIHRoaXMuc29ydFNlbGVjdG9yc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50U29ydCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudFNvcnQubGVuZ3RoID4gMCAmJiAhdGhpcy5oYXNTb3J0U2VsZWN0b3JzKSB7XG4gICAgICAgICAgdGhpcy5oYXNTb3J0U2VsZWN0b3JzID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtcbiAgICAgICAgICAgIG5ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgIGlkOiAnc29ydC1zZWxlY3RvcicsXG4gICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnNvcnRTZWxlY3RvclRlbXBsYXRlLFxuICAgICAgICAgICAgICBsb2NhdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICBpbmRleDogdGhpcy5zb3J0U2VsZWN0b3JJdGVtVG9vbGJhckluZGV4LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFNvcnQubGVuZ3RoIDwgMSAmJiB0aGlzLmhhc1NvcnRTZWxlY3RvcnMpIHtcbiAgICAgICAgICB0aGlzLmhhc1NvcnRTZWxlY3RvcnMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclJlbW92ZUl0ZW1zKFsnc29ydC1zZWxlY3RvciddKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnNlYXJjaFRleHRJbnB1dCA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zZWFyY2guc2VhcmNoVGV4dCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMudmlldyA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy52aWV3cy5hY3RpdmUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICB0aGlzLndhdGNoVGVtcGxhdGVzKCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHN0YXRlKSA9PiBzdGF0ZS50b29sYmFyLnR5cGUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICB0aGlzLnR5cGUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0b29sYmFyVHlwZSkgPT4ge1xuICAgICAgaWYgKHRvb2xiYXJUeXBlID09PSAnc2VhcmNoJykge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclJlbW92ZUl0ZW1zKFsnc2VhcmNoJ10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhbXG4gICAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHtcbiAgICAgICAgICAgIGlkOiAnc2VhcmNoJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnNlYXJjaFRlbXBsYXRlLFxuICAgICAgICAgICAgbG9jYXRpb246ICdyaWdodCcsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5pc1NlYXJjaEVuYWJsZWQgPSB0aGlzLnRvb2xiYXJTdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbmZpZyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoYykgPT4gYy5zZWFyY2hFbmFibGVkKVxuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy50b29sYmFyKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG9ic2VydmFibGVNYXAoKGMpID0+IGMuZGlzYWJsZWQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpc0Rpc2FibGVkKSA9PiAodGhpcy5pc1Rvb2xiYXJEaXNhYmxlZCA9IGlzRGlzYWJsZWQpKTtcblxuICAgIHRoaXMuaXNTb3J0U2VsZWN0b3JFbmFibGVkID0gdGhpcy50b29sYmFyU3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5jb25maWcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKGMpID0+IGMuc29ydFNlbGVjdG9yRW5hYmxlZClcbiAgICApO1xuXG4gICAgdGhpcy5pc011bHRpc2VsZWN0RW5hYmxlZCA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy50b29sYmFyKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKCh0KSA9PiB0LnNob3dNdWx0aXNlbGVjdFRvb2xiYXIpXG4gICAgKTtcblxuICAgIHRoaXMuaGFzQXBwbGllZEZpbHRlcnMgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuZmlsdGVycyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVGaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gJycgJiZcbiAgICAgICAgICAgIGYudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgIGYudmFsdWUgIT09IGYuZGVmYXVsdFZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDA7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoY3VycmVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvbiA9IGN1cnJlbnQudG9vbGJhci5pdGVtcy5sZW5ndGggPiAwO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIEluamVjdCBjdXN0b20gdG9vbGJhciBpdGVtcy5cbiAgICB0aGlzLnRvb2xiYXJJdGVtcy5mb3JFYWNoKCh0b29sYmFySXRlbSkgPT4ge1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhbbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHRvb2xiYXJJdGVtKV0pO1xuXG4gICAgICB0aGlzLmN1c3RvbUl0ZW1JZHMucHVzaCh0b29sYmFySXRlbS5pZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRvb2xiYXJJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG5ld0l0ZW1zOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICBuZXdJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tSXRlbUlkcy5pbmRleE9mKGl0ZW0uaWQpIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhbbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKGl0ZW0pXSk7XG5cbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5wdXNoKGl0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaXRlbXNUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICB0aGlzLmN1c3RvbUl0ZW1JZHMuZm9yRWFjaCgoaXRlbUlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghbmV3SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaXRlbUlkKSkge1xuICAgICAgICAgICAgaXRlbXNUb1JlbW92ZS5wdXNoKGl0ZW1JZCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUl0ZW1JZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyUmVtb3ZlSXRlbXMoaXRlbXNUb1JlbW92ZSk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNvcnRNb2RlbHMgPSB0aGlzLnRvb2xiYXJTb3J0cy5tYXAoXG4gICAgICAoc29ydCkgPT5cbiAgICAgICAgbmV3IExpc3RTb3J0TGFiZWxNb2RlbCh7XG4gICAgICAgICAgdGV4dDogc29ydC5sYWJlbCxcbiAgICAgICAgICBmaWVsZFNlbGVjdG9yOiBzb3J0LmZpZWxkLFxuICAgICAgICAgIGZpZWxkVHlwZTogc29ydC50eXBlLFxuICAgICAgICAgIGdsb2JhbDogdHJ1ZSxcbiAgICAgICAgICBkZXNjZW5kaW5nOiBzb3J0LmRlc2NlbmRpbmcsXG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGlzcGF0Y2hlci5zb3J0U2V0R2xvYmFsKHNvcnRNb2RlbHMpO1xuXG4gICAgLy8gQWRkIGlubGluZSBmaWx0ZXJzLlxuICAgIHRoaXMuc2hvd0ZpbHRlclN1bW1hcnkgPSB0aGlzLmZpbHRlclN1bW1hcnkubGVuZ3RoID4gMDtcbiAgICB0aGlzLmhhc0lubGluZUZpbHRlcnMgPSB0aGlzLmlubGluZUZpbHRlci5sZW5ndGggPiAwO1xuXG4gICAgaWYgKHRoaXMuaGFzSW5saW5lRmlsdGVycykge1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhbXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh7XG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMuaW5saW5lRmlsdGVyQnV0dG9uVGVtcGxhdGUsXG4gICAgICAgICAgbG9jYXRpb246ICdsZWZ0JyxcbiAgICAgICAgICBpbmRleDogdGhpcy5pbmxpbmVGaWx0ZXJzSXRlbVRvb2xiYXJJbmRleCxcbiAgICAgICAgfSksXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgdmlldyBhY3Rpb25zXG4gICAgdGhpcy5oYXNWaWV3QWN0aW9ucyA9IHRoaXMudmlld0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaEFwcGxpZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFNvcnQoc29ydDogTGlzdFNvcnRMYWJlbE1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAmJlxuICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgIT09IDFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChuZXcgTGlzdFBhZ2luZ1NldFBhZ2VOdW1iZXJBY3Rpb24oTnVtYmVyKDEpKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzcGF0Y2hlci5zb3J0U2V0RmllbGRTZWxlY3RvcnMoW1xuICAgICAgICB7IGZpZWxkU2VsZWN0b3I6IHNvcnQuZmllbGRTZWxlY3RvciwgZGVzY2VuZGluZzogc29ydC5kZXNjZW5kaW5nIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLmlubGluZUZpbHRlckJhckV4cGFuZGVkID0gIXRoaXMuaW5saW5lRmlsdGVyQmFyRXhwYW5kZWQ7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2VhcmNoVGV4dChzZWFyY2hUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaEFwcGxpZWQubmV4dChzZWFyY2hUZXh0KTtcbiAgICBpZiAodGhpcy5pbk1lbW9yeVNlYXJjaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc3RhdGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY3VycmVudFN0YXRlLnBhZ2luZy5wYWdlTnVtYmVyICYmXG4gICAgICAgICAgY3VycmVudFN0YXRlLnBhZ2luZy5wYWdlTnVtYmVyICE9PSAxXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbihOdW1iZXIoMSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5zZWFyY2hTZXRUZXh0KHNlYXJjaFRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpdGVtSXNJblZpZXcoaXRlbVZpZXc6IHN0cmluZywgYWN0aXZlVmlldzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGl0ZW1WaWV3ID09PSB1bmRlZmluZWQgfHwgaXRlbVZpZXcgPT09IGFjdGl2ZVZpZXc7XG4gIH1cblxuICBwcml2YXRlIGdldFNvcnRTZWxlY3RvcnMoKSB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVDb21iaW5lTGF0ZXN0KFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNvcnQuYXZhaWxhYmxlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zb3J0Lmdsb2JhbCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICksXG4gICAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuc29ydC5maWVsZFNlbGVjdG9ycyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICksXG4gICAgICAoXG4gICAgICAgIGF2YWlsYWJsZTogQXJyYXk8TGlzdFNvcnRMYWJlbE1vZGVsPixcbiAgICAgICAgZ2xvYmFsOiBBcnJheTxMaXN0U29ydExhYmVsTW9kZWw+LFxuICAgICAgICBmaWVsZFNlbGVjdG9yczogQXJyYXk8TGlzdFNvcnRGaWVsZFNlbGVjdG9yTW9kZWw+XG4gICAgICApID0+IHtcbiAgICAgICAgLy8gR2V0IHNvcnRzIHRoYXQgYXJlIGluIHRoZSBnbG9iYWwgdGhhdCBhcmUgbm90IGluIHRoZSBhdmFpbGFibGVcbiAgICAgICAgY29uc3Qgc29ydHMgPSBnbG9iYWwuZmlsdGVyKFxuICAgICAgICAgIChnKSA9PlxuICAgICAgICAgICAgYXZhaWxhYmxlLmZpbHRlcigoYSkgPT4gYS5maWVsZFNlbGVjdG9yID09PSBnLmZpZWxkU2VsZWN0b3IpXG4gICAgICAgICAgICAgIC5sZW5ndGggPT09IDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByZXN1bHRTb3J0U2VsZWN0b3JzID0gWy4uLnNvcnRzLCAuLi5hdmFpbGFibGVdLm1hcChcbiAgICAgICAgICAoc29ydExhYmVscykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnMgPSBmaWVsZFNlbGVjdG9ycy5maWx0ZXIoKGYpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBmLmZpZWxkU2VsZWN0b3IgPT09IHNvcnRMYWJlbHMuZmllbGRTZWxlY3RvciAmJlxuICAgICAgICAgICAgICAgIGYuZGVzY2VuZGluZyA9PT0gc29ydExhYmVscy5kZXNjZW5kaW5nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGZzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBzb3J0OiBzb3J0TGFiZWxzLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0U29ydFNlbGVjdG9ycztcbiAgICAgIH1cbiAgICApLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaFRlbXBsYXRlcygpIHtcbiAgICBvYnNlcnZhYmxlQ29tYmluZUxhdGVzdChcbiAgICAgIHRoaXMuc3RhdGUucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy50b29sYmFyKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIHRoaXMudmlldy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgKHRvb2xiYXI6IExpc3RUb29sYmFyTW9kZWwsIHZpZXc6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRvb2xiYXIuaXRlbXMuZmlsdGVyKChpOiBMaXN0VG9vbGJhckl0ZW1Nb2RlbCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1Jc0luVmlldyhpLnZpZXcsIHZpZXcpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IExpc3RUb29sYmFySXRlbU1vZGVsKSA9PiB7XG4gICAgICAgICAgdGVtcGxhdGVzW2l0ZW0ubG9jYXRpb25dID0gdGVtcGxhdGVzW2l0ZW0ubG9jYXRpb25dIHx8IFtdO1xuICAgICAgICAgIHRlbXBsYXRlc1tpdGVtLmxvY2F0aW9uXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVtcGxhdGVzO1xuICAgICAgfVxuICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5sZWZ0VGVtcGxhdGVzID0gdmFsdWUubGVmdDtcbiAgICAgICAgdGhpcy5jZW50ZXJUZW1wbGF0ZXMgPSB2YWx1ZS5jZW50ZXI7XG4gICAgICAgIHRoaXMucmlnaHRUZW1wbGF0ZXMgPSB2YWx1ZS5yaWdodDtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWxpc3QtdG9vbGJhci1jb250YWluZXJcIj5cbiAgPHNreS10b29sYmFyICpuZ0lmPVwiKHR5cGUgfCBhc3luYykgIT09ICdzZWFyY2gnXCI+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZWZ0VGVtcGxhdGVzXCI+XG4gICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNlbnRlclRlbXBsYXRlc1wiPlxuICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8c2t5LXRvb2xiYXItaXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiByaWdodFRlbXBsYXRlc1wiXG4gICAgICAgIFthdHRyLnNreS10b29sYmFyLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgPlxuICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgPHNreS10b29sYmFyLXZpZXctYWN0aW9ucyAqbmdJZj1cImhhc1ZpZXdBY3Rpb25zXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zXCI+IDwvbmctY29udGVudD5cbiAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cblxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cInNob3dGaWx0ZXJTdW1tYXJ5ICYmIChoYXNBcHBsaWVkRmlsdGVycyB8IGFzeW5jKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtZmlsdGVyLXN1bW1hcnlcIj4gPC9uZy1jb250ZW50PlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgPC9za3ktdG9vbGJhcj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgICh0eXBlIHwgYXN5bmMpID09PSAnc2VhcmNoJyAmJlxuICAgICAgKChpc1NlYXJjaEVuYWJsZWQgfCBhc3luYykgfHwgaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uKVxuICAgIFwiXG4gICAgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLXNlYXJjaFwiXG4gID5cbiAgICA8c2t5LXRvb2xiYXI+XG4gICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbiAqbmdJZj1cImlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jXCI+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIHNreS1jbXAtaWQ9XCJzZWFyY2hcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cInNlYXJjaFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbiBbaGlkZGVuXT1cIiFoYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb25cIj5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVmdFRlbXBsYXRlc1wiPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNlbnRlclRlbXBsYXRlc1wiPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmlnaHRUZW1wbGF0ZXNcIlxuICAgICAgICAgIFthdHRyLnNreS10b29sYmFyLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlkICE9PSAnc2VhcmNoJ1wiXG4gICAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPHNreS10b29sYmFyLXZpZXctYWN0aW9ucyAqbmdJZj1cImhhc1ZpZXdBY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtdG9vbGJhci12aWV3LWFjdGlvbnNcIj4gPC9uZy1jb250ZW50PlxuICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICA8L3NreS10b29sYmFyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaXNGaWx0ZXJCYXJEaXNwbGF5ZWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJmaWx0ZXJCdXR0b25JZFwiXG4gICAgW2lkXT1cImxpc3RGaWx0ZXJJbmxpbmVJZFwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC1maWx0ZXItaW5saW5lXCI+IDwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxza3ktbGlzdC1tdWx0aXNlbGVjdC10b29sYmFyICpuZ0lmPVwiaXNNdWx0aXNlbGVjdEVuYWJsZWQgfCBhc3luY1wiPlxuICA8L3NreS1saXN0LW11bHRpc2VsZWN0LXRvb2xiYXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2g+XG4gIDxkaXYgKm5nSWY9XCJpc1NlYXJjaEVuYWJsZWQgfCBhc3luY1wiIGNsYXNzPVwic2t5LWxpc3QtdG9vbGJhci1zZWFyY2gtd3JhcHBlclwiPlxuICAgIDxza3ktc2VhcmNoXG4gICAgICBbZGlzYWJsZWRdPVwiaXNUb29sYmFyRGlzYWJsZWRcIlxuICAgICAgW2V4cGFuZE1vZGVdPVwiKHR5cGUgfCBhc3luYykgPT09ICdzZWFyY2gnID8gJ2ZpdCcgOiAncmVzcG9uc2l2ZSdcIlxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0SW5wdXQgfCBhc3luY1wiXG4gICAgICAoc2VhcmNoQXBwbHkpPVwidXBkYXRlU2VhcmNoVGV4dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9za3ktc2VhcmNoPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoLWFjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzb3J0U2VsZWN0b3I+XG4gIDxkaXZcbiAgICAqbmdJZj1cIlxuICAgICAgKGlzU29ydFNlbGVjdG9yRW5hYmxlZCB8IGFzeW5jKSAmJiAoc29ydFNlbGVjdG9ycyB8IGFzeW5jKS5sZW5ndGggPiAwXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS10b29sYmFyLWl0ZW0tc29ydC1jb250YWluZXJcIlxuICA+XG4gICAgPHNreS1zb3J0IFtzaG93QnV0dG9uVGV4dF09XCJ0cnVlXCI+XG4gICAgICA8c2t5LXNvcnQtaXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzb3J0U2VsZWN0b3JzIHwgYXN5bmNcIlxuICAgICAgICBbYWN0aXZlXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAoaXRlbVNlbGVjdCk9XCJzZXRTb3J0KGl0ZW0uc29ydClcIlxuICAgICAgPlxuICAgICAgICB7eyBpdGVtLnNvcnQudGV4dCB9fVxuICAgICAgPC9za3ktc29ydC1pdGVtPlxuICAgIDwvc2t5LXNvcnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbmxpbmVGaWx0ZXJCdXR0b24+XG4gIDxza3ktZmlsdGVyLWJ1dHRvblxuICAgIFthY3RpdmVdPVwiaGFzQXBwbGllZEZpbHRlcnMgfCBhc3luY1wiXG4gICAgW2FyaWFDb250cm9sc109XCJmaWx0ZXJCdXR0b25BcmlhQ29udHJvbHNcIlxuICAgIFthcmlhRXhwYW5kZWRdPVwiaW5saW5lRmlsdGVyQmFyRXhwYW5kZWRcIlxuICAgIFtkaXNhYmxlZF09XCJpc1Rvb2xiYXJEaXNhYmxlZFwiXG4gICAgW2ZpbHRlckJ1dHRvbklkXT1cImZpbHRlckJ1dHRvbklkXCJcbiAgICBbc2hvd0J1dHRvblRleHRdPVwidHJ1ZVwiXG4gICAgKGZpbHRlckJ1dHRvbkNsaWNrKT1cImlubGluZUZpbHRlckJ1dHRvbkNsaWNrKClcIlxuICA+XG4gIDwvc2t5LWZpbHRlci1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvbGlzdC10b29sYmFyL2xpc3QtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFHTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUVMLE9BQU8sRUFDUCxhQUFhLElBQUksdUJBQXVCLEdBQ3pDLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixHQUFHLElBQUksYUFBYSxFQUNwQixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9B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QUQvQixLQUFLO2dCQWtCQyxXQUFXO3NCQURqQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsZUFBZTtzQkFKckIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLGtCQUFrQjt3QkFDeEIsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7Z0JBUU0sbUJBQW1CO3NCQUR6QixLQUFLO2dCQVVDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkE2Q0UsWUFBWTtzQkFEbkIsZUFBZTt1QkFBQywyQkFBMkI7Z0JBSXBDLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsMkJBQTJCO2dCQUlwQyxhQUFhO3NCQURwQixlQUFlO3VCQUFDLDZCQUE2QjtnQkFJdEMsWUFBWTtzQkFEbkIsZUFBZTt1QkFBQyw0QkFBNEI7Z0JBSXJDLFdBQVc7c0JBRGxCLGVBQWU7dUJBQUMsa0NBQWtDO2dCQU8zQyxjQUFjO3NCQUpyQixTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDbkIsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLG9CQUFvQjtzQkFKM0IsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTywwQkFBMEI7c0JBSmpDLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUU7d0JBQy9CLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBnZXRWYWx1ZSB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcbmltcG9ydCB7IExpc3RTb3J0RmllbGRTZWxlY3Rvck1vZGVsIH0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuaW1wb3J0IHsgU2t5U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QgYXMgb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCBhcyBvYnNlcnZhYmxlTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTGlzdEZpbHRlck1vZGVsIH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBTa3lMaXN0RmlsdGVySW5saW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVyLWlubGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdEZpbHRlclN1bW1hcnlDb21wb25lbnQgfSBmcm9tICcuLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXItc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFN0YXRlRGlzcGF0Y2hlciB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvbGlzdC1zdGF0ZS5yeHN0YXRlJztcbmltcG9ydCB7IExpc3RTdGF0ZSB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvbGlzdC1zdGF0ZS5zdGF0ZS1ub2RlJztcbmltcG9ydCB7IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9wYWdpbmcvc2V0LXBhZ2UtbnVtYmVyLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0U29ydExhYmVsTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3NvcnQvbGFiZWwubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS90b29sYmFyL3NldC10eXBlLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci90b29sYmFyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJNb2RlbCB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci90b29sYmFyLm1vZGVsJztcblxuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItc29ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXZpZXctYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJDb25maWdTZXRTZWFyY2hFbmFibGVkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9jb25maWcvc2V0LXNlYXJjaC1lbmFibGVkLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhckNvbmZpZ1NldFNvcnRTZWxlY3RvckVuYWJsZWRBY3Rpb24gfSBmcm9tICcuL3N0YXRlL2NvbmZpZy9zZXQtc29ydC1zZWxlY3Rvci1lbmFibGVkLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0VG9vbGJhclN0YXRlTW9kZWwgfSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZURpc3BhdGNoZXIgfSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBMaXN0VG9vbGJhclN0YXRlIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLnN0YXRlLW5vZGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBEaXNwbGF5cyBhIHRvb2xiYXIgZm9yIGEgU0tZIFVYLXRoZW1lZCBsaXN0IG9mIGRhdGEuXG4gKiBAZGVwcmVjYXRlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbGlzdC10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBMaXN0VG9vbGJhclN0YXRlLFxuICAgIExpc3RUb29sYmFyU3RhdGVEaXNwYXRjaGVyLFxuICAgIExpc3RUb29sYmFyU3RhdGVNb2RlbCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpc3RUb29sYmFyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSB0aGUgaW4tbWVtb3J5IHNlYXJjaC5cbiAgICogU2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgd2lsbCBhbGxvdyBjb25zdW1lcnMgdG8gcnVuIHRoZWlyIG93biBzZWFyY2hlcyByZW1vdGVseSxcbiAgICogYW5kIHB1c2ggbmV3IHZhbHVlcyB0byB0aGUgbGlzdCBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIGBkYXRhYCBwcm9wZXJ0eS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5NZW1vcnlTZWFyY2hFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluTWVtb3J5U2VhcmNoRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgc2VhcmNoIGJhciB0aGF0IHRoZSBsaXN0IHRvb2xiYXIgY3JlYXRlcyB3aXRoXG4gICAqIGEgW3NlYXJjaCBjb21wb25lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9zZWFyY2gpLlxuICAgKiBAZGVmYXVsdCBcIkZpbmQgaW4gdGhpcyBsaXN0XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIHNlYXJjaCBiYXIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hFbmFibGVkOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBAVmlld0NoaWxkKFNreVNlYXJjaENvbXBvbmVudCwge1xuICAgIHJlYWQ6IFNreVNlYXJjaENvbXBvbmVudCxcbiAgICBzdGF0aWM6IGZhbHNlLFxuICB9KVxuICBwdWJsaWMgc2VhcmNoQ29tcG9uZW50OiBTa3lTZWFyY2hDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgc29ydCBzZWxlY3Rvci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzb3J0U2VsZWN0b3JFbmFibGVkOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgc2VhcmNoIGJhciBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24gb3IgaW4gYSBzZXBhcmF0ZSBzZWN0aW9uLlxuICAgKiBUbyBoaWdobGlnaHQgdGhlIHNlYXJjaCBiYXIgaW4gYSBzZWN0aW9uIGFib3ZlIGFsbCBvdGhlciB0b29sYmFyIGl0ZW1zLFxuICAgKiBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgc2VhcmNoYC5cbiAgICogQGRlZmF1bHQgXCJzdGFuZGFyZFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdG9vbGJhclR5cGUgPSAnc3RhbmRhcmQnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0ZXh0IHN0cmluZyB0byBzZWFyY2ggd2l0aC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIGdldCBpc0ZpbHRlckJhckRpc3BsYXllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuaXNUb29sYmFyRGlzYWJsZWQgJiZcbiAgICAgIHRoaXMuaGFzSW5saW5lRmlsdGVycyAmJlxuICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlckJ1dHRvbkFyaWFDb250cm9scygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQmFyRGlzcGxheWVkID8gdGhpcy5saXN0RmlsdGVySW5saW5lSWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc29ydFNlbGVjdG9yczogT2JzZXJ2YWJsZTxBcnJheTxhbnk+PjtcbiAgcHVibGljIHNlYXJjaFRleHRJbnB1dDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgdmlldzogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgbGVmdFRlbXBsYXRlczogTGlzdFRvb2xiYXJJdGVtTW9kZWxbXTtcbiAgcHVibGljIGNlbnRlclRlbXBsYXRlczogTGlzdFRvb2xiYXJJdGVtTW9kZWxbXTtcbiAgcHVibGljIHJpZ2h0VGVtcGxhdGVzOiBMaXN0VG9vbGJhckl0ZW1Nb2RlbFtdO1xuICBwdWJsaWMgdHlwZTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgaXNTZWFyY2hFbmFibGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNUb29sYmFyRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIGlzTXVsdGlzZWxlY3RFbmFibGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNTb3J0U2VsZWN0b3JFbmFibGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgYXBwbGllZEZpbHRlcnM6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpbHRlck1vZGVsPj47XG4gIHB1YmxpYyBoYXNBcHBsaWVkRmlsdGVyczogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIHNob3dGaWx0ZXJTdW1tYXJ5OiBib29sZWFuO1xuICBwdWJsaWMgaGFzSW5saW5lRmlsdGVyczogYm9vbGVhbjtcbiAgcHVibGljIGlubGluZUZpbHRlckJhckV4cGFuZGVkID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb24gPSBmYWxzZTtcbiAgcHVibGljIGhhc1ZpZXdBY3Rpb25zID0gZmFsc2U7XG5cbiAgcHVibGljIGZpbHRlckJ1dHRvbklkID0gYHNreS1saXN0LXRvb2xiYXItZmlsdGVyLWJ1dHRvbi0keysrbmV4dElkfWA7XG4gIHB1YmxpYyBsaXN0RmlsdGVySW5saW5lSWQgPSBgc2t5LWxpc3QtdG9vbGJhci1maWx0ZXItaW5saW5lLSR7KytuZXh0SWR9YDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzdWJtaXQgYSBzZWFyY2guXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHNlYXJjaEFwcGxpZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudClcbiAgcHJpdmF0ZSB0b29sYmFySXRlbXM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50KVxuICBwcml2YXRlIHRvb2xiYXJTb3J0czogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0RmlsdGVyU3VtbWFyeUNvbXBvbmVudClcbiAgcHJpdmF0ZSBmaWx0ZXJTdW1tYXJ5OiBRdWVyeUxpc3Q8U2t5TGlzdEZpbHRlclN1bW1hcnlDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdEZpbHRlcklubGluZUNvbXBvbmVudClcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXI6IFF1ZXJ5TGlzdDxTa3lMaXN0RmlsdGVySW5saW5lQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQpXG4gIHByaXZhdGUgdmlld0FjdGlvbnM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkKCdzZWFyY2gnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHNlYXJjaFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NvcnRTZWxlY3RvcicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgc29ydFNlbGVjdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnaW5saW5lRmlsdGVyQnV0dG9uJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJCdXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGN1c3RvbUl0ZW1JZHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaGFzU29ydFNlbGVjdG9ycyA9IGZhbHNlO1xuICBwcml2YXRlIGlubGluZUZpbHRlcnNJdGVtVG9vbGJhckluZGV4ID0gNTAwMDtcbiAgcHJpdmF0ZSBzb3J0U2VsZWN0b3JJdGVtVG9vbGJhckluZGV4ID0gNjAwMDtcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9pbk1lbW9yeVNlYXJjaEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzdGF0ZTogTGlzdFN0YXRlLFxuICAgIHByaXZhdGUgZGlzcGF0Y2hlcjogTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgICBwcml2YXRlIHRvb2xiYXJTdGF0ZTogTGlzdFRvb2xiYXJTdGF0ZSxcbiAgICBwdWJsaWMgdG9vbGJhckRpc3BhdGNoZXI6IExpc3RUb29sYmFyU3RhdGVEaXNwYXRjaGVyLFxuICAgIGxvZ2dlcjogU2t5TG9nU2VydmljZVxuICApIHtcbiAgICBsb2dnZXIuZGVwcmVjYXRlZCgnU2t5TGlzdFRvb2xiYXJDb21wb25lbnQnLCB7XG4gICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogNixcbiAgICAgIG1vcmVJbmZvVXJsOlxuICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGEtbWFuYWdlcicsXG4gICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIGRhdGEgbWFuYWdlciBpbnN0ZWFkLicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJFeGlzdHModHJ1ZSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnNlYXJjaFRleHQsIChzZWFyY2hUZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU2VhcmNoVGV4dChzZWFyY2hUZXh0KTtcbiAgICB9KTtcblxuICAgIGdldFZhbHVlKHRoaXMuc2VhcmNoRW5hYmxlZCwgKHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMudG9vbGJhckRpc3BhdGNoZXIubmV4dChcbiAgICAgICAgbmV3IExpc3RUb29sYmFyQ29uZmlnU2V0U2VhcmNoRW5hYmxlZEFjdGlvbihcbiAgICAgICAgICBzZWFyY2hFbmFibGVkID09PSB1bmRlZmluZWQgPyB0cnVlIDogc2VhcmNoRW5hYmxlZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZ2V0VmFsdWUodGhpcy50b29sYmFyVHlwZSwgKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQobmV3IExpc3RUb29sYmFyU2V0VHlwZUFjdGlvbih0aGlzLnRvb2xiYXJUeXBlKSk7XG4gICAgfSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnNvcnRTZWxlY3RvckVuYWJsZWQsIChzb3J0U2VsZWN0b3JFbmFibGVkOiBhbnkpID0+IHtcbiAgICAgIHRoaXMudG9vbGJhckRpc3BhdGNoZXIubmV4dChcbiAgICAgICAgbmV3IExpc3RUb29sYmFyQ29uZmlnU2V0U29ydFNlbGVjdG9yRW5hYmxlZEFjdGlvbihcbiAgICAgICAgICBzb3J0U2VsZWN0b3JFbmFibGVkID09PSB1bmRlZmluZWQgPyB0cnVlIDogc29ydFNlbGVjdG9yRW5hYmxlZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zb3J0U2VsZWN0b3JzID0gdGhpcy5nZXRTb3J0U2VsZWN0b3JzKCk7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBzb3J0IHRvb2xiYXIgaXRlbSBpZiBuZWNlc3NhcnlcbiAgICB0aGlzLnNvcnRTZWxlY3RvcnNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoY3VycmVudFNvcnQpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRTb3J0Lmxlbmd0aCA+IDAgJiYgIXRoaXMuaGFzU29ydFNlbGVjdG9ycykge1xuICAgICAgICAgIHRoaXMuaGFzU29ydFNlbGVjdG9ycyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhbXG4gICAgICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICBpZDogJ3NvcnQtc2VsZWN0b3InLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5zb3J0U2VsZWN0b3JUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgbG9jYXRpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuc29ydFNlbGVjdG9ySXRlbVRvb2xiYXJJbmRleCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTb3J0Lmxlbmd0aCA8IDEgJiYgdGhpcy5oYXNTb3J0U2VsZWN0b3JzKSB7XG4gICAgICAgICAgdGhpcy5oYXNTb3J0U2VsZWN0b3JzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhbJ3NvcnQtc2VsZWN0b3InXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZWFyY2hUZXh0SW5wdXQgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuc2VhcmNoLnNlYXJjaFRleHQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICB0aGlzLnZpZXcgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMudmlld3MuYWN0aXZlKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy53YXRjaFRlbXBsYXRlcygpO1xuXG4gICAgdGhpcy50eXBlID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzdGF0ZSkgPT4gc3RhdGUudG9vbGJhci50eXBlKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy50eXBlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodG9vbGJhclR5cGUpID0+IHtcbiAgICAgIGlmICh0b29sYmFyVHlwZSA9PT0gJ3NlYXJjaCcpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhbJ3NlYXJjaCddKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW1xuICAgICAgICAgIG5ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICBpZDogJ3NlYXJjaCcsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5zZWFyY2hUZW1wbGF0ZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAncmlnaHQnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaXNTZWFyY2hFbmFibGVkID0gdGhpcy50b29sYmFyU3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5jb25maWcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKGMpID0+IGMuc2VhcmNoRW5hYmxlZClcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMudG9vbGJhciksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChjKSA9PiBjLmRpc2FibGVkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaXNEaXNhYmxlZCkgPT4gKHRoaXMuaXNUb29sYmFyRGlzYWJsZWQgPSBpc0Rpc2FibGVkKSk7XG5cbiAgICB0aGlzLmlzU29ydFNlbGVjdG9yRW5hYmxlZCA9IHRoaXMudG9vbGJhclN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuY29uZmlnKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKChjKSA9PiBjLnNvcnRTZWxlY3RvckVuYWJsZWQpXG4gICAgKTtcblxuICAgIHRoaXMuaXNNdWx0aXNlbGVjdEVuYWJsZWQgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMudG9vbGJhciksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgodCkgPT4gdC5zaG93TXVsdGlzZWxlY3RUb29sYmFyKVxuICAgICk7XG5cbiAgICB0aGlzLmhhc0FwcGxpZWRGaWx0ZXJzID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmZpbHRlcnMpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGYudmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGYudmFsdWUgIT09IGZhbHNlICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSBmLmRlZmF1bHRWYWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN0aXZlRmlsdGVycy5sZW5ndGggPiAwO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGN1cnJlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5oYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb24gPSBjdXJyZW50LnRvb2xiYXIuaXRlbXMubGVuZ3RoID4gMDtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyBJbmplY3QgY3VzdG9tIHRvb2xiYXIgaXRlbXMuXG4gICAgdGhpcy50b29sYmFySXRlbXMuZm9yRWFjaCgodG9vbGJhckl0ZW0pID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW25ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh0b29sYmFySXRlbSldKTtcblxuICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnB1c2godG9vbGJhckl0ZW0uaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sYmFySXRlbXMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChuZXdJdGVtczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgbmV3SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUl0ZW1JZHMuaW5kZXhPZihpdGVtLmlkKSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW25ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbChpdGVtKV0pO1xuXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUl0ZW1JZHMucHVzaChpdGVtLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zVG9SZW1vdmU6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLmZvckVhY2goKGl0ZW1JZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoIW5ld0l0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGl0ZW1JZCkpIHtcbiAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUucHVzaChpdGVtSWQpO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclJlbW92ZUl0ZW1zKGl0ZW1zVG9SZW1vdmUpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBzb3J0TW9kZWxzID0gdGhpcy50b29sYmFyU29ydHMubWFwKFxuICAgICAgKHNvcnQpID0+XG4gICAgICAgIG5ldyBMaXN0U29ydExhYmVsTW9kZWwoe1xuICAgICAgICAgIHRleHQ6IHNvcnQubGFiZWwsXG4gICAgICAgICAgZmllbGRTZWxlY3Rvcjogc29ydC5maWVsZCxcbiAgICAgICAgICBmaWVsZFR5cGU6IHNvcnQudHlwZSxcbiAgICAgICAgICBnbG9iYWw6IHRydWUsXG4gICAgICAgICAgZGVzY2VuZGluZzogc29ydC5kZXNjZW5kaW5nLFxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmRpc3BhdGNoZXIuc29ydFNldEdsb2JhbChzb3J0TW9kZWxzKTtcblxuICAgIC8vIEFkZCBpbmxpbmUgZmlsdGVycy5cbiAgICB0aGlzLnNob3dGaWx0ZXJTdW1tYXJ5ID0gdGhpcy5maWx0ZXJTdW1tYXJ5Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5oYXNJbmxpbmVGaWx0ZXJzID0gdGhpcy5pbmxpbmVGaWx0ZXIubGVuZ3RoID4gMDtcblxuICAgIGlmICh0aGlzLmhhc0lubGluZUZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW1xuICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLmlubGluZUZpbHRlckJ1dHRvblRlbXBsYXRlLFxuICAgICAgICAgIGxvY2F0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgaW5kZXg6IHRoaXMuaW5saW5lRmlsdGVyc0l0ZW1Ub29sYmFySW5kZXgsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHZpZXcgYWN0aW9uc1xuICAgIHRoaXMuaGFzVmlld0FjdGlvbnMgPSB0aGlzLnZpZXdBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hBcHBsaWVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTb3J0KHNvcnQ6IExpc3RTb3J0TGFiZWxNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgJiZcbiAgICAgICAgY3VycmVudFN0YXRlLnBhZ2luZy5wYWdlTnVtYmVyICE9PSAxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQobmV3IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uKE51bWJlcigxKSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRpc3BhdGNoZXIuc29ydFNldEZpZWxkU2VsZWN0b3JzKFtcbiAgICAgICAgeyBmaWVsZFNlbGVjdG9yOiBzb3J0LmZpZWxkU2VsZWN0b3IsIGRlc2NlbmRpbmc6IHNvcnQuZGVzY2VuZGluZyB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5saW5lRmlsdGVyQnV0dG9uQ2xpY2soKSB7XG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZCA9ICF0aGlzLmlubGluZUZpbHRlckJhckV4cGFuZGVkO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlYXJjaFRleHQoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hBcHBsaWVkLm5leHQoc2VhcmNoVGV4dCk7XG4gICAgaWYgKHRoaXMuaW5NZW1vcnlTZWFyY2hFbmFibGVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAmJlxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAhPT0gMVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChuZXcgTGlzdFBhZ2luZ1NldFBhZ2VOdW1iZXJBY3Rpb24oTnVtYmVyKDEpKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpc3BhdGNoZXIuc2VhcmNoU2V0VGV4dChzZWFyY2hUZXh0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXRlbUlzSW5WaWV3KGl0ZW1WaWV3OiBzdHJpbmcsIGFjdGl2ZVZpZXc6IHN0cmluZykge1xuICAgIHJldHVybiBpdGVtVmlldyA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1WaWV3ID09PSBhY3RpdmVWaWV3O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0U2VsZWN0b3JzKCkge1xuICAgIHJldHVybiBvYnNlcnZhYmxlQ29tYmluZUxhdGVzdChcbiAgICAgIHRoaXMuc3RhdGUucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zb3J0LmF2YWlsYWJsZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICksXG4gICAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuc29ydC5nbG9iYWwpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNvcnQuZmllbGRTZWxlY3RvcnMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgKFxuICAgICAgICBhdmFpbGFibGU6IEFycmF5PExpc3RTb3J0TGFiZWxNb2RlbD4sXG4gICAgICAgIGdsb2JhbDogQXJyYXk8TGlzdFNvcnRMYWJlbE1vZGVsPixcbiAgICAgICAgZmllbGRTZWxlY3RvcnM6IEFycmF5PExpc3RTb3J0RmllbGRTZWxlY3Rvck1vZGVsPlxuICAgICAgKSA9PiB7XG4gICAgICAgIC8vIEdldCBzb3J0cyB0aGF0IGFyZSBpbiB0aGUgZ2xvYmFsIHRoYXQgYXJlIG5vdCBpbiB0aGUgYXZhaWxhYmxlXG4gICAgICAgIGNvbnN0IHNvcnRzID0gZ2xvYmFsLmZpbHRlcihcbiAgICAgICAgICAoZykgPT5cbiAgICAgICAgICAgIGF2YWlsYWJsZS5maWx0ZXIoKGEpID0+IGEuZmllbGRTZWxlY3RvciA9PT0gZy5maWVsZFNlbGVjdG9yKVxuICAgICAgICAgICAgICAubGVuZ3RoID09PSAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0U29ydFNlbGVjdG9ycyA9IFsuLi5zb3J0cywgLi4uYXZhaWxhYmxlXS5tYXAoXG4gICAgICAgICAgKHNvcnRMYWJlbHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZzID0gZmllbGRTZWxlY3RvcnMuZmlsdGVyKChmKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgZi5maWVsZFNlbGVjdG9yID09PSBzb3J0TGFiZWxzLmZpZWxkU2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgICBmLmRlc2NlbmRpbmcgPT09IHNvcnRMYWJlbHMuZGVzY2VuZGluZ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChmcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgc29ydDogc29ydExhYmVscyxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFNvcnRTZWxlY3RvcnM7XG4gICAgICB9XG4gICAgKS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hUZW1wbGF0ZXMoKSB7XG4gICAgb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QoXG4gICAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMudG9vbGJhciksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICksXG4gICAgICB0aGlzLnZpZXcucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgICh0b29sYmFyOiBMaXN0VG9vbGJhck1vZGVsLCB2aWV3OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0b29sYmFyLml0ZW1zLmZpbHRlcigoaTogTGlzdFRvb2xiYXJJdGVtTW9kZWwpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtSXNJblZpZXcoaS52aWV3LCB2aWV3KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVzOiBhbnkgPSB7fTtcblxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBMaXN0VG9vbGJhckl0ZW1Nb2RlbCkgPT4ge1xuICAgICAgICAgIHRlbXBsYXRlc1tpdGVtLmxvY2F0aW9uXSA9IHRlbXBsYXRlc1tpdGVtLmxvY2F0aW9uXSB8fCBbXTtcbiAgICAgICAgICB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0ucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlcztcbiAgICAgIH1cbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMubGVmdFRlbXBsYXRlcyA9IHZhbHVlLmxlZnQ7XG4gICAgICAgIHRoaXMuY2VudGVyVGVtcGxhdGVzID0gdmFsdWUuY2VudGVyO1xuICAgICAgICB0aGlzLnJpZ2h0VGVtcGxhdGVzID0gdmFsdWUucmlnaHQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1saXN0LXRvb2xiYXItY29udGFpbmVyXCI+XG4gIDxza3ktdG9vbGJhciAqbmdJZj1cIih0eXBlIHwgYXN5bmMpICE9PSAnc2VhcmNoJ1wiPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVmdFRlbXBsYXRlc1wiPlxuICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjZW50ZXJUZW1wbGF0ZXNcIj5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmlnaHRUZW1wbGF0ZXNcIlxuICAgICAgICBbYXR0ci5za3ktdG9vbGJhci1pZF09XCJpdGVtLmlkXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnMgKm5nSWY9XCJoYXNWaWV3QWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC10b29sYmFyLXZpZXctYWN0aW9uc1wiPiA8L25nLWNvbnRlbnQ+XG4gICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyU3VtbWFyeSAmJiAoaGFzQXBwbGllZEZpbHRlcnMgfCBhc3luYylcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LWZpbHRlci1zdW1tYXJ5XCI+IDwvbmctY29udGVudD5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICAodHlwZSB8IGFzeW5jKSA9PT0gJ3NlYXJjaCcgJiZcbiAgICAgICgoaXNTZWFyY2hFbmFibGVkIHwgYXN5bmMpIHx8IGhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvbilcbiAgICBcIlxuICAgIGNsYXNzPVwic2t5LWxpc3QtdG9vbGJhci1zZWFyY2hcIlxuICA+XG4gICAgPHNreS10b29sYmFyPlxuICAgICAgPHNreS10b29sYmFyLXNlY3Rpb24gKm5nSWY9XCJpc1NlYXJjaEVuYWJsZWQgfCBhc3luY1wiPlxuICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgICBza3ktY21wLWlkPVwic2VhcmNoXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzZWFyY2hcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPHNreS10b29sYmFyLXNlY3Rpb24gW2hpZGRlbl09XCIhaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uXCI+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlZnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjZW50ZXJUZW1wbGF0ZXNcIj5cbiAgICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICA8c2t5LXRvb2xiYXItaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJpZ2h0VGVtcGxhdGVzXCJcbiAgICAgICAgICBbYXR0ci5za3ktdG9vbGJhci1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pZCAhPT0gJ3NlYXJjaCdcIlxuICAgICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnMgKm5nSWY9XCJoYXNWaWV3QWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zXCI+IDwvbmctY29udGVudD5cbiAgICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgPC9za3ktdG9vbGJhcj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cImlzRmlsdGVyQmFyRGlzcGxheWVkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZmlsdGVyQnV0dG9uSWRcIlxuICAgIFtpZF09XCJsaXN0RmlsdGVySW5saW5lSWRcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtZmlsdGVyLWlubGluZVwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8c2t5LWxpc3QtbXVsdGlzZWxlY3QtdG9vbGJhciAqbmdJZj1cImlzTXVsdGlzZWxlY3RFbmFibGVkIHwgYXN5bmNcIj5cbiAgPC9za3ktbGlzdC1tdWx0aXNlbGVjdC10b29sYmFyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoPlxuICA8ZGl2ICpuZ0lmPVwiaXNTZWFyY2hFbmFibGVkIHwgYXN5bmNcIiBjbGFzcz1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoLXdyYXBwZXJcIj5cbiAgICA8c2t5LXNlYXJjaFxuICAgICAgW2Rpc2FibGVkXT1cImlzVG9vbGJhckRpc2FibGVkXCJcbiAgICAgIFtleHBhbmRNb2RlXT1cIih0eXBlIHwgYXN5bmMpID09PSAnc2VhcmNoJyA/ICdmaXQnIDogJ3Jlc3BvbnNpdmUnXCJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoVGV4dElucHV0IHwgYXN5bmNcIlxuICAgICAgKHNlYXJjaEFwcGx5KT1cInVwZGF0ZVNlYXJjaFRleHQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvc2t5LXNlYXJjaD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC10b29sYmFyLXNlYXJjaC1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc29ydFNlbGVjdG9yPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIChpc1NvcnRTZWxlY3RvckVuYWJsZWQgfCBhc3luYykgJiYgKHNvcnRTZWxlY3RvcnMgfCBhc3luYykubGVuZ3RoID4gMFxuICAgIFwiXG4gICAgY2xhc3M9XCJza3ktdG9vbGJhci1pdGVtLXNvcnQtY29udGFpbmVyXCJcbiAgPlxuICAgIDxza3ktc29ydCBbc2hvd0J1dHRvblRleHRdPVwidHJ1ZVwiPlxuICAgICAgPHNreS1zb3J0LWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc29ydFNlbGVjdG9ycyB8IGFzeW5jXCJcbiAgICAgICAgW2FjdGl2ZV09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgKGl0ZW1TZWxlY3QpPVwic2V0U29ydChpdGVtLnNvcnQpXCJcbiAgICAgID5cbiAgICAgICAge3sgaXRlbS5zb3J0LnRleHQgfX1cbiAgICAgIDwvc2t5LXNvcnQtaXRlbT5cbiAgICA8L3NreS1zb3J0PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5saW5lRmlsdGVyQnV0dG9uPlxuICA8c2t5LWZpbHRlci1idXR0b25cbiAgICBbYWN0aXZlXT1cImhhc0FwcGxpZWRGaWx0ZXJzIHwgYXN5bmNcIlxuICAgIFthcmlhQ29udHJvbHNdPVwiZmlsdGVyQnV0dG9uQXJpYUNvbnRyb2xzXCJcbiAgICBbYXJpYUV4cGFuZGVkXT1cImlubGluZUZpbHRlckJhckV4cGFuZGVkXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNUb29sYmFyRGlzYWJsZWRcIlxuICAgIFtmaWx0ZXJCdXR0b25JZF09XCJmaWx0ZXJCdXR0b25JZFwiXG4gICAgW3Nob3dCdXR0b25UZXh0XT1cInRydWVcIlxuICAgIChmaWx0ZXJCdXR0b25DbGljayk9XCJpbmxpbmVGaWx0ZXJCdXR0b25DbGljaygpXCJcbiAgPlxuICA8L3NreS1maWx0ZXItYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -16,6 +16,9 @@ import { SkyListToolbarSortComponent } from './list-toolbar-sort.component';
16
16
  import { SkyListToolbarViewActionsComponent } from './list-toolbar-view-actions.component';
17
17
  import { SkyListToolbarComponent } from './list-toolbar.component';
18
18
  import * as i0 from "@angular/core";
19
+ /**
20
+ * @deprecated List builder and its features are deprecated. Use data manager instead. For more information, see https://developer.blackbaud.com/skyux/components/data-manager.
21
+ */
19
22
  export class SkyListToolbarModule {
20
23
  }
21
24
  SkyListToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyListToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -84,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
84
87
  ],
85
88
  }]
86
89
  }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU1RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFnQ25FLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkE1QjdCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLGtDQUFrQztRQUNsQyxvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLGtDQUFrQyxhQUdsQyxZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZUFBZTtRQUNmLGFBQWE7UUFDYixlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYiw2QkFBNkIsYUFHN0IsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQixvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLGtDQUFrQztrSEFHekIsb0JBQW9CLFlBcEJ0QjtZQUNQLFlBQVk7WUFDWixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsYUFBYTtZQUNiLGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsYUFBYTtZQUNiLDZCQUE2QjtTQUM5QjsyRkFTVSxvQkFBb0I7a0JBOUJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0IsbUNBQW1DO3dCQUNuQyxrQ0FBa0M7d0JBQ2xDLG9DQUFvQzt3QkFDcEMsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0Isb0NBQW9DO3dCQUNwQywyQkFBMkI7d0JBQzNCLGtDQUFrQztxQkFDbkM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuaW1wb3J0IHsgU2t5RmlsdGVyTW9kdWxlLCBTa3lTb3J0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2xpc3RzJztcbmltcG9ydCB7IFNreVNlYXJjaE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sb29rdXAnO1xuXG5pbXBvcnQgeyBTa3lMaXN0RmlsdGVyc01vZHVsZSB9IGZyb20gJy4uL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMubW9kdWxlJztcbmltcG9ydCB7IFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1saXN0LWJ1aWxkZXItcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreUxpc3RNdWx0aXNlbGVjdFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtbXVsdGlzZWxlY3QtdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJJdGVtUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhclNlYXJjaEFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci1zZWFyY2gtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItc29ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXZpZXctYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5TGlzdFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lMaXN0VG9vbGJhckNvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJJdGVtUmVuZGVyZXJDb21wb25lbnQsXG4gICAgU2t5TGlzdE11bHRpc2VsZWN0VG9vbGJhckNvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclNlYXJjaEFjdGlvbnNDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hNb2R1bGUsXG4gICAgU2t5STE4bk1vZHVsZSxcbiAgICBTa3lUb29sYmFyTW9kdWxlLFxuICAgIFNreVNlYXJjaE1vZHVsZSxcbiAgICBTa3lTb3J0TW9kdWxlLFxuICAgIFNreUZpbHRlck1vZHVsZSxcbiAgICBTa3lMaXN0RmlsdGVyc01vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5TGlzdFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyU2VhcmNoQWN0aW9uc0NvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFRvb2xiYXJNb2R1bGUge31cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU1RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFbkU7O0dBRUc7QUErQkgsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQTVCN0IsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsa0NBQWtDO1FBQ2xDLG9DQUFvQztRQUNwQywyQkFBMkI7UUFDM0Isa0NBQWtDLGFBR2xDLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLDZCQUE2QixhQUc3Qix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLG9DQUFvQztRQUNwQywyQkFBMkI7UUFDM0Isa0NBQWtDO2tIQUd6QixvQkFBb0IsWUFwQnRCO1lBQ1AsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixhQUFhO1lBQ2IsNkJBQTZCO1NBQzlCOzJGQVNVLG9CQUFvQjtrQkE5QmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixtQ0FBbUM7d0JBQ25DLGtDQUFrQzt3QkFDbEMsb0NBQW9DO3dCQUNwQywyQkFBMkI7d0JBQzNCLGtDQUFrQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixvQ0FBb0M7d0JBQ3BDLDJCQUEyQjt3QkFDM0Isa0NBQWtDO3FCQUNuQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5STE4bk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUb29sYmFyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xheW91dCc7XG5pbXBvcnQgeyBTa3lGaWx0ZXJNb2R1bGUsIFNreVNvcnRNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGlzdHMnO1xuaW1wb3J0IHsgU2t5U2VhcmNoTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbmltcG9ydCB7IFNreUxpc3RGaWx0ZXJzTW9kdWxlIH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5TGlzdEJ1aWxkZXJSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxpc3QtYnVpbGRlci1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5TGlzdE11bHRpc2VsZWN0VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1tdWx0aXNlbGVjdC10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhckl0ZW1SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFyU2VhcmNoQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXNlYXJjaC1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMaXN0VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTGlzdCBidWlsZGVyIGFuZCBpdHMgZmVhdHVyZXMgYXJlIGRlcHJlY2F0ZWQuIFVzZSBkYXRhIG1hbmFnZXIgaW5zdGVhZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0YS1tYW5hZ2VyLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lMaXN0VG9vbGJhckNvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJJdGVtUmVuZGVyZXJDb21wb25lbnQsXG4gICAgU2t5TGlzdE11bHRpc2VsZWN0VG9vbGJhckNvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclNlYXJjaEFjdGlvbnNDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hNb2R1bGUsXG4gICAgU2t5STE4bk1vZHVsZSxcbiAgICBTa3lUb29sYmFyTW9kdWxlLFxuICAgIFNreVNlYXJjaE1vZHVsZSxcbiAgICBTa3lTb3J0TW9kdWxlLFxuICAgIFNreUZpbHRlck1vZHVsZSxcbiAgICBTa3lMaXN0RmlsdGVyc01vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5TGlzdFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyU2VhcmNoQWN0aW9uc0NvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFRvb2xiYXJNb2R1bGUge31cbiJdfQ==