igniteui-angular 16.0.0-beta.2 → 16.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/accordion/accordion.component.mjs +4 -4
- package/esm2022/lib/accordion/accordion.module.mjs +5 -5
- package/esm2022/lib/action-strip/action-strip.component.mjs +7 -7
- package/esm2022/lib/action-strip/action-strip.module.mjs +5 -5
- package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +4 -4
- package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +4 -4
- package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +4 -4
- package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +4 -4
- package/esm2022/lib/avatar/avatar.component.mjs +4 -4
- package/esm2022/lib/avatar/avatar.module.mjs +5 -5
- package/esm2022/lib/badge/badge.component.mjs +4 -4
- package/esm2022/lib/badge/badge.module.mjs +5 -5
- package/esm2022/lib/banner/banner.component.mjs +4 -4
- package/esm2022/lib/banner/banner.directives.mjs +4 -4
- package/esm2022/lib/banner/banner.module.mjs +5 -5
- package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +4 -4
- package/esm2022/lib/buttonGroup/buttongroup.module.mjs +5 -5
- package/esm2022/lib/calendar/calendar-base.mjs +4 -4
- package/esm2022/lib/calendar/calendar.component.mjs +4 -4
- package/esm2022/lib/calendar/calendar.directives.mjs +16 -16
- package/esm2022/lib/calendar/calendar.module.mjs +5 -5
- package/esm2022/lib/calendar/days-view/day-item.component.mjs +4 -4
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +4 -4
- package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +4 -4
- package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +4 -4
- package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +4 -4
- package/esm2022/lib/calendar/months-view/months-view.component.mjs +4 -4
- package/esm2022/lib/calendar/months-view.pipe.mjs +7 -7
- package/esm2022/lib/calendar/years-view/years-view.component.mjs +7 -7
- package/esm2022/lib/card/card.component.mjs +28 -28
- package/esm2022/lib/card/card.module.mjs +5 -5
- package/esm2022/lib/carousel/carousel.component.mjs +7 -7
- package/esm2022/lib/carousel/carousel.directives.mjs +10 -10
- package/esm2022/lib/carousel/carousel.module.mjs +5 -5
- package/esm2022/lib/carousel/slide.component.mjs +4 -4
- package/esm2022/lib/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/lib/chips/chip.component.mjs +4 -4
- package/esm2022/lib/chips/chips-area.component.mjs +4 -4
- package/esm2022/lib/chips/chips.module.mjs +5 -5
- package/esm2022/lib/combo/combo-add-item.component.mjs +4 -4
- package/esm2022/lib/combo/combo-dropdown.component.mjs +4 -4
- package/esm2022/lib/combo/combo-item.component.mjs +4 -4
- package/esm2022/lib/combo/combo.api.mjs +4 -4
- package/esm2022/lib/combo/combo.common.mjs +4 -4
- package/esm2022/lib/combo/combo.component.mjs +4 -4
- package/esm2022/lib/combo/combo.directives.mjs +25 -25
- package/esm2022/lib/combo/combo.module.mjs +5 -5
- package/esm2022/lib/combo/combo.pipes.mjs +7 -7
- package/esm2022/lib/core/density.mjs +4 -4
- package/esm2022/lib/core/navigation/directives.mjs +7 -7
- package/esm2022/lib/core/navigation/nav.service.mjs +4 -4
- package/esm2022/lib/core/selection.mjs +4 -4
- package/esm2022/lib/core/touch.mjs +4 -4
- package/esm2022/lib/core/utils.mjs +4 -4
- package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +4 -4
- package/esm2022/lib/date-common/picker-base.directive.mjs +4 -4
- package/esm2022/lib/date-common/picker-icons.common.mjs +10 -10
- package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +16 -16
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +4 -4
- package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
- package/esm2022/lib/dialog/dialog.component.mjs +4 -4
- package/esm2022/lib/dialog/dialog.directives.mjs +7 -7
- package/esm2022/lib/dialog/dialog.module.mjs +5 -5
- package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +4 -4
- package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/lib/directives/button/button.directive.mjs +4 -4
- package/esm2022/lib/directives/button/button.module.mjs +5 -5
- package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +4 -4
- package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +5 -5
- package/esm2022/lib/directives/divider/divider.directive.mjs +4 -4
- package/esm2022/lib/directives/divider/divider.module.mjs +5 -5
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +13 -13
- package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +5 -5
- package/esm2022/lib/directives/filter/filter.directive.mjs +7 -7
- package/esm2022/lib/directives/filter/filter.module.mjs +5 -5
- package/esm2022/lib/directives/focus/focus.directive.mjs +4 -4
- package/esm2022/lib/directives/focus/focus.module.mjs +5 -5
- package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +4 -4
- package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +5 -5
- package/esm2022/lib/directives/for-of/base.helper.component.mjs +4 -4
- package/esm2022/lib/directives/for-of/display.container.mjs +4 -4
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +7 -7
- package/esm2022/lib/directives/for-of/for_of.module.mjs +5 -5
- package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +7 -7
- package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +4 -4
- package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +4 -4
- package/esm2022/lib/directives/form-control/form-control.directive.mjs +4 -4
- package/esm2022/lib/directives/form-control/form-control.module.mjs +5 -5
- package/esm2022/lib/directives/hint/hint.directive.mjs +4 -4
- package/esm2022/lib/directives/input/input.directive.mjs +14 -4
- package/esm2022/lib/directives/label/label.directive.mjs +4 -4
- package/esm2022/lib/directives/layout/layout.directive.mjs +7 -7
- package/esm2022/lib/directives/layout/layout.module.mjs +5 -5
- package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -4
- package/esm2022/lib/directives/mask/mask.directive.mjs +4 -4
- package/esm2022/lib/directives/mask/mask.module.mjs +5 -5
- package/esm2022/lib/directives/notification/notifications.directive.mjs +4 -4
- package/esm2022/lib/directives/prefix/prefix.directive.mjs +4 -4
- package/esm2022/lib/directives/radio/radio-group.directive.mjs +4 -4
- package/esm2022/lib/directives/radio/radio-group.module.mjs +5 -5
- package/esm2022/lib/directives/ripple/ripple.directive.mjs +4 -4
- package/esm2022/lib/directives/ripple/ripple.module.mjs +5 -5
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +5 -5
- package/esm2022/lib/directives/suffix/suffix.directive.mjs +4 -4
- package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +4 -4
- package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +4 -4
- package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +5 -5
- package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +4 -4
- package/esm2022/lib/directives/text-selection/text-selection.module.mjs +5 -5
- package/esm2022/lib/directives/toggle/toggle.directive.mjs +10 -10
- package/esm2022/lib/directives/toggle/toggle.module.mjs +5 -5
- package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +4 -4
- package/esm2022/lib/directives/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/lib/directives/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/lib/drop-down/drop-down-group.component.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down-item.base.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down-item.component.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down.base.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down.component.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down.module.mjs +5 -5
- package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +10 -10
- package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +5 -5
- package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +4 -4
- package/esm2022/lib/grids/api.service.mjs +4 -4
- package/esm2022/lib/grids/cell.component.mjs +4 -4
- package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +4 -4
- package/esm2022/lib/grids/column-actions/column-actions.component.mjs +13 -13
- package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +4 -4
- package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +4 -4
- package/esm2022/lib/grids/column-actions/public_api.mjs +13 -0
- package/esm2022/lib/grids/columns/column-group.component.mjs +4 -4
- package/esm2022/lib/grids/columns/column-layout.component.mjs +4 -4
- package/esm2022/lib/grids/columns/column.component.mjs +4 -4
- package/esm2022/lib/grids/columns/templates.directive.mjs +25 -25
- package/esm2022/lib/grids/columns/validators.directive.mjs +22 -22
- package/esm2022/lib/grids/common/crud.service.mjs +4 -4
- package/esm2022/lib/grids/common/pipes.mjs +55 -55
- package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +10 -10
- package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +7 -7
- package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +4 -4
- package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +4 -4
- package/esm2022/lib/grids/grid/expandable-cell.component.mjs +4 -4
- package/esm2022/lib/grids/grid/grid-api.service.mjs +4 -4
- package/esm2022/lib/grids/grid/grid-row.component.mjs +4 -4
- package/esm2022/lib/grids/grid/grid-validation.service.mjs +4 -4
- package/esm2022/lib/grids/grid/grid.component.mjs +5 -6
- package/esm2022/lib/grids/grid/grid.details.pipe.mjs +4 -4
- package/esm2022/lib/grids/grid/grid.directives.mjs +34 -34
- package/esm2022/lib/grids/grid/grid.module.mjs +27 -24
- package/esm2022/lib/grids/grid/grid.pipes.mjs +13 -13
- package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +4 -4
- package/esm2022/lib/grids/grid/groupby-row.component.mjs +4 -4
- package/esm2022/lib/grids/grid-base.directive.mjs +4 -4
- package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +4 -4
- package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +4 -4
- package/esm2022/lib/grids/grid-navigation.service.mjs +4 -4
- package/esm2022/lib/grids/grid.common.mjs +4 -4
- package/esm2022/lib/grids/grid.rowEdit.directive.mjs +16 -16
- package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +4 -4
- package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +7 -7
- package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +4 -4
- package/esm2022/lib/grids/headers/grid-header-group.component.mjs +4 -4
- package/esm2022/lib/grids/headers/grid-header-row.component.mjs +4 -4
- package/esm2022/lib/grids/headers/grid-header.component.mjs +4 -4
- package/esm2022/lib/grids/headers/pipes.mjs +10 -10
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +7 -7
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +27 -24
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +7 -7
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +4 -4
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +4 -4
- package/esm2022/lib/grids/moving/moving.drop.directive.mjs +4 -4
- package/esm2022/lib/grids/moving/moving.service.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +27 -24
- package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +31 -31
- package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +4 -4
- package/esm2022/lib/grids/public_api.mjs +5 -2
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +4 -4
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +4 -4
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +4 -4
- package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +4 -4
- package/esm2022/lib/grids/resizing/resizer.component.mjs +4 -4
- package/esm2022/lib/grids/resizing/resizer.directive.mjs +4 -4
- package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
- package/esm2022/lib/grids/row-drag.directive.mjs +10 -10
- package/esm2022/lib/grids/row.directive.mjs +4 -4
- package/esm2022/lib/grids/selection/drag-select.directive.mjs +4 -4
- package/esm2022/lib/grids/selection/row-selectors.mjs +10 -10
- package/esm2022/lib/grids/selection/selection.service.mjs +4 -4
- package/esm2022/lib/grids/state.directive.mjs +4 -4
- package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +4 -4
- package/esm2022/lib/grids/summaries/grid-summary.service.mjs +4 -4
- package/esm2022/lib/grids/summaries/summary-cell.component.mjs +4 -4
- package/esm2022/lib/grids/summaries/summary-row.component.mjs +4 -4
- package/esm2022/lib/grids/toolbar/common.mjs +16 -16
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +4 -4
- package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +4 -4
- package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +4 -4
- package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +4 -4
- package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +7 -7
- package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/public_api.mjs +7 -1
- package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +44 -39
- package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +22 -22
- package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +4 -4
- package/esm2022/lib/icon/icon.component.mjs +4 -4
- package/esm2022/lib/icon/icon.module.mjs +5 -5
- package/esm2022/lib/icon/icon.service.mjs +4 -4
- package/esm2022/lib/input-group/input-group.component.mjs +4 -4
- package/esm2022/lib/input-group/input-group.module.mjs +5 -5
- package/esm2022/lib/list/list-item.component.mjs +4 -4
- package/esm2022/lib/list/list.common.mjs +16 -16
- package/esm2022/lib/list/list.component.mjs +19 -19
- package/esm2022/lib/list/list.module.mjs +5 -5
- package/esm2022/lib/navbar/navbar.component.mjs +10 -10
- package/esm2022/lib/navbar/navbar.module.mjs +5 -5
- package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +4 -4
- package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +10 -10
- package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +5 -5
- package/esm2022/lib/paginator/paginator-interfaces.mjs +4 -4
- package/esm2022/lib/paginator/paginator.component.mjs +13 -13
- package/esm2022/lib/paginator/paginator.module.mjs +5 -5
- package/esm2022/lib/progressbar/progressbar.common.mjs +7 -7
- package/esm2022/lib/progressbar/progressbar.component.mjs +10 -10
- package/esm2022/lib/progressbar/progressbar.module.mjs +5 -5
- package/esm2022/lib/query-builder/query-builder-header.component.mjs +4 -4
- package/esm2022/lib/query-builder/query-builder.component.mjs +7 -7
- package/esm2022/lib/query-builder/query-builder.module.mjs +5 -5
- package/esm2022/lib/radio/radio.component.mjs +4 -4
- package/esm2022/lib/select/select-group.component.mjs +4 -4
- package/esm2022/lib/select/select-item.component.mjs +4 -4
- package/esm2022/lib/select/select-navigation.directive.mjs +4 -4
- package/esm2022/lib/select/select.component.mjs +13 -13
- package/esm2022/lib/select/select.module.mjs +5 -5
- package/esm2022/lib/services/animation/angular-animation-service.mjs +4 -4
- package/esm2022/lib/services/csv/csv-exporter.mjs +4 -4
- package/esm2022/lib/services/direction/directionality.mjs +4 -4
- package/esm2022/lib/services/excel/excel-exporter.mjs +4 -4
- package/esm2022/lib/services/overlay/overlay.mjs +4 -4
- package/esm2022/lib/services/transaction/transaction-factory.service.mjs +7 -7
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +4 -4
- package/esm2022/lib/simple-combo/simple-combo.module.mjs +5 -5
- package/esm2022/lib/slider/label/thumb-label.component.mjs +4 -4
- package/esm2022/lib/slider/slider.common.mjs +10 -10
- package/esm2022/lib/slider/slider.component.mjs +4 -4
- package/esm2022/lib/slider/slider.module.mjs +5 -5
- package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +4 -4
- package/esm2022/lib/slider/ticks/tick.pipe.mjs +4 -4
- package/esm2022/lib/slider/ticks/ticks.component.mjs +4 -4
- package/esm2022/lib/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/lib/snackbar/snackbar.module.mjs +5 -5
- package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +4 -4
- package/esm2022/lib/splitter/splitter.component.mjs +7 -7
- package/esm2022/lib/splitter/splitter.module.mjs +5 -5
- package/esm2022/lib/stepper/step/step.component.mjs +4 -4
- package/esm2022/lib/stepper/stepper.component.mjs +4 -4
- package/esm2022/lib/stepper/stepper.directive.mjs +22 -22
- package/esm2022/lib/stepper/stepper.module.mjs +5 -5
- package/esm2022/lib/stepper/stepper.service.mjs +4 -4
- package/esm2022/lib/switch/switch.component.mjs +4 -4
- package/esm2022/lib/switch/switch.module.mjs +5 -5
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +7 -7
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +5 -5
- package/esm2022/lib/tabs/tab-content.directive.mjs +4 -4
- package/esm2022/lib/tabs/tab-header.directive.mjs +4 -4
- package/esm2022/lib/tabs/tab-item.directive.mjs +4 -4
- package/esm2022/lib/tabs/tabs/tab-content.component.mjs +4 -4
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +4 -4
- package/esm2022/lib/tabs/tabs/tab-item.component.mjs +4 -4
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +4 -4
- package/esm2022/lib/tabs/tabs/tabs.directives.mjs +7 -7
- package/esm2022/lib/tabs/tabs/tabs.module.mjs +5 -5
- package/esm2022/lib/tabs/tabs.directive.mjs +4 -4
- package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/lib/time-picker/time-picker.directives.mjs +7 -7
- package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
- package/esm2022/lib/time-picker/time-picker.pipes.mjs +7 -7
- package/esm2022/lib/toast/toast.component.mjs +4 -4
- package/esm2022/lib/toast/toast.module.mjs +5 -5
- package/esm2022/lib/tree/tree-navigation.service.mjs +4 -4
- package/esm2022/lib/tree/tree-node/tree-node.component.mjs +7 -7
- package/esm2022/lib/tree/tree-selection.service.mjs +4 -4
- package/esm2022/lib/tree/tree.component.mjs +10 -10
- package/esm2022/lib/tree/tree.module.mjs +5 -5
- package/esm2022/lib/tree/tree.service.mjs +4 -4
- package/fesm2022/igniteui-angular.mjs +3098 -3079
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/directives/input/input.directive.d.ts +3 -0
- package/lib/grids/column-actions/public_api.d.ts +7 -0
- package/lib/grids/grid/grid.module.d.ts +23 -20
- package/lib/grids/grid/public_api.d.ts +1 -1
- package/lib/grids/hierarchical-grid/hierarchical-grid.module.d.ts +23 -20
- package/lib/grids/hierarchical-grid/public_api.d.ts +1 -1
- package/lib/grids/pivot-grid/pivot-grid.module.d.ts +23 -20
- package/lib/grids/pivot-grid/public_api.d.ts +1 -1
- package/lib/grids/public_api.d.ts +2 -1
- package/lib/grids/tree-grid/public_api.d.ts +5 -1
- package/lib/grids/tree-grid/tree-grid.module.d.ts +40 -35
- package/package.json +6 -6
|
@@ -505,10 +505,10 @@ export class IgxDialogComponent {
|
|
|
505
505
|
emitOpenedFromDialog(eventArgs) {
|
|
506
506
|
this.opened.emit({ dialog: this, event: eventArgs.event });
|
|
507
507
|
}
|
|
508
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
509
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0
|
|
508
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogComponent, deps: [{ token: i0.ElementRef }, { token: i1.IgxNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
509
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: IgxDialogComponent, isStandalone: true, selector: "igx-dialog", inputs: { id: "id", isModal: "isModal", closeOnEscape: "closeOnEscape", focusTrap: "focusTrap", title: "title", message: "message", leftButtonLabel: "leftButtonLabel", leftButtonType: "leftButtonType", leftButtonColor: "leftButtonColor", leftButtonBackgroundColor: "leftButtonBackgroundColor", leftButtonRipple: "leftButtonRipple", rightButtonLabel: "rightButtonLabel", rightButtonType: "rightButtonType", rightButtonColor: "rightButtonColor", rightButtonBackgroundColor: "rightButtonBackgroundColor", rightButtonRipple: "rightButtonRipple", closeOnOutsideSelect: "closeOnOutsideSelect", positionSettings: "positionSettings", isOpen: "isOpen", role: "role", titleId: "titleId" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed", leftButtonSelect: "leftButtonSelect", rightButtonSelect: "rightButtonSelect", isOpenChange: "isOpenChange" }, host: { properties: { "attr.id": "this.id", "attr.tabindex": "this.tabindex", "class.igx-dialog--hidden": "this.isCollapsed" } }, viewQueries: [{ propertyName: "toggleRef", first: true, predicate: IgxToggleDirective, descendants: true, static: true }], ngImport: i0, template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle [igxFocusTrap]=\"focusTrap\" (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "directive", type: IgxFocusTrapDirective, selector: "[igxFocusTrap]", inputs: ["igxFocusTrap"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }] }); }
|
|
510
510
|
}
|
|
511
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
511
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogComponent, decorators: [{
|
|
512
512
|
type: Component,
|
|
513
513
|
args: [{ selector: 'igx-dialog', standalone: true, imports: [IgxToggleDirective, IgxFocusTrapDirective, NgIf, IgxFocusDirective, IgxButtonDirective, IgxRippleDirective], template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle [igxFocusTrap]=\"focusTrap\" (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n" }]
|
|
514
514
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.IgxNavigationService, decorators: [{
|
|
@@ -582,4 +582,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
|
|
|
582
582
|
}], titleId: [{
|
|
583
583
|
type: Input
|
|
584
584
|
}] } });
|
|
585
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBbUIsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDdkgsT0FBTyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBR3RGLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO2FBQ1osWUFBTyxHQUFHLENBQUMsQ0FBQzthQUNILGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBbUJwRDs7Ozs7T0FLRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsR0FBWTtRQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUNXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGFBQWEsQ0FBQyxHQUFZO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO0lBQzlCLENBQUM7SUFnSUQ7Ozs7Ozs7T0FPRztJQUNILElBQ1csb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLG9CQUFvQixDQUFDLEdBQVk7UUFDeEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztRQUN2RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUNXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsSUFBVyxnQkFBZ0IsQ0FBQyxRQUEwQjtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUE2RUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0gsSUFDVyxNQUFNO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFXLE1BQU0sQ0FBQyxLQUFjO1FBQzVCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AscUJBQXFCLENBQUMsR0FBRyxFQUFFO29CQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsSUFDVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csSUFBSTtRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEVBQUUsRUFBRTtZQUM3RCxPQUFPLFFBQVEsQ0FBQztTQUNuQjthQUFNLElBQ0gsSUFBSSxDQUFDLGVBQWUsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxFQUFFLEVBQzlCO1lBQ0UsT0FBTyxhQUFhLENBQUM7U0FDeEI7YUFBTTtZQUNILE9BQU8sT0FBTyxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBZUQsWUFDWSxVQUFzQixFQUNWLFVBQWdDO1FBRDVDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQTlaeEQ7Ozs7Ozs7V0FPRztRQUdJLE9BQUUsR0FBRyxjQUFjLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFrQ3hDOzs7Ozs7V0FNRztRQUVJLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFeEI7Ozs7O1dBS0c7UUFFSSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWxCOzs7OztXQUtHO1FBRUksWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7Ozs7V0FLRztRQUVJLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTVCOzs7Ozs7Ozs7V0FTRztRQUVJLG1CQUFjLEdBQWtCLE1BQU0sQ0FBQztRQUM5Qzs7Ozs7V0FLRztRQUVJLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTVCOzs7OztXQUtHO1FBRUksOEJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBRXRDOzs7Ozs7V0FNRztRQUVJLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU3Qjs7Ozs7V0FLRztRQUVJLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU3Qjs7Ozs7Ozs7O1dBU0c7UUFFSSxvQkFBZSxHQUFrQixNQUFNLENBQUM7UUFFL0M7Ozs7O1dBS0c7UUFFSSxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFN0I7Ozs7O1dBS0c7UUFFSSwrQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFFdkM7Ozs7O1dBS0c7UUFFSSxzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUF1RDlCOzs7O1dBSUc7UUFFSSxhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFckI7Ozs7OztXQU1HO1FBRUksWUFBTyxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBRWpFOzs7Ozs7V0FNRztRQUVJLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUVyRDs7Ozs7O1dBTUc7UUFFSSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFFakU7Ozs7OztXQU1HO1FBRUksV0FBTSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXJEOzs7Ozs7V0FNRztRQUVJLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRS9EOzs7Ozs7OztXQVFHO1FBRUksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFaEU7O1dBRUc7UUFDYyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUF1R2xELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLHNCQUFpQixHQUFxQjtZQUMxQyxhQUFhLEVBQUUsTUFBTTtZQUNyQixjQUFjLEVBQUUsT0FBTztTQUMxQixDQUFDO1FBR00sMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFPcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFFeEQsSUFBSSxDQUFDLHVCQUF1QixHQUFHO1lBQzNCLGdCQUFnQixFQUFFLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3BFLGNBQWMsRUFBRSxJQUFJLGtCQUFrQixFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztZQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtTQUNqRCxDQUFDO0lBQ04sQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxJQUFJLENBQUMsa0JBQW1DLElBQUksQ0FBQyx1QkFBdUI7UUFDdkUsTUFBTSxTQUFTLEdBQWdDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEM7U0FDSjtJQUVMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUs7UUFDUiw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0Q7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLEtBQUs7UUFDekIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQ0ksSUFBSSxDQUFDLE1BQU07WUFDWCxJQUFJLENBQUMsb0JBQW9CO1lBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFDbEU7WUFDRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSwwQkFBMEIsQ0FBQyxLQUFLO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksMkJBQTJCLENBQUMsS0FBSztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUFTO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxTQUFTLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFNBQVM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO21IQTVpQlEsa0JBQWtCO3VHQUFsQixrQkFBa0IsZ21DQU1oQixrQkFBa0IsOERDbEVqQywwckRBMkJBLDRDRCtCYyxrQkFBa0IsK0pBQUUscUJBQXFCLHFGQUFFLElBQUksNkZBQUUsaUJBQWlCLHFHQUFFLGtCQUFrQix3TUFBRSxrQkFBa0I7O2dHQUUzRyxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksWUFBWSxjQUVWLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBeWFoSCxRQUFROzRDQWhhTixTQUFTO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWF4QyxFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBVUssT0FBTztzQkFEakIsS0FBSztnQkFpQkssYUFBYTtzQkFEdkIsS0FBSztnQkFrQkMsU0FBUztzQkFEZixLQUFLO2dCQVVDLEtBQUs7c0JBRFgsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBVUMsZUFBZTtzQkFEckIsS0FBSztnQkFjQyxjQUFjO3NCQURwQixLQUFLO2dCQVNDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBVUMseUJBQXlCO3NCQUQvQixLQUFLO2dCQVdDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBY0MsZUFBZTtzQkFEckIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUMsMEJBQTBCO3NCQURoQyxLQUFLO2dCQVVDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFZSyxvQkFBb0I7c0JBRDlCLEtBQUs7Z0JBa0JLLGdCQUFnQjtzQkFEMUIsS0FBSztnQkFrQ0MsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBV3JCLE9BQU87c0JBRGIsTUFBTTtnQkFXQSxNQUFNO3NCQURaLE1BQU07Z0JBV0EsT0FBTztzQkFEYixNQUFNO2dCQVdBLE1BQU07c0JBRFosTUFBTTtnQkFXQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBYUEsaUJBQWlCO3NCQUR2QixNQUFNO2dCQU1VLFlBQVk7c0JBQTVCLE1BQU07Z0JBMkNJLE1BQU07c0JBRGhCLEtBQUs7Z0JBa0JLLFdBQVc7c0JBRHJCLFdBQVc7dUJBQUMsMEJBQTBCO2dCQWdCNUIsSUFBSTtzQkFEZCxLQUFLO2dCQXlCSyxPQUFPO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlLCBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJZ3hCdXR0b25UeXBlLCBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MsIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE5vT3BTY3JvbGxTdHJhdGVneSwgUG9zaXRpb25TZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHtmYWRlSW4sIGZhZGVPdXR9IGZyb20gJy4uL2FuaW1hdGlvbnMvZmFkZS9pbmRleCc7XG5pbXBvcnQgeyBJZ3hGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMvZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEZvY3VzVHJhcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5sZXQgRElBTE9HX0lEID0gMDtcbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgRGlhbG9nIFdpbmRvdyoqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9kaWFsb2cuaHRtbClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIERpYWxvZyBXaW5kb3cgcHJlc2VudHMgYSBkaWFsb2cgd2luZG93IHRvIHRoZSB1c2VyIHdoaWNoIGNhbiBzaW1wbHkgZGlzcGxheSBtZXNzYWdlcyBvciBkaXNwbGF5XG4gKiBtb3JlIGNvbXBsaWNhdGVkIHZpc3VhbHMgc3VjaCBhcyBhIHVzZXIgc2lnbi1pbiBmb3JtLiAgSXQgYWxzbyBwcm92aWRlcyBhIHJpZ2h0IGFuZCBsZWZ0IGJ1dHRvblxuICogd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGN1c3RvbSBhY3Rpb25zLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIChjbGljayk9XCJmb3JtLm9wZW4oKVwiPlNob3cgRGlhbG9nPC9idXR0b24+XG4gKiA8aWd4LWRpYWxvZyAjZm9ybSB0aXRsZT1cIlNpZ24gSW5cIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAqICAgPGRpdj5cbiAqICAgICA8aWd4LWlucHV0LWdyb3VwPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWd4SW5wdXQvPlxuICogICAgICAgPGxhYmVsIGlneExhYmVsPlVzZXJuYW1lPC9sYWJlbD5cbiAqICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXY+XG4gKiAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZ3hJbnB1dC8+XG4gKiAgICAgICA8bGFiZWwgaWd4TGFiZWw+UGFzc3dvcmQ8L2xhYmVsPlxuICogICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICogICA8L2Rpdj5cbiAqIDwvaWd4LWRpYWxvZz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneFRvZ2dsZURpcmVjdGl2ZSwgSWd4Rm9jdXNUcmFwRGlyZWN0aXZlLCBOZ0lmLCBJZ3hGb2N1c0RpcmVjdGl2ZSwgSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIElUb2dnbGVWaWV3LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgTkVYVF9JRCA9IDE7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRElBTE9HX0NMQVNTID0gJ2lneC1kaWFsb2cnO1xuXG5cblxuICAgIEBWaWV3Q2hpbGQoSWd4VG9nZ2xlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0b2dnbGVSZWY6IElneFRvZ2dsZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZS4gSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtpZF09XCInaWd4LWRpYWxvZy01NidcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIlxuICAgICAqICBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtZGlhbG9nLSR7RElBTE9HX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgYmUgc2hvd24gYXMgbW9kYWwuIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbaXNNb2RhbF09XCJmYWxzZVwiID48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGlzTW9kYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01vZGFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgaXNNb2RhbCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5tb2RhbCA9IHZhbDtcbiAgICAgICAgdGhpcy5faXNNb2RhbCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgc2hvdWxkIGNsb3NlIHdoZW4gYEVzY2Aga2V5IGlzIHByZXNzZWQuIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbY2xvc2VPbkVzY2FwZV09XCJmYWxzZVwiID48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNsb3NlT25Fc2NhcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uRXNjYXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgY2xvc2VPbkVzY2FwZSh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgICAgICB0aGlzLl9jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgd2hldGhlciB0aGUgVGFiIGtleSBmb2N1cyBpcyB0cmFwcGVkIHdpdGhpbiB0aGUgZGlhbG9nIHdoZW4gb3BlbmVkLlxuICAgICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgZm9jdXNUcmFwPVwiZmFsc2VcIlwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c1RyYXAgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IGNvbnRyb2xsaW5nIHRoZSBgdGl0bGVgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgI2FsZXJ0IGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0aXRsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogIEFuIEBJbnB1dCBwcm9wZXJ0eSBjb250cm9sbGluZyB0aGUgYG1lc3NhZ2VgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIG1lc3NhZ2U9XCJZb3VyIGVtYWlsIHdhcyBzZW50IVwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgYGxhYmVsYCBvZiB0aGUgbGVmdCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvblR5cGU9XCJyYWlzZWRcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gY29sb3IuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkNvbG9yID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBsZWZ0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQmFja2dyb3VuZENvbG9yPVwiYmxhY2tcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHJpcHBsZWAuIFRoZSBgcmlwcGxlYCBhbmltYXRlcyBhIGNsaWNrL3RhcCB0byBhIGNvbXBvbmVudCBhcyBhIHNlcmllcyBvZiBmYWRpbmcgd2F2ZXMuXG4gICAgICogVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGxlZnRCdXR0b25SaXBwbGU9XCJncmVlblwiIGxlZnRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uUmlwcGxlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBgbGFiZWxgIG9mIHRoZSByaWdodCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIiAgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25UeXBlPVwiZmFiXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYGNvbG9yYC4gVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uQ29sb3IgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJpZ2h0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvcj1cImJsYWNrXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgcmlnaHQgYnV0dG9uIGByaXBwbGVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvblJpcHBsZT1cImdyZWVuXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgYWxsb3dzIHlvdSB0byBlbmFibGUgdGhlIFwiY2xvc2Ugb24gY2xpY2sgb3V0c2lkZSB0aGUgZGlhbG9nXCIuIEJ5IGRlZmF1bHQgaXQncyBkaXNhYmxlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgY2xvc2VPbk91dHNpZGVTZWxlY3Q9XCJ0cnVlXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIlxuICAgICAqIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIChyaWdodEJ1dHRvblNlbGVjdCk9XCJvbkRpYWxvZ09LU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbk91dHNpZGVTZWxlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uT3V0c2lkZVNlbGVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNsb3NlT25PdXRzaWRlU2VsZWN0KHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25PdXRzaWRlU2VsZWN0ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBkaWFsb2cuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbGV0IGN1cnJlbnRQb3NpdGlvbjogUG9zaXRpb25TZXR0aW5ncyA9IHRoaXMuYWxlcnQucG9zaXRpb25TZXR0aW5nc1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwb3NpdGlvblNldHRpbmdzKCk6IFBvc2l0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25TZXR0aW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgZGlhbG9nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqIC4uLlxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogIHB1YmxpYyBuZXdQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlSW5Ub3AsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMjAwMG1zJyB9IH0pLFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZU91dEJvdHRvbSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyMDAwbXMnfSB9KSxcbiAgICAgKiAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuTGVmdCxcbiAgICAgKiAgICAgIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBob3Jpem9udGFsU3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudC5MZWZ0LFxuICAgICAqICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBtaW5TaXplOiB7IGhlaWdodDogMTAwLCB3aWR0aDogMTAwIH1cbiAgICAgKiAgfTtcbiAgICAgKiB0aGlzLmFsZXJ0LnBvc2l0aW9uU2V0dGluZ3MgPSB0aGlzLm5ld1Bvc2l0aW9uU2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBwb3NpdGlvblNldHRpbmdzKHNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgYHRhYmluZGV4YCBhdHRyaWJ1dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5pbmcpPVwib25EaWFsb2dPcGVuSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5lZCk9XCJvbkRpYWxvZ09wZW5lZEhhbmRsZXIoJGV2ZW50KVwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYmVmb3JlIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2luZyk9XCJvbkRpYWxvZ0Nsb3NlSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGNsb3NlZCk9XCJvbkRpYWxvZ0Nsb3NlZEhhbmRsZXIoJGV2ZW50KVwiIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgbGVmdCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGxlZnRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIiAjZGlhbG9nIGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgcmlnaHRCdXR0b25MYWJlbD1cIkNhbmNlbFwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSByaWdodCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKHJpZ2h0QnV0dG9uU2VsZWN0KT1cIm9uRGlhbG9nT0tTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgKiAjZGlhbG9nIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIlxuICAgICAqIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2Ygc3RhdGUuIFBvc3NpYmxlIHN0YXRlIHZhbHVlcyBhcmUgXCJvcGVuXCIgb3IgXCJjbG9zZVwiLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nU3RhdGUgPSB0aGlzLmRpYWxvZy5zdGF0ZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGRpYWxvZ0lzT3BlbiA9IHRoaXMuZGlhbG9nLmlzT3BlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgW2lzT3Blbl09J2ZhbHNlJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtZGlhbG9nIFsoaXNPcGVuKV09J21vZGVsLmlzT3Blbic+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kaWFsb2ctLWhpZGRlbicpXG4gICAgcHVibGljIGdldCBpc0NvbGxhcHNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlUmVmLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcm9sZSBvZiB0aGUgZGlhbG9nLiBUaGUgdmFsaWQgdmFsdWVzIGFyZSBgZGlhbG9nYCwgYGFsZXJ0ZGlhbG9nYCwgYGFsZXJ0YC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15RGlhbG9nXCIpXG4gICAgICogcHVibGljIGRpYWxvZzogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICAgbGV0IGRpYWxvZ1JvbGUgPSB0aGlzLmRpYWxvZy5yb2xlO1xuICAgICAqIH1cbiAgICAgKiAgYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHJvbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRCdXR0b25MYWJlbCAhPT0gJycgJiYgdGhpcy5yaWdodEJ1dHRvbkxhYmVsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuICdkaWFsb2cnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uTGFiZWwgIT09ICcnIHx8XG4gICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uTGFiZWwgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICdhbGVydGRpYWxvZyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FsZXJ0JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB0aXRsZSBpZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dUaXRsZSA9IHRoaXMuZGlhbG9nLnRpdGxlSWQ7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0aXRsZUlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVJZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgb3BlbkFuaW1hdGlvbjogZmFkZUluLFxuICAgICAgICBjbG9zZUFuaW1hdGlvbjogZmFkZU91dFxuICAgIH07XG5cbiAgICBwcml2YXRlIF9vdmVybGF5RGVmYXVsdFNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3M7XG4gICAgcHJpdmF0ZSBfY2xvc2VPbk91dHNpZGVTZWxlY3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9jbG9zZU9uRXNjYXBlID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9pc01vZGFsID0gdHJ1ZTtcbiAgICBwcml2YXRlIF90aXRsZUlkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5hdlNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3RpdGxlSWQgPSBJZ3hEaWFsb2dDb21wb25lbnQuTkVYVF9JRCsrICsgJ190aXRsZSc7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBOb09wU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIG1vZGFsOiB0aGlzLmlzTW9kYWwsXG4gICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiB0aGlzLl9jbG9zZU9uRXNjYXBlLFxuICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdGhpcy5jbG9zZU9uT3V0c2lkZVNlbGVjdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzKSA9PiB0aGlzLmVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdENsb3NlZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW5lZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucyB0aGUgZGlhbG9nLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5vcGVuKCkgaWd4QnV0dG9uPVwicmFpc2VkXCIgaWd4QnV0dG9uQ29sb3I9XCJ3aGl0ZVwiIGlneFJpcHBsZT1cIndoaXRlXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRGlhbG9nQ2FuY2VsbGFibGVFdmVudEFyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IG51bGwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxlZnRCdXR0b25MYWJlbCAmJiAhdGhpcy5yaWdodEJ1dHRvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWYuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IHRoYXQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiAgQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5jbG9zZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICAvLyBgY2xvc2luZ2Agd2lsbCBlbWl0IGZyb20gYHRvZ2dsZVJlZi5jbG9zaW5nYCBzdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2UoKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMvY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLnRvZ2dsZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaWFsb2dTZWxlY3RlZChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbk91dHNpZGVTZWxlY3QgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoSWd4RGlhbG9nQ29tcG9uZW50LkRJQUxPR19DTEFTUylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMubGVmdEJ1dHRvblNlbGVjdC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdChldmVudCkge1xuICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLmFkZCh0aGlzLmlkLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5uYXZTZXJ2aWNlICYmIHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2U2VydmljZS5yZW1vdmUodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0V2ZW50c0FyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCwgY2FuY2VsOiBldmVudEFyZ3MuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGRpYWxvZ0V2ZW50c0FyZ3MpO1xuICAgICAgICBldmVudEFyZ3MuY2FuY2VsID0gZGlhbG9nRXZlbnRzQXJncy5jYW5jZWw7XG4gICAgICAgIGlmICghZXZlbnRBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZWRGcm9tRGlhbG9nKGV2ZW50QXJncykge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyBleHRlbmRzIElEaWFsb2dFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3MgeyB9XG4iLCI8ZGl2IHRhYmluZGV4PVwiMFwiICNkaWFsb2cgY2xhc3M9XCJpZ3gtZGlhbG9nXCIgaWd4VG9nZ2xlIFtpZ3hGb2N1c1RyYXBdPVwiZm9jdXNUcmFwXCIgKGNsaWNrKT1cIm9uRGlhbG9nU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgIDxkaXYgI2RpYWxvZ1dpbmRvdyBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvd1wiICBbYXR0ci5yb2xlXT1cInJvbGVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIFthdHRyLmlkXT1cInRpdGxlSWRcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy10aXRsZVwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXRpdGxlXCIgc2VsZWN0PVwiaWd4LWRpYWxvZy10aXRsZSxbaWd4RGlhbG9nVGl0bGVdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFtZXNzYWdlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsIHx8IHJpZ2h0QnV0dG9uTGFiZWxcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIFtpZ3hGb2N1c109XCJpc09wZW5cIiBbaWd4QnV0dG9uXT1cImxlZnRCdXR0b25UeXBlXCIgaWd4QnV0dG9uQ29sb3I9XCJ7eyBsZWZ0QnV0dG9uQ29sb3IgfX1cIiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwie3sgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgbGVmdEJ1dHRvblJpcHBsZSB9fVwiIChjbGljayk9XCJvbkludGVybmFsTGVmdEJ1dHRvblNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAge3sgbGVmdEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyaWdodEJ1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIFtpZ3hGb2N1c109XCJpc09wZW5cIiBbaWd4QnV0dG9uXT1cInJpZ2h0QnV0dG9uVHlwZVwiIGlneEJ1dHRvbkNvbG9yPVwie3sgcmlnaHRCdXR0b25Db2xvciB9fVwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJ7eyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgcmlnaHRCdXR0b25SaXBwbGUgfX1cIiAoY2xpY2spPVwib25JbnRlcm5hbFJpZ2h0QnV0dG9uU2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICB7eyByaWdodEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIWxlZnRCdXR0b25MYWJlbCAmJiAhcmlnaHRCdXR0b25MYWJlbFwiIHNlbGVjdD1cImlneC1kaWFsb2ctYWN0aW9ucyxbaWd4RGlhbG9nQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
585
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBbUIsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDdkgsT0FBTyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBR3RGLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFPSCxN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O3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlLCBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJZ3hCdXR0b25UeXBlLCBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MsIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE5vT3BTY3JvbGxTdHJhdGVneSwgUG9zaXRpb25TZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHtmYWRlSW4sIGZhZGVPdXR9IGZyb20gJy4uL2FuaW1hdGlvbnMvZmFkZS9pbmRleCc7XG5pbXBvcnQgeyBJZ3hGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMvZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEZvY3VzVHJhcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5sZXQgRElBTE9HX0lEID0gMDtcbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgRGlhbG9nIFdpbmRvdyoqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9kaWFsb2cuaHRtbClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIERpYWxvZyBXaW5kb3cgcHJlc2VudHMgYSBkaWFsb2cgd2luZG93IHRvIHRoZSB1c2VyIHdoaWNoIGNhbiBzaW1wbHkgZGlzcGxheSBtZXNzYWdlcyBvciBkaXNwbGF5XG4gKiBtb3JlIGNvbXBsaWNhdGVkIHZpc3VhbHMgc3VjaCBhcyBhIHVzZXIgc2lnbi1pbiBmb3JtLiAgSXQgYWxzbyBwcm92aWRlcyBhIHJpZ2h0IGFuZCBsZWZ0IGJ1dHRvblxuICogd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGN1c3RvbSBhY3Rpb25zLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIChjbGljayk9XCJmb3JtLm9wZW4oKVwiPlNob3cgRGlhbG9nPC9idXR0b24+XG4gKiA8aWd4LWRpYWxvZyAjZm9ybSB0aXRsZT1cIlNpZ24gSW5cIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAqICAgPGRpdj5cbiAqICAgICA8aWd4LWlucHV0LWdyb3VwPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWd4SW5wdXQvPlxuICogICAgICAgPGxhYmVsIGlneExhYmVsPlVzZXJuYW1lPC9sYWJlbD5cbiAqICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXY+XG4gKiAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZ3hJbnB1dC8+XG4gKiAgICAgICA8bGFiZWwgaWd4TGFiZWw+UGFzc3dvcmQ8L2xhYmVsPlxuICogICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICogICA8L2Rpdj5cbiAqIDwvaWd4LWRpYWxvZz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneFRvZ2dsZURpcmVjdGl2ZSwgSWd4Rm9jdXNUcmFwRGlyZWN0aXZlLCBOZ0lmLCBJZ3hGb2N1c0RpcmVjdGl2ZSwgSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIElUb2dnbGVWaWV3LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgTkVYVF9JRCA9IDE7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRElBTE9HX0NMQVNTID0gJ2lneC1kaWFsb2cnO1xuXG5cblxuICAgIEBWaWV3Q2hpbGQoSWd4VG9nZ2xlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0b2dnbGVSZWY6IElneFRvZ2dsZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZS4gSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtpZF09XCInaWd4LWRpYWxvZy01NidcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIlxuICAgICAqICBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtZGlhbG9nLSR7RElBTE9HX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgYmUgc2hvd24gYXMgbW9kYWwuIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbaXNNb2RhbF09XCJmYWxzZVwiID48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGlzTW9kYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01vZGFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgaXNNb2RhbCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5tb2RhbCA9IHZhbDtcbiAgICAgICAgdGhpcy5faXNNb2RhbCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgc2hvdWxkIGNsb3NlIHdoZW4gYEVzY2Aga2V5IGlzIHByZXNzZWQuIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbY2xvc2VPbkVzY2FwZV09XCJmYWxzZVwiID48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNsb3NlT25Fc2NhcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uRXNjYXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgY2xvc2VPbkVzY2FwZSh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgICAgICB0aGlzLl9jbG9zZU9uRXNjYXBlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgd2hldGhlciB0aGUgVGFiIGtleSBmb2N1cyBpcyB0cmFwcGVkIHdpdGhpbiB0aGUgZGlhbG9nIHdoZW4gb3BlbmVkLlxuICAgICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgZm9jdXNUcmFwPVwiZmFsc2VcIlwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c1RyYXAgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IGNvbnRyb2xsaW5nIHRoZSBgdGl0bGVgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgI2FsZXJ0IGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0aXRsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogIEFuIEBJbnB1dCBwcm9wZXJ0eSBjb250cm9sbGluZyB0aGUgYG1lc3NhZ2VgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIG1lc3NhZ2U9XCJZb3VyIGVtYWlsIHdhcyBzZW50IVwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgYGxhYmVsYCBvZiB0aGUgbGVmdCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvblR5cGU9XCJyYWlzZWRcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gY29sb3IuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkNvbG9yID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBsZWZ0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQmFja2dyb3VuZENvbG9yPVwiYmxhY2tcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHJpcHBsZWAuIFRoZSBgcmlwcGxlYCBhbmltYXRlcyBhIGNsaWNrL3RhcCB0byBhIGNvbXBvbmVudCBhcyBhIHNlcmllcyBvZiBmYWRpbmcgd2F2ZXMuXG4gICAgICogVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGxlZnRCdXR0b25SaXBwbGU9XCJncmVlblwiIGxlZnRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uUmlwcGxlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBgbGFiZWxgIG9mIHRoZSByaWdodCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIiAgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25UeXBlPVwiZmFiXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYGNvbG9yYC4gVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uQ29sb3IgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJpZ2h0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvcj1cImJsYWNrXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgcmlnaHQgYnV0dG9uIGByaXBwbGVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvblJpcHBsZT1cImdyZWVuXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgYWxsb3dzIHlvdSB0byBlbmFibGUgdGhlIFwiY2xvc2Ugb24gY2xpY2sgb3V0c2lkZSB0aGUgZGlhbG9nXCIuIEJ5IGRlZmF1bHQgaXQncyBkaXNhYmxlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgY2xvc2VPbk91dHNpZGVTZWxlY3Q9XCJ0cnVlXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIlxuICAgICAqIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIChyaWdodEJ1dHRvblNlbGVjdCk9XCJvbkRpYWxvZ09LU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbk91dHNpZGVTZWxlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uT3V0c2lkZVNlbGVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNsb3NlT25PdXRzaWRlU2VsZWN0KHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25PdXRzaWRlU2VsZWN0ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBkaWFsb2cuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbGV0IGN1cnJlbnRQb3NpdGlvbjogUG9zaXRpb25TZXR0aW5ncyA9IHRoaXMuYWxlcnQucG9zaXRpb25TZXR0aW5nc1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwb3NpdGlvblNldHRpbmdzKCk6IFBvc2l0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25TZXR0aW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgZGlhbG9nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqIC4uLlxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogIHB1YmxpYyBuZXdQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlSW5Ub3AsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMjAwMG1zJyB9IH0pLFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZU91dEJvdHRvbSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyMDAwbXMnfSB9KSxcbiAgICAgKiAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuTGVmdCxcbiAgICAgKiAgICAgIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBob3Jpem9udGFsU3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudC5MZWZ0LFxuICAgICAqICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBtaW5TaXplOiB7IGhlaWdodDogMTAwLCB3aWR0aDogMTAwIH1cbiAgICAgKiAgfTtcbiAgICAgKiB0aGlzLmFsZXJ0LnBvc2l0aW9uU2V0dGluZ3MgPSB0aGlzLm5ld1Bvc2l0aW9uU2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBwb3NpdGlvblNldHRpbmdzKHNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgYHRhYmluZGV4YCBhdHRyaWJ1dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5pbmcpPVwib25EaWFsb2dPcGVuSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5lZCk9XCJvbkRpYWxvZ09wZW5lZEhhbmRsZXIoJGV2ZW50KVwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYmVmb3JlIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2luZyk9XCJvbkRpYWxvZ0Nsb3NlSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGNsb3NlZCk9XCJvbkRpYWxvZ0Nsb3NlZEhhbmRsZXIoJGV2ZW50KVwiIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgbGVmdCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGxlZnRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIiAjZGlhbG9nIGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgcmlnaHRCdXR0b25MYWJlbD1cIkNhbmNlbFwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSByaWdodCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKHJpZ2h0QnV0dG9uU2VsZWN0KT1cIm9uRGlhbG9nT0tTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgKiAjZGlhbG9nIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIlxuICAgICAqIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2Ygc3RhdGUuIFBvc3NpYmxlIHN0YXRlIHZhbHVlcyBhcmUgXCJvcGVuXCIgb3IgXCJjbG9zZVwiLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nU3RhdGUgPSB0aGlzLmRpYWxvZy5zdGF0ZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGRpYWxvZ0lzT3BlbiA9IHRoaXMuZGlhbG9nLmlzT3BlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgW2lzT3Blbl09J2ZhbHNlJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtZGlhbG9nIFsoaXNPcGVuKV09J21vZGVsLmlzT3Blbic+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kaWFsb2ctLWhpZGRlbicpXG4gICAgcHVibGljIGdldCBpc0NvbGxhcHNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlUmVmLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcm9sZSBvZiB0aGUgZGlhbG9nLiBUaGUgdmFsaWQgdmFsdWVzIGFyZSBgZGlhbG9nYCwgYGFsZXJ0ZGlhbG9nYCwgYGFsZXJ0YC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15RGlhbG9nXCIpXG4gICAgICogcHVibGljIGRpYWxvZzogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICAgbGV0IGRpYWxvZ1JvbGUgPSB0aGlzLmRpYWxvZy5yb2xlO1xuICAgICAqIH1cbiAgICAgKiAgYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHJvbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRCdXR0b25MYWJlbCAhPT0gJycgJiYgdGhpcy5yaWdodEJ1dHRvbkxhYmVsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuICdkaWFsb2cnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uTGFiZWwgIT09ICcnIHx8XG4gICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uTGFiZWwgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICdhbGVydGRpYWxvZyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FsZXJ0JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB0aXRsZSBpZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dUaXRsZSA9IHRoaXMuZGlhbG9nLnRpdGxlSWQ7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0aXRsZUlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVJZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgb3BlbkFuaW1hdGlvbjogZmFkZUluLFxuICAgICAgICBjbG9zZUFuaW1hdGlvbjogZmFkZU91dFxuICAgIH07XG5cbiAgICBwcml2YXRlIF9vdmVybGF5RGVmYXVsdFNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3M7XG4gICAgcHJpdmF0ZSBfY2xvc2VPbk91dHNpZGVTZWxlY3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9jbG9zZU9uRXNjYXBlID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9pc01vZGFsID0gdHJ1ZTtcbiAgICBwcml2YXRlIF90aXRsZUlkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5hdlNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3RpdGxlSWQgPSBJZ3hEaWFsb2dDb21wb25lbnQuTkVYVF9JRCsrICsgJ190aXRsZSc7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBOb09wU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIG1vZGFsOiB0aGlzLmlzTW9kYWwsXG4gICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiB0aGlzLl9jbG9zZU9uRXNjYXBlLFxuICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdGhpcy5jbG9zZU9uT3V0c2lkZVNlbGVjdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzKSA9PiB0aGlzLmVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdENsb3NlZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW5lZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucyB0aGUgZGlhbG9nLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5vcGVuKCkgaWd4QnV0dG9uPVwicmFpc2VkXCIgaWd4QnV0dG9uQ29sb3I9XCJ3aGl0ZVwiIGlneFJpcHBsZT1cIndoaXRlXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRGlhbG9nQ2FuY2VsbGFibGVFdmVudEFyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IG51bGwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxlZnRCdXR0b25MYWJlbCAmJiAhdGhpcy5yaWdodEJ1dHRvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWYuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IHRoYXQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiAgQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5jbG9zZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICAvLyBgY2xvc2luZ2Agd2lsbCBlbWl0IGZyb20gYHRvZ2dsZVJlZi5jbG9zaW5nYCBzdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2UoKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMvY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLnRvZ2dsZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaWFsb2dTZWxlY3RlZChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbk91dHNpZGVTZWxlY3QgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoSWd4RGlhbG9nQ29tcG9uZW50LkRJQUxPR19DTEFTUylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMubGVmdEJ1dHRvblNlbGVjdC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdChldmVudCkge1xuICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLmFkZCh0aGlzLmlkLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5uYXZTZXJ2aWNlICYmIHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2U2VydmljZS5yZW1vdmUodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0V2ZW50c0FyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCwgY2FuY2VsOiBldmVudEFyZ3MuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGRpYWxvZ0V2ZW50c0FyZ3MpO1xuICAgICAgICBldmVudEFyZ3MuY2FuY2VsID0gZGlhbG9nRXZlbnRzQXJncy5jYW5jZWw7XG4gICAgICAgIGlmICghZXZlbnRBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZWRGcm9tRGlhbG9nKGV2ZW50QXJncykge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyBleHRlbmRzIElEaWFsb2dFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3MgeyB9XG4iLCI8ZGl2IHRhYmluZGV4PVwiMFwiICNkaWFsb2cgY2xhc3M9XCJpZ3gtZGlhbG9nXCIgaWd4VG9nZ2xlIFtpZ3hGb2N1c1RyYXBdPVwiZm9jdXNUcmFwXCIgKGNsaWNrKT1cIm9uRGlhbG9nU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgIDxkaXYgI2RpYWxvZ1dpbmRvdyBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvd1wiICBbYXR0ci5yb2xlXT1cInJvbGVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIFthdHRyLmlkXT1cInRpdGxlSWRcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy10aXRsZVwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXRpdGxlXCIgc2VsZWN0PVwiaWd4LWRpYWxvZy10aXRsZSxbaWd4RGlhbG9nVGl0bGVdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFtZXNzYWdlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsIHx8IHJpZ2h0QnV0dG9uTGFiZWxcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwibGVmdEJ1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIFtpZ3hGb2N1c109XCJpc09wZW5cIiBbaWd4QnV0dG9uXT1cImxlZnRCdXR0b25UeXBlXCIgaWd4QnV0dG9uQ29sb3I9XCJ7eyBsZWZ0QnV0dG9uQ29sb3IgfX1cIiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwie3sgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgbGVmdEJ1dHRvblJpcHBsZSB9fVwiIChjbGljayk9XCJvbkludGVybmFsTGVmdEJ1dHRvblNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAge3sgbGVmdEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyaWdodEJ1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIFtpZ3hGb2N1c109XCJpc09wZW5cIiBbaWd4QnV0dG9uXT1cInJpZ2h0QnV0dG9uVHlwZVwiIGlneEJ1dHRvbkNvbG9yPVwie3sgcmlnaHRCdXR0b25Db2xvciB9fVwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJ7eyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgaWd4UmlwcGxlPVwie3sgcmlnaHRCdXR0b25SaXBwbGUgfX1cIiAoY2xpY2spPVwib25JbnRlcm5hbFJpZ2h0QnV0dG9uU2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICB7eyByaWdodEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIWxlZnRCdXR0b25MYWJlbCAmJiAhcmlnaHRCdXR0b25MYWJlbFwiIHNlbGVjdD1cImlneC1kaWFsb2ctYWN0aW9ucyxbaWd4RGlhbG9nQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -7,10 +7,10 @@ export class IgxDialogTitleDirective {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
this.defaultStyle = true;
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
11
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxDialogTitleDirective, isStandalone: true, selector: "igx-dialog-title,[igxDialogTitle]", host: { properties: { "class.igx-dialog__window-title": "this.defaultStyle" } }, ngImport: i0 }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogTitleDirective, decorators: [{
|
|
14
14
|
type: Directive,
|
|
15
15
|
args: [{
|
|
16
16
|
selector: 'igx-dialog-title,[igxDialogTitle]',
|
|
@@ -27,10 +27,10 @@ export class IgxDialogActionsDirective {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
this.defaultClass = true;
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
31
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxDialogActionsDirective, isStandalone: true, selector: "igx-dialog-actions,[igxDialogActions]", host: { properties: { "class.igx-dialog__window-actions": "this.defaultClass" } }, ngImport: i0 }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogActionsDirective, decorators: [{
|
|
34
34
|
type: Directive,
|
|
35
35
|
args: [{
|
|
36
36
|
selector: 'igx-dialog-actions,[igxDialogActions]',
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
|
|
|
40
40
|
type: HostBinding,
|
|
41
41
|
args: ['class.igx-dialog__window-actions']
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmRpcmVjdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV2RDs7R0FFRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFPVyxpQkFBWSxHQUFHLElBQUksQ0FBQztLQUM3Qjs4R0FKVyx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSVUsWUFBWTtzQkFEbEIsV0FBVzt1QkFBQyxnQ0FBZ0M7O0FBSWpEOztHQUVHO0FBS0gsTUFBTSxPQUFPLHlCQUF5QjtJQUp0QztRQU9XLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0tBQzdCOzhHQUpXLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1Q0FBdUM7b0JBQ2pELFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJVSxZQUFZO3NCQURsQixXQUFXO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWRpYWxvZy10aXRsZSxbaWd4RGlhbG9nVGl0bGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneERpYWxvZ1RpdGxlRGlyZWN0aXZlIHtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRpYWxvZ19fd2luZG93LXRpdGxlJylcbiAgICBwdWJsaWMgZGVmYXVsdFN0eWxlID0gdHJ1ZTtcbiB9XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lneC1kaWFsb2ctYWN0aW9ucyxbaWd4RGlhbG9nQWN0aW9uc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4RGlhbG9nQWN0aW9uc0RpcmVjdGl2ZSB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kaWFsb2dfX3dpbmRvdy1hY3Rpb25zJylcbiAgICBwdWJsaWMgZGVmYXVsdENsYXNzID0gdHJ1ZTtcbiB9XG4iXX0=
|
|
@@ -8,11 +8,11 @@ import * as i2 from "./dialog.directives";
|
|
|
8
8
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
9
9
|
*/
|
|
10
10
|
export class IgxDialogModule {
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0
|
|
13
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogModule, imports: [i1.IgxDialogComponent, i2.IgxDialogTitleDirective, i2.IgxDialogActionsDirective], exports: [i1.IgxDialogComponent, i2.IgxDialogTitleDirective, i2.IgxDialogActionsDirective] }); }
|
|
13
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogModule }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxDialogModule, decorators: [{
|
|
16
16
|
type: NgModule,
|
|
17
17
|
args: [{
|
|
18
18
|
imports: [
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
|
|
|
23
23
|
]
|
|
24
24
|
}]
|
|
25
25
|
}] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUVyRDs7O0dBR0c7QUFTSCxNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWU7K0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFSM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsR0FBRyxxQkFBcUI7cUJBQzNCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxHQUFHLHFCQUFxQjtxQkFDM0I7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX0RJQUxPR19ESVJFQ1RJVkVTIH0gZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBJTVBPUlRBTlQ6IFRoZSBmb2xsb3dpbmcgaXMgTmdNb2R1bGUgZXhwb3J0ZWQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGJlZm9yZSBzdGFuZGFsb25lIGNvbXBvbmVudHNcbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC4uLklHWF9ESUFMT0dfRElSRUNUSVZFU1xuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICAuLi5JR1hfRElBTE9HX0RJUkVDVElWRVNcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneERpYWxvZ01vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -266,10 +266,10 @@ export class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective
|
|
|
266
266
|
this.target.navigateFirst();
|
|
267
267
|
this.cdr.detectChanges();
|
|
268
268
|
}
|
|
269
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
270
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteDirective, deps: [{ token: NgModel, optional: true, self: true }, { token: FormControlName, optional: true, self: true }, { token: i1.IgxInputGroupComponent, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
270
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxAutocompleteDirective, isStandalone: true, selector: "[igxAutocomplete]", inputs: { target: ["igxAutocomplete", "target"], autocompleteSettings: ["igxAutocompleteSettings", "autocompleteSettings"], disabled: ["igxAutocompleteDisabled", "disabled"] }, outputs: { selectionChanging: "selectionChanging" }, host: { listeners: { "input": "onInput()", "compositionstart": "onCompositionStart()", "compositionend": "onCompositionEnd()", "keydown.ArrowDown": "onArrowDown($event)", "keydown.Alt.ArrowDown": "onArrowDown($event)", "keydown.ArrowUp": "onArrowDown($event)", "keydown.Alt.ArrowUp": "onArrowDown($event)", "keydown.Tab": "onTab()", "keydown.Shift.Tab": "onTab()" }, properties: { "attr.autocomplete": "this.autofill", "attr.role": "this.role", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-haspopup": "this.hasPopUp", "attr.aria-owns": "this.ariaOwns", "attr.aria-activedescendant": "this.ariaActiveDescendant", "attr.aria-autocomplete": "this.ariaAutocomplete" } }, exportAs: ["igxAutocomplete"], usesInheritance: true, ngImport: i0 }); }
|
|
271
271
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteDirective, decorators: [{
|
|
273
273
|
type: Directive,
|
|
274
274
|
args: [{
|
|
275
275
|
selector: '[igxAutocomplete]',
|
|
@@ -352,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
|
|
|
352
352
|
type: HostListener,
|
|
353
353
|
args: ['keydown.Shift.Tab']
|
|
354
354
|
}] } });
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBSXZCLE1BQU0sMkJBQTJCLENBQUM7QUFJbkMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7QUEwQnBHOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBTUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtDQUFrQztJQUM1RTs7Ozs7Ozs7Ozs7T0FXRztJQUNILElBQ29CLE1BQU07UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBK0IsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBb0IsTUFBTSxDQUFDLENBQXVCO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUErREQsd0JBQXdCO0lBQ3hCLElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFZLFFBQVE7UUFDaEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzVFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLHFCQUFxQixHQUFzQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkYsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztTQUNyRDtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFDVyxZQUFZO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFDVyxRQUFRO1FBQ2YsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUNXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFDVyxvQkFBb0I7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQ1csZ0JBQWdCO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFJRCxJQUFjLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBTUQsWUFBMkQsT0FBZ0IsRUFDaEIsV0FBNEIsRUFDN0QsS0FBNkIsRUFDekMsVUFBc0IsRUFDdEIsR0FBc0I7UUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTDJDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzdELFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF0R3BDLHdCQUF3QjtRQUVqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCLHlCQUF5QjtRQUVsQixTQUFJLEdBQUcsVUFBVSxDQUFDO1FBRXpCOzs7Ozs7Ozs7Ozs7Ozs7V0FlRztRQUVJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFeEI7Ozs7OztXQU1HO1FBRUksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQTBDLENBQUM7UUEyRDlFLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBU2pDLENBQUM7SUFFRCx5QkFBeUI7SUFFbEIsT0FBTztRQUNWLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsd0JBQXdCO0lBRWpCLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFFakIsZ0JBQWdCO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCx5QkFBeUI7SUFLbEIsV0FBVyxDQUFDLEtBQVk7UUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQseUJBQXlCO0lBR2xCLEtBQUs7UUFDUixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELHlCQUF5QjtJQUNULGFBQWEsQ0FBQyxLQUFLO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyQyxRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQzdCLEtBQUssT0FBTyxDQUFDO2dCQUNiLEtBQUssVUFBVSxDQUFDO2dCQUNoQixLQUFLLEdBQUcsQ0FBQztnQkFDVCxLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLEtBQUs7b0JBQ04sT0FBTztnQkFDWDtvQkFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7SUFDTCxDQUFDO0lBRUQseUJBQXlCO0lBQ1Qsa0JBQWtCO1FBQzlCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCx5QkFBeUI7SUFDVCxnQkFBZ0I7UUFDNUIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHlCQUF5QjtJQUNULFlBQVk7UUFDeEIsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx5QkFBeUI7SUFDVCxhQUFhO1FBQ3pCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RSxPQUFPO1NBQ1Y7UUFDRCx5RkFBeUY7UUFDekYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixRQUFRO1FBQ1gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ25CLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLEtBQUssRUFBRSxLQUFLO1lBQ1osY0FBYyxFQUFFLElBQUksc0JBQXNCLEVBQUU7WUFDNUMsZ0JBQWdCLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtZQUM1Qyx1QkFBdUIsRUFBRSxDQUFDLGFBQWEsQ0FBQztTQUMzQyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNqQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztpQkFDN0I7cUJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2Y7YUFDSjtpQkFBTTtnQkFDSCxnSEFBZ0g7Z0JBQ2hILHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFTyxNQUFNLENBQUMsS0FBMEI7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyx3RkFBd0Y7UUFDN0csTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQTJDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixxRkFBcUY7UUFDckYsd0dBQXdHO1FBQ3hHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7bUhBN1RRLHdCQUF3QixrQkErSU8sT0FBTyx5Q0FDZixlQUFlO3VHQWhKdEMsd0JBQXdCOztnR0FBeEIsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBZ0pnQixJQUFJOzswQkFBSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLE9BQU87OzBCQUMxQyxJQUFJOzswQkFBSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUMxQyxRQUFRO3FHQW5JTyxNQUFNO3NCQUR6QixLQUFLO3VCQUFDLGlCQUFpQjtnQkE4QmpCLG9CQUFvQjtzQkFEMUIsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBS3pCLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBS3pCLElBQUk7c0JBRFYsV0FBVzt1QkFBQyxXQUFXO2dCQW9CakIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHlCQUF5QjtnQkFXekIsaUJBQWlCO3NCQUR2QixNQUFNO2dCQTBCSSxZQUFZO3NCQUR0QixXQUFXO3VCQUFDLG9CQUFvQjtnQkFPdEIsUUFBUTtzQkFEbEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBT3RCLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU9sQixvQkFBb0I7c0JBRDlCLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU85QixnQkFBZ0I7c0JBRDFCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQXlCOUIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBT2Qsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFTekIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGdCQUFnQjtnQkFVdkIsV0FBVztzQkFKakIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzVDLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoRCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDMUMsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTeEMsS0FBSztzQkFGWCxZQUFZO3VCQUFDLGFBQWE7O3NCQUMxQixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCwgRm9ybUNvbnRyb2xOYW1lIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSxcbiAgICBBdXRvUG9zaXRpb25TdHJhdGVneSxcbiAgICBJUG9zaXRpb25TdHJhdGVneSxcbiAgICBJU2Nyb2xsU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHtcbiAgICBJZ3hEcm9wRG93bkNvbXBvbmVudFxufSBmcm9tICcuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVNlbGVjdGlvbkV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tbW9uJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBlbmNhcHN1bGF0ZXMgb25JdGVtU2VsZWN0aW9uIGV2ZW50IGFyZ3VtZW50cyAtIG5ldyB2YWx1ZSBhbmQgY2FuY2VsIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogTmV3IHZhbHVlIHNlbGVjdGVkIGZyb20gdGhlIGRyb3AgZG93blxuICAgICAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlT3ZlcmxheVNldHRpbmdzIHtcbiAgICAvKiogUG9zaXRpb24gc3RyYXRlZ3kgdG8gdXNlIHdpdGggdGhpcyBzZXR0aW5ncyAqL1xuICAgIHBvc2l0aW9uU3RyYXRlZ3k/OiBJUG9zaXRpb25TdHJhdGVneTtcbiAgICAvKiogU2Nyb2xsIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoaXMgc2V0dGluZ3MgKi9cbiAgICBzY3JvbGxTdHJhdGVneT86IElTY3JvbGxTdHJhdGVneTtcbiAgICAvKiogU2V0IHRoZSBvdXRsZXQgY29udGFpbmVyIHRvIGF0dGFjaCB0aGUgb3ZlcmxheSB0byAqL1xuICAgIG91dGxldD86IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfCBFbGVtZW50UmVmO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIEF1dG9jb21wbGV0ZSoqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9hdXRvY29tcGxldGUuaHRtbClcbiAqXG4gKiBUaGUgaWd4QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBlbmhhbmNlIGEgdGV4dCBpbnB1dFxuICogYnkgc2hvd2luZyBhIGRyb3AgZG93biBvZiBzdWdnZXN0ZWQgb3B0aW9ucywgcHJvdmlkZWQgYnkgdGhlIGRldmVsb3Blci5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgI2F1dG9jb21wbGV0ZVJlZj1cImlneEF1dG9jb21wbGV0ZVwiLz5cbiAqIDxpZ3gtZHJvcC1kb3duICN0b3duc1BhbmVsPlxuICogICAgIDxpZ3gtZHJvcC1kb3duLWl0ZW0gKm5nRm9yPVwibGV0IHRvd24gb2YgdG93bnMgfCBzdGFydHNXaXRoOnRvd25TZWxlY3RlZFwiIFt2YWx1ZV09XCJ0b3duXCI+XG4gKiAgICAgICAgIHt7dG93bn19XG4gKiAgICAgPC9pZ3gtZHJvcC1kb3duLWl0ZW0+XG4gKiA8L2lneC1kcm9wLWRvd24+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4QXV0b2NvbXBsZXRlXScsXG4gICAgZXhwb3J0QXM6ICdpZ3hBdXRvY29tcGxldGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4QXV0b2NvbXBsZXRlRGlyZWN0aXZlIGV4dGVuZHMgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0YXJnZXQgb2YgdGhlIGF1dG9jb21wbGV0ZSBkaXJlY3RpdmVcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCAtLT5cbiAgICAgKiA8aW5wdXQgW2lneEF1dG9jb21wbGV0ZV09XCJkcm9wZG93blwiIC8+XG4gICAgICogLi4uXG4gICAgICogPGlneC1kcm9wLWRvd24gI2Ryb3Bkb3duPlxuICAgICAqIC4uLlxuICAgICAqIDwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZScpXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogSWd4RHJvcERvd25Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0IGFzIElneERyb3BEb3duQ29tcG9uZW50O1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IHRhcmdldCh2OiBJZ3hEcm9wRG93bkNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl90YXJnZXQgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgb3ZlcmxheSBzZXR0aW5ncyBmb3IgdGhlIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgc2V0dGluZ3MgPSB0aGlzLmF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVTZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiIFtpZ3hBdXRvY29tcGxldGVTZXR0aW5nc109XCJzZXR0aW5nc1wiLz5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gc2V0XG4gICAgICogdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgKiAgcG9zaXRpb25TdHJhdGVneTogbmV3IENvbm5lY3RlZFBvc2l0aW9uaW5nU3RyYXRlZ3koe1xuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IG51bGwsXG4gICAgICogICAgICBvcGVuQW5pbWF0aW9uOiBudWxsXG4gICAgICogIH0pXG4gICAgICogfTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZVNldHRpbmdzJylcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlU2V0dGluZ3M6IEF1dG9jb21wbGV0ZU92ZXJsYXlTZXR0aW5ncztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hdXRvY29tcGxldGUnKVxuICAgIHB1YmxpYyBhdXRvZmlsbCA9ICdvZmYnO1xuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdjb21ib2JveCc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIGF1dG9jb21wbGV0ZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgZGlzYWJsZWQgPSB0aGlzLmF1dG9jb21wbGV0ZS5kaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiIFtpZ3hBdXRvY29tcGxldGVEaXNhYmxlZF09XCJkaXNhYmxlZFwiLz5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gc2V0XG4gICAgICogcHVibGljIGRpc2FibGVkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZURpc2FibGVkJylcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgaXRlbSBmcm9tIHRoZSBkcm9wIGRvd24gaXMgc2VsZWN0ZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgaWd4SW5wdXQgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgKHNlbGVjdGlvbkNoYW5naW5nKT0nc2VsZWN0aW9uQ2hhbmdpbmcoJGV2ZW50KScgLz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBwYXJlbnRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB0aGlzLmdyb3VwLmVsZW1lbnQubmF0aXZlRWxlbWVudCA6IHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBzZXR0aW5ncygpOiBPdmVybGF5U2V0dGluZ3Mge1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdFNldHRpbmdzLCB0aGlzLmF1dG9jb21wbGV0ZVNldHRpbmdzKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2V0dGluZ3MudGFyZ2V0IHx8IHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3MudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneUNsb25lOiBJUG9zaXRpb25TdHJhdGVneSA9IHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuY2xvbmUoKTtcbiAgICAgICAgICAgIHNldHRpbmdzLnRhcmdldCA9IHRoaXMucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5Q2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBhcmlhRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJylcbiAgICBwdWJsaWMgZ2V0IGhhc1BvcFVwKCkge1xuICAgICAgICByZXR1cm4gJ2xpc3Rib3gnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vd25zJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFPd25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQubGlzdElkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICBwdWJsaWMgZ2V0IGFyaWFBY3RpdmVEZXNjZW5kYW50KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSA/IHRoaXMudGFyZ2V0LmZvY3VzZWRJdGVtLmlkIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXV0b2NvbXBsZXRlJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFBdXRvY29tcGxldGUoKSB7XG4gICAgICAgIHJldHVybiAnbGlzdCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb21wb3Npbmc6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGlkOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdNb2RlbCB8fCB0aGlzLmZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZEJlT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgZGVmYXVsdFNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3M7XG5cbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoTmdNb2RlbCkgcHJvdGVjdGVkIG5nTW9kZWw6IE5nTW9kZWwsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChGb3JtQ29udHJvbE5hbWUpIHByb3RlY3RlZCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZ3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihudWxsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICAgIHB1YmxpYyBvbklucHV0KCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvblN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvc2luZykge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvbkVuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5UYWInKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uU2hpZnQuVGFiJylcbiAgICBwdWJsaWMgb25UYWIoKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiAhdGhpcy5fY29tcG9zaW5nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlYmFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBjYXNlICdob21lJzpcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgc3VwZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQXJyb3dEb3duS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25BcnJvd0Rvd25LZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkFycm93VXBLZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkFycm93VXBLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkVuZEtleURvd24oKSB7XG4gICAgICAgIHN1cGVyLm9uRW5kS2V5RG93bigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25Ib21lS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25Ib21lS2V5RG93bigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBhdXRvY29tcGxldGUgZHJvcCBkb3duXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICB0aGlzLl9zaG91bGRCZU9wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhdXRvY29tcGxldGUgZHJvcCBkb3duXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuX3Nob3VsZEJlT3BlbiA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBubyBkcm9wLWRvd24gd2lkdGggaXMgc2V0LCB0aGUgZHJvcC1kb3duIHdpbGwgYmUgYXMgd2lkZSBhcyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0O1xuICAgICAgICB0aGlzLnRhcmdldC53aWR0aCA9IHRoaXMudGFyZ2V0LndpZHRoIHx8ICh0aGlzLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGggKyAncHgnKTtcbiAgICAgICAgdGhpcy50YXJnZXQub3Blbih0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzID0ge1xuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRFbGVtZW50LFxuICAgICAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5KCksXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIGV4Y2x1ZGVGcm9tT3V0c2lkZUNsaWNrOiBbdGFyZ2V0RWxlbWVudF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnRhcmdldC5jaGlsZHJlbi5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3Nob3VsZEJlT3Blbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIF9zaG91bGRCZU9wZW4gZmxhZyBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBzaW5jZSB0aGlzIHN0YXRlIGNoYW5nZSBkb2Vzbid0IGNvbWUgZnJvbSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAvLyAobGlrZSBpbiB0aGUgY2FzZSBvZiBwdWJsaWMgQVBJIG9yIHVzZXIgaW50ZXJhY3Rpb24pLlxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhcmdldC5zZWxlY3Rpb25DaGFuZ2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHRoaXMuc2VsZWN0LmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0ID8gdGhpcy50YXJnZXQuY29sbGFwc2VkIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdCh2YWx1ZTogSVNlbGVjdGlvbkV2ZW50QXJncykge1xuICAgICAgICBpZiAoIXZhbHVlLm5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlLmNhbmNlbCA9IHRydWU7IC8vIERpc2FibGUgc2VsZWN0aW9uIGluIHRoZSBkcm9wIGRvd24sIGJlY2F1c2UgaW4gYXV0b2NvbXBsZXRlIHdlIGRvIG5vdCBzYXZlIHNlbGVjdGlvbi5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5uZXdTZWxlY3Rpb24udmFsdWU7XG4gICAgICAgIGNvbnN0IGFyZ3M6IEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0geyB2YWx1ZTogbmV3VmFsdWUsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG1vZGVsIGFmdGVyIHRoZSBpbnB1dCBpcyByZS1mb2N1c2VkLCBpbiBvcmRlciB0byBoYXZlIHByb3BlciB2YWxpZCBzdHlsaW5nLlxuICAgICAgICAvLyBPdGhlcndpc2Ugd2hlbiBpdGVtIGlzIHNlbGVjdGVkIHVzaW5nIG1vdXNlIChhbmQgaW5wdXQgaXMgYmx1cnJlZCksIHRoZW4gdmFsaWQgc3R5bGUgd2lsbCBiZSByZW1vdmVkLlxuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5jb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBSXZCLE1BQU0sMkJBQTJCLENBQUM7QUFJbkMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7QUEwQnBHOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBTUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtDQUFrQztJQUM1RTs7Ozs7Ozs7Ozs7T0FXRztJQUNILElBQ29CLE1BQU07UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBK0IsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBb0IsTUFBTSxDQUFDLENBQXVCO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUErREQsd0JBQXdCO0lBQ3hCLElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxhQUFhO1FBQ3BCLE9B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Vzt1QkFBQyxXQUFXO2dCQW9CakIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHlCQUF5QjtnQkFXekIsaUJBQWlCO3NCQUR2QixNQUFNO2dCQTBCSSxZQUFZO3NCQUR0QixXQUFXO3VCQUFDLG9CQUFvQjtnQkFPdEIsUUFBUTtzQkFEbEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBT3RCLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU9sQixvQkFBb0I7c0JBRDlCLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU85QixnQkFBZ0I7c0JBRDFCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQXlCOUIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBT2Qsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFTekIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGdCQUFnQjtnQkFVdkIsV0FBVztzQkFKakIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzVDLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoRCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDMUMsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTeEMsS0FBSztzQkFGWCxZQUFZO3VCQUFDLGFBQWE7O3NCQUMxQixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCwgRm9ybUNvbnRyb2xOYW1lIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSxcbiAgICBBdXRvUG9zaXRpb25TdHJhdGVneSxcbiAgICBJUG9zaXRpb25TdHJhdGVneSxcbiAgICBJU2Nyb2xsU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHtcbiAgICBJZ3hEcm9wRG93bkNvbXBvbmVudFxufSBmcm9tICcuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVNlbGVjdGlvbkV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tbW9uJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBlbmNhcHN1bGF0ZXMgb25JdGVtU2VsZWN0aW9uIGV2ZW50IGFyZ3VtZW50cyAtIG5ldyB2YWx1ZSBhbmQgY2FuY2VsIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogTmV3IHZhbHVlIHNlbGVjdGVkIGZyb20gdGhlIGRyb3AgZG93blxuICAgICAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlT3ZlcmxheVNldHRpbmdzIHtcbiAgICAvKiogUG9zaXRpb24gc3RyYXRlZ3kgdG8gdXNlIHdpdGggdGhpcyBzZXR0aW5ncyAqL1xuICAgIHBvc2l0aW9uU3RyYXRlZ3k/OiBJUG9zaXRpb25TdHJhdGVneTtcbiAgICAvKiogU2Nyb2xsIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoaXMgc2V0dGluZ3MgKi9cbiAgICBzY3JvbGxTdHJhdGVneT86IElTY3JvbGxTdHJhdGVneTtcbiAgICAvKiogU2V0IHRoZSBvdXRsZXQgY29udGFpbmVyIHRvIGF0dGFjaCB0aGUgb3ZlcmxheSB0byAqL1xuICAgIG91dGxldD86IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfCBFbGVtZW50UmVmO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIEF1dG9jb21wbGV0ZSoqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9hdXRvY29tcGxldGUuaHRtbClcbiAqXG4gKiBUaGUgaWd4QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBlbmhhbmNlIGEgdGV4dCBpbnB1dFxuICogYnkgc2hvd2luZyBhIGRyb3AgZG93biBvZiBzdWdnZXN0ZWQgb3B0aW9ucywgcHJvdmlkZWQgYnkgdGhlIGRldmVsb3Blci5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgI2F1dG9jb21wbGV0ZVJlZj1cImlneEF1dG9jb21wbGV0ZVwiLz5cbiAqIDxpZ3gtZHJvcC1kb3duICN0b3duc1BhbmVsPlxuICogICAgIDxpZ3gtZHJvcC1kb3duLWl0ZW0gKm5nRm9yPVwibGV0IHRvd24gb2YgdG93bnMgfCBzdGFydHNXaXRoOnRvd25TZWxlY3RlZFwiIFt2YWx1ZV09XCJ0b3duXCI+XG4gKiAgICAgICAgIHt7dG93bn19XG4gKiAgICAgPC9pZ3gtZHJvcC1kb3duLWl0ZW0+XG4gKiA8L2lneC1kcm9wLWRvd24+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4QXV0b2NvbXBsZXRlXScsXG4gICAgZXhwb3J0QXM6ICdpZ3hBdXRvY29tcGxldGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4QXV0b2NvbXBsZXRlRGlyZWN0aXZlIGV4dGVuZHMgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0YXJnZXQgb2YgdGhlIGF1dG9jb21wbGV0ZSBkaXJlY3RpdmVcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCAtLT5cbiAgICAgKiA8aW5wdXQgW2lneEF1dG9jb21wbGV0ZV09XCJkcm9wZG93blwiIC8+XG4gICAgICogLi4uXG4gICAgICogPGlneC1kcm9wLWRvd24gI2Ryb3Bkb3duPlxuICAgICAqIC4uLlxuICAgICAqIDwvaWd4LWRyb3AtZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZScpXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogSWd4RHJvcERvd25Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0IGFzIElneERyb3BEb3duQ29tcG9uZW50O1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IHRhcmdldCh2OiBJZ3hEcm9wRG93bkNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl90YXJnZXQgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgb3ZlcmxheSBzZXR0aW5ncyBmb3IgdGhlIGF1dG9jb21wbGV0ZSBkcm9wIGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgc2V0dGluZ3MgPSB0aGlzLmF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVTZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiIFtpZ3hBdXRvY29tcGxldGVTZXR0aW5nc109XCJzZXR0aW5nc1wiLz5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gc2V0XG4gICAgICogdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgKiAgcG9zaXRpb25TdHJhdGVneTogbmV3IENvbm5lY3RlZFBvc2l0aW9uaW5nU3RyYXRlZ3koe1xuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IG51bGwsXG4gICAgICogICAgICBvcGVuQW5pbWF0aW9uOiBudWxsXG4gICAgICogIH0pXG4gICAgICogfTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZVNldHRpbmdzJylcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlU2V0dGluZ3M6IEF1dG9jb21wbGV0ZU92ZXJsYXlTZXR0aW5ncztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hdXRvY29tcGxldGUnKVxuICAgIHB1YmxpYyBhdXRvZmlsbCA9ICdvZmYnO1xuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdjb21ib2JveCc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIGF1dG9jb21wbGV0ZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgZGlzYWJsZWQgPSB0aGlzLmF1dG9jb21wbGV0ZS5kaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZ3hBdXRvY29tcGxldGVdPVwidG93bnNQYW5lbFwiIFtpZ3hBdXRvY29tcGxldGVEaXNhYmxlZF09XCJkaXNhYmxlZFwiLz5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gc2V0XG4gICAgICogcHVibGljIGRpc2FibGVkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEF1dG9jb21wbGV0ZURpc2FibGVkJylcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgaXRlbSBmcm9tIHRoZSBkcm9wIGRvd24gaXMgc2VsZWN0ZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgaWd4SW5wdXQgW2lneEF1dG9jb21wbGV0ZV09XCJ0b3duc1BhbmVsXCIgKHNlbGVjdGlvbkNoYW5naW5nKT0nc2VsZWN0aW9uQ2hhbmdpbmcoJGV2ZW50KScgLz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBwYXJlbnRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB0aGlzLmdyb3VwLmVsZW1lbnQubmF0aXZlRWxlbWVudCA6IHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBzZXR0aW5ncygpOiBPdmVybGF5U2V0dGluZ3Mge1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdFNldHRpbmdzLCB0aGlzLmF1dG9jb21wbGV0ZVNldHRpbmdzKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2V0dGluZ3MudGFyZ2V0IHx8IHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuc2V0dGluZ3MudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneUNsb25lOiBJUG9zaXRpb25TdHJhdGVneSA9IHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kuY2xvbmUoKTtcbiAgICAgICAgICAgIHNldHRpbmdzLnRhcmdldCA9IHRoaXMucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIHNldHRpbmdzLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5Q2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBhcmlhRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJylcbiAgICBwdWJsaWMgZ2V0IGhhc1BvcFVwKCkge1xuICAgICAgICByZXR1cm4gJ2xpc3Rib3gnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vd25zJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFPd25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQubGlzdElkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICBwdWJsaWMgZ2V0IGFyaWFBY3RpdmVEZXNjZW5kYW50KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSA/IHRoaXMudGFyZ2V0LmZvY3VzZWRJdGVtLmlkIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXV0b2NvbXBsZXRlJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFBdXRvY29tcGxldGUoKSB7XG4gICAgICAgIHJldHVybiAnbGlzdCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb21wb3Npbmc6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGlkOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdNb2RlbCB8fCB0aGlzLmZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZEJlT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgZGVmYXVsdFNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3M7XG5cbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoTmdNb2RlbCkgcHJvdGVjdGVkIG5nTW9kZWw6IE5nTW9kZWwsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChGb3JtQ29udHJvbE5hbWUpIHByb3RlY3RlZCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZ3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihudWxsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICAgIHB1YmxpYyBvbklucHV0KCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvblN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvc2luZykge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvbkVuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5UYWInKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uU2hpZnQuVGFiJylcbiAgICBwdWJsaWMgb25UYWIoKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiAhdGhpcy5fY29tcG9zaW5nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlYmFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBjYXNlICdob21lJzpcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgc3VwZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgQGludGVybmFsICovXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQXJyb3dEb3duS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25BcnJvd0Rvd25LZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkFycm93VXBLZXlEb3duKCkge1xuICAgICAgICBzdXBlci5vbkFycm93VXBLZXlEb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBvbkVuZEtleURvd24oKSB7XG4gICAgICAgIHN1cGVyLm9uRW5kS2V5RG93bigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25Ib21lS2V5RG93bigpIHtcbiAgICAgICAgc3VwZXIub25Ib21lS2V5RG93bigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBhdXRvY29tcGxldGUgZHJvcCBkb3duXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICB0aGlzLl9zaG91bGRCZU9wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhdXRvY29tcGxldGUgZHJvcCBkb3duXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuX3Nob3VsZEJlT3BlbiA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBubyBkcm9wLWRvd24gd2lkdGggaXMgc2V0LCB0aGUgZHJvcC1kb3duIHdpbGwgYmUgYXMgd2lkZSBhcyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0O1xuICAgICAgICB0aGlzLnRhcmdldC53aWR0aCA9IHRoaXMudGFyZ2V0LndpZHRoIHx8ICh0aGlzLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGggKyAncHgnKTtcbiAgICAgICAgdGhpcy50YXJnZXQub3Blbih0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzID0ge1xuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRFbGVtZW50LFxuICAgICAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5KCksXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIGV4Y2x1ZGVGcm9tT3V0c2lkZUNsaWNrOiBbdGFyZ2V0RWxlbWVudF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnRhcmdldC5jaGlsZHJlbi5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3Nob3VsZEJlT3Blbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIF9zaG91bGRCZU9wZW4gZmxhZyBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCBzaW5jZSB0aGlzIHN0YXRlIGNoYW5nZSBkb2Vzbid0IGNvbWUgZnJvbSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAvLyAobGlrZSBpbiB0aGUgY2FzZSBvZiBwdWJsaWMgQVBJIG9yIHVzZXIgaW50ZXJhY3Rpb24pLlxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhcmdldC5zZWxlY3Rpb25DaGFuZ2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHRoaXMuc2VsZWN0LmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0ID8gdGhpcy50YXJnZXQuY29sbGFwc2VkIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdCh2YWx1ZTogSVNlbGVjdGlvbkV2ZW50QXJncykge1xuICAgICAgICBpZiAoIXZhbHVlLm5ld1NlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlLmNhbmNlbCA9IHRydWU7IC8vIERpc2FibGUgc2VsZWN0aW9uIGluIHRoZSBkcm9wIGRvd24sIGJlY2F1c2UgaW4gYXV0b2NvbXBsZXRlIHdlIGRvIG5vdCBzYXZlIHNlbGVjdGlvbi5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5uZXdTZWxlY3Rpb24udmFsdWU7XG4gICAgICAgIGNvbnN0IGFyZ3M6IEF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0geyB2YWx1ZTogbmV3VmFsdWUsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG1vZGVsIGFmdGVyIHRoZSBpbnB1dCBpcyByZS1mb2N1c2VkLCBpbiBvcmRlciB0byBoYXZlIHByb3BlciB2YWxpZCBzdHlsaW5nLlxuICAgICAgICAvLyBPdGhlcndpc2Ugd2hlbiBpdGVtIGlzIHNlbGVjdGVkIHVzaW5nIG1vdXNlIChhbmQgaW5wdXQgaXMgYmx1cnJlZCksIHRoZW4gdmFsaWQgc3R5bGUgd2lsbCBiZSByZW1vdmVkLlxuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5jb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0uZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -6,15 +6,15 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
7
7
|
*/
|
|
8
8
|
export class IgxAutocompleteModule {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0
|
|
11
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteModule, imports: [IgxAutocompleteDirective], exports: [IgxAutocompleteDirective] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteModule }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAutocompleteModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
imports: [IgxAutocompleteDirective],
|
|
17
17
|
exports: [IgxAutocompleteDirective]
|
|
18
18
|
}]
|
|
19
19
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRXBFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7OEdBQXJCLHFCQUFxQjsrR0FBckIscUJBQXFCLFlBSHBCLHdCQUF3QixhQUN4Qix3QkFBd0I7K0dBRXpCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFKakMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICogSU1QT1JUQU5UOiBUaGUgZm9sbG93aW5nIGlzIE5nTW9kdWxlIGV4cG9ydGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBiZWZvcmUgc3RhbmRhbG9uZSBjb21wb25lbnRzXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0lneEF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneEF1dG9jb21wbGV0ZURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QXV0b2NvbXBsZXRlTW9kdWxlIHsgfVxuIl19
|
|
@@ -245,10 +245,10 @@ export class IgxButtonDirective extends DisplayDensityBase {
|
|
|
245
245
|
deselect() {
|
|
246
246
|
this._selected = false;
|
|
247
247
|
}
|
|
248
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0
|
|
249
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0
|
|
248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DisplayDensityToken, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
249
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxButtonDirective, isStandalone: true, selector: "[igxButton]", inputs: { selected: "selected", type: ["igxButton", "type"], color: ["igxButtonColor", "color"], background: ["igxButtonBackground", "background"], label: ["igxLabel", "label"], disabled: "disabled" }, outputs: { buttonClick: "buttonClick", buttonSelected: "buttonSelected" }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.role": "this.role", "class.igx-button": "this._cssClass", "class.igx-button--disabled": "this.disabled", "class.igx-button--flat": "this.flat", "class.igx-button--raised": "this.raised", "class.igx-button--outlined": "this.outlined", "class.igx-button--icon": "this.icon", "class.igx-button--fab": "this.fab", "class.igx-button--cosy": "this.cosy", "class.igx-button--compact": "this.compact", "attr.disabled": "this.disabledAttribute" } }, usesInheritance: true, ngImport: i0 }); }
|
|
250
250
|
}
|
|
251
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxButtonDirective, decorators: [{
|
|
252
252
|
type: Directive,
|
|
253
253
|
args: [{
|
|
254
254
|
selector: '[igxButton]',
|
|
@@ -316,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
|
|
|
316
316
|
type: HostBinding,
|
|
317
317
|
args: ['attr.disabled']
|
|
318
318
|
}] } });
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksRUFDWixRQUFRLEVBQ1IsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMEIsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUcxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDekIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0NBQ2IsQ0FBQyxDQUFDO0FBT0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUtILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxrQkFBa0I7SUF1RXREOzs7Ozs7OztPQVFHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUM5QixJQUFHLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3pCLElBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDckIsTUFBTSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUks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QVc7c0JBRGpCLE1BQU07Z0JBT0EsY0FBYztzQkFEcEIsTUFBTTtnQkFhQSxJQUFJO3NCQURWLFdBQVc7dUJBQUMsV0FBVztnQkFRakIsU0FBUztzQkFEZixXQUFXO3VCQUFDLGtCQUFrQjtnQkFpRHBCLFFBQVE7c0JBRGxCLEtBQUs7Z0JBOEJDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJ0QixJQUFJO3NCQURkLEtBQUs7dUJBQUMsV0FBVztnQkFpQlAsS0FBSztzQkFEZixLQUFLO3VCQUFDLGdCQUFnQjtnQkFlWixVQUFVO3NCQURwQixLQUFLO3VCQUFDLHFCQUFxQjtnQkFlakIsS0FBSztzQkFEZixLQUFLO3VCQUFDLFVBQVU7Z0JBZ0JOLFFBQVE7c0JBRmxCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsNEJBQTRCO2dCQXNCOUIsSUFBSTtzQkFEZCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFVMUIsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQywwQkFBMEI7Z0JBVTVCLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsNEJBQTRCO2dCQVU5QixJQUFJO3NCQURkLFdBQVc7dUJBQUMsd0JBQXdCO2dCQVUxQixHQUFHO3NCQURiLFdBQVc7dUJBQUMsdUJBQXVCO2dCQVV6QixJQUFJO3NCQURkLFdBQVc7dUJBQUMsd0JBQXdCO2dCQVUxQixPQUFPO3NCQURqQixXQUFXO3VCQUFDLDJCQUEyQjtnQkFVN0IsaUJBQWlCO3NCQUQzQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eUJhc2UsIERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsIERpc3BsYXlEZW5zaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuY29uc3QgSWd4QnV0dG9uVHlwZSA9IG1rZW51bSh7XG4gICAgRmxhdDogJ2ZsYXQnLFxuICAgIFJhaXNlZDogJ3JhaXNlZCcsXG4gICAgT3V0bGluZWQ6ICdvdXRsaW5lZCcsXG4gICAgSWNvbjogJ2ljb24nLFxuICAgIEZBQjogJ2ZhYidcbn0pO1xuXG4vKipcbiAqIERldGVybWluZXMgdGhlIEJ1dHRvbiB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBJZ3hCdXR0b25UeXBlID0gdHlwZW9mIElneEJ1dHRvblR5cGVba2V5b2YgdHlwZW9mIElneEJ1dHRvblR5cGVdO1xuXG4vKipcbiAqIFRoZSBCdXR0b24gZGlyZWN0aXZlIHByb3ZpZGVzIHRoZSBJZ25pdGUgVUkgQnV0dG9uIGZ1bmN0aW9uYWxpdHkgdG8gZXZlcnkgY29tcG9uZW50IHRoYXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgYnV0dG9uLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4QnV0dG9uTW9kdWxlXG4gKlxuICogQGlneFBhcmVudCBEYXRhIEVudHJ5ICYgRGlzcGxheVxuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtYnV0dG9uLXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIGJ1dHRvbiwgc3BhbiwgZGl2LCBjbGlja1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIEJ1dHRvbiBkaXJlY3RpdmUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBhbnkgYnV0dG9uLCBzcGFuIG9yIGRpdiBhbmQgdHVybiBpdCBpbnRvIGEgZnVsbHkgZnVuY3Rpb25hbCBidXR0b24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gaWd4QnV0dG9uPVwib3V0bGluZWRcIj5BIEJ1dHRvbjwvYnV0dG9uPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEJ1dHRvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4QnV0dG9uRGlyZWN0aXZlIGV4dGVuZHMgRGlzcGxheURlbnNpdHlCYXNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV90eXBlOiBJZ3hCdXR0b25UeXBlIHwgJyc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCAnJztcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGJ1dHRvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQnV0dG9uRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5idXR0b24ucm9sZSA9ICduYXZidXR0b24nO1xuICAgICAqIGxldCBidXR0b25Sb2xlID0gdGhpcy5idXR0b24ucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIHJvbGUgPSAnYnV0dG9uJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24nKVxuICAgIHB1YmxpYyBfY3NzQ2xhc3MgPSAnaWd4LWJ1dHRvbic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3R5cGU6IElneEJ1dHRvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX2JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cImZsYXRcIiBbc2VsZWN0ZWRdPVwiYnV0dG9uLnNlbGVjdGVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmKHRoaXMuX3NlbGVjdGVkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgaWYoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25TZWxlY3RlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiB0aGlzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9kaXNwbGF5RGVuc2l0eU9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXY6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGV2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHR5cGUgb2YgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiaWNvblwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uJylcbiAgICBwdWJsaWMgc2V0IHR5cGUodHlwZTogSWd4QnV0dG9uVHlwZSkge1xuICAgICAgICBjb25zdCB0ID0gdHlwZSA/IHR5cGUgOiBJZ3hCdXR0b25UeXBlLkZsYXQ7XG4gICAgICAgIGlmICh0aGlzLl90eXBlICE9PSB0KSB7XG4gICAgICAgICAgICB0aGlzLl90eXBlID0gdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJ1dHRvbiB0ZXh0IGNvbG9yLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b24gaWd4QnV0dG9uQ29sb3I9XCJvcmFuZ2VcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEJ1dHRvbkNvbG9yJylcbiAgICBwdWJsaWMgc2V0IGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY29sb3IgPSB2YWx1ZSB8fCB0aGlzLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgdGhpcy5fY29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwicmVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJylcbiAgICBwdWJsaWMgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqICBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b249XCJmbGF0XCIgaWd4TGFiZWw9XCJMYWJlbFwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4TGFiZWwnKVxuICAgIHB1YmxpYyBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbHVlIHx8IHRoaXMuX2xhYmVsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAnYXJpYS1sYWJlbCcsIHRoaXMuX2xhYmVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBidXR0b247XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBkaXNhYmxlZCA9IHRoaXMuYnV0dG9uLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZhYlwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAodmFsIGFzIGFueSA9PT0gJycpIHx8IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1mbGF0JylcbiAgICBwdWJsaWMgZ2V0IGZsYXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSBJZ3hCdXR0b25UeXBlLkZsYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tcmFpc2VkJylcbiAgICBwdWJsaWMgZ2V0IHJhaXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgPT09IElneEJ1dHRvblR5cGUuUmFpc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLW91dGxpbmVkJylcbiAgICBwdWJsaWMgZ2V0IG91dGxpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gSWd4QnV0dG9uVHlwZS5PdXRsaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1pY29uJylcbiAgICBwdWJsaWMgZ2V0IGljb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSBJZ3hCdXR0b25UeXBlLkljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tZmFiJylcbiAgICBwdWJsaWMgZ2V0IGZhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgPT09IElneEJ1dHRvblR5cGUuRkFCO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY29zeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvc3k7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29tcGFjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPyB0aGlzLl9kaXNhYmxlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCdXR0b25FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgYnV0dG9uOiBJZ3hCdXR0b25EaXJlY3RpdmU7XG59XG5cbi8qKlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuXG4iXX0=
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksRUFDWixRQUFRLEVBQ1IsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMEIsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUcxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDekIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0NBQ2IsQ0FBQyxDQUFDO0FBT0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUtILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxrQkFBa0I7SUF1RXREOzs7Ozs7OztPQVFHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUM5QixJQUFHLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3pCLElBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDckIsTUFBTSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUks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QVc7c0JBRGpCLE1BQU07Z0JBT0EsY0FBYztzQkFEcEIsTUFBTTtnQkFhQSxJQUFJO3NCQURWLFdBQVc7dUJBQUMsV0FBVztnQkFRakIsU0FBUztzQkFEZixXQUFXO3VCQUFDLGtCQUFrQjtnQkFpRHBCLFFBQVE7c0JBRGxCLEtBQUs7Z0JBOEJDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJ0QixJQUFJO3NCQURkLEtBQUs7dUJBQUMsV0FBVztnQkFpQlAsS0FBSztzQkFEZixLQUFLO3VCQUFDLGdCQUFnQjtnQkFlWixVQUFVO3NCQURwQixLQUFLO3VCQUFDLHFCQUFxQjtnQkFlakIsS0FBSztzQkFEZixLQUFLO3VCQUFDLFVBQVU7Z0JBZ0JOLFFBQVE7c0JBRmxCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsNEJBQTRCO2dCQXNCOUIsSUFBSTtzQkFEZCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFVMUIsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQywwQkFBMEI7Z0JBVTVCLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsNEJBQTRCO2dCQVU5QixJQUFJO3NCQURkLFdBQVc7dUJBQUMsd0JBQXdCO2dCQVUxQixHQUFHO3NCQURiLFdBQVc7dUJBQUMsdUJBQXVCO2dCQVV6QixJQUFJO3NCQURkLFdBQVc7dUJBQUMsd0JBQXdCO2dCQVUxQixPQUFPO3NCQURqQixXQUFXO3VCQUFDLDJCQUEyQjtnQkFVN0IsaUJBQWlCO3NCQUQzQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eUJhc2UsIERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsIERpc3BsYXlEZW5zaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuY29uc3QgSWd4QnV0dG9uVHlwZSA9IG1rZW51bSh7XG4gICAgRmxhdDogJ2ZsYXQnLFxuICAgIFJhaXNlZDogJ3JhaXNlZCcsXG4gICAgT3V0bGluZWQ6ICdvdXRsaW5lZCcsXG4gICAgSWNvbjogJ2ljb24nLFxuICAgIEZBQjogJ2ZhYidcbn0pO1xuXG4vKipcbiAqIERldGVybWluZXMgdGhlIEJ1dHRvbiB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBJZ3hCdXR0b25UeXBlID0gdHlwZW9mIElneEJ1dHRvblR5cGVba2V5b2YgdHlwZW9mIElneEJ1dHRvblR5cGVdO1xuXG4vKipcbiAqIFRoZSBCdXR0b24gZGlyZWN0aXZlIHByb3ZpZGVzIHRoZSBJZ25pdGUgVUkgQnV0dG9uIGZ1bmN0aW9uYWxpdHkgdG8gZXZlcnkgY29tcG9uZW50IHRoYXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgYnV0dG9uLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4QnV0dG9uTW9kdWxlXG4gKlxuICogQGlneFBhcmVudCBEYXRhIEVudHJ5ICYgRGlzcGxheVxuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtYnV0dG9uLXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIGJ1dHRvbiwgc3BhbiwgZGl2LCBjbGlja1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIEJ1dHRvbiBkaXJlY3RpdmUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBhbnkgYnV0dG9uLCBzcGFuIG9yIGRpdiBhbmQgdHVybiBpdCBpbnRvIGEgZnVsbHkgZnVuY3Rpb25hbCBidXR0b24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gaWd4QnV0dG9uPVwib3V0bGluZWRcIj5BIEJ1dHRvbjwvYnV0dG9uPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEJ1dHRvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4QnV0dG9uRGlyZWN0aXZlIGV4dGVuZHMgRGlzcGxheURlbnNpdHlCYXNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV90eXBlOiBJZ3hCdXR0b25UeXBlIHwgJyc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IGJvb2xlYW4gfCAnJztcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGJ1dHRvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQnV0dG9uRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5idXR0b24ucm9sZSA9ICduYXZidXR0b24nO1xuICAgICAqIGxldCBidXR0b25Sb2xlID0gdGhpcy5idXR0b24ucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIHJvbGUgPSAnYnV0dG9uJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24nKVxuICAgIHB1YmxpYyBfY3NzQ2xhc3MgPSAnaWd4LWJ1dHRvbic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3R5cGU6IElneEJ1dHRvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX2JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cImZsYXRcIiBbc2VsZWN0ZWRdPVwiYnV0dG9uLnNlbGVjdGVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmKHRoaXMuX3NlbGVjdGVkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgaWYoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25TZWxlY3RlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiB0aGlzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9kaXNwbGF5RGVuc2l0eU9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXY6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGV2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHR5cGUgb2YgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiaWNvblwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uJylcbiAgICBwdWJsaWMgc2V0IHR5cGUodHlwZTogSWd4QnV0dG9uVHlwZSkge1xuICAgICAgICBjb25zdCB0ID0gdHlwZSA/IHR5cGUgOiBJZ3hCdXR0b25UeXBlLkZsYXQ7XG4gICAgICAgIGlmICh0aGlzLl90eXBlICE9PSB0KSB7XG4gICAgICAgICAgICB0aGlzLl90eXBlID0gdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJ1dHRvbiB0ZXh0IGNvbG9yLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b24gaWd4QnV0dG9uQ29sb3I9XCJvcmFuZ2VcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEJ1dHRvbkNvbG9yJylcbiAgICBwdWJsaWMgc2V0IGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY29sb3IgPSB2YWx1ZSB8fCB0aGlzLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgdGhpcy5fY29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwicmVkXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJylcbiAgICBwdWJsaWMgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqICBgYGBodG1sXG4gICAgICogPGJ1dHRvbiBpZ3hCdXR0b249XCJmbGF0XCIgaWd4TGFiZWw9XCJMYWJlbFwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4TGFiZWwnKVxuICAgIHB1YmxpYyBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbHVlIHx8IHRoaXMuX2xhYmVsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAnYXJpYS1sYWJlbCcsIHRoaXMuX2xhYmVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBidXR0b247XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBkaXNhYmxlZCA9IHRoaXMuYnV0dG9uLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZhYlwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAodmFsIGFzIGFueSA9PT0gJycpIHx8IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1mbGF0JylcbiAgICBwdWJsaWMgZ2V0IGZsYXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSBJZ3hCdXR0b25UeXBlLkZsYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tcmFpc2VkJylcbiAgICBwdWJsaWMgZ2V0IHJhaXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgPT09IElneEJ1dHRvblR5cGUuUmFpc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLW91dGxpbmVkJylcbiAgICBwdWJsaWMgZ2V0IG91dGxpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gSWd4QnV0dG9uVHlwZS5PdXRsaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYnV0dG9uLS1pY29uJylcbiAgICBwdWJsaWMgZ2V0IGljb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSBJZ3hCdXR0b25UeXBlLkljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tZmFiJylcbiAgICBwdWJsaWMgZ2V0IGZhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgPT09IElneEJ1dHRvblR5cGUuRkFCO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1idXR0b24tLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY29zeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheURlbnNpdHkgPT09IERpc3BsYXlEZW5zaXR5LmNvc3k7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWJ1dHRvbi0tY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGVuc2l0eSA9PT0gRGlzcGxheURlbnNpdHkuY29tcGFjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPyB0aGlzLl9kaXNhYmxlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCdXR0b25FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgYnV0dG9uOiBJZ3hCdXR0b25EaXJlY3RpdmU7XG59XG5cbi8qKlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuXG4iXX0=
|