@clr/angular 12.0.5 → 13.0.0-next.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/accordion/accordion-content.d.ts +3 -0
- package/accordion/accordion-description.d.ts +3 -0
- package/accordion/accordion-panel.d.ts +3 -0
- package/accordion/accordion-title.d.ts +3 -0
- package/accordion/accordion.d.ts +3 -0
- package/accordion/accordion.module.d.ts +13 -0
- package/accordion/chocolate/accordion-oompa-loompa.d.ts +3 -0
- package/accordion/chocolate/accordion-willy-wonka.d.ts +3 -0
- package/accordion/providers/accordion.service.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +3 -0
- package/accordion/stepper/providers/stepper.service.d.ts +3 -0
- package/accordion/stepper/step-button.d.ts +3 -0
- package/accordion/stepper/stepper-panel.d.ts +3 -0
- package/accordion/stepper/stepper.d.ts +3 -0
- package/accordion/stepper/stepper.module.d.ts +12 -0
- package/button/button-group/button-group.d.ts +3 -0
- package/button/button-group/button-group.module.d.ts +9 -0
- package/button/button-group/button.d.ts +3 -0
- package/button/button-loading/loading-button.d.ts +3 -0
- package/button/button-loading/loading-button.module.d.ts +6 -0
- package/button/button.module.d.ts +6 -0
- package/button/providers/button-in-group.service.d.ts +3 -0
- package/clr-angular.d.ts +1 -105
- package/clr-angular.module.d.ts +23 -0
- package/data/data.module.d.ts +7 -0
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +3 -0
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +3 -0
- package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +3 -0
- package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/datagrid-action-bar.d.ts +3 -0
- package/data/datagrid/datagrid-action-overflow.d.ts +3 -0
- package/data/datagrid/datagrid-cell.d.ts +3 -0
- package/data/datagrid/datagrid-column-separator.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-button.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-title.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle.d.ts +3 -0
- package/data/datagrid/datagrid-column.d.ts +3 -0
- package/data/datagrid/datagrid-detail-body.d.ts +3 -0
- package/data/datagrid/datagrid-detail-header.d.ts +3 -0
- package/data/datagrid/datagrid-detail-registerer.d.ts +3 -0
- package/data/datagrid/datagrid-detail.d.ts +3 -0
- package/data/datagrid/datagrid-filter.d.ts +3 -0
- package/data/datagrid/datagrid-footer.d.ts +3 -0
- package/data/datagrid/datagrid-hideable-column.d.ts +3 -0
- package/data/datagrid/datagrid-if-detail.d.ts +3 -0
- package/data/datagrid/datagrid-if-expanded.service.d.ts +3 -0
- package/data/datagrid/datagrid-items-trackby.d.ts +3 -0
- package/data/datagrid/datagrid-items.d.ts +3 -0
- package/data/datagrid/datagrid-page-size.d.ts +3 -0
- package/data/datagrid/datagrid-pagination.d.ts +3 -0
- package/data/datagrid/datagrid-placeholder.d.ts +3 -0
- package/data/datagrid/datagrid-row-detail.d.ts +3 -0
- package/data/datagrid/datagrid-row.d.ts +3 -0
- package/data/datagrid/datagrid.d.ts +4 -1
- package/data/datagrid/datagrid.module.d.ts +53 -0
- package/data/datagrid/providers/column-resizer.service.d.ts +3 -0
- package/data/datagrid/providers/columns.service.d.ts +3 -0
- package/data/datagrid/providers/detail.service.d.ts +3 -0
- package/data/datagrid/providers/display-mode.service.d.ts +3 -0
- package/data/datagrid/providers/filters.d.ts +3 -0
- package/data/datagrid/providers/global-expandable-rows.d.ts +3 -0
- package/data/datagrid/providers/items.d.ts +3 -0
- package/data/datagrid/providers/page.d.ts +3 -0
- package/data/datagrid/providers/row-action-service.d.ts +3 -0
- package/data/datagrid/providers/selection.d.ts +3 -0
- package/data/datagrid/providers/sort.d.ts +3 -0
- package/data/datagrid/providers/state-debouncer.provider.d.ts +3 -0
- package/data/datagrid/providers/state.provider.d.ts +3 -0
- package/data/datagrid/providers/table-size.service.d.ts +3 -0
- package/data/datagrid/render/cell-renderer.d.ts +3 -0
- package/data/datagrid/render/header-renderer.d.ts +3 -0
- package/data/datagrid/render/main-renderer.d.ts +3 -0
- package/data/datagrid/render/noop-dom-adapter.d.ts +4 -1
- package/data/datagrid/render/render-organizer.d.ts +3 -0
- package/data/datagrid/render/row-renderer.d.ts +3 -0
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +3 -0
- package/data/datagrid/wrapped-cell.d.ts +3 -0
- package/data/datagrid/wrapped-column.d.ts +3 -0
- package/data/datagrid/wrapped-row.d.ts +3 -0
- package/data/stack-view/stack-block.d.ts +3 -0
- package/data/stack-view/stack-content-input.d.ts +3 -0
- package/data/stack-view/stack-header.d.ts +3 -0
- package/data/stack-view/stack-input.d.ts +3 -6
- package/data/stack-view/stack-select.d.ts +3 -5
- package/data/stack-view/stack-view-custom-tags.d.ts +3 -0
- package/data/stack-view/stack-view.d.ts +3 -0
- package/data/stack-view/stack-view.module.d.ts +15 -0
- package/data/tree-view/recursive-children.d.ts +3 -0
- package/data/tree-view/recursive-for-of.d.ts +3 -0
- package/data/tree-view/tree-features.service.d.ts +3 -0
- package/data/tree-view/tree-focus-manager.service.d.ts +3 -0
- package/data/tree-view/tree-node-link.d.ts +3 -0
- package/data/tree-view/tree-node.d.ts +3 -0
- package/data/tree-view/tree-view.module.d.ts +12 -0
- package/data/tree-view/tree.d.ts +3 -0
- package/emphasis/alert/alert-item.d.ts +3 -0
- package/emphasis/alert/alert-text.d.ts +3 -0
- package/emphasis/alert/alert.d.ts +3 -0
- package/emphasis/alert/alert.module.d.ts +12 -0
- package/emphasis/alert/alerts-pager.d.ts +3 -0
- package/emphasis/alert/alerts.d.ts +3 -0
- package/emphasis/alert/providers/icon-and-types.service.d.ts +3 -0
- package/emphasis/alert/providers/multi-alert.service.d.ts +3 -0
- package/emphasis/emphasis.module.d.ts +5 -0
- package/esm2020/accordion/accordion-content.mjs +20 -0
- package/esm2020/accordion/accordion-description.mjs +21 -0
- package/esm2020/accordion/accordion-panel.mjs +108 -0
- package/esm2020/accordion/accordion-title.mjs +21 -0
- package/esm2020/accordion/accordion.mjs +61 -0
- package/esm2020/accordion/accordion.module.mjs +55 -0
- package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/enums/accordion-status.enum.js → esm2020/accordion/enums/accordion-status.enum.mjs} +0 -0
- package/{esm2015/accordion/enums/accordion-strategy.enum.js → esm2020/accordion/enums/accordion-strategy.enum.mjs} +0 -0
- package/{esm2015/accordion/index.js → esm2020/accordion/index.mjs} +0 -0
- package/{esm2015/accordion/models/accordion.model.js → esm2020/accordion/models/accordion.model.mjs} +0 -0
- package/esm2020/accordion/providers/accordion.service.mjs +47 -0
- package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/stepper/index.js → esm2020/accordion/stepper/index.mjs} +0 -0
- package/{esm2015/accordion/stepper/models/stepper.model.js → esm2020/accordion/stepper/models/stepper.model.mjs} +0 -0
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +55 -0
- package/esm2020/accordion/stepper/step-button.mjs +51 -0
- package/esm2020/accordion/stepper/stepper-panel.mjs +89 -0
- package/esm2020/accordion/stepper/stepper.mjs +93 -0
- package/esm2020/accordion/stepper/stepper.module.mjs +30 -0
- package/{esm2015/accordion/utils/animation.js → esm2020/accordion/utils/animation.mjs} +0 -0
- package/esm2020/button/button-group/button-group.mjs +140 -0
- package/esm2020/button/button-group/button-group.module.mjs +27 -0
- package/{esm2015/button/button-group/button.js → esm2020/button/button-group/button.mjs} +57 -24
- package/{esm2015/button/button-group/index.js → esm2020/button/button-group/index.mjs} +0 -0
- package/{esm2015/button/button-loading/index.js → esm2020/button/button-loading/index.mjs} +0 -0
- package/esm2020/button/button-loading/loading-button.mjs +150 -0
- package/esm2020/button/button-loading/loading-button.module.mjs +24 -0
- package/esm2020/button/button.module.mjs +25 -0
- package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
- package/esm2020/button/providers/button-in-group.service.mjs +25 -0
- package/esm2020/clr-angular.mjs +5 -0
- package/esm2020/clr-angular.module.mjs +96 -0
- package/esm2020/data/data.module.mjs +20 -0
- package/{esm2015/data/datagrid/built-in/comparators/datagrid-property-comparator.js → esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +200 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-numeric-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-string-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-string-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +131 -0
- package/{esm2015/data/datagrid/built-in/nested-property.js → esm2020/data/datagrid/built-in/nested-property.mjs} +0 -0
- package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +17 -0
- package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/datagrid-action-bar.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +161 -0
- package/esm2020/data/datagrid/datagrid-cell.mjs +39 -0
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +172 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-title.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +229 -0
- package/esm2020/data/datagrid/datagrid-column.mjs +430 -0
- package/esm2020/data/datagrid/datagrid-detail-body.mjs +30 -0
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +61 -0
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +34 -0
- package/esm2020/data/datagrid/datagrid-detail.mjs +70 -0
- package/esm2020/data/datagrid/datagrid-filter.mjs +182 -0
- package/esm2020/data/datagrid/datagrid-footer.mjs +79 -0
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +104 -0
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +54 -0
- package/esm2020/data/datagrid/datagrid-items-trackby.mjs +32 -0
- package/esm2020/data/datagrid/datagrid-items.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-page-size.mjs +47 -0
- package/esm2020/data/datagrid/datagrid-pagination.mjs +362 -0
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +41 -0
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +90 -0
- package/esm2020/data/datagrid/datagrid-row.mjs +241 -0
- package/esm2020/data/datagrid/datagrid.mjs +349 -0
- package/esm2020/data/datagrid/datagrid.module.mjs +237 -0
- package/esm2020/data/datagrid/enums/column-changes.enum.mjs +14 -0
- package/{esm2015/data/datagrid/enums/display-mode.enum.js → esm2020/data/datagrid/enums/display-mode.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/render-step.enum.js → esm2020/data/datagrid/enums/render-step.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/selection-type.js → esm2020/data/datagrid/enums/selection-type.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/sort-order.enum.js → esm2020/data/datagrid/enums/sort-order.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/index.js → esm2020/data/datagrid/index.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/column-state.interface.js → esm2020/data/datagrid/interfaces/column-state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/comparator.interface.js → esm2020/data/datagrid/interfaces/comparator.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/filter.interface.js → esm2020/data/datagrid/interfaces/filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/numeric-filter.interface.js → esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/state.interface.js → esm2020/data/datagrid/interfaces/state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/string-filter.interface.js → esm2020/data/datagrid/interfaces/string-filter.interface.mjs} +0 -0
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +57 -0
- package/{esm2015/data/datagrid/providers/column-state.provider.js → esm2020/data/datagrid/providers/column-state.provider.mjs} +0 -0
- package/esm2020/data/datagrid/providers/columns.service.mjs +53 -0
- package/{esm2015/data/datagrid/providers/custom-filter.js → esm2020/data/datagrid/providers/custom-filter.mjs} +0 -0
- package/esm2020/data/datagrid/providers/detail.service.mjs +61 -0
- package/esm2020/data/datagrid/providers/display-mode.service.mjs +35 -0
- package/esm2020/data/datagrid/providers/filters.mjs +111 -0
- package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +33 -0
- package/esm2020/data/datagrid/providers/items.mjs +173 -0
- package/esm2020/data/datagrid/providers/page.mjs +155 -0
- package/esm2020/data/datagrid/providers/row-action-service.mjs +30 -0
- package/esm2020/data/datagrid/providers/selection.mjs +374 -0
- package/esm2020/data/datagrid/providers/sort.mjs +85 -0
- package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +42 -0
- package/esm2020/data/datagrid/providers/state.provider.mjs +74 -0
- package/esm2020/data/datagrid/providers/table-size.service.mjs +44 -0
- package/esm2020/data/datagrid/render/cell-renderer.mjs +81 -0
- package/{esm2015/data/datagrid/render/constants.js → esm2020/data/datagrid/render/constants.mjs} +0 -0
- package/esm2020/data/datagrid/render/header-renderer.mjs +132 -0
- package/esm2020/data/datagrid/render/main-renderer.mjs +198 -0
- package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +54 -0
- package/esm2020/data/datagrid/render/render-organizer.mjs +38 -0
- package/esm2020/data/datagrid/render/row-renderer.mjs +58 -0
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +42 -0
- package/esm2020/data/datagrid/wrapped-cell.mjs +39 -0
- package/esm2020/data/datagrid/wrapped-column.mjs +40 -0
- package/esm2020/data/datagrid/wrapped-row.mjs +40 -0
- package/{esm2015/data/index.js → esm2020/data/index.mjs} +0 -0
- package/{esm2015/data/stack-view/index.js → esm2020/data/stack-view/index.mjs} +0 -0
- package/esm2020/data/stack-view/stack-block.mjs +214 -0
- package/esm2020/data/stack-view/stack-content-input.mjs +29 -0
- package/{esm2015/data/stack-view/stack-control.js → esm2020/data/stack-view/stack-control.mjs} +0 -0
- package/esm2020/data/stack-view/stack-header.mjs +68 -0
- package/{esm2015/data/stack-view/stack-input.js → esm2020/data/stack-view/stack-input.mjs} +20 -14
- package/esm2020/data/stack-view/stack-select.mjs +48 -0
- package/esm2020/data/stack-view/stack-view-custom-tags.mjs +16 -0
- package/esm2020/data/stack-view/stack-view.mjs +57 -0
- package/esm2020/data/stack-view/stack-view.module.mjs +69 -0
- package/{esm2015/data/tree-view/index.js → esm2020/data/tree-view/index.mjs} +0 -0
- package/{esm2015/data/tree-view/models/async-array.js → esm2020/data/tree-view/models/async-array.mjs} +0 -0
- package/{esm2015/data/tree-view/models/declarative-tree-node.model.js → esm2020/data/tree-view/models/declarative-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/recursive-tree-node.model.js → esm2020/data/tree-view/models/recursive-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/selected-state.enum.js → esm2020/data/tree-view/models/selected-state.enum.mjs} +0 -0
- package/{esm2015/data/tree-view/models/tree-node.model.js → esm2020/data/tree-view/models/tree-node.model.mjs} +0 -0
- package/esm2020/data/tree-view/recursive-children.mjs +81 -0
- package/esm2020/data/tree-view/recursive-for-of.mjs +54 -0
- package/esm2020/data/tree-view/tree-features.service.mjs +37 -0
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +121 -0
- package/esm2020/data/tree-view/tree-node-link.mjs +26 -0
- package/esm2020/data/tree-view/tree-node.mjs +279 -0
- package/esm2020/data/tree-view/tree-view.module.mjs +34 -0
- package/esm2020/data/tree-view/tree.mjs +91 -0
- package/esm2020/emphasis/alert/alert-item.mjs +43 -0
- package/esm2020/emphasis/alert/alert-text.mjs +22 -0
- package/esm2020/emphasis/alert/alert.mjs +107 -0
- package/esm2020/emphasis/alert/alert.module.mjs +34 -0
- package/esm2020/emphasis/alert/alerts-pager.mjs +72 -0
- package/esm2020/emphasis/alert/alerts.mjs +100 -0
- package/{esm2015/emphasis/alert/index.js → esm2020/emphasis/alert/index.mjs} +0 -0
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +74 -0
- package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +79 -0
- package/{esm2015/emphasis/alert/utils/alert-info-object.js → esm2020/emphasis/alert/utils/alert-info-object.mjs} +0 -0
- package/{esm2015/emphasis/alert/utils/alert-types.js → esm2020/emphasis/alert/utils/alert-types.mjs} +0 -0
- package/esm2020/emphasis/emphasis.module.mjs +18 -0
- package/{esm2015/emphasis/index.js → esm2020/emphasis/index.mjs} +0 -0
- package/esm2020/forms/checkbox/checkbox-container.mjs +127 -0
- package/esm2020/forms/checkbox/checkbox-wrapper.mjs +68 -0
- package/esm2020/forms/checkbox/checkbox.mjs +43 -0
- package/esm2020/forms/checkbox/checkbox.module.mjs +33 -0
- package/{esm2015/forms/checkbox/index.js → esm2020/forms/checkbox/index.mjs} +0 -0
- package/esm2020/forms/combobox/combobox-container.mjs +109 -0
- package/esm2020/forms/combobox/combobox.mjs +363 -0
- package/esm2020/forms/combobox/combobox.module.mjs +81 -0
- package/{esm2015/forms/combobox/index.js → esm2020/forms/combobox/index.mjs} +0 -0
- package/{esm2015/forms/combobox/model/combobox.model.js → esm2020/forms/combobox/model/combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/multi-select-combobox.model.js → esm2020/forms/combobox/model/multi-select-combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/pseudo-focus.model.js → esm2020/forms/combobox/model/pseudo-focus.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/single-select-combobox.model.js → esm2020/forms/combobox/model/single-select-combobox.model.mjs} +0 -0
- package/esm2020/forms/combobox/option-items.directive.mjs +97 -0
- package/esm2020/forms/combobox/option-selected.directive.mjs +22 -0
- package/esm2020/forms/combobox/option.mjs +102 -0
- package/esm2020/forms/combobox/options.mjs +152 -0
- package/esm2020/forms/combobox/providers/combobox-container.service.mjs +18 -0
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +215 -0
- package/esm2020/forms/combobox/providers/option-selection.service.mjs +81 -0
- package/esm2020/forms/common/abstract-container.mjs +119 -0
- package/esm2020/forms/common/abstract-control.mjs +50 -0
- package/esm2020/forms/common/common.module.mjs +78 -0
- package/esm2020/forms/common/control-container.mjs +83 -0
- package/esm2020/forms/common/control.mjs +27 -0
- package/esm2020/forms/common/error.mjs +36 -0
- package/esm2020/forms/common/form.mjs +53 -0
- package/esm2020/forms/common/helper.mjs +36 -0
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +44 -0
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +56 -0
- package/esm2020/forms/common/if-control-state/if-error.mjs +68 -0
- package/esm2020/forms/common/if-control-state/if-success.mjs +45 -0
- package/{esm2015/forms/common/index.js → esm2020/forms/common/index.mjs} +0 -0
- package/esm2020/forms/common/label.mjs +67 -0
- package/esm2020/forms/common/layout.mjs +31 -0
- package/esm2020/forms/common/providers/container-id.service.mjs +33 -0
- package/esm2020/forms/common/providers/control-class.service.mjs +52 -0
- package/esm2020/forms/common/providers/control-id.service.mjs +31 -0
- package/esm2020/forms/common/providers/focus.service.mjs +25 -0
- package/esm2020/forms/common/providers/layout.service.mjs +57 -0
- package/esm2020/forms/common/providers/mark-control.service.mjs +25 -0
- package/esm2020/forms/common/providers/ng-control.service.mjs +33 -0
- package/esm2020/forms/common/success.mjs +36 -0
- package/esm2020/forms/common/wrapped-control.mjs +156 -0
- package/esm2020/forms/datalist/datalist-container.mjs +122 -0
- package/esm2020/forms/datalist/datalist-input.mjs +62 -0
- package/esm2020/forms/datalist/datalist.mjs +48 -0
- package/esm2020/forms/datalist/datalist.module.mjs +31 -0
- package/{esm2015/forms/datalist/index.js → esm2020/forms/datalist/index.mjs} +0 -0
- package/esm2020/forms/datalist/providers/datalist-id.service.mjs +31 -0
- package/esm2020/forms/datepicker/calendar.mjs +118 -0
- package/esm2020/forms/datepicker/date-container.mjs +249 -0
- package/esm2020/forms/datepicker/date-input.mjs +290 -0
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +46 -0
- package/esm2020/forms/datepicker/datepicker.module.mjs +87 -0
- package/esm2020/forms/datepicker/day.mjs +86 -0
- package/esm2020/forms/datepicker/daypicker.mjs +80 -0
- package/{esm2015/forms/datepicker/index.js → esm2020/forms/datepicker/index.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/date-range.interface.js → esm2020/forms/datepicker/interfaces/date-range.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/day-of-week.interface.js → esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar-view.model.js → esm2020/forms/datepicker/model/calendar-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar.model.js → esm2020/forms/datepicker/model/calendar.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day-view.model.js → esm2020/forms/datepicker/model/day-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day.model.js → esm2020/forms/datepicker/model/day.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/year-range.model.js → esm2020/forms/datepicker/model/year-range.model.mjs} +0 -0
- package/esm2020/forms/datepicker/monthpicker.mjs +125 -0
- package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +36 -0
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +176 -0
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +130 -0
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +46 -0
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +47 -0
- package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +101 -0
- package/esm2020/forms/datepicker/providers/view-manager.service.mjs +41 -0
- package/{esm2015/forms/datepicker/utils/constants.js → esm2020/forms/datepicker/utils/constants.mjs} +0 -0
- package/{esm2015/forms/datepicker/utils/date-utils.js → esm2020/forms/datepicker/utils/date-utils.mjs} +0 -0
- package/esm2020/forms/datepicker/yearpicker.mjs +231 -0
- package/esm2020/forms/forms.module.mjs +64 -0
- package/{esm2015/forms/index.js → esm2020/forms/index.mjs} +0 -0
- package/{esm2015/forms/input/index.js → esm2020/forms/input/index.mjs} +0 -0
- package/{esm2015/forms/input/input-container.js → esm2020/forms/input/input-container.mjs} +44 -13
- package/esm2020/forms/input/input.mjs +27 -0
- package/esm2020/forms/input/input.module.mjs +33 -0
- package/{esm2015/forms/password/index.js → esm2020/forms/password/index.mjs} +0 -0
- package/esm2020/forms/password/password-container.mjs +175 -0
- package/esm2020/forms/password/password.mjs +61 -0
- package/esm2020/forms/password/password.module.mjs +32 -0
- package/{esm2015/forms/radio/index.js → esm2020/forms/radio/index.mjs} +0 -0
- package/esm2020/forms/radio/radio-container.mjs +127 -0
- package/esm2020/forms/radio/radio-wrapper.mjs +49 -0
- package/esm2020/forms/radio/radio.mjs +26 -0
- package/esm2020/forms/radio/radio.module.mjs +33 -0
- package/{esm2015/forms/range/index.js → esm2020/forms/range/index.mjs} +0 -0
- package/esm2020/forms/range/range-container.mjs +124 -0
- package/esm2020/forms/range/range.mjs +26 -0
- package/esm2020/forms/range/range.module.mjs +32 -0
- package/{esm2015/forms/select/index.js → esm2020/forms/select/index.mjs} +0 -0
- package/esm2020/forms/select/select-container.mjs +113 -0
- package/esm2020/forms/select/select.mjs +27 -0
- package/esm2020/forms/select/select.module.mjs +32 -0
- package/{esm2015/forms/textarea/index.js → esm2020/forms/textarea/index.mjs} +0 -0
- package/esm2020/forms/textarea/textarea-container.mjs +83 -0
- package/esm2020/forms/textarea/textarea.mjs +27 -0
- package/esm2020/forms/textarea/textarea.module.mjs +32 -0
- package/esm2020/icon/icon.mjs +24 -0
- package/esm2020/icon/icon.module.mjs +20 -0
- package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/layout/index.js → esm2020/layout/index.mjs} +0 -0
- package/esm2020/layout/layout.module.mjs +21 -0
- package/{esm2015/layout/main-container/index.js → esm2020/layout/main-container/index.mjs} +0 -0
- package/esm2020/layout/main-container/main-container.mjs +58 -0
- package/esm2020/layout/main-container/main-container.module.mjs +25 -0
- package/{esm2015/layout/nav/chocolate/index.js → esm2020/layout/nav/chocolate/index.mjs} +0 -0
- package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +17 -0
- package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +33 -0
- package/esm2020/layout/nav/header.mjs +120 -0
- package/{esm2015/layout/nav/index.js → esm2020/layout/nav/index.mjs} +0 -0
- package/esm2020/layout/nav/nav-level.mjs +81 -0
- package/esm2020/layout/nav/navigation.module.mjs +40 -0
- package/{esm2015/layout/nav/providers/responsive-navigation.service.js → esm2020/layout/nav/providers/responsive-navigation.service.mjs} +7 -6
- package/{esm2015/layout/nav/responsive-nav-codes.js → esm2020/layout/nav/responsive-nav-codes.mjs} +0 -0
- package/{esm2015/layout/nav/responsive-nav-control-message.js → esm2020/layout/nav/responsive-nav-control-message.mjs} +0 -0
- package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +36 -0
- package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +17 -0
- package/{esm2015/layout/tabs/enums/tabs-layout.enum.js → esm2020/layout/tabs/enums/tabs-layout.enum.mjs} +0 -0
- package/{esm2015/layout/tabs/index.js → esm2020/layout/tabs/index.mjs} +0 -0
- package/esm2020/layout/tabs/providers/tabs.service.mjs +45 -0
- package/esm2020/layout/tabs/tab-content.mjs +96 -0
- package/esm2020/layout/tabs/tab-link.directive.mjs +115 -0
- package/esm2020/layout/tabs/tab-overflow-content.mjs +22 -0
- package/esm2020/layout/tabs/tab.mjs +47 -0
- package/{esm2015/layout/tabs/tabs-id.provider.js → esm2020/layout/tabs/tabs-id.provider.mjs} +0 -0
- package/esm2020/layout/tabs/tabs.mjs +312 -0
- package/esm2020/layout/tabs/tabs.module.mjs +58 -0
- package/{esm2015/layout/vertical-nav/index.js → esm2020/layout/vertical-nav/index.mjs} +0 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +24 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +25 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +27 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +54 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +19 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +162 -0
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +24 -0
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +44 -0
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +79 -0
- package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +49 -0
- package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
- package/esm2020/modal/modal-body.mjs +42 -0
- package/esm2020/modal/modal.mjs +145 -0
- package/esm2020/modal/modal.module.mjs +32 -0
- package/esm2020/popover/common/abstract-popover.mjs +134 -0
- package/{esm2015/popover/common/popover-host-anchor.token.js → esm2020/popover/common/popover-host-anchor.token.mjs} +0 -0
- package/{esm2015/popover/common/popover-options.interface.js → esm2020/popover/common/popover-options.interface.mjs} +0 -0
- package/{esm2015/popover/common/popover.js → esm2020/popover/common/popover.mjs} +0 -0
- package/esm2020/popover/dropdown/dropdown-item.mjs +88 -0
- package/esm2020/popover/dropdown/dropdown-menu.mjs +114 -0
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +48 -0
- package/esm2020/popover/dropdown/dropdown.mjs +62 -0
- package/esm2020/popover/dropdown/dropdown.module.mjs +29 -0
- package/{esm2015/popover/dropdown/index.js → esm2020/popover/dropdown/index.mjs} +0 -0
- package/{esm2015/popover/dropdown/menu-positions.js → esm2020/popover/dropdown/menu-positions.mjs} +0 -0
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +186 -0
- package/esm2020/popover/dropdown/providers/dropdown.service.mjs +33 -0
- package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
- package/esm2020/popover/popover.module.mjs +20 -0
- package/{esm2015/popover/signpost/index.js → esm2020/popover/signpost/index.mjs} +0 -0
- package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +23 -0
- package/esm2020/popover/signpost/providers/signpost-id.service.mjs +26 -0
- package/esm2020/popover/signpost/signpost-content.mjs +177 -0
- package/{esm2015/popover/signpost/signpost-positions.js → esm2020/popover/signpost/signpost-positions.mjs} +0 -0
- package/esm2020/popover/signpost/signpost-trigger.mjs +96 -0
- package/esm2020/popover/signpost/signpost.mjs +89 -0
- package/esm2020/popover/signpost/signpost.module.mjs +33 -0
- package/{esm2015/popover/tooltip/index.js → esm2020/popover/tooltip/index.mjs} +0 -0
- package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +25 -0
- package/esm2020/popover/tooltip/tooltip-content.mjs +132 -0
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +54 -0
- package/esm2020/popover/tooltip/tooltip.mjs +41 -0
- package/esm2020/popover/tooltip/tooltip.module.mjs +28 -0
- package/{esm2015/progress/progress-bars/index.js → esm2020/progress/progress-bars/index.mjs} +0 -0
- package/{esm2015/progress/progress-bars/progress-bar.js → esm2020/progress/progress-bars/progress-bar.mjs} +75 -30
- package/esm2020/progress/progress-bars/progress-bar.module.mjs +24 -0
- package/{esm2015/progress/spinner/index.js → esm2020/progress/spinner/index.mjs} +0 -0
- package/esm2020/progress/spinner/spinner.mjs +83 -0
- package/esm2020/progress/spinner/spinner.module.mjs +24 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-layout.enum.js → esm2020/timeline/enums/timeline-layout.enum.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-step-state.enum.js → esm2020/timeline/enums/timeline-step-state.enum.mjs} +0 -0
- package/{esm2015/timeline/index.js → esm2020/timeline/index.mjs} +0 -0
- package/{esm2015/timeline/interface/icon-attribute.interface.js → esm2020/timeline/interface/icon-attribute.interface.mjs} +0 -0
- package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +54 -0
- package/esm2020/timeline/timeline-step-description.mjs +20 -0
- package/esm2020/timeline/timeline-step-header.mjs +20 -0
- package/esm2020/timeline/timeline-step-title.mjs +30 -0
- package/esm2020/timeline/timeline-step.mjs +101 -0
- package/esm2020/timeline/timeline.mjs +35 -0
- package/esm2020/timeline/timeline.module.mjs +48 -0
- package/esm2020/utils/a11y/aria-live.service.mjs +163 -0
- package/{esm2015/utils/a11y/index.js → esm2020/utils/a11y/index.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/collapse.js → esm2020/utils/animations/collapse/collapse.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/index.js → esm2020/utils/animations/collapse/index.mjs} +0 -0
- package/{esm2015/utils/animations/constants.js → esm2020/utils/animations/constants.mjs} +0 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +70 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +24 -0
- package/{esm2015/utils/animations/expandable-animation/index.js → esm2020/utils/animations/expandable-animation/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade/fade.js → esm2020/utils/animations/fade/fade.mjs} +0 -0
- package/{esm2015/utils/animations/fade/index.js → esm2020/utils/animations/fade/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/fade-slide.js → esm2020/utils/animations/fade-slide/fade-slide.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/index.js → esm2020/utils/animations/fade-slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/index.js → esm2020/utils/animations/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/index.js → esm2020/utils/animations/slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/slide.js → esm2020/utils/animations/slide/slide.mjs} +0 -0
- package/esm2020/utils/aria/aria.service.mjs +16 -0
- package/{esm2015/utils/breakpoints/breakpoints.js → esm2020/utils/breakpoints/breakpoints.mjs} +0 -0
- package/esm2020/utils/chocolate/oompa-loompa.mjs +32 -0
- package/esm2020/utils/chocolate/willy-wonka.mjs +36 -0
- package/{esm2015/utils/component/is-boolean-attribute-set.js → esm2020/utils/component/is-boolean-attribute-set.mjs} +0 -0
- package/esm2020/utils/conditional/conditional.module.mjs +22 -0
- package/esm2020/utils/conditional/if-active.directive.mjs +104 -0
- package/esm2020/utils/conditional/if-active.service.mjs +77 -0
- package/esm2020/utils/conditional/if-expanded.directive.mjs +92 -0
- package/esm2020/utils/conditional/if-expanded.service.mjs +58 -0
- package/esm2020/utils/conditional/if-open.directive.mjs +87 -0
- package/{esm2015/utils/conditional/index.js → esm2020/utils/conditional/index.mjs} +0 -0
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +52 -0
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +43 -0
- package/{esm2015/utils/drag-and-drop/drag-event.js → esm2020/utils/drag-and-drop/drag-event.mjs} +0 -0
- package/esm2020/utils/drag-and-drop/drag-handle.mjs +32 -0
- package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +135 -0
- package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +124 -0
- package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +222 -0
- package/esm2020/utils/drag-and-drop/if-dragged.mjs +45 -0
- package/{esm2015/utils/drag-and-drop/index.js → esm2020/utils/drag-and-drop/index.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drag-event.interface.js → esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drop-tolerance.interface.js → esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.js → esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs} +7 -5
- package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +179 -0
- package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +60 -0
- package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +38 -0
- package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +26 -0
- package/{esm2015/utils/enums/key-codes.enum.js → esm2020/utils/enums/key-codes.enum.mjs} +0 -0
- package/{esm2015/utils/focus/arrow-key-direction.enum.js → esm2020/utils/focus/arrow-key-direction.enum.mjs} +0 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +84 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +26 -0
- package/{esm2015/utils/focus/focus-on-view-init/focus-on-view-init.provider.js → esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs} +0 -0
- package/{esm2015/utils/focus/focus-on-view-init/index.js → esm2020/utils/focus/focus-on-view-init/index.mjs} +0 -0
- package/esm2020/utils/focus/focus.service.mjs +94 -0
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +58 -0
- package/{esm2015/utils/focus/focusable-item/custom-focusable-item-provider.js → esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/focusable-item.js → esm2020/utils/focus/focusable-item/focusable-item.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/linkers.js → esm2020/utils/focus/focusable-item/linkers.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/enums/focus-direction.enum.js → esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/interfaces.js → esm2020/utils/focus/key-focus/interfaces.mjs} +0 -0
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +34 -0
- package/esm2020/utils/focus/key-focus/key-focus.mjs +194 -0
- package/esm2020/utils/focus/key-focus/key-focus.module.mjs +26 -0
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +102 -0
- package/{esm2015/utils/focus/key-focus/util.js → esm2020/utils/focus/key-focus/util.mjs} +0 -0
- package/{esm2015/utils/focus/wrap-observable.js → esm2020/utils/focus/wrap-observable.mjs} +0 -0
- package/{esm2015/utils/focus-trap/focus-trap-config.interface.js → esm2020/utils/focus-trap/focus-trap-config.interface.mjs} +0 -0
- package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +32 -0
- package/esm2020/utils/focus-trap/focus-trap.directive.mjs +156 -0
- package/esm2020/utils/focus-trap/focus-trap.module.mjs +24 -0
- package/{esm2015/utils/focus-trap/index.js → esm2020/utils/focus-trap/index.mjs} +0 -0
- package/{esm2015/utils/forms/validation.js → esm2020/utils/forms/validation.mjs} +0 -0
- package/{esm2015/utils/host-wrapping/dynamic-wrapper.js → esm2020/utils/host-wrapping/dynamic-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/empty-anchor.mjs +18 -0
- package/{esm2015/utils/host-wrapping/host-wrapper.js → esm2020/utils/host-wrapping/host-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +21 -0
- package/esm2020/utils/i18n/common-strings.default.mjs +89 -0
- package/{esm2015/utils/i18n/common-strings.interface.js → esm2020/utils/i18n/common-strings.interface.mjs} +1 -1
- package/esm2020/utils/i18n/common-strings.service.mjs +47 -0
- package/{esm2015/utils/i18n/index.js → esm2020/utils/i18n/index.mjs} +0 -0
- package/{esm2015/utils/id-generator/id-generator.service.js → esm2020/utils/id-generator/id-generator.service.mjs} +0 -0
- package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
- package/{esm2015/utils/key-codes/key-codes.js → esm2020/utils/key-codes/key-codes.mjs} +0 -0
- package/{esm2015/utils/loading/index.js → esm2020/utils/loading/index.mjs} +0 -0
- package/{esm2015/utils/loading/loading-listener.js → esm2020/utils/loading/loading-listener.mjs} +0 -0
- package/esm2020/utils/loading/loading.mjs +55 -0
- package/esm2020/utils/loading/loading.module.mjs +20 -0
- package/{esm2015/utils/outside-click/index.js → esm2020/utils/outside-click/index.mjs} +0 -0
- package/esm2020/utils/outside-click/outside-click.mjs +46 -0
- package/esm2020/utils/outside-click/outside-click.module.mjs +20 -0
- package/{esm2015/utils/popover/enums/alignment.enum.js → esm2020/utils/popover/enums/alignment.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/axis.enum.js → esm2020/utils/popover/enums/axis.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/positions.enum.js → esm2020/utils/popover/enums/positions.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/side.enum.js → esm2020/utils/popover/enums/side.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/viewport-violation.enum.js → esm2020/utils/popover/enums/viewport-violation.enum.mjs} +0 -0
- package/{esm2015/utils/popover/index.js → esm2020/utils/popover/index.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-content-offset.interface.js → esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-position.interface.js → esm2020/utils/popover/interfaces/popover-position.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/visibility-coords.interface.js → esm2020/utils/popover/interfaces/visibility-coords.interface.mjs} +0 -0
- package/esm2020/utils/popover/popover-anchor.mjs +26 -0
- package/esm2020/utils/popover/popover-close-button.mjs +52 -0
- package/esm2020/utils/popover/popover-content.mjs +150 -0
- package/esm2020/utils/popover/popover-open-close-button.mjs +43 -0
- package/esm2020/utils/popover/popover.module.mjs +26 -0
- package/esm2020/utils/popover/position-operators.mjs +180 -0
- package/esm2020/utils/popover/providers/popover-events.service.mjs +160 -0
- package/esm2020/utils/popover/providers/popover-position.service.mjs +215 -0
- package/esm2020/utils/popover/providers/popover-toggle.service.mjs +70 -0
- package/esm2020/utils/scrolling/scrolling-service.mjs +30 -0
- package/{esm2015/utils/template-ref/index.js → esm2020/utils/template-ref/index.mjs} +0 -0
- package/esm2020/utils/template-ref/template-ref-container.mjs +29 -0
- package/esm2020/utils/template-ref/template-ref.module.mjs +25 -0
- package/{esm2015/wizard/index.js → esm2020/wizard/index.mjs} +0 -0
- package/esm2020/wizard/providers/button-hub.service.mjs +63 -0
- package/esm2020/wizard/providers/header-actions.service.mjs +37 -0
- package/esm2020/wizard/providers/page-collection.service.mjs +361 -0
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +574 -0
- package/esm2020/wizard/wizard-button.mjs +187 -0
- package/esm2020/wizard/wizard-custom-tags.mjs +16 -0
- package/esm2020/wizard/wizard-header-action.mjs +76 -0
- package/esm2020/wizard/wizard-page-buttons.mjs +19 -0
- package/esm2020/wizard/wizard-page-header-actions.mjs +19 -0
- package/esm2020/wizard/wizard-page-navtitle.mjs +19 -0
- package/esm2020/wizard/wizard-page-title.mjs +19 -0
- package/{esm2015/wizard/wizard-page.js → esm2020/wizard/wizard-page.mjs} +90 -47
- package/esm2020/wizard/wizard-stepnav-item.mjs +122 -0
- package/esm2020/wizard/wizard-stepnav.mjs +48 -0
- package/esm2020/wizard/wizard.mjs +475 -0
- package/esm2020/wizard/wizard.module.mjs +72 -0
- package/fesm2015/clr-angular.mjs +26606 -0
- package/fesm2015/clr-angular.mjs.map +1 -0
- package/{fesm2015/clr-angular.js → fesm2020/clr-angular.mjs} +8977 -6517
- package/fesm2020/clr-angular.mjs.map +1 -0
- package/forms/checkbox/checkbox-container.d.ts +3 -0
- package/forms/checkbox/checkbox-wrapper.d.ts +3 -0
- package/forms/checkbox/checkbox.d.ts +3 -0
- package/forms/checkbox/checkbox.module.d.ts +11 -5
- package/forms/combobox/combobox-container.d.ts +3 -0
- package/forms/combobox/combobox.d.ts +3 -5
- package/forms/combobox/combobox.module.d.ts +18 -5
- package/forms/combobox/option-items.directive.d.ts +3 -0
- package/forms/combobox/option-selected.directive.d.ts +3 -0
- package/forms/combobox/option.d.ts +3 -0
- package/forms/combobox/options.d.ts +3 -0
- package/forms/combobox/providers/combobox-container.service.d.ts +3 -0
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +4 -1
- package/forms/combobox/providers/option-selection.service.d.ts +3 -0
- package/forms/common/abstract-container.d.ts +3 -0
- package/forms/common/abstract-control.d.ts +3 -5
- package/forms/common/common.module.d.ts +16 -5
- package/forms/common/control-container.d.ts +3 -5
- package/forms/common/control.d.ts +3 -0
- package/forms/common/error.d.ts +3 -5
- package/forms/common/form.d.ts +3 -0
- package/forms/common/helper.d.ts +3 -5
- package/forms/common/if-control-state/abstract-if-state.d.ts +3 -0
- package/forms/common/if-control-state/if-control-state.service.d.ts +3 -0
- package/forms/common/if-control-state/if-error.d.ts +3 -0
- package/forms/common/if-control-state/if-success.d.ts +3 -0
- package/forms/common/label.d.ts +3 -0
- package/forms/common/layout.d.ts +3 -0
- package/forms/common/providers/container-id.service.d.ts +3 -0
- package/forms/common/providers/control-class.service.d.ts +3 -0
- package/forms/common/providers/control-id.service.d.ts +3 -0
- package/forms/common/providers/focus.service.d.ts +3 -0
- package/forms/common/providers/layout.service.d.ts +3 -0
- package/forms/common/providers/mark-control.service.d.ts +3 -0
- package/forms/common/providers/ng-control.service.d.ts +3 -0
- package/forms/common/success.d.ts +3 -5
- package/forms/common/wrapped-control.d.ts +3 -0
- package/forms/datalist/datalist-container.d.ts +3 -5
- package/forms/datalist/datalist-input.d.ts +3 -0
- package/forms/datalist/datalist.d.ts +3 -0
- package/forms/datalist/datalist.module.d.ts +10 -0
- package/forms/datalist/providers/datalist-id.service.d.ts +3 -0
- package/forms/datepicker/calendar.d.ts +3 -0
- package/forms/datepicker/date-container.d.ts +3 -0
- package/forms/datepicker/date-input.d.ts +3 -0
- package/forms/datepicker/datepicker-view-manager.d.ts +3 -0
- package/forms/datepicker/datepicker.module.d.ts +19 -0
- package/forms/datepicker/day.d.ts +3 -0
- package/forms/datepicker/daypicker.d.ts +3 -0
- package/forms/datepicker/monthpicker.d.ts +3 -0
- package/forms/datepicker/providers/date-form-control.service.d.ts +3 -0
- package/forms/datepicker/providers/date-io.service.d.ts +3 -0
- package/forms/datepicker/providers/date-navigation.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-enabled.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +3 -0
- package/forms/datepicker/providers/locale-helper.service.d.ts +3 -0
- package/forms/datepicker/providers/view-manager.service.d.ts +3 -0
- package/forms/datepicker/yearpicker.d.ts +3 -0
- package/forms/forms.module.d.ts +16 -0
- package/forms/input/input-container.d.ts +3 -5
- package/forms/input/input.d.ts +3 -0
- package/forms/input/input.module.d.ts +10 -5
- package/forms/password/password-container.d.ts +3 -0
- package/forms/password/password.d.ts +3 -0
- package/forms/password/password.module.d.ts +10 -5
- package/forms/radio/radio-container.d.ts +3 -0
- package/forms/radio/radio-wrapper.d.ts +3 -0
- package/forms/radio/radio.d.ts +3 -0
- package/forms/radio/radio.module.d.ts +11 -5
- package/forms/range/range-container.d.ts +3 -0
- package/forms/range/range.d.ts +3 -0
- package/forms/range/range.module.d.ts +10 -5
- package/forms/select/select-container.d.ts +3 -5
- package/forms/select/select.d.ts +3 -0
- package/forms/select/select.module.d.ts +10 -5
- package/forms/textarea/textarea-container.d.ts +3 -5
- package/forms/textarea/textarea.d.ts +3 -0
- package/forms/textarea/textarea.module.d.ts +10 -5
- package/icon/icon.d.ts +5 -0
- package/icon/icon.module.d.ts +6 -0
- package/layout/layout.module.d.ts +8 -0
- package/layout/main-container/main-container.d.ts +3 -0
- package/layout/main-container/main-container.module.d.ts +7 -0
- package/layout/nav/chocolate/main-container-willy-wonka.d.ts +3 -0
- package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +3 -0
- package/layout/nav/header.d.ts +3 -0
- package/layout/nav/nav-level.d.ts +3 -0
- package/layout/nav/navigation.module.d.ts +11 -0
- package/layout/nav/providers/responsive-navigation.service.d.ts +3 -0
- package/layout/tabs/chocolate/active-oompa-loompa.d.ts +3 -0
- package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +3 -0
- package/layout/tabs/providers/tabs.service.d.ts +3 -0
- package/layout/tabs/tab-content.d.ts +3 -0
- package/layout/tabs/tab-link.directive.d.ts +3 -0
- package/layout/tabs/tab-overflow-content.d.ts +3 -0
- package/layout/tabs/tab.d.ts +3 -0
- package/layout/tabs/tabs.d.ts +3 -0
- package/layout/tabs/tabs.module.d.ts +16 -0
- package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav.service.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group-children.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-icon.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-link.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.module.d.ts +13 -0
- package/modal/modal-body.d.ts +3 -0
- package/modal/modal.d.ts +3 -0
- package/modal/modal.module.d.ts +10 -0
- package/package.json +24 -12
- package/popover/common/abstract-popover.d.ts +3 -0
- package/popover/dropdown/dropdown-item.d.ts +3 -0
- package/popover/dropdown/dropdown-menu.d.ts +3 -0
- package/popover/dropdown/dropdown-trigger.d.ts +3 -0
- package/popover/dropdown/dropdown.d.ts +3 -0
- package/popover/dropdown/dropdown.module.d.ts +11 -0
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +3 -0
- package/popover/dropdown/providers/dropdown.service.d.ts +3 -0
- package/popover/popover.module.d.ts +7 -0
- package/popover/signpost/providers/signpost-focus-manager.service.d.ts +3 -0
- package/popover/signpost/providers/signpost-id.service.d.ts +3 -0
- package/popover/signpost/signpost-content.d.ts +3 -0
- package/popover/signpost/signpost-trigger.d.ts +4 -0
- package/popover/signpost/signpost.d.ts +3 -0
- package/popover/signpost/signpost.module.d.ts +11 -0
- package/popover/tooltip/providers/tooltip-id.service.d.ts +3 -0
- package/popover/tooltip/tooltip-content.d.ts +3 -0
- package/popover/tooltip/tooltip-trigger.d.ts +3 -0
- package/popover/tooltip/tooltip.d.ts +3 -0
- package/popover/tooltip/tooltip.module.d.ts +10 -0
- package/progress/progress-bars/progress-bar.d.ts +3 -0
- package/progress/progress-bars/progress-bar.module.d.ts +6 -0
- package/progress/spinner/spinner.d.ts +3 -0
- package/progress/spinner/spinner.module.d.ts +6 -0
- package/schematics/add/index.js +9 -9
- package/schematics/add/index.js.map +1 -1
- package/schematics/add/index.spec.js +13 -13
- package/schematics/add/index.spec.js.map +1 -1
- package/schematics/add/schema.json +1 -1
- package/schematics/migration-collection.json +5 -0
- package/schematics/update/update-13.0.0.js +37 -0
- package/schematics/update/update-13.0.0.js.map +1 -0
- package/schematics/update/update-13.0.0.spec.js +71 -0
- package/schematics/update/update-13.0.0.spec.js.map +1 -0
- package/schematics/update/update-3.0.0.js +1 -1
- package/schematics/update/update-3.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.js +1 -1
- package/schematics/update/update-5.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.spec.js +4 -4
- package/schematics/update/update-5.0.0.spec.js.map +1 -1
- package/schematics/utility/add-module-import-to-module.js +2 -2
- package/schematics/utility/add-module-import-to-module.js.map +1 -1
- package/schematics/utility/find-app-module.js +2 -2
- package/schematics/utility/find-app-module.js.map +1 -1
- package/schematics/utility/update-json-file.js +1 -1
- package/schematics/utility/update-json-file.js.map +1 -1
- package/src/utils/popover/README.md +139 -0
- package/timeline/providers/timeline-icon-attribute.service.d.ts +3 -0
- package/timeline/timeline-step-description.d.ts +3 -0
- package/timeline/timeline-step-header.d.ts +3 -0
- package/timeline/timeline-step-title.d.ts +3 -0
- package/timeline/timeline-step.d.ts +3 -0
- package/timeline/timeline.d.ts +3 -0
- package/timeline/timeline.module.d.ts +12 -0
- package/utils/a11y/aria-live.service.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +6 -0
- package/utils/aria/aria.service.d.ts +3 -0
- package/utils/chocolate/oompa-loompa.d.ts +3 -0
- package/utils/chocolate/willy-wonka.d.ts +3 -0
- package/utils/conditional/conditional.module.d.ts +8 -0
- package/utils/conditional/if-active.directive.d.ts +3 -0
- package/utils/conditional/if-active.service.d.ts +3 -0
- package/utils/conditional/if-expanded.directive.d.ts +3 -0
- package/utils/conditional/if-expanded.service.d.ts +3 -0
- package/utils/conditional/if-open.directive.d.ts +3 -0
- package/utils/dom-adapter/dom-adapter.d.ts +4 -1
- package/utils/drag-and-drop/drag-and-drop.module.d.ts +10 -0
- package/utils/drag-and-drop/drag-handle.d.ts +3 -0
- package/utils/drag-and-drop/draggable/draggable.d.ts +3 -0
- package/utils/drag-and-drop/draggable-ghost.d.ts +3 -0
- package/utils/drag-and-drop/droppable/droppable.d.ts +3 -0
- package/utils/drag-and-drop/if-dragged.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +6 -0
- package/utils/focus/focus.service.d.ts +3 -0
- package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +3 -0
- package/utils/focus/key-focus/key-focus-item.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.module.d.ts +8 -0
- package/utils/focus/key-focus/roving-tabindex.d.ts +3 -0
- package/utils/focus-trap/focus-trap-tracker.service.d.ts +3 -0
- package/utils/focus-trap/focus-trap.directive.d.ts +3 -0
- package/utils/focus-trap/focus-trap.module.d.ts +6 -0
- package/utils/host-wrapping/empty-anchor.d.ts +3 -5
- package/utils/host-wrapping/host-wrapping.module.d.ts +5 -5
- package/utils/i18n/common-strings.interface.d.ts +4 -0
- package/utils/i18n/common-strings.service.d.ts +3 -0
- package/utils/loading/loading.d.ts +3 -0
- package/utils/loading/loading.module.d.ts +6 -0
- package/utils/outside-click/outside-click.d.ts +3 -0
- package/utils/outside-click/outside-click.module.d.ts +6 -0
- package/utils/popover/popover-anchor.d.ts +3 -0
- package/utils/popover/popover-close-button.d.ts +3 -0
- package/utils/popover/popover-content.d.ts +3 -0
- package/utils/popover/popover-open-close-button.d.ts +3 -0
- package/utils/popover/popover.module.d.ts +8 -0
- package/utils/popover/providers/popover-events.service.d.ts +3 -0
- package/utils/popover/providers/popover-position.service.d.ts +3 -0
- package/utils/popover/providers/popover-toggle.service.d.ts +3 -0
- package/utils/scrolling/scrolling-service.d.ts +3 -0
- package/utils/template-ref/template-ref-container.d.ts +3 -0
- package/utils/template-ref/template-ref.module.d.ts +6 -0
- package/wizard/providers/button-hub.service.d.ts +3 -0
- package/wizard/providers/header-actions.service.d.ts +3 -0
- package/wizard/providers/page-collection.service.d.ts +3 -0
- package/wizard/providers/wizard-navigation.service.d.ts +3 -0
- package/wizard/wizard-button.d.ts +3 -0
- package/wizard/wizard-custom-tags.d.ts +3 -0
- package/wizard/wizard-header-action.d.ts +3 -0
- package/wizard/wizard-page-buttons.d.ts +3 -0
- package/wizard/wizard-page-header-actions.d.ts +3 -0
- package/wizard/wizard-page-navtitle.d.ts +3 -0
- package/wizard/wizard-page-title.d.ts +3 -0
- package/wizard/wizard-page.d.ts +3 -0
- package/wizard/wizard-stepnav-item.d.ts +3 -0
- package/wizard/wizard-stepnav.d.ts +3 -0
- package/wizard/wizard.d.ts +3 -0
- package/wizard/wizard.module.d.ts +18 -0
- package/bundles/clr-angular.umd.js +0 -26089
- package/bundles/clr-angular.umd.js.map +0 -1
- package/clr-angular.metadata.json +0 -1
- package/esm2015/accordion/accordion-content.js +0 -16
- package/esm2015/accordion/accordion-description.js +0 -17
- package/esm2015/accordion/accordion-panel.js +0 -105
- package/esm2015/accordion/accordion-title.js +0 -17
- package/esm2015/accordion/accordion.js +0 -57
- package/esm2015/accordion/accordion.module.js +0 -39
- package/esm2015/accordion/chocolate/accordion-oompa-loompa.js +0 -30
- package/esm2015/accordion/chocolate/accordion-willy-wonka.js +0 -13
- package/esm2015/accordion/providers/accordion.service.js +0 -44
- package/esm2015/accordion/stepper/chocolate/stepper-oompa-loompa.js +0 -30
- package/esm2015/accordion/stepper/chocolate/stepper-willy-wonka.js +0 -13
- package/esm2015/accordion/stepper/providers/stepper.service.js +0 -52
- package/esm2015/accordion/stepper/step-button.js +0 -47
- package/esm2015/accordion/stepper/stepper-panel.js +0 -88
- package/esm2015/accordion/stepper/stepper.js +0 -87
- package/esm2015/accordion/stepper/stepper.module.js +0 -25
- package/esm2015/button/button-group/button-group.js +0 -129
- package/esm2015/button/button-group/button-group.module.js +0 -22
- package/esm2015/button/button-loading/loading-button.js +0 -109
- package/esm2015/button/button-loading/loading-button.module.js +0 -19
- package/esm2015/button/button.module.js +0 -21
- package/esm2015/button/providers/button-in-group.service.js +0 -22
- package/esm2015/clr-angular.js +0 -108
- package/esm2015/clr-angular.module.js +0 -55
- package/esm2015/data/data.module.js +0 -15
- package/esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter.js +0 -169
- package/esm2015/data/datagrid/built-in/filters/datagrid-string-filter.js +0 -111
- package/esm2015/data/datagrid/chocolate/actionable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/chocolate/datagrid-willy-wonka.js +0 -13
- package/esm2015/data/datagrid/chocolate/expandable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/datagrid-action-bar.js +0 -16
- package/esm2015/data/datagrid/datagrid-action-overflow.js +0 -123
- package/esm2015/data/datagrid/datagrid-cell.js +0 -38
- package/esm2015/data/datagrid/datagrid-column-separator.js +0 -151
- package/esm2015/data/datagrid/datagrid-column-toggle-button.js +0 -53
- package/esm2015/data/datagrid/datagrid-column-toggle-title.js +0 -16
- package/esm2015/data/datagrid/datagrid-column-toggle.js +0 -149
- package/esm2015/data/datagrid/datagrid-column.js +0 -374
- package/esm2015/data/datagrid/datagrid-detail-body.js +0 -22
- package/esm2015/data/datagrid/datagrid-detail-header.js +0 -45
- package/esm2015/data/datagrid/datagrid-detail-registerer.js +0 -31
- package/esm2015/data/datagrid/datagrid-detail.js +0 -52
- package/esm2015/data/datagrid/datagrid-filter.js +0 -129
- package/esm2015/data/datagrid/datagrid-footer.js +0 -58
- package/esm2015/data/datagrid/datagrid-hideable-column.js +0 -97
- package/esm2015/data/datagrid/datagrid-if-detail.js +0 -62
- package/esm2015/data/datagrid/datagrid-if-expanded.service.js +0 -52
- package/esm2015/data/datagrid/datagrid-items-trackby.js +0 -29
- package/esm2015/data/datagrid/datagrid-items.js +0 -63
- package/esm2015/data/datagrid/datagrid-page-size.js +0 -37
- package/esm2015/data/datagrid/datagrid-pagination.js +0 -258
- package/esm2015/data/datagrid/datagrid-placeholder.js +0 -34
- package/esm2015/data/datagrid/datagrid-row-detail.js +0 -81
- package/esm2015/data/datagrid/datagrid-row.js +0 -218
- package/esm2015/data/datagrid/datagrid.js +0 -295
- package/esm2015/data/datagrid/datagrid.module.js +0 -127
- package/esm2015/data/datagrid/enums/column-changes.enum.js +0 -16
- package/esm2015/data/datagrid/providers/column-resizer.service.js +0 -59
- package/esm2015/data/datagrid/providers/columns.service.js +0 -50
- package/esm2015/data/datagrid/providers/detail.service.js +0 -58
- package/esm2015/data/datagrid/providers/display-mode.service.js +0 -35
- package/esm2015/data/datagrid/providers/filters.js +0 -112
- package/esm2015/data/datagrid/providers/global-expandable-rows.js +0 -33
- package/esm2015/data/datagrid/providers/items.js +0 -175
- package/esm2015/data/datagrid/providers/page.js +0 -155
- package/esm2015/data/datagrid/providers/row-action-service.js +0 -27
- package/esm2015/data/datagrid/providers/selection.js +0 -376
- package/esm2015/data/datagrid/providers/sort.js +0 -85
- package/esm2015/data/datagrid/providers/state-debouncer.provider.js +0 -39
- package/esm2015/data/datagrid/providers/state.provider.js +0 -77
- package/esm2015/data/datagrid/providers/table-size.service.js +0 -41
- package/esm2015/data/datagrid/render/cell-renderer.js +0 -82
- package/esm2015/data/datagrid/render/header-renderer.js +0 -133
- package/esm2015/data/datagrid/render/main-renderer.js +0 -199
- package/esm2015/data/datagrid/render/noop-dom-adapter.js +0 -51
- package/esm2015/data/datagrid/render/render-organizer.js +0 -35
- package/esm2015/data/datagrid/render/row-renderer.js +0 -57
- package/esm2015/data/datagrid/utils/datagrid-filter-registrar.js +0 -41
- package/esm2015/data/datagrid/wrapped-cell.js +0 -31
- package/esm2015/data/datagrid/wrapped-column.js +0 -32
- package/esm2015/data/datagrid/wrapped-row.js +0 -32
- package/esm2015/data/stack-view/stack-block.js +0 -146
- package/esm2015/data/stack-view/stack-content-input.js +0 -25
- package/esm2015/data/stack-view/stack-header.js +0 -45
- package/esm2015/data/stack-view/stack-select.js +0 -38
- package/esm2015/data/stack-view/stack-view-custom-tags.js +0 -12
- package/esm2015/data/stack-view/stack-view.js +0 -50
- package/esm2015/data/stack-view/stack-view.module.js +0 -47
- package/esm2015/data/tree-view/recursive-children.js +0 -70
- package/esm2015/data/tree-view/recursive-for-of.js +0 -53
- package/esm2015/data/tree-view/tree-features.service.js +0 -34
- package/esm2015/data/tree-view/tree-focus-manager.service.js +0 -118
- package/esm2015/data/tree-view/tree-node-link.js +0 -25
- package/esm2015/data/tree-view/tree-node.js +0 -252
- package/esm2015/data/tree-view/tree-view.module.js +0 -30
- package/esm2015/data/tree-view/tree.js +0 -78
- package/esm2015/emphasis/alert/alert-item.js +0 -32
- package/esm2015/emphasis/alert/alert-text.js +0 -18
- package/esm2015/emphasis/alert/alert.js +0 -96
- package/esm2015/emphasis/alert/alert.module.js +0 -30
- package/esm2015/emphasis/alert/alerts-pager.js +0 -69
- package/esm2015/emphasis/alert/alerts.js +0 -94
- package/esm2015/emphasis/alert/providers/icon-and-types.service.js +0 -74
- package/esm2015/emphasis/alert/providers/multi-alert.service.js +0 -76
- package/esm2015/emphasis/emphasis.module.js +0 -13
- package/esm2015/forms/checkbox/checkbox-container.js +0 -95
- package/esm2015/forms/checkbox/checkbox-wrapper.js +0 -57
- package/esm2015/forms/checkbox/checkbox.js +0 -40
- package/esm2015/forms/checkbox/checkbox.module.js +0 -29
- package/esm2015/forms/combobox/combobox-container.js +0 -79
- package/esm2015/forms/combobox/combobox.js +0 -329
- package/esm2015/forms/combobox/combobox.module.js +0 -53
- package/esm2015/forms/combobox/option-items.directive.js +0 -96
- package/esm2015/forms/combobox/option-selected.directive.js +0 -21
- package/esm2015/forms/combobox/option.js +0 -91
- package/esm2015/forms/combobox/options.js +0 -125
- package/esm2015/forms/combobox/providers/combobox-container.service.js +0 -15
- package/esm2015/forms/combobox/providers/combobox-focus-handler.service.js +0 -213
- package/esm2015/forms/combobox/providers/option-selection.service.js +0 -78
- package/esm2015/forms/common/abstract-container.js +0 -113
- package/esm2015/forms/common/abstract-control.js +0 -47
- package/esm2015/forms/common/common.module.js +0 -56
- package/esm2015/forms/common/control-container.js +0 -51
- package/esm2015/forms/common/control.js +0 -26
- package/esm2015/forms/common/error.js +0 -32
- package/esm2015/forms/common/form.js +0 -47
- package/esm2015/forms/common/helper.js +0 -32
- package/esm2015/forms/common/if-control-state/abstract-if-state.js +0 -41
- package/esm2015/forms/common/if-control-state/if-control-state.service.js +0 -56
- package/esm2015/forms/common/if-control-state/if-error.js +0 -65
- package/esm2015/forms/common/if-control-state/if-success.js +0 -42
- package/esm2015/forms/common/label.js +0 -61
- package/esm2015/forms/common/layout.js +0 -30
- package/esm2015/forms/common/providers/container-id.service.js +0 -30
- package/esm2015/forms/common/providers/control-class.service.js +0 -50
- package/esm2015/forms/common/providers/control-id.service.js +0 -28
- package/esm2015/forms/common/providers/focus.service.js +0 -22
- package/esm2015/forms/common/providers/layout.service.js +0 -54
- package/esm2015/forms/common/providers/mark-control.service.js +0 -22
- package/esm2015/forms/common/providers/ng-control.service.js +0 -30
- package/esm2015/forms/common/success.js +0 -32
- package/esm2015/forms/common/wrapped-control.js +0 -158
- package/esm2015/forms/datalist/datalist-container.js +0 -79
- package/esm2015/forms/datalist/datalist-input.js +0 -59
- package/esm2015/forms/datalist/datalist.js +0 -46
- package/esm2015/forms/datalist/datalist.module.js +0 -27
- package/esm2015/forms/datalist/providers/datalist-id.service.js +0 -28
- package/esm2015/forms/datepicker/calendar.js +0 -119
- package/esm2015/forms/datepicker/date-container.js +0 -179
- package/esm2015/forms/datepicker/date-input.js +0 -256
- package/esm2015/forms/datepicker/datepicker-view-manager.js +0 -46
- package/esm2015/forms/datepicker/datepicker.module.js +0 -55
- package/esm2015/forms/datepicker/day.js +0 -72
- package/esm2015/forms/datepicker/daypicker.js +0 -84
- package/esm2015/forms/datepicker/monthpicker.js +0 -116
- package/esm2015/forms/datepicker/providers/date-form-control.service.js +0 -33
- package/esm2015/forms/datepicker/providers/date-io.service.js +0 -176
- package/esm2015/forms/datepicker/providers/date-navigation.service.js +0 -127
- package/esm2015/forms/datepicker/providers/datepicker-enabled.service.js +0 -43
- package/esm2015/forms/datepicker/providers/datepicker-focus.service.js +0 -45
- package/esm2015/forms/datepicker/providers/locale-helper.service.js +0 -98
- package/esm2015/forms/datepicker/providers/view-manager.service.js +0 -38
- package/esm2015/forms/datepicker/yearpicker.js +0 -193
- package/esm2015/forms/forms.module.js +0 -39
- package/esm2015/forms/input/input.js +0 -26
- package/esm2015/forms/input/input.module.js +0 -29
- package/esm2015/forms/password/password-container.js +0 -120
- package/esm2015/forms/password/password.js +0 -53
- package/esm2015/forms/password/password.module.js +0 -28
- package/esm2015/forms/radio/radio-container.js +0 -95
- package/esm2015/forms/radio/radio-wrapper.js +0 -39
- package/esm2015/forms/radio/radio.js +0 -25
- package/esm2015/forms/radio/radio.module.js +0 -29
- package/esm2015/forms/range/range-container.js +0 -93
- package/esm2015/forms/range/range.js +0 -25
- package/esm2015/forms/range/range.module.js +0 -28
- package/esm2015/forms/select/select-container.js +0 -82
- package/esm2015/forms/select/select.js +0 -26
- package/esm2015/forms/select/select.module.js +0 -28
- package/esm2015/forms/textarea/textarea-container.js +0 -51
- package/esm2015/forms/textarea/textarea.js +0 -26
- package/esm2015/forms/textarea/textarea.module.js +0 -28
- package/esm2015/icon/icon.js +0 -17
- package/esm2015/icon/icon.module.js +0 -15
- package/esm2015/layout/layout.module.js +0 -16
- package/esm2015/layout/main-container/main-container.js +0 -58
- package/esm2015/layout/main-container/main-container.module.js +0 -20
- package/esm2015/layout/nav/chocolate/main-container-willy-wonka.js +0 -13
- package/esm2015/layout/nav/chocolate/nav-detection-oompa-loompa.js +0 -32
- package/esm2015/layout/nav/header.js +0 -94
- package/esm2015/layout/nav/nav-level.js +0 -79
- package/esm2015/layout/nav/navigation.module.js +0 -29
- package/esm2015/layout/tabs/chocolate/active-oompa-loompa.js +0 -32
- package/esm2015/layout/tabs/chocolate/tabs-willy-wonka.js +0 -13
- package/esm2015/layout/tabs/providers/tabs.service.js +0 -42
- package/esm2015/layout/tabs/tab-content.js +0 -77
- package/esm2015/layout/tabs/tab-link.directive.js +0 -93
- package/esm2015/layout/tabs/tab-overflow-content.js +0 -18
- package/esm2015/layout/tabs/tab.js +0 -42
- package/esm2015/layout/tabs/tabs.js +0 -235
- package/esm2015/layout/tabs/tabs.module.js +0 -42
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group-registration.service.js +0 -21
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group.service.js +0 -22
- package/esm2015/layout/vertical-nav/providers/vertical-nav-icon.service.js +0 -24
- package/esm2015/layout/vertical-nav/providers/vertical-nav.service.js +0 -51
- package/esm2015/layout/vertical-nav/vertical-nav-group-children.js +0 -15
- package/esm2015/layout/vertical-nav/vertical-nav-group.js +0 -158
- package/esm2015/layout/vertical-nav/vertical-nav-icon.js +0 -23
- package/esm2015/layout/vertical-nav/vertical-nav-link.js +0 -36
- package/esm2015/layout/vertical-nav/vertical-nav.js +0 -77
- package/esm2015/layout/vertical-nav/vertical-nav.module.js +0 -37
- package/esm2015/modal/modal-body.js +0 -43
- package/esm2015/modal/modal.js +0 -111
- package/esm2015/modal/modal.module.js +0 -28
- package/esm2015/popover/common/abstract-popover.js +0 -133
- package/esm2015/popover/dropdown/dropdown-item.js +0 -87
- package/esm2015/popover/dropdown/dropdown-menu.js +0 -105
- package/esm2015/popover/dropdown/dropdown-trigger.js +0 -50
- package/esm2015/popover/dropdown/dropdown.js +0 -52
- package/esm2015/popover/dropdown/dropdown.module.js +0 -24
- package/esm2015/popover/dropdown/providers/dropdown-focus-handler.service.js +0 -181
- package/esm2015/popover/dropdown/providers/dropdown.service.js +0 -30
- package/esm2015/popover/popover.module.js +0 -15
- package/esm2015/popover/signpost/providers/signpost-focus-manager.service.js +0 -20
- package/esm2015/popover/signpost/providers/signpost-id.service.js +0 -23
- package/esm2015/popover/signpost/signpost-content.js +0 -150
- package/esm2015/popover/signpost/signpost-trigger.js +0 -90
- package/esm2015/popover/signpost/signpost.js +0 -72
- package/esm2015/popover/signpost/signpost.module.js +0 -29
- package/esm2015/popover/tooltip/providers/tooltip-id.service.js +0 -22
- package/esm2015/popover/tooltip/tooltip-content.js +0 -123
- package/esm2015/popover/tooltip/tooltip-trigger.js +0 -46
- package/esm2015/popover/tooltip/tooltip.js +0 -30
- package/esm2015/popover/tooltip/tooltip.module.js +0 -23
- package/esm2015/progress/progress-bars/progress-bar.module.js +0 -19
- package/esm2015/progress/spinner/spinner.js +0 -63
- package/esm2015/progress/spinner/spinner.module.js +0 -19
- package/esm2015/timeline/providers/timeline-icon-attribute.service.js +0 -54
- package/esm2015/timeline/timeline-step-description.js +0 -16
- package/esm2015/timeline/timeline-step-header.js +0 -16
- package/esm2015/timeline/timeline-step-title.js +0 -26
- package/esm2015/timeline/timeline-step.js +0 -73
- package/esm2015/timeline/timeline.js +0 -29
- package/esm2015/timeline/timeline.module.js +0 -36
- package/esm2015/utils/a11y/aria-live.service.js +0 -161
- package/esm2015/utils/animations/expandable-animation/expandable-animation.js +0 -57
- package/esm2015/utils/animations/expandable-animation/expandable-animation.module.js +0 -18
- package/esm2015/utils/aria/aria.service.js +0 -13
- package/esm2015/utils/chocolate/oompa-loompa.js +0 -33
- package/esm2015/utils/chocolate/willy-wonka.js +0 -33
- package/esm2015/utils/conditional/conditional.module.js +0 -17
- package/esm2015/utils/conditional/if-active.directive.js +0 -100
- package/esm2015/utils/conditional/if-active.service.js +0 -74
- package/esm2015/utils/conditional/if-expanded.directive.js +0 -91
- package/esm2015/utils/conditional/if-expanded.service.js +0 -55
- package/esm2015/utils/conditional/if-open.directive.js +0 -86
- package/esm2015/utils/dom-adapter/dom-adapter.js +0 -49
- package/esm2015/utils/drag-and-drop/drag-and-drop.module.js +0 -30
- package/esm2015/utils/drag-and-drop/drag-handle.js +0 -30
- package/esm2015/utils/drag-and-drop/draggable/draggable.js +0 -119
- package/esm2015/utils/drag-and-drop/draggable-ghost.js +0 -116
- package/esm2015/utils/drag-and-drop/droppable/droppable.js +0 -209
- package/esm2015/utils/drag-and-drop/if-dragged.js +0 -40
- package/esm2015/utils/drag-and-drop/providers/drag-event-listener.service.js +0 -181
- package/esm2015/utils/drag-and-drop/providers/drag-handle-registrar.service.js +0 -61
- package/esm2015/utils/drag-and-drop/providers/draggable-snapshot.service.js +0 -38
- package/esm2015/utils/drag-and-drop/providers/global-drag-mode.service.js +0 -26
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.js +0 -76
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.module.js +0 -21
- package/esm2015/utils/focus/focus.service.js +0 -94
- package/esm2015/utils/focus/focusable-item/basic-focusable-item.service.js +0 -55
- package/esm2015/utils/focus/key-focus/key-focus-item.js +0 -31
- package/esm2015/utils/focus/key-focus/key-focus.js +0 -181
- package/esm2015/utils/focus/key-focus/key-focus.module.js +0 -21
- package/esm2015/utils/focus/key-focus/roving-tabindex.js +0 -100
- package/esm2015/utils/focus-trap/focus-trap-tracker.service.js +0 -30
- package/esm2015/utils/focus-trap/focus-trap.directive.js +0 -154
- package/esm2015/utils/focus-trap/focus-trap.module.js +0 -19
- package/esm2015/utils/host-wrapping/empty-anchor.js +0 -14
- package/esm2015/utils/host-wrapping/host-wrapping.module.js +0 -16
- package/esm2015/utils/i18n/common-strings.default.js +0 -88
- package/esm2015/utils/i18n/common-strings.service.js +0 -45
- package/esm2015/utils/loading/loading.js +0 -52
- package/esm2015/utils/loading/loading.module.js +0 -15
- package/esm2015/utils/outside-click/outside-click.js +0 -45
- package/esm2015/utils/outside-click/outside-click.module.js +0 -14
- package/esm2015/utils/popover/popover-anchor.js +0 -26
- package/esm2015/utils/popover/popover-close-button.js +0 -51
- package/esm2015/utils/popover/popover-content.js +0 -146
- package/esm2015/utils/popover/popover-open-close-button.js +0 -40
- package/esm2015/utils/popover/popover.module.js +0 -21
- package/esm2015/utils/popover/position-operators.js +0 -171
- package/esm2015/utils/popover/providers/popover-events.service.js +0 -159
- package/esm2015/utils/popover/providers/popover-position.service.js +0 -213
- package/esm2015/utils/popover/providers/popover-toggle.service.js +0 -67
- package/esm2015/utils/scrolling/scrolling-service.js +0 -27
- package/esm2015/utils/template-ref/template-ref-container.js +0 -21
- package/esm2015/utils/template-ref/template-ref.module.js +0 -19
- package/esm2015/wizard/providers/button-hub.service.js +0 -60
- package/esm2015/wizard/providers/header-actions.service.js +0 -37
- package/esm2015/wizard/providers/page-collection.service.js +0 -358
- package/esm2015/wizard/providers/wizard-navigation.service.js +0 -575
- package/esm2015/wizard/wizard-button.js +0 -163
- package/esm2015/wizard/wizard-custom-tags.js +0 -12
- package/esm2015/wizard/wizard-header-action.js +0 -55
- package/esm2015/wizard/wizard-page-buttons.js +0 -18
- package/esm2015/wizard/wizard-page-header-actions.js +0 -18
- package/esm2015/wizard/wizard-page-navtitle.js +0 -18
- package/esm2015/wizard/wizard-page-title.js +0 -18
- package/esm2015/wizard/wizard-stepnav-item.js +0 -100
- package/esm2015/wizard/wizard-stepnav.js +0 -34
- package/esm2015/wizard/wizard.js +0 -438
- package/esm2015/wizard/wizard.module.js +0 -48
- package/fesm2015/clr-angular.js.map +0 -1
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.
|
|
3
|
+
* This software is released under MIT license.
|
|
4
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5
|
+
*/
|
|
6
|
+
import { Injectable } from '@angular/core';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./page-collection.service";
|
|
10
|
+
import * as i2 from "./button-hub.service";
|
|
11
|
+
/**
|
|
12
|
+
* Performs navigation functions for a wizard and manages the current page. Presented as a
|
|
13
|
+
* separate service to encapsulate the behavior of navigating and completing the wizard so
|
|
14
|
+
* that it can be shared across the wizard and its sub-components.
|
|
15
|
+
*
|
|
16
|
+
* The easiest way to access the navigation service is there a reference on your wizard. The
|
|
17
|
+
* Following example would allow you to access your instance of the wizard from your host
|
|
18
|
+
* component and thereby access the navigation service via YourHostComponent.wizard.navService.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <clr-wizard #wizard ...>
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* export class YourHostComponent {
|
|
25
|
+
* @ViewChild("wizard") wizard: Wizard;
|
|
26
|
+
* ...
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
export class WizardNavigationService {
|
|
31
|
+
/**
|
|
32
|
+
* Creates an instance of WizardNavigationService. Also sets up subscriptions
|
|
33
|
+
* that listen to the button service to determine when a button has been clicked
|
|
34
|
+
* in the wizard. Is also responsible for taking action when the page collection
|
|
35
|
+
* requests that navigation be reset to its pristine state.
|
|
36
|
+
*
|
|
37
|
+
* @memberof WizardNavigationService
|
|
38
|
+
*/
|
|
39
|
+
constructor(pageCollection, buttonService) {
|
|
40
|
+
this.pageCollection = pageCollection;
|
|
41
|
+
this.buttonService = buttonService;
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @memberof WizardNavigationService
|
|
45
|
+
*/
|
|
46
|
+
this._currentChanged = new Subject();
|
|
47
|
+
/**
|
|
48
|
+
* A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are
|
|
49
|
+
* loading and there is no current page defined.
|
|
50
|
+
*
|
|
51
|
+
* @memberof WizardNavigationService
|
|
52
|
+
*/
|
|
53
|
+
this.navServiceLoaded = false;
|
|
54
|
+
/**
|
|
55
|
+
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
56
|
+
* of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,
|
|
57
|
+
* navigating backwards in the stepnav menu will reset any skipped pages' completed
|
|
58
|
+
* state to false.
|
|
59
|
+
*
|
|
60
|
+
* This is useful when a wizard executes validation on a page-by-page basis when
|
|
61
|
+
* the next button is clicked.
|
|
62
|
+
*
|
|
63
|
+
* @memberof WizardNavigationService
|
|
64
|
+
*/
|
|
65
|
+
this.forceForwardNavigation = false;
|
|
66
|
+
/**
|
|
67
|
+
* @memberof WizardNavigationService
|
|
68
|
+
*/
|
|
69
|
+
this._movedToNextPage = new Subject();
|
|
70
|
+
/**
|
|
71
|
+
* @memberof WizardNavigationService
|
|
72
|
+
*/
|
|
73
|
+
this._wizardFinished = new Subject();
|
|
74
|
+
/**
|
|
75
|
+
* @memberof WizardNavigationService
|
|
76
|
+
*/
|
|
77
|
+
this._movedToPreviousPage = new Subject();
|
|
78
|
+
/**
|
|
79
|
+
* @memberof WizardNavigationService
|
|
80
|
+
*/
|
|
81
|
+
this._cancelWizard = new Subject();
|
|
82
|
+
/**
|
|
83
|
+
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
84
|
+
* of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel
|
|
85
|
+
* routine is subverted and must be reinstated in the host component calling Wizard.close()
|
|
86
|
+
* at some point.
|
|
87
|
+
*
|
|
88
|
+
* @memberof WizardNavigationService
|
|
89
|
+
*/
|
|
90
|
+
this.wizardHasAltCancel = false;
|
|
91
|
+
/**
|
|
92
|
+
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
93
|
+
* of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish
|
|
94
|
+
* routines are subverted and must be reinstated in the host component calling Wizard.next(),
|
|
95
|
+
* Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().
|
|
96
|
+
*
|
|
97
|
+
* @memberof WizardNavigationService
|
|
98
|
+
*/
|
|
99
|
+
this.wizardHasAltNext = false;
|
|
100
|
+
/**
|
|
101
|
+
* A boolean flag shared across the Wizard subcomponents that follows the value
|
|
102
|
+
* of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all
|
|
103
|
+
* navigational elements in the wizard are disabled.
|
|
104
|
+
*
|
|
105
|
+
* This is intended to freeze the wizard in place. Events are not fired so this is
|
|
106
|
+
* not a way to implement alternate functionality for navigation.
|
|
107
|
+
*
|
|
108
|
+
* @memberof WizardNavigationService
|
|
109
|
+
*/
|
|
110
|
+
this.wizardStopNavigation = false;
|
|
111
|
+
/**
|
|
112
|
+
* A boolean flag shared with the stepnav items that prevents user clicks on
|
|
113
|
+
* stepnav items from navigating the wizard.
|
|
114
|
+
*
|
|
115
|
+
* @memberof WizardNavigationService
|
|
116
|
+
*/
|
|
117
|
+
this.wizardDisableStepnav = false;
|
|
118
|
+
this.previousButtonSubscription = this.buttonService.previousBtnClicked.subscribe(() => {
|
|
119
|
+
const currentPage = this.currentPage;
|
|
120
|
+
if (this.currentPageIsFirst || currentPage.previousStepDisabled) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
currentPage.previousButtonClicked.emit(currentPage);
|
|
124
|
+
if (!currentPage.preventDefault) {
|
|
125
|
+
this.previous();
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
this.nextButtonSubscription = this.buttonService.nextBtnClicked.subscribe(() => {
|
|
129
|
+
this.checkAndCommitCurrentPage('next');
|
|
130
|
+
});
|
|
131
|
+
this.dangerButtonSubscription = this.buttonService.dangerBtnClicked.subscribe(() => {
|
|
132
|
+
this.checkAndCommitCurrentPage('danger');
|
|
133
|
+
});
|
|
134
|
+
this.finishButtonSubscription = this.buttonService.finishBtnClicked.subscribe(() => {
|
|
135
|
+
this.checkAndCommitCurrentPage('finish');
|
|
136
|
+
});
|
|
137
|
+
this.customButtonSubscription = this.buttonService.customBtnClicked.subscribe((type) => {
|
|
138
|
+
if (!this.wizardStopNavigation) {
|
|
139
|
+
this.currentPage.customButtonClicked.emit(type);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
this.cancelButtonSubscription = this.buttonService.cancelBtnClicked.subscribe(() => {
|
|
143
|
+
if (this.wizardStopNavigation) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (this.currentPage.preventDefault) {
|
|
147
|
+
this.currentPage.pageOnCancel.emit(this.currentPage);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.cancel();
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
this.pagesResetSubscription = this.pageCollection.pagesReset.subscribe(() => {
|
|
154
|
+
this.setFirstPageCurrent();
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
*
|
|
159
|
+
* @memberof WizardNavigationService
|
|
160
|
+
*/
|
|
161
|
+
ngOnDestroy() {
|
|
162
|
+
this.previousButtonSubscription.unsubscribe();
|
|
163
|
+
this.nextButtonSubscription.unsubscribe();
|
|
164
|
+
this.dangerButtonSubscription.unsubscribe();
|
|
165
|
+
this.finishButtonSubscription.unsubscribe();
|
|
166
|
+
this.customButtonSubscription.unsubscribe();
|
|
167
|
+
this.cancelButtonSubscription.unsubscribe();
|
|
168
|
+
this.pagesResetSubscription.unsubscribe();
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* An Observable that is predominantly used amongst the subcomponents and services
|
|
172
|
+
* of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad
|
|
173
|
+
* (clrWizardPageOnLoad) output instead of this Observable.
|
|
174
|
+
*
|
|
175
|
+
* @memberof WizardNavigationService
|
|
176
|
+
*/
|
|
177
|
+
get currentPageChanged() {
|
|
178
|
+
// TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'
|
|
179
|
+
// A BREAKING CHANGE SO AWAITING MINOR RELEASE
|
|
180
|
+
return this._currentChanged.asObservable();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* @memberof WizardNavigationService
|
|
184
|
+
*/
|
|
185
|
+
get currentPageTitle() {
|
|
186
|
+
// when the querylist of pages is empty. this is the first place it fails...
|
|
187
|
+
if (!this.currentPage) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return this.currentPage.title;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns a Boolean that tells you whether or not the current page is the first
|
|
194
|
+
* page in the Wizard.
|
|
195
|
+
*
|
|
196
|
+
* This is helpful for determining whether a page is navigable.
|
|
197
|
+
*
|
|
198
|
+
* @memberof WizardNavigationService
|
|
199
|
+
*/
|
|
200
|
+
get currentPageIsFirst() {
|
|
201
|
+
return this.pageCollection.firstPage === this.currentPage;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Returns a Boolean that tells you whether or not the current page is the
|
|
205
|
+
* last page in the Wizard.
|
|
206
|
+
*
|
|
207
|
+
* This is used to determine which buttons should display in the wizard footer.
|
|
208
|
+
*
|
|
209
|
+
* @memberof WizardNavigationService
|
|
210
|
+
*/
|
|
211
|
+
get currentPageIsLast() {
|
|
212
|
+
return this.pageCollection.lastPage === this.currentPage;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Returns the ClrWizardPage object of the current page or null.
|
|
216
|
+
*
|
|
217
|
+
* @memberof WizardNavigationService
|
|
218
|
+
*/
|
|
219
|
+
get currentPage() {
|
|
220
|
+
if (!this._currentPage) {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
return this._currentPage;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Accepts a ClrWizardPage object, since that object to be the current/active
|
|
227
|
+
* page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)
|
|
228
|
+
* event for that page.
|
|
229
|
+
*
|
|
230
|
+
* Note that all of this work is bypassed if the ClrWizardPage object is already
|
|
231
|
+
* the current page.
|
|
232
|
+
*
|
|
233
|
+
* @memberof WizardNavigationService
|
|
234
|
+
*/
|
|
235
|
+
set currentPage(page) {
|
|
236
|
+
if (this._currentPage !== page && !this.wizardStopNavigation) {
|
|
237
|
+
this._currentPage = page;
|
|
238
|
+
page.onLoad.emit(page.id);
|
|
239
|
+
this._currentChanged.next(page);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* An observable used internally to alert the wizard that forward navigation
|
|
244
|
+
* has occurred. It is recommended that you use the Wizard.onMoveNext
|
|
245
|
+
* (clrWizardOnNext) output instead of this one.
|
|
246
|
+
*
|
|
247
|
+
* @memberof WizardNavigationService
|
|
248
|
+
*/
|
|
249
|
+
get movedToNextPage() {
|
|
250
|
+
return this._movedToNextPage.asObservable();
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* An observable used internally to alert the wizard that the nav service
|
|
254
|
+
* has approved completion of the wizard.
|
|
255
|
+
*
|
|
256
|
+
* It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)
|
|
257
|
+
* output instead of this one.
|
|
258
|
+
*
|
|
259
|
+
* @memberof WizardNavigationService
|
|
260
|
+
*/
|
|
261
|
+
get wizardFinished() {
|
|
262
|
+
return this._wizardFinished.asObservable();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* This is a public function that can be used to programmatically advance
|
|
266
|
+
* the user to the next page.
|
|
267
|
+
*
|
|
268
|
+
* When invoked, this method will move the wizard to the next page after
|
|
269
|
+
* successful validation. Note that this method goes through all checks
|
|
270
|
+
* and event emissions as if Wizard.next(false) had been called.
|
|
271
|
+
*
|
|
272
|
+
* In most cases, it makes more sense to use Wizard.next(false).
|
|
273
|
+
*
|
|
274
|
+
* @memberof WizardNavigationService
|
|
275
|
+
*/
|
|
276
|
+
next() {
|
|
277
|
+
if (this.currentPageIsLast) {
|
|
278
|
+
this.checkAndCommitCurrentPage('finish');
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
this.checkAndCommitCurrentPage('next');
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Bypasses checks and most event emissions to force a page to navigate forward.
|
|
286
|
+
*
|
|
287
|
+
* Comparable to calling Wizard.next() or Wizard.forceNext().
|
|
288
|
+
*
|
|
289
|
+
* @memberof WizardNavigationService
|
|
290
|
+
*/
|
|
291
|
+
forceNext() {
|
|
292
|
+
const currentPage = this.currentPage;
|
|
293
|
+
const nextPage = this.pageCollection.getNextPage(currentPage);
|
|
294
|
+
// catch errant null or undefineds that creep in
|
|
295
|
+
if (!nextPage) {
|
|
296
|
+
throw new Error('The wizard has no next page to go to.');
|
|
297
|
+
}
|
|
298
|
+
if (this.wizardStopNavigation) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (!currentPage.completed) {
|
|
302
|
+
// this is a state that alt next flows can get themselves in...
|
|
303
|
+
this.pageCollection.commitPage(currentPage);
|
|
304
|
+
}
|
|
305
|
+
this.currentPage = nextPage;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Accepts a button/action type as a parameter. Encapsulates all logic for
|
|
309
|
+
* event emissions, state of the current page, and wizard and page level overrides.
|
|
310
|
+
*
|
|
311
|
+
* Avoid calling this function directly unless you really know what you're doing.
|
|
312
|
+
*
|
|
313
|
+
* @memberof WizardNavigationService
|
|
314
|
+
*/
|
|
315
|
+
checkAndCommitCurrentPage(buttonType) {
|
|
316
|
+
const currentPage = this.currentPage;
|
|
317
|
+
if (!currentPage.readyToComplete || this.wizardStopNavigation) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const iAmTheLastPage = this.currentPageIsLast;
|
|
321
|
+
const isNext = buttonType === 'next';
|
|
322
|
+
const isDanger = buttonType === 'danger';
|
|
323
|
+
const isDangerNext = isDanger && !iAmTheLastPage;
|
|
324
|
+
const isDangerFinish = isDanger && iAmTheLastPage;
|
|
325
|
+
const isFinish = buttonType === 'finish' || isDangerFinish;
|
|
326
|
+
if (isFinish && !iAmTheLastPage) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
currentPage.primaryButtonClicked.emit(buttonType);
|
|
330
|
+
if (isFinish) {
|
|
331
|
+
currentPage.finishButtonClicked.emit(currentPage);
|
|
332
|
+
}
|
|
333
|
+
else if (isDanger) {
|
|
334
|
+
currentPage.dangerButtonClicked.emit();
|
|
335
|
+
}
|
|
336
|
+
else if (isNext) {
|
|
337
|
+
currentPage.nextButtonClicked.emit();
|
|
338
|
+
}
|
|
339
|
+
if (currentPage.stopNext || currentPage.preventDefault) {
|
|
340
|
+
currentPage.onCommit.emit(currentPage.id);
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
// order is very important with these emitters!
|
|
344
|
+
if (isFinish) {
|
|
345
|
+
// mark page as complete
|
|
346
|
+
if (!this.wizardHasAltNext) {
|
|
347
|
+
this.pageCollection.commitPage(currentPage);
|
|
348
|
+
}
|
|
349
|
+
this._wizardFinished.next();
|
|
350
|
+
}
|
|
351
|
+
if (this.wizardHasAltNext) {
|
|
352
|
+
this.pageCollection.commitPage(currentPage);
|
|
353
|
+
if (isNext || isDangerNext) {
|
|
354
|
+
this._movedToNextPage.next(true);
|
|
355
|
+
}
|
|
356
|
+
// jump out here, no matter what type we're looking at
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
if (isNext || isDangerNext) {
|
|
360
|
+
this.forceNext();
|
|
361
|
+
}
|
|
362
|
+
if (!this.wizardHasAltNext && !this.wizardStopNavigation) {
|
|
363
|
+
this._movedToNextPage.next(true);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* This is a public function that can be used to programmatically conclude
|
|
368
|
+
* the wizard.
|
|
369
|
+
*
|
|
370
|
+
* When invoked, this method will initiate the work involved with finalizing
|
|
371
|
+
* and finishing the wizard workflow. Note that this method goes through all
|
|
372
|
+
* checks and event emissions as if Wizard.finish(false) had been called.
|
|
373
|
+
*
|
|
374
|
+
* In most cases, it makes more sense to use Wizard.finish(false).
|
|
375
|
+
*
|
|
376
|
+
* @memberof WizardNavigationService
|
|
377
|
+
*/
|
|
378
|
+
finish() {
|
|
379
|
+
this.checkAndCommitCurrentPage('finish');
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Notifies the wizard when backwards navigation has occurred via the
|
|
383
|
+
* previous button.
|
|
384
|
+
*
|
|
385
|
+
* @memberof WizardNavigationService
|
|
386
|
+
*/
|
|
387
|
+
get movedToPreviousPage() {
|
|
388
|
+
return this._movedToPreviousPage.asObservable();
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Programmatically moves the wizard to the page before the current page.
|
|
392
|
+
*
|
|
393
|
+
* In most instances, it makes more sense to call Wizard.previous()
|
|
394
|
+
* which does the same thing.
|
|
395
|
+
*
|
|
396
|
+
* @memberof WizardNavigationService
|
|
397
|
+
*/
|
|
398
|
+
previous() {
|
|
399
|
+
if (this.currentPageIsFirst || this.wizardStopNavigation) {
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
const previousPage = this.pageCollection.getPreviousPage(this.currentPage);
|
|
403
|
+
if (!previousPage) {
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
this._movedToPreviousPage.next(true);
|
|
407
|
+
if (this.forceForwardNavigation) {
|
|
408
|
+
this.currentPage.completed = false;
|
|
409
|
+
}
|
|
410
|
+
this.currentPage = previousPage;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Notifies the wizard that a user is trying to cancel it.
|
|
414
|
+
*
|
|
415
|
+
* @memberof WizardNavigationService
|
|
416
|
+
*/
|
|
417
|
+
get notifyWizardCancel() {
|
|
418
|
+
return this._cancelWizard.asObservable();
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Allows a hook into the cancel workflow of the wizard from the nav service. Note that
|
|
422
|
+
* this route goes through all checks and event emissions as if a cancel button had
|
|
423
|
+
* been clicked.
|
|
424
|
+
*
|
|
425
|
+
* In most cases, users looking for a hook into the cancel routine are actually looking
|
|
426
|
+
* for a way to close the wizard from their host component because they have prevented
|
|
427
|
+
* the default cancel action.
|
|
428
|
+
*
|
|
429
|
+
* In this instance, it is recommended that you use Wizard.close() to avoid any event
|
|
430
|
+
* emission loop resulting from an event handler calling back into routine that will
|
|
431
|
+
* again evoke the events it handles.
|
|
432
|
+
*
|
|
433
|
+
* @memberof WizardNavigationService
|
|
434
|
+
*/
|
|
435
|
+
cancel() {
|
|
436
|
+
this._cancelWizard.next();
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Performs all required checks to determine if a user can navigate to a page. Checking at each
|
|
440
|
+
* point if a page is navigable -- completed where the page immediately after the last completed
|
|
441
|
+
* page.
|
|
442
|
+
*
|
|
443
|
+
* Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the
|
|
444
|
+
* ClrWizardPage object that you want to make the current page.
|
|
445
|
+
*
|
|
446
|
+
* The second parameter is optional and is a Boolean flag for "lazy completion". What this means
|
|
447
|
+
* is the Wizard will mark all pages between the current page and the page you want to navigate
|
|
448
|
+
* to as completed. This is useful for informational wizards that do not require user action,
|
|
449
|
+
* allowing an easy means for users to jump ahead.
|
|
450
|
+
*
|
|
451
|
+
* To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.
|
|
452
|
+
*
|
|
453
|
+
* @memberof WizardNavigationService
|
|
454
|
+
*/
|
|
455
|
+
goTo(pageToGoToOrId, lazyComplete = false) {
|
|
456
|
+
const myPages = this.pageCollection;
|
|
457
|
+
const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;
|
|
458
|
+
const currentPage = this.currentPage;
|
|
459
|
+
// no point in going to the current page. you're there already!
|
|
460
|
+
// also hard block on any navigation when stopNavigation is true
|
|
461
|
+
if (pageToGoTo === currentPage || this.wizardStopNavigation) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const currentPageIndex = myPages.getPageIndex(currentPage);
|
|
465
|
+
const goToPageIndex = myPages.getPageIndex(pageToGoTo);
|
|
466
|
+
const goingForward = goToPageIndex > currentPageIndex;
|
|
467
|
+
const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);
|
|
468
|
+
const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);
|
|
469
|
+
if (!okayToMove) {
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (goingForward && lazyComplete) {
|
|
473
|
+
pagesToCheck.forEach((page) => {
|
|
474
|
+
if (page !== pageToGoTo) {
|
|
475
|
+
page.completed = true;
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
else if (!goingForward && this.forceForwardNavigation) {
|
|
480
|
+
pagesToCheck.forEach((page) => {
|
|
481
|
+
page.completed = false;
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
this.currentPage = pageToGoTo;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking
|
|
488
|
+
* those objects to determine if navigation can be accomplished.
|
|
489
|
+
*
|
|
490
|
+
* @memberof WizardNavigationService
|
|
491
|
+
*/
|
|
492
|
+
canGoTo(pagesToCheck) {
|
|
493
|
+
let okayToMove = true;
|
|
494
|
+
const myPages = this.pageCollection;
|
|
495
|
+
// previous page can be important when moving because if it's completed it
|
|
496
|
+
// allows us to move to the page even if it's incomplete...
|
|
497
|
+
let previousPagePasses;
|
|
498
|
+
if (!pagesToCheck || pagesToCheck.length < 1) {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
pagesToCheck.forEach((page) => {
|
|
502
|
+
if (!okayToMove) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
if (page.completed) {
|
|
506
|
+
// default is true. just jump out instead of complicating it.
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
// so we know our page is not completed...
|
|
510
|
+
const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;
|
|
511
|
+
previousPagePasses = previousPage === null || previousPage.completed === true;
|
|
512
|
+
// we are false if not the current page AND previous page is not completed
|
|
513
|
+
// (but must have a previous page)
|
|
514
|
+
if (!page.current && !previousPagePasses) {
|
|
515
|
+
okayToMove = false;
|
|
516
|
+
}
|
|
517
|
+
// falls through to true as default
|
|
518
|
+
});
|
|
519
|
+
return okayToMove;
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Looks through the collection of pages to find the first one that is incomplete
|
|
523
|
+
* and makes that page the current/active page.
|
|
524
|
+
*
|
|
525
|
+
* @memberof WizardNavigationService
|
|
526
|
+
*/
|
|
527
|
+
setLastEnabledPageCurrent() {
|
|
528
|
+
const allPages = this.pageCollection.pagesAsArray;
|
|
529
|
+
let lastCompletedPageIndex = null;
|
|
530
|
+
allPages.forEach((page, index) => {
|
|
531
|
+
if (page.completed) {
|
|
532
|
+
lastCompletedPageIndex = index;
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
if (lastCompletedPageIndex === null) {
|
|
536
|
+
// always is at least the first item...
|
|
537
|
+
lastCompletedPageIndex = 0;
|
|
538
|
+
}
|
|
539
|
+
else if (lastCompletedPageIndex + 1 < allPages.length) {
|
|
540
|
+
lastCompletedPageIndex = lastCompletedPageIndex + 1;
|
|
541
|
+
}
|
|
542
|
+
this.currentPage = allPages[lastCompletedPageIndex];
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Finds the first page in the collection of pages and makes that page the
|
|
546
|
+
* current/active page.
|
|
547
|
+
*
|
|
548
|
+
* @memberof WizardNavigationService
|
|
549
|
+
*/
|
|
550
|
+
setFirstPageCurrent() {
|
|
551
|
+
this.currentPage = this.pageCollection.pagesAsArray[0];
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Updates the stepnav on the left side of the wizard when pages are dynamically
|
|
555
|
+
* added or removed from the collection of pages.
|
|
556
|
+
*
|
|
557
|
+
* @memberof WizardNavigationService
|
|
558
|
+
*/
|
|
559
|
+
updateNavigation() {
|
|
560
|
+
let toSetCurrent;
|
|
561
|
+
this.pageCollection.updateCompletedStates();
|
|
562
|
+
const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;
|
|
563
|
+
if (currentPageRemoved) {
|
|
564
|
+
toSetCurrent = this.pageCollection.findFirstIncompletePage();
|
|
565
|
+
this.currentPage = toSetCurrent;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
WizardNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: WizardNavigationService, deps: [{ token: i1.PageCollectionService }, { token: i2.ButtonHubService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
570
|
+
WizardNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: WizardNavigationService });
|
|
571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: WizardNavigationService, decorators: [{
|
|
572
|
+
type: Injectable
|
|
573
|
+
}], ctorParameters: function () { return [{ type: i1.PageCollectionService }, { type: i2.ButtonHubService }]; } });
|
|
574
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3dpemFyZC9wcm92aWRlcnMvd2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVEvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQXdEbEM7Ozs7Ozs7T0FPRztJQUNILFlBQW1CLGNBQXFDLEVBQVMsYUFBK0I7UUFBN0UsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBNkRoRzs7O1dBR0c7UUFDSyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBZXZEOzs7OztXQUtHO1FBQ0kscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRWhDOzs7Ozs7Ozs7O1dBVUc7UUFDSSwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUF3RXRDOztXQUVHO1FBQ0sscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQWFsRDs7V0FFRztRQUNLLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQW9KakQ7O1dBRUc7UUFDSyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBd0N0RDs7V0FFRztRQUNLLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQThCM0M7Ozs7Ozs7V0FPRztRQUNJLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVsQzs7Ozs7OztXQU9HO1FBQ0kscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRWhDOzs7Ozs7Ozs7V0FTRztRQUNJLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUVwQzs7Ozs7V0FLRztRQUNJLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQW5jbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDL0QsT0FBTzthQUNSO1lBQ0QsV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakYsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDN0YsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdCLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdEQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQVFEOzs7Ozs7T0FNRztJQUNILElBQVcsa0JBQWtCO1FBQzNCLDhEQUE4RDtRQUM5RCw4Q0FBOEM7UUFDOUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUF1QkQ7O09BRUc7SUFDSCxJQUFXLGdCQUFnQjtRQUN6Qiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDM0QsQ0FBQztJQU9EOzs7O09BSUc7SUFDSCxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFJLFdBQVcsQ0FBQyxJQUFtQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFPRDs7Ozs7O09BTUc7SUFDSCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQU9EOzs7Ozs7OztPQVFHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUztRQUNkLE1BQU0sV0FBVyxHQUFrQixJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BELE1BQU0sUUFBUSxHQUFrQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3RSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFCLCtEQUErRDtZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0kseUJBQXlCLENBQUMsVUFBa0I7UUFDakQsTUFBTSxXQUFXLEdBQWtCLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdELE9BQU87U0FDUjtRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUU5QyxNQUFNLE1BQU0sR0FBRyxVQUFVLEtBQUssTUFBTSxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLFVBQVUsS0FBSyxRQUFRLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2pELE1BQU0sY0FBYyxHQUFHLFFBQVEsSUFBSSxjQUFjLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUM7UUFFM0QsSUFBSSxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxJQUFJLFFBQVEsRUFBRTtZQUNaLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbkQ7YUFBTSxJQUFJLFFBQVEsRUFBRTtZQUNuQixXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEM7YUFBTSxJQUFJLE1BQU0sRUFBRTtZQUNqQixXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRTtZQUN0RCxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsT0FBTztTQUNSO1FBRUQsK0NBQStDO1FBQy9DLElBQUksUUFBUSxFQUFFO1lBQ1osd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTVDLElBQUksTUFBTSxJQUFJLFlBQVksRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQztZQUNELHNEQUFzRDtZQUN0RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLE1BQU0sSUFBSSxZQUFZLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBT0Q7Ozs7O09BS0c7SUFDSCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDeEQsT0FBTztTQUNSO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSSxNQUFNO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBMENEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0ksSUFBSSxDQUFDLGNBQW1CLEVBQUUsWUFBWSxHQUFHLEtBQUs7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwQyxNQUFNLFVBQVUsR0FBRyxPQUFPLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUM3RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXJDLCtEQUErRDtRQUMvRCxnRUFBZ0U7UUFDaEUsSUFBSSxVQUFVLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLFlBQVksR0FBRyxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakYsTUFBTSxVQUFVLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELElBQUksWUFBWSxJQUFJLFlBQVksRUFBRTtZQUNoQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFO2dCQUMzQyxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUN2RCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLFlBQTZCO1FBQzFDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRXBDLDBFQUEwRTtRQUMxRSwyREFBMkQ7UUFDM0QsSUFBSSxrQkFBMkIsQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsT0FBTzthQUNSO1lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQiw2REFBNkQ7Z0JBQzdELE9BQU87YUFDUjtZQUVELDBDQUEwQztZQUMxQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzNGLGtCQUFrQixHQUFHLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7WUFFOUUsMEVBQTBFO1lBQzFFLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUN4QyxVQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO1lBQ0QsbUNBQW1DO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0kseUJBQXlCO1FBQzlCLE1BQU0sUUFBUSxHQUFvQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNuRSxJQUFJLHNCQUFzQixHQUFXLElBQUksQ0FBQztRQUUxQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUN0RCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLHNCQUFzQixHQUFHLEtBQUssQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxzQkFBc0IsS0FBSyxJQUFJLEVBQUU7WUFDbkMsdUNBQXVDO1lBQ3ZDLHNCQUFzQixHQUFHLENBQUMsQ0FBQztTQUM1QjthQUFNLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDdkQsc0JBQXNCLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0I7UUFDckIsSUFBSSxZQUEyQixDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU1QyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFGLElBQUksa0JBQWtCLEVBQUU7WUFDdEIsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztTQUNqQztJQUNILENBQUM7O29IQTFwQlUsdUJBQXVCO3dIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENscldpemFyZFBhZ2UgfSBmcm9tICcuLi93aXphcmQtcGFnZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkh1YlNlcnZpY2UgfSBmcm9tICcuL2J1dHRvbi1odWIuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdlQ29sbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtY29sbGVjdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBQZXJmb3JtcyBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyBmb3IgYSB3aXphcmQgYW5kIG1hbmFnZXMgdGhlIGN1cnJlbnQgcGFnZS4gUHJlc2VudGVkIGFzIGFcbiAqIHNlcGFyYXRlIHNlcnZpY2UgdG8gZW5jYXBzdWxhdGUgdGhlIGJlaGF2aW9yIG9mIG5hdmlnYXRpbmcgYW5kIGNvbXBsZXRpbmcgdGhlIHdpemFyZCBzb1xuICogdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGFjcm9zcyB0aGUgd2l6YXJkIGFuZCBpdHMgc3ViLWNvbXBvbmVudHMuXG4gKlxuICogVGhlIGVhc2llc3Qgd2F5IHRvIGFjY2VzcyB0aGUgbmF2aWdhdGlvbiBzZXJ2aWNlIGlzIHRoZXJlIGEgcmVmZXJlbmNlIG9uIHlvdXIgd2l6YXJkLiBUaGVcbiAqIEZvbGxvd2luZyBleGFtcGxlIHdvdWxkIGFsbG93IHlvdSB0byBhY2Nlc3MgeW91ciBpbnN0YW5jZSBvZiB0aGUgd2l6YXJkIGZyb20geW91ciBob3N0XG4gKiBjb21wb25lbnQgYW5kIHRoZXJlYnkgYWNjZXNzIHRoZSBuYXZpZ2F0aW9uIHNlcnZpY2UgdmlhIFlvdXJIb3N0Q29tcG9uZW50LndpemFyZC5uYXZTZXJ2aWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8Y2xyLXdpemFyZCAjd2l6YXJkIC4uLj5cbiAqXG4gKiBAZXhhbXBsZVxuICogZXhwb3J0IGNsYXNzIFlvdXJIb3N0Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZChcIndpemFyZFwiKSB3aXphcmQ6IFdpemFyZDtcbiAqICAgLi4uXG4gKiB9XG4gKlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIHByZXZpb3VzIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuIFBlcmZvcm1zIGNoZWNrc1xuICAgKiBiZWZvcmUgYWxlcnRpbmcgdGhlIGN1cnJlbnQgcGFnZSBvZiB0aGUgYnV0dG9uIGNsaWNrLiBFbmFjdHMgbmF2aWdhdGlvbiB0b1xuICAgKiB0aGUgcHJldmlvdXMgcGFnZSBpZiBub3Qgb3ZlcnJpZGRlbiBhdCB0aGUgcGFnZSBsZXZlbC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgcHJldmlvdXNCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIE5leHQgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIHdpemFyZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgbmV4dEJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgZGFuZ2VyIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGRhbmdlckJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgIGZpbmlzaCBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBmaW5pc2hCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIEN1c3RvbSBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBjdXN0b21CdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIENhbmNlbCBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgd2l6YXJkLiBOb3RpZmllcyB0aGUgd2l6YXJkLFxuICAgKiB3aGljaCBoYW5kbGVzIGFsbCBjYW5jZWwgZnVuY3Rpb25hbGl0eSwgaWYgY2FuY2VsIGlzIG5vdCBvdmVycmlkZGVuIGF0IHRoZSBwYWdlXG4gICAqIGxldmVsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBjYW5jZWxCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogUmVzZXRzIG5hdmlnYXRpb24gdG8gbWFrZSB0aGUgZmlyc3QgcGFnZSBjdXJyZW50IHdoZW4gdGhlIHBhZ2UgY29sbGVjdGlvbiBzZXJ2aWNlXG4gICAqIGVtaXRzIGFuIGV2ZW50IG5vdGlmeWluZyBXaXphcmROYXZpZ2F0aW9uU2VydmljZSB0aGF0IGl0IGhhcyByZXNldCBhbGwgcGFnZXNcbiAgICogdG8gdGhlaXIgcHJpc3RpbmUsIGluY29tcGxldGUgc3RhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIHBhZ2VzUmVzZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZS4gQWxzbyBzZXRzIHVwIHN1YnNjcmlwdGlvbnNcbiAgICogdGhhdCBsaXN0ZW4gdG8gdGhlIGJ1dHRvbiBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGVuIGEgYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWRcbiAgICogaW4gdGhlIHdpemFyZC4gSXMgYWxzbyByZXNwb25zaWJsZSBmb3IgdGFraW5nIGFjdGlvbiB3aGVuIHRoZSBwYWdlIGNvbGxlY3Rpb25cbiAgICogcmVxdWVzdHMgdGhhdCBuYXZpZ2F0aW9uIGJlIHJlc2V0IHRvIGl0cyBwcmlzdGluZSBzdGF0ZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFnZUNvbGxlY3Rpb246IFBhZ2VDb2xsZWN0aW9uU2VydmljZSwgcHVibGljIGJ1dHRvblNlcnZpY2U6IEJ1dHRvbkh1YlNlcnZpY2UpIHtcbiAgICB0aGlzLnByZXZpb3VzQnV0dG9uU3Vic2NyaXB0aW9uID0gdGhpcy5idXR0b25TZXJ2aWNlLnByZXZpb3VzQnRuQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0ZpcnN0IHx8IGN1cnJlbnRQYWdlLnByZXZpb3VzU3RlcERpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRQYWdlLnByZXZpb3VzQnV0dG9uQ2xpY2tlZC5lbWl0KGN1cnJlbnRQYWdlKTtcbiAgICAgIGlmICghY3VycmVudFBhZ2UucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91cygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uZXh0QnV0dG9uU3Vic2NyaXB0aW9uID0gdGhpcy5idXR0b25TZXJ2aWNlLm5leHRCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ25leHQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGFuZ2VyQnV0dG9uU3Vic2NyaXB0aW9uID0gdGhpcy5idXR0b25TZXJ2aWNlLmRhbmdlckJ0bkNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZGFuZ2VyJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbmlzaEJ1dHRvblN1YnNjcmlwdGlvbiA9IHRoaXMuYnV0dG9uU2VydmljZS5maW5pc2hCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ2ZpbmlzaCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jdXN0b21CdXR0b25TdWJzY3JpcHRpb24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuY3VzdG9tQnRuQ2xpY2tlZC5zdWJzY3JpYmUoKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCF0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UuY3VzdG9tQnV0dG9uQ2xpY2tlZC5lbWl0KHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW5jZWxCdXR0b25TdWJzY3JpcHRpb24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuY2FuY2VsQnRuQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jdXJyZW50UGFnZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnBhZ2VPbkNhbmNlbC5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucGFnZXNSZXNldFN1YnNjcmlwdGlvbiA9IHRoaXMucGFnZUNvbGxlY3Rpb24ucGFnZXNSZXNldC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRGaXJzdFBhZ2VDdXJyZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpb3VzQnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5uZXh0QnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kYW5nZXJCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmZpbmlzaEJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY3VzdG9tQnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnBhZ2VzUmVzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX2N1cnJlbnRDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Q2xyV2l6YXJkUGFnZT4oKTtcblxuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSB0aGF0IGlzIHByZWRvbWluYW50bHkgdXNlZCBhbW9uZ3N0IHRoZSBzdWJjb21wb25lbnRzIGFuZCBzZXJ2aWNlc1xuICAgKiBvZiB0aGUgd2l6YXJkLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGxpc3RlbiB0byB0aGUgQ2xyV2l6YXJkUGFnZS5vbkxvYWRcbiAgICogKGNscldpemFyZFBhZ2VPbkxvYWQpIG91dHB1dCBpbnN0ZWFkIG9mIHRoaXMgT2JzZXJ2YWJsZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRQYWdlQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPENscldpemFyZFBhZ2U+IHtcbiAgICAvLyBUT0RPOiBNQUtFIFNVUkUgRVhURVJOQUwgT1VUUFVUUyBTQVkgJ0NIQU5HRScgTk9UICdDSEFOR0VEJ1xuICAgIC8vIEEgQlJFQUtJTkcgQ0hBTkdFIFNPIEFXQUlUSU5HIE1JTk9SIFJFTEVBU0VcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQSBCb29sZWFuIGZsYWcgdXNlZCBieSB0aGUgQ2xyV2l6YXJkUGFnZSB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcGFnZXMgYXJlXG4gICAqIGxvYWRpbmcgYW5kIHRoZXJlIGlzIG5vIGN1cnJlbnQgcGFnZSBkZWZpbmVkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBuYXZTZXJ2aWNlTG9hZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5mb3JjZUZvcndhcmQgKGNscldpemFyZEZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIGlucHV0LiBXaGVuIHRydWUsXG4gICAqIG5hdmlnYXRpbmcgYmFja3dhcmRzIGluIHRoZSBzdGVwbmF2IG1lbnUgd2lsbCByZXNldCBhbnkgc2tpcHBlZCBwYWdlcycgY29tcGxldGVkXG4gICAqIHN0YXRlIHRvIGZhbHNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgd2l6YXJkIGV4ZWN1dGVzIHZhbGlkYXRpb24gb24gYSBwYWdlLWJ5LXBhZ2UgYmFzaXMgd2hlblxuICAgKiB0aGUgbmV4dCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZm9yY2VGb3J3YXJkTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgY3VycmVudFBhZ2VUaXRsZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAvLyB3aGVuIHRoZSBxdWVyeWxpc3Qgb2YgcGFnZXMgaXMgZW1wdHkuIHRoaXMgaXMgdGhlIGZpcnN0IHBsYWNlIGl0IGZhaWxzLi4uXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2UudGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJvb2xlYW4gdGhhdCB0ZWxscyB5b3Ugd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFnZSBpcyB0aGUgZmlyc3RcbiAgICogcGFnZSBpbiB0aGUgV2l6YXJkLlxuICAgKlxuICAgKiBUaGlzIGlzIGhlbHBmdWwgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgYSBwYWdlIGlzIG5hdmlnYWJsZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRQYWdlSXNGaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlQ29sbGVjdGlvbi5maXJzdFBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJvb2xlYW4gdGhhdCB0ZWxscyB5b3Ugd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFnZSBpcyB0aGVcbiAgICogbGFzdCBwYWdlIGluIHRoZSBXaXphcmQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggYnV0dG9ucyBzaG91bGQgZGlzcGxheSBpbiB0aGUgd2l6YXJkIGZvb3Rlci5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRQYWdlSXNMYXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2VDb2xsZWN0aW9uLmxhc3RQYWdlID09PSB0aGlzLmN1cnJlbnRQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IENscldpemFyZFBhZ2U7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIENscldpemFyZFBhZ2Ugb2JqZWN0IG9mIHRoZSBjdXJyZW50IHBhZ2Ugb3IgbnVsbC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnZXQgY3VycmVudFBhZ2UoKTogQ2xyV2l6YXJkUGFnZSB7XG4gICAgaWYgKCF0aGlzLl9jdXJyZW50UGFnZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgQ2xyV2l6YXJkUGFnZSBvYmplY3QsIHNpbmNlIHRoYXQgb2JqZWN0IHRvIGJlIHRoZSBjdXJyZW50L2FjdGl2ZVxuICAgKiBwYWdlIGluIHRoZSB3aXphcmQsIGFuZCBlbWl0cyB0aGUgQ2xyV2l6YXJkUGFnZS5vbkxvYWQgKGNscldpemFyZFBhZ2VPbkxvYWQpXG4gICAqIGV2ZW50IGZvciB0aGF0IHBhZ2UuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBhbGwgb2YgdGhpcyB3b3JrIGlzIGJ5cGFzc2VkIGlmIHRoZSBDbHJXaXphcmRQYWdlIG9iamVjdCBpcyBhbHJlYWR5XG4gICAqIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgc2V0IGN1cnJlbnRQYWdlKHBhZ2U6IENscldpemFyZFBhZ2UpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudFBhZ2UgIT09IHBhZ2UgJiYgIXRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHBhZ2Uub25Mb2FkLmVtaXQocGFnZS5pZCk7XG4gICAgICB0aGlzLl9jdXJyZW50Q2hhbmdlZC5uZXh0KHBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9OZXh0UGFnZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdXNlZCBpbnRlcm5hbGx5IHRvIGFsZXJ0IHRoZSB3aXphcmQgdGhhdCBmb3J3YXJkIG5hdmlnYXRpb25cbiAgICogaGFzIG9jY3VycmVkLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGhlIFdpemFyZC5vbk1vdmVOZXh0XG4gICAqIChjbHJXaXphcmRPbk5leHQpIG91dHB1dCBpbnN0ZWFkIG9mIHRoaXMgb25lLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgbW92ZWRUb05leHRQYWdlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9tb3ZlZFRvTmV4dFBhZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwcml2YXRlIF93aXphcmRGaW5pc2hlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdXNlZCBpbnRlcm5hbGx5IHRvIGFsZXJ0IHRoZSB3aXphcmQgdGhhdCB0aGUgbmF2IHNlcnZpY2VcbiAgICogaGFzIGFwcHJvdmVkIGNvbXBsZXRpb24gb2YgdGhlIHdpemFyZC5cbiAgICpcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRoZSBXaXphcmQud2l6YXJkRmluaXNoZWQgKGNscldpemFyZE9uRmluaXNoKVxuICAgKiBvdXRwdXQgaW5zdGVhZCBvZiB0aGlzIG9uZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHdpemFyZEZpbmlzaGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl93aXphcmRGaW5pc2hlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgcHVibGljIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBhZHZhbmNlXG4gICAqIHRoZSB1c2VyIHRvIHRoZSBuZXh0IHBhZ2UuXG4gICAqXG4gICAqIFdoZW4gaW52b2tlZCwgdGhpcyBtZXRob2Qgd2lsbCBtb3ZlIHRoZSB3aXphcmQgdG8gdGhlIG5leHQgcGFnZSBhZnRlclxuICAgKiBzdWNjZXNzZnVsIHZhbGlkYXRpb24uIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBnb2VzIHRocm91Z2ggYWxsIGNoZWNrc1xuICAgKiBhbmQgZXZlbnQgZW1pc3Npb25zIGFzIGlmIFdpemFyZC5uZXh0KGZhbHNlKSBoYWQgYmVlbiBjYWxsZWQuXG4gICAqXG4gICAqIEluIG1vc3QgY2FzZXMsIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gdXNlIFdpemFyZC5uZXh0KGZhbHNlKS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUlzTGFzdCkge1xuICAgICAgdGhpcy5jaGVja0FuZENvbW1pdEN1cnJlbnRQYWdlKCdmaW5pc2gnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGVja0FuZENvbW1pdEN1cnJlbnRQYWdlKCduZXh0Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ5cGFzc2VzIGNoZWNrcyBhbmQgbW9zdCBldmVudCBlbWlzc2lvbnMgdG8gZm9yY2UgYSBwYWdlIHRvIG5hdmlnYXRlIGZvcndhcmQuXG4gICAqXG4gICAqIENvbXBhcmFibGUgdG8gY2FsbGluZyBXaXphcmQubmV4dCgpIG9yIFdpemFyZC5mb3JjZU5leHQoKS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZm9yY2VOZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlOiBDbHJXaXphcmRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICBjb25zdCBuZXh0UGFnZTogQ2xyV2l6YXJkUGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24uZ2V0TmV4dFBhZ2UoY3VycmVudFBhZ2UpO1xuXG4gICAgLy8gY2F0Y2ggZXJyYW50IG51bGwgb3IgdW5kZWZpbmVkcyB0aGF0IGNyZWVwIGluXG4gICAgaWYgKCFuZXh0UGFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgd2l6YXJkIGhhcyBubyBuZXh0IHBhZ2UgdG8gZ28gdG8uJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRQYWdlLmNvbXBsZXRlZCkge1xuICAgICAgLy8gdGhpcyBpcyBhIHN0YXRlIHRoYXQgYWx0IG5leHQgZmxvd3MgY2FuIGdldCB0aGVtc2VsdmVzIGluLi4uXG4gICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV4dFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGJ1dHRvbi9hY3Rpb24gdHlwZSBhcyBhIHBhcmFtZXRlci4gRW5jYXBzdWxhdGVzIGFsbCBsb2dpYyBmb3JcbiAgICogZXZlbnQgZW1pc3Npb25zLCBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdlLCBhbmQgd2l6YXJkIGFuZCBwYWdlIGxldmVsIG92ZXJyaWRlcy5cbiAgICpcbiAgICogQXZvaWQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHVubGVzcyB5b3UgcmVhbGx5IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoYnV0dG9uVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhZ2U6IENscldpemFyZFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuXG4gICAgaWYgKCFjdXJyZW50UGFnZS5yZWFkeVRvQ29tcGxldGUgfHwgdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlBbVRoZUxhc3RQYWdlID0gdGhpcy5jdXJyZW50UGFnZUlzTGFzdDtcblxuICAgIGNvbnN0IGlzTmV4dCA9IGJ1dHRvblR5cGUgPT09ICduZXh0JztcbiAgICBjb25zdCBpc0RhbmdlciA9IGJ1dHRvblR5cGUgPT09ICdkYW5nZXInO1xuICAgIGNvbnN0IGlzRGFuZ2VyTmV4dCA9IGlzRGFuZ2VyICYmICFpQW1UaGVMYXN0UGFnZTtcbiAgICBjb25zdCBpc0RhbmdlckZpbmlzaCA9IGlzRGFuZ2VyICYmIGlBbVRoZUxhc3RQYWdlO1xuICAgIGNvbnN0IGlzRmluaXNoID0gYnV0dG9uVHlwZSA9PT0gJ2ZpbmlzaCcgfHwgaXNEYW5nZXJGaW5pc2g7XG5cbiAgICBpZiAoaXNGaW5pc2ggJiYgIWlBbVRoZUxhc3RQYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3VycmVudFBhZ2UucHJpbWFyeUJ1dHRvbkNsaWNrZWQuZW1pdChidXR0b25UeXBlKTtcblxuICAgIGlmIChpc0ZpbmlzaCkge1xuICAgICAgY3VycmVudFBhZ2UuZmluaXNoQnV0dG9uQ2xpY2tlZC5lbWl0KGN1cnJlbnRQYWdlKTtcbiAgICB9IGVsc2UgaWYgKGlzRGFuZ2VyKSB7XG4gICAgICBjdXJyZW50UGFnZS5kYW5nZXJCdXR0b25DbGlja2VkLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKGlzTmV4dCkge1xuICAgICAgY3VycmVudFBhZ2UubmV4dEJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50UGFnZS5zdG9wTmV4dCB8fCBjdXJyZW50UGFnZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgY3VycmVudFBhZ2Uub25Db21taXQuZW1pdChjdXJyZW50UGFnZS5pZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb3JkZXIgaXMgdmVyeSBpbXBvcnRhbnQgd2l0aCB0aGVzZSBlbWl0dGVycyFcbiAgICBpZiAoaXNGaW5pc2gpIHtcbiAgICAgIC8vIG1hcmsgcGFnZSBhcyBjb21wbGV0ZVxuICAgICAgaWYgKCF0aGlzLndpemFyZEhhc0FsdE5leHQpIHtcbiAgICAgICAgdGhpcy5wYWdlQ29sbGVjdGlvbi5jb21taXRQYWdlKGN1cnJlbnRQYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3dpemFyZEZpbmlzaGVkLm5leHQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aXphcmRIYXNBbHROZXh0KSB7XG4gICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuXG4gICAgICBpZiAoaXNOZXh0IHx8IGlzRGFuZ2VyTmV4dCkge1xuICAgICAgICB0aGlzLl9tb3ZlZFRvTmV4dFBhZ2UubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIC8vIGp1bXAgb3V0IGhlcmUsIG5vIG1hdHRlciB3aGF0IHR5cGUgd2UncmUgbG9va2luZyBhdFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc05leHQgfHwgaXNEYW5nZXJOZXh0KSB7XG4gICAgICB0aGlzLmZvcmNlTmV4dCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy53aXphcmRIYXNBbHROZXh0ICYmICF0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICB0aGlzLl9tb3ZlZFRvTmV4dFBhZ2UubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHB1YmxpYyBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb2dyYW1tYXRpY2FsbHkgY29uY2x1ZGVcbiAgICogdGhlIHdpemFyZC5cbiAgICpcbiAgICogV2hlbiBpbnZva2VkLCB0aGlzIG1ldGhvZCB3aWxsICBpbml0aWF0ZSB0aGUgd29yayBpbnZvbHZlZCB3aXRoIGZpbmFsaXppbmdcbiAgICogYW5kIGZpbmlzaGluZyB0aGUgd2l6YXJkIHdvcmtmbG93LiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZ29lcyB0aHJvdWdoIGFsbFxuICAgKiBjaGVja3MgYW5kIGV2ZW50IGVtaXNzaW9ucyBhcyBpZiBXaXphcmQuZmluaXNoKGZhbHNlKSBoYWQgYmVlbiBjYWxsZWQuXG4gICAqXG4gICAqIEluIG1vc3QgY2FzZXMsIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gdXNlIFdpemFyZC5maW5pc2goZmFsc2UpLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0FuZENvbW1pdEN1cnJlbnRQYWdlKCdmaW5pc2gnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9QcmV2aW91c1BhZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB0aGUgd2l6YXJkIHdoZW4gYmFja3dhcmRzIG5hdmlnYXRpb24gaGFzIG9jY3VycmVkIHZpYSB0aGVcbiAgICogcHJldmlvdXMgYnV0dG9uLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgbW92ZWRUb1ByZXZpb3VzUGFnZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbW92ZWRUb1ByZXZpb3VzUGFnZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IG1vdmVzIHRoZSB3aXphcmQgdG8gdGhlIHBhZ2UgYmVmb3JlIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAqXG4gICAqIEluIG1vc3QgaW5zdGFuY2VzLCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGNhbGwgV2l6YXJkLnByZXZpb3VzKClcbiAgICogd2hpY2ggZG9lcyB0aGUgc2FtZSB0aGluZy5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0ZpcnN0IHx8IHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VDb2xsZWN0aW9uLmdldFByZXZpb3VzUGFnZSh0aGlzLmN1cnJlbnRQYWdlKTtcblxuICAgIGlmICghcHJldmlvdXNQYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZWRUb1ByZXZpb3VzUGFnZS5uZXh0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuZm9yY2VGb3J3YXJkTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5jb21wbGV0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcHJldmlvdXNQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY2FuY2VsV2l6YXJkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB0aGUgd2l6YXJkIHRoYXQgYSB1c2VyIGlzIHRyeWluZyB0byBjYW5jZWwgaXQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGdldCBub3RpZnlXaXphcmRDYW5jZWwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY2FuY2VsV2l6YXJkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIGhvb2sgaW50byB0aGUgY2FuY2VsIHdvcmtmbG93IG9mIHRoZSB3aXphcmQgZnJvbSB0aGUgbmF2IHNlcnZpY2UuIE5vdGUgdGhhdFxuICAgKiB0aGlzIHJvdXRlIGdvZXMgdGhyb3VnaCBhbGwgY2hlY2tzIGFuZCBldmVudCBlbWlzc2lvbnMgYXMgaWYgYSBjYW5jZWwgYnV0dG9uIGhhZFxuICAgKiBiZWVuIGNsaWNrZWQuXG4gICAqXG4gICAqIEluIG1vc3QgY2FzZXMsIHVzZXJzIGxvb2tpbmcgZm9yIGEgaG9vayBpbnRvIHRoZSBjYW5jZWwgcm91dGluZSBhcmUgYWN0dWFsbHkgbG9va2luZ1xuICAgKiBmb3IgYSB3YXkgdG8gY2xvc2UgdGhlIHdpemFyZCBmcm9tIHRoZWlyIGhvc3QgY29tcG9uZW50IGJlY2F1c2UgdGhleSBoYXZlIHByZXZlbnRlZFxuICAgKiB0aGUgZGVmYXVsdCBjYW5jZWwgYWN0aW9uLlxuICAgKlxuICAgKiBJbiB0aGlzIGluc3RhbmNlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgV2l6YXJkLmNsb3NlKCkgdG8gYXZvaWQgYW55IGV2ZW50XG4gICAqIGVtaXNzaW9uIGxvb3AgcmVzdWx0aW5nIGZyb20gYW4gZXZlbnQgaGFuZGxlciBjYWxsaW5nIGJhY2sgaW50byByb3V0aW5lIHRoYXQgd2lsbFxuICAgKiBhZ2FpbiBldm9rZSB0aGUgZXZlbnRzIGl0IGhhbmRsZXMuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jYW5jZWxXaXphcmQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wQ2FuY2VsIChjbHJXaXphcmRQcmV2ZW50RGVmYXVsdENhbmNlbCkgaW5wdXQuIFdoZW4gdHJ1ZSwgdGhlIGNhbmNlbFxuICAgKiByb3V0aW5lIGlzIHN1YnZlcnRlZCBhbmQgbXVzdCBiZSByZWluc3RhdGVkIGluIHRoZSBob3N0IGNvbXBvbmVudCBjYWxsaW5nIFdpemFyZC5jbG9zZSgpXG4gICAqIGF0IHNvbWUgcG9pbnQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIHdpemFyZEhhc0FsdENhbmNlbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZmxhZyBzaGFyZWQgYWNyb3NzIHRoZSBXaXphcmQgc3ViY29tcG9uZW50cyB0aGF0IGZvbGxvd3MgdGhlIHZhbHVlXG4gICAqIG9mIHRoZSBXaXphcmQuc3RvcE5leHQgKGNscldpemFyZFByZXZlbnREZWZhdWx0TmV4dCkgaW5wdXQuIFdoZW4gdHJ1ZSwgdGhlIG5leHQgYW5kIGZpbmlzaFxuICAgKiByb3V0aW5lcyBhcmUgc3VidmVydGVkIGFuZCBtdXN0IGJlIHJlaW5zdGF0ZWQgaW4gdGhlIGhvc3QgY29tcG9uZW50IGNhbGxpbmcgV2l6YXJkLm5leHQoKSxcbiAgICogV2l6YXJkLmZvcmNlTmV4dCgpLCBXaXphcmQuZmluaXNoKCksIG9yIFdpemFyZC5mb3JjZUZpbmlzaCgpLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyB3aXphcmRIYXNBbHROZXh0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wTmF2aWdhdGlvbiAoY2xyV2l6YXJkUHJldmVudE5hdmlnYXRpb24pIGlucHV0LiBXaGVuIHRydWUsIGFsbFxuICAgKiBuYXZpZ2F0aW9uYWwgZWxlbWVudHMgaW4gdGhlIHdpemFyZCBhcmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gZnJlZXplIHRoZSB3aXphcmQgaW4gcGxhY2UuIEV2ZW50cyBhcmUgbm90IGZpcmVkIHNvIHRoaXMgaXNcbiAgICogbm90IGEgd2F5IHRvIGltcGxlbWVudCBhbHRlcm5hdGUgZnVuY3Rpb25hbGl0eSBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgd2l6YXJkU3RvcE5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBib29sZWFuIGZsYWcgc2hhcmVkIHdpdGggdGhlIHN0ZXBuYXYgaXRlbXMgdGhhdCBwcmV2ZW50cyB1c2VyIGNsaWNrcyBvblxuICAgKiBzdGVwbmF2IGl0ZW1zIGZyb20gbmF2aWdhdGluZyB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyB3aXphcmREaXNhYmxlU3RlcG5hdiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhbGwgcmVxdWlyZWQgY2hlY2tzIHRvIGRldGVybWluZSBpZiBhIHVzZXIgY2FuIG5hdmlnYXRlIHRvIGEgcGFnZS4gQ2hlY2tpbmcgYXQgZWFjaFxuICAgKiBwb2ludCBpZiBhIHBhZ2UgaXMgbmF2aWdhYmxlIC0tIGNvbXBsZXRlZCB3aGVyZSB0aGUgcGFnZSBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjb21wbGV0ZWRcbiAgICogcGFnZS5cbiAgICpcbiAgICogVGFrZXMgdHdvIHBhcmFtZXRlcnMuIFRoZSBmaXJzdCBvbmUgbXVzdCBiZSBlaXRoZXIgdGhlIENscldpemFyZFBhZ2Ugb2JqZWN0IG9yIHRoZSBJRCBvZiB0aGVcbiAgICogQ2xyV2l6YXJkUGFnZSBvYmplY3QgdGhhdCB5b3Ugd2FudCB0byBtYWtlIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAqXG4gICAqIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBpcyBhIEJvb2xlYW4gZmxhZyBmb3IgXCJsYXp5IGNvbXBsZXRpb25cIi4gV2hhdCB0aGlzIG1lYW5zXG4gICAqIGlzIHRoZSBXaXphcmQgd2lsbCBtYXJrIGFsbCBwYWdlcyBiZXR3ZWVuIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHRoZSBwYWdlIHlvdSB3YW50IHRvIG5hdmlnYXRlXG4gICAqIHRvIGFzIGNvbXBsZXRlZC4gVGhpcyBpcyB1c2VmdWwgZm9yIGluZm9ybWF0aW9uYWwgd2l6YXJkcyB0aGF0IGRvIG5vdCByZXF1aXJlIHVzZXIgYWN0aW9uLFxuICAgKiBhbGxvd2luZyBhbiBlYXN5IG1lYW5zIGZvciB1c2VycyB0byBqdW1wIGFoZWFkLlxuICAgKlxuICAgKiBUbyBhdm9pZCBjaGVja3Mgb24gbmF2aWdhdGlvbiwgdXNlIENscldpemFyZFBhZ2UubWFrZUN1cnJlbnQoKSBpbnN0ZWFkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBnb1RvKHBhZ2VUb0dvVG9PcklkOiBhbnksIGxhenlDb21wbGV0ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbXlQYWdlcyA9IHRoaXMucGFnZUNvbGxlY3Rpb247XG4gICAgY29uc3QgcGFnZVRvR29UbyA9IHR5cGVvZiBwYWdlVG9Hb1RvT3JJZCA9PT0gJ3N0cmluZycgPyBteVBhZ2VzLmdldFBhZ2VCeUlkKHBhZ2VUb0dvVG9PcklkKSA6IHBhZ2VUb0dvVG9PcklkO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcblxuICAgIC8vIG5vIHBvaW50IGluIGdvaW5nIHRvIHRoZSBjdXJyZW50IHBhZ2UuIHlvdSdyZSB0aGVyZSBhbHJlYWR5IVxuICAgIC8vIGFsc28gaGFyZCBibG9jayBvbiBhbnkgbmF2aWdhdGlvbiB3aGVuIHN0b3BOYXZpZ2F0aW9uIGlzIHRydWVcbiAgICBpZiAocGFnZVRvR29UbyA9PT0gY3VycmVudFBhZ2UgfHwgdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSBteVBhZ2VzLmdldFBhZ2VJbmRleChjdXJyZW50UGFnZSk7XG4gICAgY29uc3QgZ29Ub1BhZ2VJbmRleCA9IG15UGFnZXMuZ2V0UGFnZUluZGV4KHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IGdvaW5nRm9yd2FyZCA9IGdvVG9QYWdlSW5kZXggPiBjdXJyZW50UGFnZUluZGV4O1xuICAgIGNvbnN0IHBhZ2VzVG9DaGVjayA9IG15UGFnZXMuZ2V0UGFnZVJhbmdlRnJvbVBhZ2VzKHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IG9rYXlUb01vdmUgPSBsYXp5Q29tcGxldGUgfHwgdGhpcy5jYW5Hb1RvKHBhZ2VzVG9DaGVjayk7XG5cbiAgICBpZiAoIW9rYXlUb01vdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZ29pbmdGb3J3YXJkICYmIGxhenlDb21wbGV0ZSkge1xuICAgICAgcGFnZXNUb0NoZWNrLmZvckVhY2goKHBhZ2U6IENscldpemFyZFBhZ2UpID0+IHtcbiAgICAgICAgaWYgKHBhZ2UgIT09IHBhZ2VUb0dvVG8pIHtcbiAgICAgICAgICBwYWdlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWdvaW5nRm9yd2FyZCAmJiB0aGlzLmZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIHtcbiAgICAgIHBhZ2VzVG9DaGVjay5mb3JFYWNoKChwYWdlOiBDbHJXaXphcmRQYWdlKSA9PiB7XG4gICAgICAgIHBhZ2UuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZVRvR29UbztcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgcmFuZ2Ugb2YgQ2xyV2l6YXJkUGFnZSBvYmplY3RzIGFzIGEgcGFyYW1ldGVyLiBQZXJmb3JtcyB0aGUgd29yayBvZiBjaGVja2luZ1xuICAgKiB0aG9zZSBvYmplY3RzIHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW9uIGNhbiBiZSBhY2NvbXBsaXNoZWQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGNhbkdvVG8ocGFnZXNUb0NoZWNrOiBDbHJXaXphcmRQYWdlW10pOiBib29sZWFuIHtcbiAgICBsZXQgb2theVRvTW92ZSA9IHRydWU7XG4gICAgY29uc3QgbXlQYWdlcyA9IHRoaXMucGFnZUNvbGxlY3Rpb247XG5cbiAgICAvLyBwcmV2aW91cyBwYWdlIGNhbiBiZSBpbXBvcnRhbnQgd2hlbiBtb3ZpbmcgYmVjYXVzZSBpZiBpdCdzIGNvbXBsZXRlZCBpdFxuICAgIC8vIGFsbG93cyB1cyB0byBtb3ZlIHRvIHRoZSBwYWdlIGV2ZW4gaWYgaXQncyBpbmNvbXBsZXRlLi4uXG4gICAgbGV0IHByZXZpb3VzUGFnZVBhc3NlczogYm9vbGVhbjtcblxuICAgIGlmICghcGFnZXNUb0NoZWNrIHx8IHBhZ2VzVG9DaGVjay5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcGFnZXNUb0NoZWNrLmZvckVhY2goKHBhZ2U6IENscldpemFyZFBhZ2UpID0+IHtcbiAgICAgIGlmICghb2theVRvTW92ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwYWdlLmNvbXBsZXRlZCkge1xuICAgICAgICAvLyBkZWZhdWx0IGlzIHRydWUuIGp1c3QganVtcCBvdXQgaW5zdGVhZCBvZiBjb21wbGljYXRpbmcgaXQuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gc28gd2Uga25vdyBvdXIgcGFnZSBpcyBub3QgY29tcGxldGVkLi4uXG4gICAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSBteVBhZ2VzLmdldFBhZ2VJbmRleChwYWdlKSA+IDAgPyBteVBhZ2VzLmdldFByZXZpb3VzUGFnZShwYWdlKSA6IG51bGw7XG4gICAgICBwcmV2aW91c1BhZ2VQYXNzZXMgPSBwcmV2aW91c1BhZ2UgPT09IG51bGwgfHwgcHJldmlvdXNQYWdlLmNvbXBsZXRlZCA9PT0gdHJ1ZTtcblxuICAgICAgLy8gd2UgYXJlIGZhbHNlIGlmIG5vdCB0aGUgY3VycmVudCBwYWdlIEFORCBwcmV2aW91cyBwYWdlIGlzIG5vdCBjb21wbGV0ZWRcbiAgICAgIC8vIChidXQgbXVzdCBoYXZlIGEgcHJldmlvdXMgcGFnZSlcbiAgICAgIGlmICghcGFnZS5jdXJyZW50ICYmICFwcmV2aW91c1BhZ2VQYXNzZXMpIHtcbiAgICAgICAgb2theVRvTW92ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaCB0byB0cnVlIGFzIGRlZmF1bHRcbiAgICB9KTtcblxuICAgIHJldHVybiBva2F5VG9Nb3ZlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2tzIHRocm91Z2ggdGhlIGNvbGxlY3Rpb24gb2YgcGFnZXMgdG8gZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXMgaW5jb21wbGV0ZVxuICAgKiBhbmQgbWFrZXMgdGhhdCBwYWdlIHRoZSBjdXJyZW50L2FjdGl2ZSBwYWdlLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBzZXRMYXN0RW5hYmxlZFBhZ2VDdXJyZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbFBhZ2VzOiBDbHJXaXphcmRQYWdlW10gPSB0aGlzLnBhZ2VDb2xsZWN0aW9uLnBhZ2VzQXNBcnJheTtcbiAgICBsZXQgbGFzdENvbXBsZXRlZFBhZ2VJbmRleDogbnVtYmVyID0gbnVsbDtcblxuICAgIGFsbFBhZ2VzLmZvckVhY2goKHBhZ2U6IENscldpemFyZFBhZ2UsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChwYWdlLmNvbXBsZXRlZCkge1xuICAgICAgICBsYXN0Q29tcGxldGVkUGFnZUluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9PT0gbnVsbCkge1xuICAgICAgLy8gYWx3YXlzIGlzIGF0IGxlYXN0IHRoZSBmaXJzdCBpdGVtLi4uXG4gICAgICBsYXN0Q29tcGxldGVkUGFnZUluZGV4ID0gMDtcbiAgICB9IGVsc2UgaWYgKGxhc3RDb21wbGV0ZWRQYWdlSW5kZXggKyAxIDwgYWxsUGFnZXMubGVuZ3RoKSB7XG4gICAgICBsYXN0Q29tcGxldGVkUGFnZUluZGV4ID0gbGFzdENvbXBsZXRlZFBhZ2VJbmRleCArIDE7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGFsbFBhZ2VzW2xhc3RDb21wbGV0ZWRQYWdlSW5kZXhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBmaXJzdCBwYWdlIGluIHRoZSBjb2xsZWN0aW9uIG9mIHBhZ2VzIGFuZCBtYWtlcyB0aGF0IHBhZ2UgdGhlXG4gICAqIGN1cnJlbnQvYWN0aXZlIHBhZ2UuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIHNldEZpcnN0UGFnZUN1cnJlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24ucGFnZXNBc0FycmF5WzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHN0ZXBuYXYgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgd2l6YXJkIHdoZW4gcGFnZXMgYXJlIGR5bmFtaWNhbGx5XG4gICAqIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcy5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgdG9TZXRDdXJyZW50OiBDbHJXaXphcmRQYWdlO1xuXG4gICAgdGhpcy5wYWdlQ29sbGVjdGlvbi51cGRhdGVDb21wbGV0ZWRTdGF0ZXMoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQYWdlUmVtb3ZlZCA9IHRoaXMucGFnZUNvbGxlY3Rpb24ucGFnZXNBc0FycmF5LmluZGV4T2YodGhpcy5jdXJyZW50UGFnZSkgPCAwO1xuICAgIGlmIChjdXJyZW50UGFnZVJlbW92ZWQpIHtcbiAgICAgIHRvU2V0Q3VycmVudCA9IHRoaXMucGFnZUNvbGxlY3Rpb24uZmluZEZpcnN0SW5jb21wbGV0ZVBhZ2UoKTtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0b1NldEN1cnJlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|