igniteui-angular 17.0.0-alpha.2 → 17.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/accordion/accordion.component.mjs +8 -7
- package/esm2022/lib/accordion/accordion.module.mjs +4 -4
- package/esm2022/lib/action-strip/action-strip.component.mjs +21 -25
- package/esm2022/lib/action-strip/action-strip.module.mjs +4 -4
- package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +7 -6
- package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +7 -6
- package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +13 -9
- package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.module.mjs +4 -4
- package/esm2022/lib/badge/badge.component.mjs +3 -3
- package/esm2022/lib/badge/badge.module.mjs +4 -4
- package/esm2022/lib/banner/banner.component.mjs +3 -3
- package/esm2022/lib/banner/banner.directives.mjs +3 -3
- package/esm2022/lib/banner/banner.module.mjs +4 -4
- package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +7 -6
- package/esm2022/lib/buttonGroup/buttongroup.module.mjs +4 -4
- package/esm2022/lib/calendar/calendar-base.mjs +8 -9
- package/esm2022/lib/calendar/calendar.component.mjs +11 -8
- package/esm2022/lib/calendar/calendar.directives.mjs +15 -15
- package/esm2022/lib/calendar/calendar.module.mjs +4 -4
- package/esm2022/lib/calendar/days-view/day-item.component.mjs +13 -9
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +9 -7
- package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +3 -3
- package/esm2022/lib/calendar/months-view/months-view.component.mjs +7 -6
- package/esm2022/lib/calendar/months-view.pipe.mjs +6 -6
- package/esm2022/lib/calendar/years-view/years-view.component.mjs +10 -9
- package/esm2022/lib/card/card.component.mjs +37 -33
- package/esm2022/lib/card/card.module.mjs +4 -4
- package/esm2022/lib/carousel/carousel.component.mjs +18 -13
- package/esm2022/lib/carousel/carousel.directives.mjs +9 -9
- package/esm2022/lib/carousel/carousel.module.mjs +4 -4
- package/esm2022/lib/carousel/slide.component.mjs +10 -8
- package/esm2022/lib/checkbox/checkbox.component.mjs +52 -64
- package/esm2022/lib/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/lib/chips/chip.component.mjs +19 -12
- package/esm2022/lib/chips/chips-area.component.mjs +3 -3
- package/esm2022/lib/chips/chips.module.mjs +4 -4
- package/esm2022/lib/combo/combo-add-item.component.mjs +3 -3
- package/esm2022/lib/combo/combo-dropdown.component.mjs +7 -6
- package/esm2022/lib/combo/combo-item.component.mjs +7 -6
- package/esm2022/lib/combo/combo.api.mjs +3 -3
- package/esm2022/lib/combo/combo.common.mjs +27 -38
- package/esm2022/lib/combo/combo.component.mjs +28 -27
- package/esm2022/lib/combo/combo.directives.mjs +24 -24
- package/esm2022/lib/combo/combo.module.mjs +4 -4
- package/esm2022/lib/combo/combo.pipes.mjs +6 -6
- package/esm2022/lib/core/density.mjs +3 -3
- package/esm2022/lib/core/navigation/directives.mjs +6 -6
- package/esm2022/lib/core/navigation/nav.service.mjs +3 -3
- package/esm2022/lib/core/selection.mjs +3 -3
- package/esm2022/lib/core/touch.mjs +3 -3
- package/esm2022/lib/core/utils.mjs +3 -3
- package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +3 -3
- package/esm2022/lib/date-common/picker-base.directive.mjs +7 -6
- package/esm2022/lib/date-common/picker-icons.common.mjs +9 -9
- package/esm2022/lib/date-picker/date-picker.component.mjs +13 -9
- package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +15 -15
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +9 -7
- package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
- package/esm2022/lib/dialog/dialog.component.mjs +17 -12
- package/esm2022/lib/dialog/dialog.directives.mjs +6 -6
- package/esm2022/lib/dialog/dialog.module.mjs +4 -4
- package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +6 -6
- package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +4 -4
- package/esm2022/lib/directives/button/button.directive.mjs +19 -35
- package/esm2022/lib/directives/button/button.module.mjs +4 -4
- package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +7 -6
- package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +4 -4
- package/esm2022/lib/directives/divider/divider.directive.mjs +9 -7
- package/esm2022/lib/directives/divider/divider.module.mjs +4 -4
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +16 -15
- package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +4 -4
- package/esm2022/lib/directives/filter/filter.directive.mjs +6 -6
- package/esm2022/lib/directives/filter/filter.module.mjs +4 -4
- package/esm2022/lib/directives/focus/focus.directive.mjs +6 -6
- package/esm2022/lib/directives/focus/focus.module.mjs +4 -4
- package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +6 -6
- package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +4 -4
- package/esm2022/lib/directives/for-of/base.helper.component.mjs +3 -3
- package/esm2022/lib/directives/for-of/display.container.mjs +3 -3
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +12 -10
- package/esm2022/lib/directives/for-of/for_of.module.mjs +4 -4
- package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -6
- package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
- package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +3 -3
- package/esm2022/lib/directives/form-control/form-control.directive.mjs +3 -3
- package/esm2022/lib/directives/form-control/form-control.module.mjs +4 -4
- package/esm2022/lib/directives/hint/hint.directive.mjs +3 -3
- package/esm2022/lib/directives/input/input.directive.mjs +11 -9
- package/esm2022/lib/directives/label/label.directive.mjs +3 -3
- package/esm2022/lib/directives/layout/layout.directive.mjs +9 -9
- package/esm2022/lib/directives/layout/layout.module.mjs +4 -4
- package/esm2022/lib/directives/mask/mask-parsing.service.mjs +3 -3
- package/esm2022/lib/directives/mask/mask.directive.mjs +7 -6
- package/esm2022/lib/directives/mask/mask.module.mjs +4 -4
- package/esm2022/lib/directives/notification/notifications.directive.mjs +9 -7
- package/esm2022/lib/directives/prefix/prefix.directive.mjs +3 -3
- package/esm2022/lib/directives/radio/radio-group.directive.mjs +11 -9
- package/esm2022/lib/directives/radio/radio-group.module.mjs +4 -4
- package/esm2022/lib/directives/ripple/ripple.directive.mjs +7 -7
- package/esm2022/lib/directives/ripple/ripple.module.mjs +4 -4
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +3 -3
- package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +4 -4
- package/esm2022/lib/directives/suffix/suffix.directive.mjs +3 -3
- package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +3 -3
- package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +3 -3
- package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +4 -4
- package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +26 -46
- package/esm2022/lib/directives/text-selection/text-selection.module.mjs +4 -4
- package/esm2022/lib/directives/toggle/toggle.directive.mjs +9 -9
- package/esm2022/lib/directives/toggle/toggle.module.mjs +4 -4
- package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +6 -6
- package/esm2022/lib/directives/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +3 -3
- package/esm2022/lib/directives/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/lib/drop-down/drop-down-group.component.mjs +7 -6
- package/esm2022/lib/drop-down/drop-down-item.base.mjs +11 -8
- package/esm2022/lib/drop-down/drop-down-item.component.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.base.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.component.mjs +7 -6
- package/esm2022/lib/drop-down/drop-down.module.mjs +4 -4
- package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +7 -6
- package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +3 -3
- package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +7 -6
- package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
- package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +4 -4
- package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +3 -3
- package/esm2022/lib/grids/api.service.mjs +3 -3
- package/esm2022/lib/grids/cell.component.mjs +7 -6
- package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
- package/esm2022/lib/grids/column-actions/column-actions.component.mjs +16 -15
- package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
- package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
- package/esm2022/lib/grids/columns/column-group.component.mjs +13 -9
- package/esm2022/lib/grids/columns/column-layout.component.mjs +7 -6
- package/esm2022/lib/grids/columns/column.component.mjs +37 -21
- package/esm2022/lib/grids/columns/templates.directive.mjs +24 -24
- package/esm2022/lib/grids/columns/validators.directive.mjs +21 -21
- package/esm2022/lib/grids/common/crud.service.mjs +3 -3
- package/esm2022/lib/grids/common/pipes.mjs +54 -54
- package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +9 -9
- package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +11 -8
- package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -6
- package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
- package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +5 -5
- package/esm2022/lib/grids/grid/expandable-cell.component.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-row.component.mjs +3 -3
- package/esm2022/lib/grids/grid/grid-validation.service.mjs +3 -3
- package/esm2022/lib/grids/grid/grid.component.mjs +11 -8
- package/esm2022/lib/grids/grid/grid.details.pipe.mjs +3 -3
- package/esm2022/lib/grids/grid/grid.module.mjs +4 -4
- package/esm2022/lib/grids/grid/grid.pipes.mjs +12 -12
- package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +3 -3
- package/esm2022/lib/grids/grid/groupby-row.component.mjs +3 -3
- package/esm2022/lib/grids/grid-base.directive.mjs +33 -19
- package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
- package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/grid.common.mjs +3 -3
- package/esm2022/lib/grids/grid.directives.mjs +33 -33
- package/esm2022/lib/grids/grid.rowEdit.directive.mjs +15 -15
- package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
- package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +6 -6
- package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +8 -7
- package/esm2022/lib/grids/headers/grid-header-group.component.mjs +3 -3
- package/esm2022/lib/grids/headers/grid-header-row.component.mjs +14 -7
- package/esm2022/lib/grids/headers/grid-header.component.mjs +3 -3
- package/esm2022/lib/grids/headers/pipes.mjs +9 -9
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +7 -6
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +11 -10
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
- package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +7 -6
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
- package/esm2022/lib/grids/moving/moving.drop.directive.mjs +3 -3
- package/esm2022/lib/grids/moving/moving.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +13 -9
- package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +25 -15
- package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +4 -4
- package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +30 -30
- package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +3 -3
- package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizer.directive.mjs +3 -3
- package/esm2022/lib/grids/resizing/resizing.service.mjs +3 -3
- package/esm2022/lib/grids/row-drag.directive.mjs +9 -9
- package/esm2022/lib/grids/row.directive.mjs +7 -6
- package/esm2022/lib/grids/selection/drag-select.directive.mjs +6 -6
- package/esm2022/lib/grids/selection/row-selectors.mjs +9 -9
- package/esm2022/lib/grids/selection/selection.service.mjs +3 -3
- package/esm2022/lib/grids/state.directive.mjs +3 -3
- package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
- package/esm2022/lib/grids/summaries/grid-summary.service.mjs +10 -8
- package/esm2022/lib/grids/summaries/summary-cell.component.mjs +7 -6
- package/esm2022/lib/grids/summaries/summary-row.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/common.mjs +15 -15
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +9 -7
- package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +16 -11
- package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +7 -6
- package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +7 -6
- package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
- package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
- package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
- package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +6 -6
- package/esm2022/lib/icon/icon.module.mjs +4 -4
- package/esm2022/lib/icon/icon.service.mjs +3 -3
- package/esm2022/lib/input-group/input-group.component.mjs +7 -6
- package/esm2022/lib/input-group/input-group.module.mjs +4 -4
- package/esm2022/lib/list/list-item.component.mjs +9 -7
- package/esm2022/lib/list/list.common.mjs +15 -15
- package/esm2022/lib/list/list.component.mjs +26 -23
- package/esm2022/lib/list/list.module.mjs +4 -4
- package/esm2022/lib/navbar/navbar.component.mjs +13 -12
- package/esm2022/lib/navbar/navbar.module.mjs +4 -4
- package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +13 -9
- package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +13 -13
- package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
- package/esm2022/lib/paginator/paginator-interfaces.mjs +3 -3
- package/esm2022/lib/paginator/paginator.component.mjs +12 -12
- package/esm2022/lib/paginator/paginator.module.mjs +4 -4
- package/esm2022/lib/progressbar/progressbar.common.mjs +6 -6
- package/esm2022/lib/progressbar/progressbar.component.mjs +23 -17
- package/esm2022/lib/progressbar/progressbar.module.mjs +4 -4
- package/esm2022/lib/query-builder/query-builder-header.component.mjs +7 -6
- package/esm2022/lib/query-builder/query-builder.component.mjs +6 -6
- package/esm2022/lib/query-builder/query-builder.module.mjs +4 -4
- package/esm2022/lib/radio/radio.component.mjs +37 -44
- package/esm2022/lib/select/select-group.component.mjs +3 -3
- package/esm2022/lib/select/select-item.component.mjs +3 -3
- package/esm2022/lib/select/select-navigation.directive.mjs +3 -3
- package/esm2022/lib/select/select.component.mjs +16 -15
- package/esm2022/lib/select/select.module.mjs +4 -4
- package/esm2022/lib/services/animation/angular-animation-service.mjs +3 -3
- package/esm2022/lib/services/csv/csv-exporter.mjs +3 -3
- package/esm2022/lib/services/direction/directionality.mjs +3 -3
- package/esm2022/lib/services/excel/excel-exporter.mjs +3 -3
- package/esm2022/lib/services/overlay/overlay.mjs +5 -5
- package/esm2022/lib/services/transaction/transaction-factory.service.mjs +6 -6
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +51 -31
- package/esm2022/lib/simple-combo/simple-combo.module.mjs +4 -4
- package/esm2022/lib/slider/label/thumb-label.component.mjs +9 -7
- package/esm2022/lib/slider/slider.common.mjs +9 -9
- package/esm2022/lib/slider/slider.component.mjs +15 -10
- package/esm2022/lib/slider/slider.module.mjs +4 -4
- package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +11 -8
- package/esm2022/lib/slider/ticks/tick.pipe.mjs +3 -3
- package/esm2022/lib/slider/ticks/ticks.component.mjs +11 -8
- package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/snackbar/snackbar.module.mjs +4 -4
- package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +9 -7
- package/esm2022/lib/splitter/splitter.component.mjs +6 -6
- package/esm2022/lib/splitter/splitter.module.mjs +4 -4
- package/esm2022/lib/stepper/step/step.component.mjs +15 -10
- package/esm2022/lib/stepper/stepper.component.mjs +9 -7
- package/esm2022/lib/stepper/stepper.directive.mjs +21 -21
- package/esm2022/lib/stepper/stepper.module.mjs +4 -4
- package/esm2022/lib/stepper/stepper.service.mjs +6 -6
- package/esm2022/lib/switch/switch.component.mjs +32 -40
- package/esm2022/lib/switch/switch.module.mjs +4 -4
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +5 -5
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
- package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
- package/esm2022/lib/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/lib/tabs/tab-header.directive.mjs +3 -3
- package/esm2022/lib/tabs/tab-item.directive.mjs +9 -7
- package/esm2022/lib/tabs/tabs/tab-content.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tab-item.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs/tabs.directives.mjs +6 -6
- package/esm2022/lib/tabs/tabs/tabs.module.mjs +4 -4
- package/esm2022/lib/tabs/tabs.directive.mjs +11 -17
- package/esm2022/lib/time-picker/time-picker.component.mjs +9 -7
- package/esm2022/lib/time-picker/time-picker.directives.mjs +6 -6
- package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/lib/time-picker/time-picker.pipes.mjs +6 -6
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/toast/toast.module.mjs +4 -4
- package/esm2022/lib/tree/tree-navigation.service.mjs +3 -3
- package/esm2022/lib/tree/tree-node/tree-node.component.mjs +18 -13
- package/esm2022/lib/tree/tree-selection.service.mjs +3 -3
- package/esm2022/lib/tree/tree.component.mjs +13 -12
- package/esm2022/lib/tree/tree.module.mjs +4 -4
- package/esm2022/lib/tree/tree.service.mjs +3 -3
- package/fesm2022/igniteui-angular.mjs +2245 -2106
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/accordion/accordion.component.d.ts +1 -0
- package/lib/action-strip/action-strip.component.d.ts +2 -2
- package/lib/action-strip/grid-actions/grid-action-button.component.d.ts +1 -0
- package/lib/action-strip/grid-actions/grid-actions-base.directive.d.ts +1 -0
- package/lib/action-strip/grid-actions/grid-editing-actions.component.d.ts +4 -0
- package/lib/buttonGroup/buttonGroup.component.d.ts +1 -0
- package/lib/calendar/calendar-base.d.ts +1 -0
- package/lib/calendar/calendar.component.d.ts +3 -0
- package/lib/calendar/days-view/day-item.component.d.ts +4 -0
- package/lib/calendar/days-view/days-view.component.d.ts +2 -0
- package/lib/calendar/months-view/months-view.component.d.ts +1 -0
- package/lib/calendar/years-view/years-view.component.d.ts +1 -0
- package/lib/card/card.component.d.ts +4 -0
- package/lib/carousel/carousel.component.d.ts +5 -0
- package/lib/carousel/slide.component.d.ts +2 -0
- package/lib/checkbox/checkbox.component.d.ts +10 -16
- package/lib/chips/chip.component.d.ts +7 -0
- package/lib/combo/combo-dropdown.component.d.ts +1 -0
- package/lib/combo/combo-item.component.d.ts +1 -0
- package/lib/combo/combo.common.d.ts +10 -21
- package/lib/combo/combo.component.d.ts +10 -8
- package/lib/date-common/picker-base.directive.d.ts +1 -0
- package/lib/date-picker/date-picker.component.d.ts +4 -0
- package/lib/date-range-picker/date-range-picker.component.d.ts +2 -0
- package/lib/dialog/dialog.component.d.ts +5 -0
- package/lib/directives/autocomplete/autocomplete.directive.d.ts +1 -0
- package/lib/directives/button/button.directive.d.ts +10 -23
- package/lib/directives/date-time-editor/date-time-editor.directive.d.ts +1 -0
- package/lib/directives/divider/divider.directive.d.ts +2 -0
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
- package/lib/directives/focus/focus.directive.d.ts +1 -0
- package/lib/directives/focus-trap/focus-trap.directive.d.ts +1 -0
- package/lib/directives/for-of/for_of.directive.d.ts +2 -0
- package/lib/directives/input/input.directive.d.ts +2 -2
- package/lib/directives/layout/layout.directive.d.ts +1 -0
- package/lib/directives/mask/mask.directive.d.ts +1 -0
- package/lib/directives/notification/notifications.directive.d.ts +2 -0
- package/lib/directives/radio/radio-group.directive.d.ts +2 -2
- package/lib/directives/ripple/ripple.directive.d.ts +2 -0
- package/lib/directives/text-selection/text-selection.directive.d.ts +2 -17
- package/lib/directives/tooltip/tooltip-target.directive.d.ts +1 -0
- package/lib/drop-down/drop-down-group.component.d.ts +1 -0
- package/lib/drop-down/drop-down-item.base.d.ts +3 -0
- package/lib/drop-down/drop-down.component.d.ts +1 -0
- package/lib/expansion-panel/expansion-panel-header.component.d.ts +1 -0
- package/lib/expansion-panel/expansion-panel.component.d.ts +1 -0
- package/lib/grids/cell.component.d.ts +1 -0
- package/lib/grids/column-actions/column-actions.component.d.ts +1 -0
- package/lib/grids/columns/column-group.component.d.ts +4 -0
- package/lib/grids/columns/column-layout.component.d.ts +1 -0
- package/lib/grids/columns/column.component.d.ts +16 -0
- package/lib/grids/filtering/excel-style/excel-style-header.component.d.ts +3 -0
- package/lib/grids/grid/grid.component.d.ts +3 -0
- package/lib/grids/grid-base.directive.d.ts +11 -0
- package/lib/grids/grouping/tree-grid-group-by-area.component.d.ts +1 -0
- package/lib/grids/headers/grid-header-row.component.d.ts +5 -0
- package/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.d.ts +1 -0
- package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
- package/lib/grids/hierarchical-grid/row-island.component.d.ts +1 -0
- package/lib/grids/pivot-grid/pivot-data-selector.component.d.ts +4 -0
- package/lib/grids/pivot-grid/pivot-grid.component.d.ts +10 -0
- package/lib/grids/row.directive.d.ts +1 -0
- package/lib/grids/selection/drag-select.directive.d.ts +1 -0
- package/lib/grids/summaries/summary-cell.component.d.ts +1 -0
- package/lib/grids/toolbar/grid-toolbar-exporter.component.d.ts +2 -0
- package/lib/grids/toolbar/grid-toolbar.base.d.ts +1 -0
- package/lib/grids/toolbar/grid-toolbar.component.d.ts +1 -0
- package/lib/grids/tree-grid/tree-grid.component.d.ts +1 -0
- package/lib/icon/icon.component.d.ts +1 -0
- package/lib/input-group/input-group.component.d.ts +1 -0
- package/lib/list/list-item.component.d.ts +2 -0
- package/lib/list/list.component.d.ts +3 -0
- package/lib/navbar/navbar.component.d.ts +1 -0
- package/lib/navigation-drawer/navigation-drawer.component.d.ts +4 -0
- package/lib/navigation-drawer/navigation-drawer.directives.d.ts +2 -0
- package/lib/progressbar/progressbar.component.d.ts +6 -0
- package/lib/query-builder/query-builder-header.component.d.ts +1 -0
- package/lib/radio/radio.component.d.ts +5 -4
- package/lib/select/select.component.d.ts +1 -0
- package/lib/simple-combo/simple-combo.component.d.ts +16 -1
- package/lib/slider/label/thumb-label.component.d.ts +2 -0
- package/lib/slider/slider.component.d.ts +5 -0
- package/lib/slider/thumb/thumb-slider.component.d.ts +4 -1
- package/lib/slider/ticks/ticks.component.d.ts +3 -0
- package/lib/splitter/splitter-pane/splitter-pane.component.d.ts +2 -0
- package/lib/stepper/step/step.component.d.ts +5 -0
- package/lib/stepper/stepper.component.d.ts +2 -0
- package/lib/switch/switch.component.d.ts +4 -4
- package/lib/tabs/bottom-nav/bottom-nav.component.d.ts +1 -1
- package/lib/tabs/tab-item.directive.d.ts +2 -0
- package/lib/tabs/tabs.directive.d.ts +2 -4
- package/lib/time-picker/time-picker.component.d.ts +2 -0
- package/lib/tree/tree-node/tree-node.component.d.ts +5 -0
- package/lib/tree/tree.component.d.ts +1 -0
- package/migrations/common/tsUtils.d.ts +2 -0
- package/migrations/common/tsUtils.js +4 -3
- package/migrations/update-17_0_0/changes/classes.json +21 -0
- package/migrations/update-17_0_0/changes/members.json +21 -0
- package/migrations/update-17_0_0/index.js +48 -1
- package/package.json +2 -2
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -4,10 +4,10 @@ export class IgxProgressBarTextTemplateDirective {
|
|
|
4
4
|
constructor(template) {
|
|
5
5
|
this.template = template;
|
|
6
6
|
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
8
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarTextTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxProgressBarTextTemplateDirective, isStandalone: true, selector: "[igxProgressBarText]", ngImport: i0 }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarTextTemplateDirective, decorators: [{
|
|
11
11
|
type: Directive,
|
|
12
12
|
args: [{
|
|
13
13
|
selector: '[igxProgressBarText]',
|
|
@@ -18,10 +18,10 @@ export class IgxProgressBarGradientDirective {
|
|
|
18
18
|
constructor(template) {
|
|
19
19
|
this.template = template;
|
|
20
20
|
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
22
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarGradientDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
22
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxProgressBarGradientDirective, isStandalone: true, selector: "[igxProgressBarGradient]", ngImport: i0 }); }
|
|
23
23
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarGradientDirective, decorators: [{
|
|
25
25
|
type: Directive,
|
|
26
26
|
args: [{
|
|
27
27
|
selector: '[igxProgressBarGradient]',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgClass, NgTemplateOutlet, NgIf } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ContentChild, Directive } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ContentChild, Directive, booleanAttribute } from '@angular/core';
|
|
3
3
|
import { IgxProgressBarTextTemplateDirective, IgxProgressBarGradientDirective, } from './progressbar.common';
|
|
4
4
|
import { mkenum } from '../core/utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -256,21 +256,23 @@ export class BaseProgressDirective {
|
|
|
256
256
|
// this.valueInPercent = toPercent(val, this._max);
|
|
257
257
|
this.runAnimation(val);
|
|
258
258
|
}
|
|
259
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
260
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
259
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: BaseProgressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
260
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: BaseProgressDirective, inputs: { indeterminate: ["indeterminate", "indeterminate", booleanAttribute], animationDuration: "animationDuration", step: "step", animate: ["animate", "animate", booleanAttribute], max: "max", value: "value" }, outputs: { progressChanged: "progressChanged" }, host: { properties: { "attr.aria-valuemax": "this.max", "attr.aria-valuenow": "this.value" } }, ngImport: i0 }); }
|
|
261
261
|
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: BaseProgressDirective, decorators: [{
|
|
263
263
|
type: Directive
|
|
264
264
|
}], ctorParameters: () => [], propDecorators: { progressChanged: [{
|
|
265
265
|
type: Output
|
|
266
266
|
}], indeterminate: [{
|
|
267
|
-
type: Input
|
|
267
|
+
type: Input,
|
|
268
|
+
args: [{ transform: booleanAttribute }]
|
|
268
269
|
}], animationDuration: [{
|
|
269
270
|
type: Input
|
|
270
271
|
}], step: [{
|
|
271
272
|
type: Input
|
|
272
273
|
}], animate: [{
|
|
273
|
-
type: Input
|
|
274
|
+
type: Input,
|
|
275
|
+
args: [{ transform: booleanAttribute }]
|
|
274
276
|
}], max: [{
|
|
275
277
|
type: HostBinding,
|
|
276
278
|
args: ['attr.aria-valuemax']
|
|
@@ -405,10 +407,10 @@ export class IgxLinearProgressBarComponent extends BaseProgressDirective {
|
|
|
405
407
|
duration: this.animationDuration
|
|
406
408
|
});
|
|
407
409
|
}
|
|
408
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
409
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
410
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxLinearProgressBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
411
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: IgxLinearProgressBarComponent, isStandalone: true, selector: "igx-linear-bar", inputs: { striped: ["striped", "striped", booleanAttribute], role: "role", id: "id", textAlign: "textAlign", textVisibility: ["textVisibility", "textVisibility", booleanAttribute], textTop: ["textTop", "textTop", booleanAttribute], text: "text", type: "type" }, host: { properties: { "attr.aria-valuemin": "this.valueMin", "class.igx-linear-bar": "this.cssClass", "class.igx-linear-bar--striped": "this.striped", "class.igx-linear-bar--indeterminate": "this.isIndeterminate", "attr.role": "this.role", "attr.id": "this.id", "class.igx-linear-bar--danger": "this.error", "class.igx-linear-bar--info": "this.info", "class.igx-linear-bar--warning": "this.warning", "class.igx-linear-bar--success": "this.success" } }, viewQueries: [{ propertyName: "_progressIndicator", first: true, predicate: ["indicator"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"igx-linear-bar__base\">\n <div #indicator class=\"igx-linear-bar__indicator\" [style.width]=\"0\"></div>\n <div class=\"igx-linear-bar__indicator-secondary\"></div>\n</div>\n\n<span\n class=\"igx-linear-bar__value\"\n [ngClass]=\"{\n 'igx-linear-bar__value--start': textAlign === 'start',\n 'igx-linear-bar__value--center': textAlign === 'center',\n 'igx-linear-bar__value--end': textAlign === 'end',\n 'igx-linear-bar__value--top': textTop,\n 'igx-linear-bar__value--hidden': !textVisibility\n }\">\n {{text ? text : valueInPercent + '%'}}\n</span>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
410
412
|
}
|
|
411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxLinearProgressBarComponent, decorators: [{
|
|
412
414
|
type: Component,
|
|
413
415
|
args: [{ selector: 'igx-linear-bar', standalone: true, imports: [NgClass], template: "<div class=\"igx-linear-bar__base\">\n <div #indicator class=\"igx-linear-bar__indicator\" [style.width]=\"0\"></div>\n <div class=\"igx-linear-bar__indicator-secondary\"></div>\n</div>\n\n<span\n class=\"igx-linear-bar__value\"\n [ngClass]=\"{\n 'igx-linear-bar__value--start': textAlign === 'start',\n 'igx-linear-bar__value--center': textAlign === 'center',\n 'igx-linear-bar__value--end': textAlign === 'end',\n 'igx-linear-bar__value--top': textTop,\n 'igx-linear-bar__value--hidden': !textVisibility\n }\">\n {{text ? text : valueInPercent + '%'}}\n</span>\n" }]
|
|
414
416
|
}], propDecorators: { valueMin: [{
|
|
@@ -421,7 +423,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
|
|
|
421
423
|
type: HostBinding,
|
|
422
424
|
args: ['class.igx-linear-bar--striped']
|
|
423
425
|
}, {
|
|
424
|
-
type: Input
|
|
426
|
+
type: Input,
|
|
427
|
+
args: [{ transform: booleanAttribute }]
|
|
425
428
|
}], isIndeterminate: [{
|
|
426
429
|
type: HostBinding,
|
|
427
430
|
args: ['class.igx-linear-bar--indeterminate']
|
|
@@ -438,9 +441,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
|
|
|
438
441
|
}], textAlign: [{
|
|
439
442
|
type: Input
|
|
440
443
|
}], textVisibility: [{
|
|
441
|
-
type: Input
|
|
444
|
+
type: Input,
|
|
445
|
+
args: [{ transform: booleanAttribute }]
|
|
442
446
|
}], textTop: [{
|
|
443
|
-
type: Input
|
|
447
|
+
type: Input,
|
|
448
|
+
args: [{ transform: booleanAttribute }]
|
|
444
449
|
}], text: [{
|
|
445
450
|
type: Input
|
|
446
451
|
}], type: [{
|
|
@@ -545,10 +550,10 @@ export class IgxCircularProgressBarComponent extends BaseProgressDirective {
|
|
|
545
550
|
this._circumference + (percentage * this._circumference / 100) :
|
|
546
551
|
this._circumference - (percentage * this._circumference / 100);
|
|
547
552
|
}
|
|
548
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
549
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
553
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxCircularProgressBarComponent, deps: [{ token: i0.Renderer2 }, { token: i1.IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
554
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: IgxCircularProgressBarComponent, isStandalone: true, selector: "igx-circular-bar", inputs: { id: "id", isIndeterminate: "isIndeterminate", textVisibility: ["textVisibility", "textVisibility", booleanAttribute], text: "text" }, host: { properties: { "class.igx-circular-bar": "this.cssClass", "attr.id": "this.id", "class.igx-circular-bar--indeterminate": "this.isIndeterminate" } }, queries: [{ propertyName: "textTemplate", first: true, predicate: IgxProgressBarTextTemplateDirective, descendants: true, read: IgxProgressBarTextTemplateDirective }, { propertyName: "gradientTemplate", first: true, predicate: IgxProgressBarGradientDirective, descendants: true, read: IgxProgressBarGradientDirective }], viewQueries: [{ propertyName: "_svgCircle", first: true, predicate: ["circle"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<svg #svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid meet\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\">\n <svg:circle class=\"igx-circular-bar__inner\" cx=\"50\" cy=\"50\" r=\"46\" />\n <svg:circle #circle class=\"igx-circular-bar__outer\" cx=\"50\" cy=\"50\" r=\"46\" />\n\n <svg:defs>\n <ng-container\n *ngTemplateOutlet=\"gradientTemplate ? gradientTemplate.template : defaultGradientTemplate;\n context: { $implicit: gradientId }\">\n </ng-container>\n </svg:defs>\n\n <ng-template #defaultGradientTemplate>\n <svg:linearGradient [id]=\"gradientId\" gradientTransform=\"rotate(90)\">\n <stop offset=\"0%\" class=\"igx-circular-bar__gradient-start\" />\n <stop offset=\"100%\" class=\"igx-circular-bar__gradient-end\" />\n </svg:linearGradient>\n </ng-template>\n</svg>\n\n<span class=\"igx-circular-bar__text\" *ngIf=\"textVisibility\">\n <ng-container *ngTemplateOutlet=\"textTemplate ? textTemplate.template : defaultTextTemplate;\n context: context\">\n </ng-container>\n</span>\n\n<ng-template #defaultTextTemplate>\n {{textContent ? textContent: valueInPercent + '%'}}\n</ng-template>\n\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
550
555
|
}
|
|
551
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
556
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxCircularProgressBarComponent, decorators: [{
|
|
552
557
|
type: Component,
|
|
553
558
|
args: [{ selector: 'igx-circular-bar', standalone: true, imports: [NgTemplateOutlet, NgIf], template: "<svg #svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid meet\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\">\n <svg:circle class=\"igx-circular-bar__inner\" cx=\"50\" cy=\"50\" r=\"46\" />\n <svg:circle #circle class=\"igx-circular-bar__outer\" cx=\"50\" cy=\"50\" r=\"46\" />\n\n <svg:defs>\n <ng-container\n *ngTemplateOutlet=\"gradientTemplate ? gradientTemplate.template : defaultGradientTemplate;\n context: { $implicit: gradientId }\">\n </ng-container>\n </svg:defs>\n\n <ng-template #defaultGradientTemplate>\n <svg:linearGradient [id]=\"gradientId\" gradientTransform=\"rotate(90)\">\n <stop offset=\"0%\" class=\"igx-circular-bar__gradient-start\" />\n <stop offset=\"100%\" class=\"igx-circular-bar__gradient-end\" />\n </svg:linearGradient>\n </ng-template>\n</svg>\n\n<span class=\"igx-circular-bar__text\" *ngIf=\"textVisibility\">\n <ng-container *ngTemplateOutlet=\"textTemplate ? textTemplate.template : defaultTextTemplate;\n context: context\">\n </ng-container>\n</span>\n\n<ng-template #defaultTextTemplate>\n {{textContent ? textContent: valueInPercent + '%'}}\n</ng-template>\n\n" }]
|
|
554
559
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.IgxDirectionality }], propDecorators: { cssClass: [{
|
|
@@ -565,7 +570,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
|
|
|
565
570
|
}, {
|
|
566
571
|
type: Input
|
|
567
572
|
}], textVisibility: [{
|
|
568
|
-
type: Input
|
|
573
|
+
type: Input,
|
|
574
|
+
args: [{ transform: booleanAttribute }]
|
|
569
575
|
}], text: [{
|
|
570
576
|
type: Input
|
|
571
577
|
}], textTemplate: [{
|
|
@@ -581,4 +587,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
|
|
|
581
587
|
export const valueInRange = (value, max, min = 0) => Math.max(Math.min(value, max), min);
|
|
582
588
|
export const toPercent = (value, max) => !max ? 0 : Math.floor(100 * value / max);
|
|
583
589
|
export const toValue = (value, max) => max * value / 100;
|
|
584
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wcm9ncmVzc2Jhci90ZW1wbGF0ZXMvbGluZWFyLWJhci5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wcm9ncmVzc2Jhci90ZW1wbGF0ZXMvY2lyY3VsYXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFHWixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILG1DQUFtQyxFQUNuQywrQkFBK0IsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXZELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFcEIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUMvQixLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0NBQ2IsQ0FBQyxDQUFDO0FBR0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxLQUFLLEVBQUUs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TUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgRGlyZWN0aXZlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJZ3hQcm9ncmVzc0JhclRleHRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBJZ3hQcm9ncmVzc0JhckdyYWRpZW50RGlyZWN0aXZlLFxufSBmcm9tICcuL3Byb2dyZXNzYmFyLmNvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgbWtlbnVtIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hEaXJlY3Rpb25hbGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpcmVjdGlvbi9kaXJlY3Rpb25hbGl0eSc7XG5jb25zdCBPTkVfUEVSQ0VOVCA9IDAuMDE7XG5jb25zdCBNSU5fVkFMVUUgPSAwO1xuXG5leHBvcnQgY29uc3QgSWd4VGV4dEFsaWduID0gbWtlbnVtKHtcbiAgICBTVEFSVDogJ3N0YXJ0JyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIEVORDogJ2VuZCdcbn0pO1xuZXhwb3J0IHR5cGUgSWd4VGV4dEFsaWduID0gKHR5cGVvZiBJZ3hUZXh0QWxpZ24pW2tleW9mIHR5cGVvZiBJZ3hUZXh0QWxpZ25dO1xuXG5leHBvcnQgY29uc3QgSWd4UHJvZ3Jlc3NUeXBlID0gbWtlbnVtKHtcbiAgICBFUlJPUjogJ2Vycm9yJyxcbiAgICBJTkZPOiAnaW5mbycsXG4gICAgV0FSTklORzogJ3dhcm5pbmcnLFxuICAgIFNVQ0NFU1M6ICdzdWNjZXNzJ1xufSk7XG5leHBvcnQgdHlwZSBJZ3hQcm9ncmVzc1R5cGUgPSAodHlwZW9mIElneFByb2dyZXNzVHlwZSlba2V5b2YgdHlwZW9mIElneFByb2dyZXNzVHlwZV07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYW5nZVByb2dyZXNzRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIHByZXZpb3VzVmFsdWU6IG51bWJlcjtcbiAgICBjdXJyZW50VmFsdWU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcm9ncmVzc0RpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQsIHdoaWNoIGlzIHRyaWdnZXJlZCBhZnRlciBhIHByb2dyZXNzIGlzIGNoYW5nZWQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBwcm9ncmVzc0NoYW5nZShldmVudCkge1xuICAgICAqICAgICBhbGVydChcIlByb2dyZXNzIG1hZGUhXCIpO1xuICAgICAqIH1cbiAgICAgKiAgLy8uLi5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaXJjdWxhci1iYXIgW3ZhbHVlXT1cImN1cnJlbnRWYWx1ZVwiIChwcm9ncmVzc0NoYW5nZWQpPVwicHJvZ3Jlc3NDaGFuZ2UoJGV2ZW50KVwiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW3ZhbHVlXT1cImN1cnJlbnRWYWx1ZVwiIChwcm9ncmVzc0NoYW5nZWQpPVwicHJvZ3Jlc3NDaGFuZ2UoJGV2ZW50KVwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHByb2dyZXNzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUNoYW5nZVByb2dyZXNzRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9HZXRzIHByb2dyZXNzYmFyIGluIGluZGV0ZXJtaW5hdGUuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW2luZGV0ZXJtaW5hdGVdPVwidHJ1ZVwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogPGlneC1jaXJjdWxhci1iYXIgW2luZGV0ZXJtaW5hdGVdPVwidHJ1ZVwiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL0dldHMgcHJvZ3Jlc3NiYXIgYW5pbWF0aW9uIGR1cmF0aW9uLiBCeSBkZWZhdWx0IGl0IGlzIDIwMDBtcy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtpbmRldGVybWluYXRlXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFuaW1hdGlvbkR1cmF0aW9uID0gMjAwMDtcbiAgICBwdWJsaWMgX2ludGVydmFsO1xuXG4gICAgcHJvdGVjdGVkIF9pbml0VmFsdWUgPSAwO1xuICAgIHByb3RlY3RlZCBfY29udGVudEluaXQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX21heCA9IDEwMDtcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlID0gTUlOX1ZBTFVFO1xuICAgIHByb3RlY3RlZCBfbmV3VmFsID0gTUlOX1ZBTFVFO1xuICAgIHByb3RlY3RlZCBfYW5pbWF0ZSA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF9zdGVwO1xuICAgIHByb3RlY3RlZCBfYW5pbWF0aW9uO1xuICAgIHByb3RlY3RlZCBfdmFsdWVJblBlcmNlbnQ7XG4gICAgcHJvdGVjdGVkIF9pbnRlcm5hbFN0YXRlID0ge1xuICAgICAgICBvbGRWYWw6IDAsXG4gICAgICAgIG5ld1ZhbDogMFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgd2hpY2ggdXBkYXRlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3Igb2YgdGhlIGBwcm9ncmVzcyBiYXJgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlQcm9ncmVzc0JhclwiKVxuICAgICAqIHB1YmxpYyBwcm9ncmVzc0JhcjogSWd4TGluZWFyUHJvZ3Jlc3NCYXJDb21wb25lbnQgfCBJZ3hDaXJjdWxhckJhckNvbXBvbmVudDtcbiAgICAgKiBwdWJsaWMgc3RlcFZhbHVlKGV2ZW50KSB7XG4gICAgICogICAgIGxldCBzdGVwID0gdGhpcy5wcm9ncmVzc0Jhci5zdGVwO1xuICAgICAqICAgICBhbGVydChzdGVwKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuX3N0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXggKiBPTkVfUEVSQ0VOVDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBieSB3aGljaCBwcm9ncmVzcyBpbmRpY2F0b3IgaXMgdXBkYXRlZC4gQnkgZGVmYXVsdCBpdCBpcyAxLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiMFwiIFtzdGVwXT1cIjFcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjBcIiBbc3RlcF09XCIxXCI+PC9pZ3gtY2lyY3VsYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc3RlcCh2YWw6IG51bWJlcikge1xuICAgICAgICBjb25zdCBzdGVwID0gTnVtYmVyKHZhbCk7XG4gICAgICAgIGlmIChzdGVwID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0ZXAgPSBzdGVwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuaW1hdGluZyB0aGUgcHJvZ3Jlc3MuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIHRydWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbGluZWFyLWJhciBbYW5pbWF0ZV09XCJmYWxzZVwiIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiA8aWd4LWNpcmN1bGFyLWJhciBbYW5pbWF0ZV09XCJmYWxzZVwiIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtY2lyY3VsYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbmltYXRlKGFuaW1hdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0ZSA9IGFuaW1hdGU7XG4gICAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uID0gMjAwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBgcHJvZ3Jlc3MgYmFyYCBoYXMgYW5pbWF0aW9uIHRydWUvZmFsc2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeVByb2dyZXNzQmFyXCIpXG4gICAgICogcHVibGljIHByb2dyZXNzQmFyOiBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudCB8IElneENpcmN1bGFyQmFyQ29tcG9uZW50O1xuICAgICAqIHB1YmxpYyBhbmltYXRpb25TdGF0dXMoZXZlbnQpIHtcbiAgICAgKiAgICAgbGV0IGFuaW1hdGlvblN0YXR1cyA9IHRoaXMucHJvZ3Jlc3NCYXIuYW5pbWF0ZTtcbiAgICAgKiAgICAgYWxlcnQoYW5pbWF0aW9uU3RhdHVzKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBhbmltYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYW5pbWF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIDEwMC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjBcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjBcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVtYXgnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBtYXgobWF4TnVtOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKG1heE51bSA8IE1JTl9WQUxVRSB8fCB0aGlzLl9tYXggPT09IG1heE51bSB8fFxuICAgICAgICAgICAgKHRoaXMuX2FuaW1hdGlvbiAmJiB0aGlzLl9hbmltYXRpb24ucGxheVN0YXRlICE9PSAnZmluaXNoZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZS5uZXdWYWwgPSBNYXRoLnJvdW5kKHRvVmFsdWUodG9QZXJjZW50KHRoaXMudmFsdWUsIG1heE51bSksIG1heE51bSkpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2ludGVybmFsU3RhdGUub2xkVmFsID0gTWF0aC5yb3VuZCh0b1ZhbHVlKHRoaXMudmFsdWVJblBlcmNlbnQsIG1heE51bSkpO1xuICAgICAgICB0aGlzLl9tYXggPSBtYXhOdW07XG4gICAgICAgIHRoaXMudHJpZ2dlclByb2dyZXNzVHJhbnNpdGlvbih0aGlzLl9pbnRlcm5hbFN0YXRlLm9sZFZhbCwgdGhpcy5faW50ZXJuYWxTdGF0ZS5uZXdWYWwsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHRoZSBtYXhpbXVtIHByb2dyZXNzIHZhbHVlIG9mIHRoZSBgcHJvZ3Jlc3MgYmFyYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15UHJvZ3Jlc3NCYXJcIilcbiAgICAgKiBwdWJsaWMgcHJvZ3Jlc3NCYXI6IElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50IHwgSWd4Q2lyY3VsYXJCYXJDb21wb25lbnQ7XG4gICAgICogcHVibGljIG1heFZhbHVlKGV2ZW50KSB7XG4gICAgICogICAgIGxldCBtYXggPSB0aGlzLnByb2dyZXNzQmFyLm1heDtcbiAgICAgKiAgICAgYWxlcnQobWF4KTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBtYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YC9gSWd4Q2lyY3VsYXJQcm9ncmVzc0JhckNvbXBvbmVudGAgdmFsdWUgaW4gcGVyY2VudGFnZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15UHJvZ3Jlc3NCYXJcIilcbiAgICAgKiBwdWJsaWMgcHJvZ3Jlc3NCYXI6IElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50OyAvLyBJZ3hDaXJjdWxhclByb2dyZXNzQmFyQ29tcG9uZW50XG4gICAgICogcHVibGljIHZhbHVlUGVyY2VudChldmVudCl7XG4gICAgICogICAgIGxldCBwZXJjZW50VmFsdWUgPSB0aGlzLnByb2dyZXNzQmFyLnZhbHVlSW5QZXJjZW50O1xuICAgICAqICAgICBhbGVydChwZXJjZW50VmFsdWUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlSW5QZXJjZW50KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRvUGVyY2VudCh0aGlzLl92YWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudGAgcG9zaXRpb24uXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeVByb2dyZXNzQmFyXCIpXG4gICAgICogcHVibGljIHByb2dyZXNzQmFyOiBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudDtcbiAgICAgKiBwdWJsaWMgZ2V0VmFsdWUoZXZlbnQpIHtcbiAgICAgKiAgICAgbGV0IHZhbHVlID0gdGhpcy5wcm9ncmVzc0Jhci52YWx1ZTtcbiAgICAgKiAgICAgYWxlcnQodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW5vdycpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YCBwb3NpdGlvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtzdHJpcGVkXT1cImZhbHNlXCIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiNTBcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLl9hbmltYXRpb24gJiYgdGhpcy5fYW5pbWF0aW9uLnBsYXlTdGF0ZSAhPT0gJ2ZpbmlzaGVkJyB8fCB2YWwgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWxJblJhbmdlID0gdmFsdWVJblJhbmdlKHZhbCwgdGhpcy5tYXgpO1xuXG4gICAgICAgIGlmIChpc05hTih2YWxJblJhbmdlKSB8fCB0aGlzLl92YWx1ZSA9PT0gdmFsIHx8IHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRJbml0KSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJQcm9ncmVzc1RyYW5zaXRpb24odGhpcy5fdmFsdWUsIHZhbEluUmFuZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFZhbHVlID0gdmFsSW5SYW5nZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmlnZ2VyUHJvZ3Jlc3NUcmFuc2l0aW9uKG9sZFZhbCwgbmV3VmFsLCBtYXhVcGRhdGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAob2xkVmFsID09PSBuZXdWYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoYW5nZWRWYWx1ZXMgPSB7XG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IG5ld1ZhbCxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFZhbFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN0ZXBEaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGlvbkZsb3cob2xkVmFsLCBuZXdWYWwpO1xuICAgICAgICBpZiAodGhpcy5fYW5pbWF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VG9QZXJjZW50ID0gdG9QZXJjZW50KG5ld1ZhbCwgdGhpcy5tYXgpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVG9QZXJjZW50ID0gdG9QZXJjZW50KG9sZFZhbCwgdGhpcy5tYXgpO1xuICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uIC8gTWF0aC5hYnMobmV3VG9QZXJjZW50IC0gb2xkVG9QZXJjZW50KSAvICh0aGlzLl9zdGVwID8gdGhpcy5fc3RlcCA6IDEpO1xuICAgICAgICAgICAgdGhpcy5ydW5BbmltYXRpb24obmV3VmFsKTtcbiAgICAgICAgICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5pbmNyZWFzZShuZXdWYWwsIHN0ZXBEaXJlY3Rpb24pLCBkdXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKG5ld1ZhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF4VXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9ncmVzc0NoYW5nZWQuZW1pdChjaGFuZ2VkVmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluY3JlYXNlKG5ld1ZhbHVlOiBudW1iZXIsIHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IHRvUGVyY2VudChuZXdWYWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZUluUmFuZ2UodGhpcy5fdmFsdWUsIHRoaXMuX21heCkgKyBzdGVwO1xuICAgICAgICBpZiAoKHN0ZXAgPiAwICYmIHRoaXMudmFsdWVJblBlcmNlbnQgPj0gdGFyZ2V0VmFsdWUpIHx8IChzdGVwIDwgMCAmJiB0aGlzLnZhbHVlSW5QZXJjZW50IDw9IHRhcmdldFZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRpcmVjdGlvbkZsb3coY3VycmVudFZhbHVlOiBudW1iZXIsIHByZXZWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSA8IHByZXZWYWx1ZSA/IHRoaXMuc3RlcCA6IC10aGlzLnN0ZXA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJ1bkFuaW1hdGlvbih2YWx1ZTogbnVtYmVyKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc3RlcFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlUHJvZ3Jlc3ModmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZUluUmFuZ2UodmFsLCB0aGlzLl9tYXgpO1xuICAgICAgICAvLyB0aGlzLnZhbHVlSW5QZXJjZW50ID0gdG9QZXJjZW50KHZhbCwgdGhpcy5fbWF4KTtcbiAgICAgICAgdGhpcy5ydW5BbmltYXRpb24odmFsKTtcbiAgICB9XG59XG5sZXQgTkVYVF9MSU5FQVJfSUQgPSAwO1xubGV0IE5FWFRfQ0lSQ1VMQVJfSUQgPSAwO1xubGV0IE5FWFRfR1JBRElFTlRfSUQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtbGluZWFyLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZXMvbGluZWFyLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgSWd4TGluZWFyUHJvZ3Jlc3NCYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUHJvZ3Jlc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW1pbicpXG4gICAgcHVibGljIHZhbHVlTWluID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtbGluZWFyLWJhcic7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YCB0byBoYXZlIHN0cmlwZWQgc3R5bGUuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW3N0cmlwZWRdPVwidHJ1ZVwiIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1saW5lYXItYmFyLS1zdHJpcGVkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdHJpcGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbGluZWFyLWJhci0taW5kZXRlcm1pbmF0ZScpXG4gICAgcHVibGljIGdldCBpc0luZGV0ZXJtaW5hdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIGByb2xlYCBhdHRyaWJ1dGUuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBwcm9ncmVzc2JhcmAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbGluZWFyLWJhciByb2xlPVwicHJvZ3Jlc3NiYXJcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ3Byb2dyZXNzYmFyJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIGBpZGAgYXR0cmlidXRlLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtpZF09XCInaWd4LWxpbmVhci1iYXItNTUnXCIgW3N0cmlwZWRdPVwidHJ1ZVwiIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1saW5lYXItYmFyLSR7TkVYVF9MSU5FQVJfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBwb3NpdGlvbiB0aGF0IGRlZmluZXMgd2hlcmUgdGhlIHRleHQgaXMgYWxpZ25lZC5cbiAgICAgKiBQb3NzaWJsZSBvcHRpb25zIC0gYElneFRleHRBbGlnbi5TVEFSVGAgKGRlZmF1bHQpLCBgSWd4VGV4dEFsaWduLkNFTlRFUmAsIGBJZ3hUZXh0QWxpZ24uRU5EYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogcHVibGljIHBvc2l0aW9uQ2VudGVyOiBJZ3hUZXh0QWxpZ247XG4gICAgICogcHVibGljIG5nT25Jbml0KCkge1xuICAgICAqICAgICB0aGlzLnBvc2l0aW9uQ2VudGVyID0gSWd4VGV4dEFsaWduLkNFTlRFUjtcbiAgICAgKiB9XG4gICAgICogIC8vLi4uXG4gICAgICogYGBgXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgdHlwZT1cIndhcm5pbmdcIiBbdGV4dF09XCInQ3VzdG9tIHRleHQnXCIgW3RleHRBbGlnbl09XCJwb3NpdGlvbkNlbnRlclwiIFtzdHJpcGVkXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRleHRBbGlnbjogSWd4VGV4dEFsaWduID0gSWd4VGV4dEFsaWduLlNUQVJUO1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSB0ZXh0IHRvIGJlIHZpc2libGUuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIHRydWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWxpbmVhci1iYXIgdHlwZT1cImRlZmF1bHRcIiBbdGV4dFZpc2liaWxpdHldPVwiZmFsc2VcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRleHRWaXNpYmlsaXR5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgcG9zaXRpb24gdGhhdCBkZWZpbmVzIGlmIHRoZSB0ZXh0IHNob3VsZCBiZSBhbGlnbmVkIGFib3ZlIHRoZSBwcm9ncmVzcyBsaW5lLiBCeSBkZWZhdWx0IGlzIHNldCB0byBmYWxzZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtbGluZWFyLWJhciB0eXBlPVwiZXJyb3JcIiBbdGV4dFRvcF09XCJ0cnVlXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZXh0VG9wID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYSBjdXN0b20gdGV4dCB0aGF0IGlzIGRpc3BsYXllZCBhY2NvcmRpbmcgdG8gdGhlIGRlZmluZWQgcG9zaXRpb24uXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgdHlwZT1cIndhcm5pbmdcIiBbdGV4dF09XCInQ3VzdG9tIHRleHQnXCIgW3RleHRBbGlnbl09XCJwb3NpdGlvbkNlbnRlclwiIFtzdHJpcGVkXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldCB0eXBlIG9mIHRoZSBgSWd4TGluZWFyUHJvZ3Jlc3NCYXJDb21wb25lbnRgLiBQb3NzaWJsZSBvcHRpb25zIC0gYGRlZmF1bHRgLCBgc3VjY2Vzc2AsIGBpbmZvYCwgYHdhcm5pbmdgLCBhbmQgYGVycm9yYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtzdHJpcGVkXT1cImZhbHNlXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiMFwiIHR5cGU9XCJlcnJvclwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZSA9ICdkZWZhdWx0JztcblxuICAgIEBWaWV3Q2hpbGQoJ2luZGljYXRvcicsIHtzdGF0aWM6IHRydWV9KVxuICAgIHByaXZhdGUgX3Byb2dyZXNzSW5kaWNhdG9yOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBhbmltYXRpb25TdGF0ZSA9IHtcbiAgICAgICAgd2lkdGg6ICcwJSdcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXItLWRhbmdlcicpXG4gICAgcHVibGljIGdldCBlcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4UHJvZ3Jlc3NUeXBlLkVSUk9SO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1saW5lYXItYmFyLS1pbmZvJylcbiAgICBwdWJsaWMgZ2V0IGluZm8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IElneFByb2dyZXNzVHlwZS5JTkZPO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1saW5lYXItYmFyLS13YXJuaW5nJylcbiAgICBwdWJsaWMgZ2V0IHdhcm5pbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IElneFByb2dyZXNzVHlwZS5XQVJOSU5HO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1saW5lYXItYmFyLS1zdWNjZXNzJylcbiAgICBwdWJsaWMgZ2V0IHN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IElneFByb2dyZXNzVHlwZS5TVUNDRVNTO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlclByb2dyZXNzVHJhbnNpdGlvbihNSU5fVkFMVUUsIHRoaXMuX2luaXRWYWx1ZSk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRJbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQW5pbWF0aW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FuaW1hdGlvbiAmJiB0aGlzLl9hbmltYXRpb24ucGxheVN0YXRlICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZUluUGVyY2VudCA9IHRoaXMubWF4IDw9IDAgPyAwIDogdG9QZXJjZW50KHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgY29uc3QgRlJBTUVTID0gW107XG4gICAgICAgIEZSQU1FU1swXSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuYW5pbWF0aW9uU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFuaW1hdGlvblN0YXRlLndpZHRoID0gdmFsdWVJblBlcmNlbnQgKyAnJSc7XG4gICAgICAgIEZSQU1FU1sxXSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuYW5pbWF0aW9uU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9hbmltYXRpb24gPSB0aGlzLl9wcm9ncmVzc0luZGljYXRvci5uYXRpdmVFbGVtZW50LmFuaW1hdGUoRlJBTUVTLCB7XG4gICAgICAgICAgICBlYXNpbmc6ICdlYXNlLW91dCcsXG4gICAgICAgICAgICBmaWxsOiAnZm9yd2FyZHMnLFxuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuYW5pbWF0aW9uRHVyYXRpb25cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jaXJjdWxhci1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndGVtcGxhdGVzL2NpcmN1bGFyLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdJZl1cbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2lyY3VsYXJQcm9ncmVzc0JhckNvbXBvbmVudCBleHRlbmRzIEJhc2VQcm9ncmVzc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jaXJjdWxhci1iYXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2lyY3VsYXItYmFyJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIGBpZGAgYXR0cmlidXRlLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaXJjdWxhci1iYXIgW2lkXT1cIidpZ3gtY2lyY3VsYXItYmFyLTU1J1wiIFt2YWx1ZV09XCI1MFwiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1jaXJjdWxhci1iYXItJHtORVhUX0NJUkNVTEFSX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jaXJjdWxhci1iYXItLWluZGV0ZXJtaW5hdGUnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc0luZGV0ZXJtaW5hdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGV4dCB2aXNpYmlsaXR5LiBCeSBkZWZhdWx0IGl0IGlzIHNldCB0byB0cnVlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNpcmN1bGFyLWJhciBbdGV4dFZpc2liaWxpdHldPVwiZmFsc2VcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGV4dFZpc2liaWxpdHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZCBpbnNpZGUgdGhlIGBpZ3hDaXJjdWxhckJhcmAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIHRleHQ9XCJQcm9ncmVzc1wiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRleHQgPSB0aGlzLmNpcmN1bGFyQmFyLnRleHQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGV4dDogc3RyaW5nO1xuXG4gICAgQENvbnRlbnRDaGlsZChJZ3hQcm9ncmVzc0JhclRleHRUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBJZ3hQcm9ncmVzc0JhclRleHRUZW1wbGF0ZURpcmVjdGl2ZSB9KVxuICAgIHB1YmxpYyB0ZXh0VGVtcGxhdGU6IElneFByb2dyZXNzQmFyVGV4dFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChJZ3hQcm9ncmVzc0JhckdyYWRpZW50RGlyZWN0aXZlLCB7IHJlYWQ6IElneFByb2dyZXNzQmFyR3JhZGllbnREaXJlY3RpdmUgfSlcbiAgICBwdWJsaWMgZ3JhZGllbnRUZW1wbGF0ZTogSWd4UHJvZ3Jlc3NCYXJHcmFkaWVudERpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NpcmNsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBfc3ZnQ2lyY2xlOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBncmFkaWVudElkID0gYGlneC1jaXJjdWxhci1ncmFkaWVudC0ke05FWFRfR1JBRElFTlRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB7IHZhbHVlOiB0aGlzLnZhbHVlLCB2YWx1ZUluUGVyY2VudDogdGhpcy52YWx1ZUluUGVyY2VudCwgbWF4OiB0aGlzLm1heCB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2lyY2xlUmFkaXVzID0gNDY7XG4gICAgcHJpdmF0ZSBfY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogdGhpcy5fY2lyY2xlUmFkaXVzO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBTVFJPS0VfT1BBQ0lUWV9EVklERVIgPSAxMDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTVFJPS0VfT1BBQ0lUWV9BRERJVElPTiA9IC4yO1xuXG4gICAgcHJpdmF0ZSBhbmltYXRpb25TdGF0ZSA9IHtcbiAgICAgICAgc3Ryb2tlRGFzaG9mZnNldDogMjg5LFxuICAgICAgICBzdHJva2VPcGFjaXR5OiAxXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZGlyZWN0aW9uYWxpdHk6IElneERpcmVjdGlvbmFsaXR5KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyUHJvZ3Jlc3NUcmFuc2l0aW9uKE1JTl9WQUxVRSwgdGhpcy5faW5pdFZhbHVlKTtcbiAgICAgICAgdGhpcy5fY29udGVudEluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLl9zdmdDaXJjbGUubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdzdHJva2UnLFxuICAgICAgICAgICAgYHVybCgjJHt0aGlzLmdyYWRpZW50SWR9KWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZXh0Q29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5BbmltYXRpb24odmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uICYmIHRoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGUgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlSW5QZXJjZW50ID0gdGhpcy5tYXggPD0gMCA/IDAgOiB0b1BlcmNlbnQodmFsdWUsIHRoaXMubWF4KTtcblxuICAgICAgICBjb25zdCBGUkFNRVMgPSBbXTtcbiAgICAgICAgRlJBTUVTWzBdID0gey4uLnRoaXMuYW5pbWF0aW9uU3RhdGV9O1xuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUuc3Ryb2tlRGFzaG9mZnNldCA9IHRoaXMuZ2V0UHJvZ3Jlc3ModmFsdWVJblBlcmNlbnQpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvblN0YXRlLnN0cm9rZU9wYWNpdHkgPSB0b1BlcmNlbnQodmFsdWUsIHRoaXMubWF4KSAvIHRoaXMuU1RST0tFX09QQUNJVFlfRFZJREVSICsgdGhpcy5TVFJPS0VfT1BBQ0lUWV9BRERJVElPTjtcblxuICAgICAgICBGUkFNRVNbMV0gPSB7XG4gICAgICAgICAgICAuLi50aGlzLmFuaW1hdGlvblN0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uID0gdGhpcy5fc3ZnQ2lyY2xlLm5hdGl2ZUVsZW1lbnQuYW5pbWF0ZShGUkFNRVMsIHtcbiAgICAgICAgICAgIGVhc2luZzogJ2Vhc2Utb3V0JyxcbiAgICAgICAgICAgIGZpbGw6ICdmb3J3YXJkcycsXG4gICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5hbmltYXRpb25EdXJhdGlvblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2dyZXNzKHBlcmNlbnRhZ2U6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uYWxpdHkucnRsID9cbiAgICAgICAgICAgIHRoaXMuX2NpcmN1bWZlcmVuY2UgKyAocGVyY2VudGFnZSAqIHRoaXMuX2NpcmN1bWZlcmVuY2UgLyAxMDApIDpcbiAgICAgICAgICAgIHRoaXMuX2NpcmN1bWZlcmVuY2UgLSAocGVyY2VudGFnZSAqIHRoaXMuX2NpcmN1bWZlcmVuY2UgLyAxMDApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IHZhbHVlSW5SYW5nZSA9ICh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlciwgbWluID0gMCk6IG51bWJlciA9PiBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgbWF4KSwgbWluKTtcblxuZXhwb3J0IGNvbnN0IHRvUGVyY2VudCA9ICh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gICFtYXggPyAwIDogTWF0aC5mbG9vcigxMDAgKiB2YWx1ZSAvIG1heCk7XG5cbmV4cG9ydCBjb25zdCB0b1ZhbHVlID0gKHZhbHVlOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiBtYXggKiB2YWx1ZSAvIDEwMDtcblxuXG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWxpbmVhci1iYXJfX2Jhc2VcIj5cbiAgICA8ZGl2ICNpbmRpY2F0b3IgY2xhc3M9XCJpZ3gtbGluZWFyLWJhcl9faW5kaWNhdG9yXCIgW3N0eWxlLndpZHRoXT1cIjBcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWxpbmVhci1iYXJfX2luZGljYXRvci1zZWNvbmRhcnlcIj48L2Rpdj5cbjwvZGl2PlxuXG48c3BhblxuICAgIGNsYXNzPVwiaWd4LWxpbmVhci1iYXJfX3ZhbHVlXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdpZ3gtbGluZWFyLWJhcl9fdmFsdWUtLXN0YXJ0JzogdGV4dEFsaWduID09PSAnc3RhcnQnLFxuICAgICAgICAnaWd4LWxpbmVhci1iYXJfX3ZhbHVlLS1jZW50ZXInOiB0ZXh0QWxpZ24gPT09ICdjZW50ZXInLFxuICAgICAgICAnaWd4LWxpbmVhci1iYXJfX3ZhbHVlLS1lbmQnOiB0ZXh0QWxpZ24gPT09ICdlbmQnLFxuICAgICAgICAnaWd4LWxpbmVhci1iYXJfX3ZhbHVlLS10b3AnOiB0ZXh0VG9wLFxuICAgICAgICAnaWd4LWxpbmVhci1iYXJfX3ZhbHVlLS1oaWRkZW4nOiAhdGV4dFZpc2liaWxpdHlcbiAgICB9XCI+XG4gICAgICAgIHt7dGV4dCA/IHRleHQgOiB2YWx1ZUluUGVyY2VudCArICclJ319XG48L3NwYW4+XG4iLCI8c3ZnICNzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZlcnNpb249XCIxLjFcIlxuICAgIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiXG4gICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCI+XG4gICAgPHN2ZzpjaXJjbGUgY2xhc3M9XCJpZ3gtY2lyY3VsYXItYmFyX19pbm5lclwiIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjQ2XCIgLz5cbiAgICA8c3ZnOmNpcmNsZSAjY2lyY2xlIGNsYXNzPVwiaWd4LWNpcmN1bGFyLWJhcl9fb3V0ZXJcIiBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0NlwiIC8+XG5cbiAgICA8c3ZnOmRlZnM+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JhZGllbnRUZW1wbGF0ZSA/IGdyYWRpZW50VGVtcGxhdGUudGVtcGxhdGUgOiBkZWZhdWx0R3JhZGllbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBncmFkaWVudElkIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zdmc6ZGVmcz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdyYWRpZW50VGVtcGxhdGU+XG4gICAgICAgIDxzdmc6bGluZWFyR3JhZGllbnQgW2lkXT1cImdyYWRpZW50SWRcIiBncmFkaWVudFRyYW5zZm9ybT1cInJvdGF0ZSg5MClcIj5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiICAgY2xhc3M9XCJpZ3gtY2lyY3VsYXItYmFyX19ncmFkaWVudC1zdGFydFwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIGNsYXNzPVwiaWd4LWNpcmN1bGFyLWJhcl9fZ3JhZGllbnQtZW5kXCIgLz5cbiAgICAgICAgPC9zdmc6bGluZWFyR3JhZGllbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvc3ZnPlxuXG48c3BhbiBjbGFzcz1cImlneC1jaXJjdWxhci1iYXJfX3RleHRcIiAqbmdJZj1cInRleHRWaXNpYmlsaXR5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRUZW1wbGF0ZSA/IHRleHRUZW1wbGF0ZS50ZW1wbGF0ZSA6IGRlZmF1bHRUZXh0VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3NwYW4+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRUZW1wbGF0ZT5cbiAgICB7e3RleHRDb250ZW50ID8gdGV4dENvbnRlbnQ6IHZhbHVlSW5QZXJjZW50ICsgJyUnfX1cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
590
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wcm9ncmVzc2Jhci90ZW1wbGF0ZXMvbGluZWFyLWJhci5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wcm9ncmVzc2Jhci90ZW1wbGF0ZXMvY2lyY3VsYXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFHWixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxtQ0FBbUMsRUFDbkMsK0JBQStCLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUV2RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7SUFDL0IsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsS0FBSztDQUNiLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFD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QUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWpILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztBQUVsRyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSWd4UHJvZ3Jlc3NCYXJUZXh0VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgSWd4UHJvZ3Jlc3NCYXJHcmFkaWVudERpcmVjdGl2ZSxcbn0gZnJvbSAnLi9wcm9ncmVzc2Jhci5jb21tb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4RGlyZWN0aW9uYWxpdHkgfSBmcm9tICcuLi9zZXJ2aWNlcy9kaXJlY3Rpb24vZGlyZWN0aW9uYWxpdHknO1xuY29uc3QgT05FX1BFUkNFTlQgPSAwLjAxO1xuY29uc3QgTUlOX1ZBTFVFID0gMDtcblxuZXhwb3J0IGNvbnN0IElneFRleHRBbGlnbiA9IG1rZW51bSh7XG4gICAgU1RBUlQ6ICdzdGFydCcsXG4gICAgQ0VOVEVSOiAnY2VudGVyJyxcbiAgICBFTkQ6ICdlbmQnXG59KTtcbmV4cG9ydCB0eXBlIElneFRleHRBbGlnbiA9ICh0eXBlb2YgSWd4VGV4dEFsaWduKVtrZXlvZiB0eXBlb2YgSWd4VGV4dEFsaWduXTtcblxuZXhwb3J0IGNvbnN0IElneFByb2dyZXNzVHlwZSA9IG1rZW51bSh7XG4gICAgRVJST1I6ICdlcnJvcicsXG4gICAgSU5GTzogJ2luZm8nLFxuICAgIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgICBTVUNDRVNTOiAnc3VjY2Vzcydcbn0pO1xuZXhwb3J0IHR5cGUgSWd4UHJvZ3Jlc3NUeXBlID0gKHR5cGVvZiBJZ3hQcm9ncmVzc1R5cGUpW2tleW9mIHR5cGVvZiBJZ3hQcm9ncmVzc1R5cGVdO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VQcm9ncmVzc0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBwcmV2aW91c1ZhbHVlOiBudW1iZXI7XG4gICAgY3VycmVudFZhbHVlOiBudW1iZXI7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJvZ3Jlc3NEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50LCB3aGljaCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgYSBwcm9ncmVzcyBpcyBjaGFuZ2VkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgcHJvZ3Jlc3NDaGFuZ2UoZXZlbnQpIHtcbiAgICAgKiAgICAgYWxlcnQoXCJQcm9ncmVzcyBtYWRlIVwiKTtcbiAgICAgKiB9XG4gICAgICogIC8vLi4uXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFt2YWx1ZV09XCJjdXJyZW50VmFsdWVcIiAocHJvZ3Jlc3NDaGFuZ2VkKT1cInByb2dyZXNzQ2hhbmdlKCRldmVudClcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogPGlneC1saW5lYXItYmFyIFt2YWx1ZV09XCJjdXJyZW50VmFsdWVcIiAocHJvZ3Jlc3NDaGFuZ2VkKT1cInByb2dyZXNzQ2hhbmdlKCRldmVudClcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwcm9ncmVzc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFuZ2VQcm9ncmVzc0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvR2V0cyBwcm9ncmVzc2JhciBpbiBpbmRldGVybWluYXRlLiBCeSBkZWZhdWx0IGl0IGlzIHNldCB0byBmYWxzZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtpbmRldGVybWluYXRlXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFtpbmRldGVybWluYXRlXT1cInRydWVcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvR2V0cyBwcm9ncmVzc2JhciBhbmltYXRpb24gZHVyYXRpb24uIEJ5IGRlZmF1bHQgaXQgaXMgMjAwMG1zLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW2luZGV0ZXJtaW5hdGVdPVwidHJ1ZVwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYW5pbWF0aW9uRHVyYXRpb24gPSAyMDAwO1xuICAgIHB1YmxpYyBfaW50ZXJ2YWw7XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRWYWx1ZSA9IDA7XG4gICAgcHJvdGVjdGVkIF9jb250ZW50SW5pdCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfbWF4ID0gMTAwO1xuICAgIHByb3RlY3RlZCBfdmFsdWUgPSBNSU5fVkFMVUU7XG4gICAgcHJvdGVjdGVkIF9uZXdWYWwgPSBNSU5fVkFMVUU7XG4gICAgcHJvdGVjdGVkIF9hbmltYXRlID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgX3N0ZXA7XG4gICAgcHJvdGVjdGVkIF9hbmltYXRpb247XG4gICAgcHJvdGVjdGVkIF92YWx1ZUluUGVyY2VudDtcbiAgICBwcm90ZWN0ZWQgX2ludGVybmFsU3RhdGUgPSB7XG4gICAgICAgIG9sZFZhbDogMCxcbiAgICAgICAgbmV3VmFsOiAwXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSB3aGljaCB1cGRhdGUgdGhlIHByb2dyZXNzIGluZGljYXRvciBvZiB0aGUgYHByb2dyZXNzIGJhcmAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeVByb2dyZXNzQmFyXCIpXG4gICAgICogcHVibGljIHByb2dyZXNzQmFyOiBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudCB8IElneENpcmN1bGFyQmFyQ29tcG9uZW50O1xuICAgICAqIHB1YmxpYyBzdGVwVmFsdWUoZXZlbnQpIHtcbiAgICAgKiAgICAgbGV0IHN0ZXAgPSB0aGlzLnByb2dyZXNzQmFyLnN0ZXA7XG4gICAgICogICAgIGFsZXJ0KHN0ZXApO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5fc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX21heCAqIE9ORV9QRVJDRU5UO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGJ5IHdoaWNoIHByb2dyZXNzIGluZGljYXRvciBpcyB1cGRhdGVkLiBCeSBkZWZhdWx0IGl0IGlzIDEuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbGluZWFyLWJhciBbbWF4XT1cIjIwMFwiIFt2YWx1ZV09XCIwXCIgW3N0ZXBdPVwiMVwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogPGlneC1jaXJjdWxhci1iYXIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiMFwiIFtzdGVwXT1cIjFcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBzdGVwKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBOdW1iZXIodmFsKTtcbiAgICAgICAgaWYgKHN0ZXAgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RlcCA9IHN0ZXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW5pbWF0aW5nIHRoZSBwcm9ncmVzcy4gQnkgZGVmYXVsdCBpdCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFthbmltYXRlXT1cImZhbHNlXCIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiNTBcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFthbmltYXRlXT1cImZhbHNlXCIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiNTBcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNldCBhbmltYXRlKGFuaW1hdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0ZSA9IGFuaW1hdGU7XG4gICAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uID0gMjAwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBgcHJvZ3Jlc3MgYmFyYCBoYXMgYW5pbWF0aW9uIHRydWUvZmFsc2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeVByb2dyZXNzQmFyXCIpXG4gICAgICogcHVibGljIHByb2dyZXNzQmFyOiBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudCB8IElneENpcmN1bGFyQmFyQ29tcG9uZW50O1xuICAgICAqIHB1YmxpYyBhbmltYXRpb25TdGF0dXMoZXZlbnQpIHtcbiAgICAgKiAgICAgbGV0IGFuaW1hdGlvblN0YXR1cyA9IHRoaXMucHJvZ3Jlc3NCYXIuYW5pbWF0ZTtcbiAgICAgKiAgICAgYWxlcnQoYW5pbWF0aW9uU3RhdHVzKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBhbmltYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYW5pbWF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIDEwMC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjBcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjBcIj48L2lneC1jaXJjdWxhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVtYXgnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBtYXgobWF4TnVtOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKG1heE51bSA8IE1JTl9WQUxVRSB8fCB0aGlzLl9tYXggPT09IG1heE51bSB8fFxuICAgICAgICAgICAgKHRoaXMuX2FuaW1hdGlvbiAmJiB0aGlzLl9hbmltYXRpb24ucGxheVN0YXRlICE9PSAnZmluaXNoZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZS5uZXdWYWwgPSBNYXRoLnJvdW5kKHRvVmFsdWUodG9QZXJjZW50KHRoaXMudmFsdWUsIG1heE51bSksIG1heE51bSkpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2ludGVybmFsU3RhdGUub2xkVmFsID0gTWF0aC5yb3VuZCh0b1ZhbHVlKHRoaXMudmFsdWVJblBlcmNlbnQsIG1heE51bSkpO1xuICAgICAgICB0aGlzLl9tYXggPSBtYXhOdW07XG4gICAgICAgIHRoaXMudHJpZ2dlclByb2dyZXNzVHJhbnNpdGlvbih0aGlzLl9pbnRlcm5hbFN0YXRlLm9sZFZhbCwgdGhpcy5faW50ZXJuYWxTdGF0ZS5uZXdWYWwsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHRoZSBtYXhpbXVtIHByb2dyZXNzIHZhbHVlIG9mIHRoZSBgcHJvZ3Jlc3MgYmFyYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15UHJvZ3Jlc3NCYXJcIilcbiAgICAgKiBwdWJsaWMgcHJvZ3Jlc3NCYXI6IElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50IHwgSWd4Q2lyY3VsYXJCYXJDb21wb25lbnQ7XG4gICAgICogcHVibGljIG1heFZhbHVlKGV2ZW50KSB7XG4gICAgICogICAgIGxldCBtYXggPSB0aGlzLnByb2dyZXNzQmFyLm1heDtcbiAgICAgKiAgICAgYWxlcnQobWF4KTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBtYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YC9gSWd4Q2lyY3VsYXJQcm9ncmVzc0JhckNvbXBvbmVudGAgdmFsdWUgaW4gcGVyY2VudGFnZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15UHJvZ3Jlc3NCYXJcIilcbiAgICAgKiBwdWJsaWMgcHJvZ3Jlc3NCYXI6IElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50OyAvLyBJZ3hDaXJjdWxhclByb2dyZXNzQmFyQ29tcG9uZW50XG4gICAgICogcHVibGljIHZhbHVlUGVyY2VudChldmVudCl7XG4gICAgICogICAgIGxldCBwZXJjZW50VmFsdWUgPSB0aGlzLnByb2dyZXNzQmFyLnZhbHVlSW5QZXJjZW50O1xuICAgICAqICAgICBhbGVydChwZXJjZW50VmFsdWUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlSW5QZXJjZW50KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRvUGVyY2VudCh0aGlzLl92YWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudGAgcG9zaXRpb24uXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeVByb2dyZXNzQmFyXCIpXG4gICAgICogcHVibGljIHByb2dyZXNzQmFyOiBJZ3hMaW5lYXJQcm9ncmVzc0JhckNvbXBvbmVudDtcbiAgICAgKiBwdWJsaWMgZ2V0VmFsdWUoZXZlbnQpIHtcbiAgICAgKiAgICAgbGV0IHZhbHVlID0gdGhpcy5wcm9ncmVzc0Jhci52YWx1ZTtcbiAgICAgKiAgICAgYWxlcnQodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW5vdycpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YCBwb3NpdGlvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtzdHJpcGVkXT1cImZhbHNlXCIgW21heF09XCIyMDBcIiBbdmFsdWVdPVwiNTBcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLl9hbmltYXRpb24gJiYgdGhpcy5fYW5pbWF0aW9uLnBsYXlTdGF0ZSAhPT0gJ2ZpbmlzaGVkJyB8fCB2YWwgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWxJblJhbmdlID0gdmFsdWVJblJhbmdlKHZhbCwgdGhpcy5tYXgpO1xuXG4gICAgICAgIGlmIChpc05hTih2YWxJblJhbmdlKSB8fCB0aGlzLl92YWx1ZSA9PT0gdmFsIHx8IHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRJbml0KSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJQcm9ncmVzc1RyYW5zaXRpb24odGhpcy5fdmFsdWUsIHZhbEluUmFuZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFZhbHVlID0gdmFsSW5SYW5nZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmlnZ2VyUHJvZ3Jlc3NUcmFuc2l0aW9uKG9sZFZhbCwgbmV3VmFsLCBtYXhVcGRhdGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAob2xkVmFsID09PSBuZXdWYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoYW5nZWRWYWx1ZXMgPSB7XG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IG5ld1ZhbCxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFZhbFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN0ZXBEaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGlvbkZsb3cob2xkVmFsLCBuZXdWYWwpO1xuICAgICAgICBpZiAodGhpcy5fYW5pbWF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VG9QZXJjZW50ID0gdG9QZXJjZW50KG5ld1ZhbCwgdGhpcy5tYXgpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVG9QZXJjZW50ID0gdG9QZXJjZW50KG9sZFZhbCwgdGhpcy5tYXgpO1xuICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uIC8gTWF0aC5hYnMobmV3VG9QZXJjZW50IC0gb2xkVG9QZXJjZW50KSAvICh0aGlzLl9zdGVwID8gdGhpcy5fc3RlcCA6IDEpO1xuICAgICAgICAgICAgdGhpcy5ydW5BbmltYXRpb24obmV3VmFsKTtcbiAgICAgICAgICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5pbmNyZWFzZShuZXdWYWwsIHN0ZXBEaXJlY3Rpb24pLCBkdXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKG5ld1ZhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF4VXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9ncmVzc0NoYW5nZWQuZW1pdChjaGFuZ2VkVmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluY3JlYXNlKG5ld1ZhbHVlOiBudW1iZXIsIHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IHRvUGVyY2VudChuZXdWYWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZUluUmFuZ2UodGhpcy5fdmFsdWUsIHRoaXMuX21heCkgKyBzdGVwO1xuICAgICAgICBpZiAoKHN0ZXAgPiAwICYmIHRoaXMudmFsdWVJblBlcmNlbnQgPj0gdGFyZ2V0VmFsdWUpIHx8IChzdGVwIDwgMCAmJiB0aGlzLnZhbHVlSW5QZXJjZW50IDw9IHRhcmdldFZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRpcmVjdGlvbkZsb3coY3VycmVudFZhbHVlOiBudW1iZXIsIHByZXZWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSA8IHByZXZWYWx1ZSA/IHRoaXMuc3RlcCA6IC10aGlzLnN0ZXA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJ1bkFuaW1hdGlvbih2YWx1ZTogbnVtYmVyKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc3RlcFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlUHJvZ3Jlc3ModmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZUluUmFuZ2UodmFsLCB0aGlzLl9tYXgpO1xuICAgICAgICAvLyB0aGlzLnZhbHVlSW5QZXJjZW50ID0gdG9QZXJjZW50KHZhbCwgdGhpcy5fbWF4KTtcbiAgICAgICAgdGhpcy5ydW5BbmltYXRpb24odmFsKTtcbiAgICB9XG59XG5sZXQgTkVYVF9MSU5FQVJfSUQgPSAwO1xubGV0IE5FWFRfQ0lSQ1VMQVJfSUQgPSAwO1xubGV0IE5FWFRfR1JBRElFTlRfSUQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtbGluZWFyLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZXMvbGluZWFyLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgSWd4TGluZWFyUHJvZ3Jlc3NCYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUHJvZ3Jlc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW1pbicpXG4gICAgcHVibGljIHZhbHVlTWluID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtbGluZWFyLWJhcic7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYElneExpbmVhclByb2dyZXNzQmFyQ29tcG9uZW50YCB0byBoYXZlIHN0cmlwZWQgc3R5bGUuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgW3N0cmlwZWRdPVwidHJ1ZVwiIFttYXhdPVwiMjAwXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1saW5lYXItYmFyLS1zdHJpcGVkJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgc3RyaXBlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXItLWluZGV0ZXJtaW5hdGUnKVxuICAgIHB1YmxpYyBnZXQgaXNJbmRldGVybWluYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRldGVybWluYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIHRoZSBgcm9sZWAgYXR0cmlidXRlLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byBgcHJvZ3Jlc3NiYXJgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgcm9sZT1cInByb2dyZXNzYmFyXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICdwcm9ncmVzc2Jhcic7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSB2YWx1ZSBvZiBgaWRgIGF0dHJpYnV0ZS4gSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbGluZWFyLWJhciBbaWRdPVwiJ2lneC1saW5lYXItYmFyLTU1J1wiIFtzdHJpcGVkXT1cInRydWVcIiBbbWF4XT1cIjIwMFwiIFt2YWx1ZV09XCI1MFwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtbGluZWFyLWJhci0ke05FWFRfTElORUFSX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgcG9zaXRpb24gdGhhdCBkZWZpbmVzIHdoZXJlIHRoZSB0ZXh0IGlzIGFsaWduZWQuXG4gICAgICogUG9zc2libGUgb3B0aW9ucyAtIGBJZ3hUZXh0QWxpZ24uU1RBUlRgIChkZWZhdWx0KSwgYElneFRleHRBbGlnbi5DRU5URVJgLCBgSWd4VGV4dEFsaWduLkVORGAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBwb3NpdGlvbkNlbnRlcjogSWd4VGV4dEFsaWduO1xuICAgICAqIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgKiAgICAgdGhpcy5wb3NpdGlvbkNlbnRlciA9IElneFRleHRBbGlnbi5DRU5URVI7XG4gICAgICogfVxuICAgICAqICAvLy4uLlxuICAgICAqIGBgYFxuICAgICAqICBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIHR5cGU9XCJ3YXJuaW5nXCIgW3RleHRdPVwiJ0N1c3RvbSB0ZXh0J1wiIFt0ZXh0QWxpZ25dPVwicG9zaXRpb25DZW50ZXJcIiBbc3RyaXBlZF09XCJ0cnVlXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZXh0QWxpZ246IElneFRleHRBbGlnbiA9IElneFRleHRBbGlnbi5TVEFSVDtcblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgdGV4dCB0byBiZSB2aXNpYmxlLiBCeSBkZWZhdWx0IGl0IGlzIHNldCB0byB0cnVlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1saW5lYXItYmFyIHR5cGU9XCJkZWZhdWx0XCIgW3RleHRWaXNpYmlsaXR5XT1cImZhbHNlXCI+PC9pZ3gtbGluZWFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgdGV4dFZpc2liaWxpdHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBwb3NpdGlvbiB0aGF0IGRlZmluZXMgaWYgdGhlIHRleHQgc2hvdWxkIGJlIGFsaWduZWQgYWJvdmUgdGhlIHByb2dyZXNzIGxpbmUuIEJ5IGRlZmF1bHQgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1saW5lYXItYmFyIHR5cGU9XCJlcnJvclwiIFt0ZXh0VG9wXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyB0ZXh0VG9wID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYSBjdXN0b20gdGV4dCB0aGF0IGlzIGRpc3BsYXllZCBhY2NvcmRpbmcgdG8gdGhlIGRlZmluZWQgcG9zaXRpb24uXG4gICAgICogIGBgYGh0bWxcbiAgICAgKiA8aWd4LWxpbmVhci1iYXIgdHlwZT1cIndhcm5pbmdcIiBbdGV4dF09XCInQ3VzdG9tIHRleHQnXCIgW3RleHRBbGlnbl09XCJwb3NpdGlvbkNlbnRlclwiIFtzdHJpcGVkXT1cInRydWVcIj48L2lneC1saW5lYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldCB0eXBlIG9mIHRoZSBgSWd4TGluZWFyUHJvZ3Jlc3NCYXJDb21wb25lbnRgLiBQb3NzaWJsZSBvcHRpb25zIC0gYGRlZmF1bHRgLCBgc3VjY2Vzc2AsIGBpbmZvYCwgYHdhcm5pbmdgLCBhbmQgYGVycm9yYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1saW5lYXItYmFyIFtzdHJpcGVkXT1cImZhbHNlXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiMFwiIHR5cGU9XCJlcnJvclwiPjwvaWd4LWxpbmVhci1iYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZSA9ICdkZWZhdWx0JztcblxuICAgIEBWaWV3Q2hpbGQoJ2luZGljYXRvcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBfcHJvZ3Jlc3NJbmRpY2F0b3I6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIGFuaW1hdGlvblN0YXRlID0ge1xuICAgICAgICB3aWR0aDogJzAlJ1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbGluZWFyLWJhci0tZGFuZ2VyJylcbiAgICBwdWJsaWMgZ2V0IGVycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBJZ3hQcm9ncmVzc1R5cGUuRVJST1I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXItLWluZm8nKVxuICAgIHB1YmxpYyBnZXQgaW5mbygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4UHJvZ3Jlc3NUeXBlLklORk87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXItLXdhcm5pbmcnKVxuICAgIHB1YmxpYyBnZXQgd2FybmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4UHJvZ3Jlc3NUeXBlLldBUk5JTkc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWxpbmVhci1iYXItLXN1Y2Nlc3MnKVxuICAgIHB1YmxpYyBnZXQgc3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4UHJvZ3Jlc3NUeXBlLlNVQ0NFU1M7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyUHJvZ3Jlc3NUcmFuc2l0aW9uKE1JTl9WQUxVRSwgdGhpcy5faW5pdFZhbHVlKTtcbiAgICAgICAgdGhpcy5fY29udGVudEluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5BbmltYXRpb24odmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uICYmIHRoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGUgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlSW5QZXJjZW50ID0gdGhpcy5tYXggPD0gMCA/IDAgOiB0b1BlcmNlbnQodmFsdWUsIHRoaXMubWF4KTtcblxuICAgICAgICBjb25zdCBGUkFNRVMgPSBbXTtcbiAgICAgICAgRlJBTUVTWzBdID0ge1xuICAgICAgICAgICAgLi4udGhpcy5hbmltYXRpb25TdGF0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUud2lkdGggPSB2YWx1ZUluUGVyY2VudCArICclJztcbiAgICAgICAgRlJBTUVTWzFdID0ge1xuICAgICAgICAgICAgLi4udGhpcy5hbmltYXRpb25TdGF0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2FuaW1hdGlvbiA9IHRoaXMuX3Byb2dyZXNzSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuYW5pbWF0ZShGUkFNRVMsIHtcbiAgICAgICAgICAgIGVhc2luZzogJ2Vhc2Utb3V0JyxcbiAgICAgICAgICAgIGZpbGw6ICdmb3J3YXJkcycsXG4gICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5hbmltYXRpb25EdXJhdGlvblxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWNpcmN1bGFyLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZXMvY2lyY3VsYXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDaXJjdWxhclByb2dyZXNzQmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVByb2dyZXNzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNpcmN1bGFyLWJhcicpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1jaXJjdWxhci1iYXInO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgdmFsdWUgb2YgYGlkYCBhdHRyaWJ1dGUuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNpcmN1bGFyLWJhciBbaWRdPVwiJ2lneC1jaXJjdWxhci1iYXItNTUnXCIgW3ZhbHVlXT1cIjUwXCI+PC9pZ3gtY2lyY3VsYXItYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWNpcmN1bGFyLWJhci0ke05FWFRfQ0lSQ1VMQVJfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNpcmN1bGFyLWJhci0taW5kZXRlcm1pbmF0ZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGlzSW5kZXRlcm1pbmF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0ZXh0IHZpc2liaWxpdHkuIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvIHRydWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIFt0ZXh0VmlzaWJpbGl0eV09XCJmYWxzZVwiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgdGV4dFZpc2liaWxpdHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZCBpbnNpZGUgdGhlIGBpZ3hDaXJjdWxhckJhcmAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2lyY3VsYXItYmFyIHRleHQ9XCJQcm9ncmVzc1wiPjwvaWd4LWNpcmN1bGFyLWJhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRleHQgPSB0aGlzLmNpcmN1bGFyQmFyLnRleHQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGV4dDogc3RyaW5nO1xuXG4gICAgQENvbnRlbnRDaGlsZChJZ3hQcm9ncmVzc0JhclRleHRUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBJZ3hQcm9ncmVzc0JhclRleHRUZW1wbGF0ZURpcmVjdGl2ZSB9KVxuICAgIHB1YmxpYyB0ZXh0VGVtcGxhdGU6IElneFByb2dyZXNzQmFyVGV4dFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChJZ3hQcm9ncmVzc0JhckdyYWRpZW50RGlyZWN0aXZlLCB7IHJlYWQ6IElneFByb2dyZXNzQmFyR3JhZGllbnREaXJlY3RpdmUgfSlcbiAgICBwdWJsaWMgZ3JhZGllbnRUZW1wbGF0ZTogSWd4UHJvZ3Jlc3NCYXJHcmFkaWVudERpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NpcmNsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBfc3ZnQ2lyY2xlOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBncmFkaWVudElkID0gYGlneC1jaXJjdWxhci1ncmFkaWVudC0ke05FWFRfR1JBRElFTlRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB7IHZhbHVlOiB0aGlzLnZhbHVlLCB2YWx1ZUluUGVyY2VudDogdGhpcy52YWx1ZUluUGVyY2VudCwgbWF4OiB0aGlzLm1heCB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2lyY2xlUmFkaXVzID0gNDY7XG4gICAgcHJpdmF0ZSBfY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogdGhpcy5fY2lyY2xlUmFkaXVzO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBTVFJPS0VfT1BBQ0lUWV9EVklERVIgPSAxMDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTVFJPS0VfT1BBQ0lUWV9BRERJVElPTiA9IC4yO1xuXG4gICAgcHJpdmF0ZSBhbmltYXRpb25TdGF0ZSA9IHtcbiAgICAgICAgc3Ryb2tlRGFzaG9mZnNldDogMjg5LFxuICAgICAgICBzdHJva2VPcGFjaXR5OiAxXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZGlyZWN0aW9uYWxpdHk6IElneERpcmVjdGlvbmFsaXR5KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyUHJvZ3Jlc3NUcmFuc2l0aW9uKE1JTl9WQUxVRSwgdGhpcy5faW5pdFZhbHVlKTtcbiAgICAgICAgdGhpcy5fY29udGVudEluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLl9zdmdDaXJjbGUubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdzdHJva2UnLFxuICAgICAgICAgICAgYHVybCgjJHt0aGlzLmdyYWRpZW50SWR9KWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZXh0Q29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5BbmltYXRpb24odmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uICYmIHRoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGUgIT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlSW5QZXJjZW50ID0gdGhpcy5tYXggPD0gMCA/IDAgOiB0b1BlcmNlbnQodmFsdWUsIHRoaXMubWF4KTtcblxuICAgICAgICBjb25zdCBGUkFNRVMgPSBbXTtcbiAgICAgICAgRlJBTUVTWzBdID0geyAuLi50aGlzLmFuaW1hdGlvblN0YXRlIH07XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZS5zdHJva2VEYXNob2Zmc2V0ID0gdGhpcy5nZXRQcm9ncmVzcyh2YWx1ZUluUGVyY2VudCk7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUuc3Ryb2tlT3BhY2l0eSA9IHRvUGVyY2VudCh2YWx1ZSwgdGhpcy5tYXgpIC8gdGhpcy5TVFJPS0VfT1BBQ0lUWV9EVklERVIgKyB0aGlzLlNUUk9LRV9PUEFDSVRZX0FERElUSU9OO1xuXG4gICAgICAgIEZSQU1FU1sxXSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuYW5pbWF0aW9uU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9hbmltYXRpb24gPSB0aGlzLl9zdmdDaXJjbGUubmF0aXZlRWxlbWVudC5hbmltYXRlKEZSQU1FUywge1xuICAgICAgICAgICAgZWFzaW5nOiAnZWFzZS1vdXQnLFxuICAgICAgICAgICAgZmlsbDogJ2ZvcndhcmRzJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvZ3Jlc3MocGVyY2VudGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXJlY3Rpb25hbGl0eS5ydGwgP1xuICAgICAgICAgICAgdGhpcy5fY2lyY3VtZmVyZW5jZSArIChwZXJjZW50YWdlICogdGhpcy5fY2lyY3VtZmVyZW5jZSAvIDEwMCkgOlxuICAgICAgICAgICAgdGhpcy5fY2lyY3VtZmVyZW5jZSAtIChwZXJjZW50YWdlICogdGhpcy5fY2lyY3VtZmVyZW5jZSAvIDEwMCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgdmFsdWVJblJhbmdlID0gKHZhbHVlOiBudW1iZXIsIG1heDogbnVtYmVyLCBtaW4gPSAwKTogbnVtYmVyID0+IE1hdGgubWF4KE1hdGgubWluKHZhbHVlLCBtYXgpLCBtaW4pO1xuXG5leHBvcnQgY29uc3QgdG9QZXJjZW50ID0gKHZhbHVlOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiAhbWF4ID8gMCA6IE1hdGguZmxvb3IoMTAwICogdmFsdWUgLyBtYXgpO1xuXG5leHBvcnQgY29uc3QgdG9WYWx1ZSA9ICh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gbWF4ICogdmFsdWUgLyAxMDA7XG5cblxuIiwiPGRpdiBjbGFzcz1cImlneC1saW5lYXItYmFyX19iYXNlXCI+XG4gICAgPGRpdiAjaW5kaWNhdG9yIGNsYXNzPVwiaWd4LWxpbmVhci1iYXJfX2luZGljYXRvclwiIFtzdHlsZS53aWR0aF09XCIwXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlneC1saW5lYXItYmFyX19pbmRpY2F0b3Itc2Vjb25kYXJ5XCI+PC9kaXY+XG48L2Rpdj5cblxuPHNwYW5cbiAgICBjbGFzcz1cImlneC1saW5lYXItYmFyX192YWx1ZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnaWd4LWxpbmVhci1iYXJfX3ZhbHVlLS1zdGFydCc6IHRleHRBbGlnbiA9PT0gJ3N0YXJ0JyxcbiAgICAgICAgJ2lneC1saW5lYXItYmFyX192YWx1ZS0tY2VudGVyJzogdGV4dEFsaWduID09PSAnY2VudGVyJyxcbiAgICAgICAgJ2lneC1saW5lYXItYmFyX192YWx1ZS0tZW5kJzogdGV4dEFsaWduID09PSAnZW5kJyxcbiAgICAgICAgJ2lneC1saW5lYXItYmFyX192YWx1ZS0tdG9wJzogdGV4dFRvcCxcbiAgICAgICAgJ2lneC1saW5lYXItYmFyX192YWx1ZS0taGlkZGVuJzogIXRleHRWaXNpYmlsaXR5XG4gICAgfVwiPlxuICAgICAgICB7e3RleHQgPyB0ZXh0IDogdmFsdWVJblBlcmNlbnQgKyAnJSd9fVxuPC9zcGFuPlxuIiwiPHN2ZyAjc3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCJcbiAgICB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIlxuICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiPlxuICAgIDxzdmc6Y2lyY2xlIGNsYXNzPVwiaWd4LWNpcmN1bGFyLWJhcl9faW5uZXJcIiBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0NlwiIC8+XG4gICAgPHN2ZzpjaXJjbGUgI2NpcmNsZSBjbGFzcz1cImlneC1jaXJjdWxhci1iYXJfX291dGVyXCIgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDZcIiAvPlxuXG4gICAgPHN2ZzpkZWZzPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdyYWRpZW50VGVtcGxhdGUgPyBncmFkaWVudFRlbXBsYXRlLnRlbXBsYXRlIDogZGVmYXVsdEdyYWRpZW50VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JhZGllbnRJZCB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc3ZnOmRlZnM+XG5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHcmFkaWVudFRlbXBsYXRlPlxuICAgICAgICA8c3ZnOmxpbmVhckdyYWRpZW50IFtpZF09XCJncmFkaWVudElkXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJyb3RhdGUoOTApXCI+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiAgIGNsYXNzPVwiaWd4LWNpcmN1bGFyLWJhcl9fZ3JhZGllbnQtc3RhcnRcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjEwMCVcIiBjbGFzcz1cImlneC1jaXJjdWxhci1iYXJfX2dyYWRpZW50LWVuZFwiIC8+XG4gICAgICAgIDwvc3ZnOmxpbmVhckdyYWRpZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3N2Zz5cblxuPHNwYW4gY2xhc3M9XCJpZ3gtY2lyY3VsYXItYmFyX190ZXh0XCIgKm5nSWY9XCJ0ZXh0VmlzaWJpbGl0eVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0VGVtcGxhdGUgPyB0ZXh0VGVtcGxhdGUudGVtcGxhdGUgOiBkZWZhdWx0VGV4dFRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogY29udGV4dFwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRUZXh0VGVtcGxhdGU+XG4gICAge3t0ZXh0Q29udGVudCA/IHRleHRDb250ZW50OiB2YWx1ZUluUGVyY2VudCArICclJ319XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
|
|
@@ -8,11 +8,11 @@ import * as i2 from "./progressbar.common";
|
|
|
8
8
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
9
9
|
*/
|
|
10
10
|
export class IgxProgressBarModule {
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.
|
|
13
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarModule, imports: [i1.IgxLinearProgressBarComponent, i1.IgxCircularProgressBarComponent, i2.IgxProgressBarTextTemplateDirective, i2.IgxProgressBarGradientDirective], exports: [i1.IgxLinearProgressBarComponent, i1.IgxCircularProgressBarComponent, i2.IgxProgressBarTextTemplateDirective, i2.IgxProgressBarGradientDirective] }); }
|
|
13
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarModule }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxProgressBarModule, decorators: [{
|
|
16
16
|
type: NgModule,
|
|
17
17
|
args: [{
|
|
18
18
|
imports: [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, booleanAttribute } from '@angular/core';
|
|
2
2
|
import { QueryBuilderResourceStringsEN } from '../core/i18n/query-builder-resources';
|
|
3
3
|
import { NgIf } from '@angular/common';
|
|
4
4
|
import { getCurrentResourceStrings } from '../core/i18n/resources';
|
|
@@ -29,17 +29,18 @@ export class IgxQueryBuilderHeaderComponent {
|
|
|
29
29
|
get resourceStrings() {
|
|
30
30
|
return this._resourceStrings;
|
|
31
31
|
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxQueryBuilderHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: IgxQueryBuilderHeaderComponent, isStandalone: true, selector: "igx-query-builder-header", inputs: { title: "title", showLegend: ["showLegend", "showLegend", booleanAttribute], resourceStrings: "resourceStrings" }, ngImport: i0, template: "<div class=\"igx-query-builder__header\">\n <div class=\"ig-typography__h6\" style=\"pointer-events: none;\">\n {{ title }}\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showLegend\" class=\"igx-builder-legend\" >\n <div class=\"igx-builder-legend__item--and\">\n <span>{{this.resourceStrings.igx_query_builder_and_label}}</span>\n </div>\n <div class=\"igx-builder-legend__item--or\">\n <span>{{this.resourceStrings.igx_query_builder_or_label}}</span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxQueryBuilderHeaderComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
37
|
args: [{ selector: 'igx-query-builder-header', standalone: true, imports: [NgIf], template: "<div class=\"igx-query-builder__header\">\n <div class=\"ig-typography__h6\" style=\"pointer-events: none;\">\n {{ title }}\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showLegend\" class=\"igx-builder-legend\" >\n <div class=\"igx-builder-legend__item--and\">\n <span>{{this.resourceStrings.igx_query_builder_and_label}}</span>\n </div>\n <div class=\"igx-builder-legend__item--or\">\n <span>{{this.resourceStrings.igx_query_builder_or_label}}</span>\n </div>\n </div>\n</div>\n" }]
|
|
38
38
|
}], propDecorators: { title: [{
|
|
39
39
|
type: Input
|
|
40
40
|
}], showLegend: [{
|
|
41
|
-
type: Input
|
|
41
|
+
type: Input,
|
|
42
|
+
args: [{ transform: booleanAttribute }]
|
|
42
43
|
}], resourceStrings: [{
|
|
43
44
|
type: Input
|
|
44
45
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFnQyw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFRbkUsTUFBTSxPQUFPLDhCQUE4QjtJQU4zQztRQVFZLHFCQUFnQixHQUFHLHlCQUF5QixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFhcEY7Ozs7Ozs7V0FPRztRQUVJLGVBQVUsR0FBRyxJQUFJLENBQUM7S0FpQjVCO0lBZkc7OztPQUdHO0lBQ0gsSUFDVyxlQUFlLENBQUMsS0FBbUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzttSEF4Q1EsOEJBQThCO3VHQUE5Qiw4QkFBOEIsK0hBdUJuQixnQkFBZ0IsaUVDbEN4QyxvakJBY0EsNENETGMsSUFBSTs7Z0dBRUwsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNJLDBCQUEwQixjQUV4QixJQUFJLFdBQ1AsQ0FBQyxJQUFJLENBQUM7OEJBZVIsS0FBSztzQkFEWCxLQUFLO2dCQVlDLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUTNCLGVBQWU7c0JBRHpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUXVlcnlCdWlsZGVyUmVzb3VyY2VTdHJpbmdzLCBRdWVyeUJ1aWxkZXJSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4uL2NvcmUvaTE4bi9xdWVyeS1idWlsZGVyLXJlc291cmNlcyc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtcXVlcnktYnVpbGRlci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAncXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWZdXG59KVxuZXhwb3J0IGNsYXNzIElneFF1ZXJ5QnVpbGRlckhlYWRlckNvbXBvbmVudCB7XG5cbiAgICBwcml2YXRlIF9yZXNvdXJjZVN0cmluZ3MgPSBnZXRDdXJyZW50UmVzb3VyY2VTdHJpbmdzKFF1ZXJ5QnVpbGRlclJlc291cmNlU3RyaW5nc0VOKTtcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIHRpdGxlIG9mIHRoZSBgSWd4UXVlcnlCdWlsZGVySGVhZGVyQ29tcG9uZW50YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcXVlcnktYnVpbGRlci1oZWFkZXIgdGl0bGU9XCJTYW1wbGUgUXVlcnkgQnVpbGRlclwiPjwvaWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2hvdy9oaWRlIHRoZSBsZWdlbmQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyIFtzaG93TGVnZW5kXT1cImZhbHNlXCI+PC9pZ3gtcXVlcnktYnVpbGRlci1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNob3dMZWdlbmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgKiBCeSBkZWZhdWx0IGl0IHVzZXMgRU4gcmVzb3VyY2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXNvdXJjZVN0cmluZ3ModmFsdWU6IElRdWVyeUJ1aWxkZXJSZXNvdXJjZVN0cmluZ3MpIHtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcmVzb3VyY2VTdHJpbmdzLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJlc291cmNlU3RyaW5ncygpOiBJUXVlcnlCdWlsZGVyUmVzb3VyY2VTdHJpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU3RyaW5ncztcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LXF1ZXJ5LWJ1aWxkZXJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJpZy10eXBvZ3JhcGh5X19oNlwiIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7XCI+XG4gICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0xlZ2VuZFwiIGNsYXNzPVwiaWd4LWJ1aWxkZXItbGVnZW5kXCIgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWJ1aWxkZXItbGVnZW5kX19pdGVtLS1hbmRcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7dGhpcy5yZXNvdXJjZVN0cmluZ3MuaWd4X3F1ZXJ5X2J1aWxkZXJfYW5kX2xhYmVsfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWJ1aWxkZXItbGVnZW5kX19pdGVtLS1vclwiPlxuICAgICAgICAgICAgPHNwYW4+e3t0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfcXVlcnlfYnVpbGRlcl9vcl9sYWJlbH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|