@koobiq/components 18.36.0 → 18.38.0
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.
- package/autocomplete/autocomplete.scss +2 -17
- package/breadcrumbs/breadcrumbs.d.ts +2 -1
- package/breadcrumbs/breadcrumbs.scss +4 -4
- package/button/button.component.d.ts +1 -0
- package/button-toggle/button-toggle.scss +0 -2
- package/content-panel/content-panel.d.ts +1 -1
- package/content-panel/index.d.ts +0 -1
- package/core/common-behaviors/hover.d.ts +15 -0
- package/core/common-behaviors/index.d.ts +1 -1
- package/core/locales/en-US.d.ts +6 -0
- package/core/locales/es-LA.d.ts +6 -0
- package/core/locales/formatters.d.ts +0 -72
- package/core/locales/index.d.ts +0 -2
- package/core/locales/locale-service.d.ts +24 -386
- package/core/locales/pt-BR.d.ts +6 -0
- package/core/locales/ru-RU.d.ts +6 -0
- package/core/locales/tk-TM.d.ts +6 -0
- package/core/option/option.d.ts +3 -2
- package/core/pop-up/pop-up-trigger.d.ts +3 -1
- package/core/pop-up/pop-up.d.ts +1 -0
- package/core/select/common.d.ts +3 -1
- package/core/styles/common/_select.scss +20 -0
- package/core/styles/typography/_typography.scss +23 -82
- package/datepicker/datepicker-module.d.ts +2 -1
- package/dropdown/dropdown-item.scss +8 -7
- package/dropdown/dropdown.scss +5 -14
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
- package/esm2022/breadcrumbs/breadcrumbs.mjs +46 -37
- package/esm2022/button/button.component.mjs +6 -4
- package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
- package/esm2022/code-block/code-block-highlight.mjs +6 -1
- package/esm2022/content-panel/content-panel.mjs +2 -2
- package/esm2022/content-panel/index.mjs +1 -2
- package/esm2022/core/common-behaviors/color.mjs +2 -1
- package/esm2022/core/common-behaviors/common-module.mjs +2 -1
- package/esm2022/core/common-behaviors/disabled.mjs +2 -1
- package/esm2022/core/common-behaviors/error-state.mjs +2 -1
- package/esm2022/core/common-behaviors/hover.mjs +34 -0
- package/esm2022/core/common-behaviors/index.mjs +2 -2
- package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
- package/esm2022/core/form-field/field-sizing-content.mjs +5 -2
- package/esm2022/core/formatters/number/formatter.mjs +2 -2
- package/esm2022/core/locales/en-US.mjs +7 -1
- package/esm2022/core/locales/es-LA.mjs +16 -10
- package/esm2022/core/locales/formatters.mjs +1 -73
- package/esm2022/core/locales/index.mjs +1 -3
- package/esm2022/core/locales/locale-service.mjs +5 -8
- package/esm2022/core/locales/pt-BR.mjs +25 -19
- package/esm2022/core/locales/ru-RU.mjs +7 -1
- package/esm2022/core/locales/tk-TM.mjs +30 -24
- package/esm2022/core/option/option.mjs +10 -6
- package/esm2022/core/pop-up/pop-up-trigger.mjs +2 -1
- package/esm2022/core/pop-up/pop-up.mjs +36 -2
- package/esm2022/core/select/common.mjs +10 -4
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +5 -4
- package/esm2022/datepicker/datepicker-module.mjs +7 -4
- package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +5 -2
- package/esm2022/file-upload/file-drop.mjs +5 -3
- package/esm2022/file-upload/multiple-file-upload.component.mjs +9 -13
- package/esm2022/file-upload/single-file-upload.component.mjs +9 -4
- package/esm2022/filter-bar/filter-bar.mjs +6 -2
- package/esm2022/filter-bar/filter-search.mjs +3 -3
- package/esm2022/filter-bar/filters.mjs +10 -5
- package/esm2022/filter-bar/pipe-add.mjs +3 -2
- package/esm2022/filter-bar/pipes/base-pipe.mjs +11 -3
- package/esm2022/filter-bar/pipes/pipe-date.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +5 -4
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-title.mjs +24 -19
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
- package/esm2022/form-field/fieldset.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +2 -2
- package/esm2022/form-field/stepper.mjs +41 -10
- package/esm2022/inline-edit/inline-edit.mjs +9 -5
- package/esm2022/input/input-number.mjs +7 -6
- package/esm2022/input/input.module.mjs +7 -4
- package/esm2022/list/list-selection.component.mjs +31 -15
- package/esm2022/markdown/markdown.component.mjs +7 -7
- package/esm2022/modal/modal-util.mjs +7 -3
- package/esm2022/modal/modal.component.mjs +2 -2
- package/esm2022/modal/modal.service.mjs +2 -1
- package/esm2022/navbar/navbar-brand.component.mjs +105 -0
- package/esm2022/navbar/navbar-item.component.mjs +18 -170
- package/esm2022/navbar/navbar-toggle.component.mjs +88 -0
- package/esm2022/navbar/navbar.component.mjs +8 -4
- package/esm2022/navbar/navbar.module.mjs +4 -2
- package/esm2022/navbar/public-api.mjs +3 -1
- package/esm2022/navbar/vertical-navbar.component.mjs +28 -6
- package/esm2022/navbar-ic/navbar-ic-header.mjs +20 -4
- package/esm2022/navbar-ic/navbar-ic-item.mjs +7 -8
- package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
- package/esm2022/navbar-ic/navbar-ic.mjs +33 -9
- package/esm2022/notification-center/notification-center.mjs +9 -33
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +24 -5
- package/esm2022/resizer/index.mjs +3 -0
- package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
- package/esm2022/resizer/module.mjs +17 -0
- package/esm2022/resizer/resizer.mjs +135 -0
- package/esm2022/scrollbar/scrollbar.directive.mjs +4 -3
- package/esm2022/search-expandable/search-expandable.mjs +5 -5
- package/esm2022/select/select.component.mjs +2 -14
- package/esm2022/select/select.module.mjs +8 -4
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/split-button/split-button.mjs +47 -6
- package/esm2022/tags/tag-input.mjs +24 -28
- package/esm2022/tags/tag-list.component.mjs +76 -87
- package/esm2022/tags/tag.component.mjs +29 -34
- package/esm2022/textarea/textarea.module.mjs +5 -4
- package/esm2022/time-range/constants.mjs +22 -1
- package/esm2022/time-range/time-range-editor.mjs +11 -6
- package/esm2022/time-range/time-range-title-as-form-field.mjs +2 -1
- package/esm2022/time-range/time-range.mjs +8 -3
- package/esm2022/time-range/time-range.service.mjs +43 -106
- package/esm2022/time-range/types.mjs +1 -1
- package/esm2022/timepicker/timepicker.module.mjs +5 -4
- package/esm2022/timezone/timezone-option.component.mjs +2 -2
- package/esm2022/timezone/timezone.module.mjs +6 -4
- package/esm2022/title/title.directive.mjs +6 -2
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/esm2022/top-bar/top-bar.mjs +2 -2
- package/esm2022/tree/tree-option.component.mjs +7 -6
- package/esm2022/tree/tree-selection.component.mjs +23 -13
- package/esm2022/tree-select/tree-select.component.mjs +97 -79
- package/esm2022/tree-select/tree-select.module.mjs +7 -4
- package/fesm2022/koobiq-components-autocomplete.mjs +3 -3
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +45 -36
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +5 -3
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +5 -0
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +3 -137
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +156 -478
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +8 -5
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +4 -4
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +4 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +19 -17
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +64 -41
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +44 -17
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +8 -4
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +12 -9
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +30 -14
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +6 -6
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -4
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +70 -26
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +792 -740
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +8 -32
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +25 -6
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +156 -0
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +3 -2
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +4 -4
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +8 -17
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +46 -5
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +125 -146
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +4 -4
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +81 -112
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +4 -4
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +7 -5
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +5 -1
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +2 -2
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +102 -82
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +28 -17
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +32 -34
- package/file-upload/file-upload-tokens.scss +1 -2
- package/file-upload/file-upload.scss +4 -7
- package/file-upload/multiple-file-upload.component.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.scss +12 -14
- package/file-upload/single-file-upload.component.d.ts +1 -0
- package/file-upload/single-file-upload.component.scss +5 -7
- package/filter-bar/filter-bar.d.ts +3 -1
- package/filter-bar/filter-search.scss +1 -3
- package/filter-bar/filters.d.ts +1 -0
- package/filter-bar/pipes/base-pipe.d.ts +5 -1
- package/filter-bar/pipes/pipe-date.scss +4 -2
- package/filter-bar/pipes/pipe-title.d.ts +2 -0
- package/form-field/fieldset-tokens.scss +2 -1
- package/form-field/form-field-tokens.scss +2 -2
- package/form-field/form-field.scss +9 -1
- package/form-field/stepper.d.ts +28 -6
- package/inline-edit/inline-edit.d.ts +5 -1
- package/input/input.module.d.ts +2 -1
- package/list/list-selection.component.d.ts +12 -1
- package/markdown/_markdown-theme.scss +0 -1
- package/markdown/markdown.scss +2 -4
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal-util.d.ts +5 -2
- package/modal/modal.scss +3 -4
- package/navbar/_navbar-item_vertical.scss +44 -43
- package/navbar/_navbar-theme.scss +14 -35
- package/navbar/navbar-brand.component.d.ts +39 -0
- package/navbar/navbar-brand.scss +78 -45
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.component.d.ts +4 -36
- package/navbar/navbar-toggle.component.d.ts +23 -0
- package/navbar/navbar-toggle.scss +64 -0
- package/navbar/navbar-tokens.scss +1 -0
- package/navbar/navbar.module.d.ts +8 -6
- package/navbar/public-api.d.ts +2 -0
- package/navbar/vertical-navbar.component.d.ts +20 -2
- package/navbar/vertical-navbar.scss +14 -9
- package/navbar-ic/navbar-ic-header.d.ts +3 -2
- package/navbar-ic/navbar-ic-header.scss +0 -4
- package/navbar-ic/navbar-ic-item.d.ts +1 -0
- package/navbar-ic/navbar-ic-item.scss +0 -4
- package/navbar-ic/navbar-ic.animation.d.ts +1 -0
- package/navbar-ic/navbar-ic.d.ts +7 -0
- package/notification-center/notification-center.d.ts +12 -9
- package/package.json +16 -10
- package/popover/popover-tokens.scss +1 -0
- package/popover/popover.component.d.ts +12 -1
- package/popover/popover.scss +3 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +2 -0
- package/resizer/module.d.ts +7 -0
- package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
- package/schematics/collection.json +5 -0
- package/schematics/migrations/icons-replacement/README.md +93 -0
- package/schematics/migrations/icons-replacement/data.js +92 -0
- package/schematics/migrations/icons-replacement/index.js +84 -0
- package/schematics/migrations/icons-replacement/schema.json +32 -0
- package/schematics/ng-add/index.js +6 -6
- package/scrollbar/scrollbar.component.scss +2 -3
- package/select/select.module.d.ts +2 -1
- package/select/select.scss +1 -17
- package/sidepanel/sidepanel-tokens.scss +2 -0
- package/sidepanel/sidepanel.scss +2 -0
- package/split-button/_split-button-theme.scss +89 -34
- package/split-button/split-button.d.ts +11 -5
- package/split-button/split-button.scss +40 -51
- package/tags/tag-input.d.ts +16 -7
- package/tags/tag-list.component.d.ts +44 -21
- package/tags/tag-list.scss +13 -14
- package/tags/tag.component.d.ts +20 -15
- package/textarea/textarea-tokens.scss +6 -1
- package/textarea/textarea.module.d.ts +2 -1
- package/textarea/textarea.scss +4 -0
- package/time-range/constants.d.ts +12 -1
- package/time-range/time-range-editor.d.ts +7 -9
- package/time-range/time-range-title-as-form-field.d.ts +1 -0
- package/time-range/time-range.d.ts +5 -2
- package/time-range/time-range.service.d.ts +7 -11
- package/time-range/types.d.ts +37 -11
- package/timepicker/timepicker.module.d.ts +2 -1
- package/timezone/timezone-option.component.scss +6 -0
- package/timezone/timezone.module.d.ts +1 -1
- package/toggle/_toggle-theme.scss +8 -5
- package/toggle/toggle-tokens.scss +0 -1
- package/toggle/toggle.scss +11 -15
- package/top-bar/top-bar-tokens.scss +1 -1
- package/top-bar/top-bar.scss +3 -0
- package/tree/tree-option.component.d.ts +1 -0
- package/tree/tree-selection.component.d.ts +11 -2
- package/tree-select/tree-select.component.d.ts +5 -5
- package/tree-select/tree-select.module.d.ts +2 -1
- package/tree-select/tree-select.scss +4 -0
- package/core/common-behaviors/hovered.d.ts +0 -13
- package/core/locales/fa-IR.d.ts +0 -162
- package/core/locales/zh-CN.d.ts +0 -162
- package/esm2022/content-panel/resizable.mjs +0 -138
- package/esm2022/core/common-behaviors/hovered.mjs +0 -31
- package/esm2022/core/locales/fa-IR.mjs +0 -173
- package/esm2022/core/locales/zh-CN.mjs +0 -161
|
@@ -12,6 +12,7 @@ import { KbqTooltipTrigger, TooltipModifier } from '@koobiq/components/tooltip';
|
|
|
12
12
|
import { Subject } from 'rxjs';
|
|
13
13
|
import { take } from 'rxjs/operators';
|
|
14
14
|
import { KbqNavbarIc } from './navbar-ic';
|
|
15
|
+
import { toggleNavbarIcItemAnimation } from './navbar-ic.animation';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
import * as i1 from "@koobiq/components/core";
|
|
17
18
|
/**
|
|
@@ -228,10 +229,7 @@ export class KbqNavbarIcItem extends KbqTooltipTrigger {
|
|
|
228
229
|
return this.title?.text;
|
|
229
230
|
}
|
|
230
231
|
get disabled() {
|
|
231
|
-
|
|
232
|
-
return this._disabled;
|
|
233
|
-
}
|
|
234
|
-
return !this.collapsed && !this.hasCroppedText;
|
|
232
|
+
return this.collapsed || !this.hasCroppedText || this._disabled;
|
|
235
233
|
}
|
|
236
234
|
set disabled(value) {
|
|
237
235
|
this._disabled = coerceBooleanProperty(value);
|
|
@@ -248,6 +246,7 @@ export class KbqNavbarIcItem extends KbqTooltipTrigger {
|
|
|
248
246
|
constructor() {
|
|
249
247
|
super();
|
|
250
248
|
this.rectangleElement = inject(KbqRectangleItem);
|
|
249
|
+
this.navbar = inject(KbqNavbarIc);
|
|
251
250
|
this.navbarFocusableItem = inject(KbqNavbarIcFocusableItem);
|
|
252
251
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
253
252
|
this.dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });
|
|
@@ -257,7 +256,7 @@ export class KbqNavbarIcItem extends KbqTooltipTrigger {
|
|
|
257
256
|
this.dropdownTrigger.openByArrowDown = false;
|
|
258
257
|
}
|
|
259
258
|
this.rectangleElement.state.subscribe(() => {
|
|
260
|
-
this.collapsed = this.rectangleElement.collapsed;
|
|
259
|
+
this.disabled = this.collapsed = this.rectangleElement.collapsed;
|
|
261
260
|
this.changeDetectorRef.markForCheck();
|
|
262
261
|
});
|
|
263
262
|
this._trigger = `${PopUpTriggers.Hover}`;
|
|
@@ -298,7 +297,7 @@ export class KbqNavbarIcItem extends KbqTooltipTrigger {
|
|
|
298
297
|
}
|
|
299
298
|
}
|
|
300
299
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNavbarIcItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
301
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqNavbarIcItem, isStandalone: true, selector: "kbq-navbar-ic-item, [kbq-navbar-ic-item]", inputs: { trigger: ["kbqTrigger", "trigger"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.kbq-navbar-ic-item_with-title": "!!title" }, classAttribute: "kbq-navbar-ic-item" }, queries: [{ propertyName: "title", first: true, predicate: KbqNavbarIcTitle, descendants: true }, { propertyName: "icon", first: true, predicate: KbqIcon, descendants: true }, { propertyName: "button", first: true, predicate: KbqButtonCssStyler, descendants: true }], exportAs: ["kbqNavbarIcItem"], usesInheritance: true, hostDirectives: [{ directive: i1.KbqRectangleItem }], ngImport: i0, template: "<div class=\"kbq-navbar-ic-item__inner\">\n <ng-content select=\"[kbq-icon]\" />\n\n @if (title && !collapsed) {\n <div class=\"kbq-navbar-ic-item__title-container\">\n <ng-content select=\"[kbqNavbarIcTitle]\" />\n\n @if (showDropDownAngle) {\n <i kbq-icon=\"kbq-chevron-right_16\" class=\"kbq-navbar-ic-item__arrow-icon\"></i>\n }\n </div>\n }\n\n <ng-content />\n</div>\n", styles: [".kbq-navbar-ic-item{box-sizing:border-box;display:flex;padding:var(--kbq-size-3xs) var(--kbq-size-m)}.kbq-navbar-ic-item .kbq-icon{min-width:var(--kbq-size-l);min-height:var(--kbq-size-l)}.kbq-navbar-ic-item .kbq-navbar-ic-item__title-container{gap:var(--kbq-size-m)}.kbq-navbar-ic-item.kbq-collapsed .kbq-badge{position:absolute;z-index:1;top:0;right:0}.kbq-navbar-ic-item
|
|
300
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqNavbarIcItem, isStandalone: true, selector: "kbq-navbar-ic-item, [kbq-navbar-ic-item]", inputs: { trigger: ["kbqTrigger", "trigger"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.kbq-navbar-ic-item_with-title": "!!title" }, classAttribute: "kbq-navbar-ic-item" }, queries: [{ propertyName: "title", first: true, predicate: KbqNavbarIcTitle, descendants: true }, { propertyName: "icon", first: true, predicate: KbqIcon, descendants: true }, { propertyName: "button", first: true, predicate: KbqButtonCssStyler, descendants: true }], exportAs: ["kbqNavbarIcItem"], usesInheritance: true, hostDirectives: [{ directive: i1.KbqRectangleItem }], ngImport: i0, template: "<div class=\"kbq-navbar-ic-item__inner\">\n <ng-content select=\"[kbq-icon]\" />\n\n @if (title && !collapsed) {\n <div class=\"kbq-navbar-ic-item__title-container\" [@toggle]=\"navbar.state.value\">\n <ng-content select=\"[kbqNavbarIcTitle]\" />\n\n @if (showDropDownAngle) {\n <i kbq-icon=\"kbq-chevron-right_16\" class=\"kbq-navbar-ic-item__arrow-icon\"></i>\n }\n </div>\n }\n\n <ng-content />\n</div>\n", styles: [".kbq-navbar-ic-item{box-sizing:border-box;display:flex;padding:var(--kbq-size-3xs) var(--kbq-size-m)}.kbq-navbar-ic-item .kbq-icon{min-width:var(--kbq-size-l);min-height:var(--kbq-size-l)}.kbq-navbar-ic-item .kbq-navbar-ic-item__title-container{gap:var(--kbq-size-m)}.kbq-navbar-ic-item.kbq-collapsed .kbq-badge{position:absolute;z-index:1;top:0;right:0}.kbq-navbar-ic-item>.kbq-icon{display:flex;justify-content:center;align-items:center}.kbq-navbar-ic-item__inner{position:relative;display:flex;align-items:center;height:36px;width:100%;max-width:calc(100% - var(--kbq-size-xxl));gap:var(--kbq-size-m);padding-left:var(--kbq-size-m);padding-right:var(--kbq-size-m);border-radius:var(--kbq-navbar-ic-item-size-content-border-radius)}.kbq-navbar-ic-title{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kbq-navbar-ic-item__title-container{display:flex;flex-direction:row;flex:1 1 auto;justify-content:space-between;min-width:0}.kbq-navbar-ic-item__title-container .kbq-icon{align-self:center}a.kbq-navbar-ic-item,a.kbq-navbar-ic-title{text-decoration:none}.kbq-navbar-ic-item [kbq-button],.kbq-navbar-ic-header [kbq-button],.kbq-navbar-ic-toggle [kbq-button]{z-index:1}.kbq-navbar-ic-toggle .kbq-navbar-ic-item__inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"], dependencies: [{ kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], animations: [toggleNavbarIcItemAnimation()], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
302
301
|
}
|
|
303
302
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNavbarIcItem, decorators: [{
|
|
304
303
|
type: Component,
|
|
@@ -306,7 +305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
306
305
|
class: 'kbq-navbar-ic-item',
|
|
307
306
|
'[class.kbq-navbar-ic-item_with-title]': '!!title',
|
|
308
307
|
'(keydown)': 'onKeyDown($event)'
|
|
309
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, hostDirectives: [KbqRectangleItem], imports: [KbqIcon], template: "<div class=\"kbq-navbar-ic-item__inner\">\n <ng-content select=\"[kbq-icon]\" />\n\n @if (title && !collapsed) {\n <div class=\"kbq-navbar-ic-item__title-container\">\n <ng-content select=\"[kbqNavbarIcTitle]\" />\n\n @if (showDropDownAngle) {\n <i kbq-icon=\"kbq-chevron-right_16\" class=\"kbq-navbar-ic-item__arrow-icon\"></i>\n }\n </div>\n }\n\n <ng-content />\n</div>\n", styles: [".kbq-navbar-ic-item{box-sizing:border-box;display:flex;padding:var(--kbq-size-3xs) var(--kbq-size-m)}.kbq-navbar-ic-item .kbq-icon{min-width:var(--kbq-size-l);min-height:var(--kbq-size-l)}.kbq-navbar-ic-item .kbq-navbar-ic-item__title-container{gap:var(--kbq-size-m)}.kbq-navbar-ic-item.kbq-collapsed .kbq-badge{position:absolute;z-index:1;top:0;right:0}.kbq-navbar-ic-item
|
|
308
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, hostDirectives: [KbqRectangleItem], imports: [KbqIcon], animations: [toggleNavbarIcItemAnimation()], template: "<div class=\"kbq-navbar-ic-item__inner\">\n <ng-content select=\"[kbq-icon]\" />\n\n @if (title && !collapsed) {\n <div class=\"kbq-navbar-ic-item__title-container\" [@toggle]=\"navbar.state.value\">\n <ng-content select=\"[kbqNavbarIcTitle]\" />\n\n @if (showDropDownAngle) {\n <i kbq-icon=\"kbq-chevron-right_16\" class=\"kbq-navbar-ic-item__arrow-icon\"></i>\n }\n </div>\n }\n\n <ng-content />\n</div>\n", styles: [".kbq-navbar-ic-item{box-sizing:border-box;display:flex;padding:var(--kbq-size-3xs) var(--kbq-size-m)}.kbq-navbar-ic-item .kbq-icon{min-width:var(--kbq-size-l);min-height:var(--kbq-size-l)}.kbq-navbar-ic-item .kbq-navbar-ic-item__title-container{gap:var(--kbq-size-m)}.kbq-navbar-ic-item.kbq-collapsed .kbq-badge{position:absolute;z-index:1;top:0;right:0}.kbq-navbar-ic-item>.kbq-icon{display:flex;justify-content:center;align-items:center}.kbq-navbar-ic-item__inner{position:relative;display:flex;align-items:center;height:36px;width:100%;max-width:calc(100% - var(--kbq-size-xxl));gap:var(--kbq-size-m);padding-left:var(--kbq-size-m);padding-right:var(--kbq-size-m);border-radius:var(--kbq-navbar-ic-item-size-content-border-radius)}.kbq-navbar-ic-title{display:inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kbq-navbar-ic-item__title-container{display:flex;flex-direction:row;flex:1 1 auto;justify-content:space-between;min-width:0}.kbq-navbar-ic-item__title-container .kbq-icon{align-self:center}a.kbq-navbar-ic-item,a.kbq-navbar-ic-title{text-decoration:none}.kbq-navbar-ic-item [kbq-button],.kbq-navbar-ic-header [kbq-button],.kbq-navbar-ic-toggle [kbq-button]{z-index:1}.kbq-navbar-ic-toggle .kbq-navbar-ic-item__inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"] }]
|
|
310
309
|
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
311
310
|
type: ContentChild,
|
|
312
311
|
args: [KbqNavbarIcTitle]
|
|
@@ -388,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
388
387
|
'(click)': 'toggle()'
|
|
389
388
|
}, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KbqIcon], hostDirectives: [KbqRectangleItem], styles: [".kbq-navbar-ic-container{display:flex;flex-shrink:0;flex-direction:column;justify-content:space-between}.kbq-navbar-ic{display:flex;position:relative}.kbq-navbar-ic .kbq-navbar-ic-container+.kbq-navbar-ic-container{padding-top:var(--kbq-size-xxl);padding-bottom:var(--kbq-size-m)}.kbq-navbar-ic .kbq-navbar-ic__top-layer{position:absolute;z-index:998;display:flex;flex-direction:column;justify-content:space-between;min-height:100%}.kbq-navbar-ic .kbq-navbar-ic__top-layer{background-color:var(--kbq-navbar-ic-background);box-shadow:var(--kbq-navbar-ic-border)}.kbq-navbar-ic-item,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive,.kbq-navbar-ic-toggle{cursor:pointer}.kbq-navbar-ic-item .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle .kbq-navbar-ic-header__inner{background:var(--kbq-navbar-ic-item-default-content-background)}.kbq-navbar-ic-item .kbq-navbar-ic-title,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive .kbq-navbar-ic-title,.kbq-navbar-ic-toggle .kbq-navbar-ic-title{color:var(--kbq-navbar-ic-item-default-content-text)}.kbq-navbar-ic-item>.kbq-icon.kbq-empty,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive>.kbq-icon.kbq-empty,.kbq-navbar-ic-toggle>.kbq-icon.kbq-empty{color:var(--kbq-navbar-ic-item-default-content-icon-left)}.kbq-navbar-ic-item .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-toggle .kbq-navbar-ic-item__arrow-icon{color:var(--kbq-navbar-ic-item-default-content-icon-right)}.kbq-navbar-ic-item:not(.kbq-disabled):hover .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item:not(.kbq-disabled):hover .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):hover .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):hover .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled):hover .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled):hover .kbq-navbar-ic-header__inner{background:var(--kbq-navbar-ic-item-states-hover-content-background)}.kbq-navbar-ic-item:not(.kbq-disabled):hover .kbq-navbar-ic-title,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):hover .kbq-navbar-ic-title,.kbq-navbar-ic-toggle:not(.kbq-disabled):hover .kbq-navbar-ic-title{color:var(--kbq-navbar-ic-item-states-hover-content-text)}.kbq-navbar-ic-item:not(.kbq-disabled):hover>.kbq-icon.kbq-empty,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):hover>.kbq-icon.kbq-empty,.kbq-navbar-ic-toggle:not(.kbq-disabled):hover>.kbq-icon.kbq-empty{color:var(--kbq-navbar-ic-item-states-hover-content-icon-left)}.kbq-navbar-ic-item:not(.kbq-disabled):hover .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):hover .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-toggle:not(.kbq-disabled):hover .kbq-navbar-ic-item__arrow-icon{color:var(--kbq-navbar-ic-item-states-hover-content-icon-right)}.kbq-navbar-ic-item:not(.kbq-disabled).cdk-keyboard-focused,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).cdk-keyboard-focused,.kbq-navbar-ic-toggle:not(.kbq-disabled).cdk-keyboard-focused{outline:none}.kbq-navbar-ic-item:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled).cdk-keyboard-focused .kbq-navbar-ic-header__inner{box-shadow:inset 0 0 0 2px var(--kbq-states-line-focus-theme)}.kbq-navbar-ic-item:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item:not(.kbq-disabled).kbq-active .kbq-navbar-ic-header__inner,.kbq-navbar-ic-item:not(.kbq-disabled):active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item:not(.kbq-disabled):active .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).kbq-active .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):active .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled).kbq-active .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled):active .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle:not(.kbq-disabled):active .kbq-navbar-ic-header__inner{background:var(--kbq-navbar-ic-item-states-selected-content-background)}.kbq-navbar-ic-item:not(.kbq-disabled).kbq-active .kbq-navbar-ic-title,.kbq-navbar-ic-item:not(.kbq-disabled):active .kbq-navbar-ic-title,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).kbq-active .kbq-navbar-ic-title,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):active .kbq-navbar-ic-title,.kbq-navbar-ic-toggle:not(.kbq-disabled).kbq-active .kbq-navbar-ic-title,.kbq-navbar-ic-toggle:not(.kbq-disabled):active .kbq-navbar-ic-title{color:var(--kbq-navbar-ic-item-states-selected-content-text)}.kbq-navbar-ic-item:not(.kbq-disabled).kbq-active>.kbq-icon.kbq-empty,.kbq-navbar-ic-item:not(.kbq-disabled):active>.kbq-icon.kbq-empty,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).kbq-active>.kbq-icon.kbq-empty,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):active>.kbq-icon.kbq-empty,.kbq-navbar-ic-toggle:not(.kbq-disabled).kbq-active>.kbq-icon.kbq-empty,.kbq-navbar-ic-toggle:not(.kbq-disabled):active>.kbq-icon.kbq-empty{color:var(--kbq-navbar-ic-item-states-selected-content-icon-left)}.kbq-navbar-ic-item:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-item:not(.kbq-disabled):active .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive:not(.kbq-disabled):active .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-toggle:not(.kbq-disabled).kbq-active .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-toggle:not(.kbq-disabled):active .kbq-navbar-ic-item__arrow-icon{color:var(--kbq-navbar-ic-item-states-selected-content-icon-right)}.kbq-navbar-ic-item.kbq-disabled,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled,.kbq-navbar-ic-toggle.kbq-disabled{pointer-events:none;cursor:default}.kbq-navbar-ic-item.kbq-disabled .kbq-navbar-ic-item__inner,.kbq-navbar-ic-item.kbq-disabled .kbq-navbar-ic-header__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled .kbq-navbar-ic-item__inner,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled .kbq-navbar-ic-header__inner,.kbq-navbar-ic-toggle.kbq-disabled .kbq-navbar-ic-item__inner,.kbq-navbar-ic-toggle.kbq-disabled .kbq-navbar-ic-header__inner{background:var(--kbq-navbar-ic-item-states-disabled-content-background)}.kbq-navbar-ic-item.kbq-disabled .kbq-navbar-ic-title,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled .kbq-navbar-ic-title,.kbq-navbar-ic-toggle.kbq-disabled .kbq-navbar-ic-title{color:var(--kbq-navbar-ic-item-states-disabled-content-text)}.kbq-navbar-ic-item.kbq-disabled>.kbq-icon.kbq-empty,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled>.kbq-icon.kbq-empty,.kbq-navbar-ic-toggle.kbq-disabled>.kbq-icon.kbq-empty{color:var(--kbq-navbar-ic-item-states-disabled-content-icon-left)}.kbq-navbar-ic-item.kbq-disabled .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-header.kbq-navbar-ic-header_interactive.kbq-disabled .kbq-navbar-ic-item__arrow-icon,.kbq-navbar-ic-toggle.kbq-disabled .kbq-navbar-ic-item__arrow-icon{color:var(--kbq-navbar-ic-item-states-disabled-content-icon-right)}.kbq-navbar-ic-divider{background:var(--kbq-line-contrast-less)}.kbq-navbar-ic-title{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}.kbq-navbar-ic-header .kbq-navbar-ic-title{font-size:var(--kbq-typography-text-big-strong-font-size);font-style:var(--kbq-typography-text-big-strong-font-style);font-weight:var(--kbq-typography-text-big-strong-font-weight);line-height:var(--kbq-typography-text-big-strong-line-height);font-family:var(--kbq-typography-text-big-strong-font-family);text-transform:var(--kbq-typography-text-big-strong-text-transform);font-feature-settings:var(--kbq-typography-text-big-strong-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-strong-letter-spacing)}.kbq-navbar-ic-header .kbq-navbar-ic-title.kbq-navbar-ic-title_text-overflown{font-size:var(--kbq-typography-text-compact-strong-font-size);font-style:var(--kbq-typography-text-compact-strong-font-style);font-weight:var(--kbq-typography-text-compact-strong-font-weight);line-height:var(--kbq-typography-text-compact-strong-line-height);font-family:var(--kbq-typography-text-compact-strong-font-family);text-transform:var(--kbq-typography-text-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-text-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-strong-letter-spacing);line-height:12px}\n"] }]
|
|
390
389
|
}], ctorParameters: () => [] });
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWljLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL25hdmJhci1pYy9uYXZiYXItaWMtaXRlbS50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvbmF2YmFyLWljL25hdmJhci1pYy1pdGVtLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUNILFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEYs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RSxpQkFBaUI7d0JBRXpDLFdBQVcsRUFBRSxtQkFBbUI7d0JBQ2hDLFNBQVMsRUFBRSxVQUFVO3FCQUN4QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLE9BQU8sQ0FBQyxrQkFDRixDQUFDLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGtvb2JpcS9jZGsvYTExeSc7XG5pbXBvcnQgeyBFTlRFUiwgUklHSFRfQVJST1csIFNQQUNFIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS2JxQnV0dG9uLCBLYnFCdXR0b25Dc3NTdHlsZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgS0JRX1dJTkRPVyxcbiAgICBrYnFJbmplY3ROYXRpdmVFbGVtZW50LFxuICAgIEticVJlY3RhbmdsZUl0ZW0sXG4gICAgUG9wVXBQbGFjZW1lbnRzLFxuICAgIFBvcFVwVHJpZ2dlcnNcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25UcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUZvcm1GaWVsZCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb24gfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFUb29sdGlwVHJpZ2dlciwgVG9vbHRpcE1vZGlmaWVyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEticU5hdmJhckljIH0gZnJvbSAnLi9uYXZiYXItaWMnO1xuXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiBhIHRpdGxlIHdpdGhvdXQgYmVpbmcgd3JhcHBlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGticU1heFN5bWJvbHNJbkhlYWRlclRpdGxlID0gMjI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxTmF2YmFyRm9jdXNhYmxlSXRlbUV2ZW50IHtcbiAgICBpdGVtOiBLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW07XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxTmF2YmFySWNMb2dvXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1uYXZiYXItaWMtbG9nbydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljTG9nbyB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticU5hdmJhckljVGl0bGVdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW5hdmJhci1pYy10aXRsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLW5hdmJhci1pYy10aXRsZV90ZXh0LW92ZXJmbG93bl0nOiAnaXNUZXh0T3ZlcmZsb3duJyxcblxuICAgICAgICAnKG1vdXNlZW50ZXIpJzogJ2hvdmVyZWQubmV4dCh0cnVlKScsXG4gICAgICAgICcobW91c2VsZWF2ZSknOiAnaG92ZXJlZC5uZXh0KGZhbHNlKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljVGl0bGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNCcm93c2VyID0gaW5qZWN0KFBsYXRmb3JtKS5pc0Jyb3dzZXI7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSBrYnFJbmplY3ROYXRpdmVFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3cgPSBpbmplY3QoS0JRX1dJTkRPVyk7XG5cbiAgICByZWFkb25seSBob3ZlcmVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIG91dGVyRWxlbWVudFdpZHRoOiBudW1iZXI7XG4gICAgaXNUZXh0T3ZlcmZsb3duOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgdGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IHx8ICcnO1xuICAgIH1cblxuICAgIGdldCBpc092ZXJmbG93bigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRoaXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3V0ZXJFbGVtZW50V2lkdGggPSB0aGlzLmdldE91dGVyRWxlbWVudFdpZHRoKCk7XG5cbiAgICAgICAgdGhpcy5jaGVja1RleHRPdmVyZmxvd24oKTtcbiAgICB9XG5cbiAgICBnZXRPdXRlckVsZW1lbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCB7IHdpZHRoLCBtYXJnaW5MZWZ0LCBtYXJnaW5SaWdodCB9ID0gdGhpcy53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBbd2lkdGgsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0XS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgcGFyc2VJbnQoaXRlbSkgfHwgMCwgMCk7XG4gICAgfVxuXG4gICAgY2hlY2tUZXh0T3ZlcmZsb3duKCkge1xuICAgICAgICB0aGlzLmlzVGV4dE92ZXJmbG93biA9IHRoaXMudGV4dC5sZW5ndGggPiBrYnFNYXhTeW1ib2xzSW5IZWFkZXJUaXRsZTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxTmF2YmFySWNEaXZpZGVyXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1uYXZiYXItaWMtZGl2aWRlcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljRGl2aWRlciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOlxuICAgICAgICAna2JxLW5hdmJhci1pYy1pdGVtLCBba2JxLW5hdmJhci1pYy1pdGVtXSwga2JxLW5hdmJhci1pYy1oZWFkZXIsIFtrYnEtbmF2YmFyLWljLWhlYWRlcl0sIGticS1uYXZiYXItaWMtdG9nZ2xlJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuXG4gICAgICAgIGNsYXNzOiAna2JxLW5hdmJhci1pYy1mb2N1c2FibGUtaXRlbScsXG4gICAgICAgICdbY2xhc3Mua2JxLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG5cbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNIYW5kbGVyKCknLFxuICAgICAgICAnKGJsdXIpJzogJ2JsdXJIYW5kbGVyKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElGb2N1c2FibGVPcHRpb24ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxTmF2YmFySWNUaXRsZSkgdGl0bGU6IEticU5hdmJhckljVGl0bGU7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUJ1dHRvbikgYnV0dG9uOiBLYnFCdXR0b247XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUZvcm1GaWVsZCkgZm9ybUZpZWxkOiBLYnFGb3JtRmllbGQ7XG5cbiAgICBnZXQgdG9vbHRpcCgpOiBLYnFUb29sdGlwVHJpZ2dlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Rvb2x0aXA6IEticVRvb2x0aXBUcmlnZ2VyO1xuXG4gICAgcmVhZG9ubHkgb25Gb2N1cyA9IG5ldyBTdWJqZWN0PEticU5hdmJhckZvY3VzYWJsZUl0ZW1FdmVudD4oKTtcblxuICAgIHJlYWRvbmx5IG9uQmx1ciA9IG5ldyBTdWJqZWN0PEticU5hdmJhckZvY3VzYWJsZUl0ZW1FdmVudD4oKTtcblxuICAgIGdldCBoYXNGb2N1cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0ZvY3VzO1xuICAgIH1cblxuICAgIHNldCBoYXNGb2N1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9oYXNGb2N1cyA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hhc0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgaXRlbSBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uLnRhYkluZGV4ID0gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBzZXRUb29sdGlwKHZhbHVlOiBLYnFUb29sdGlwVHJpZ2dlcikge1xuICAgICAgICB0aGlzLl90b29sdGlwID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZm9jdXMob3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5oYXNGb2N1cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLCBvcmlnaW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b29sdGlwPy5zaG93KCk7XG4gICAgICAgIHRoaXMuZm9jdXNIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBmb2N1c0hhbmRsZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaGFzRm9jdXMpIHJldHVybjtcblxuICAgICAgICB0aGlzLm9uRm9jdXMubmV4dCh7IGl0ZW06IHRoaXMgfSk7XG5cbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgYmx1ckhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIC8vIFdoZW4gYW5pbWF0aW9ucyBhcmUgZW5hYmxlZCwgQW5ndWxhciBtYXkgZW5kIHVwIHJlbW92aW5nIHRoZSBvcHRpb24gZnJvbSB0aGUgRE9NIGEgbGl0dGxlXG4gICAgICAgIC8vIGVhcmxpZXIgdGhhbiB1c3VhbCwgY2F1c2luZyBpdCB0byBiZSBibHVycmVkIGFuZCB0aHJvd2luZyBvZmYgdGhlIGxvZ2ljIGluIHRoZSBsaXN0XG4gICAgICAgIC8vIHRoYXQgbW92ZXMgZm9jdXMgbm90IHRoZSBuZXh0IGl0ZW0uIFRvIHdvcmsgYXJvdW5kIHRoZSBpc3N1ZSwgd2UgZGVmZXIgbWFya2luZyB0aGUgb3B0aW9uXG4gICAgICAgIC8vIGFzIG5vdCBmb2N1c2VkIHVudGlsIHRoZSBuZXh0IHRpbWUgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhc0ZvY3VzID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwPy5oaWRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYnV0dG9uPy5oYXNGb2N1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJsdXIubmV4dCh7IGl0ZW06IHRoaXMgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50aXRsZT8udGV4dCB8fCAnJztcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtbmF2YmFyLWljLWl0ZW0sIFtrYnEtbmF2YmFyLWljLWl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2ticU5hdmJhckljSXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdmJhci1pYy1pdGVtLmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9uYXZiYXItaWMtaXRlbS5zY3NzJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW5hdmJhci1pYy1pdGVtJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtbmF2YmFyLWljLWl0ZW1fd2l0aC10aXRsZV0nOiAnISF0aXRsZScsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtLYnFSZWN0YW5nbGVJdGVtXSxcbiAgICBpbXBvcnRzOiBbS2JxSWNvbl1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNJdGVtIGV4dGVuZHMgS2JxVG9vbHRpcFRyaWdnZXIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICByZWFkb25seSByZWN0YW5nbGVFbGVtZW50ID0gaW5qZWN0KEticVJlY3RhbmdsZUl0ZW0pO1xuICAgIHJlYWRvbmx5IG5hdmJhckZvY3VzYWJsZUl0ZW0gPSBpbmplY3QoS2JxTmF2YmFySWNGb2N1c2FibGVJdGVtKTtcblxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZHJvcGRvd25UcmlnZ2VyID0gaW5qZWN0KEticURyb3Bkb3duVHJpZ2dlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHRvb2x0aXAgPSBpbmplY3QoS2JxVG9vbHRpcFRyaWdnZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxTmF2YmFySWNUaXRsZSkgdGl0bGU6IEticU5hdmJhckljVGl0bGU7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUljb24pIGljb246IEticUljb247XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUJ1dHRvbkNzc1N0eWxlcikgYnV0dG9uOiBLYnFCdXR0b25Dc3NTdHlsZXI7XG5cbiAgICBASW5wdXQoJ2ticVRyaWdnZXInKVxuICAgIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICAgIH1cblxuICAgIHNldCB0cmlnZ2VyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdExpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGNvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5fY29sbGFwc2VkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY29sbGFwc2VkID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sbGFwc2VkID0gZmFsc2U7XG5cbiAgICBnZXQgY3JvcHBlZFRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGU/LmlzT3ZlcmZsb3duID8gdGhpcy50aXRsZVRleHQgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgdGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpdGxlPy50ZXh0O1xuICAgIH1cblxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQgJiYgIXRoaXMuaGFzQ3JvcHBlZFRleHQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzRHJvcERvd25UcmlnZ2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duVHJpZ2dlcjtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0Ryb3BEb3duQW5nbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0Ryb3BEb3duVHJpZ2dlciAmJiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0Nyb3BwZWRUZXh0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRpdGxlPy5pc092ZXJmbG93bjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5kcm9wZG93blRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyLm9wZW5CeUFycm93RG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWN0YW5nbGVFbGVtZW50LnN0YXRlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IHRoaXMucmVjdGFuZ2xlRWxlbWVudC5jb2xsYXBzZWQ7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfWA7XG5cbiAgICAgICAgdGhpcy5uYXZiYXJGb2N1c2FibGVJdGVtLnNldFRvb2x0aXAodGhpcyk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwLmFycm93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAub2Zmc2V0ID0gMDtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwWydvdmVybGF5Q29uZmlnJ10ucGFuZWxDbGFzcyA9ICdrYnEtdG9vbHRpcC1wYW5lbF9ob3Jpem9udGFsLW5hdmJhcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duVHJpZ2dlcj8uZHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyLmRyb3Bkb3duLm92ZXJsYXBUcmlnZ2VyWCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blRyaWdnZXIuZHJvcGRvd24ub3ZlcmxhcFRyaWdnZXJZID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIG5lZWRzIHRvIHNoaWZ0IGRyb3Bkb3duIHRvIHRoZSBsZWZ0IGJ5IDggcGl4ZWxzXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlci5vZmZzZXRYID0gLTg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVRvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHVwZGF0ZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5oYXNDcm9wcGVkVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5jcm9wcGVkVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGxhY2VtZW50ID0gUG9wVXBQbGFjZW1lbnRzLlJpZ2h0O1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbktleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNEcm9wRG93blRyaWdnZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duVHJpZ2dlciAmJiB0aGlzLnJlY3RhbmdsZUVsZW1lbnQgJiYgJGV2ZW50LmtleUNvZGUgPT09IFJJR0hUX0FSUk9XKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlci5vcGVuZWRCeSA9ICdrZXlib2FyZCc7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlci5vcGVuKCk7XG5cbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLW5hdmJhci1pYy10b2dnbGUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtbmF2YmFyLWljLWl0ZW1fX2lubmVyXCI+XG4gICAgICAgICAgICBAaWYgKG5hdmJhci5waW5uZWQpIHtcbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbiBbY2xhc3Mua2JxLWJhcnMtYXJyb3ctbGVmdF8xNl09XCJuYXZiYXIuZXhwYW5kZWRcIj48L2k+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticU5hdmJhckljVGl0bGVdXCI+e3sgbG9jYWxlRGF0YS5jb2xsYXBzZUJ1dHRvbiB9fTwvbmctY29udGVudD5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKChuYXZiYXIuZXhwYW5kZWRCeUhvdmVyT3JGb2N1cyB8fCBuYXZiYXIuZXhwYW5kZWRCeVRvZ2dsZSkgJiYgIW5hdmJhci5waW5uZWQpIHtcbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbiBbY2xhc3Mua2JxLWJhcnMtYXJyb3ctcmlnaHRfMTZdPVwibmF2YmFyLmV4cGFuZGVkXCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7IGxvY2FsZURhdGEucGluQnV0dG9uIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbiBbY2xhc3Mua2JxLWJhcnMtYXJyb3ctcmlnaHRfMTZdPVwiIW5hdmJhci5leHBhbmRlZFwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZiYXItaWMuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljLWl0ZW0ga2JxLW5hdmJhci1pYy10b2dnbGUnLFxuICAgICAgICAnW2NsYXNzLmticS1jb2xsYXBzZWRdJzogJyFuYXZiYXIuZXhwYW5kZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1leHBhbmRlZF0nOiAnbmF2YmFyLmV4cGFuZGVkJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhjbGljayknOiAndG9nZ2xlKCknXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtLYnFJY29uXSxcbiAgICBob3N0RGlyZWN0aXZlczogW0ticVJlY3RhbmdsZUl0ZW1dXG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljVG9nZ2xlIHtcbiAgICByZWFkb25seSBuYXZiYXIgPSBpbmplY3QoS2JxTmF2YmFySWMpO1xuICAgIHJlYWRvbmx5IHJlY3RhbmdsZUVsZW1lbnQgPSBpbmplY3QoS2JxUmVjdGFuZ2xlSXRlbSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgcHJvdGVjdGVkIG1vZGlmaWVyOiBUb29sdGlwTW9kaWZpZXIgPSBUb29sdGlwTW9kaWZpZXIuRGVmYXVsdDtcblxuICAgIC8qKiBsb2NhbGl6ZWQgZGF0YVxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2YmFyPy5jb25maWd1cmF0aW9uLnRvZ2dsZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGVFbGVtZW50LnN0YXRlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKFtTUEFDRSwgRU5URVJdLmluY2x1ZGVzKCRldmVudC5rZXlDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcblxuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUgPSAoKSA9PiB7XG4gICAgICAgIGlmICgodGhpcy5uYXZiYXIuZXhwYW5kZWRCeUhvdmVyT3JGb2N1cyB8fCB0aGlzLm5hdmJhci5leHBhbmRlZEJ5VG9nZ2xlKSAmJiAhdGhpcy5uYXZiYXIucGlubmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmJhci5waW5uZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXZiYXIucGlubmVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5hdmJhci50b2dnbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwia2JxLW5hdmJhci1pYy1pdGVtX19pbm5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnEtaWNvbl1cIiAvPlxuXG4gICAgQGlmICh0aXRsZSAmJiAhY29sbGFwc2VkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtbmF2YmFyLWljLWl0ZW1fX3RpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticU5hdmJhckljVGl0bGVdXCIgLz5cblxuICAgICAgICAgICAgQGlmIChzaG93RHJvcERvd25BbmdsZSkge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNoZXZyb24tcmlnaHRfMTZcIiBjbGFzcz1cImticS1uYXZiYXItaWMtaXRlbV9fYXJyb3ctaWNvblwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPG5nLWNvbnRlbnQgLz5cbjwvZGl2PlxuIl19
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWljLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL25hdmJhci1pYy9uYXZiYXItaWMtaXRlbS50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvbmF2YmFyLWljL25hdmJhci1pYy1pdGVtLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUNILFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEYs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Q3RCOzs7Ozs7Ozs7Ozs7S0FZVCxRQUVLO3dCQUNGLEtBQUssRUFBRSx5Q0FBeUM7d0JBQ2hELHVCQUF1QixFQUFFLGtCQUFrQjt3QkFDM0Msc0JBQXNCLEVBQUUsaUJBQWlCO3dCQUV6QyxXQUFXLEVBQUUsbUJBQW1CO3dCQUNoQyxTQUFTLEVBQUUsVUFBVTtxQkFDeEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxPQUFPLENBQUMsa0JBQ0YsQ0FBQyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Brb29iaXEvY2RrL2ExMXknO1xuaW1wb3J0IHsgRU5URVIsIFJJR0hUX0FSUk9XLCBTUEFDRSB9IGZyb20gJ0Brb29iaXEvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEticUJ1dHRvbiwgS2JxQnV0dG9uQ3NzU3R5bGVyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIEtCUV9XSU5ET1csXG4gICAga2JxSW5qZWN0TmF0aXZlRWxlbWVudCxcbiAgICBLYnFSZWN0YW5nbGVJdGVtLFxuICAgIFBvcFVwUGxhY2VtZW50cyxcbiAgICBQb3BVcFRyaWdnZXJzXG59IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBNb2RpZmllciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFOYXZiYXJJYyB9IGZyb20gJy4vbmF2YmFyLWljJztcbmltcG9ydCB7IHRvZ2dsZU5hdmJhckljSXRlbUFuaW1hdGlvbiB9IGZyb20gJy4vbmF2YmFyLWljLmFuaW1hdGlvbic7XG5cbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgcGxhY2VkIGluIGEgdGl0bGUgd2l0aG91dCBiZWluZyB3cmFwcGVkLlxuICovXG5leHBvcnQgY29uc3Qga2JxTWF4U3ltYm9sc0luSGVhZGVyVGl0bGUgPSAyMjtcblxuZXhwb3J0IGludGVyZmFjZSBLYnFOYXZiYXJGb2N1c2FibGVJdGVtRXZlbnQge1xuICAgIGl0ZW06IEticU5hdmJhckljRm9jdXNhYmxlSXRlbTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFOYXZiYXJJY0xvZ29dJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW5hdmJhci1pYy1sb2dvJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNMb2dvIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxTmF2YmFySWNUaXRsZV0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljLXRpdGxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtbmF2YmFyLWljLXRpdGxlX3RleHQtb3ZlcmZsb3duXSc6ICdpc1RleHRPdmVyZmxvd24nLFxuXG4gICAgICAgICcobW91c2VlbnRlciknOiAnaG92ZXJlZC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdob3ZlcmVkLm5leHQoZmFsc2UpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNUaXRsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Jyb3dzZXIgPSBpbmplY3QoUGxhdGZvcm0pLmlzQnJvd3NlcjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmF0aXZlRWxlbWVudCA9IGticUluamVjdE5hdGl2ZUVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdyA9IGluamVjdChLQlFfV0lORE9XKTtcblxuICAgIHJlYWRvbmx5IGhvdmVyZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgb3V0ZXJFbGVtZW50V2lkdGg6IG51bWJlcjtcbiAgICBpc1RleHRPdmVyZmxvd246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCB0ZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IGlzT3ZlcmZsb3duKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoID4gdGhpcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdXRlckVsZW1lbnRXaWR0aCA9IHRoaXMuZ2V0T3V0ZXJFbGVtZW50V2lkdGgoKTtcblxuICAgICAgICB0aGlzLmNoZWNrVGV4dE92ZXJmbG93bigpO1xuICAgIH1cblxuICAgIGdldE91dGVyRWxlbWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybiAwO1xuXG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0IH0gPSB0aGlzLndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIFt3aWR0aCwgbWFyZ2luTGVmdCwgbWFyZ2luUmlnaHRdLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBwYXJzZUludChpdGVtKSB8fCAwLCAwKTtcbiAgICB9XG5cbiAgICBjaGVja1RleHRPdmVyZmxvd24oKSB7XG4gICAgICAgIHRoaXMuaXNUZXh0T3ZlcmZsb3duID0gdGhpcy50ZXh0Lmxlbmd0aCA+IGticU1heFN5bWJvbHNJbkhlYWRlclRpdGxlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFOYXZiYXJJY0RpdmlkZXJdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW5hdmJhci1pYy1kaXZpZGVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNEaXZpZGVyIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6XG4gICAgICAgICdrYnEtbmF2YmFyLWljLWl0ZW0sIFtrYnEtbmF2YmFyLWljLWl0ZW1dLCBrYnEtbmF2YmFyLWljLWhlYWRlciwgW2ticS1uYXZiYXItaWMtaGVhZGVyXSwga2JxLW5hdmJhci1pYy10b2dnbGUnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICctMScsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG5cbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljLWZvY3VzYWJsZS1pdGVtJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcblxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1c0hhbmRsZXIoKScsXG4gICAgICAgICcoYmx1ciknOiAnYmx1ckhhbmRsZXIoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljRm9jdXNhYmxlSXRlbSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSUZvY3VzYWJsZU9wdGlvbiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQENvbnRlbnRDaGlsZChLYnFOYXZiYXJJY1RpdGxlKSB0aXRsZTogS2JxTmF2YmFySWNUaXRsZTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxQnV0dG9uKSBidXR0b246IEticUJ1dHRvbjtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxRm9ybUZpZWxkKSBmb3JtRmllbGQ6IEticUZvcm1GaWVsZDtcblxuICAgIGdldCB0b29sdGlwKCk6IEticVRvb2x0aXBUcmlnZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdG9vbHRpcDogS2JxVG9vbHRpcFRyaWdnZXI7XG5cbiAgICByZWFkb25seSBvbkZvY3VzID0gbmV3IFN1YmplY3Q8S2JxTmF2YmFyRm9jdXNhYmxlSXRlbUV2ZW50PigpO1xuXG4gICAgcmVhZG9ubHkgb25CbHVyID0gbmV3IFN1YmplY3Q8S2JxTmF2YmFyRm9jdXNhYmxlSXRlbUV2ZW50PigpO1xuXG4gICAgZ2V0IGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzRm9jdXM7XG4gICAgfVxuXG4gICAgc2V0IGhhc0ZvY3VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2hhc0ZvY3VzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFzRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpdGVtIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5idXR0b24udGFiSW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIHNldFRvb2x0aXAodmFsdWU6IEticVRvb2x0aXBUcmlnZ2VyKSB7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXAgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBmb2N1cyhvcmlnaW4/OiBGb2N1c09yaWdpbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3JpZ2luID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLmVsZW1lbnRSZWYsIG9yaWdpbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXA/LnNob3coKTtcbiAgICAgICAgdGhpcy5mb2N1c0hhbmRsZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGZvY3VzSGFuZGxlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5oYXNGb2N1cykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub25Gb2N1cy5uZXh0KHsgaXRlbTogdGhpcyB9KTtcblxuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBibHVySGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgLy8gV2hlbiBhbmltYXRpb25zIGFyZSBlbmFibGVkLCBBbmd1bGFyIG1heSBlbmQgdXAgcmVtb3ZpbmcgdGhlIG9wdGlvbiBmcm9tIHRoZSBET00gYSBsaXR0bGVcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHVzdWFsLCBjYXVzaW5nIGl0IHRvIGJlIGJsdXJyZWQgYW5kIHRocm93aW5nIG9mZiB0aGUgbG9naWMgaW4gdGhlIGxpc3RcbiAgICAgICAgLy8gdGhhdCBtb3ZlcyBmb2N1cyBub3QgdGhlIG5leHQgaXRlbS4gVG8gd29yayBhcm91bmQgdGhlIGlzc3VlLCB3ZSBkZWZlciBtYXJraW5nIHRoZSBvcHRpb25cbiAgICAgICAgLy8gYXMgbm90IGZvY3VzZWQgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgem9uZSBzdGFiaWxpemVzLlxuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFzRm9jdXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXA/LmhpZGUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5idXR0b24/Lmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmx1ci5uZXh0KHsgaXRlbTogdGhpcyB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpdGxlPy50ZXh0IHx8ICcnO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1uYXZiYXItaWMtaXRlbSwgW2ticS1uYXZiYXItaWMtaXRlbV0nLFxuICAgIGV4cG9ydEFzOiAna2JxTmF2YmFySWNJdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2YmFyLWljLWl0ZW0uaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL25hdmJhci1pYy1pdGVtLnNjc3MnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljLWl0ZW0nLFxuICAgICAgICAnW2NsYXNzLmticS1uYXZiYXItaWMtaXRlbV93aXRoLXRpdGxlXSc6ICchIXRpdGxlJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0RGlyZWN0aXZlczogW0ticVJlY3RhbmdsZUl0ZW1dLFxuICAgIGltcG9ydHM6IFtLYnFJY29uXSxcbiAgICBhbmltYXRpb25zOiBbdG9nZ2xlTmF2YmFySWNJdGVtQW5pbWF0aW9uKCldXG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljSXRlbSBleHRlbmRzIEticVRvb2x0aXBUcmlnZ2VyIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcmVhZG9ubHkgcmVjdGFuZ2xlRWxlbWVudCA9IGluamVjdChLYnFSZWN0YW5nbGVJdGVtKTtcbiAgICByZWFkb25seSBuYXZiYXIgPSBpbmplY3QoS2JxTmF2YmFySWMpO1xuICAgIHJlYWRvbmx5IG5hdmJhckZvY3VzYWJsZUl0ZW0gPSBpbmplY3QoS2JxTmF2YmFySWNGb2N1c2FibGVJdGVtKTtcblxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZHJvcGRvd25UcmlnZ2VyID0gaW5qZWN0KEticURyb3Bkb3duVHJpZ2dlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHRvb2x0aXAgPSBpbmplY3QoS2JxVG9vbHRpcFRyaWdnZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxTmF2YmFySWNUaXRsZSkgdGl0bGU6IEticU5hdmJhckljVGl0bGU7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUljb24pIGljb246IEticUljb247XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAQ29udGVudENoaWxkKEticUJ1dHRvbkNzc1N0eWxlcikgYnV0dG9uOiBLYnFCdXR0b25Dc3NTdHlsZXI7XG5cbiAgICBASW5wdXQoJ2ticVRyaWdnZXInKVxuICAgIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICAgIH1cblxuICAgIHNldCB0cmlnZ2VyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdExpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGNvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5fY29sbGFwc2VkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY29sbGFwc2VkID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sbGFwc2VkID0gZmFsc2U7XG5cbiAgICBnZXQgY3JvcHBlZFRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGU/LmlzT3ZlcmZsb3duID8gdGhpcy50aXRsZVRleHQgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgdGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpdGxlPy50ZXh0O1xuICAgIH1cblxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkIHx8ICF0aGlzLmhhc0Nyb3BwZWRUZXh0IHx8IHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0Ryb3BEb3duVHJpZ2dlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5kcm9wZG93blRyaWdnZXI7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dEcm9wRG93bkFuZ2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNEcm9wRG93blRyaWdnZXIgJiYgIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIGdldCBoYXNDcm9wcGVkVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50aXRsZT8uaXNPdmVyZmxvd247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25UcmlnZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlci5vcGVuQnlBcnJvd0Rvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVjdGFuZ2xlRWxlbWVudC5zdGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuY29sbGFwc2VkID0gdGhpcy5yZWN0YW5nbGVFbGVtZW50LmNvbGxhcHNlZDtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdHJpZ2dlciA9IGAke1BvcFVwVHJpZ2dlcnMuSG92ZXJ9YDtcblxuICAgICAgICB0aGlzLm5hdmJhckZvY3VzYWJsZUl0ZW0uc2V0VG9vbHRpcCh0aGlzKTtcblxuICAgICAgICBpZiAodGhpcy50b29sdGlwKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAuYXJyb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5vZmZzZXQgPSAwO1xuXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBbJ292ZXJsYXlDb25maWcnXS5wYW5lbENsYXNzID0gJ2ticS10b29sdGlwLXBhbmVsX2hvcml6b250YWwtbmF2YmFyJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25UcmlnZ2VyPy5kcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blRyaWdnZXIuZHJvcGRvd24ub3ZlcmxhcFRyaWdnZXJYID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlci5kcm9wZG93bi5vdmVybGFwVHJpZ2dlclkgPSB0cnVlO1xuICAgICAgICAgICAgLy8gbmVlZHMgdG8gc2hpZnQgZHJvcGRvd24gdG8gdGhlIGxlZnQgYnkgOCBwaXhlbHNcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyLm9mZnNldFggPSAtODtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcCgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdXBkYXRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmhhc0Nyb3BwZWRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmNyb3BwZWRUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSBQb3BVcFBsYWNlbWVudHMuUmlnaHQ7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uS2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0Ryb3BEb3duVHJpZ2dlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25UcmlnZ2VyICYmIHRoaXMucmVjdGFuZ2xlRWxlbWVudCAmJiAkZXZlbnQua2V5Q29kZSA9PT0gUklHSFRfQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyLm9wZW5lZEJ5ID0gJ2tleWJvYXJkJztcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyLm9wZW4oKTtcblxuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtbmF2YmFyLWljLXRvZ2dsZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1uYXZiYXItaWMtaXRlbV9faW5uZXJcIj5cbiAgICAgICAgICAgIEBpZiAobmF2YmFyLnBpbm5lZCkge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uIFtjbGFzcy5rYnEtYmFycy1hcnJvdy1sZWZ0XzE2XT1cIm5hdmJhci5leHBhbmRlZFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxTmF2YmFySWNUaXRsZV1cIj57eyBsb2NhbGVEYXRhLmNvbGxhcHNlQnV0dG9uIH19PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoKG5hdmJhci5leHBhbmRlZEJ5SG92ZXJPckZvY3VzIHx8IG5hdmJhci5leHBhbmRlZEJ5VG9nZ2xlKSAmJiAhbmF2YmFyLnBpbm5lZCkge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uIFtjbGFzcy5rYnEtYmFycy1hcnJvdy1yaWdodF8xNl09XCJuYXZiYXIuZXhwYW5kZWRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgbG9jYWxlRGF0YS5waW5CdXR0b24gfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uIFtjbGFzcy5rYnEtYmFycy1hcnJvdy1yaWdodF8xNl09XCIhbmF2YmFyLmV4cGFuZGVkXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL25hdmJhci1pYy5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1uYXZiYXItaWMtaXRlbSBrYnEtbmF2YmFyLWljLXRvZ2dsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvbGxhcHNlZF0nOiAnIW5hdmJhci5leHBhbmRlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWV4cGFuZGVkXSc6ICduYXZiYXIuZXhwYW5kZWQnLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnb25LZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKGNsaWNrKSc6ICd0b2dnbGUoKSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW0ticUljb25dLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbS2JxUmVjdGFuZ2xlSXRlbV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNUb2dnbGUge1xuICAgIHJlYWRvbmx5IG5hdmJhciA9IGluamVjdChLYnFOYXZiYXJJYyk7XG4gICAgcmVhZG9ubHkgcmVjdGFuZ2xlRWxlbWVudCA9IGluamVjdChLYnFSZWN0YW5nbGVJdGVtKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcm90ZWN0ZWQgbW9kaWZpZXI6IFRvb2x0aXBNb2RpZmllciA9IFRvb2x0aXBNb2RpZmllci5EZWZhdWx0O1xuXG4gICAgLyoqIGxvY2FsaXplZCBkYXRhXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBsb2NhbGVEYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZiYXI/LmNvbmZpZ3VyYXRpb24udG9nZ2xlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlY3RhbmdsZUVsZW1lbnQuc3RhdGUuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25LZXlkb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoW1NQQUNFLCBFTlRFUl0uaW5jbHVkZXMoJGV2ZW50LmtleUNvZGUpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuXG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKCh0aGlzLm5hdmJhci5leHBhbmRlZEJ5SG92ZXJPckZvY3VzIHx8IHRoaXMubmF2YmFyLmV4cGFuZGVkQnlUb2dnbGUpICYmICF0aGlzLm5hdmJhci5waW5uZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2YmFyLnBpbm5lZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5hdmJhci5waW5uZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubmF2YmFyLnRvZ2dsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJrYnEtbmF2YmFyLWljLWl0ZW1fX2lubmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticS1pY29uXVwiIC8+XG5cbiAgICBAaWYgKHRpdGxlICYmICFjb2xsYXBzZWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1uYXZiYXItaWMtaXRlbV9fdGl0bGUtY29udGFpbmVyXCIgW0B0b2dnbGVdPVwibmF2YmFyLnN0YXRlLnZhbHVlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxTmF2YmFySWNUaXRsZV1cIiAvPlxuXG4gICAgICAgICAgICBAaWYgKHNob3dEcm9wRG93bkFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2hldnJvbi1yaWdodF8xNlwiIGNsYXNzPVwia2JxLW5hdmJhci1pYy1pdGVtX19hcnJvdy1pY29uXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8bmctY29udGVudCAvPlxuPC9kaXY+XG4iXX0=
|
|
@@ -3,7 +3,15 @@ export function toggleNavbarIcAnimation() {
|
|
|
3
3
|
return trigger('toggle', [
|
|
4
4
|
state('0', style({ width: '64px' })),
|
|
5
5
|
state('1', style({ width: '240px' })),
|
|
6
|
-
transition('0 <=> 1', animate('
|
|
6
|
+
transition('0 <=> 1', animate('200ms cubic-bezier(0.4, 0, 0.2, 1)'))
|
|
7
7
|
]);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
export function toggleNavbarIcItemAnimation() {
|
|
10
|
+
return trigger('toggle', [
|
|
11
|
+
state('expanded', style({ opacity: 1, marginLeft: 0 })),
|
|
12
|
+
state('collapsed', style({ opacity: 0, marginLeft: '-8px' })),
|
|
13
|
+
transition('collapsed => expanded', animate('200ms 150ms cubic-bezier(0.4, 0, 0.2, 1)')),
|
|
14
|
+
transition('expanded => collapsed', animate('200ms cubic-bezier(0.4, 0, 0.2, 1)'))
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWljLmFuaW1hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvbmF2YmFyLWljL25hdmJhci1pYy5hbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBNEIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0csTUFBTSxVQUFVLHVCQUF1QjtJQUNuQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUU7UUFDckIsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDdkMsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ3JCLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0QsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3hGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztLQUFDLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU5hdmJhckljQW5pbWF0aW9uKCk6IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHRyaWdnZXIoJ3RvZ2dsZScsIFtcbiAgICAgICAgc3RhdGUoJzAnLCBzdHlsZSh7IHdpZHRoOiAnNjRweCcgfSkpLFxuICAgICAgICBzdGF0ZSgnMScsIHN0eWxlKHsgd2lkdGg6ICcyNDBweCcgfSkpLFxuICAgICAgICB0cmFuc2l0aW9uKCcwIDw9PiAxJywgYW5pbWF0ZSgnMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScpKV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlTmF2YmFySWNJdGVtQW5pbWF0aW9uKCk6IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHRyaWdnZXIoJ3RvZ2dsZScsIFtcbiAgICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBvcGFjaXR5OiAxLCBtYXJnaW5MZWZ0OiAwIH0pKSxcbiAgICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgbWFyZ2luTGVmdDogJy04cHgnIH0pKSxcbiAgICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMjAwbXMgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScpKSxcbiAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScpKV0pO1xufVxuIl19
|
|
@@ -7,8 +7,8 @@ import { KBQ_LOCALE_SERVICE, KbqRectangleItem, ruRULocaleData } from '@koobiq/co
|
|
|
7
7
|
import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
|
|
8
8
|
import { KbqNotificationCenterTrigger } from '@koobiq/components/notification-center';
|
|
9
9
|
import { KbqPopoverTrigger } from '@koobiq/components/popover';
|
|
10
|
-
import { BehaviorSubject,
|
|
11
|
-
import { startWith } from 'rxjs/operators';
|
|
10
|
+
import { BehaviorSubject, EMPTY, filter, merge, Subject, timer } from 'rxjs';
|
|
11
|
+
import { delay, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
12
12
|
import { KbqNavbarIcFocusableItem, KbqNavbarIcItem, KbqNavbarIcToggle } from './navbar-ic-item';
|
|
13
13
|
import { toggleNavbarIcAnimation } from './navbar-ic.animation';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
@@ -17,6 +17,10 @@ export var KbqExpandEvents;
|
|
|
17
17
|
KbqExpandEvents[KbqExpandEvents["toggle"] = 0] = "toggle";
|
|
18
18
|
KbqExpandEvents[KbqExpandEvents["hoverOrFocus"] = 1] = "hoverOrFocus";
|
|
19
19
|
})(KbqExpandEvents || (KbqExpandEvents = {}));
|
|
20
|
+
/** minimum timeout to use KBQ_ENTER_DELAY */
|
|
21
|
+
export const KBQ_MIN_TIMEOUT_FOR_ENTER_DELAY = 2000;
|
|
22
|
+
/** delay before open navbar-ic */
|
|
23
|
+
export const KBQ_ENTER_DELAY = 400;
|
|
20
24
|
/** default configuration of navbar-ic */
|
|
21
25
|
/** @docs-private */
|
|
22
26
|
export const KBQ_NAVBAR_IC_DEFAULT_CONFIGURATION = ruRULocaleData.navbarIc;
|
|
@@ -139,6 +143,7 @@ export class KbqNavbarIc extends KbqFocusable {
|
|
|
139
143
|
}
|
|
140
144
|
set expanded(value) {
|
|
141
145
|
this._expanded = value;
|
|
146
|
+
this.state.next(value || this.pinned || this.hasOpenedPopUp ? 'expanded' : 'collapsed');
|
|
142
147
|
this.updateExpandedStateForItems();
|
|
143
148
|
}
|
|
144
149
|
get hasOpenedPopUp() {
|
|
@@ -158,6 +163,7 @@ export class KbqNavbarIc extends KbqFocusable {
|
|
|
158
163
|
/** @docs-private */
|
|
159
164
|
this.localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });
|
|
160
165
|
this.externalConfiguration = inject(KBQ_NAVBAR_IC_CONFIGURATION, { optional: true });
|
|
166
|
+
this.state = new BehaviorSubject(null);
|
|
161
167
|
/** @docs-private */
|
|
162
168
|
this.rectangleElements = contentChildren(forwardRef(() => KbqRectangleItem), { descendants: true });
|
|
163
169
|
/** @docs-private */
|
|
@@ -190,17 +196,32 @@ export class KbqNavbarIc extends KbqFocusable {
|
|
|
190
196
|
this.configuration = this.externalConfiguration || this.localeService?.getParams('navbarIc');
|
|
191
197
|
this.changeDetectorRef.markForCheck();
|
|
192
198
|
};
|
|
193
|
-
this.animationDone.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipForItems);
|
|
194
199
|
effect(this.updateExpandedStateForItems);
|
|
195
|
-
|
|
196
|
-
.pipe(takeUntilDestroyed())
|
|
197
|
-
.subscribe((
|
|
198
|
-
if (this.
|
|
200
|
+
this.focused
|
|
201
|
+
.pipe(delay(0), filter(() => !this.pinned || !this.hasOpenedPopUp), takeUntilDestroyed())
|
|
202
|
+
.subscribe((focused) => {
|
|
203
|
+
if (this.hovered.value)
|
|
199
204
|
return;
|
|
200
205
|
this.expandEvent = KbqExpandEvents.hoverOrFocus;
|
|
201
|
-
this.expanded =
|
|
206
|
+
this.expanded = focused;
|
|
202
207
|
this.changeDetectorRef.markForCheck();
|
|
203
208
|
});
|
|
209
|
+
this.hovered
|
|
210
|
+
.pipe(filter(() => !this.pinned), switchMap((hovered) => {
|
|
211
|
+
if (!hovered) {
|
|
212
|
+
if (this.expanded) {
|
|
213
|
+
this.lastOpeningTime = Date.now();
|
|
214
|
+
}
|
|
215
|
+
this.expanded = false;
|
|
216
|
+
return EMPTY;
|
|
217
|
+
}
|
|
218
|
+
return timer(this.getExpandDelay()).pipe(tap(() => {
|
|
219
|
+
this.expandEvent = KbqExpandEvents.hoverOrFocus;
|
|
220
|
+
this.expanded = true;
|
|
221
|
+
this.changeDetectorRef.markForCheck();
|
|
222
|
+
}), takeUntil(this.hovered.pipe(filter((h) => !h))));
|
|
223
|
+
}), takeUntilDestroyed())
|
|
224
|
+
.subscribe();
|
|
204
225
|
this.focusMonitor.monitor(this.elementRef, true).subscribe((focusOrigin) => {
|
|
205
226
|
this.focused.next(focusOrigin === 'keyboard');
|
|
206
227
|
});
|
|
@@ -240,6 +261,9 @@ export class KbqNavbarIc extends KbqFocusable {
|
|
|
240
261
|
this.keyManager.onKeydown(event);
|
|
241
262
|
}
|
|
242
263
|
}
|
|
264
|
+
getExpandDelay() {
|
|
265
|
+
return Date.now() - this.lastOpeningTime < KBQ_MIN_TIMEOUT_FOR_ENTER_DELAY ? 0 : KBQ_ENTER_DELAY;
|
|
266
|
+
}
|
|
243
267
|
initDefaultParams() {
|
|
244
268
|
this.configuration = KBQ_NAVBAR_IC_DEFAULT_CONFIGURATION;
|
|
245
269
|
}
|
|
@@ -283,4 +307,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
283
307
|
type: Input,
|
|
284
308
|
args: [{ transform: booleanAttribute }]
|
|
285
309
|
}] } });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9uYXZiYXItaWMvbmF2YmFyLWljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUgsd0JBQXdC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LDhkQTlDZixnQkFBZ0IsZ0dBTWhCLGVBQWUsd0dBTWYsaUJBQWlCLDBHQU1qQixrQkFBa0IseUdBTWxCLGlCQUFpQixvSEFNakIsNEJBQTRCLG1IQXRFdkM7Ozs7O0tBS1QsNHpYQXFCVyxDQUFDLHVCQUF1QixFQUFFLENBQUM7OzRGQUk5QixXQUFXO2tCQWxDdkIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZUFBZSxZQUNmLGFBQWEsWUFDYjs7Ozs7S0FLVCxRQU1LO3dCQUNGLEtBQUssRUFBRSxlQUFlO3dCQUN0Qix1QkFBdUIsRUFBRSxXQUFXO3dCQUNwQyxzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyxzQkFBc0IsRUFBRSx5Q0FBeUM7d0JBQ2pFLGlCQUFpQixFQUFFLFVBQVU7d0JBRTdCLFNBQVMsRUFBRSxnQkFBZ0I7d0JBQzNCLFFBQVEsRUFBRSxlQUFlO3dCQUV6QixXQUFXLEVBQUUsbUJBQW1CO3dCQUVoQyxjQUFjLEVBQUUsb0JBQW9CO3dCQUNwQyxjQUFjLEVBQUUscUJBQXFCO3FCQUN4QyxjQUNXLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxtQkFDdEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt3REFxREcsTUFBTTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFQyxjQUFjO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxhQUFhO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFHakMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgY29udGVudENoaWxkcmVuLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25EZXN0cm95LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Brb29iaXEvY2RrL2ExMXknO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgaXNWZXJ0aWNhbE1vdmVtZW50LCBUQUIsIFVQX0FSUk9XIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS0JRX0xPQ0FMRV9TRVJWSUNFLCBLYnFSZWN0YW5nbGVJdGVtLCBydVJVTG9jYWxlRGF0YSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBLYnFOb3RpZmljYXRpb25DZW50ZXJUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL25vdGlmaWNhdGlvbi1jZW50ZXInO1xuaW1wb3J0IHsgS2JxUG9wb3ZlclRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgS2JxTmF2YmFyRm9jdXNhYmxlSXRlbUV2ZW50LFxuICAgIEticU5hdmJhckljRm9jdXNhYmxlSXRlbSxcbiAgICBLYnFOYXZiYXJJY0l0ZW0sXG4gICAgS2JxTmF2YmFySWNUb2dnbGVcbn0gZnJvbSAnLi9uYXZiYXItaWMtaXRlbSc7XG5pbXBvcnQgeyB0b2dnbGVOYXZiYXJJY0FuaW1hdGlvbiB9IGZyb20gJy4vbmF2YmFyLWljLmFuaW1hdGlvbic7XG5cbmV4cG9ydCBlbnVtIEticUV4cGFuZEV2ZW50cyB7XG4gICAgdG9nZ2xlLFxuICAgIGhvdmVyT3JGb2N1c1xufVxuXG4vKiogZGVmYXVsdCBjb25maWd1cmF0aW9uIG9mIG5hdmJhci1pYyAqL1xuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLQlFfTkFWQkFSX0lDX0RFRkFVTFRfQ09ORklHVVJBVElPTiA9IHJ1UlVMb2NhbGVEYXRhLm5hdmJhckljO1xuXG4vKiogSW5qZWN0aW9uIFRva2VuIGZvciBwcm92aWRpbmcgY29uZmlndXJhdGlvbiBvZiBuYXZiYXItaWMgKi9cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS0JRX05BVkJBUl9JQ19DT05GSUdVUkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuKCdLYnFOYXZiYXJJY0NvbmZpZ3VyYXRpb24nKTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgS2JxRm9jdXNhYmxlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9jdXNNb25pdG9yID0gaW5qZWN0KEZvY3VzTW9uaXRvcik7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gS2JxTmF2YmFySWNGb2N1c2FibGVJdGVtKSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIGZvY3VzYWJsZUl0ZW1zOiBRdWVyeUxpc3Q8S2JxTmF2YmFySWNGb2N1c2FibGVJdGVtPjtcblxuICAgIGtleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0+O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICAgIH1cblxuICAgIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RhYmluZGV4ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFiaW5kZXggPSAwO1xuXG4gICAgZ2V0IGl0ZW1Gb2N1c0NoYW5nZXMoKTogT2JzZXJ2YWJsZTxLYnFOYXZiYXJGb2N1c2FibGVJdGVtRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKC4uLnRoaXMuZm9jdXNhYmxlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLm9uRm9jdXMpKTtcbiAgICB9XG5cbiAgICBnZXQgaXRlbUJsdXJDaGFuZ2VzKCk6IE9ic2VydmFibGU8S2JxTmF2YmFyRm9jdXNhYmxlSXRlbUV2ZW50PiB7XG4gICAgICAgIHJldHVybiBtZXJnZSguLi50aGlzLmZvY3VzYWJsZUl0ZW1zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ub25CbHVyKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpdGVtRm9jdXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGw7XG4gICAgcHJpdmF0ZSBpdGVtQmx1clN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcjxLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0+KHRoaXMuZm9jdXNhYmxlSXRlbXMpLndpdGhUeXBlQWhlYWQoKTtcblxuICAgICAgICB0aGlzLmtleU1hbmFnZXIudGFiT3V0LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYmluZGV4ID0gLTE7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFiaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgdGFiIGluZGV4XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYpLnN1YnNjcmliZSgoZm9jdXNPcmlnaW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbihmb2N1c09yaWdpbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZm9jdXNIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBibHVySGFuZGxlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0ZvY3VzZWRJdGVtKCkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0T3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5kcm9wU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB0aGlzLmxpc3RlblRvSXRlbXNGb2N1cygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkcm9wU3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgdGhpcy5pdGVtRm9jdXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJsdXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5pdGVtRm9jdXNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLml0ZW1CbHVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbGlzdGVuVG9JdGVtc0ZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1Gb2N1c1N1YnNjcmlwdGlvbiA9IHRoaXMuaXRlbUZvY3VzQ2hhbmdlcy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5mb2N1c2FibGVJdGVtcy50b0FycmF5KCkuaW5kZXhPZihldmVudC5pdGVtKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZEluZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pdGVtQmx1clN1YnNjcmlwdGlvbiA9IHRoaXMuaXRlbUJsdXJDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmJsdXJIYW5kbGVyKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVUYWJJbmRleCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJpbmRleCA9IHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoID09PSAwID8gLTEgOiAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1ZhbGlkSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYXNGb2N1c2VkSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNhYmxlSXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNGb2N1cyk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLW5hdmJhci1pYy1jb250YWluZXInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticU5hdmJhckljQ29udGFpbmVyIHt9XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtbmF2YmFyLWljJyxcbiAgICBleHBvcnRBczogJ0ticU5hdmJhckljJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLW5hdmJhci1pY19fdG9wLWxheWVyXCIgW0B0b2dnbGVdPVwiZXhwYW5kZWRcIiAoQHRvZ2dsZS5kb25lKT1cImFuaW1hdGlvbkRvbmUubmV4dCgpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxLW5hdmJhci1pYy1jb250YWluZXJdLCBrYnEtbmF2YmFyLWljLWNvbnRhaW5lclwiIC8+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxLW5hdmJhci1pYy10b2dnbGVdLCBrYnEtbmF2YmFyLWljLXRvZ2dsZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL25hdmJhci1pYy5zY3NzJyxcbiAgICAgICAgJy4vbmF2YmFyLWljLWRpdmlkZXIuc2NzcycsXG4gICAgICAgICcuL25hdmJhci1pYy10b2tlbnMuc2NzcydcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbmF2YmFyLWljJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29sbGFwc2VkXSc6ICchZXhwYW5kZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1leHBhbmRlZF0nOiAnZXhwYW5kZWQnLFxuICAgICAgICAnW3N0eWxlLm1pbi13aWR0aC5weF0nOiAncGlubmVkID8gZXhwYW5kZWRXaWR0aCA6IGNvbGxhcHNlZFdpZHRoJyxcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJpbmRleCcsXG5cbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNIYW5kbGVyKCknLFxuICAgICAgICAnKGJsdXIpJzogJ2JsdXJIYW5kbGVyKCknLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnb25LZXlEb3duKCRldmVudCknLFxuXG4gICAgICAgICcobW91c2VlbnRlciknOiAnaG92ZXJlZC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdob3ZlcmVkLm5leHQoZmFsc2UpJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW3RvZ2dsZU5hdmJhckljQW5pbWF0aW9uKCldLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWMgZXh0ZW5kcyBLYnFGb2N1c2FibGUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHJlYWRvbmx5IGV4dGVybmFsQ29uZmlndXJhdGlvbiA9IGluamVjdChLQlFfTkFWQkFSX0lDX0NPTkZJR1VSQVRJT04sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBjb25maWd1cmF0aW9uO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWN0YW5nbGVFbGVtZW50cyA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFSZWN0YW5nbGVJdGVtKSxcbiAgICAgICAgeyBkZXNjZW5kYW50czogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oXG4gICAgICAgIGZvcndhcmRSZWYoKCkgPT4gS2JxTmF2YmFySWNJdGVtKSxcbiAgICAgICAgeyBkZXNjZW5kYW50czogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdG9nZ2xlRWxlbWVudCA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFOYXZiYXJJY1RvZ2dsZSksXG4gICAgICAgIHsgZGVzY2VuZGFudHM6IHRydWUgfVxuICAgICk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGRyb3Bkb3duVHJpZ2dlciA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFEcm9wZG93blRyaWdnZXIpLFxuICAgICAgICB7IGRlc2NlbmRhbnRzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwb3BvdmVyVHJpZ2dlciA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFQb3BvdmVyVHJpZ2dlciksXG4gICAgICAgIHsgZGVzY2VuZGFudHM6IHRydWUgfVxuICAgICk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG5vdGlmaWNhdGlvbkNlbnRlclRyaWdnZXIgPSBjb250ZW50Q2hpbGRyZW4oXG4gICAgICAgIGZvcndhcmRSZWYoKCkgPT4gS2JxTm90aWZpY2F0aW9uQ2VudGVyVHJpZ2dlciksXG4gICAgICAgIHsgZGVzY2VuZGFudHM6IHRydWUgfVxuICAgICk7XG5cbiAgICByZWFkb25seSBob3ZlcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcmVhZG9ubHkgZm9jdXNlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcmVhZG9ubHkgYW5pbWF0aW9uRG9uZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBleHBhbmRFdmVudDogS2JxRXhwYW5kRXZlbnRzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcGlubmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGNvbGxhcHNlZFdpZHRoID0gNjQ7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZXhwYW5kZWRXaWR0aCA9IDI0MDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkIHx8IHRoaXMucGlubmVkIHx8IHRoaXMuaGFzT3BlbmVkUG9wVXA7XG4gICAgfVxuXG4gICAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy51cGRhdGVFeHBhbmRlZFN0YXRlRm9ySXRlbXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBnZXQgaGFzT3BlbmVkUG9wVXAoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5kcm9wZG93blRyaWdnZXIoKSwgLi4udGhpcy5wb3BvdmVyVHJpZ2dlcigpLCAuLi50aGlzLm5vdGlmaWNhdGlvbkNlbnRlclRyaWdnZXIoKV0uc29tZShcbiAgICAgICAgICAgIChpbnN0YW5jZSkgPT4gaW5zdGFuY2U/LmlzT3BlbiB8fCBpbnN0YW5jZT8ub3BlbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZGVkQnlUb2dnbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkICYmIHRoaXMuZXhwYW5kRXZlbnQgPT09IEticUV4cGFuZEV2ZW50cy50b2dnbGU7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZGVkQnlIb3Zlck9yRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkICYmIHRoaXMuZXhwYW5kRXZlbnQgPT09IEticUV4cGFuZEV2ZW50cy5ob3Zlck9yRm9jdXM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRlZCA/IHRoaXMuZXhwYW5kZWRXaWR0aCA6IHRoaXMuY29sbGFwc2VkV2lkdGg7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZVRvb2x0aXBGb3JJdGVtcyk7XG5cbiAgICAgICAgZWZmZWN0KHRoaXMudXBkYXRlRXhwYW5kZWRTdGF0ZUZvckl0ZW1zKTtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmhvdmVyZWQsIHRoaXMuZm9jdXNlZF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtob3ZlcmVkLCBmb2N1c2VkXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBpbm5lZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRFdmVudCA9IEticUV4cGFuZEV2ZW50cy5ob3Zlck9yRm9jdXM7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IGhvdmVyZWQgfHwgZm9jdXNlZDtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKChmb2N1c09yaWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkLm5leHQoZm9jdXNPcmlnaW4gPT09ICdrZXlib2FyZCcpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcEZvckl0ZW1zKCk7XG5cbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG5cbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHRydWUpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuXG4gICAgICAgIHRoaXMuZXhwYW5kRXZlbnQgPSBLYnFFeHBhbmRFdmVudHMudG9nZ2xlO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgna2JxaW5wdXQnKSAmJiBpc1ZlcnRpY2FsTW92ZW1lbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleUNvZGUgPT09IFRBQikge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnRhYk91dC5uZXh0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVG9vbHRpcEZvckl0ZW1zID0gKCkgPT4gdGhpcy5pdGVtcygpLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0udXBkYXRlVG9vbHRpcCgpKTtcblxuICAgIHByb3RlY3RlZCB1cGRhdGVFeHBhbmRlZFN0YXRlRm9ySXRlbXMgPSAoKSA9PiB0aGlzLnJlY3RhbmdsZUVsZW1lbnRzKCkuZm9yRWFjaCh0aGlzLnVwZGF0ZUl0ZW1FeHBhbmRlZFN0YXRlKTtcblxuICAgIHByb3RlY3RlZCB1cGRhdGVJdGVtRXhwYW5kZWRTdGF0ZSA9IChpdGVtOiBLYnFOYXZiYXJJY0l0ZW0pOiB2b2lkID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgICAgICAgaXRlbS5idXR0b24/LnVwZGF0ZUNsYXNzTW9kaWZpZXJGb3JJY29ucygpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZXh0ZXJuYWxDb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCduYXZiYXJJYycpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IEtCUV9OQVZCQVJfSUNfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cbn1cbiJdfQ==
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9uYXZiYXItaWMvbmF2YmFyLWljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFF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dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUdqQyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGtvb2JpcS9jZGsvYTExeSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBpc1ZlcnRpY2FsTW92ZW1lbnQsIFRBQiwgVVBfQVJST1cgfSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBLQlFfTE9DQUxFX1NFUlZJQ0UsIEticVJlY3RhbmdsZUl0ZW0sIHJ1UlVMb2NhbGVEYXRhIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25UcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticU5vdGlmaWNhdGlvbkNlbnRlclRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWNlbnRlcic7XG5pbXBvcnQgeyBLYnFQb3BvdmVyVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIGZpbHRlciwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEticU5hdmJhckZvY3VzYWJsZUl0ZW1FdmVudCxcbiAgICBLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0sXG4gICAgS2JxTmF2YmFySWNJdGVtLFxuICAgIEticU5hdmJhckljVG9nZ2xlXG59IGZyb20gJy4vbmF2YmFyLWljLWl0ZW0nO1xuaW1wb3J0IHsgdG9nZ2xlTmF2YmFySWNBbmltYXRpb24gfSBmcm9tICcuL25hdmJhci1pYy5hbmltYXRpb24nO1xuXG5leHBvcnQgZW51bSBLYnFFeHBhbmRFdmVudHMge1xuICAgIHRvZ2dsZSxcbiAgICBob3Zlck9yRm9jdXNcbn1cblxuLyoqIG1pbmltdW0gdGltZW91dCB0byB1c2UgS0JRX0VOVEVSX0RFTEFZICovXG5leHBvcnQgY29uc3QgS0JRX01JTl9USU1FT1VUX0ZPUl9FTlRFUl9ERUxBWSA9IDIwMDA7XG5cbi8qKiBkZWxheSBiZWZvcmUgb3BlbiBuYXZiYXItaWMgKi9cbmV4cG9ydCBjb25zdCBLQlFfRU5URVJfREVMQVkgPSA0MDA7XG5cbi8qKiBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgbmF2YmFyLWljICovXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IEtCUV9OQVZCQVJfSUNfREVGQVVMVF9DT05GSUdVUkFUSU9OID0gcnVSVUxvY2FsZURhdGEubmF2YmFySWM7XG5cbi8qKiBJbmplY3Rpb24gVG9rZW4gZm9yIHByb3ZpZGluZyBjb25maWd1cmF0aW9uIG9mIG5hdmJhci1pYyAqL1xuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLQlFfTkFWQkFSX0lDX0NPTkZJR1VSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ticU5hdmJhckljQ29uZmlndXJhdGlvbicpO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBLYnFGb2N1c2FibGUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0pLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgZm9jdXNhYmxlSXRlbXM6IFF1ZXJ5TGlzdDxLYnFOYXZiYXJJY0ZvY3VzYWJsZUl0ZW0+O1xuXG4gICAga2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEticU5hdmJhckljRm9jdXNhYmxlSXRlbT47XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90YWJpbmRleCA9IDA7XG5cbiAgICBnZXQgaXRlbUZvY3VzQ2hhbmdlcygpOiBPYnNlcnZhYmxlPEticU5hdmJhckZvY3VzYWJsZUl0ZW1FdmVudD4ge1xuICAgICAgICByZXR1cm4gbWVyZ2UoLi4udGhpcy5mb2N1c2FibGVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ub25Gb2N1cykpO1xuICAgIH1cblxuICAgIGdldCBpdGVtQmx1ckNoYW5nZXMoKTogT2JzZXJ2YWJsZTxLYnFOYXZiYXJGb2N1c2FibGVJdGVtRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKC4uLnRoaXMuZm9jdXNhYmxlSXRlbXMubWFwKChvcHRpb24pID0+IG9wdGlvbi5vbkJsdXIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGl0ZW1Gb2N1c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcbiAgICBwcml2YXRlIGl0ZW1CbHVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPEticU5hdmJhckljRm9jdXNhYmxlSXRlbT4odGhpcy5mb2N1c2FibGVJdGVtcykud2l0aFR5cGVBaGVhZCgpO1xuXG4gICAgICAgIHRoaXMua2V5TWFuYWdlci50YWJPdXQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFiaW5kZXggPSAtMTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNldE9wdGlvbnMoKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gdXBkYXRlIG91ciB0YWIgaW5kZXhcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZikuc3Vic2NyaWJlKChmb2N1c09yaWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEZvY3VzT3JpZ2luKGZvY3VzT3JpZ2luKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBmb2N1c0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGJsdXJIYW5kbGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzRm9jdXNlZEl0ZW0oKSkge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXRPcHRpb25zKCkge1xuICAgICAgICB0aGlzLmRyb3BTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIHRoaXMubGlzdGVuVG9JdGVtc0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRyb3BTdWJzY3JpcHRpb25zKCkge1xuICAgICAgICB0aGlzLml0ZW1Gb2N1c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pdGVtQmx1clN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLml0ZW1Gb2N1c1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuaXRlbUJsdXJTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsaXN0ZW5Ub0l0ZW1zRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUZvY3VzU3Vic2NyaXB0aW9uID0gdGhpcy5pdGVtRm9jdXNDaGFuZ2VzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLmZvY3VzYWJsZUl0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKGV2ZW50Lml0ZW0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLml0ZW1CbHVyU3Vic2NyaXB0aW9uID0gdGhpcy5pdGVtQmx1ckNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuYmx1ckhhbmRsZXIoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVRhYkluZGV4KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmluZGV4ID0gdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGggPT09IDAgPyAtMSA6IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzVmFsaWRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhc0ZvY3VzZWRJdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmhhc0ZvY3VzKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtbmF2YmFyLWljLWNvbnRhaW5lcicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1uYXZiYXItaWMtY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTmF2YmFySWNDb250YWluZXIge31cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1uYXZiYXItaWMnLFxuICAgIGV4cG9ydEFzOiAnS2JxTmF2YmFySWMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtbmF2YmFyLWljX190b3AtbGF5ZXJcIiBbQHRvZ2dsZV09XCJleHBhbmRlZFwiIChAdG9nZ2xlLmRvbmUpPVwiYW5pbWF0aW9uRG9uZS5uZXh0KClcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnEtbmF2YmFyLWljLWNvbnRhaW5lcl0sIGticS1uYXZiYXItaWMtY29udGFpbmVyXCIgLz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnEtbmF2YmFyLWljLXRvZ2dsZV0sIGticS1uYXZiYXItaWMtdG9nZ2xlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFtcbiAgICAgICAgJy4vbmF2YmFyLWljLnNjc3MnLFxuICAgICAgICAnLi9uYXZiYXItaWMtZGl2aWRlci5zY3NzJyxcbiAgICAgICAgJy4vbmF2YmFyLWljLXRva2Vucy5zY3NzJ1xuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1uYXZiYXItaWMnLFxuICAgICAgICAnW2NsYXNzLmticS1jb2xsYXBzZWRdJzogJyFleHBhbmRlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWV4cGFuZGVkXSc6ICdleHBhbmRlZCcsXG4gICAgICAgICdbc3R5bGUubWluLXdpZHRoLnB4XSc6ICdwaW5uZWQgPyBleHBhbmRlZFdpZHRoIDogY29sbGFwc2VkV2lkdGgnLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYmluZGV4JyxcblxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1c0hhbmRsZXIoKScsXG4gICAgICAgICcoYmx1ciknOiAnYmx1ckhhbmRsZXIoKScsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG5cbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdob3ZlcmVkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hvdmVyZWQubmV4dChmYWxzZSknXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbdG9nZ2xlTmF2YmFySWNBbmltYXRpb24oKV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFOYXZiYXJJYyBleHRlbmRzIEticUZvY3VzYWJsZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb25maWd1cmF0aW9uID0gaW5qZWN0KEtCUV9OQVZCQVJfSUNfQ09ORklHVVJBVElPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHJlYWRvbmx5IHN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnZXhwYW5kZWQnIHwgJ2NvbGxhcHNlZCcgfCBudWxsPihudWxsKTtcblxuICAgIGNvbmZpZ3VyYXRpb247XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlY3RhbmdsZUVsZW1lbnRzID0gY29udGVudENoaWxkcmVuKFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IEticVJlY3RhbmdsZUl0ZW0pLFxuICAgICAgICB7IGRlc2NlbmRhbnRzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBpdGVtcyA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFOYXZiYXJJY0l0ZW0pLFxuICAgICAgICB7IGRlc2NlbmRhbnRzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB0b2dnbGVFbGVtZW50ID0gY29udGVudENoaWxkcmVuKFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IEticU5hdmJhckljVG9nZ2xlKSxcbiAgICAgICAgeyBkZXNjZW5kYW50czogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZHJvcGRvd25UcmlnZ2VyID0gY29udGVudENoaWxkcmVuKFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IEticURyb3Bkb3duVHJpZ2dlciksXG4gICAgICAgIHsgZGVzY2VuZGFudHM6IHRydWUgfVxuICAgICk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHBvcG92ZXJUcmlnZ2VyID0gY29udGVudENoaWxkcmVuKFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IEticVBvcG92ZXJUcmlnZ2VyKSxcbiAgICAgICAgeyBkZXNjZW5kYW50czogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgbm90aWZpY2F0aW9uQ2VudGVyVHJpZ2dlciA9IGNvbnRlbnRDaGlsZHJlbihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBLYnFOb3RpZmljYXRpb25DZW50ZXJUcmlnZ2VyKSxcbiAgICAgICAgeyBkZXNjZW5kYW50czogdHJ1ZSB9XG4gICAgKTtcblxuICAgIHJlYWRvbmx5IGhvdmVyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICByZWFkb25seSBmb2N1c2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICByZWFkb25seSBhbmltYXRpb25Eb25lOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGV4cGFuZEV2ZW50OiBLYnFFeHBhbmRFdmVudHMgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwaW5uZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgY29sbGFwc2VkV2lkdGggPSA2NDtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBleHBhbmRlZFdpZHRoID0gMjQwO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQgfHwgdGhpcy5waW5uZWQgfHwgdGhpcy5oYXNPcGVuZWRQb3BVcDtcbiAgICB9XG5cbiAgICBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsdWUgfHwgdGhpcy5waW5uZWQgfHwgdGhpcy5oYXNPcGVuZWRQb3BVcCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVFeHBhbmRlZFN0YXRlRm9ySXRlbXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBnZXQgaGFzT3BlbmVkUG9wVXAoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5kcm9wZG93blRyaWdnZXIoKSwgLi4udGhpcy5wb3BvdmVyVHJpZ2dlcigpLCAuLi50aGlzLm5vdGlmaWNhdGlvbkNlbnRlclRyaWdnZXIoKV0uc29tZShcbiAgICAgICAgICAgIChpbnN0YW5jZSkgPT4gaW5zdGFuY2U/LmlzT3BlbiB8fCBpbnN0YW5jZT8ub3BlbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZGVkQnlUb2dnbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkICYmIHRoaXMuZXhwYW5kRXZlbnQgPT09IEticUV4cGFuZEV2ZW50cy50b2dnbGU7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZGVkQnlIb3Zlck9yRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkICYmIHRoaXMuZXhwYW5kRXZlbnQgPT09IEticUV4cGFuZEV2ZW50cy5ob3Zlck9yRm9jdXM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRlZCA/IHRoaXMuZXhwYW5kZWRXaWR0aCA6IHRoaXMuY29sbGFwc2VkV2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXN0T3BlbmluZ1RpbWU6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGVmZmVjdCh0aGlzLnVwZGF0ZUV4cGFuZGVkU3RhdGVGb3JJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5mb2N1c2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMucGlubmVkIHx8ICF0aGlzLmhhc09wZW5lZFBvcFVwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvdmVyZWQudmFsdWUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kRXZlbnQgPSBLYnFFeHBhbmRFdmVudHMuaG92ZXJPckZvY3VzO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmb2N1c2VkO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaG92ZXJlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLnBpbm5lZCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChob3ZlcmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaG92ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RPcGVuaW5nVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVyKHRoaXMuZ2V0RXhwYW5kRGVsYXkoKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRFdmVudCA9IEticUV4cGFuZEV2ZW50cy5ob3Zlck9yRm9jdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuaG92ZXJlZC5waXBlKGZpbHRlcigoaCkgPT4gIWgpKSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmLCB0cnVlKS5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQubmV4dChmb2N1c09yaWdpbiA9PT0gJ2tleWJvYXJkJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUb29sdGlwRm9ySXRlbXMoKTtcblxuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcblxuICAgICAgICB0aGlzLmtleU1hbmFnZXIud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG5cbiAgICAgICAgdGhpcy5leHBhbmRFdmVudCA9IEticUV4cGFuZEV2ZW50cy50b2dnbGU7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcblxuICAgICAgICBpZiAoIShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCdrYnFpbnB1dCcpICYmIGlzVmVydGljYWxNb3ZlbWVudChldmVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gVEFCKSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIudGFiT3V0Lm5leHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IFVQX0FSUk9XKSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhwYW5kRGVsYXkoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5sYXN0T3BlbmluZ1RpbWUgPCBLQlFfTUlOX1RJTUVPVVRfRk9SX0VOVEVSX0RFTEFZID8gMCA6IEtCUV9FTlRFUl9ERUxBWTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVG9vbHRpcEZvckl0ZW1zID0gKCkgPT4gdGhpcy5pdGVtcygpLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0udXBkYXRlVG9vbHRpcCgpKTtcblxuICAgIHByb3RlY3RlZCB1cGRhdGVFeHBhbmRlZFN0YXRlRm9ySXRlbXMgPSAoKSA9PiB0aGlzLnJlY3RhbmdsZUVsZW1lbnRzKCkuZm9yRWFjaCh0aGlzLnVwZGF0ZUl0ZW1FeHBhbmRlZFN0YXRlKTtcblxuICAgIHByb3RlY3RlZCB1cGRhdGVJdGVtRXhwYW5kZWRTdGF0ZSA9IChpdGVtOiBLYnFOYXZiYXJJY0l0ZW0pOiB2b2lkID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgICAgICAgaXRlbS5idXR0b24/LnVwZGF0ZUNsYXNzTW9kaWZpZXJGb3JJY29ucygpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZXh0ZXJuYWxDb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCduYXZiYXJJYycpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IEtCUV9OQVZCQVJfSUNfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cbn1cbiJdfQ==
|