@koobiq/components 18.21.0 → 18.23.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/alert/_alert-theme.scss +4 -0
- package/alert/alert-tokens.scss +1 -1
- package/alert/alert.component.d.ts +8 -2
- package/badge/badge.component.d.ts +0 -1
- package/breadcrumbs/breadcrumbs.d.ts +19 -22
- package/breadcrumbs/breadcrumbs.scss +13 -4
- package/breadcrumbs/breadcrumbs.types.d.ts +22 -0
- package/breadcrumbs/public-api.d.ts +1 -0
- package/button/button.component.d.ts +11 -16
- package/checkbox/checkbox.d.ts +18 -23
- package/core/animation/animation.d.ts +5 -2
- package/core/common-behaviors/checkbox.d.ts +5 -0
- package/core/common-behaviors/color.d.ts +11 -0
- package/core/common-behaviors/index.d.ts +2 -1
- package/core/option/action.d.ts +5 -7
- package/core/option/optgroup.d.ts +6 -7
- package/core/pop-up/pop-up-trigger.d.ts +11 -3
- package/core/pop-up/pop-up.d.ts +8 -2
- package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -12
- package/core/utils/utils.d.ts +5 -0
- package/dropdown/dropdown-item.component.d.ts +6 -8
- package/empty-state/_empty-state-theme.scss +15 -5
- package/empty-state/empty-state-tokens.scss +12 -2
- package/empty-state/empty-state.component.d.ts +7 -2
- package/empty-state/empty-state.scss +29 -0
- package/esm2022/accordion/accordion-trigger.component.mjs +1 -1
- package/esm2022/actions-panel/actions-panel-container.mjs +2 -2
- package/esm2022/actions-panel/actions-panel.mjs +1 -1
- package/esm2022/alert/alert.component.mjs +11 -5
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +1 -1
- package/esm2022/badge/badge.component.mjs +2 -5
- package/esm2022/breadcrumbs/breadcrumbs.mjs +55 -22
- package/esm2022/breadcrumbs/breadcrumbs.types.mjs +2 -0
- package/esm2022/breadcrumbs/public-api.mjs +2 -1
- package/esm2022/button/button.component.mjs +23 -27
- package/esm2022/button-toggle/button-toggle.component.mjs +4 -3
- package/esm2022/checkbox/checkbox.mjs +27 -28
- package/esm2022/code-block/code-block-highlight.mjs +1 -1
- package/esm2022/code-block/code-block.mjs +2 -2
- package/esm2022/core/animation/animation.mjs +4 -1
- package/esm2022/core/common-behaviors/checkbox.mjs +2 -0
- package/esm2022/core/common-behaviors/color.mjs +35 -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/index.mjs +3 -2
- package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
- package/esm2022/core/formatters/number/formatter.mjs +1 -1
- package/esm2022/core/forms/validators.mjs +1 -1
- package/esm2022/core/line/line.mjs +1 -1
- package/esm2022/core/option/action.mjs +17 -12
- package/esm2022/core/option/optgroup.mjs +18 -12
- package/esm2022/core/option/option.mjs +1 -1
- package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +27 -12
- package/esm2022/core/pop-up/pop-up.mjs +18 -5
- package/esm2022/core/select/common.mjs +1 -1
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +10 -19
- package/esm2022/core/services/measure-scrollbar.service.mjs +1 -1
- package/esm2022/core/utils/utils.mjs +11 -1
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +2 -2
- package/esm2022/datepicker/datepicker-input.directive.mjs +1 -1
- package/esm2022/datepicker/datepicker-toggle.component.mjs +1 -1
- package/esm2022/datepicker/datepicker.component.mjs +1 -1
- package/esm2022/datepicker/month-view.component.mjs +1 -1
- package/esm2022/dropdown/dropdown-item.component.mjs +19 -14
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +1 -1
- package/esm2022/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +1 -1
- package/esm2022/empty-state/empty-state.component.mjs +13 -8
- package/esm2022/file-upload/file-drop.mjs +1 -1
- package/esm2022/file-upload/file-upload.mjs +1 -1
- package/esm2022/file-upload/multiple-file-upload.component.mjs +2 -2
- package/esm2022/file-upload/single-file-upload.component.mjs +2 -2
- package/esm2022/filter-bar/filter-bar-button.mjs +2 -1
- package/esm2022/filter-bar/filter-bar.mjs +14 -1
- package/esm2022/filter-bar/filter-bar.module.mjs +5 -3
- package/esm2022/filter-bar/filter-bar.types.mjs +27 -2
- package/esm2022/filter-bar/filter-refresher.mjs +2 -2
- package/esm2022/filter-bar/filter-reset.mjs +16 -6
- package/esm2022/filter-bar/filter-search.mjs +19 -6
- package/esm2022/filter-bar/filters.mjs +22 -6
- package/esm2022/filter-bar/pipe-add.mjs +11 -2
- package/esm2022/filter-bar/pipe.directive.mjs +7 -25
- package/esm2022/filter-bar/pipes/base-pipe.mjs +23 -3
- package/esm2022/filter-bar/pipes/pipe-button.mjs +12 -6
- package/esm2022/filter-bar/pipes/pipe-date.mjs +26 -8
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +27 -8
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +7 -2
- package/esm2022/filter-bar/pipes/pipe-select.mjs +7 -2
- package/esm2022/filter-bar/pipes/pipe-state.mjs +2 -1
- package/esm2022/filter-bar/pipes/pipe-text.mjs +7 -3
- package/esm2022/filter-bar/pipes/pipe-title.mjs +2 -1
- package/esm2022/form-field/cleaner.mjs +1 -1
- package/esm2022/form-field/form-field.mjs +13 -22
- package/esm2022/form-field/hint.mjs +10 -18
- package/esm2022/form-field/password-hint.mjs +7 -7
- package/esm2022/form-field/password-toggle.mjs +1 -1
- package/esm2022/form-field/stepper.mjs +1 -1
- package/esm2022/form-field/validate.directive.mjs +1 -1
- package/esm2022/icon/icon-button.component.mjs +13 -21
- package/esm2022/icon/icon-item.component.mjs +8 -15
- package/esm2022/icon/icon.component.mjs +15 -27
- package/esm2022/input/input-number.mjs +1 -1
- package/esm2022/input/input-password.mjs +20 -5
- package/esm2022/input/input.mjs +21 -22
- package/esm2022/link/link.component.mjs +46 -14
- package/esm2022/list/list-selection.component.mjs +19 -15
- package/esm2022/loader-overlay/loader-overlay.component.mjs +14 -9
- package/esm2022/markdown/markdown.component.mjs +2 -2
- package/esm2022/modal/modal.component.mjs +2 -2
- package/esm2022/modal/modal.directive.mjs +1 -1
- package/esm2022/modal/modal.service.mjs +1 -1
- package/esm2022/navbar/navbar-item.component.mjs +2 -2
- package/esm2022/navbar/navbar.component.mjs +9 -12
- package/esm2022/navbar/vertical-navbar.component.mjs +9 -13
- package/esm2022/overflow-items/overflow-items.mjs +1 -1
- package/esm2022/popover/popover-confirm.component.mjs +2 -2
- package/esm2022/popover/popover.component.mjs +5 -4
- package/esm2022/progress-bar/progress-bar.component.mjs +14 -21
- package/esm2022/progress-spinner/progress-spinner.component.mjs +17 -24
- package/esm2022/radio/radio.component.mjs +26 -36
- package/esm2022/scrollbar/scrollbar.component.mjs +1 -1
- package/esm2022/scrollbar/scrollbar.directive.mjs +1 -1
- package/esm2022/select/select.component.mjs +56 -37
- package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
- package/esm2022/sidepanel/sidepanel.service.mjs +1 -1
- package/esm2022/splitter/splitter.component.mjs +1 -1
- package/esm2022/tabs/paginated-tab-header.mjs +7 -4
- package/esm2022/tabs/tab-body.component.mjs +1 -1
- package/esm2022/tabs/tab-group.component.mjs +23 -19
- package/esm2022/tabs/tab-header.component.mjs +3 -3
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +16 -13
- package/esm2022/tabs/tab-nav-bar.mjs +2 -2
- package/esm2022/tabs/tab.component.mjs +17 -12
- package/esm2022/tags/tag-input.mjs +1 -1
- package/esm2022/tags/tag-list.component.mjs +27 -22
- package/esm2022/tags/tag.component.mjs +7 -14
- package/esm2022/textarea/textarea.component.mjs +21 -22
- package/esm2022/timepicker/timepicker.directive.mjs +1 -1
- package/esm2022/timezone/timezone-select.component.mjs +3 -3
- package/esm2022/toast/toast.component.mjs +2 -2
- package/esm2022/toggle/toggle.component.mjs +111 -31
- package/esm2022/tree/control/base-tree-control.mjs +1 -1
- package/esm2022/tree/control/flat-tree-control.filters.mjs +1 -1
- package/esm2022/tree/control/nested-tree-control.mjs +1 -1
- package/esm2022/tree/data-source/flat-data-source.mjs +1 -1
- package/esm2022/tree/padding.directive.mjs +1 -1
- package/esm2022/tree/toggle.mjs +19 -14
- package/esm2022/tree/tree-base.mjs +1 -1
- package/esm2022/tree/tree-option.component.mjs +1 -1
- package/esm2022/tree/tree-selection.component.mjs +1 -1
- package/esm2022/tree-select/tree-select.component.mjs +58 -38
- package/fesm2022/koobiq-components-accordion.mjs +1 -1
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +10 -4
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -5
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +54 -21
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +3 -3
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +23 -27
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +27 -28
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +1 -1
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +130 -51
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +2 -2
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +18 -13
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +12 -7
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +2 -2
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +1381 -1233
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +26 -43
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +33 -57
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +40 -25
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +46 -14
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -15
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +13 -8
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +2 -2
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +2 -2
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +17 -24
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +5 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -20
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +16 -23
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +26 -36
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +56 -37
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +60 -44
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +32 -34
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +21 -22
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +111 -31
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +57 -37
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +21 -15
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/multiple-file-upload.component.d.ts +2 -2
- package/file-upload/single-file-upload.component.d.ts +2 -2
- package/filter-bar/filter-bar-button.d.ts +1 -0
- package/filter-bar/filter-bar.d.ts +14 -0
- package/filter-bar/filter-bar.types.d.ts +13 -3
- package/filter-bar/filter-reset.d.ts +6 -2
- package/filter-bar/filter-search.d.ts +17 -10
- package/filter-bar/filters.d.ts +26 -11
- package/filter-bar/pipe-add.d.ts +10 -0
- package/filter-bar/pipe.directive.d.ts +5 -5
- package/filter-bar/pipes/base-pipe.d.ts +28 -2
- package/filter-bar/pipes/pipe-button.d.ts +6 -1
- package/filter-bar/pipes/pipe-date.d.ts +30 -10
- package/filter-bar/pipes/pipe-date.scss +29 -27
- package/filter-bar/pipes/pipe-datetime.d.ts +31 -10
- package/filter-bar/pipes/pipe-multi-select.d.ts +7 -0
- package/filter-bar/pipes/pipe-select.d.ts +7 -0
- package/filter-bar/pipes/pipe-state.d.ts +1 -0
- package/filter-bar/pipes/pipe-text.d.ts +5 -0
- package/form-field/form-field.d.ts +4 -12
- package/form-field/hint.d.ts +3 -12
- package/form-field/password-hint.d.ts +3 -3
- package/icon/icon-button.component.d.ts +5 -8
- package/icon/icon-item.component.d.ts +3 -7
- package/icon/icon.component.d.ts +7 -14
- package/input/input-password.d.ts +8 -2
- package/input/input.d.ts +9 -18
- package/link/_link-theme.scss +31 -8
- package/link/link.component.d.ts +13 -9
- package/list/list-selection.component.d.ts +8 -10
- package/loader-overlay/_loader-overlay-theme.scss +18 -8
- package/loader-overlay/loader-overlay-tokens.scss +6 -3
- package/loader-overlay/loader-overlay.component.d.ts +7 -2
- package/loader-overlay/loader-overlay.scss +19 -5
- package/markdown/markdown.scss +0 -4
- package/navbar/navbar.component.d.ts +2 -2
- package/navbar/vertical-navbar.component.d.ts +3 -3
- package/package.json +5 -5
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/progress-bar.component.d.ts +4 -12
- package/progress-spinner/progress-spinner.component.d.ts +4 -12
- package/radio/radio.component.d.ts +11 -25
- package/radio/radio.scss +0 -1
- package/schematics/collection.json +10 -0
- package/schematics/migrations/css-selectors/README.md +19 -0
- package/schematics/migrations/deprecated-icons/README.md +21 -0
- package/schematics/migrations/empty-state-size-attr/README.md +62 -0
- package/schematics/migrations/empty-state-size-attr/index.js +74 -0
- package/schematics/migrations/empty-state-size-attr/schema.json +15 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +62 -0
- package/schematics/migrations/loader-overlay-size-attr/index.js +74 -0
- package/schematics/migrations/loader-overlay-size-attr/schema.json +15 -0
- package/schematics/migrations/new-icons-pack/README.md +21 -0
- package/schematics/ng-add/index.js +3 -3
- package/schematics/utils/angular-parsing.js +153 -0
- package/schematics/utils/ast.js +28 -0
- package/schematics/utils/package-config.js +46 -0
- package/schematics/utils/typescript.js +171 -0
- package/select/select.component.d.ts +26 -25
- package/tabs/paginated-tab-header.d.ts +2 -1
- package/tabs/tab-group.component.d.ts +11 -13
- package/tabs/tab-header.component.d.ts +1 -1
- package/tabs/tab-label-wrapper.directive.d.ts +6 -8
- package/tabs/tab.component.d.ts +7 -8
- package/tags/tag-list.component.d.ts +15 -18
- package/tags/tag.component.d.ts +3 -10
- package/textarea/textarea.component.d.ts +8 -17
- package/toggle/_toggle-theme.scss +12 -3
- package/toggle/toggle-tokens.scss +2 -2
- package/toggle/toggle.component.d.ts +28 -14
- package/toggle/toggle.scss +37 -0
- package/tree/toggle.d.ts +7 -9
- package/tree/tree-selection.component.d.ts +2 -2
- package/tree-select/tree-select.component.d.ts +24 -26
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation
|
|
2
|
+
import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Inject, Input, numberAttribute, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { KbqColorDirective } from '@koobiq/components/core';
|
|
5
5
|
import { KBQ_CHECKBOX_CLICK_ACTION } from './checkbox-config';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/cdk/a11y";
|
|
@@ -24,26 +24,17 @@ export const KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR = {
|
|
|
24
24
|
export var TransitionCheckState;
|
|
25
25
|
(function (TransitionCheckState) {
|
|
26
26
|
/** The initial state of the component before any user interaction. */
|
|
27
|
-
TransitionCheckState[
|
|
27
|
+
TransitionCheckState["Init"] = "init";
|
|
28
28
|
/** The state representing the component when it's becoming checked. */
|
|
29
|
-
TransitionCheckState[
|
|
29
|
+
TransitionCheckState["Checked"] = "checked";
|
|
30
30
|
/** The state representing the component when it's becoming unchecked. */
|
|
31
|
-
TransitionCheckState[
|
|
31
|
+
TransitionCheckState["Unchecked"] = "unchecked";
|
|
32
32
|
/** The state representing the component when it's becoming indeterminate. */
|
|
33
|
-
TransitionCheckState[
|
|
33
|
+
TransitionCheckState["Indeterminate"] = "indeterminate";
|
|
34
34
|
})(TransitionCheckState || (TransitionCheckState = {}));
|
|
35
35
|
/** Change event object emitted by KbqCheckbox. */
|
|
36
36
|
export class KbqCheckboxChange {
|
|
37
37
|
}
|
|
38
|
-
// Boilerplate for applying mixins to KbqCheckbox.
|
|
39
|
-
/** @docs-private */
|
|
40
|
-
export class KbqCheckboxBase {
|
|
41
|
-
constructor(elementRef) {
|
|
42
|
-
this.elementRef = elementRef;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/** @docs-private */
|
|
46
|
-
export const KbqCheckboxMixinBase = mixinTabIndex(mixinColor(mixinDisabled(KbqCheckboxBase), KbqComponentColors.Theme));
|
|
47
38
|
/**
|
|
48
39
|
* A Koobiq checkbox component. Supports all of the functionality of an HTML5 checkbox,
|
|
49
40
|
* and exposes a similar API. A KbqCheckbox can be either checked, unchecked, indeterminate, or
|
|
@@ -51,7 +42,7 @@ export const KbqCheckboxMixinBase = mixinTabIndex(mixinColor(mixinDisabled(KbqCh
|
|
|
51
42
|
* so there is no need to provide them yourself. However, if you want to omit a label and still
|
|
52
43
|
* have the checkbox be accessible, you may supply an [aria-label] input.
|
|
53
44
|
*/
|
|
54
|
-
export class KbqCheckbox extends
|
|
45
|
+
export class KbqCheckbox extends KbqColorDirective {
|
|
55
46
|
/** Returns the unique id for the visual hidden input. */
|
|
56
47
|
get inputId() {
|
|
57
48
|
return `${this.id || this.uniqueId}-input`;
|
|
@@ -68,10 +59,7 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
|
|
|
68
59
|
this.changeDetectorRef.markForCheck();
|
|
69
60
|
}
|
|
70
61
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Whether the checkbox is disabled. This fully overrides the implementation provided by
|
|
73
|
-
* mixinDisabled, but the mixin is still required because mixinTabIndex requires it.
|
|
74
|
-
*/
|
|
62
|
+
/** Whether the checkbox is disabled. */
|
|
75
63
|
get disabled() {
|
|
76
64
|
return this._disabled;
|
|
77
65
|
}
|
|
@@ -81,6 +69,12 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
|
|
|
81
69
|
this.changeDetectorRef.markForCheck();
|
|
82
70
|
}
|
|
83
71
|
}
|
|
72
|
+
get tabIndex() {
|
|
73
|
+
return this.disabled ? -1 : this._tabIndex;
|
|
74
|
+
}
|
|
75
|
+
set tabIndex(value) {
|
|
76
|
+
this._tabIndex = value;
|
|
77
|
+
}
|
|
84
78
|
/**
|
|
85
79
|
* Whether the checkbox is indeterminate. This is also known as "mixed" mode and can be used to
|
|
86
80
|
* represent a checkbox with three states, e.g. a checkbox that represents a nested list of
|
|
@@ -103,8 +97,8 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
|
|
|
103
97
|
this.indeterminateChange.emit(this._indeterminate);
|
|
104
98
|
}
|
|
105
99
|
}
|
|
106
|
-
constructor(
|
|
107
|
-
super(
|
|
100
|
+
constructor(changeDetectorRef, focusMonitor, clickAction) {
|
|
101
|
+
super();
|
|
108
102
|
this.changeDetectorRef = changeDetectorRef;
|
|
109
103
|
this.focusMonitor = focusMonitor;
|
|
110
104
|
this.clickAction = clickAction;
|
|
@@ -119,6 +113,7 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
|
|
|
119
113
|
this.indeterminateChange = new EventEmitter();
|
|
120
114
|
this._checked = false;
|
|
121
115
|
this._disabled = false;
|
|
116
|
+
this._tabIndex = 0;
|
|
122
117
|
this._indeterminate = false;
|
|
123
118
|
this.uniqueId = `kbq-checkbox-${++nextUniqueId}`;
|
|
124
119
|
this.currentAnimationClass = '';
|
|
@@ -245,8 +240,8 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
|
|
|
245
240
|
this.onTouched();
|
|
246
241
|
}
|
|
247
242
|
}
|
|
248
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqCheckbox, deps: [{ token: i0.
|
|
249
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.6", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { color: "color", tabIndex: "tabIndex", big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: ["required", "required", booleanAttribute], checked: "checked", disabled: "disabled", indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--kbq-checkbox-size-normal-margin-bottom)}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big{margin-bottom:var(--kbq-checkbox-size-big-margin-bottom)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-normal-margin-bottom: var(--kbq-size-s);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-size-big-margin-bottom: var(--kbq-size-m);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
243
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: KBQ_CHECKBOX_CLICK_ACTION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.6", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: ["required", "required", booleanAttribute], checked: "checked", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute], indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--kbq-checkbox-size-normal-margin-bottom)}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big{margin-bottom:var(--kbq-checkbox-size-big-margin-bottom)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-normal-margin-bottom: var(--kbq-size-s);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-size-big-margin-bottom: var(--kbq-size-m);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
250
245
|
}
|
|
251
246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqCheckbox, decorators: [{
|
|
252
247
|
type: Component,
|
|
@@ -260,8 +255,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
260
255
|
'[class.kbq-checked]': 'checked',
|
|
261
256
|
'[class.kbq-disabled]': 'disabled',
|
|
262
257
|
'[class.kbq-checkbox_label-before]': 'labelPosition == "before"'
|
|
263
|
-
}, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], inputs: ['color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--kbq-checkbox-size-normal-margin-bottom)}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big{margin-bottom:var(--kbq-checkbox-size-big-margin-bottom)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-normal-margin-bottom: var(--kbq-size-s);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-size-big-margin-bottom: var(--kbq-size-m);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"] }]
|
|
264
|
-
}], ctorParameters: () => [{ type: i0.
|
|
258
|
+
}, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--kbq-checkbox-size-normal-margin-bottom)}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big{margin-bottom:var(--kbq-checkbox-size-big-margin-bottom)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-normal-margin-bottom: var(--kbq-size-s);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-size-big-margin-bottom: var(--kbq-size-m);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"] }]
|
|
259
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{
|
|
265
260
|
type: Optional
|
|
266
261
|
}, {
|
|
267
262
|
type: Inject,
|
|
@@ -289,8 +284,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
289
284
|
}], checked: [{
|
|
290
285
|
type: Input
|
|
291
286
|
}], disabled: [{
|
|
292
|
-
type: Input
|
|
287
|
+
type: Input,
|
|
288
|
+
args: [{ transform: booleanAttribute }]
|
|
289
|
+
}], tabIndex: [{
|
|
290
|
+
type: Input,
|
|
291
|
+
args: [{ transform: numberAttribute }]
|
|
293
292
|
}], indeterminate: [{
|
|
294
293
|
type: Input
|
|
295
294
|
}] } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBT0gsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEVBQ2IsYUFBYSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRXRGLHdFQUF3RTtBQUN4RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFRO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM1QixzRUFBc0U7SUFDdEUsK0RBQUksQ0FBQTtJQUNKLHVFQUF1RTtJQUN2RSxxRUFBTyxDQUFBO0lBQ1AseUVB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RSxjQUFjO3dCQUNyQixNQUFNLEVBQUUsSUFBSTt3QkFDWixXQUFXLEVBQUUsSUFBSTt3QkFDakIsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsMEJBQTBCLEVBQUUsS0FBSzt3QkFDakMsMkJBQTJCLEVBQUUsZUFBZTt3QkFDNUMscUJBQXFCLEVBQUUsU0FBUzt3QkFDaEMsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsbUNBQW1DLEVBQUUsMkJBQTJCO3FCQUNuRSxhQUNVLENBQUMsbUNBQW1DLENBQUMsVUFDeEMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGlCQUNkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQThHMUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7eUNBeEd4QyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0csRUFBRTtzQkFBVixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdhLE1BQU07c0JBQXhCLE1BQU07Z0JBR1ksbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUdFLEtBQUs7c0JBQWIsS0FBSztnQkFHaUMsWUFBWTtzQkFBbEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVFHLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTWxDLE9BQU87c0JBRFYsS0FBSztnQkFtQkYsUUFBUTtzQkFEWCxLQUFLO2dCQXFCRixhQUFhO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ2FuQ29sb3IsXG4gICAgQ2FuQ29sb3JDdG9yLFxuICAgIENhbkRpc2FibGUsXG4gICAgQ2FuRGlzYWJsZUN0b3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSGFzVGFiSW5kZXhDdG9yLFxuICAgIEticUNvbXBvbmVudENvbG9ycyxcbiAgICBtaXhpbkNvbG9yLFxuICAgIG1peGluRGlzYWJsZWQsXG4gICAgbWl4aW5UYWJJbmRleFxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcyBmb3IgY2hlY2tib3ggY29tcG9uZW50cy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVyIEV4cHJlc3Npb24gdGhhdCBhbGxvd3Mga2JxLWNoZWNrYm94IHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKiBUaGlzIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBLYnFDaGVja2JveCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHN0YXRlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkNoZWNrU3RhdGUge1xuICAgIC8qKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSBhbnkgdXNlciBpbnRlcmFjdGlvbi4gKi9cbiAgICBJbml0LFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIGNoZWNrZWQuICovXG4gICAgQ2hlY2tlZCxcbiAgICAvKiogVGhlIHN0YXRlIHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IHdoZW4gaXQncyBiZWNvbWluZyB1bmNoZWNrZWQuICovXG4gICAgVW5jaGVja2VkLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIGluZGV0ZXJtaW5hdGUuICovXG4gICAgSW5kZXRlcm1pbmF0ZVxufVxuXG4vKiogQ2hhbmdlIGV2ZW50IG9iamVjdCBlbWl0dGVkIGJ5IEticUNoZWNrYm94LiAqL1xuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94Q2hhbmdlIHtcbiAgICAvKiogVGhlIHNvdXJjZSBLYnFDaGVja2JveCBvZiB0aGUgZXZlbnQuICovXG4gICAgc291cmNlOiBLYnFDaGVja2JveDtcbiAgICAvKiogVGhlIG5ldyBgY2hlY2tlZGAgdmFsdWUgb2YgdGhlIGNoZWNrYm94LiAqL1xuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG59XG5cbi8vIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gS2JxQ2hlY2tib3guXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94QmFzZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS2JxQ2hlY2tib3hNaXhpbkJhc2U6IEhhc1RhYkluZGV4Q3RvciAmIENhbkNvbG9yQ3RvciAmIENhbkRpc2FibGVDdG9yICYgdHlwZW9mIEticUNoZWNrYm94QmFzZSA9XG4gICAgbWl4aW5UYWJJbmRleChtaXhpbkNvbG9yKG1peGluRGlzYWJsZWQoS2JxQ2hlY2tib3hCYXNlKSwgS2JxQ29tcG9uZW50Q29sb3JzLlRoZW1lKSk7XG5cbi8qKlxuICogQSBLb29iaXEgY2hlY2tib3ggY29tcG9uZW50LiBTdXBwb3J0cyBhbGwgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gSFRNTDUgY2hlY2tib3gsXG4gKiBhbmQgZXhwb3NlcyBhIHNpbWlsYXIgQVBJLiBBIEticUNoZWNrYm94IGNhbiBiZSBlaXRoZXIgY2hlY2tlZCwgdW5jaGVja2VkLCBpbmRldGVybWluYXRlLCBvclxuICogZGlzYWJsZWQuIE5vdGUgdGhhdCBhbGwgYWRkaXRpb25hbCBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMgYXJlIHRha2VuIGNhcmUgb2YgYnkgdGhlIGNvbXBvbmVudCxcbiAqIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvdmlkZSB0aGVtIHlvdXJzZWxmLiBIb3dldmVyLCBpZiB5b3Ugd2FudCB0byBvbWl0IGEgbGFiZWwgYW5kIHN0aWxsXG4gKiBoYXZlIHRoZSBjaGVja2JveCBiZSBhY2Nlc3NpYmxlLCB5b3UgbWF5IHN1cHBseSBhbiBbYXJpYS1sYWJlbF0gaW5wdXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLWNoZWNrYm94JyxcbiAgICBleHBvcnRBczogJ2ticUNoZWNrYm94JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NoZWNrYm94Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydjaGVja2JveC5zY3NzJywgJ2NoZWNrYm94LXRva2Vucy5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1jaGVja2JveCcsXG4gICAgICAgICdbaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1jaGVja2JveF9iaWddJzogJ2JpZycsXG4gICAgICAgICdbY2xhc3Mua2JxLWluZGV0ZXJtaW5hdGVdJzogJ2luZGV0ZXJtaW5hdGUnLFxuICAgICAgICAnW2NsYXNzLmticS1jaGVja2VkXSc6ICdjaGVja2VkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY2hlY2tib3hfbGFiZWwtYmVmb3JlXSc6ICdsYWJlbFBvc2l0aW9uID09IFwiYmVmb3JlXCInXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtLQlFfQ0hFQ0tCT1hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgaW5wdXRzOiBbJ2NvbG9yJywgJ3RhYkluZGV4J10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBLYnFDaGVja2JveFxuICAgIGV4dGVuZHMgS2JxQ2hlY2tib3hNaXhpbkJhc2VcbiAgICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENhbkNvbG9yLCBDYW5EaXNhYmxlLCBIYXNUYWJJbmRleFxue1xuICAgIEBJbnB1dCgpIGJpZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEEgdW5pcXVlIGlkIGZvciB0aGUgY2hlY2tib3ggaW5wdXQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYXBwZWFyIGFmdGVyIG9yIGJlZm9yZSB0aGUgY2hlY2tib3guIERlZmF1bHRzIHRvICdhZnRlcicgKi9cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuXG4gICAgLyoqIE5hbWUgdmFsdWUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGlmIHByZXNlbnQgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrYm94J3MgYGNoZWNrZWRgIHZhbHVlIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxQ2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBpbmRldGVybWluYXRlYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogVGhlIHZhbHVlIGF0dHJpYnV0ZSBvZiB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj5gIGVsZW1lbnQgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogUmV0dXJucyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgdmlzdWFsIGhpZGRlbiBpbnB1dC4gKi9cbiAgICBnZXQgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLnVuaXF1ZUlkfS1pbnB1dGA7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHJlcXVpcmVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuXG4gICAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBkaXNhYmxlZC4gVGhpcyBmdWxseSBvdmVycmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGJ5XG4gICAgICogbWl4aW5EaXNhYmxlZCwgYnV0IHRoZSBtaXhpbiBpcyBzdGlsbCByZXF1aXJlZCBiZWNhdXNlIG1peGluVGFiSW5kZXggcmVxdWlyZXMgaXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gICAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKFRyYW5zaXRpb25DaGVja1N0YXRlLkluZGV0ZXJtaW5hdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKHRoaXMuY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgdW5pcXVlSWQ6IHN0cmluZyA9IGBrYnEtY2hlY2tib3gtJHsrK25leHRVbmlxdWVJZH1gO1xuXG4gICAgcHJpdmF0ZSBjdXJyZW50QW5pbWF0aW9uQ2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBjdXJyZW50Q2hlY2tTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUgPSBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5Jbml0O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9DSEVDS0JPWF9DTElDS19BQ1RJT04pIHByaXZhdGUgY2xpY2tBY3Rpb246IEticUNoZWNrYm94Q2xpY2tBY3Rpb25cbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgdGhpcy5pZCA9IHRoaXMudW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yXG4gICAgICAgICAgICAubW9uaXRvcih0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNPcmlnaW4pID0+IHRoaXMub25JbnB1dEZvY3VzQ2hhbmdlKGZvY3VzT3JpZ2luKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgYmVpbmcgY2FsbGVkIHdoZW5ldmVyIHRoZSBsYWJlbCB0ZXh0IGNoYW5nZXMuICovXG4gICAgb25MYWJlbFRleHRDaGFuZ2UoKSB7XG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGdldHRpbmcgY2FsbGVkIHdoZW5ldmVyIHRoZSBsYWJlbCBvZiB0aGUgY2hlY2tib3ggY2hhbmdlcy5cbiAgICAgICAgLy8gU2luY2UgdGhlIGNoZWNrYm94IHVzZXMgdGhlIE9uUHVzaCBzdHJhdGVneSB3ZSBuZWVkIHRvIG5vdGlmeSBpdCBhYm91dCB0aGUgY2hhbmdlXG4gICAgICAgIC8vIHRoYXQgaGFzIGJlZW4gcmVjb2duaXplZCBieSB0aGUgY2RrT2JzZXJ2ZUNvbnRlbnQgZGlyZWN0aXZlLlxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBnZXRBcmlhQ2hlY2tlZCgpOiAndHJ1ZScgfCAnZmFsc2UnIHwgJ21peGVkJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQgPyAndHJ1ZScgOiB0aGlzLmluZGV0ZXJtaW5hdGUgPyAnbWl4ZWQnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgYGNoZWNrZWRgIHN0YXRlIG9mIHRoZSBjaGVja2JveC4gKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3IgY2hlY2tib3ggaW5wdXQgZWxlbWVudC5cbiAgICAgKiBUb2dnbGVzIGNoZWNrZWQgc3RhdGUgaWYgZWxlbWVudCBpcyBub3QgZGlzYWJsZWQuXG4gICAgICogRG8gbm90IHRvZ2dsZSBvbiAoY2hhbmdlKSBldmVudCBzaW5jZSBJRSBkb2Vzbid0IGZpcmUgY2hhbmdlIGV2ZW50IHdoZW5cbiAgICAgKiAgIGluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgY2xpY2tlZC5cbiAgICAgKiBAcGFyYW0gZXZlbnQgSW5wdXQgY2xpY2sgZXZlbnRcbiAgICAgKi9cbiAgICBvbklucHV0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBmb3IgY2xpY2sgZXZlbnRzIG9uIHRoZSB2aXN1YWwgaGlkZGVuIGlucHV0IGVsZW1lbnQuXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIHdoZW4gYSB1c2VyIGNsaWNrcyBvbiBhIGxhYmVsIGVsZW1lbnQsIGEgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IHdpbGwgYmVcbiAgICAgICAgLy8gZGlzcGF0Y2hlZCBvbiB0aGUgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LiBTaW5jZSB3ZSBhcmUgdXNpbmcgYSBsYWJlbCBlbGVtZW50IGFzIG91clxuICAgICAgICAvLyByb290IGNvbnRhaW5lciwgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgY2hlY2tib3hgIHdpbGwgYmUgZXhlY3V0ZWQgdHdpY2UuXG4gICAgICAgIC8vIFRoZSByZWFsIGNsaWNrIGV2ZW50IHdpbGwgYnViYmxlIHVwLCBhbmQgdGhlIGdlbmVyYXRlZCBjbGljayBldmVudCBhbHNvIHRyaWVzIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgLy8gVGhpcyB3aWxsIGxlYWQgdG8gbXVsdGlwbGUgY2xpY2sgZXZlbnRzLlxuICAgICAgICAvLyBQcmV2ZW50aW5nIGJ1YmJsaW5nIGZvciB0aGUgc2Vjb25kIGV2ZW50IHdpbGwgc29sdmUgdGhhdCBpc3N1ZS5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgLy8gSWYgcmVzZXRJbmRldGVybWluYXRlIGlzIGZhbHNlLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZSwgZG8gbm90aGluZyBvbiBjbGlja1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jbGlja0FjdGlvbiAhPT0gJ25vb3AnKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzZXIgbWFudWFsbHkgY2xpY2sgb24gdGhlIGNoZWNrYm94LCBgaW5kZXRlcm1pbmF0ZWAgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnY2hlY2snKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKHRoaXMuX2NoZWNrZWQgPyBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5DaGVja2VkIDogVHJhbnNpdGlvbkNoZWNrU3RhdGUuVW5jaGVja2VkKTtcblxuICAgICAgICAgICAgLy8gRW1pdCBvdXIgY3VzdG9tIGNoYW5nZSBldmVudCBpZiB0aGUgbmF0aXZlIGlucHV0IGVtaXR0ZWQgb25lLlxuICAgICAgICAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIG9ubHkgZW1pdCBpdCwgaWYgdGhlIG5hdGl2ZSBpbnB1dCB0cmlnZ2VyZWQgb25lLCBiZWNhdXNlXG4gICAgICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBjaGFuZ2UgZXZlbnQsIHdoZW4gdGhlIGBjaGVja2VkYCB2YXJpYWJsZSBjaGFuZ2VzIGZvciBleGFtcGxlLlxuICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmNsaWNrQWN0aW9uID09PSAnbm9vcCcpIHtcbiAgICAgICAgICAgIC8vIFJlc2V0IG5hdGl2ZSBpbnB1dCB3aGVuIGNsaWNrZWQgd2l0aCBub29wLiBUaGUgbmF0aXZlIGNoZWNrYm94IGJlY29tZXMgY2hlY2tlZCBhZnRlclxuICAgICAgICAgICAgLy8gY2xpY2ssIHJlc2V0IGl0IHRvIGJlIGFsaWduIHdpdGggYGNoZWNrZWRgIHZhbHVlIG9mIGBrYnEtY2hlY2tib3hgLlxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gdGhpcy5pbmRldGVybWluYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIGNoZWNrYm94LiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQnKTtcbiAgICB9XG5cbiAgICBvbkludGVyYWN0aW9uRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRvIHN0b3AgcHJvcGFnYXRpb24gb24gdGhlIGNoYW5nZSBldmVudC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxuICAgICAgICAvLyBlbWl0IGl0cyBldmVudCBvYmplY3QgdG8gdGhlIGBjaGFuZ2VgIG91dHB1dC5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHByaXZhdGUgY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgdHJhbnNpdGlvbkNoZWNrU3RhdGUobmV3U3RhdGU6IFRyYW5zaXRpb25DaGVja1N0YXRlKSB7XG4gICAgICAgIGNvbnN0IG9sZFN0YXRlID0gdGhpcy5jdXJyZW50Q2hlY2tTdGF0ZTtcbiAgICAgICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAob2xkU3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudENoZWNrU3RhdGUgPSBuZXdTdGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENoYW5nZUV2ZW50KCkge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBLYnFDaGVja2JveENoYW5nZSgpO1xuICAgICAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICBldmVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuXG4gICAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLmNoZWNrZWQpO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb2N1cyBjaGFuZ2VzIGZvciB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgICBwcml2YXRlIG9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbjogRm9jdXNPcmlnaW4pIHtcbiAgICAgICAgaWYgKGZvY3VzT3JpZ2luKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGxhYmVsICNsYWJlbCBjbGFzcz1cImticS1jaGVja2JveF9fbGF5b3V0XCIgW2F0dHIuZm9yXT1cImlucHV0SWRcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94X19pbm5lci1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3Mua2JxLWNoZWNrYm94X19pbm5lci1jb250YWluZXJfbm8tc2lkZS1tYXJnaW5dPVwiXG4gICAgICAgICAgICAhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudCB8fCAhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudC50cmltKClcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtY2hlY2tib3gtaW5wdXQgY2RrLXZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnRlcmFjdGlvbkV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1jaGVja2JveF9fZnJhbWVcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwia2JxLWNoZWNrYm94LWNoZWNrbWFyayBrYnEga2JxLWNoZWNrLXNfMTZcIj48L2k+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImticS1jaGVja2JveC1taXhlZG1hcmsga2JxIGticS1taW51cy1zXzE2XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX3RleHQtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuICNjaGVja2JveExhYmVsIGNsYXNzPVwia2JxLWNoZWNrYm94LWxhYmVsXCIgKGNka09ic2VydmVDb250ZW50KT1cIm9uTGFiZWxUZXh0Q2hhbmdlKClcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtaGludFwiIC8+XG4gICAgPC9kaXY+XG48L2xhYmVsPlxuIl19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUVmLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRXRGLHdFQUF3RTtBQUN4RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFRO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM1QixzRUFBc0U7SUFDdEUscUNBQWEsQ0FBQTtJQUNiLHVFQUF1RTtJQUN2RSwyQ0FBbUIsQ0FBQTtJQUNuQix5RUFBeUU7SUFDekUsK0NBQXVCLENB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Q1osV0FBVyxFQUFFLElBQUk7d0JBQ2pCLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLDBCQUEwQixFQUFFLEtBQUs7d0JBQ2pDLDJCQUEyQixFQUFFLGVBQWU7d0JBQzVDLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLHNCQUFzQixFQUFFLFVBQVU7d0JBQ2xDLG1DQUFtQyxFQUFFLDJCQUEyQjtxQkFDbkUsYUFDVSxDQUFDLG1DQUFtQyxDQUFDLGlCQUNqQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtSDFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCO3lDQWhIeEMsR0FBRztzQkFBWCxLQUFLO2dCQUdHLEVBQUU7c0JBQVYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHYSxNQUFNO3NCQUF4QixNQUFNO2dCQUdZLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFHRSxLQUFLO3NCQUFiLEtBQUs7Z0JBR2lDLFlBQVk7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFRRyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU1sQyxPQUFPO3NCQURWLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFlbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFrQmpDLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEticUNoZWNrZWRTdGF0ZSwgS2JxQ29sb3JEaXJlY3RpdmUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcyBmb3IgY2hlY2tib3ggY29tcG9uZW50cy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVyIEV4cHJlc3Npb24gdGhhdCBhbGxvd3Mga2JxLWNoZWNrYm94IHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKiBUaGlzIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBLYnFDaGVja2JveCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHN0YXRlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkNoZWNrU3RhdGUge1xuICAgIC8qKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSBhbnkgdXNlciBpbnRlcmFjdGlvbi4gKi9cbiAgICBJbml0ID0gJ2luaXQnLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIGNoZWNrZWQuICovXG4gICAgQ2hlY2tlZCA9ICdjaGVja2VkJyxcbiAgICAvKiogVGhlIHN0YXRlIHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IHdoZW4gaXQncyBiZWNvbWluZyB1bmNoZWNrZWQuICovXG4gICAgVW5jaGVja2VkID0gJ3VuY2hlY2tlZCcsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBJbmRldGVybWluYXRlID0gJ2luZGV0ZXJtaW5hdGUnXG59XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxQ2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIEticUNoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEticUNoZWNrYm94O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIEtvb2JpcSBjaGVja2JveCBjb21wb25lbnQuIFN1cHBvcnRzIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBIVE1MNSBjaGVja2JveCxcbiAqIGFuZCBleHBvc2VzIGEgc2ltaWxhciBBUEkuIEEgS2JxQ2hlY2tib3ggY2FuIGJlIGVpdGhlciBjaGVja2VkLCB1bmNoZWNrZWQsIGluZGV0ZXJtaW5hdGUsIG9yXG4gKiBkaXNhYmxlZC4gTm90ZSB0aGF0IGFsbCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcyBhcmUgdGFrZW4gY2FyZSBvZiBieSB0aGUgY29tcG9uZW50LFxuICogc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm92aWRlIHRoZW0geW91cnNlbGYuIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIG9taXQgYSBsYWJlbCBhbmQgc3RpbGxcbiAqIGhhdmUgdGhlIGNoZWNrYm94IGJlIGFjY2Vzc2libGUsIHlvdSBtYXkgc3VwcGx5IGFuIFthcmlhLWxhYmVsXSBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtY2hlY2tib3gnLFxuICAgIGV4cG9ydEFzOiAna2JxQ2hlY2tib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hlY2tib3guaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LnNjc3MnLCAnY2hlY2tib3gtdG9rZW5zLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWNoZWNrYm94JyxcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrYm94X2JpZ10nOiAnYmlnJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1jaGVja2JveF9sYWJlbC1iZWZvcmVdJzogJ2xhYmVsUG9zaXRpb24gPT0gXCJiZWZvcmVcIidcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0tCUV9DSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94IGV4dGVuZHMgS2JxQ29sb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBiaWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBBIHVuaXF1ZSBpZCBmb3IgdGhlIGNoZWNrYm94IGlucHV0LiBJZiBub25lIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlIGF1dG8tZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFwcGVhciBhZnRlciBvciBiZWZvcmUgdGhlIGNoZWNrYm94LiBEZWZhdWx0cyB0byAnYWZ0ZXInICovXG4gICAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcblxuICAgIC8qKiBOYW1lIHZhbHVlIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgaW5wdXQgZWxlbWVudCBpZiBwcmVzZW50ICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBjaGVja2VkYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFDaGVja2JveENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hlY2tib3gncyBgaW5kZXRlcm1pbmF0ZWAgdmFsdWUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIFRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50ICovXG4gICAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+YCBlbGVtZW50ICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQuICovXG4gICAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWQgfHwgdGhpcy51bmlxdWVJZH0taW5wdXRgO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyByZXF1aXJlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cblxuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90YWJJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYkluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG5cbiAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUoVHJhbnNpdGlvbkNoZWNrU3RhdGUuSW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5jaGVja2VkID8gVHJhbnNpdGlvbkNoZWNrU3RhdGUuQ2hlY2tlZCA6IFRyYW5zaXRpb25DaGVja1N0YXRlLlVuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSB1bmlxdWVJZDogc3RyaW5nID0gYGticS1jaGVja2JveC0keysrbmV4dFVuaXF1ZUlkfWA7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRBbmltYXRpb25DbGFzczogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRDaGVja1N0YXRlOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZSA9IFRyYW5zaXRpb25DaGVja1N0YXRlLkluaXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NIRUNLQk9YX0NMSUNLX0FDVElPTikgcHJpdmF0ZSBjbGlja0FjdGlvbjogS2JxQ2hlY2tib3hDbGlja0FjdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLnVuaXF1ZUlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkLiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbikpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGJlaW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgdGV4dCBjaGFuZ2VzLiAqL1xuICAgIG9uTGFiZWxUZXh0Q2hhbmdlKCkge1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBnZXR0aW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgb2YgdGhlIGNoZWNrYm94IGNoYW5nZXMuXG4gICAgICAgIC8vIFNpbmNlIHRoZSBjaGVja2JveCB1c2VzIHRoZSBPblB1c2ggc3RyYXRlZ3kgd2UgbmVlZCB0byBub3RpZnkgaXQgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYnkgdGhlIGNka09ic2VydmVDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJpYUNoZWNrZWQoKTogS2JxQ2hlY2tlZFN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZCA/ICd0cnVlJyA6IHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBgY2hlY2tlZGAgc3RhdGUgb2YgdGhlIGNoZWNrYm94LiAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGZvciBjaGVja2JveCBpbnB1dCBlbGVtZW50LlxuICAgICAqIFRvZ2dsZXMgY2hlY2tlZCBzdGF0ZSBpZiBlbGVtZW50IGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKiBEbyBub3QgdG9nZ2xlIG9uIChjaGFuZ2UpIGV2ZW50IHNpbmNlIElFIGRvZXNuJ3QgZmlyZSBjaGFuZ2UgZXZlbnQgd2hlblxuICAgICAqICAgaW5kZXRlcm1pbmF0ZSBjaGVja2JveCBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSBldmVudCBJbnB1dCBjbGljayBldmVudFxuICAgICAqL1xuICAgIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIGZvciBjbGljayBldmVudHMgb24gdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQgZWxlbWVudC5cbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgd2hlbiBhIHVzZXIgY2xpY2tzIG9uIGEgbGFiZWwgZWxlbWVudCwgYSBnZW5lcmF0ZWQgY2xpY2sgZXZlbnQgd2lsbCBiZVxuICAgICAgICAvLyBkaXNwYXRjaGVkIG9uIHRoZSBhc3NvY2lhdGVkIGlucHV0IGVsZW1lbnQuIFNpbmNlIHdlIGFyZSB1c2luZyBhIGxhYmVsIGVsZW1lbnQgYXMgb3VyXG4gICAgICAgIC8vIHJvb3QgY29udGFpbmVyLCB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGBjaGVja2JveGAgd2lsbCBiZSBleGVjdXRlZCB0d2ljZS5cbiAgICAgICAgLy8gVGhlIHJlYWwgY2xpY2sgZXZlbnQgd2lsbCBidWJibGUgdXAsIGFuZCB0aGUgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IGFsc28gdHJpZXMgdG8gYnViYmxlIHVwLlxuICAgICAgICAvLyBUaGlzIHdpbGwgbGVhZCB0byBtdWx0aXBsZSBjbGljayBldmVudHMuXG4gICAgICAgIC8vIFByZXZlbnRpbmcgYnViYmxpbmcgZm9yIHRoZSBzZWNvbmQgZXZlbnQgd2lsbCBzb2x2ZSB0aGF0IGlzc3VlLlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAvLyBJZiByZXNldEluZGV0ZXJtaW5hdGUgaXMgZmFsc2UsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBpcyBpbmRldGVybWluYXRlLCBkbyBub3RoaW5nIG9uIGNsaWNrXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnbm9vcCcpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gdXNlciBtYW51YWxseSBjbGljayBvbiB0aGUgY2hlY2tib3gsIGBpbmRldGVybWluYXRlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAgICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlICYmIHRoaXMuY2xpY2tBY3Rpb24gIT09ICdjaGVjaycpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5fY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBFbWl0IG91ciBjdXN0b20gY2hhbmdlIGV2ZW50IGlmIHRoZSBuYXRpdmUgaW5wdXQgZW1pdHRlZCBvbmUuXG4gICAgICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gb25seSBlbWl0IGl0LCBpZiB0aGUgbmF0aXZlIGlucHV0IHRyaWdnZXJlZCBvbmUsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGNoYW5nZSBldmVudCwgd2hlbiB0aGUgYGNoZWNrZWRgIHZhcmlhYmxlIGNoYW5nZXMgZm9yIGV4YW1wbGUuXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpY2tBY3Rpb24gPT09ICdub29wJykge1xuICAgICAgICAgICAgLy8gUmVzZXQgbmF0aXZlIGlucHV0IHdoZW4gY2xpY2tlZCB3aXRoIG5vb3AuIFRoZSBuYXRpdmUgY2hlY2tib3ggYmVjb21lcyBjaGVja2VkIGFmdGVyXG4gICAgICAgICAgICAvLyBjbGljaywgcmVzZXQgaXQgdG8gYmUgYWxpZ24gd2l0aCBgY2hlY2tlZGAgdmFsdWUgb2YgYGticS1jaGVja2JveGAuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgY2hlY2tib3guICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgIH1cblxuICAgIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hhbmdlIGV2ZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uQ2hlY2tTdGF0ZShuZXdTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLmN1cnJlbnRDaGVja1N0YXRlO1xuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChvbGRTdGF0ZSA9PT0gbmV3U3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50Q2hlY2tTdGF0ZSA9IG5ld1N0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEticUNoZWNrYm94Q2hhbmdlKCk7XG5cbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcblxuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9jdXMgY2hhbmdlcyBmb3IgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBvbklucHV0Rm9jdXNDaGFuZ2UoZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGlmIChmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxsYWJlbCAjbGFiZWwgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2xheW91dFwiIFthdHRyLmZvcl09XCJpbnB1dElkXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgW2NsYXNzLmticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyX25vLXNpZGUtbWFyZ2luXT1cIlxuICAgICAgICAgICAgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQgfHwgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQudHJpbSgpXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImdldEFyaWFDaGVja2VkKClcIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2ZyYW1lXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImticS1jaGVja2JveC1jaGVja21hcmsga2JxIGticS1jaGVjay1zXzE2XCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtbWl4ZWRtYXJrIGticSBrYnEtbWludXMtc18xNlwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwia2JxLWNoZWNrYm94X190ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhbiAjY2hlY2tib3hMYWJlbCBjbGFzcz1cImticS1jaGVja2JveC1sYWJlbFwiIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkxhYmVsVGV4dENoYW5nZSgpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWhpbnRcIiAvPlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
|
|
@@ -413,4 +413,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
413
413
|
type: Input,
|
|
414
414
|
args: [{ transform: booleanAttribute }]
|
|
415
415
|
}] } });
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay1oaWdobGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sSUFBSSxNQUFNLGNBQWMsQ0FBQzs7QUFHaEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FDbkUsdUNBQXVDLEVBQ3ZDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUNqQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsUUFBZ0IsRUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRixPQUFPLEVBQUUscUNBQXFDO0lBQzlDLFFBQVEsRUFBRSxRQUFRO0NBQ3JCLENBQUMsQ0FBQztBQUVILDZFQUE2RTtBQVE3RSxNQUFNLE9BQU8scUJBQXFCO0lBTzlCLHFCQUFxQjtJQUNyQixJQUNJLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQW9CO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFcEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxD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QUUsTUFBTTtxQkFDaEI7aUJBQ0o7d0RBVU8sSUFBSTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkF1Q2MsU0FBUztzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBR0csVUFBVTtzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIFByb3ZpZGVyLFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWN1cml0eUNvbnRleHRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCBobGpzIGZyb20gJ2hpZ2hsaWdodC5qcyc7XG5pbXBvcnQgeyBLYnFDb2RlQmxvY2tGaWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRmFsbGJhY2sgbGFuZ3VhZ2UgZm9yIGNvZGUgYmxvY2sgaWYgbGFuZ3VhZ2UgaXMgbm90IHN1cHBvcnRlZC9zcGVjaWZpZWQuXG4gKlxuICogTGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzOlxuICogQGxpbmsgaHR0cHM6Ly9oaWdobGlnaHRqcy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvc3VwcG9ydGVkLWxhbmd1YWdlcy5odG1sXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICAgJ0tCUV9DT0RFX0JMT0NLX0ZBTExCQUNLX0ZJTEVfTEFOR1VBR0UnLFxuICAgIHsgZmFjdG9yeTogKCkgPT4gJ3BsYWludGV4dCcgfVxuKTtcblxuLyoqIFV0aWxpdHkgcHJvdmlkZXIgZm9yIGBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFYC4gKi9cbmV4cG9ydCBjb25zdCBrYnFDb2RlQmxvY2tGYWxsYmFja0ZpbGVMYW5ndWFnZVByb3ZpZGVyID0gKGxhbmd1YWdlOiBzdHJpbmcpOiBQcm92aWRlciA9PiAoe1xuICAgIHByb3ZpZGU6IEtCUV9DT0RFX0JMT0NLX0ZBTExCQUNLX0ZJTEVfTEFOR1VBR0UsXG4gICAgdXNlVmFsdWU6IGxhbmd1YWdlXG59KTtcblxuLyoqIERpcmVjdGl2ZSB3aGljaCBhcHBsaWVzIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gdGhlIGNvZGUgYmxvY2sgY29udGVudC4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdjb2RlW2ticUNvZGVCbG9ja0hpZ2hsaWdodF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdobGpzJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQ29kZUJsb2NrSGlnaGxpZ2h0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWxsYmFja0ZpbGVMYW5ndWFnZSA9IGluamVjdChLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFKTtcblxuICAgIC8qKiBUaGUgY29kZSBmaWxlLiAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgc2V0IGZpbGUoeyBsYW5ndWFnZSwgY29udGVudCB9OiBLYnFDb2RlQmxvY2tGaWxlKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZ2V0V2luZG93KCk7XG5cbiAgICAgICAgaWYgKCF3aW5kb3cpIHJldHVybjtcblxuICAgICAgICBpZiAoIWxhbmd1YWdlIHx8ICFobGpzLmdldExhbmd1YWdlKGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbS2JxQ29kZUJsb2NrXSBVbmtub3duIGxhbmd1YWdlOiBcIiR7bGFuZ3VhZ2V9XCIuIFNldHRpbmcgdG8gXCIke3RoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2V9XCIuYCk7XG4gICAgICAgICAgICBsYW5ndWFnZSA9IHRoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB2YWx1ZTogaGlnaGxpZ2h0ZWRIVE1MLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGhpZ2hsaWdodGVkTGFuZ3VhZ2UsXG4gICAgICAgICAgICBpbGxlZ2FsLFxuICAgICAgICAgICAgcmVsZXZhbmNlXG4gICAgICAgIH0gPSBobGpzLmhpZ2hsaWdodChjb250ZW50LCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpbGxlZ2FsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIENvbnRlbnQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbGV2YW5jZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbS2JxQ29kZUJsb2NrXSBDb250ZW50IGRvZXMgbm90IG1hdGNoIHRoZSBzcGVjaWZpZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzYWZlSFRNTCA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBoaWdobGlnaHRlZEhUTUwpO1xuICAgICAgICBjb25zdCBoaWdobGlnaHRlZEhUTUxXaXRoTGluZU51bWJlcnMgPSB3aW5kb3dbJ2hsanMnXS5saW5lTnVtYmVyc1ZhbHVlKHNhZmVIVE1MLCB7XG4gICAgICAgICAgICBzdGFydEZyb206IHRoaXMuc3RhcnRGcm9tLFxuICAgICAgICAgICAgc2luZ2xlTGluZTogdGhpcy5zaW5nbGVMaW5lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2RhdGEtbGFuZ3VhZ2UnLCBoaWdobGlnaHRlZExhbmd1YWdlISk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnaW5uZXJIVE1MJywgaGlnaGxpZ2h0ZWRIVE1MV2l0aExpbmVOdW1iZXJzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHN0YXJ0aW5nIGxpbmUgbnVtYmVyLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHN0YXJ0RnJvbTogbnVtYmVyID0gMTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgbGluZSBudW1iZXJzIGZvciBzaW5nbGUgbGluZSBjb2RlIGJsb2NrLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaW5nbGVMaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0TGluZU51bWJlcnNQbHVnaW4oKTtcbiAgICB9XG5cbiAgICAvKiogVXNlIGRlZmF1bHRWaWV3IG9mIGluamVjdGVkIGRvY3VtZW50IGlmIGF2YWlsYWJsZSBvciBmYWxsYmFjayB0byBnbG9iYWwgd2luZG93IHJlZmVyZW5jZSAqL1xuICAgIHByaXZhdGUgZ2V0V2luZG93KCk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50Py5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSB0aGUgSGlnaGxpZ2h0SlMgbGluZSBudW1iZXJzIHBsdWdpbi4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Ugd2hlblxuICAgICAqIHRoZSBjb21wb25lbnQgaXMgY29uc3RydWN0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0TGluZU51bWJlcnNQbHVnaW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZ2V0V2luZG93KCk7XG5cbiAgICAgICAgaWYgKCF3aW5kb3cpIHJldHVybjtcblxuICAgICAgICB3aW5kb3dbJ2hsanMnXSA9IGhsanM7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0SlNMaW5lTnVtYmVyc1BsdWdpbih0aGlzLmRvY3VtZW50LCB3aW5kb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZWRpdGluZy5cbiAgICAgKiBDaGFuZ2VzIG1heSBsZWFkIHRvIHVucHJlZGljdGFibGUgYmVoYXZpb3IuXG4gICAgICogU291cmNlIGNvZGU6IGh0dHBzOi8vZ2l0aHViLmNvbS93Y29kZXIvaGlnaGxpZ2h0anMtbGluZS1udW1iZXJzLmpzL2Jsb2IvdjIuOS4wL3NyYy9oaWdobGlnaHRqcy1saW5lLW51bWJlcnMuanNcbiAgICAgKi9cbiAgICBwcml2YXRlIGhpZ2hsaWdodEpTTGluZU51bWJlcnNQbHVnaW4oZDogRG9jdW1lbnQsIHc6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICAndXNlIHN0cmljdCc7XG5cbiAgICAgICAgaWYgKCF3KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgVEFCTEVfTkFNRSA9ICdobGpzLWxuJyxcbiAgICAgICAgICAgIExJTkVfTkFNRSA9ICdobGpzLWxuLWxpbmUnLFxuICAgICAgICAgICAgQ09ERV9CTE9DS19OQU1FID0gJ2hsanMtbG4tY29kZScsXG4gICAgICAgICAgICBOVU1CRVJTX0JMT0NLX05BTUUgPSAnaGxqcy1sbi1udW1iZXJzJyxcbiAgICAgICAgICAgIE5VTUJFUl9MSU5FX05BTUUgPSAnaGxqcy1sbi1uJyxcbiAgICAgICAgICAgIERBVEFfQVRUUl9OQU1FID0gJ2RhdGEtbGluZS1udW1iZXInLFxuICAgICAgICAgICAgQlJFQUtfTElORV9SRUdFWFAgPSAvXFxyXFxufFxccnxcXG4vZztcblxuICAgICAgICBpZiAod1snaGxqcyddKSB7XG4gICAgICAgICAgICB3WydobGpzJ10uaW5pdExpbmVOdW1iZXJzT25Mb2FkID0gaW5pdExpbmVOdW1iZXJzT25Mb2FkO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzQmxvY2sgPSBsaW5lTnVtYmVyc0Jsb2NrO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzQmxvY2tTeW5jID0gbGluZU51bWJlcnNCbG9ja1N5bmM7XG4gICAgICAgICAgICB3WydobGpzJ10ubGluZU51bWJlcnNWYWx1ZSA9IGxpbmVOdW1iZXJzVmFsdWU7XG5cbiAgICAgICAgICAgIGFkZFN0eWxlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignaGlnaGxpZ2h0LmpzIG5vdCBkZXRlY3RlZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzSGxqc0xuQ29kZURlc2NlbmRhbnQoZG9tRWx0KSB7XG4gICAgICAgICAgICBsZXQgY3VyRWx0ID0gZG9tRWx0O1xuICAgICAgICAgICAgd2hpbGUgKGN1ckVsdCkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJFbHQuY2xhc3NOYW1lICYmIGN1ckVsdC5jbGFzc05hbWUuaW5kZXhPZignaGxqcy1sbi1jb2RlJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJFbHQgPSBjdXJFbHQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldEhsanNMblRhYmxlKGhsanNMbkRvbUVsdCkge1xuICAgICAgICAgICAgbGV0IGN1ckVsdCA9IGhsanNMbkRvbUVsdDtcbiAgICAgICAgICAgIHdoaWxlIChjdXJFbHQubm9kZU5hbWUgIT09ICdUQUJMRScpIHtcbiAgICAgICAgICAgICAgICBjdXJFbHQgPSBjdXJFbHQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJFbHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdW5jdGlvbiB0byB3b3JrYXJvdW5kIGEgY29weSBpc3N1ZSB3aXRoIE1pY3Jvc29mdCBFZGdlLlxuICAgICAgICAvLyBEdWUgdG8gaGxqcy1sbiB3cmFwcGluZyB0aGUgbGluZXMgb2YgY29kZSBpbnNpZGUgYSA8dGFibGU+IGVsZW1lbnQsXG4gICAgICAgIC8vIGl0c2VsZiB3cmFwcGVkIGluc2lkZSBhIDxwcmU+IGVsZW1lbnQsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpXG4gICAgICAgIC8vIGRvZXMgbm90IGNvbnRhaW4gYW55IGxpbmUgYnJlYWtzLiBTbyB3ZSBuZWVkIHRvIGdldCB0aGVtIGJhY2sgdXNpbmcgdGhlXG4gICAgICAgIC8vIHJlbmRlcmVkIGNvZGUgaW4gdGhlIERPTSBhcyByZWZlcmVuY2UuXG4gICAgICAgIGZ1bmN0aW9uIGVkZ2VHZXRTZWxlY3RlZENvZGVMaW5lcyhzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIGN1cnJlbnQgc2VsZWN0ZWQgdGV4dCB3aXRob3V0IGxpbmUgYnJlYWtzXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25UZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIC8vIGdldCB0aGUgPHRkPiBlbGVtZW50IHdyYXBwaW5nIHRoZSBmaXJzdCBsaW5lIG9mIHNlbGVjdGVkIGNvZGVcbiAgICAgICAgICAgIGxldCB0ZEFuY2hvciA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICAgICAgd2hpbGUgKHRkQW5jaG9yLm5vZGVOYW1lICE9PSAnVEQnKSB7XG4gICAgICAgICAgICAgICAgdGRBbmNob3IgPSB0ZEFuY2hvci5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBnZXQgdGhlIDx0ZD4gZWxlbWVudCB3cmFwcGluZyB0aGUgbGFzdCBsaW5lIG9mIHNlbGVjdGVkIGNvZGVcbiAgICAgICAgICAgIGxldCB0ZEZvY3VzID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgICAgICAgICAgIHdoaWxlICh0ZEZvY3VzLm5vZGVOYW1lICE9PSAnVEQnKSB7XG4gICAgICAgICAgICAgICAgdGRGb2N1cyA9IHRkRm9jdXMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXh0cmFjdCBsaW5lIG51bWJlcnNcbiAgICAgICAgICAgIGxldCBmaXJzdExpbmVOdW1iZXIgPSBwYXJzZUludCh0ZEFuY2hvci5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuICAgICAgICAgICAgbGV0IGxhc3RMaW5lTnVtYmVyID0gcGFyc2VJbnQodGRGb2N1cy5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuXG4gICAgICAgICAgICAvLyBtdWx0aS1saW5lcyBjb3BpZWQgY2FzZVxuICAgICAgICAgICAgaWYgKGZpcnN0TGluZU51bWJlciAhPSBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdExpbmVUZXh0ID0gdGRBbmNob3IudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RMaW5lVGV4dCA9IHRkRm9jdXMudGV4dENvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlIGJhY2t3YXJkLCBzd2FwIHZhbHVlc1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdExpbmVOdW1iZXIgPiBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gZmlyc3RMaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBmaXJzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVOdW1iZXIgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgIHRtcCA9IGZpcnN0TGluZVRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZVRleHQgPSBsYXN0TGluZVRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMaW5lVGV4dCA9IHRtcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBkaXNjYXJkIG5vdCBjb3BpZWQgY2hhcmFjdGVycyBpbiBmaXJzdCBsaW5lXG4gICAgICAgICAgICAgICAgd2hpbGUgKHNlbGVjdGlvblRleHQuaW5kZXhPZihmaXJzdExpbmVUZXh0KSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdExpbmVUZXh0ID0gZmlyc3RMaW5lVGV4dC5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBkaXNjYXJkIG5vdCBjb3BpZWQgY2hhcmFjdGVycyBpbiBsYXN0IGxpbmVcbiAgICAgICAgICAgICAgICB3aGlsZSAoc2VsZWN0aW9uVGV4dC5sYXN0SW5kZXhPZihsYXN0TGluZVRleHQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRleHQgPSBsYXN0TGluZVRleHQuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHJlY29uc3RydWN0IGFuZCByZXR1cm4gdGhlIHJlYWwgY29waWVkIHRleHRcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRUZXh0ID0gZmlyc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBobGpzTG5UYWJsZSA9IGdldEhsanNMblRhYmxlKHRkQW5jaG9yKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gZmlyc3RMaW5lTnVtYmVyICsgMTsgaSA8IGxhc3RMaW5lTnVtYmVyOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZUxpbmVTZWwgPSBmb3JtYXQoJy57MH1bezF9PVwiezJ9XCJdJywgW0NPREVfQkxPQ0tfTkFNRSwgREFUQV9BVFRSX05BTUUsIGldKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZUxpbmVFbHQgPSBobGpzTG5UYWJsZS5xdWVyeVNlbGVjdG9yKGNvZGVMaW5lU2VsKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ICs9ICdcXG4nICsgY29kZUxpbmVFbHQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGV4dCArPSAnXFxuJyArIGxhc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0O1xuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSBjb3BpZWQgbGluZSBjYXNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25UZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5zdXJlIGNvbnNpc3RlbnQgY29kZSBjb3B5L3Bhc3RlIGJlaGF2aW9yIGFjcm9zcyBhbGwgYnJvd3NlcnNcbiAgICAgICAgLy8gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2NvZGVyL2hpZ2hsaWdodGpzLWxpbmUtbnVtYmVycy5qcy9pc3N1ZXMvNTEpXG4gICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAvLyBnZXQgY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHcuZ2V0U2VsZWN0aW9uKCkhO1xuICAgICAgICAgICAgLy8gb3ZlcnJpZGUgYmVoYXZpb3Igd2hlbiBvbmUgd2FudHMgdG8gY29weSBsaW5lIG9mIGNvZGVzXG4gICAgICAgICAgICBpZiAoaXNIbGpzTG5Db2RlRGVzY2VuZGFudChzZWxlY3Rpb24uYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uVGV4dDtcbiAgICAgICAgICAgICAgICAvLyB3b3JrYXJvdW5kIGFuIGlzc3VlIHdpdGggTWljcm9zb2Z0IEVkZ2UgYXMgY29waWVkIGxpbmUgYnJlYWtzXG4gICAgICAgICAgICAgICAgLy8gYXJlIHJlbW92ZWQgb3RoZXJ3aXNlIGZyb20gdGhlIHNlbGVjdGlvbiBzdHJpbmdcbiAgICAgICAgICAgICAgICBpZiAody5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVGV4dCA9IGVkZ2VHZXRTZWxlY3RlZENvZGVMaW5lcyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGJyb3dzZXJzIGNhbiBkaXJlY3RseSB1c2UgdGhlIHNlbGVjdGlvbiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlLmNsaXBib2FyZERhdGEhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBzZWxlY3Rpb25UZXh0KTtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIGFkZFN0eWxlcygpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzcyA9IGQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIGNzcy50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGNzcy5pbm5lckhUTUwgPSBmb3JtYXQoXG4gICAgICAgICAgICAgICAgJy57MH17Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfScgKyAnLnswfSB0ZHtwYWRkaW5nOjB9JyArICcuezF9OmJlZm9yZXtjb250ZW50OmF0dHIoezJ9KX0nLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgVEFCTEVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgTlVNQkVSX0xJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgREFUQV9BVFRSX05BTUVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGNzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbml0TGluZU51bWJlcnNPbkxvYWQob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJyB8fCBkLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudFJlYWR5KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50UmVhZHkob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkb2N1bWVudFJlYWR5KG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gZC5xdWVyeVNlbGVjdG9yQWxsKCdjb2RlLmhsanMsY29kZS5ub2hpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIGluIGJsb2Nrcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhibG9ja3NbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcnNCbG9jayhibG9ja3NbaV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpbmVOdW1iZXJzIGVycm9yOiAnLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25vaGxqc2xuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc0Jsb2NrKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHJldHVybjtcblxuICAgICAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbGluZU51bWJlcnNCbG9ja1N5bmMoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGxpbmVOdW1iZXJzSW50ZXJuYWwoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc1ZhbHVlKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7XG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGxpbmVOdW1iZXJzSW50ZXJuYWwoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgaW50ZXJuYWxPcHRpb25zID0gbWFwT3B0aW9ucyhlbGVtZW50LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZHVwbGljYXRlTXVsdGlsaW5lTm9kZXMoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhZGRMaW5lTnVtYmVyc0Jsb2NrRm9yKGVsZW1lbnQuaW5uZXJIVE1MLCBpbnRlcm5hbE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYWRkTGluZU51bWJlcnNCbG9ja0ZvcihpbnB1dEh0bWwsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoaW5wdXRIdG1sKTtcblxuICAgICAgICAgICAgLy8gaWYgbGFzdCBsaW5lIGNvbnRhaW5zIG9ubHkgY2FycmlhZ2UgcmV0dXJuIHJlbW92ZSBpdFxuICAgICAgICAgICAgaWYgKGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBsaW5lcy5wb3AoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgfHwgb3B0aW9ucy5zaW5nbGVMaW5lKSB7XG4gICAgICAgICAgICAgICAgbGV0IGh0bWwgPSAnJztcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJzx0cj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPVwiezB9IHsxfVwiIHszfT1cIns1fVwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiezJ9XCIgezN9PVwiezV9XCI+PC9kaXY+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvdGQ+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInswfSB7NH1cIiB7M309XCJ7NX1cIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezZ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvdGQ+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVNQkVSU19CTE9DS19OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTUJFUl9MSU5FX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9BVFRSX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ERV9CTE9DS19OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyBvcHRpb25zLnN0YXJ0RnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1tpXS5sZW5ndGggPiAwID8gbGluZXNbaV0gOiAnICdcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KCc8dGFibGUgY2xhc3M9XCJ7MH1cIj57MX08L3RhYmxlPicsIFtUQUJMRV9OQU1FLCBodG1sXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBpbnB1dEh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCBDb2RlIGJsb2NrLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBFeHRlcm5hbCBBUEkgb3B0aW9ucy5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gSW50ZXJuYWwgQVBJIG9wdGlvbnMuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBtYXBPcHRpb25zKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaW5nbGVMaW5lOiBnZXRTaW5nbGVMaW5lT3B0aW9uKG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIHN0YXJ0RnJvbTogZ2V0U3RhcnRGcm9tT3B0aW9uKGVsZW1lbnQsIG9wdGlvbnMpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U2luZ2xlTGluZU9wdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNpbmdsZUxpbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaW5nbGVMaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFN0YXJ0RnJvbU9wdGlvbihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSAxO1xuICAgICAgICAgICAgbGV0IHN0YXJ0RnJvbSA9IGRlZmF1bHRWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGlzRmluaXRlKG9wdGlvbnMuc3RhcnRGcm9tKSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RnJvbSA9IG9wdGlvbnMuc3RhcnRGcm9tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjYW4gYmUgb3ZlcnJpZGRlbiBiZWNhdXNlIGxvY2FsIG9wdGlvbiBpcyBwcmlvcml0eVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2RhdGEtbG4tc3RhcnQtZnJvbScpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRGcm9tID0gdG9OdW1iZXIodmFsdWUsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGFydEZyb207XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVjdXJzaXZlIG1ldGhvZCBmb3IgZml4IG11bHRpLWxpbmUgZWxlbWVudHMgaW1wbGVtZW50YXRpb24gaW4gaGlnaGxpZ2h0LmpzXG4gICAgICAgICAqIERvaW5nIGRlZXAgcGFzc2FnZSBvbiBjaGlsZCBub2Rlcy5cbiAgICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZHVwbGljYXRlTXVsdGlsaW5lTm9kZXMoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBlbGVtZW50LmNoaWxkTm9kZXM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgaW4gbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZXMuaGFzT3duUHJvcGVydHkobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2Rlc1tub2RlXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldExpbmVzQ291bnQoY2hpbGQudGV4dENvbnRlbnQpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZU11bHRpbGluZU5vZGVzKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTXVsdGlsaW5lTm9kZShjaGlsZC5wYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNZXRob2QgZm9yIGZpeCBtdWx0aS1saW5lIGVsZW1lbnRzIGltcGxlbWVudGF0aW9uIGluIGhpZ2hsaWdodC5qc1xuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lO1xuXG4gICAgICAgICAgICBpZiAoIS9obGpzLS8udGVzdChjbGFzc05hbWUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoZWxlbWVudC5pbm5lckhUTUwpO1xuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVzW2ldLmxlbmd0aCA+IDAgPyBsaW5lc1tpXSA6ICcgJztcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0KCc8c3BhbiBjbGFzcz1cInswfVwiPnsxfTwvc3Bhbj5cXG4nLCBbY2xhc3NOYW1lLCBsaW5lVGV4dF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHJlc3VsdC50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRMaW5lcyh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0LnNwbGl0KEJSRUFLX0xJTkVfUkVHRVhQKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVzQ291bnQodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuICh0ZXh0LnRyaW0oKS5tYXRjaChCUkVBS19MSU5FX1JFR0VYUCkgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vL1xuICAgICAgICAvLy8gSEVMUEVSU1xuICAgICAgICAvLy9cblxuICAgICAgICBmdW5jdGlvbiBhc3luYyhmdW5jKSB7XG4gICAgICAgICAgICB3LnNldFRpbWVvdXQoZnVuYywgMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICoge0BsaW5rIGh0dHBzOi8vd2NvZGVyLmdpdGh1Yi5pby9ub3Rlcy9zdHJpbmctZm9ybWF0LWZvci1zdHJpbmctZm9ybWF0aW5nLWluLWphdmFzY3JpcHR9XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICAgICAgICogQHBhcmFtIHthcnJheX0gYXJnc1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0KGZvcm1hdCwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9cXHsoXFxkKylcXH0vZywgZnVuY3Rpb24gKG0sIG4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tuXSAhPT0gdW5kZWZpbmVkID8gYXJnc1tuXSA6IG07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IENvZGUgYmxvY2suXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhdHRyTmFtZSBBdHRyaWJ1dGUgbmFtZS5cbiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gQXR0cmlidXRlIHZhbHVlIG9yIGVtcHR5LlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ck5hbWUpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFNvdXJjZSBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBmYWxsYmFjayBGYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMgUGFyc2VkIG51bWJlciBvciBmYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHN0ciwgZmFsbGJhY2spIHtcbiAgICAgICAgICAgIGlmICghc3RyKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBOdW1iZXIoc3RyKTtcbiAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShudW1iZXIpID8gbnVtYmVyIDogZmFsbGJhY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay1oaWdobGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sSUFBSSxNQUFNLGNBQWMsQ0FBQzs7QUFHaEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FDbkUsdUNBQXVDLEVBQ3ZDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUNqQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsUUFBZ0IsRUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRixPQUFPLEVBQUUscUNBQXFDO0lBQzlDLFFBQVEsRUFBRSxRQUFRO0NBQ3JCLENBQUMsQ0FBQztBQUVILDZFQUE2RTtBQVE3RSxNQUFNLE9BQU8scUJBQXFCO0lBTzlCLHFCQUFxQjtJQUNyQixJQUNJLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQW9CO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFcEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxD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QUUsTUFBTTtxQkFDaEI7aUJBQ0o7d0RBVU8sSUFBSTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkF1Q2MsU0FBUztzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBR0csVUFBVTtzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIFByb3ZpZGVyLFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWN1cml0eUNvbnRleHRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCBobGpzIGZyb20gJ2hpZ2hsaWdodC5qcyc7XG5pbXBvcnQgeyBLYnFDb2RlQmxvY2tGaWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRmFsbGJhY2sgbGFuZ3VhZ2UgZm9yIGNvZGUgYmxvY2sgaWYgbGFuZ3VhZ2UgaXMgbm90IHN1cHBvcnRlZC9zcGVjaWZpZWQuXG4gKlxuICogTGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzOlxuICogQGxpbmsgaHR0cHM6Ly9oaWdobGlnaHRqcy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvc3VwcG9ydGVkLWxhbmd1YWdlcy5odG1sXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICAgJ0tCUV9DT0RFX0JMT0NLX0ZBTExCQUNLX0ZJTEVfTEFOR1VBR0UnLFxuICAgIHsgZmFjdG9yeTogKCkgPT4gJ3BsYWludGV4dCcgfVxuKTtcblxuLyoqIFV0aWxpdHkgcHJvdmlkZXIgZm9yIGBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFYC4gKi9cbmV4cG9ydCBjb25zdCBrYnFDb2RlQmxvY2tGYWxsYmFja0ZpbGVMYW5ndWFnZVByb3ZpZGVyID0gKGxhbmd1YWdlOiBzdHJpbmcpOiBQcm92aWRlciA9PiAoe1xuICAgIHByb3ZpZGU6IEtCUV9DT0RFX0JMT0NLX0ZBTExCQUNLX0ZJTEVfTEFOR1VBR0UsXG4gICAgdXNlVmFsdWU6IGxhbmd1YWdlXG59KTtcblxuLyoqIERpcmVjdGl2ZSB3aGljaCBhcHBsaWVzIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gdGhlIGNvZGUgYmxvY2sgY29udGVudC4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdjb2RlW2ticUNvZGVCbG9ja0hpZ2hsaWdodF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdobGpzJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQ29kZUJsb2NrSGlnaGxpZ2h0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWxsYmFja0ZpbGVMYW5ndWFnZSA9IGluamVjdChLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFKTtcblxuICAgIC8qKiBUaGUgY29kZSBmaWxlLiAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgc2V0IGZpbGUoeyBsYW5ndWFnZSwgY29udGVudCB9OiBLYnFDb2RlQmxvY2tGaWxlKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZ2V0V2luZG93KCk7XG5cbiAgICAgICAgaWYgKCF3aW5kb3cpIHJldHVybjtcblxuICAgICAgICBpZiAoIWxhbmd1YWdlIHx8ICFobGpzLmdldExhbmd1YWdlKGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbS2JxQ29kZUJsb2NrXSBVbmtub3duIGxhbmd1YWdlOiBcIiR7bGFuZ3VhZ2V9XCIuIFNldHRpbmcgdG8gXCIke3RoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2V9XCIuYCk7XG4gICAgICAgICAgICBsYW5ndWFnZSA9IHRoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB2YWx1ZTogaGlnaGxpZ2h0ZWRIVE1MLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGhpZ2hsaWdodGVkTGFuZ3VhZ2UsXG4gICAgICAgICAgICBpbGxlZ2FsLFxuICAgICAgICAgICAgcmVsZXZhbmNlXG4gICAgICAgIH0gPSBobGpzLmhpZ2hsaWdodChjb250ZW50LCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpbGxlZ2FsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIENvbnRlbnQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbGV2YW5jZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbS2JxQ29kZUJsb2NrXSBDb250ZW50IGRvZXMgbm90IG1hdGNoIHRoZSBzcGVjaWZpZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzYWZlSFRNTCA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBoaWdobGlnaHRlZEhUTUwpO1xuICAgICAgICBjb25zdCBoaWdobGlnaHRlZEhUTUxXaXRoTGluZU51bWJlcnMgPSB3aW5kb3dbJ2hsanMnXS5saW5lTnVtYmVyc1ZhbHVlKHNhZmVIVE1MLCB7XG4gICAgICAgICAgICBzdGFydEZyb206IHRoaXMuc3RhcnRGcm9tLFxuICAgICAgICAgICAgc2luZ2xlTGluZTogdGhpcy5zaW5nbGVMaW5lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2RhdGEtbGFuZ3VhZ2UnLCBoaWdobGlnaHRlZExhbmd1YWdlISk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5uYXRpdmVFbGVtZW50LCAnaW5uZXJIVE1MJywgaGlnaGxpZ2h0ZWRIVE1MV2l0aExpbmVOdW1iZXJzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHN0YXJ0aW5nIGxpbmUgbnVtYmVyLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHN0YXJ0RnJvbTogbnVtYmVyID0gMTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgbGluZSBudW1iZXJzIGZvciBzaW5nbGUgbGluZSBjb2RlIGJsb2NrLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaW5nbGVMaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0TGluZU51bWJlcnNQbHVnaW4oKTtcbiAgICB9XG5cbiAgICAvKiogVXNlIGRlZmF1bHRWaWV3IG9mIGluamVjdGVkIGRvY3VtZW50IGlmIGF2YWlsYWJsZSBvciBmYWxsYmFjayB0byBnbG9iYWwgd2luZG93IHJlZmVyZW5jZSAqL1xuICAgIHByaXZhdGUgZ2V0V2luZG93KCk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50Py5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSB0aGUgSGlnaGxpZ2h0SlMgbGluZSBudW1iZXJzIHBsdWdpbi4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Ugd2hlblxuICAgICAqIHRoZSBjb21wb25lbnQgaXMgY29uc3RydWN0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0TGluZU51bWJlcnNQbHVnaW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZ2V0V2luZG93KCk7XG5cbiAgICAgICAgaWYgKCF3aW5kb3cpIHJldHVybjtcblxuICAgICAgICB3aW5kb3dbJ2hsanMnXSA9IGhsanM7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0SlNMaW5lTnVtYmVyc1BsdWdpbih0aGlzLmRvY3VtZW50LCB3aW5kb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZWRpdGluZy5cbiAgICAgKiBDaGFuZ2VzIG1heSBsZWFkIHRvIHVucHJlZGljdGFibGUgYmVoYXZpb3IuXG4gICAgICogU291cmNlIGNvZGU6IGh0dHBzOi8vZ2l0aHViLmNvbS93Y29kZXIvaGlnaGxpZ2h0anMtbGluZS1udW1iZXJzLmpzL2Jsb2IvdjIuOS4wL3NyYy9oaWdobGlnaHRqcy1saW5lLW51bWJlcnMuanNcbiAgICAgKi9cbiAgICBwcml2YXRlIGhpZ2hsaWdodEpTTGluZU51bWJlcnNQbHVnaW4oZDogRG9jdW1lbnQsIHc6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICAndXNlIHN0cmljdCc7XG5cbiAgICAgICAgaWYgKCF3KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgVEFCTEVfTkFNRSA9ICdobGpzLWxuJyxcbiAgICAgICAgICAgIExJTkVfTkFNRSA9ICdobGpzLWxuLWxpbmUnLFxuICAgICAgICAgICAgQ09ERV9CTE9DS19OQU1FID0gJ2hsanMtbG4tY29kZScsXG4gICAgICAgICAgICBOVU1CRVJTX0JMT0NLX05BTUUgPSAnaGxqcy1sbi1udW1iZXJzJyxcbiAgICAgICAgICAgIE5VTUJFUl9MSU5FX05BTUUgPSAnaGxqcy1sbi1uJyxcbiAgICAgICAgICAgIERBVEFfQVRUUl9OQU1FID0gJ2RhdGEtbGluZS1udW1iZXInLFxuICAgICAgICAgICAgQlJFQUtfTElORV9SRUdFWFAgPSAvXFxyXFxufFxccnxcXG4vZztcblxuICAgICAgICBpZiAod1snaGxqcyddKSB7XG4gICAgICAgICAgICB3WydobGpzJ10uaW5pdExpbmVOdW1iZXJzT25Mb2FkID0gaW5pdExpbmVOdW1iZXJzT25Mb2FkO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzQmxvY2sgPSBsaW5lTnVtYmVyc0Jsb2NrO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzQmxvY2tTeW5jID0gbGluZU51bWJlcnNCbG9ja1N5bmM7XG4gICAgICAgICAgICB3WydobGpzJ10ubGluZU51bWJlcnNWYWx1ZSA9IGxpbmVOdW1iZXJzVmFsdWU7XG5cbiAgICAgICAgICAgIGFkZFN0eWxlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignaGlnaGxpZ2h0LmpzIG5vdCBkZXRlY3RlZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzSGxqc0xuQ29kZURlc2NlbmRhbnQoZG9tRWx0KSB7XG4gICAgICAgICAgICBsZXQgY3VyRWx0ID0gZG9tRWx0O1xuXG4gICAgICAgICAgICB3aGlsZSAoY3VyRWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1ckVsdC5jbGFzc05hbWUgJiYgY3VyRWx0LmNsYXNzTmFtZS5pbmRleE9mKCdobGpzLWxuLWNvZGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VyRWx0ID0gY3VyRWx0LnBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldEhsanNMblRhYmxlKGhsanNMbkRvbUVsdCkge1xuICAgICAgICAgICAgbGV0IGN1ckVsdCA9IGhsanNMbkRvbUVsdDtcblxuICAgICAgICAgICAgd2hpbGUgKGN1ckVsdC5ub2RlTmFtZSAhPT0gJ1RBQkxFJykge1xuICAgICAgICAgICAgICAgIGN1ckVsdCA9IGN1ckVsdC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY3VyRWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gd29ya2Fyb3VuZCBhIGNvcHkgaXNzdWUgd2l0aCBNaWNyb3NvZnQgRWRnZS5cbiAgICAgICAgLy8gRHVlIHRvIGhsanMtbG4gd3JhcHBpbmcgdGhlIGxpbmVzIG9mIGNvZGUgaW5zaWRlIGEgPHRhYmxlPiBlbGVtZW50LFxuICAgICAgICAvLyBpdHNlbGYgd3JhcHBlZCBpbnNpZGUgYSA8cHJlPiBlbGVtZW50LCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKVxuICAgICAgICAvLyBkb2VzIG5vdCBjb250YWluIGFueSBsaW5lIGJyZWFrcy4gU28gd2UgbmVlZCB0byBnZXQgdGhlbSBiYWNrIHVzaW5nIHRoZVxuICAgICAgICAvLyByZW5kZXJlZCBjb2RlIGluIHRoZSBET00gYXMgcmVmZXJlbmNlLlxuICAgICAgICBmdW5jdGlvbiBlZGdlR2V0U2VsZWN0ZWRDb2RlTGluZXMoc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBjdXJyZW50IHNlbGVjdGVkIHRleHQgd2l0aG91dCBsaW5lIGJyZWFrc1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpO1xuXG4gICAgICAgICAgICAvLyBnZXQgdGhlIDx0ZD4gZWxlbWVudCB3cmFwcGluZyB0aGUgZmlyc3QgbGluZSBvZiBzZWxlY3RlZCBjb2RlXG4gICAgICAgICAgICBsZXQgdGRBbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTtcblxuICAgICAgICAgICAgd2hpbGUgKHRkQW5jaG9yLm5vZGVOYW1lICE9PSAnVEQnKSB7XG4gICAgICAgICAgICAgICAgdGRBbmNob3IgPSB0ZEFuY2hvci5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBnZXQgdGhlIDx0ZD4gZWxlbWVudCB3cmFwcGluZyB0aGUgbGFzdCBsaW5lIG9mIHNlbGVjdGVkIGNvZGVcbiAgICAgICAgICAgIGxldCB0ZEZvY3VzID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcblxuICAgICAgICAgICAgd2hpbGUgKHRkRm9jdXMubm9kZU5hbWUgIT09ICdURCcpIHtcbiAgICAgICAgICAgICAgICB0ZEZvY3VzID0gdGRGb2N1cy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBleHRyYWN0IGxpbmUgbnVtYmVyc1xuICAgICAgICAgICAgbGV0IGZpcnN0TGluZU51bWJlciA9IHBhcnNlSW50KHRkQW5jaG9yLmRhdGFzZXQubGluZU51bWJlcik7XG4gICAgICAgICAgICBsZXQgbGFzdExpbmVOdW1iZXIgPSBwYXJzZUludCh0ZEZvY3VzLmRhdGFzZXQubGluZU51bWJlcik7XG5cbiAgICAgICAgICAgIC8vIG11bHRpLWxpbmVzIGNvcGllZCBjYXNlXG4gICAgICAgICAgICBpZiAoZmlyc3RMaW5lTnVtYmVyICE9IGxhc3RMaW5lTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpcnN0TGluZVRleHQgPSB0ZEFuY2hvci50ZXh0Q29udGVudDtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdExpbmVUZXh0ID0gdGRGb2N1cy50ZXh0Q29udGVudDtcblxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzZWxlY3Rpb24gd2FzIG1hZGUgYmFja3dhcmQsIHN3YXAgdmFsdWVzXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0TGluZU51bWJlciA+IGxhc3RMaW5lTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXAgPSBmaXJzdExpbmVOdW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lTnVtYmVyID0gbGFzdExpbmVOdW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMaW5lTnVtYmVyID0gdG1wO1xuICAgICAgICAgICAgICAgICAgICB0bXAgPSBmaXJzdExpbmVUZXh0O1xuICAgICAgICAgICAgICAgICAgICBmaXJzdExpbmVUZXh0ID0gbGFzdExpbmVUZXh0O1xuICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRleHQgPSB0bXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCBub3QgY29waWVkIGNoYXJhY3RlcnMgaW4gZmlyc3QgbGluZVxuICAgICAgICAgICAgICAgIHdoaWxlIChzZWxlY3Rpb25UZXh0LmluZGV4T2YoZmlyc3RMaW5lVGV4dCkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lVGV4dCA9IGZpcnN0TGluZVRleHQuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCBub3QgY29waWVkIGNoYXJhY3RlcnMgaW4gbGFzdCBsaW5lXG4gICAgICAgICAgICAgICAgd2hpbGUgKHNlbGVjdGlvblRleHQubGFzdEluZGV4T2YobGFzdExpbmVUZXh0KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVUZXh0ID0gbGFzdExpbmVUZXh0LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyByZWNvbnN0cnVjdCBhbmQgcmV0dXJuIHRoZSByZWFsIGNvcGllZCB0ZXh0XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkVGV4dCA9IGZpcnN0TGluZVRleHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaGxqc0xuVGFibGUgPSBnZXRIbGpzTG5UYWJsZSh0ZEFuY2hvcik7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gZmlyc3RMaW5lTnVtYmVyICsgMTsgaSA8IGxhc3RMaW5lTnVtYmVyOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZUxpbmVTZWwgPSBmb3JtYXQoJy57MH1bezF9PVwiezJ9XCJdJywgW0NPREVfQkxPQ0tfTkFNRSwgREFUQV9BVFRSX05BTUUsIGldKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZUxpbmVFbHQgPSBobGpzTG5UYWJsZS5xdWVyeVNlbGVjdG9yKGNvZGVMaW5lU2VsKTtcblxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRleHQgKz0gJ1xcbicgKyBjb2RlTGluZUVsdC50ZXh0Q29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRleHQgKz0gJ1xcbicgKyBsYXN0TGluZVRleHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0O1xuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSBjb3BpZWQgbGluZSBjYXNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25UZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5zdXJlIGNvbnNpc3RlbnQgY29kZSBjb3B5L3Bhc3RlIGJlaGF2aW9yIGFjcm9zcyBhbGwgYnJvd3NlcnNcbiAgICAgICAgLy8gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2NvZGVyL2hpZ2hsaWdodGpzLWxpbmUtbnVtYmVycy5qcy9pc3N1ZXMvNTEpXG4gICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAvLyBnZXQgY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHcuZ2V0U2VsZWN0aW9uKCkhO1xuXG4gICAgICAgICAgICAvLyBvdmVycmlkZSBiZWhhdmlvciB3aGVuIG9uZSB3YW50cyB0byBjb3B5IGxpbmUgb2YgY29kZXNcbiAgICAgICAgICAgIGlmIChpc0hsanNMbkNvZGVEZXNjZW5kYW50KHNlbGVjdGlvbi5hbmNob3JOb2RlKSkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb25UZXh0O1xuXG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCBhbiBpc3N1ZSB3aXRoIE1pY3Jvc29mdCBFZGdlIGFzIGNvcGllZCBsaW5lIGJyZWFrc1xuICAgICAgICAgICAgICAgIC8vIGFyZSByZW1vdmVkIG90aGVyd2lzZSBmcm9tIHRoZSBzZWxlY3Rpb24gc3RyaW5nXG4gICAgICAgICAgICAgICAgaWYgKHcubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFZGdlJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblRleHQgPSBlZGdlR2V0U2VsZWN0ZWRDb2RlTGluZXMoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBicm93c2VycyBjYW4gZGlyZWN0bHkgdXNlIHRoZSBzZWxlY3Rpb24gc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblRleHQgPSBzZWxlY3Rpb24udG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmNsaXBib2FyZERhdGEhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBzZWxlY3Rpb25UZXh0KTtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIGFkZFN0eWxlcygpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzcyA9IGQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICAgICAgICAgICAgY3NzLnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgICAgICAgY3NzLmlubmVySFRNTCA9IGZvcm1hdChcbiAgICAgICAgICAgICAgICAnLnswfXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9JyArICcuezB9IHRke3BhZGRpbmc6MH0nICsgJy57MX06YmVmb3Jle2NvbnRlbnQ6YXR0cih7Mn0pfScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBUQUJMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICBOVU1CRVJfTElORV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICBEQVRBX0FUVFJfTkFNRVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoY3NzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXRMaW5lTnVtYmVyc09uTG9hZChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnIHx8IGQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50UmVhZHkob3B0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHcuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRSZWFkeShvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRvY3VtZW50UmVhZHkob3B0aW9ucykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBkLnF1ZXJ5U2VsZWN0b3JBbGwoJ2NvZGUuaGxqcyxjb2RlLm5vaGlnaGxpZ2h0Jyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9ja3MuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNQbHVnaW5EaXNhYmxlZEZvckJsb2NrKGJsb2Nrc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyc0Jsb2NrKGJsb2Nrc1tpXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTGluZU51bWJlcnMgZXJyb3I6ICcsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaXNQbHVnaW5EaXNhYmxlZEZvckJsb2NrKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbm9obGpzbG4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGxpbmVOdW1iZXJzQmxvY2soZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gICAgICAgICAgICBhc3luYyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBsaW5lTnVtYmVyc0ludGVybmFsKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc0Jsb2NrU3luYyhlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSByZXR1cm47XG5cbiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGxpbmVOdW1iZXJzVmFsdWUodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkLmNyZWF0ZUVsZW1lbnQoJ2NvZGUnKTtcblxuICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXJzSW50ZXJuYWwoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc0ludGVybmFsKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGludGVybmFsT3B0aW9ucyA9IG1hcE9wdGlvbnMoZWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGR1cGxpY2F0ZU11bHRpbGluZU5vZGVzKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICByZXR1cm4gYWRkTGluZU51bWJlcnNCbG9ja0ZvcihlbGVtZW50LmlubmVySFRNTCwgaW50ZXJuYWxPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZExpbmVOdW1iZXJzQmxvY2tGb3IoaW5wdXRIdG1sLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IGdldExpbmVzKGlucHV0SHRtbCk7XG5cbiAgICAgICAgICAgIC8vIGlmIGxhc3QgbGluZSBjb250YWlucyBvbmx5IGNhcnJpYWdlIHJldHVybiByZW1vdmUgaXRcbiAgICAgICAgICAgIGlmIChsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgbGluZXMucG9wKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPiAxIHx8IG9wdGlvbnMuc2luZ2xlTGluZSkge1xuICAgICAgICAgICAgICAgIGxldCBodG1sID0gJyc7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGZvcm1hdChcbiAgICAgICAgICAgICAgICAgICAgICAgICc8dHI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInswfSB7MX1cIiB7M309XCJ7NX1cIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cInsyfVwiIHszfT1cIns1fVwiPjwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L3RkPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9XCJ7MH0gezR9XCIgezN9PVwiezV9XCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s2fScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L3RkPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L3RyPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTUJFUlNfQkxPQ0tfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJfTElORV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfQVRUUl9OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPREVfQkxPQ0tfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICsgb3B0aW9ucy5zdGFydEZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbaV0ubGVuZ3RoID4gMCA/IGxpbmVzW2ldIDogJyAnXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCgnPHRhYmxlIGNsYXNzPVwiezB9XCI+ezF9PC90YWJsZT4nLCBbVEFCTEVfTkFNRSwgaHRtbF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaW5wdXRIdG1sO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgQ29kZSBibG9jay5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgRXh0ZXJuYWwgQVBJIG9wdGlvbnMuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IEludGVybmFsIEFQSSBvcHRpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWFwT3B0aW9ucyhlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaW5nbGVMaW5lOiBnZXRTaW5nbGVMaW5lT3B0aW9uKG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIHN0YXJ0RnJvbTogZ2V0U3RhcnRGcm9tT3B0aW9uKGVsZW1lbnQsIG9wdGlvbnMpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U2luZ2xlTGluZU9wdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2luZ2xlTGluZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNpbmdsZUxpbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTdGFydEZyb21PcHRpb24oZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gMTtcbiAgICAgICAgICAgIGxldCBzdGFydEZyb20gPSBkZWZhdWx0VmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvcHRpb25zLnN0YXJ0RnJvbSkpIHtcbiAgICAgICAgICAgICAgICBzdGFydEZyb20gPSBvcHRpb25zLnN0YXJ0RnJvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2FuIGJlIG92ZXJyaWRkZW4gYmVjYXVzZSBsb2NhbCBvcHRpb24gaXMgcHJpb3JpdHlcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0QXR0cmlidXRlKGVsZW1lbnQsICdkYXRhLWxuLXN0YXJ0LWZyb20nKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRGcm9tID0gdG9OdW1iZXIodmFsdWUsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGFydEZyb207XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVjdXJzaXZlIG1ldGhvZCBmb3IgZml4IG11bHRpLWxpbmUgZWxlbWVudHMgaW1wbGVtZW50YXRpb24gaW4gaGlnaGxpZ2h0LmpzXG4gICAgICAgICAqIERvaW5nIGRlZXAgcGFzc2FnZSBvbiBjaGlsZCBub2Rlcy5cbiAgICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZHVwbGljYXRlTXVsdGlsaW5lTm9kZXMoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBlbGVtZW50LmNoaWxkTm9kZXM7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBpbiBub2Rlcykge1xuICAgICAgICAgICAgICAgIGlmIChub2Rlcy5oYXNPd25Qcm9wZXJ0eShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGVzW25vZGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRMaW5lc0NvdW50KGNoaWxkLnRleHRDb250ZW50KSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlcyhjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZU11bHRpbGluZU5vZGUoY2hpbGQucGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogTWV0aG9kIGZvciBmaXggbXVsdGktbGluZSBlbGVtZW50cyBpbXBsZW1lbnRhdGlvbiBpbiBoaWdobGlnaHQuanNcbiAgICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZHVwbGljYXRlTXVsdGlsaW5lTm9kZShlbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZTtcblxuICAgICAgICAgICAgaWYgKCEvaGxqcy0vLnRlc3QoY2xhc3NOYW1lKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IGdldExpbmVzKGVsZW1lbnQuaW5uZXJIVE1MKTtcblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZVRleHQgPSBsaW5lc1tpXS5sZW5ndGggPiAwID8gbGluZXNbaV0gOiAnICc7XG5cbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0KCc8c3BhbiBjbGFzcz1cInswfVwiPnsxfTwvc3Bhbj5cXG4nLCBbY2xhc3NOYW1lLCBsaW5lVGV4dF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHJlc3VsdC50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRMaW5lcyh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICAgICAgICAgICAgcmV0dXJuIHRleHQuc3BsaXQoQlJFQUtfTElORV9SRUdFWFApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZXNDb3VudCh0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gKHRleHQudHJpbSgpLm1hdGNoKEJSRUFLX0xJTkVfUkVHRVhQKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8vXG4gICAgICAgIC8vLyBIRUxQRVJTXG4gICAgICAgIC8vL1xuXG4gICAgICAgIGZ1bmN0aW9uIGFzeW5jKGZ1bmMpIHtcbiAgICAgICAgICAgIHcuc2V0VGltZW91dChmdW5jLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiB7QGxpbmsgaHR0cHM6Ly93Y29kZXIuZ2l0aHViLmlvL25vdGVzL3N0cmluZy1mb3JtYXQtZm9yLXN0cmluZy1mb3JtYXRpbmctaW4tamF2YXNjcmlwdH1cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdFxuICAgICAgICAgKiBAcGFyYW0ge2FycmF5fSBhcmdzXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXQoZm9ybWF0LCBhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoL1xceyhcXGQrKVxcfS9nLCBmdW5jdGlvbiAobSwgbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmdzW25dICE9PSB1bmRlZmluZWQgPyBhcmdzW25dIDogbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgQ29kZSBibG9jay5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGF0dHJOYW1lIEF0dHJpYnV0ZSBuYW1lLlxuICAgICAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBBdHRyaWJ1dGUgdmFsdWUgb3IgZW1wdHkuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxlbWVudCwgYXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyTmFtZSkgPyBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyTmFtZSkgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgU291cmNlIHN0cmluZy5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGZhbGxiYWNrIEZhbGxiYWNrIHZhbHVlLlxuICAgICAgICAgKiBAcmV0dXJucyBQYXJzZWQgbnVtYmVyIG9yIGZhbGxiYWNrIHZhbHVlLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdG9OdW1iZXIoc3RyLCBmYWxsYmFjaykge1xuICAgICAgICAgICAgaWYgKCFzdHIpIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IE51bWJlcihzdHIpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtYmVyKSA/IG51bWJlciA6IGZhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|