@wavemaker-ai/app-ng-runtime 1.0.0-rc.647469
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/build-task/.npmignore +2 -0
- package/build-task/advanced/carousel/carousel-template/carousel-template.build.d.ts +2 -0
- package/build-task/advanced/carousel/carousel.build.d.ts +2 -0
- package/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
- package/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
- package/build-task/advanced/login/login.build.d.ts +2 -0
- package/build-task/advanced/marquee/marquee.build.d.ts +2 -0
- package/build-task/basic/anchor/anchor.build.d.ts +2 -0
- package/build-task/basic/audio/audio.build.d.ts +2 -0
- package/build-task/basic/html/html.build.d.ts +2 -0
- package/build-task/basic/icon/icon.build.d.ts +2 -0
- package/build-task/basic/iframe/iframe.build.d.ts +2 -0
- package/build-task/basic/label/label.build.d.ts +2 -0
- package/build-task/basic/picture/picture.build.d.ts +2 -0
- package/build-task/basic/progress/progress-bar/progress-bar.build.d.ts +2 -0
- package/build-task/basic/progress/progress-circle/progress-circle.build.d.ts +2 -0
- package/build-task/basic/rich-text-editor/rich-text-editor.build.d.ts +2 -0
- package/build-task/basic/search/search.build.d.ts +2 -0
- package/build-task/basic/spinner/spinner.build.d.ts +2 -0
- package/build-task/basic/tree/tree.build.d.ts +1 -0
- package/build-task/basic/video/video.build.d.ts +2 -0
- package/build-task/bundles/index.umd.js +3106 -0
- package/build-task/chart/chart.build.d.ts +2 -0
- package/build-task/containers/accordion/accordion-pane/accordion-pane.build.d.ts +2 -0
- package/build-task/containers/accordion/accordion.build.d.ts +2 -0
- package/build-task/containers/container.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid-column/layout-grid-column.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid-row/layout-grid-row.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid.build.d.ts +2 -0
- package/build-task/containers/linear-layout/linear-layout-item/linear-layout-item.build.d.ts +2 -0
- package/build-task/containers/linear-layout/linear-layout.build.d.ts +2 -0
- package/build-task/containers/panel/panel.build.d.ts +2 -0
- package/build-task/containers/repeat-template.build.d.ts +2 -0
- package/build-task/containers/segmented-control/segment-content/segment-content.build.d.ts +2 -0
- package/build-task/containers/segmented-control/segmented-control.build.d.ts +2 -0
- package/build-task/containers/tabs/tab-pane/tab-pane.build.d.ts +2 -0
- package/build-task/containers/tabs/tabs.build.d.ts +2 -0
- package/build-task/containers/tile/tile.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard-action/wizard-action.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard-step/wizard-step.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard.build.d.ts +2 -0
- package/build-task/data/card/card-actions/card-actions.build.d.ts +2 -0
- package/build-task/data/card/card-content/card-content.build.d.ts +2 -0
- package/build-task/data/card/card-footer/card-footer.build.d.ts +2 -0
- package/build-task/data/card/card.build.d.ts +2 -0
- package/build-task/data/form/form-action/form-action.build.d.ts +2 -0
- package/build-task/data/form/form-field/form-field.build.d.ts +2 -0
- package/build-task/data/form/form.build.d.ts +2 -0
- package/build-task/data/list/list.build.d.ts +2 -0
- package/build-task/data/live-table/live-table.build.d.ts +2 -0
- package/build-task/data/media-list/media-list-item/media-list-item.build.d.ts +2 -0
- package/build-task/data/media-list/media-list.build.d.ts +2 -0
- package/build-task/data/pagination/pagination.build.d.ts +2 -0
- package/build-task/data/table/table-action/table-action.build.d.ts +2 -0
- package/build-task/data/table/table-column/table-column.build.d.ts +2 -0
- package/build-task/data/table/table-column-group/table-column-group.build.d.ts +2 -0
- package/build-task/data/table/table-row/table-row.build.d.ts +2 -0
- package/build-task/data/table/table-row-action/table-row-action.build.d.ts +2 -0
- package/build-task/data/table/table.build.d.ts +2 -0
- package/build-task/device/barcode-scanner/barcode-scanner.build.d.ts +2 -0
- package/build-task/device/camera/camera.build.d.ts +2 -0
- package/build-task/dialogs/alert-dialog/alert-dialog.build.d.ts +2 -0
- package/build-task/dialogs/base/dialog-footer/dialog-footer.build.d.ts +2 -0
- package/build-task/dialogs/confirm-dialog/confirm-dialog.build.d.ts +2 -0
- package/build-task/dialogs/design-dialog/dialog.build.d.ts +2 -0
- package/build-task/dialogs/iframe-dialog/iframe-dialog.build.d.ts +2 -0
- package/build-task/dialogs/login-dialog/login-dialog.build.d.ts +2 -0
- package/build-task/dialogs/partial-dialog/partial-dialog.build.d.ts +2 -0
- package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +31 -0
- package/build-task/esm2022/advanced/carousel/carousel.build.mjs +45 -0
- package/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
- package/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
- package/build-task/esm2022/advanced/login/login.build.mjs +15 -0
- package/build-task/esm2022/advanced/marquee/marquee.build.mjs +10 -0
- package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
- package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
- package/build-task/esm2022/basic/html/html.build.mjs +15 -0
- package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
- package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
- package/build-task/esm2022/basic/label/label.build.mjs +25 -0
- package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
- package/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +35 -0
- package/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +15 -0
- package/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +15 -0
- package/build-task/esm2022/basic/search/search.build.mjs +11 -0
- package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
- package/build-task/esm2022/basic/tree/tree.build.mjs +9 -0
- package/build-task/esm2022/basic/video/video.build.mjs +10 -0
- package/build-task/esm2022/chart/chart.build.mjs +10 -0
- package/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +15 -0
- package/build-task/esm2022/containers/accordion/accordion.build.mjs +40 -0
- package/build-task/esm2022/containers/container.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid-column/layout-grid-column.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid-row/layout-grid-row.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid.build.mjs +10 -0
- package/build-task/esm2022/containers/linear-layout/linear-layout-item/linear-layout-item.build.mjs +10 -0
- package/build-task/esm2022/containers/linear-layout/linear-layout.build.mjs +21 -0
- package/build-task/esm2022/containers/panel/panel.build.mjs +21 -0
- package/build-task/esm2022/containers/repeat-template.build.mjs +26 -0
- package/build-task/esm2022/containers/segmented-control/segment-content/segment-content.build.mjs +10 -0
- package/build-task/esm2022/containers/segmented-control/segmented-control.build.mjs +10 -0
- package/build-task/esm2022/containers/tabs/tab-pane/tab-pane.build.mjs +10 -0
- package/build-task/esm2022/containers/tabs/tabs.build.mjs +40 -0
- package/build-task/esm2022/containers/tile/tile.build.mjs +10 -0
- package/build-task/esm2022/containers/wizard/wizard-action/wizard-action.build.mjs +10 -0
- package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +16 -0
- package/build-task/esm2022/containers/wizard/wizard.build.mjs +39 -0
- package/build-task/esm2022/data/card/card-actions/card-actions.build.mjs +10 -0
- package/build-task/esm2022/data/card/card-content/card-content.build.mjs +10 -0
- package/build-task/esm2022/data/card/card-footer/card-footer.build.mjs +10 -0
- package/build-task/esm2022/data/card/card.build.mjs +10 -0
- package/build-task/esm2022/data/form/form-action/form-action.build.mjs +12 -0
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +173 -0
- package/build-task/esm2022/data/form/form.build.mjs +161 -0
- package/build-task/esm2022/data/list/list.build.mjs +89 -0
- package/build-task/esm2022/data/live-table/live-table.build.mjs +21 -0
- package/build-task/esm2022/data/media-list/media-list-item/media-list-item.build.mjs +10 -0
- package/build-task/esm2022/data/media-list/media-list.build.mjs +57 -0
- package/build-task/esm2022/data/pagination/pagination.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-action/table-action.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +294 -0
- package/build-task/esm2022/data/table/table-column-group/table-column-group.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-row/table-row.build.mjs +34 -0
- package/build-task/esm2022/data/table/table-row-action/table-row-action.build.mjs +41 -0
- package/build-task/esm2022/data/table/table.build.mjs +86 -0
- package/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +15 -0
- package/build-task/esm2022/device/camera/camera.build.mjs +15 -0
- package/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/base/dialog-footer/dialog-footer.build.mjs +10 -0
- package/build-task/esm2022/dialogs/confirm-dialog/confirm-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/design-dialog/dialog.build.mjs +17 -0
- package/build-task/esm2022/dialogs/iframe-dialog/iframe-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/login-dialog/login-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +40 -0
- package/build-task/esm2022/index.mjs +5 -0
- package/build-task/esm2022/input/calendar/calendar.build.mjs +13 -0
- package/build-task/esm2022/input/chips/chips.build.mjs +11 -0
- package/build-task/esm2022/input/color-picker/color-picker.build.mjs +11 -0
- package/build-task/esm2022/input/currency/currency.build.mjs +11 -0
- package/build-task/esm2022/input/default/button/button.build.mjs +15 -0
- package/build-task/esm2022/input/default/button-group/button-group.build.mjs +10 -0
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +18 -0
- package/build-task/esm2022/input/default/checkboxset/checkboxset.build.mjs +11 -0
- package/build-task/esm2022/input/default/composite/composite.build.mjs +10 -0
- package/build-task/esm2022/input/default/number/number.build.mjs +11 -0
- package/build-task/esm2022/input/default/radioset/radioset.build.mjs +15 -0
- package/build-task/esm2022/input/default/select/select.build.mjs +11 -0
- package/build-task/esm2022/input/default/switch/switch.build.mjs +15 -0
- package/build-task/esm2022/input/default/text/text.build.mjs +11 -0
- package/build-task/esm2022/input/default/textarea/textarea.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/date/date.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/date-time/date-time.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/time/time.build.mjs +11 -0
- package/build-task/esm2022/input/file-upload/file-upload.build.mjs +20 -0
- package/build-task/esm2022/input/rating/rating.build.mjs +11 -0
- package/build-task/esm2022/input/slider/slider.build.mjs +11 -0
- package/build-task/esm2022/message/message.build.mjs +15 -0
- package/build-task/esm2022/navigation/breadcrumb/breadcrumb.build.mjs +10 -0
- package/build-task/esm2022/navigation/menu/menu.build.mjs +27 -0
- package/build-task/esm2022/navigation/nav/nav-item/nav-item.build.mjs +10 -0
- package/build-task/esm2022/navigation/nav/nav.build.mjs +10 -0
- package/build-task/esm2022/navigation/navbar/navbar.build.mjs +10 -0
- package/build-task/esm2022/navigation/popover/popover.build.mjs +41 -0
- package/build-task/esm2022/page/content/content.build.mjs +10 -0
- package/build-task/esm2022/page/footer/footer.build.mjs +15 -0
- package/build-task/esm2022/page/header/header.build.mjs +15 -0
- package/build-task/esm2022/page/layout.build.mjs +15 -0
- package/build-task/esm2022/page/left-panel/left-panel.build.mjs +15 -0
- package/build-task/esm2022/page/mobile-navbar/mobile-navbar.build.mjs +10 -0
- package/build-task/esm2022/page/page-content/page-content.build.mjs +36 -0
- package/build-task/esm2022/page/page.build.mjs +59 -0
- package/build-task/esm2022/page/right-panel/right-panel.build.mjs +15 -0
- package/build-task/esm2022/page/router-outlet/router-outlet.build.mjs +10 -0
- package/build-task/esm2022/page/tab-bar/tab-bar.build.mjs +10 -0
- package/build-task/esm2022/page/top-nav/top-nav.build.mjs +15 -0
- package/build-task/esm2022/partial/partial.build.mjs +25 -0
- package/build-task/esm2022/partial-param/partial-param.build.mjs +10 -0
- package/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +25 -0
- package/build-task/esm2022/prefab/prefab.build.mjs +10 -0
- package/build-task/esm2022/public_api.mjs +113 -0
- package/build-task/esm2022/utils/utils.mjs +69 -0
- package/build-task/fesm2022/index.mjs +2998 -0
- package/build-task/fesm2022/index.mjs.map +1 -0
- package/build-task/index.d.ts +5 -0
- package/build-task/input/calendar/calendar.build.d.ts +2 -0
- package/build-task/input/chips/chips.build.d.ts +2 -0
- package/build-task/input/color-picker/color-picker.build.d.ts +2 -0
- package/build-task/input/currency/currency.build.d.ts +2 -0
- package/build-task/input/default/button/button.build.d.ts +2 -0
- package/build-task/input/default/button-group/button-group.build.d.ts +2 -0
- package/build-task/input/default/checkbox/checkbox.build.d.ts +2 -0
- package/build-task/input/default/checkboxset/checkboxset.build.d.ts +2 -0
- package/build-task/input/default/composite/composite.build.d.ts +2 -0
- package/build-task/input/default/number/number.build.d.ts +2 -0
- package/build-task/input/default/radioset/radioset.build.d.ts +2 -0
- package/build-task/input/default/select/select.build.d.ts +2 -0
- package/build-task/input/default/switch/switch.build.d.ts +2 -0
- package/build-task/input/default/text/text.build.d.ts +2 -0
- package/build-task/input/default/textarea/textarea.build.d.ts +2 -0
- package/build-task/input/epoch/date/date.build.d.ts +2 -0
- package/build-task/input/epoch/date-time/date-time.build.d.ts +2 -0
- package/build-task/input/epoch/time/time.build.d.ts +2 -0
- package/build-task/input/file-upload/file-upload.build.d.ts +2 -0
- package/build-task/input/rating/rating.build.d.ts +2 -0
- package/build-task/input/slider/slider.build.d.ts +2 -0
- package/build-task/message/message.build.d.ts +2 -0
- package/build-task/navigation/breadcrumb/breadcrumb.build.d.ts +2 -0
- package/build-task/navigation/menu/menu.build.d.ts +2 -0
- package/build-task/navigation/nav/nav-item/nav-item.build.d.ts +2 -0
- package/build-task/navigation/nav/nav.build.d.ts +2 -0
- package/build-task/navigation/navbar/navbar.build.d.ts +2 -0
- package/build-task/navigation/popover/popover.build.d.ts +2 -0
- package/build-task/package.json +25 -0
- package/build-task/page/content/content.build.d.ts +2 -0
- package/build-task/page/footer/footer.build.d.ts +2 -0
- package/build-task/page/header/header.build.d.ts +2 -0
- package/build-task/page/layout.build.d.ts +2 -0
- package/build-task/page/left-panel/left-panel.build.d.ts +2 -0
- package/build-task/page/mobile-navbar/mobile-navbar.build.d.ts +2 -0
- package/build-task/page/page-content/page-content.build.d.ts +2 -0
- package/build-task/page/page.build.d.ts +2 -0
- package/build-task/page/right-panel/right-panel.build.d.ts +2 -0
- package/build-task/page/router-outlet/router-outlet.build.d.ts +2 -0
- package/build-task/page/tab-bar/tab-bar.build.d.ts +2 -0
- package/build-task/page/top-nav/top-nav.build.d.ts +2 -0
- package/build-task/partial/partial.build.d.ts +2 -0
- package/build-task/partial-param/partial-param.build.d.ts +2 -0
- package/build-task/prefab/prefab-container/prefab-container.build.d.ts +2 -0
- package/build-task/prefab/prefab.build.d.ts +2 -0
- package/build-task/public_api.d.ts +112 -0
- package/build-task/utils/utils.d.ts +21 -0
- package/components/advanced/carousel/.npmignore +2 -0
- package/components/advanced/carousel/bundles/index.umd.js +352 -0
- package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +9 -0
- package/components/advanced/carousel/carousel-template/carousel-template.props.d.ts +1 -0
- package/components/advanced/carousel/carousel.animator.d.ts +45 -0
- package/components/advanced/carousel/carousel.directive.d.ts +35 -0
- package/components/advanced/carousel/carousel.props.d.ts +1 -0
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +32 -0
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.props.mjs +7 -0
- package/components/advanced/carousel/esm2022/carousel.animator.mjs +149 -0
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +135 -0
- package/components/advanced/carousel/esm2022/carousel.props.mjs +13 -0
- package/components/advanced/carousel/esm2022/index.mjs +5 -0
- package/components/advanced/carousel/esm2022/public_api.mjs +4 -0
- package/components/advanced/carousel/fesm2022/index.mjs +335 -0
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -0
- package/components/advanced/carousel/index.d.ts +5 -0
- package/components/advanced/carousel/package.json +20 -0
- package/components/advanced/carousel/public_api.d.ts +3 -0
- package/components/advanced/custom/.npmignore +2 -0
- package/components/advanced/custom/bundles/index.umd.js +258 -0
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +29 -0
- package/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +2 -0
- package/components/advanced/custom/custom-widget-prop.d.ts +1 -0
- package/components/advanced/custom/custom-widget.directive.d.ts +19 -0
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +156 -0
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +12 -0
- package/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +70 -0
- package/components/advanced/custom/esm2022/index.mjs +5 -0
- package/components/advanced/custom/esm2022/public_api.mjs +3 -0
- package/components/advanced/custom/fesm2022/index.mjs +244 -0
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -0
- package/components/advanced/custom/index.d.ts +5 -0
- package/components/advanced/custom/package.json +20 -0
- package/components/advanced/custom/public_api.d.ts +2 -0
- package/components/advanced/login/.npmignore +2 -0
- package/components/advanced/login/bundles/index.umd.js +135 -0
- package/components/advanced/login/esm2022/index.mjs +5 -0
- package/components/advanced/login/esm2022/login.component.mjs +107 -0
- package/components/advanced/login/esm2022/login.props.mjs +8 -0
- package/components/advanced/login/esm2022/public_api.mjs +2 -0
- package/components/advanced/login/fesm2022/index.mjs +120 -0
- package/components/advanced/login/fesm2022/index.mjs.map +1 -0
- package/components/advanced/login/index.d.ts +5 -0
- package/components/advanced/login/login.component.d.ts +31 -0
- package/components/advanced/login/login.props.d.ts +1 -0
- package/components/advanced/login/package.json +20 -0
- package/components/advanced/login/public_api.d.ts +1 -0
- package/components/advanced/marquee/.npmignore +2 -0
- package/components/advanced/marquee/bundles/index.umd.js +71 -0
- package/components/advanced/marquee/esm2022/index.mjs +5 -0
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +36 -0
- package/components/advanced/marquee/esm2022/marquee.props.mjs +12 -0
- package/components/advanced/marquee/esm2022/public_api.mjs +2 -0
- package/components/advanced/marquee/fesm2022/index.mjs +53 -0
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -0
- package/components/advanced/marquee/index.d.ts +5 -0
- package/components/advanced/marquee/marquee.directive.d.ts +9 -0
- package/components/advanced/marquee/marquee.props.d.ts +1 -0
- package/components/advanced/marquee/package.json +20 -0
- package/components/advanced/marquee/public_api.d.ts +1 -0
- package/components/base/.npmignore +2 -0
- package/components/base/bundles/index.umd.js +5982 -0
- package/components/base/decorators/autolayout.decorator.d.ts +4 -0
- package/components/base/decorators/autolayout.props.d.ts +1 -0
- package/components/base/directives/show-in-device.directive.d.ts +16 -0
- package/components/base/esm2022/decorators/autolayout.decorator.mjs +476 -0
- package/components/base/esm2022/decorators/autolayout.props.mjs +20 -0
- package/components/base/esm2022/directives/show-in-device.directive.mjs +90 -0
- package/components/base/esm2022/index.mjs +5 -0
- package/components/base/esm2022/pipes/custom-pipes.mjs +473 -0
- package/components/base/esm2022/pipes/image.pipe.mjs +19 -0
- package/components/base/esm2022/pipes/sanitize.pipe.mjs +44 -0
- package/components/base/esm2022/pipes/trust-as.pipe.mjs +41 -0
- package/components/base/esm2022/pipes/wm-pipe.mjs +18 -0
- package/components/base/esm2022/public_api.mjs +36 -0
- package/components/base/esm2022/utils/autolayout-utils.mjs +261 -0
- package/components/base/esm2022/utils/data-utils.mjs +581 -0
- package/components/base/esm2022/utils/form-utils.mjs +451 -0
- package/components/base/esm2022/utils/live-utils.mjs +216 -0
- package/components/base/esm2022/utils/widget-utils.mjs +495 -0
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +80 -0
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +295 -0
- package/components/base/esm2022/widgets/common/base/base.component.mjs +713 -0
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +48 -0
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +222 -0
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +115 -0
- package/components/base/esm2022/widgets/common/base/stylable.component.mjs +11 -0
- package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +26 -0
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +51 -0
- package/components/base/esm2022/widgets/common/container/container.props.mjs +15 -0
- package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +170 -0
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +89 -0
- package/components/base/esm2022/widgets/common/item-template/item-template.props.mjs +7 -0
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +84 -0
- package/components/base/esm2022/widgets/common/message/message.component.mjs +104 -0
- package/components/base/esm2022/widgets/common/message/message.props.mjs +13 -0
- package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +53 -0
- package/components/base/esm2022/widgets/common/partial/partial.props.mjs +7 -0
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +88 -0
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +261 -0
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +40 -0
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +33 -0
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.props.mjs +7 -0
- package/components/base/esm2022/widgets/framework/constants.mjs +36 -0
- package/components/base/esm2022/widgets/framework/deviceview.mjs +126 -0
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +96 -0
- package/components/base/esm2022/widgets/framework/styler.mjs +123 -0
- package/components/base/esm2022/widgets/framework/types.mjs +8 -0
- package/components/base/esm2022/widgets/framework/widget-id-generator.mjs +3 -0
- package/components/base/esm2022/widgets/framework/widget-props.mjs +35 -0
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +75 -0
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +49 -0
- package/components/base/fesm2022/index.mjs +5858 -0
- package/components/base/fesm2022/index.mjs.map +1 -0
- package/components/base/index.d.ts +5 -0
- package/components/base/package.json +28 -0
- package/components/base/pipes/custom-pipes.d.ts +104 -0
- package/components/base/pipes/image.pipe.d.ts +7 -0
- package/components/base/pipes/sanitize.pipe.d.ts +10 -0
- package/components/base/pipes/trust-as.pipe.d.ts +10 -0
- package/components/base/pipes/wm-pipe.d.ts +9 -0
- package/components/base/public_api.d.ts +35 -0
- package/components/base/utils/autolayout-utils.d.ts +29 -0
- package/components/base/utils/data-utils.d.ts +181 -0
- package/components/base/utils/form-utils.d.ts +85 -0
- package/components/base/utils/live-utils.d.ts +65 -0
- package/components/base/utils/widget-utils.d.ts +120 -0
- package/components/base/widgets/common/base/base-container.component.d.ts +16 -0
- package/components/base/widgets/common/base/base-field-validations.d.ts +27 -0
- package/components/base/widgets/common/base/base.component.d.ts +276 -0
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +15 -0
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +77 -0
- package/components/base/widgets/common/base/partial-container.directive.d.ts +22 -0
- package/components/base/widgets/common/base/stylable.component.d.ts +54 -0
- package/components/base/widgets/common/base/text-content.directive.d.ts +9 -0
- package/components/base/widgets/common/container/container.directive.d.ts +12 -0
- package/components/base/widgets/common/container/container.props.d.ts +1 -0
- package/components/base/widgets/common/dialog/dialog.service.d.ts +54 -0
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +32 -0
- package/components/base/widgets/common/item-template/item-template.props.d.ts +1 -0
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +15 -0
- package/components/base/widgets/common/message/message.component.d.ts +19 -0
- package/components/base/widgets/common/message/message.props.d.ts +1 -0
- package/components/base/widgets/common/partial/partial.directive.d.ts +15 -0
- package/components/base/widgets/common/partial/partial.props.d.ts +1 -0
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +21 -0
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +48 -0
- package/components/base/widgets/common/redraw/redrawable.directive.d.ts +8 -0
- package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +9 -0
- package/components/base/widgets/common/repeat-template/repeat-template.props.d.ts +1 -0
- package/components/base/widgets/framework/constants.d.ts +16 -0
- package/components/base/widgets/framework/deviceview.d.ts +1 -0
- package/components/base/widgets/framework/property-change-handler.d.ts +8 -0
- package/components/base/widgets/framework/styler.d.ts +59 -0
- package/components/base/widgets/framework/types.d.ts +23 -0
- package/components/base/widgets/framework/widget-id-generator.d.ts +2 -0
- package/components/base/widgets/framework/widget-props.d.ts +12 -0
- package/components/base/widgets/framework/widget-proxy-provider.d.ts +11 -0
- package/components/base/widgets/framework/widget-registry.d.ts +14 -0
- package/components/basic/anchor/.npmignore +2 -0
- package/components/basic/anchor/anchor.component.d.ts +37 -0
- package/components/basic/anchor/anchor.props.d.ts +1 -0
- package/components/basic/anchor/bundles/index.umd.js +204 -0
- package/components/basic/anchor/esm2022/anchor.component.mjs +155 -0
- package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
- package/components/basic/anchor/esm2022/index.mjs +5 -0
- package/components/basic/anchor/esm2022/public_api.mjs +2 -0
- package/components/basic/anchor/fesm2022/index.mjs +187 -0
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
- package/components/basic/anchor/index.d.ts +5 -0
- package/components/basic/anchor/package.json +20 -0
- package/components/basic/anchor/public_api.d.ts +1 -0
- package/components/basic/audio/.npmignore +2 -0
- package/components/basic/audio/audio.component.d.ts +20 -0
- package/components/basic/audio/audio.props.d.ts +1 -0
- package/components/basic/audio/bundles/index.umd.js +83 -0
- package/components/basic/audio/esm2022/audio.component.mjs +41 -0
- package/components/basic/audio/esm2022/audio.props.mjs +19 -0
- package/components/basic/audio/esm2022/index.mjs +5 -0
- package/components/basic/audio/esm2022/public_api.mjs +2 -0
- package/components/basic/audio/fesm2022/index.mjs +65 -0
- package/components/basic/audio/fesm2022/index.mjs.map +1 -0
- package/components/basic/audio/index.d.ts +5 -0
- package/components/basic/audio/package.json +20 -0
- package/components/basic/audio/public_api.d.ts +1 -0
- package/components/basic/html/.npmignore +2 -0
- package/components/basic/html/bundles/index.umd.js +122 -0
- package/components/basic/html/esm2022/html.directive.mjs +88 -0
- package/components/basic/html/esm2022/html.props.mjs +12 -0
- package/components/basic/html/esm2022/index.mjs +5 -0
- package/components/basic/html/esm2022/public_api.mjs +2 -0
- package/components/basic/html/fesm2022/index.mjs +105 -0
- package/components/basic/html/fesm2022/index.mjs.map +1 -0
- package/components/basic/html/html.directive.d.ts +14 -0
- package/components/basic/html/html.props.d.ts +1 -0
- package/components/basic/html/index.d.ts +5 -0
- package/components/basic/html/package.json +20 -0
- package/components/basic/html/public_api.d.ts +1 -0
- package/components/basic/icon/.npmignore +2 -0
- package/components/basic/icon/bundles/index.umd.js +80 -0
- package/components/basic/icon/esm2022/icon.component.mjs +38 -0
- package/components/basic/icon/esm2022/icon.props.mjs +19 -0
- package/components/basic/icon/esm2022/index.mjs +5 -0
- package/components/basic/icon/esm2022/public_api.mjs +2 -0
- package/components/basic/icon/fesm2022/index.mjs +62 -0
- package/components/basic/icon/fesm2022/index.mjs.map +1 -0
- package/components/basic/icon/icon.component.d.ts +15 -0
- package/components/basic/icon/icon.props.d.ts +1 -0
- package/components/basic/icon/index.d.ts +5 -0
- package/components/basic/icon/package.json +20 -0
- package/components/basic/icon/public_api.d.ts +1 -0
- package/components/basic/iframe/.npmignore +2 -0
- package/components/basic/iframe/bundles/index.umd.js +101 -0
- package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
- package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
- package/components/basic/iframe/esm2022/index.mjs +5 -0
- package/components/basic/iframe/esm2022/public_api.mjs +2 -0
- package/components/basic/iframe/fesm2022/index.mjs +84 -0
- package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
- package/components/basic/iframe/iframe.component.d.ts +26 -0
- package/components/basic/iframe/iframe.props.d.ts +1 -0
- package/components/basic/iframe/index.d.ts +5 -0
- package/components/basic/iframe/package.json +20 -0
- package/components/basic/iframe/public_api.d.ts +1 -0
- package/components/basic/label/.npmignore +2 -0
- package/components/basic/label/bundles/index.umd.js +129 -0
- package/components/basic/label/esm2022/index.mjs +5 -0
- package/components/basic/label/esm2022/label.directive.mjs +91 -0
- package/components/basic/label/esm2022/label.props.mjs +17 -0
- package/components/basic/label/esm2022/public_api.mjs +2 -0
- package/components/basic/label/fesm2022/index.mjs +113 -0
- package/components/basic/label/fesm2022/index.mjs.map +1 -0
- package/components/basic/label/index.d.ts +5 -0
- package/components/basic/label/label.directive.d.ts +12 -0
- package/components/basic/label/label.props.d.ts +1 -0
- package/components/basic/label/package.json +20 -0
- package/components/basic/label/public_api.d.ts +1 -0
- package/components/basic/picture/.npmignore +2 -0
- package/components/basic/picture/bundles/index.umd.js +138 -0
- package/components/basic/picture/esm2022/index.mjs +5 -0
- package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
- package/components/basic/picture/esm2022/picture.props.mjs +23 -0
- package/components/basic/picture/esm2022/public_api.mjs +2 -0
- package/components/basic/picture/fesm2022/index.mjs +121 -0
- package/components/basic/picture/fesm2022/index.mjs.map +1 -0
- package/components/basic/picture/index.d.ts +5 -0
- package/components/basic/picture/package.json +20 -0
- package/components/basic/picture/picture.directive.d.ts +19 -0
- package/components/basic/picture/picture.props.d.ts +1 -0
- package/components/basic/picture/public_api.d.ts +1 -0
- package/components/basic/progress/progress-bar/.npmignore +2 -0
- package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
- package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.props.mjs +19 -0
- package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-bar/index.d.ts +5 -0
- package/components/basic/progress/progress-bar/package.json +20 -0
- package/components/basic/progress/progress-bar/progress-bar.component.d.ts +43 -0
- package/components/basic/progress/progress-bar/progress-bar.props.d.ts +1 -0
- package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
- package/components/basic/progress/progress-circle/.npmignore +2 -0
- package/components/basic/progress/progress-circle/bundles/index.umd.js +171 -0
- package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +130 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.props.mjs +21 -0
- package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +155 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-circle/index.d.ts +5 -0
- package/components/basic/progress/progress-circle/package.json +20 -0
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +40 -0
- package/components/basic/progress/progress-circle/progress-circle.props.d.ts +1 -0
- package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
- package/components/basic/progress/progress-utils/.npmignore +2 -0
- package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
- package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
- package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-utils/index.d.ts +5 -0
- package/components/basic/progress/progress-utils/package.json +20 -0
- package/components/basic/progress/progress-utils/progress-utils.d.ts +3 -0
- package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/.npmignore +2 -0
- package/components/basic/rich-text-editor/bundles/index.umd.js +236 -0
- package/components/basic/rich-text-editor/esm2022/index.mjs +5 -0
- package/components/basic/rich-text-editor/esm2022/public_api.mjs +2 -0
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +197 -0
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +21 -0
- package/components/basic/rich-text-editor/fesm2022/index.mjs +222 -0
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -0
- package/components/basic/rich-text-editor/index.d.ts +5 -0
- package/components/basic/rich-text-editor/package.json +20 -0
- package/components/basic/rich-text-editor/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +55 -0
- package/components/basic/rich-text-editor/rich-text-editor.props.d.ts +2 -0
- package/components/basic/search/.npmignore +2 -0
- package/components/basic/search/bundles/index.umd.js +1091 -0
- package/components/basic/search/data-provider/data-provider.d.ts +42 -0
- package/components/basic/search/data-provider/local-data-provider.d.ts +5 -0
- package/components/basic/search/data-provider/remote-data-provider.d.ts +10 -0
- package/components/basic/search/esm2022/data-provider/data-provider.mjs +34 -0
- package/components/basic/search/esm2022/data-provider/local-data-provider.mjs +77 -0
- package/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +124 -0
- package/components/basic/search/esm2022/index.mjs +5 -0
- package/components/basic/search/esm2022/public_api.mjs +3 -0
- package/components/basic/search/esm2022/scrollable.directive.mjs +44 -0
- package/components/basic/search/esm2022/search.component.mjs +754 -0
- package/components/basic/search/esm2022/search.props.mjs +55 -0
- package/components/basic/search/fesm2022/index.mjs +1080 -0
- package/components/basic/search/fesm2022/index.mjs.map +1 -0
- package/components/basic/search/index.d.ts +5 -0
- package/components/basic/search/package.json +20 -0
- package/components/basic/search/public_api.d.ts +2 -0
- package/components/basic/search/scrollable.directive.d.ts +14 -0
- package/components/basic/search/search.component.d.ts +109 -0
- package/components/basic/search/search.props.d.ts +2 -0
- package/components/basic/spinner/.npmignore +2 -0
- package/components/basic/spinner/bundles/index.umd.js +126 -0
- package/components/basic/spinner/esm2022/index.mjs +5 -0
- package/components/basic/spinner/esm2022/public_api.mjs +2 -0
- package/components/basic/spinner/esm2022/spinner.component.mjs +87 -0
- package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
- package/components/basic/spinner/fesm2022/index.mjs +111 -0
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
- package/components/basic/spinner/index.d.ts +5 -0
- package/components/basic/spinner/package.json +20 -0
- package/components/basic/spinner/public_api.d.ts +1 -0
- package/components/basic/spinner/spinner.component.d.ts +27 -0
- package/components/basic/spinner/spinner.props.d.ts +1 -0
- package/components/basic/tree/.npmignore +2 -0
- package/components/basic/tree/bundles/index.umd.js +566 -0
- package/components/basic/tree/esm2022/index.mjs +5 -0
- package/components/basic/tree/esm2022/public_api.mjs +2 -0
- package/components/basic/tree/esm2022/tree-node-template-host.component.mjs +33 -0
- package/components/basic/tree/esm2022/tree.component.mjs +494 -0
- package/components/basic/tree/esm2022/tree.props.mjs +22 -0
- package/components/basic/tree/fesm2022/index.mjs +550 -0
- package/components/basic/tree/fesm2022/index.mjs.map +1 -0
- package/components/basic/tree/index.d.ts +5 -0
- package/components/basic/tree/package.json +20 -0
- package/components/basic/tree/public_api.d.ts +1 -0
- package/components/basic/tree/tree-node-template-host.component.d.ts +7 -0
- package/components/basic/tree/tree.component.d.ts +66 -0
- package/components/basic/tree/tree.props.d.ts +1 -0
- package/components/basic/video/.npmignore +2 -0
- package/components/basic/video/bundles/index.umd.js +116 -0
- package/components/basic/video/esm2022/index.mjs +5 -0
- package/components/basic/video/esm2022/public_api.mjs +2 -0
- package/components/basic/video/esm2022/video.component.mjs +70 -0
- package/components/basic/video/esm2022/video.props.mjs +24 -0
- package/components/basic/video/fesm2022/index.mjs +99 -0
- package/components/basic/video/fesm2022/index.mjs.map +1 -0
- package/components/basic/video/index.d.ts +5 -0
- package/components/basic/video/package.json +20 -0
- package/components/basic/video/public_api.d.ts +1 -0
- package/components/basic/video/video.component.d.ts +27 -0
- package/components/basic/video/video.props.d.ts +1 -0
- package/components/chart/.npmignore +2 -0
- package/components/chart/bundles/index.umd.js +1747 -0
- package/components/chart/chart.component.d.ts +99 -0
- package/components/chart/chart.props.d.ts +1 -0
- package/components/chart/chart.utils.d.ts +40 -0
- package/components/chart/esm2022/chart.component.mjs +982 -0
- package/components/chart/esm2022/chart.props.mjs +67 -0
- package/components/chart/esm2022/chart.utils.mjs +723 -0
- package/components/chart/esm2022/index.mjs +5 -0
- package/components/chart/esm2022/public_api.mjs +2 -0
- package/components/chart/fesm2022/index.mjs +1774 -0
- package/components/chart/fesm2022/index.mjs.map +1 -0
- package/components/chart/index.d.ts +5 -0
- package/components/chart/package.json +20 -0
- package/components/chart/public_api.d.ts +1 -0
- package/components/containers/accordion/.npmignore +2 -0
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +50 -0
- package/components/containers/accordion/accordion-pane/accordion-pane.props.d.ts +1 -0
- package/components/containers/accordion/accordion.directive.d.ts +66 -0
- package/components/containers/accordion/accordion.props.d.ts +1 -0
- package/components/containers/accordion/bundles/index.umd.js +500 -0
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +145 -0
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +22 -0
- package/components/containers/accordion/esm2022/accordion.directive.mjs +309 -0
- package/components/containers/accordion/esm2022/accordion.props.mjs +16 -0
- package/components/containers/accordion/esm2022/index.mjs +5 -0
- package/components/containers/accordion/esm2022/public_api.mjs +3 -0
- package/components/containers/accordion/fesm2022/index.mjs +486 -0
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -0
- package/components/containers/accordion/index.d.ts +5 -0
- package/components/containers/accordion/package.json +20 -0
- package/components/containers/accordion/public_api.d.ts +2 -0
- package/components/containers/layout-grid/.npmignore +2 -0
- package/components/containers/layout-grid/bundles/index.umd.js +172 -0
- package/components/containers/layout-grid/esm2022/index.mjs +5 -0
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +57 -0
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.props.mjs +11 -0
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +36 -0
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.props.mjs +9 -0
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +36 -0
- package/components/containers/layout-grid/esm2022/layout-grid.props.mjs +9 -0
- package/components/containers/layout-grid/esm2022/public_api.mjs +4 -0
- package/components/containers/layout-grid/fesm2022/index.mjs +153 -0
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -0
- package/components/containers/layout-grid/index.d.ts +5 -0
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +12 -0
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.props.d.ts +1 -0
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +9 -0
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.props.d.ts +1 -0
- package/components/containers/layout-grid/layout-grid.directive.d.ts +9 -0
- package/components/containers/layout-grid/layout-grid.props.d.ts +1 -0
- package/components/containers/layout-grid/package.json +20 -0
- package/components/containers/layout-grid/public_api.d.ts +3 -0
- package/components/containers/linear-layout/.npmignore +2 -0
- package/components/containers/linear-layout/bundles/index.umd.js +186 -0
- package/components/containers/linear-layout/esm2022/index.mjs +5 -0
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +44 -0
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.props.mjs +10 -0
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +100 -0
- package/components/containers/linear-layout/esm2022/linear-layout.props.mjs +13 -0
- package/components/containers/linear-layout/esm2022/public_api.mjs +3 -0
- package/components/containers/linear-layout/fesm2022/index.mjs +167 -0
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -0
- package/components/containers/linear-layout/index.d.ts +5 -0
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +10 -0
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.props.d.ts +1 -0
- package/components/containers/linear-layout/linear-layout.directive.d.ts +16 -0
- package/components/containers/linear-layout/linear-layout.props.d.ts +1 -0
- package/components/containers/linear-layout/package.json +20 -0
- package/components/containers/linear-layout/public_api.d.ts +2 -0
- package/components/containers/panel/.npmignore +2 -0
- package/components/containers/panel/bundles/index.umd.js +223 -0
- package/components/containers/panel/esm2022/index.mjs +5 -0
- package/components/containers/panel/esm2022/panel.component.mjs +168 -0
- package/components/containers/panel/esm2022/panel.props.mjs +38 -0
- package/components/containers/panel/esm2022/public_api.mjs +2 -0
- package/components/containers/panel/fesm2022/index.mjs +210 -0
- package/components/containers/panel/fesm2022/index.mjs.map +1 -0
- package/components/containers/panel/index.d.ts +5 -0
- package/components/containers/panel/package.json +20 -0
- package/components/containers/panel/panel.component.d.ts +43 -0
- package/components/containers/panel/panel.props.d.ts +1 -0
- package/components/containers/panel/public_api.d.ts +1 -0
- package/components/containers/tabs/.npmignore +2 -0
- package/components/containers/tabs/bundles/index.umd.js +788 -0
- package/components/containers/tabs/esm2022/index.mjs +5 -0
- package/components/containers/tabs/esm2022/public_api.mjs +3 -0
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +179 -0
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +22 -0
- package/components/containers/tabs/esm2022/tabs.animator.mjs +83 -0
- package/components/containers/tabs/esm2022/tabs.component.mjs +478 -0
- package/components/containers/tabs/esm2022/tabs.props.mjs +20 -0
- package/components/containers/tabs/fesm2022/index.mjs +775 -0
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -0
- package/components/containers/tabs/index.d.ts +5 -0
- package/components/containers/tabs/package.json +20 -0
- package/components/containers/tabs/public_api.d.ts +2 -0
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +41 -0
- package/components/containers/tabs/tab-pane/tab-pane.props.d.ts +1 -0
- package/components/containers/tabs/tabs.animator.d.ts +30 -0
- package/components/containers/tabs/tabs.component.d.ts +87 -0
- package/components/containers/tabs/tabs.props.d.ts +1 -0
- package/components/containers/tile/.npmignore +2 -0
- package/components/containers/tile/bundles/index.umd.js +68 -0
- package/components/containers/tile/esm2022/index.mjs +5 -0
- package/components/containers/tile/esm2022/public_api.mjs +2 -0
- package/components/containers/tile/esm2022/tile.directive.mjs +33 -0
- package/components/containers/tile/esm2022/tile.props.mjs +12 -0
- package/components/containers/tile/fesm2022/index.mjs +50 -0
- package/components/containers/tile/fesm2022/index.mjs.map +1 -0
- package/components/containers/tile/index.d.ts +5 -0
- package/components/containers/tile/package.json +20 -0
- package/components/containers/tile/public_api.d.ts +1 -0
- package/components/containers/tile/tile.directive.d.ts +9 -0
- package/components/containers/tile/tile.props.d.ts +1 -0
- package/components/containers/wizard/.npmignore +2 -0
- package/components/containers/wizard/bundles/index.umd.js +1074 -0
- package/components/containers/wizard/esm2022/index.mjs +5 -0
- package/components/containers/wizard/esm2022/public_api.mjs +4 -0
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +35 -0
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.props.mjs +9 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +182 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +17 -0
- package/components/containers/wizard/esm2022/wizard.component.mjs +801 -0
- package/components/containers/wizard/esm2022/wizard.props.mjs +22 -0
- package/components/containers/wizard/fesm2022/index.mjs +1058 -0
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -0
- package/components/containers/wizard/index.d.ts +5 -0
- package/components/containers/wizard/package.json +20 -0
- package/components/containers/wizard/public_api.d.ts +3 -0
- package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +9 -0
- package/components/containers/wizard/wizard-action/wizard-action.props.d.ts +1 -0
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +59 -0
- package/components/containers/wizard/wizard-step/wizard-step.props.d.ts +1 -0
- package/components/containers/wizard/wizard.component.d.ts +192 -0
- package/components/containers/wizard/wizard.props.d.ts +1 -0
- package/components/data/card/.npmignore +2 -0
- package/components/data/card/bundles/index.umd.js +237 -0
- package/components/data/card/card-actions/card-actions.directive.d.ts +9 -0
- package/components/data/card/card-actions/card-actions.props.d.ts +1 -0
- package/components/data/card/card-content/card-content.component.d.ts +12 -0
- package/components/data/card/card-content/card-content.props.d.ts +1 -0
- package/components/data/card/card-footer/card-footer.directive.d.ts +9 -0
- package/components/data/card/card-footer/card-footer.props.d.ts +1 -0
- package/components/data/card/card.component.d.ts +23 -0
- package/components/data/card/card.props.d.ts +1 -0
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +31 -0
- package/components/data/card/esm2022/card-actions/card-actions.props.mjs +9 -0
- package/components/data/card/esm2022/card-content/card-content.component.mjs +43 -0
- package/components/data/card/esm2022/card-content/card-content.props.mjs +10 -0
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +31 -0
- package/components/data/card/esm2022/card-footer/card-footer.props.mjs +9 -0
- package/components/data/card/esm2022/card.component.mjs +75 -0
- package/components/data/card/esm2022/card.props.mjs +24 -0
- package/components/data/card/esm2022/index.mjs +5 -0
- package/components/data/card/esm2022/public_api.mjs +5 -0
- package/components/data/card/fesm2022/index.mjs +220 -0
- package/components/data/card/fesm2022/index.mjs.map +1 -0
- package/components/data/card/index.d.ts +5 -0
- package/components/data/card/package.json +20 -0
- package/components/data/card/public_api.d.ts +4 -0
- package/components/data/form/.npmignore +2 -0
- package/components/data/form/bundles/index.umd.js +3308 -0
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +86 -0
- package/components/data/form/esm2022/form-action/form-action.props.mjs +25 -0
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +611 -0
- package/components/data/form/esm2022/form-field/form-field.props.mjs +52 -0
- package/components/data/form/esm2022/form-widget.directive.mjs +83 -0
- package/components/data/form/esm2022/form.component.mjs +1247 -0
- package/components/data/form/esm2022/form.props.mjs +64 -0
- package/components/data/form/esm2022/index.mjs +5 -0
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +151 -0
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +173 -0
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +356 -0
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +502 -0
- package/components/data/form/esm2022/public_api.mjs +9 -0
- package/components/data/form/fesm2022/index.mjs +3296 -0
- package/components/data/form/fesm2022/index.mjs.map +1 -0
- package/components/data/form/form-action/form-action.directive.d.ts +35 -0
- package/components/data/form/form-action/form-action.props.d.ts +1 -0
- package/components/data/form/form-field/form-field.directive.d.ts +116 -0
- package/components/data/form/form-field/form-field.props.d.ts +1 -0
- package/components/data/form/form-widget.directive.d.ts +19 -0
- package/components/data/form/form.component.d.ts +211 -0
- package/components/data/form/form.props.d.ts +3 -0
- package/components/data/form/index.d.ts +5 -0
- package/components/data/form/live-actions/dependson.directive.d.ts +27 -0
- package/components/data/form/live-actions/live-actions.directive.d.ts +24 -0
- package/components/data/form/live-filter/live-filter.directive.d.ts +24 -0
- package/components/data/form/live-form/live-form.directive.d.ts +44 -0
- package/components/data/form/package.json +20 -0
- package/components/data/form/public_api.d.ts +8 -0
- package/components/data/list/.npmignore +2 -0
- package/components/data/list/bundles/index.umd.js +1610 -0
- package/components/data/list/esm2022/index.mjs +5 -0
- package/components/data/list/esm2022/list-item.directive.mjs +260 -0
- package/components/data/list/esm2022/list-item.props.mjs +7 -0
- package/components/data/list/esm2022/list.animator.mjs +233 -0
- package/components/data/list/esm2022/list.component.mjs +1294 -0
- package/components/data/list/esm2022/list.props.mjs +48 -0
- package/components/data/list/esm2022/public_api.mjs +3 -0
- package/components/data/list/fesm2022/index.mjs +1602 -0
- package/components/data/list/fesm2022/index.mjs.map +1 -0
- package/components/data/list/index.d.ts +5 -0
- package/components/data/list/list-item.directive.d.ts +53 -0
- package/components/data/list/list-item.props.d.ts +1 -0
- package/components/data/list/list.animator.d.ts +32 -0
- package/components/data/list/list.component.d.ts +226 -0
- package/components/data/list/list.props.d.ts +1 -0
- package/components/data/list/package.json +20 -0
- package/components/data/list/public_api.d.ts +2 -0
- package/components/data/live-table/.npmignore +2 -0
- package/components/data/live-table/bundles/index.umd.js +273 -0
- package/components/data/live-table/esm2022/index.mjs +5 -0
- package/components/data/live-table/esm2022/live-table.component.mjs +243 -0
- package/components/data/live-table/esm2022/live-table.props.mjs +10 -0
- package/components/data/live-table/esm2022/public_api.mjs +2 -0
- package/components/data/live-table/fesm2022/index.mjs +258 -0
- package/components/data/live-table/fesm2022/index.mjs.map +1 -0
- package/components/data/live-table/index.d.ts +5 -0
- package/components/data/live-table/live-table.component.d.ts +36 -0
- package/components/data/live-table/live-table.props.d.ts +1 -0
- package/components/data/live-table/package.json +20 -0
- package/components/data/live-table/public_api.d.ts +1 -0
- package/components/data/pagination/.npmignore +2 -0
- package/components/data/pagination/bundles/index.umd.js +850 -0
- package/components/data/pagination/esm2022/index.mjs +5 -0
- package/components/data/pagination/esm2022/pagination.component.mjs +817 -0
- package/components/data/pagination/esm2022/pagination.props.mjs +23 -0
- package/components/data/pagination/esm2022/public_api.mjs +2 -0
- package/components/data/pagination/fesm2022/index.mjs +845 -0
- package/components/data/pagination/fesm2022/index.mjs.map +1 -0
- package/components/data/pagination/index.d.ts +5 -0
- package/components/data/pagination/package.json +20 -0
- package/components/data/pagination/pagination.component.d.ts +101 -0
- package/components/data/pagination/pagination.props.d.ts +1 -0
- package/components/data/pagination/public_api.d.ts +1 -0
- package/components/data/table/.npmignore +2 -0
- package/components/data/table/bundles/index.umd.js +4848 -0
- package/components/data/table/esm2022/index.mjs +5 -0
- package/components/data/table/esm2022/public_api.mjs +9 -0
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +83 -0
- package/components/data/table/esm2022/table-action/table-action.props.mjs +25 -0
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +744 -0
- package/components/data/table/esm2022/table-column/table-column.props.mjs +93 -0
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +80 -0
- package/components/data/table/esm2022/table-column-group/table-column-group.props.mjs +11 -0
- package/components/data/table/esm2022/table-cud.directive.mjs +484 -0
- package/components/data/table/esm2022/table-filter.directive.mjs +706 -0
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +68 -0
- package/components/data/table/esm2022/table-row/table-row.props.mjs +16 -0
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +81 -0
- package/components/data/table/esm2022/table-row-action/table-row-action.props.mjs +20 -0
- package/components/data/table/esm2022/table.component.mjs +2406 -0
- package/components/data/table/esm2022/table.props.mjs +70 -0
- package/components/data/table/fesm2022/index.mjs +4835 -0
- package/components/data/table/fesm2022/index.mjs.map +1 -0
- package/components/data/table/index.d.ts +5 -0
- package/components/data/table/package.json +20 -0
- package/components/data/table/public_api.d.ts +8 -0
- package/components/data/table/table-action/table-action.directive.d.ts +35 -0
- package/components/data/table/table-action/table-action.props.d.ts +1 -0
- package/components/data/table/table-column/table-column.directive.d.ts +152 -0
- package/components/data/table/table-column/table-column.props.d.ts +1 -0
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +23 -0
- package/components/data/table/table-column-group/table-column-group.props.d.ts +1 -0
- package/components/data/table/table-cud.directive.d.ts +34 -0
- package/components/data/table/table-filter.directive.d.ts +35 -0
- package/components/data/table/table-row/table-row.directive.d.ts +25 -0
- package/components/data/table/table-row/table-row.props.d.ts +1 -0
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +31 -0
- package/components/data/table/table-row-action/table-row-action.props.d.ts +1 -0
- package/components/data/table/table.component.d.ts +419 -0
- package/components/data/table/table.props.d.ts +1 -0
- package/components/dialogs/alert-dialog/.npmignore +2 -0
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +23 -0
- package/components/dialogs/alert-dialog/alert-dialog.props.d.ts +1 -0
- package/components/dialogs/alert-dialog/bundles/index.umd.js +126 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +87 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.props.mjs +22 -0
- package/components/dialogs/alert-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/alert-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +114 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/alert-dialog/index.d.ts +5 -0
- package/components/dialogs/alert-dialog/package.json +20 -0
- package/components/dialogs/alert-dialog/public_api.d.ts +1 -0
- package/components/dialogs/confirm-dialog/.npmignore +2 -0
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +129 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +26 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.props.d.ts +1 -0
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +90 -0
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.props.mjs +22 -0
- package/components/dialogs/confirm-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +117 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/confirm-dialog/index.d.ts +5 -0
- package/components/dialogs/confirm-dialog/package.json +20 -0
- package/components/dialogs/confirm-dialog/public_api.d.ts +1 -0
- package/components/dialogs/default/.npmignore +2 -0
- package/components/dialogs/default/base-dialog.d.ts +45 -0
- package/components/dialogs/default/bundles/index.umd.js +379 -0
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +13 -0
- package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +9 -0
- package/components/dialogs/default/dialog-footer/dialog-footer.props.d.ts +1 -0
- package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +25 -0
- package/components/dialogs/default/esm2022/base-dialog.mjs +184 -0
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +86 -0
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +34 -0
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.props.mjs +9 -0
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +62 -0
- package/components/dialogs/default/esm2022/index.mjs +5 -0
- package/components/dialogs/default/esm2022/public_api.mjs +5 -0
- package/components/dialogs/default/fesm2022/index.mjs +364 -0
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/default/index.d.ts +5 -0
- package/components/dialogs/default/package.json +20 -0
- package/components/dialogs/default/public_api.d.ts +4 -0
- package/components/dialogs/design-dialog/.npmignore +2 -0
- package/components/dialogs/design-dialog/bundles/index.umd.js +149 -0
- package/components/dialogs/design-dialog/dialog.component.d.ts +17 -0
- package/components/dialogs/design-dialog/dialog.props.d.ts +1 -0
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +108 -0
- package/components/dialogs/design-dialog/esm2022/dialog.props.mjs +21 -0
- package/components/dialogs/design-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/design-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs +134 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/design-dialog/index.d.ts +5 -0
- package/components/dialogs/design-dialog/package.json +20 -0
- package/components/dialogs/design-dialog/public_api.d.ts +1 -0
- package/components/dialogs/iframe-dialog/.npmignore +2 -0
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +119 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +78 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.props.mjs +25 -0
- package/components/dialogs/iframe-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +108 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +19 -0
- package/components/dialogs/iframe-dialog/iframe-dialog.props.d.ts +1 -0
- package/components/dialogs/iframe-dialog/index.d.ts +5 -0
- package/components/dialogs/iframe-dialog/package.json +20 -0
- package/components/dialogs/iframe-dialog/public_api.d.ts +1 -0
- package/components/dialogs/login-dialog/.npmignore +2 -0
- package/components/dialogs/login-dialog/bundles/index.umd.js +114 -0
- package/components/dialogs/login-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +91 -0
- package/components/dialogs/login-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/login-dialog/fesm2022/index.mjs +98 -0
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/login-dialog/index.d.ts +5 -0
- package/components/dialogs/login-dialog/login-dialog.directive.d.ts +23 -0
- package/components/dialogs/login-dialog/package.json +20 -0
- package/components/dialogs/login-dialog/public_api.d.ts +1 -0
- package/components/dialogs/partial-dialog/.npmignore +2 -0
- package/components/dialogs/partial-dialog/bundles/index.umd.js +157 -0
- package/components/dialogs/partial-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +119 -0
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.props.mjs +22 -0
- package/components/dialogs/partial-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +146 -0
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/partial-dialog/index.d.ts +5 -0
- package/components/dialogs/partial-dialog/package.json +20 -0
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +29 -0
- package/components/dialogs/partial-dialog/partial-dialog.props.d.ts +1 -0
- package/components/dialogs/partial-dialog/public_api.d.ts +1 -0
- package/components/input/base-form/.npmignore +2 -0
- package/components/input/base-form/base-form.component.d.ts +26 -0
- package/components/input/base-form/bundles/index.umd.js +147 -0
- package/components/input/base-form/esm2022/base-form.component.mjs +124 -0
- package/components/input/base-form/esm2022/index.mjs +5 -0
- package/components/input/base-form/esm2022/public_api.mjs +2 -0
- package/components/input/base-form/fesm2022/index.mjs +131 -0
- package/components/input/base-form/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form/index.d.ts +5 -0
- package/components/input/base-form/package.json +20 -0
- package/components/input/base-form/public_api.d.ts +1 -0
- package/components/input/base-form-custom/.npmignore +2 -0
- package/components/input/base-form-custom/base-form-custom.component.d.ts +23 -0
- package/components/input/base-form-custom/bundles/index.umd.js +129 -0
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +105 -0
- package/components/input/base-form-custom/esm2022/index.mjs +5 -0
- package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
- package/components/input/base-form-custom/fesm2022/index.mjs +112 -0
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form-custom/index.d.ts +5 -0
- package/components/input/base-form-custom/package.json +20 -0
- package/components/input/base-form-custom/public_api.d.ts +1 -0
- package/components/input/button/.npmignore +2 -0
- package/components/input/button/bundles/index.umd.js +98 -0
- package/components/input/button/button.component.d.ts +19 -0
- package/components/input/button/button.props.d.ts +1 -0
- package/components/input/button/esm2022/button.component.mjs +50 -0
- package/components/input/button/esm2022/button.props.mjs +26 -0
- package/components/input/button/esm2022/index.mjs +5 -0
- package/components/input/button/esm2022/public_api.mjs +2 -0
- package/components/input/button/fesm2022/index.mjs +81 -0
- package/components/input/button/fesm2022/index.mjs.map +1 -0
- package/components/input/button/index.d.ts +5 -0
- package/components/input/button/package.json +20 -0
- package/components/input/button/public_api.d.ts +1 -0
- package/components/input/button-group/.npmignore +2 -0
- package/components/input/button-group/bundles/index.umd.js +80 -0
- package/components/input/button-group/button-group.directive.d.ts +11 -0
- package/components/input/button-group/button-group.props.d.ts +1 -0
- package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
- package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
- package/components/input/button-group/esm2022/index.mjs +5 -0
- package/components/input/button-group/esm2022/public_api.mjs +2 -0
- package/components/input/button-group/fesm2022/index.mjs +62 -0
- package/components/input/button-group/fesm2022/index.mjs.map +1 -0
- package/components/input/button-group/index.d.ts +5 -0
- package/components/input/button-group/package.json +20 -0
- package/components/input/button-group/public_api.d.ts +1 -0
- package/components/input/calendar/.npmignore +2 -0
- package/components/input/calendar/bundles/index.umd.js +655 -0
- package/components/input/calendar/calendar.component.d.ts +128 -0
- package/components/input/calendar/calendar.props.d.ts +1 -0
- package/components/input/calendar/esm2022/calendar.component.mjs +637 -0
- package/components/input/calendar/esm2022/calendar.props.mjs +23 -0
- package/components/input/calendar/esm2022/index.mjs +5 -0
- package/components/input/calendar/esm2022/public_api.mjs +2 -0
- package/components/input/calendar/fesm2022/index.mjs +665 -0
- package/components/input/calendar/fesm2022/index.mjs.map +1 -0
- package/components/input/calendar/index.d.ts +5 -0
- package/components/input/calendar/package.json +20 -0
- package/components/input/calendar/public_api.d.ts +1 -0
- package/components/input/caption-position/.npmignore +2 -0
- package/components/input/caption-position/bundles/index.umd.js +196 -0
- package/components/input/caption-position/caption-position.directive.d.ts +31 -0
- package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
- package/components/input/caption-position/esm2022/index.mjs +5 -0
- package/components/input/caption-position/esm2022/public_api.mjs +2 -0
- package/components/input/caption-position/fesm2022/index.mjs +178 -0
- package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
- package/components/input/caption-position/index.d.ts +5 -0
- package/components/input/caption-position/package.json +20 -0
- package/components/input/caption-position/public_api.d.ts +1 -0
- package/components/input/checkbox/.npmignore +2 -0
- package/components/input/checkbox/bundles/index.umd.js +206 -0
- package/components/input/checkbox/checkbox.component.d.ts +36 -0
- package/components/input/checkbox/checkbox.props.d.ts +2 -0
- package/components/input/checkbox/esm2022/checkbox.component.mjs +158 -0
- package/components/input/checkbox/esm2022/checkbox.props.mjs +30 -0
- package/components/input/checkbox/esm2022/index.mjs +5 -0
- package/components/input/checkbox/esm2022/public_api.mjs +2 -0
- package/components/input/checkbox/fesm2022/index.mjs +191 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
- package/components/input/checkbox/index.d.ts +5 -0
- package/components/input/checkbox/package.json +20 -0
- package/components/input/checkbox/public_api.d.ts +1 -0
- package/components/input/checkboxset/.npmignore +2 -0
- package/components/input/checkboxset/bundles/index.umd.js +178 -0
- package/components/input/checkboxset/checkboxset.component.d.ts +24 -0
- package/components/input/checkboxset/checkboxset.props.d.ts +2 -0
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +125 -0
- package/components/input/checkboxset/esm2022/checkboxset.props.mjs +36 -0
- package/components/input/checkboxset/esm2022/index.mjs +5 -0
- package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
- package/components/input/checkboxset/fesm2022/index.mjs +165 -0
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
- package/components/input/checkboxset/index.d.ts +5 -0
- package/components/input/checkboxset/package.json +20 -0
- package/components/input/checkboxset/public_api.d.ts +1 -0
- package/components/input/chips/.npmignore +2 -0
- package/components/input/chips/bundles/index.umd.js +741 -0
- package/components/input/chips/chips.component.d.ts +87 -0
- package/components/input/chips/chips.props.d.ts +2 -0
- package/components/input/chips/esm2022/chips.component.mjs +676 -0
- package/components/input/chips/esm2022/chips.props.mjs +49 -0
- package/components/input/chips/esm2022/index.mjs +5 -0
- package/components/input/chips/esm2022/public_api.mjs +2 -0
- package/components/input/chips/fesm2022/index.mjs +729 -0
- package/components/input/chips/fesm2022/index.mjs.map +1 -0
- package/components/input/chips/index.d.ts +5 -0
- package/components/input/chips/package.json +20 -0
- package/components/input/chips/public_api.d.ts +1 -0
- package/components/input/color-picker/.npmignore +2 -0
- package/components/input/color-picker/bundles/index.umd.js +145 -0
- package/components/input/color-picker/color-picker.component.d.ts +33 -0
- package/components/input/color-picker/color-picker.props.d.ts +2 -0
- package/components/input/color-picker/esm2022/color-picker.component.mjs +107 -0
- package/components/input/color-picker/esm2022/color-picker.props.mjs +22 -0
- package/components/input/color-picker/esm2022/index.mjs +5 -0
- package/components/input/color-picker/esm2022/public_api.mjs +2 -0
- package/components/input/color-picker/fesm2022/index.mjs +132 -0
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/color-picker/index.d.ts +5 -0
- package/components/input/color-picker/package.json +20 -0
- package/components/input/color-picker/public_api.d.ts +1 -0
- package/components/input/composite/.npmignore +2 -0
- package/components/input/composite/bundles/index.umd.js +120 -0
- package/components/input/composite/composite.directive.d.ts +24 -0
- package/components/input/composite/composite.props.d.ts +1 -0
- package/components/input/composite/esm2022/composite.directive.mjs +88 -0
- package/components/input/composite/esm2022/composite.props.mjs +10 -0
- package/components/input/composite/esm2022/index.mjs +5 -0
- package/components/input/composite/esm2022/public_api.mjs +2 -0
- package/components/input/composite/fesm2022/index.mjs +103 -0
- package/components/input/composite/fesm2022/index.mjs.map +1 -0
- package/components/input/composite/index.d.ts +5 -0
- package/components/input/composite/package.json +20 -0
- package/components/input/composite/public_api.d.ts +1 -0
- package/components/input/currency/.npmignore +2 -0
- package/components/input/currency/bundles/index.umd.js +112 -0
- package/components/input/currency/currency.component.d.ts +28 -0
- package/components/input/currency/currency.props.d.ts +2 -0
- package/components/input/currency/esm2022/currency.component.mjs +67 -0
- package/components/input/currency/esm2022/currency.props.mjs +27 -0
- package/components/input/currency/esm2022/index.mjs +5 -0
- package/components/input/currency/esm2022/public_api.mjs +2 -0
- package/components/input/currency/fesm2022/index.mjs +97 -0
- package/components/input/currency/fesm2022/index.mjs.map +1 -0
- package/components/input/currency/index.d.ts +5 -0
- package/components/input/currency/package.json +20 -0
- package/components/input/currency/public_api.d.ts +1 -0
- package/components/input/dataset-aware-form/.npmignore +2 -0
- package/components/input/dataset-aware-form/bundles/index.umd.js +352 -0
- package/components/input/dataset-aware-form/dataset-aware-form.component.d.ts +76 -0
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +331 -0
- package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
- package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs +338 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
- package/components/input/dataset-aware-form/index.d.ts +5 -0
- package/components/input/dataset-aware-form/package.json +20 -0
- package/components/input/dataset-aware-form/public_api.d.ts +1 -0
- package/components/input/epoch/base-date-time/.npmignore +2 -0
- package/components/input/epoch/base-date-time/base-date-time.component.d.ts +246 -0
- package/components/input/epoch/base-date-time/bundles/index.umd.js +1093 -0
- package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +1077 -0
- package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +1084 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/base-date-time/index.d.ts +5 -0
- package/components/input/epoch/base-date-time/package.json +20 -0
- package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date/.npmignore +2 -0
- package/components/input/epoch/date/bundles/index.umd.js +515 -0
- package/components/input/epoch/date/date.component.d.ts +61 -0
- package/components/input/epoch/date/date.props.d.ts +2 -0
- package/components/input/epoch/date/esm2022/date.component.mjs +345 -0
- package/components/input/epoch/date/esm2022/date.props.mjs +43 -0
- package/components/input/epoch/date/esm2022/imaskUtil.mjs +114 -0
- package/components/input/epoch/date/esm2022/index.mjs +5 -0
- package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date/fesm2022/index.mjs +505 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date/imaskUtil.d.ts +92 -0
- package/components/input/epoch/date/index.d.ts +5 -0
- package/components/input/epoch/date/package.json +20 -0
- package/components/input/epoch/date/public_api.d.ts +1 -0
- package/components/input/epoch/date-time/.npmignore +2 -0
- package/components/input/epoch/date-time/bundles/index.umd.js +519 -0
- package/components/input/epoch/date-time/date-time.component.d.ts +109 -0
- package/components/input/epoch/date-time/date-time.props.d.ts +2 -0
- package/components/input/epoch/date-time/esm2022/date-time.component.mjs +459 -0
- package/components/input/epoch/date-time/esm2022/date-time.props.mjs +47 -0
- package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs +510 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time/index.d.ts +5 -0
- package/components/input/epoch/date-time/package.json +20 -0
- package/components/input/epoch/date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date-time-picker/.npmignore +2 -0
- package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
- package/components/input/epoch/date-time-picker/date-time-picker.component.d.ts +80 -0
- package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
- package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time-picker/index.d.ts +5 -0
- package/components/input/epoch/date-time-picker/package.json +20 -0
- package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
- package/components/input/epoch/picker/.npmignore +2 -0
- package/components/input/epoch/picker/bundles/index.umd.js +192 -0
- package/components/input/epoch/picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
- package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
- package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
- package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/picker/index.d.ts +5 -0
- package/components/input/epoch/picker/package.json +20 -0
- package/components/input/epoch/picker/picker.component.d.ts +36 -0
- package/components/input/epoch/picker/public_api.d.ts +2 -0
- package/components/input/epoch/time/.npmignore +2 -0
- package/components/input/epoch/time/bundles/index.umd.js +401 -0
- package/components/input/epoch/time/esm2022/index.mjs +5 -0
- package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/time/esm2022/time.component.mjs +352 -0
- package/components/input/epoch/time/esm2022/time.props.mjs +35 -0
- package/components/input/epoch/time/fesm2022/index.mjs +391 -0
- package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/time/index.d.ts +5 -0
- package/components/input/epoch/time/package.json +20 -0
- package/components/input/epoch/time/public_api.d.ts +1 -0
- package/components/input/epoch/time/time.component.d.ts +105 -0
- package/components/input/epoch/time/time.props.d.ts +2 -0
- package/components/input/file-upload/.npmignore +2 -0
- package/components/input/file-upload/bundles/index.umd.js +483 -0
- package/components/input/file-upload/esm2022/file-upload.component.mjs +426 -0
- package/components/input/file-upload/esm2022/file-upload.props.mjs +39 -0
- package/components/input/file-upload/esm2022/index.mjs +5 -0
- package/components/input/file-upload/esm2022/public_api.mjs +2 -0
- package/components/input/file-upload/fesm2022/index.mjs +469 -0
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -0
- package/components/input/file-upload/file-upload.component.d.ts +103 -0
- package/components/input/file-upload/file-upload.props.d.ts +1 -0
- package/components/input/file-upload/index.d.ts +5 -0
- package/components/input/file-upload/package.json +20 -0
- package/components/input/file-upload/public_api.d.ts +1 -0
- package/components/input/number/.npmignore +2 -0
- package/components/input/number/bundles/index.umd.js +109 -0
- package/components/input/number/esm2022/index.mjs +5 -0
- package/components/input/number/esm2022/number.component.mjs +57 -0
- package/components/input/number/esm2022/number.props.mjs +35 -0
- package/components/input/number/esm2022/public_api.mjs +2 -0
- package/components/input/number/fesm2022/index.mjs +95 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -0
- package/components/input/number/index.d.ts +5 -0
- package/components/input/number/number.component.d.ts +26 -0
- package/components/input/number/number.props.d.ts +2 -0
- package/components/input/number/package.json +20 -0
- package/components/input/number/public_api.d.ts +1 -0
- package/components/input/radioset/.npmignore +2 -0
- package/components/input/radioset/bundles/index.umd.js +164 -0
- package/components/input/radioset/esm2022/index.mjs +5 -0
- package/components/input/radioset/esm2022/public_api.mjs +2 -0
- package/components/input/radioset/esm2022/radioset.component.mjs +110 -0
- package/components/input/radioset/esm2022/radioset.props.mjs +37 -0
- package/components/input/radioset/fesm2022/index.mjs +151 -0
- package/components/input/radioset/fesm2022/index.mjs.map +1 -0
- package/components/input/radioset/index.d.ts +5 -0
- package/components/input/radioset/package.json +20 -0
- package/components/input/radioset/public_api.d.ts +1 -0
- package/components/input/radioset/radioset.component.d.ts +23 -0
- package/components/input/radioset/radioset.props.d.ts +2 -0
- package/components/input/rating/.npmignore +2 -0
- package/components/input/rating/bundles/index.umd.js +270 -0
- package/components/input/rating/esm2022/index.mjs +5 -0
- package/components/input/rating/esm2022/public_api.mjs +2 -0
- package/components/input/rating/esm2022/rating.component.mjs +225 -0
- package/components/input/rating/esm2022/rating.props.mjs +29 -0
- package/components/input/rating/fesm2022/index.mjs +257 -0
- package/components/input/rating/fesm2022/index.mjs.map +1 -0
- package/components/input/rating/index.d.ts +5 -0
- package/components/input/rating/package.json +20 -0
- package/components/input/rating/public_api.d.ts +1 -0
- package/components/input/rating/rating.component.d.ts +44 -0
- package/components/input/rating/rating.props.d.ts +2 -0
- package/components/input/select/.npmignore +2 -0
- package/components/input/select/bundles/index.umd.js +225 -0
- package/components/input/select/esm2022/index.mjs +5 -0
- package/components/input/select/esm2022/public_api.mjs +2 -0
- package/components/input/select/esm2022/select.component.mjs +172 -0
- package/components/input/select/esm2022/select.props.mjs +36 -0
- package/components/input/select/fesm2022/index.mjs +211 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -0
- package/components/input/select/index.d.ts +5 -0
- package/components/input/select/package.json +20 -0
- package/components/input/select/public_api.d.ts +1 -0
- package/components/input/select/select.component.d.ts +36 -0
- package/components/input/select/select.props.d.ts +2 -0
- package/components/input/slider/.npmignore +2 -0
- package/components/input/slider/bundles/index.umd.js +203 -0
- package/components/input/slider/esm2022/index.mjs +5 -0
- package/components/input/slider/esm2022/public_api.mjs +2 -0
- package/components/input/slider/esm2022/slider.component.mjs +157 -0
- package/components/input/slider/esm2022/slider.props.mjs +28 -0
- package/components/input/slider/fesm2022/index.mjs +189 -0
- package/components/input/slider/fesm2022/index.mjs.map +1 -0
- package/components/input/slider/index.d.ts +5 -0
- package/components/input/slider/package.json +20 -0
- package/components/input/slider/public_api.d.ts +1 -0
- package/components/input/slider/slider.component.d.ts +39 -0
- package/components/input/slider/slider.props.d.ts +2 -0
- package/components/input/switch/.npmignore +2 -0
- package/components/input/switch/bundles/index.umd.js +224 -0
- package/components/input/switch/esm2022/index.mjs +5 -0
- package/components/input/switch/esm2022/public_api.mjs +2 -0
- package/components/input/switch/esm2022/switch.component.mjs +179 -0
- package/components/input/switch/esm2022/switch.props.mjs +28 -0
- package/components/input/switch/fesm2022/index.mjs +211 -0
- package/components/input/switch/fesm2022/index.mjs.map +1 -0
- package/components/input/switch/index.d.ts +5 -0
- package/components/input/switch/package.json +20 -0
- package/components/input/switch/public_api.d.ts +1 -0
- package/components/input/switch/switch.component.d.ts +30 -0
- package/components/input/switch/switch.props.d.ts +2 -0
- package/components/input/text/.npmignore +2 -0
- package/components/input/text/base-input/base-input.d.ts +33 -0
- package/components/input/text/bundles/index.umd.js +1130 -0
- package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
- package/components/input/text/esm2022/index.mjs +5 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +53 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
- package/components/input/text/esm2022/input-color/input-color.component.mjs +53 -0
- package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
- package/components/input/text/esm2022/input-email/input-email.component.mjs +53 -0
- package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
- package/components/input/text/esm2022/input-number/input-number.component.mjs +63 -0
- package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
- package/components/input/text/esm2022/input-text/input-text.component.mjs +136 -0
- package/components/input/text/esm2022/input-text/input-text.props.mjs +48 -0
- package/components/input/text/esm2022/number-locale/number-locale.mjs +554 -0
- package/components/input/text/esm2022/public_api.mjs +8 -0
- package/components/input/text/fesm2022/index.mjs +1114 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -0
- package/components/input/text/index.d.ts +5 -0
- package/components/input/text/input-calendar/input-calendar.component.d.ts +30 -0
- package/components/input/text/input-calendar/input-calendar.props.d.ts +2 -0
- package/components/input/text/input-color/input-color.component.d.ts +27 -0
- package/components/input/text/input-color/input-color.props.d.ts +2 -0
- package/components/input/text/input-email/input-email.component.d.ts +29 -0
- package/components/input/text/input-email/input-email.props.d.ts +2 -0
- package/components/input/text/input-number/input-number.component.d.ts +33 -0
- package/components/input/text/input-number/input-number.props.d.ts +2 -0
- package/components/input/text/input-text/input-text.component.d.ts +52 -0
- package/components/input/text/input-text/input-text.props.d.ts +2 -0
- package/components/input/text/number-locale/number-locale.d.ts +127 -0
- package/components/input/text/package.json +20 -0
- package/components/input/text/public_api.d.ts +7 -0
- package/components/input/textarea/.npmignore +2 -0
- package/components/input/textarea/bundles/index.umd.js +108 -0
- package/components/input/textarea/esm2022/index.mjs +5 -0
- package/components/input/textarea/esm2022/public_api.mjs +2 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +60 -0
- package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
- package/components/input/textarea/fesm2022/index.mjs +94 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -0
- package/components/input/textarea/index.d.ts +5 -0
- package/components/input/textarea/package.json +20 -0
- package/components/input/textarea/public_api.d.ts +1 -0
- package/components/input/textarea/textarea.component.d.ts +30 -0
- package/components/input/textarea/textarea.props.d.ts +2 -0
- package/components/navigation/breadcrumb/.npmignore +2 -0
- package/components/navigation/breadcrumb/breadcrumb.component.d.ts +25 -0
- package/components/navigation/breadcrumb/breadcrumb.props.d.ts +1 -0
- package/components/navigation/breadcrumb/bundles/index.umd.js +138 -0
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +101 -0
- package/components/navigation/breadcrumb/esm2022/breadcrumb.props.mjs +17 -0
- package/components/navigation/breadcrumb/esm2022/index.mjs +5 -0
- package/components/navigation/breadcrumb/esm2022/public_api.mjs +2 -0
- package/components/navigation/breadcrumb/fesm2022/index.mjs +121 -0
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -0
- package/components/navigation/breadcrumb/index.d.ts +5 -0
- package/components/navigation/breadcrumb/package.json +20 -0
- package/components/navigation/breadcrumb/public_api.d.ts +1 -0
- package/components/navigation/menu/.npmignore +2 -0
- package/components/navigation/menu/bundles/index.umd.js +947 -0
- package/components/navigation/menu/esm2022/index.mjs +5 -0
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +80 -0
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +105 -0
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +191 -0
- package/components/navigation/menu/esm2022/menu.component.mjs +282 -0
- package/components/navigation/menu/esm2022/menu.props.mjs +37 -0
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +66 -0
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.props.mjs +9 -0
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +131 -0
- package/components/navigation/menu/esm2022/nav/nav.props.mjs +28 -0
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +49 -0
- package/components/navigation/menu/esm2022/public_api.mjs +8 -0
- package/components/navigation/menu/fesm2022/index.mjs +929 -0
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -0
- package/components/navigation/menu/index.d.ts +5 -0
- package/components/navigation/menu/menu-adapator.component.d.ts +23 -0
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +15 -0
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +35 -0
- package/components/navigation/menu/menu.component.d.ts +65 -0
- package/components/navigation/menu/menu.props.d.ts +1 -0
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +14 -0
- package/components/navigation/menu/nav/nav-item/nav-item.props.d.ts +1 -0
- package/components/navigation/menu/nav/nav.component.d.ts +35 -0
- package/components/navigation/menu/nav/nav.props.d.ts +1 -0
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +14 -0
- package/components/navigation/menu/package.json +20 -0
- package/components/navigation/menu/public_api.d.ts +7 -0
- package/components/navigation/navbar/.npmignore +2 -0
- package/components/navigation/navbar/bundles/index.umd.js +87 -0
- package/components/navigation/navbar/esm2022/index.mjs +5 -0
- package/components/navigation/navbar/esm2022/navbar.component.mjs +52 -0
- package/components/navigation/navbar/esm2022/navbar.props.mjs +13 -0
- package/components/navigation/navbar/esm2022/public_api.mjs +2 -0
- package/components/navigation/navbar/fesm2022/index.mjs +70 -0
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -0
- package/components/navigation/navbar/index.d.ts +5 -0
- package/components/navigation/navbar/navbar.component.d.ts +16 -0
- package/components/navigation/navbar/navbar.props.d.ts +1 -0
- package/components/navigation/navbar/package.json +20 -0
- package/components/navigation/navbar/public_api.d.ts +1 -0
- package/components/navigation/popover/.npmignore +2 -0
- package/components/navigation/popover/bundles/index.umd.js +514 -0
- package/components/navigation/popover/esm2022/index.mjs +5 -0
- package/components/navigation/popover/esm2022/popover.component.mjs +460 -0
- package/components/navigation/popover/esm2022/popover.props.mjs +35 -0
- package/components/navigation/popover/esm2022/public_api.mjs +2 -0
- package/components/navigation/popover/fesm2022/index.mjs +500 -0
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -0
- package/components/navigation/popover/index.d.ts +5 -0
- package/components/navigation/popover/package.json +20 -0
- package/components/navigation/popover/popover.component.d.ts +83 -0
- package/components/navigation/popover/popover.props.d.ts +1 -0
- package/components/navigation/popover/public_api.d.ts +1 -0
- package/components/page/default/.npmignore +2 -0
- package/components/page/default/bundles/index.umd.js +458 -0
- package/components/page/default/content/content.component.d.ts +9 -0
- package/components/page/default/content/content.props.d.ts +1 -0
- package/components/page/default/esm2022/content/content.component.mjs +29 -0
- package/components/page/default/esm2022/content/content.props.mjs +8 -0
- package/components/page/default/esm2022/index.mjs +5 -0
- package/components/page/default/esm2022/layout.directive.mjs +58 -0
- package/components/page/default/esm2022/layout.props.mjs +5 -0
- package/components/page/default/esm2022/page-content/page-content.component.mjs +85 -0
- package/components/page/default/esm2022/page-content/page-content.props.mjs +14 -0
- package/components/page/default/esm2022/page.directive.mjs +97 -0
- package/components/page/default/esm2022/page.props.mjs +11 -0
- package/components/page/default/esm2022/public_api.mjs +7 -0
- package/components/page/default/esm2022/router-outlet.directive.mjs +47 -0
- package/components/page/default/esm2022/router-outlet.props.mjs +8 -0
- package/components/page/default/esm2022/spa-page.directive.mjs +97 -0
- package/components/page/default/esm2022/spa-page.props.mjs +10 -0
- package/components/page/default/fesm2022/index.mjs +438 -0
- package/components/page/default/fesm2022/index.mjs.map +1 -0
- package/components/page/default/index.d.ts +5 -0
- package/components/page/default/layout.directive.d.ts +20 -0
- package/components/page/default/layout.props.d.ts +1 -0
- package/components/page/default/package.json +20 -0
- package/components/page/default/page-content/page-content.component.d.ts +17 -0
- package/components/page/default/page-content/page-content.props.d.ts +1 -0
- package/components/page/default/page.directive.d.ts +38 -0
- package/components/page/default/page.props.d.ts +1 -0
- package/components/page/default/public_api.d.ts +6 -0
- package/components/page/default/router-outlet.directive.d.ts +13 -0
- package/components/page/default/router-outlet.props.d.ts +1 -0
- package/components/page/default/spa-page.directive.d.ts +38 -0
- package/components/page/default/spa-page.props.d.ts +1 -0
- package/components/page/footer/.npmignore +2 -0
- package/components/page/footer/bundles/index.umd.js +71 -0
- package/components/page/footer/esm2022/footer.directive.mjs +37 -0
- package/components/page/footer/esm2022/footer.props.mjs +11 -0
- package/components/page/footer/esm2022/index.mjs +5 -0
- package/components/page/footer/esm2022/public_api.mjs +2 -0
- package/components/page/footer/fesm2022/index.mjs +53 -0
- package/components/page/footer/fesm2022/index.mjs.map +1 -0
- package/components/page/footer/footer.directive.d.ts +9 -0
- package/components/page/footer/footer.props.d.ts +1 -0
- package/components/page/footer/index.d.ts +5 -0
- package/components/page/footer/package.json +20 -0
- package/components/page/footer/public_api.d.ts +1 -0
- package/components/page/header/.npmignore +2 -0
- package/components/page/header/bundles/index.umd.js +67 -0
- package/components/page/header/esm2022/header.component.mjs +33 -0
- package/components/page/header/esm2022/header.props.mjs +11 -0
- package/components/page/header/esm2022/index.mjs +5 -0
- package/components/page/header/esm2022/public_api.mjs +2 -0
- package/components/page/header/fesm2022/index.mjs +49 -0
- package/components/page/header/fesm2022/index.mjs.map +1 -0
- package/components/page/header/header.component.d.ts +10 -0
- package/components/page/header/header.props.d.ts +1 -0
- package/components/page/header/index.d.ts +5 -0
- package/components/page/header/package.json +20 -0
- package/components/page/header/public_api.d.ts +1 -0
- package/components/page/left-panel/.npmignore +2 -0
- package/components/page/left-panel/bundles/index.umd.js +415 -0
- package/components/page/left-panel/esm2022/index.mjs +5 -0
- package/components/page/left-panel/esm2022/left-panel.animator.mjs +133 -0
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +251 -0
- package/components/page/left-panel/esm2022/left-panel.props.mjs +15 -0
- package/components/page/left-panel/esm2022/public_api.mjs +2 -0
- package/components/page/left-panel/fesm2022/index.mjs +400 -0
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -0
- package/components/page/left-panel/index.d.ts +5 -0
- package/components/page/left-panel/left-panel.animator.d.ts +49 -0
- package/components/page/left-panel/left-panel.directive.d.ts +38 -0
- package/components/page/left-panel/left-panel.props.d.ts +1 -0
- package/components/page/left-panel/package.json +20 -0
- package/components/page/left-panel/public_api.d.ts +1 -0
- package/components/page/right-panel/.npmignore +2 -0
- package/components/page/right-panel/bundles/index.umd.js +86 -0
- package/components/page/right-panel/esm2022/index.mjs +5 -0
- package/components/page/right-panel/esm2022/public_api.mjs +2 -0
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +52 -0
- package/components/page/right-panel/esm2022/right-panel.props.mjs +12 -0
- package/components/page/right-panel/fesm2022/index.mjs +69 -0
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -0
- package/components/page/right-panel/index.d.ts +5 -0
- package/components/page/right-panel/package.json +20 -0
- package/components/page/right-panel/public_api.d.ts +1 -0
- package/components/page/right-panel/right-panel.directive.d.ts +10 -0
- package/components/page/right-panel/right-panel.props.d.ts +1 -0
- package/components/page/top-nav/.npmignore +2 -0
- package/components/page/top-nav/bundles/index.umd.js +68 -0
- package/components/page/top-nav/esm2022/index.mjs +5 -0
- package/components/page/top-nav/esm2022/public_api.mjs +2 -0
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +34 -0
- package/components/page/top-nav/esm2022/top-nav.props.mjs +11 -0
- package/components/page/top-nav/fesm2022/index.mjs +50 -0
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -0
- package/components/page/top-nav/index.d.ts +5 -0
- package/components/page/top-nav/package.json +20 -0
- package/components/page/top-nav/public_api.d.ts +1 -0
- package/components/page/top-nav/top-nav.directive.d.ts +9 -0
- package/components/page/top-nav/top-nav.props.d.ts +1 -0
- package/components/prefab/.npmignore +2 -0
- package/components/prefab/bundles/index.umd.js +176 -0
- package/components/prefab/esm2022/index.mjs +5 -0
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +56 -0
- package/components/prefab/esm2022/prefab-container/prefab-container.props.mjs +9 -0
- package/components/prefab/esm2022/prefab.directive.mjs +88 -0
- package/components/prefab/esm2022/prefab.props.mjs +8 -0
- package/components/prefab/esm2022/public_api.mjs +3 -0
- package/components/prefab/fesm2022/index.mjs +159 -0
- package/components/prefab/fesm2022/index.mjs.map +1 -0
- package/components/prefab/index.d.ts +5 -0
- package/components/prefab/package.json +20 -0
- package/components/prefab/prefab-container/prefab-container.directive.d.ts +15 -0
- package/components/prefab/prefab-container/prefab-container.props.d.ts +1 -0
- package/components/prefab/prefab.directive.d.ts +17 -0
- package/components/prefab/prefab.props.d.ts +1 -0
- package/components/prefab/public_api.d.ts +2 -0
- package/core/.npmignore +2 -0
- package/core/bundles/index.umd.js +5608 -0
- package/core/constants/currency-constants.d.ts +1064 -0
- package/core/enums/enums.d.ts +67 -0
- package/core/esm2022/constants/currency-constants.mjs +1065 -0
- package/core/esm2022/enums/enums.mjs +72 -0
- package/core/esm2022/index.mjs +5 -0
- package/core/esm2022/public_api.mjs +26 -0
- package/core/esm2022/services/constant.service.mjs +25 -0
- package/core/esm2022/services/custom-icons-loader.service.mjs +20 -0
- package/core/esm2022/services/field-type.service.mjs +35 -0
- package/core/esm2022/services/field-widget.service.mjs +37 -0
- package/core/esm2022/services/pagination.service.mjs +336 -0
- package/core/esm2022/services/script-loader.service.mjs +75 -0
- package/core/esm2022/services/state-persistence.service.mjs +500 -0
- package/core/esm2022/services/user-custom-pipe-manager.service.mjs +23 -0
- package/core/esm2022/services/utils.service.mjs +16 -0
- package/core/esm2022/services/viewport.service.mjs +121 -0
- package/core/esm2022/types/types.mjs +81 -0
- package/core/esm2022/utils/build-utils.mjs +296 -0
- package/core/esm2022/utils/dom.mjs +123 -0
- package/core/esm2022/utils/event-notifier.mjs +70 -0
- package/core/esm2022/utils/expression-parser.mjs +593 -0
- package/core/esm2022/utils/id-generator.mjs +15 -0
- package/core/esm2022/utils/lru-cache.mjs +95 -0
- package/core/esm2022/utils/utils.mjs +1476 -0
- package/core/esm2022/utils/watcher.mjs +276 -0
- package/core/esm2022/utils/wm-project-properties.mjs +30 -0
- package/core/fesm2022/index.mjs +5455 -0
- package/core/fesm2022/index.mjs.map +1 -0
- package/core/index.d.ts +5 -0
- package/core/package.json +26 -0
- package/core/public_api.d.ts +22 -0
- package/core/services/constant.service.d.ts +28 -0
- package/core/services/custom-icons-loader.service.d.ts +6 -0
- package/core/services/field-type.service.d.ts +6 -0
- package/core/services/field-widget.service.d.ts +6 -0
- package/core/services/pagination.service.d.ts +59 -0
- package/core/services/script-loader.service.d.ts +17 -0
- package/core/services/state-persistence.service.d.ts +231 -0
- package/core/services/user-custom-pipe-manager.service.d.ts +9 -0
- package/core/services/utils.service.d.ts +6 -0
- package/core/services/viewport.service.d.ts +37 -0
- package/core/types/types.d.ts +208 -0
- package/core/utils/build-utils.d.ts +14 -0
- package/core/utils/dom.d.ts +16 -0
- package/core/utils/event-notifier.d.ts +26 -0
- package/core/utils/expression-parser.d.ts +8 -0
- package/core/utils/id-generator.d.ts +5 -0
- package/core/utils/lru-cache.d.ts +23 -0
- package/core/utils/utils.d.ts +279 -0
- package/core/utils/watcher.d.ts +13 -0
- package/core/utils/wm-project-properties.d.ts +4 -0
- package/http/.npmignore +2 -0
- package/http/bundles/index.umd.js +421 -0
- package/http/esm2022/http.service.mjs +301 -0
- package/http/esm2022/index.mjs +5 -0
- package/http/esm2022/public_api.mjs +4 -0
- package/http/esm2022/wm-http-request.mjs +48 -0
- package/http/esm2022/wm-http-response.mjs +52 -0
- package/http/fesm2022/index.mjs +405 -0
- package/http/fesm2022/index.mjs.map +1 -0
- package/http/http.service.d.ts +70 -0
- package/http/index.d.ts +5 -0
- package/http/package.json +25 -0
- package/http/public_api.d.ts +3 -0
- package/http/wm-http-request.d.ts +24 -0
- package/http/wm-http-response.d.ts +22 -0
- package/locales/angular/global/af-na.js +24 -0
- package/locales/angular/global/af.js +24 -0
- package/locales/angular/global/agq.js +22 -0
- package/locales/angular/global/ak.js +24 -0
- package/locales/angular/global/am.js +24 -0
- package/locales/angular/global/ar-ae.js +32 -0
- package/locales/angular/global/ar-bh.js +32 -0
- package/locales/angular/global/ar-dj.js +32 -0
- package/locales/angular/global/ar-dz.js +32 -0
- package/locales/angular/global/ar-eg.js +32 -0
- package/locales/angular/global/ar-eh.js +32 -0
- package/locales/angular/global/ar-er.js +32 -0
- package/locales/angular/global/ar-il.js +32 -0
- package/locales/angular/global/ar-iq.js +32 -0
- package/locales/angular/global/ar-jo.js +32 -0
- package/locales/angular/global/ar-km.js +32 -0
- package/locales/angular/global/ar-kw.js +32 -0
- package/locales/angular/global/ar-lb.js +32 -0
- package/locales/angular/global/ar-ly.js +32 -0
- package/locales/angular/global/ar-ma.js +32 -0
- package/locales/angular/global/ar-mr.js +32 -0
- package/locales/angular/global/ar-om.js +32 -0
- package/locales/angular/global/ar-ps.js +32 -0
- package/locales/angular/global/ar-qa.js +32 -0
- package/locales/angular/global/ar-sa.js +32 -0
- package/locales/angular/global/ar-sd.js +32 -0
- package/locales/angular/global/ar-so.js +32 -0
- package/locales/angular/global/ar-ss.js +32 -0
- package/locales/angular/global/ar-sy.js +32 -0
- package/locales/angular/global/ar-td.js +32 -0
- package/locales/angular/global/ar-tn.js +32 -0
- package/locales/angular/global/ar-ye.js +32 -0
- package/locales/angular/global/ar.js +32 -0
- package/locales/angular/global/as.js +24 -0
- package/locales/angular/global/asa.js +24 -0
- package/locales/angular/global/ast.js +24 -0
- package/locales/angular/global/az-cyrl.js +22 -0
- package/locales/angular/global/az-latn.js +24 -0
- package/locales/angular/global/az.js +24 -0
- package/locales/angular/global/bas.js +22 -0
- package/locales/angular/global/be-tarask.js +28 -0
- package/locales/angular/global/be.js +28 -0
- package/locales/angular/global/bem.js +24 -0
- package/locales/angular/global/bez.js +24 -0
- package/locales/angular/global/bg.js +24 -0
- package/locales/angular/global/bm.js +22 -0
- package/locales/angular/global/bn-in.js +24 -0
- package/locales/angular/global/bn.js +24 -0
- package/locales/angular/global/bo-in.js +22 -0
- package/locales/angular/global/bo.js +22 -0
- package/locales/angular/global/br.js +30 -0
- package/locales/angular/global/brx.js +24 -0
- package/locales/angular/global/bs-cyrl.js +22 -0
- package/locales/angular/global/bs-latn.js +26 -0
- package/locales/angular/global/bs.js +26 -0
- package/locales/angular/global/ca-ad.js +24 -0
- package/locales/angular/global/ca-es-valencia.js +24 -0
- package/locales/angular/global/ca-fr.js +24 -0
- package/locales/angular/global/ca-it.js +24 -0
- package/locales/angular/global/ca.js +24 -0
- package/locales/angular/global/ccp-in.js +22 -0
- package/locales/angular/global/ccp.js +22 -0
- package/locales/angular/global/ce.js +24 -0
- package/locales/angular/global/ceb.js +24 -0
- package/locales/angular/global/cgg.js +24 -0
- package/locales/angular/global/chr.js +24 -0
- package/locales/angular/global/ckb-ir.js +24 -0
- package/locales/angular/global/ckb.js +24 -0
- package/locales/angular/global/cs.js +28 -0
- package/locales/angular/global/cy.js +32 -0
- package/locales/angular/global/da-gl.js +24 -0
- package/locales/angular/global/da.js +24 -0
- package/locales/angular/global/dav.js +22 -0
- package/locales/angular/global/de-at.js +24 -0
- package/locales/angular/global/de-be.js +24 -0
- package/locales/angular/global/de-ch.js +24 -0
- package/locales/angular/global/de-it.js +24 -0
- package/locales/angular/global/de-li.js +24 -0
- package/locales/angular/global/de-lu.js +24 -0
- package/locales/angular/global/de.js +24 -0
- package/locales/angular/global/dje.js +22 -0
- package/locales/angular/global/doi.js +24 -0
- package/locales/angular/global/dsb.js +28 -0
- package/locales/angular/global/dua.js +22 -0
- package/locales/angular/global/dyo.js +22 -0
- package/locales/angular/global/dz.js +22 -0
- package/locales/angular/global/ebu.js +22 -0
- package/locales/angular/global/ee-tg.js +24 -0
- package/locales/angular/global/ee.js +24 -0
- package/locales/angular/global/el-cy.js +24 -0
- package/locales/angular/global/el.js +24 -0
- package/locales/angular/global/en-001.js +24 -0
- package/locales/angular/global/en-150.js +24 -0
- package/locales/angular/global/en-ae.js +24 -0
- package/locales/angular/global/en-ag.js +24 -0
- package/locales/angular/global/en-ai.js +24 -0
- package/locales/angular/global/en-as.js +24 -0
- package/locales/angular/global/en-at.js +24 -0
- package/locales/angular/global/en-au.js +24 -0
- package/locales/angular/global/en-bb.js +24 -0
- package/locales/angular/global/en-be.js +24 -0
- package/locales/angular/global/en-bi.js +24 -0
- package/locales/angular/global/en-bm.js +24 -0
- package/locales/angular/global/en-bs.js +24 -0
- package/locales/angular/global/en-bw.js +24 -0
- package/locales/angular/global/en-bz.js +24 -0
- package/locales/angular/global/en-ca.js +24 -0
- package/locales/angular/global/en-cc.js +24 -0
- package/locales/angular/global/en-ch.js +24 -0
- package/locales/angular/global/en-ck.js +24 -0
- package/locales/angular/global/en-cm.js +24 -0
- package/locales/angular/global/en-cx.js +24 -0
- package/locales/angular/global/en-cy.js +24 -0
- package/locales/angular/global/en-de.js +24 -0
- package/locales/angular/global/en-dg.js +24 -0
- package/locales/angular/global/en-dk.js +24 -0
- package/locales/angular/global/en-dm.js +24 -0
- package/locales/angular/global/en-er.js +24 -0
- package/locales/angular/global/en-fi.js +24 -0
- package/locales/angular/global/en-fj.js +24 -0
- package/locales/angular/global/en-fk.js +24 -0
- package/locales/angular/global/en-fm.js +24 -0
- package/locales/angular/global/en-gb.js +24 -0
- package/locales/angular/global/en-gd.js +24 -0
- package/locales/angular/global/en-gg.js +24 -0
- package/locales/angular/global/en-gh.js +24 -0
- package/locales/angular/global/en-gi.js +24 -0
- package/locales/angular/global/en-gm.js +24 -0
- package/locales/angular/global/en-gu.js +24 -0
- package/locales/angular/global/en-gy.js +24 -0
- package/locales/angular/global/en-hk.js +24 -0
- package/locales/angular/global/en-ie.js +24 -0
- package/locales/angular/global/en-il.js +24 -0
- package/locales/angular/global/en-im.js +24 -0
- package/locales/angular/global/en-in.js +24 -0
- package/locales/angular/global/en-io.js +24 -0
- package/locales/angular/global/en-je.js +24 -0
- package/locales/angular/global/en-jm.js +24 -0
- package/locales/angular/global/en-ke.js +24 -0
- package/locales/angular/global/en-ki.js +24 -0
- package/locales/angular/global/en-kn.js +24 -0
- package/locales/angular/global/en-ky.js +24 -0
- package/locales/angular/global/en-lc.js +24 -0
- package/locales/angular/global/en-lr.js +24 -0
- package/locales/angular/global/en-ls.js +24 -0
- package/locales/angular/global/en-mg.js +24 -0
- package/locales/angular/global/en-mh.js +24 -0
- package/locales/angular/global/en-mo.js +24 -0
- package/locales/angular/global/en-mp.js +24 -0
- package/locales/angular/global/en-ms.js +24 -0
- package/locales/angular/global/en-mt.js +24 -0
- package/locales/angular/global/en-mu.js +24 -0
- package/locales/angular/global/en-mv.js +24 -0
- package/locales/angular/global/en-mw.js +24 -0
- package/locales/angular/global/en-my.js +24 -0
- package/locales/angular/global/en-na.js +24 -0
- package/locales/angular/global/en-nf.js +24 -0
- package/locales/angular/global/en-ng.js +24 -0
- package/locales/angular/global/en-nl.js +24 -0
- package/locales/angular/global/en-nr.js +24 -0
- package/locales/angular/global/en-nu.js +24 -0
- package/locales/angular/global/en-nz.js +24 -0
- package/locales/angular/global/en-pg.js +24 -0
- package/locales/angular/global/en-ph.js +24 -0
- package/locales/angular/global/en-pk.js +24 -0
- package/locales/angular/global/en-pn.js +24 -0
- package/locales/angular/global/en-pr.js +24 -0
- package/locales/angular/global/en-pw.js +24 -0
- package/locales/angular/global/en-rw.js +24 -0
- package/locales/angular/global/en-sb.js +24 -0
- package/locales/angular/global/en-sc.js +24 -0
- package/locales/angular/global/en-sd.js +24 -0
- package/locales/angular/global/en-se.js +24 -0
- package/locales/angular/global/en-sg.js +24 -0
- package/locales/angular/global/en-sh.js +24 -0
- package/locales/angular/global/en-si.js +24 -0
- package/locales/angular/global/en-sl.js +24 -0
- package/locales/angular/global/en-ss.js +24 -0
- package/locales/angular/global/en-sx.js +24 -0
- package/locales/angular/global/en-sz.js +24 -0
- package/locales/angular/global/en-tc.js +24 -0
- package/locales/angular/global/en-tk.js +24 -0
- package/locales/angular/global/en-to.js +24 -0
- package/locales/angular/global/en-tt.js +24 -0
- package/locales/angular/global/en-tv.js +24 -0
- package/locales/angular/global/en-tz.js +24 -0
- package/locales/angular/global/en-ug.js +24 -0
- package/locales/angular/global/en-um.js +24 -0
- package/locales/angular/global/en-vc.js +24 -0
- package/locales/angular/global/en-vg.js +24 -0
- package/locales/angular/global/en-vi.js +24 -0
- package/locales/angular/global/en-vu.js +24 -0
- package/locales/angular/global/en-ws.js +24 -0
- package/locales/angular/global/en-za.js +24 -0
- package/locales/angular/global/en-zm.js +24 -0
- package/locales/angular/global/en-zw.js +24 -0
- package/locales/angular/global/en.js +24 -0
- package/locales/angular/global/eo.js +24 -0
- package/locales/angular/global/es-419.js +26 -0
- package/locales/angular/global/es-ar.js +26 -0
- package/locales/angular/global/es-bo.js +26 -0
- package/locales/angular/global/es-br.js +26 -0
- package/locales/angular/global/es-bz.js +26 -0
- package/locales/angular/global/es-cl.js +26 -0
- package/locales/angular/global/es-co.js +26 -0
- package/locales/angular/global/es-cr.js +26 -0
- package/locales/angular/global/es-cu.js +26 -0
- package/locales/angular/global/es-do.js +26 -0
- package/locales/angular/global/es-ea.js +26 -0
- package/locales/angular/global/es-ec.js +26 -0
- package/locales/angular/global/es-gq.js +26 -0
- package/locales/angular/global/es-gt.js +26 -0
- package/locales/angular/global/es-hn.js +26 -0
- package/locales/angular/global/es-ic.js +26 -0
- package/locales/angular/global/es-mx.js +26 -0
- package/locales/angular/global/es-ni.js +26 -0
- package/locales/angular/global/es-pa.js +26 -0
- package/locales/angular/global/es-pe.js +26 -0
- package/locales/angular/global/es-ph.js +26 -0
- package/locales/angular/global/es-pr.js +26 -0
- package/locales/angular/global/es-py.js +26 -0
- package/locales/angular/global/es-sv.js +26 -0
- package/locales/angular/global/es-us.js +26 -0
- package/locales/angular/global/es-uy.js +26 -0
- package/locales/angular/global/es-ve.js +26 -0
- package/locales/angular/global/es.js +26 -0
- package/locales/angular/global/et.js +24 -0
- package/locales/angular/global/eu.js +24 -0
- package/locales/angular/global/ewo.js +22 -0
- package/locales/angular/global/fa-af.js +24 -0
- package/locales/angular/global/fa.js +24 -0
- package/locales/angular/global/ff-adlm-bf.js +22 -0
- package/locales/angular/global/ff-adlm-cm.js +22 -0
- package/locales/angular/global/ff-adlm-gh.js +22 -0
- package/locales/angular/global/ff-adlm-gm.js +22 -0
- package/locales/angular/global/ff-adlm-gw.js +22 -0
- package/locales/angular/global/ff-adlm-lr.js +22 -0
- package/locales/angular/global/ff-adlm-mr.js +22 -0
- package/locales/angular/global/ff-adlm-ne.js +22 -0
- package/locales/angular/global/ff-adlm-ng.js +22 -0
- package/locales/angular/global/ff-adlm-sl.js +22 -0
- package/locales/angular/global/ff-adlm-sn.js +22 -0
- package/locales/angular/global/ff-adlm.js +22 -0
- package/locales/angular/global/ff-cm.js +74 -0
- package/locales/angular/global/ff-gn.js +74 -0
- package/locales/angular/global/ff-latn-bf.js +24 -0
- package/locales/angular/global/ff-latn-cm.js +24 -0
- package/locales/angular/global/ff-latn-gh.js +24 -0
- package/locales/angular/global/ff-latn-gm.js +24 -0
- package/locales/angular/global/ff-latn-gn.js +24 -0
- package/locales/angular/global/ff-latn-gw.js +24 -0
- package/locales/angular/global/ff-latn-lr.js +24 -0
- package/locales/angular/global/ff-latn-mr.js +24 -0
- package/locales/angular/global/ff-latn-ne.js +24 -0
- package/locales/angular/global/ff-latn-ng.js +24 -0
- package/locales/angular/global/ff-latn-sl.js +24 -0
- package/locales/angular/global/ff-latn.js +24 -0
- package/locales/angular/global/ff-mr.js +74 -0
- package/locales/angular/global/ff.js +24 -0
- package/locales/angular/global/fi.js +24 -0
- package/locales/angular/global/fil.js +24 -0
- package/locales/angular/global/fo-dk.js +24 -0
- package/locales/angular/global/fo.js +24 -0
- package/locales/angular/global/fr-be.js +26 -0
- package/locales/angular/global/fr-bf.js +26 -0
- package/locales/angular/global/fr-bi.js +26 -0
- package/locales/angular/global/fr-bj.js +26 -0
- package/locales/angular/global/fr-bl.js +26 -0
- package/locales/angular/global/fr-ca.js +26 -0
- package/locales/angular/global/fr-cd.js +26 -0
- package/locales/angular/global/fr-cf.js +26 -0
- package/locales/angular/global/fr-cg.js +26 -0
- package/locales/angular/global/fr-ch.js +26 -0
- package/locales/angular/global/fr-ci.js +26 -0
- package/locales/angular/global/fr-cm.js +26 -0
- package/locales/angular/global/fr-dj.js +26 -0
- package/locales/angular/global/fr-dz.js +26 -0
- package/locales/angular/global/fr-ga.js +26 -0
- package/locales/angular/global/fr-gf.js +26 -0
- package/locales/angular/global/fr-gn.js +26 -0
- package/locales/angular/global/fr-gp.js +26 -0
- package/locales/angular/global/fr-gq.js +26 -0
- package/locales/angular/global/fr-ht.js +26 -0
- package/locales/angular/global/fr-km.js +26 -0
- package/locales/angular/global/fr-lu.js +26 -0
- package/locales/angular/global/fr-ma.js +26 -0
- package/locales/angular/global/fr-mc.js +26 -0
- package/locales/angular/global/fr-mf.js +26 -0
- package/locales/angular/global/fr-mg.js +26 -0
- package/locales/angular/global/fr-ml.js +26 -0
- package/locales/angular/global/fr-mq.js +26 -0
- package/locales/angular/global/fr-mr.js +26 -0
- package/locales/angular/global/fr-mu.js +26 -0
- package/locales/angular/global/fr-nc.js +26 -0
- package/locales/angular/global/fr-ne.js +26 -0
- package/locales/angular/global/fr-pf.js +26 -0
- package/locales/angular/global/fr-pm.js +26 -0
- package/locales/angular/global/fr-re.js +26 -0
- package/locales/angular/global/fr-rw.js +26 -0
- package/locales/angular/global/fr-sc.js +26 -0
- package/locales/angular/global/fr-sn.js +26 -0
- package/locales/angular/global/fr-sy.js +26 -0
- package/locales/angular/global/fr-td.js +26 -0
- package/locales/angular/global/fr-tg.js +26 -0
- package/locales/angular/global/fr-tn.js +26 -0
- package/locales/angular/global/fr-vu.js +26 -0
- package/locales/angular/global/fr-wf.js +26 -0
- package/locales/angular/global/fr-yt.js +26 -0
- package/locales/angular/global/fr.js +26 -0
- package/locales/angular/global/fur.js +24 -0
- package/locales/angular/global/fy.js +24 -0
- package/locales/angular/global/ga-gb.js +30 -0
- package/locales/angular/global/ga.js +30 -0
- package/locales/angular/global/gd.js +28 -0
- package/locales/angular/global/gl.js +24 -0
- package/locales/angular/global/gsw-fr.js +24 -0
- package/locales/angular/global/gsw-li.js +24 -0
- package/locales/angular/global/gsw.js +24 -0
- package/locales/angular/global/gu.js +24 -0
- package/locales/angular/global/guz.js +22 -0
- package/locales/angular/global/gv.js +30 -0
- package/locales/angular/global/ha-gh.js +24 -0
- package/locales/angular/global/ha-ne.js +24 -0
- package/locales/angular/global/ha.js +24 -0
- package/locales/angular/global/haw.js +24 -0
- package/locales/angular/global/he.js +28 -0
- package/locales/angular/global/hi-latn.js +24 -0
- package/locales/angular/global/hi.js +24 -0
- package/locales/angular/global/hr-ba.js +26 -0
- package/locales/angular/global/hr.js +26 -0
- package/locales/angular/global/hsb.js +28 -0
- package/locales/angular/global/hu.js +24 -0
- package/locales/angular/global/hy.js +24 -0
- package/locales/angular/global/ia.js +24 -0
- package/locales/angular/global/id.js +22 -0
- package/locales/angular/global/ig.js +22 -0
- package/locales/angular/global/ii.js +22 -0
- package/locales/angular/global/is.js +24 -0
- package/locales/angular/global/it-ch.js +26 -0
- package/locales/angular/global/it-sm.js +26 -0
- package/locales/angular/global/it-va.js +26 -0
- package/locales/angular/global/it.js +26 -0
- package/locales/angular/global/ja.js +22 -0
- package/locales/angular/global/jgo.js +24 -0
- package/locales/angular/global/jmc.js +24 -0
- package/locales/angular/global/jv.js +22 -0
- package/locales/angular/global/ka.js +24 -0
- package/locales/angular/global/kab.js +24 -0
- package/locales/angular/global/kam.js +22 -0
- package/locales/angular/global/kde.js +22 -0
- package/locales/angular/global/kea.js +22 -0
- package/locales/angular/global/kgp.js +22 -0
- package/locales/angular/global/khq.js +22 -0
- package/locales/angular/global/ki.js +22 -0
- package/locales/angular/global/kk.js +24 -0
- package/locales/angular/global/kkj.js +24 -0
- package/locales/angular/global/kl.js +24 -0
- package/locales/angular/global/kln.js +22 -0
- package/locales/angular/global/km.js +22 -0
- package/locales/angular/global/kn.js +24 -0
- package/locales/angular/global/ko-kp.js +22 -0
- package/locales/angular/global/ko.js +22 -0
- package/locales/angular/global/kok.js +22 -0
- package/locales/angular/global/ks-arab.js +24 -0
- package/locales/angular/global/ks-deva.js +22 -0
- package/locales/angular/global/ks.js +24 -0
- package/locales/angular/global/ksb.js +24 -0
- package/locales/angular/global/ksf.js +22 -0
- package/locales/angular/global/ksh.js +26 -0
- package/locales/angular/global/ku.js +24 -0
- package/locales/angular/global/kw.js +32 -0
- package/locales/angular/global/ky.js +24 -0
- package/locales/angular/global/lag.js +26 -0
- package/locales/angular/global/lb.js +24 -0
- package/locales/angular/global/lg.js +24 -0
- package/locales/angular/global/lkt.js +22 -0
- package/locales/angular/global/ln-ao.js +24 -0
- package/locales/angular/global/ln-cf.js +24 -0
- package/locales/angular/global/ln-cg.js +24 -0
- package/locales/angular/global/ln.js +24 -0
- package/locales/angular/global/lo.js +22 -0
- package/locales/angular/global/lrc-iq.js +22 -0
- package/locales/angular/global/lrc.js +22 -0
- package/locales/angular/global/lt.js +28 -0
- package/locales/angular/global/lu.js +22 -0
- package/locales/angular/global/luo.js +22 -0
- package/locales/angular/global/luy.js +22 -0
- package/locales/angular/global/lv.js +26 -0
- package/locales/angular/global/mai.js +22 -0
- package/locales/angular/global/mas-tz.js +24 -0
- package/locales/angular/global/mas.js +24 -0
- package/locales/angular/global/mer.js +22 -0
- package/locales/angular/global/mfe.js +22 -0
- package/locales/angular/global/mg.js +24 -0
- package/locales/angular/global/mgh.js +22 -0
- package/locales/angular/global/mgo.js +24 -0
- package/locales/angular/global/mi.js +22 -0
- package/locales/angular/global/mk.js +24 -0
- package/locales/angular/global/ml.js +24 -0
- package/locales/angular/global/mn.js +24 -0
- package/locales/angular/global/mni-beng.js +22 -0
- package/locales/angular/global/mni.js +22 -0
- package/locales/angular/global/mr.js +24 -0
- package/locales/angular/global/ms-bn.js +22 -0
- package/locales/angular/global/ms-id.js +22 -0
- package/locales/angular/global/ms-sg.js +22 -0
- package/locales/angular/global/ms.js +22 -0
- package/locales/angular/global/mt.js +28 -0
- package/locales/angular/global/mua.js +22 -0
- package/locales/angular/global/my.js +22 -0
- package/locales/angular/global/mzn.js +22 -0
- package/locales/angular/global/naq.js +26 -0
- package/locales/angular/global/nb-sj.js +24 -0
- package/locales/angular/global/nb.js +24 -0
- package/locales/angular/global/nd.js +24 -0
- package/locales/angular/global/nds-nl.js +22 -0
- package/locales/angular/global/nds.js +22 -0
- package/locales/angular/global/ne-in.js +24 -0
- package/locales/angular/global/ne.js +24 -0
- package/locales/angular/global/nl-aw.js +24 -0
- package/locales/angular/global/nl-be.js +24 -0
- package/locales/angular/global/nl-bq.js +24 -0
- package/locales/angular/global/nl-cw.js +24 -0
- package/locales/angular/global/nl-sr.js +24 -0
- package/locales/angular/global/nl-sx.js +24 -0
- package/locales/angular/global/nl.js +24 -0
- package/locales/angular/global/nmg.js +22 -0
- package/locales/angular/global/nn.js +24 -0
- package/locales/angular/global/nnh.js +24 -0
- package/locales/angular/global/no.js +24 -0
- package/locales/angular/global/nus.js +22 -0
- package/locales/angular/global/nyn.js +24 -0
- package/locales/angular/global/om-ke.js +24 -0
- package/locales/angular/global/om.js +24 -0
- package/locales/angular/global/or.js +24 -0
- package/locales/angular/global/os-ru.js +24 -0
- package/locales/angular/global/os.js +24 -0
- package/locales/angular/global/pa-arab.js +22 -0
- package/locales/angular/global/pa-guru.js +24 -0
- package/locales/angular/global/pa.js +24 -0
- package/locales/angular/global/pcm.js +24 -0
- package/locales/angular/global/pl.js +28 -0
- package/locales/angular/global/ps-pk.js +24 -0
- package/locales/angular/global/ps.js +24 -0
- package/locales/angular/global/pt-ao.js +26 -0
- package/locales/angular/global/pt-ch.js +26 -0
- package/locales/angular/global/pt-cv.js +26 -0
- package/locales/angular/global/pt-gq.js +26 -0
- package/locales/angular/global/pt-gw.js +26 -0
- package/locales/angular/global/pt-lu.js +26 -0
- package/locales/angular/global/pt-mo.js +26 -0
- package/locales/angular/global/pt-mz.js +26 -0
- package/locales/angular/global/pt-pt.js +26 -0
- package/locales/angular/global/pt-st.js +26 -0
- package/locales/angular/global/pt-tl.js +26 -0
- package/locales/angular/global/pt.js +26 -0
- package/locales/angular/global/qu-bo.js +22 -0
- package/locales/angular/global/qu-ec.js +22 -0
- package/locales/angular/global/qu.js +22 -0
- package/locales/angular/global/rm.js +24 -0
- package/locales/angular/global/rn.js +22 -0
- package/locales/angular/global/ro-md.js +26 -0
- package/locales/angular/global/ro.js +26 -0
- package/locales/angular/global/rof.js +24 -0
- package/locales/angular/global/ru-by.js +28 -0
- package/locales/angular/global/ru-kg.js +28 -0
- package/locales/angular/global/ru-kz.js +28 -0
- package/locales/angular/global/ru-md.js +28 -0
- package/locales/angular/global/ru-ua.js +28 -0
- package/locales/angular/global/ru.js +28 -0
- package/locales/angular/global/rw.js +22 -0
- package/locales/angular/global/rwk.js +24 -0
- package/locales/angular/global/sa.js +22 -0
- package/locales/angular/global/sah.js +22 -0
- package/locales/angular/global/saq.js +24 -0
- package/locales/angular/global/sat-olck.js +26 -0
- package/locales/angular/global/sat.js +26 -0
- package/locales/angular/global/sbp.js +22 -0
- package/locales/angular/global/sc.js +24 -0
- package/locales/angular/global/sd-arab.js +24 -0
- package/locales/angular/global/sd-deva.js +22 -0
- package/locales/angular/global/sd.js +24 -0
- package/locales/angular/global/se-fi.js +26 -0
- package/locales/angular/global/se-se.js +26 -0
- package/locales/angular/global/se.js +26 -0
- package/locales/angular/global/seh.js +24 -0
- package/locales/angular/global/ses.js +22 -0
- package/locales/angular/global/sg.js +22 -0
- package/locales/angular/global/shi-latn.js +22 -0
- package/locales/angular/global/shi-tfng.js +26 -0
- package/locales/angular/global/shi.js +26 -0
- package/locales/angular/global/si.js +24 -0
- package/locales/angular/global/sk.js +28 -0
- package/locales/angular/global/sl.js +28 -0
- package/locales/angular/global/smn.js +26 -0
- package/locales/angular/global/sn.js +24 -0
- package/locales/angular/global/so-dj.js +24 -0
- package/locales/angular/global/so-et.js +24 -0
- package/locales/angular/global/so-ke.js +24 -0
- package/locales/angular/global/so.js +24 -0
- package/locales/angular/global/sq-mk.js +24 -0
- package/locales/angular/global/sq-xk.js +24 -0
- package/locales/angular/global/sq.js +24 -0
- package/locales/angular/global/sr-cyrl-ba.js +26 -0
- package/locales/angular/global/sr-cyrl-me.js +26 -0
- package/locales/angular/global/sr-cyrl-xk.js +26 -0
- package/locales/angular/global/sr-cyrl.js +26 -0
- package/locales/angular/global/sr-latn-ba.js +22 -0
- package/locales/angular/global/sr-latn-me.js +22 -0
- package/locales/angular/global/sr-latn-xk.js +22 -0
- package/locales/angular/global/sr-latn.js +22 -0
- package/locales/angular/global/sr.js +26 -0
- package/locales/angular/global/su-latn.js +22 -0
- package/locales/angular/global/su.js +22 -0
- package/locales/angular/global/sv-ax.js +24 -0
- package/locales/angular/global/sv-fi.js +24 -0
- package/locales/angular/global/sv.js +24 -0
- package/locales/angular/global/sw-cd.js +24 -0
- package/locales/angular/global/sw-ke.js +24 -0
- package/locales/angular/global/sw-ug.js +24 -0
- package/locales/angular/global/sw.js +24 -0
- package/locales/angular/global/ta-lk.js +24 -0
- package/locales/angular/global/ta-my.js +24 -0
- package/locales/angular/global/ta-sg.js +24 -0
- package/locales/angular/global/ta.js +24 -0
- package/locales/angular/global/te.js +24 -0
- package/locales/angular/global/teo-ke.js +24 -0
- package/locales/angular/global/teo.js +24 -0
- package/locales/angular/global/tg.js +22 -0
- package/locales/angular/global/th.js +22 -0
- package/locales/angular/global/ti-er.js +24 -0
- package/locales/angular/global/ti.js +24 -0
- package/locales/angular/global/tk.js +24 -0
- package/locales/angular/global/to.js +22 -0
- package/locales/angular/global/tr-cy.js +24 -0
- package/locales/angular/global/tr.js +24 -0
- package/locales/angular/global/tt.js +22 -0
- package/locales/angular/global/twq.js +22 -0
- package/locales/angular/global/tzm.js +24 -0
- package/locales/angular/global/ug.js +24 -0
- package/locales/angular/global/uk.js +28 -0
- package/locales/angular/global/und.js +24 -0
- package/locales/angular/global/ur-in.js +24 -0
- package/locales/angular/global/ur.js +24 -0
- package/locales/angular/global/uz-arab.js +22 -0
- package/locales/angular/global/uz-cyrl.js +22 -0
- package/locales/angular/global/uz-latn.js +24 -0
- package/locales/angular/global/uz.js +24 -0
- package/locales/angular/global/vai-latn.js +22 -0
- package/locales/angular/global/vai-vaii.js +22 -0
- package/locales/angular/global/vai.js +22 -0
- package/locales/angular/global/vi.js +22 -0
- package/locales/angular/global/vun.js +24 -0
- package/locales/angular/global/wae.js +24 -0
- package/locales/angular/global/wo.js +22 -0
- package/locales/angular/global/xh.js +24 -0
- package/locales/angular/global/xog.js +24 -0
- package/locales/angular/global/yav.js +22 -0
- package/locales/angular/global/yi.js +24 -0
- package/locales/angular/global/yo-bj.js +22 -0
- package/locales/angular/global/yo.js +22 -0
- package/locales/angular/global/yrl-co.js +22 -0
- package/locales/angular/global/yrl-ve.js +22 -0
- package/locales/angular/global/yrl.js +22 -0
- package/locales/angular/global/yue-hans.js +22 -0
- package/locales/angular/global/yue-hant.js +22 -0
- package/locales/angular/global/yue.js +22 -0
- package/locales/angular/global/zgh.js +22 -0
- package/locales/angular/global/zh-hans-hk.js +22 -0
- package/locales/angular/global/zh-hans-mo.js +22 -0
- package/locales/angular/global/zh-hans-sg.js +22 -0
- package/locales/angular/global/zh-hans.js +22 -0
- package/locales/angular/global/zh-hant-hk.js +22 -0
- package/locales/angular/global/zh-hant-mo.js +22 -0
- package/locales/angular/global/zh-hant.js +22 -0
- package/locales/angular/global/zh.js +22 -0
- package/locales/angular/global/zu.js +24 -0
- package/locales/moment/af.js +82 -0
- package/locales/moment/ar-dz.js +167 -0
- package/locales/moment/ar-kw.js +66 -0
- package/locales/moment/ar-ly.js +182 -0
- package/locales/moment/ar-ma.js +67 -0
- package/locales/moment/ar-ps.js +123 -0
- package/locales/moment/ar-sa.js +116 -0
- package/locales/moment/ar-tn.js +66 -0
- package/locales/moment/ar.js +200 -0
- package/locales/moment/az.js +113 -0
- package/locales/moment/be.js +153 -0
- package/locales/moment/bg.js +98 -0
- package/locales/moment/bm.js +62 -0
- package/locales/moment/bn-bd.js +140 -0
- package/locales/moment/bn.js +130 -0
- package/locales/moment/bo.js +135 -0
- package/locales/moment/br.js +179 -0
- package/locales/moment/bs.js +171 -0
- package/locales/moment/ca.js +111 -0
- package/locales/moment/cs.js +192 -0
- package/locales/moment/cv.js +74 -0
- package/locales/moment/cy.js +109 -0
- package/locales/moment/da.js +64 -0
- package/locales/moment/de-at.js +90 -0
- package/locales/moment/de-ch.js +87 -0
- package/locales/moment/de.js +89 -0
- package/locales/moment/dv.js +101 -0
- package/locales/moment/el.js +117 -0
- package/locales/moment/en-au.js +79 -0
- package/locales/moment/en-ca.js +75 -0
- package/locales/moment/en-gb.js +79 -0
- package/locales/moment/en-ie.js +79 -0
- package/locales/moment/en-il.js +75 -0
- package/locales/moment/en-in.js +79 -0
- package/locales/moment/en-nz.js +79 -0
- package/locales/moment/en-sg.js +79 -0
- package/locales/moment/eo.js +79 -0
- package/locales/moment/es-do.js +119 -0
- package/locales/moment/es-mx.js +121 -0
- package/locales/moment/es-us.js +121 -0
- package/locales/moment/es.js +121 -0
- package/locales/moment/et.js +89 -0
- package/locales/moment/eu.js +76 -0
- package/locales/moment/fa.js +124 -0
- package/locales/moment/fi.js +135 -0
- package/locales/moment/fil.js +69 -0
- package/locales/moment/fo.js +68 -0
- package/locales/moment/fr-ca.js +81 -0
- package/locales/moment/fr-ch.js +85 -0
- package/locales/moment/fr.js +119 -0
- package/locales/moment/fy.js +86 -0
- package/locales/moment/ga.js +106 -0
- package/locales/moment/gd.js +106 -0
- package/locales/moment/gl.js +86 -0
- package/locales/moment/gom-deva.js +137 -0
- package/locales/moment/gom-latn.js +135 -0
- package/locales/moment/gu.js +133 -0
- package/locales/moment/he.js +105 -0
- package/locales/moment/hi.js +179 -0
- package/locales/moment/hr.js +167 -0
- package/locales/moment/hu.js +129 -0
- package/locales/moment/hy-am.js +105 -0
- package/locales/moment/id.js +87 -0
- package/locales/moment/is.js +151 -0
- package/locales/moment/it-ch.js +75 -0
- package/locales/moment/it.js +117 -0
- package/locales/moment/ja.js +159 -0
- package/locales/moment/jv.js +87 -0
- package/locales/moment/ka.js +103 -0
- package/locales/moment/kk.js +93 -0
- package/locales/moment/km.js +114 -0
- package/locales/moment/kn.js +135 -0
- package/locales/moment/ko.js +86 -0
- package/locales/moment/ku-kmr.js +125 -0
- package/locales/moment/ku.js +129 -0
- package/locales/moment/ky.js +95 -0
- package/locales/moment/lb.js +148 -0
- package/locales/moment/lo.js +77 -0
- package/locales/moment/lt.js +136 -0
- package/locales/moment/lv.js +105 -0
- package/locales/moment/me.js +128 -0
- package/locales/moment/mi.js +71 -0
- package/locales/moment/mk.js +97 -0
- package/locales/moment/ml.js +93 -0
- package/locales/moment/mn.js +111 -0
- package/locales/moment/mr.js +214 -0
- package/locales/moment/ms-my.js +87 -0
- package/locales/moment/ms.js +86 -0
- package/locales/moment/mt.js +67 -0
- package/locales/moment/my.js +102 -0
- package/locales/moment/nb.js +71 -0
- package/locales/moment/ne.js +132 -0
- package/locales/moment/nl-be.js +113 -0
- package/locales/moment/nl.js +115 -0
- package/locales/moment/nn.js +70 -0
- package/locales/moment/oc-lnc.js +96 -0
- package/locales/moment/pa-in.js +133 -0
- package/locales/moment/pl.js +151 -0
- package/locales/moment/pt-br.js +69 -0
- package/locales/moment/pt.js +74 -0
- package/locales/moment/ro.js +87 -0
- package/locales/moment/ru.js +224 -0
- package/locales/moment/sd.js +92 -0
- package/locales/moment/se.js +68 -0
- package/locales/moment/si.js +80 -0
- package/locales/moment/sk.js +156 -0
- package/locales/moment/sl.js +182 -0
- package/locales/moment/sq.js +76 -0
- package/locales/moment/sr-cyrl.js +138 -0
- package/locales/moment/sr.js +140 -0
- package/locales/moment/ss.js +95 -0
- package/locales/moment/sv.js +79 -0
- package/locales/moment/sw.js +66 -0
- package/locales/moment/ta.js +142 -0
- package/locales/moment/te.js +99 -0
- package/locales/moment/tet.js +79 -0
- package/locales/moment/tg.js +128 -0
- package/locales/moment/th.js +76 -0
- package/locales/moment/tk.js +102 -0
- package/locales/moment/tl-ph.js +68 -0
- package/locales/moment/tlh.js +135 -0
- package/locales/moment/tr.js +117 -0
- package/locales/moment/tzl.js +100 -0
- package/locales/moment/tzm-latn.js +65 -0
- package/locales/moment/tzm.js +65 -0
- package/locales/moment/ug-cn.js +122 -0
- package/locales/moment/uk.js +178 -0
- package/locales/moment/ur.js +93 -0
- package/locales/moment/uz-latn.js +65 -0
- package/locales/moment/uz.js +62 -0
- package/locales/moment/vi.js +91 -0
- package/locales/moment/x-pseudo.js +84 -0
- package/locales/moment/yo.js +64 -0
- package/locales/moment/zh-cn.js +131 -0
- package/locales/moment/zh-hk.js +112 -0
- package/locales/moment/zh-mo.js +111 -0
- package/locales/moment/zh-tw.js +110 -0
- package/locales/moment-timezone/moment-timezone-with-data.js +1582 -0
- package/npm-shrinkwrap.json +17 -0
- package/oAuth/.npmignore +2 -0
- package/oAuth/bundles/index.umd.js +495 -0
- package/oAuth/esm2022/index.mjs +5 -0
- package/oAuth/esm2022/oAuth.service.mjs +51 -0
- package/oAuth/esm2022/oAuth.utils.mjs +423 -0
- package/oAuth/esm2022/public_api.mjs +3 -0
- package/oAuth/fesm2022/index.mjs +478 -0
- package/oAuth/fesm2022/index.mjs.map +1 -0
- package/oAuth/index.d.ts +5 -0
- package/oAuth/oAuth.service.d.ts +19 -0
- package/oAuth/oAuth.utils.d.ts +20 -0
- package/oAuth/package.json +25 -0
- package/oAuth/public_api.d.ts +2 -0
- package/package-lock.json +17 -0
- package/package.json +16 -0
- package/runtime/base/.npmignore +2 -0
- package/runtime/base/bundles/index.umd.js +6031 -0
- package/runtime/base/components/app-component/app.component.d.ts +46 -0
- package/runtime/base/components/app-spinner.component.d.ts +10 -0
- package/runtime/base/components/base-custom-widget.component.d.ts +75 -0
- package/runtime/base/components/base-layout.component.d.ts +30 -0
- package/runtime/base/components/base-page.component.d.ts +83 -0
- package/runtime/base/components/base-partial.component.d.ts +65 -0
- package/runtime/base/components/base-prefab.component.d.ts +61 -0
- package/runtime/base/components/base-spa-page.component.d.ts +85 -0
- package/runtime/base/components/custom-toaster.component.d.ts +19 -0
- package/runtime/base/components/empty-component/empty-page.component.d.ts +18 -0
- package/runtime/base/components/prefab-preview.component.d.ts +23 -0
- package/runtime/base/directives/accessroles.directive.d.ts +40 -0
- package/runtime/base/directives/prefab.directive.d.ts +17 -0
- package/runtime/base/esm2022/components/app-component/app.component.mjs +201 -0
- package/runtime/base/esm2022/components/app-spinner.component.mjs +54 -0
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +339 -0
- package/runtime/base/esm2022/components/base-layout.component.mjs +76 -0
- package/runtime/base/esm2022/components/base-page.component.mjs +378 -0
- package/runtime/base/esm2022/components/base-partial.component.mjs +221 -0
- package/runtime/base/esm2022/components/base-prefab.component.mjs +253 -0
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +353 -0
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +87 -0
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +66 -0
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +123 -0
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +118 -0
- package/runtime/base/esm2022/directives/prefab.directive.mjs +50 -0
- package/runtime/base/esm2022/guards/auth.guard.mjs +43 -0
- package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +44 -0
- package/runtime/base/esm2022/guards/page-not-found.guard.mjs +22 -0
- package/runtime/base/esm2022/guards/role.guard.mjs +47 -0
- package/runtime/base/esm2022/index.mjs +5 -0
- package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +363 -0
- package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +85 -0
- package/runtime/base/esm2022/public_api.mjs +49 -0
- package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +48 -0
- package/runtime/base/esm2022/resolves/app-js.resolve.mjs +39 -0
- package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +31 -0
- package/runtime/base/esm2022/resolves/i18n.resolve.mjs +18 -0
- package/runtime/base/esm2022/resolves/metadata.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +26 -0
- package/runtime/base/esm2022/runtime-base.module.mjs +942 -0
- package/runtime/base/esm2022/services/app-defaults.service.mjs +22 -0
- package/runtime/base/esm2022/services/app.manager.service.mjs +522 -0
- package/runtime/base/esm2022/services/app.service.mjs +232 -0
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +86 -0
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +83 -0
- package/runtime/base/esm2022/services/i18n.service.mjs +305 -0
- package/runtime/base/esm2022/services/navigation.service.mjs +307 -0
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +127 -0
- package/runtime/base/esm2022/services/pipe.service.mjs +33 -0
- package/runtime/base/esm2022/services/prefab-manager.service.mjs +95 -0
- package/runtime/base/esm2022/services/spinner.service.mjs +144 -0
- package/runtime/base/esm2022/services/toaster.service.mjs +90 -0
- package/runtime/base/esm2022/types/types.mjs +22 -0
- package/runtime/base/esm2022/util/fragment-monitor.mjs +59 -0
- package/runtime/base/esm2022/util/utils.mjs +24 -0
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +176 -0
- package/runtime/base/fesm2022/index.mjs +6068 -0
- package/runtime/base/fesm2022/index.mjs.map +1 -0
- package/runtime/base/guards/auth.guard.d.ts +14 -0
- package/runtime/base/guards/can-deactivate-page.guard.d.ts +16 -0
- package/runtime/base/guards/page-not-found.guard.d.ts +12 -0
- package/runtime/base/guards/role.guard.d.ts +17 -0
- package/runtime/base/index.d.ts +5 -0
- package/runtime/base/overrides/wm_dom_renderer.d.ts +33 -0
- package/runtime/base/overrides/wm_shared_styles_host.d.ts +23 -0
- package/runtime/base/package.json +25 -0
- package/runtime/base/public_api.d.ts +48 -0
- package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
- package/runtime/base/resolves/app-extension.resolve.d.ts +14 -0
- package/runtime/base/resolves/app-js.resolve.d.ts +15 -0
- package/runtime/base/resolves/app-variables.resolve.d.ts +11 -0
- package/runtime/base/resolves/i18n.resolve.d.ts +9 -0
- package/runtime/base/resolves/metadata.resolve.d.ts +9 -0
- package/runtime/base/resolves/security-config.resolve.d.ts +10 -0
- package/runtime/base/runtime-base.module.d.ts +171 -0
- package/runtime/base/services/app-defaults.service.d.ts +12 -0
- package/runtime/base/services/app.manager.service.d.ts +142 -0
- package/runtime/base/services/app.service.d.ts +70 -0
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +26 -0
- package/runtime/base/services/http-interceptor.services.d.ts +17 -0
- package/runtime/base/services/i18n.service.d.ts +58 -0
- package/runtime/base/services/navigation.service.d.ts +45 -0
- package/runtime/base/services/pipe-provider.service.d.ts +31 -0
- package/runtime/base/services/pipe.service.d.ts +12 -0
- package/runtime/base/services/prefab-manager.service.d.ts +25 -0
- package/runtime/base/services/spinner.service.d.ts +49 -0
- package/runtime/base/services/toaster.service.d.ts +23 -0
- package/runtime/base/types/types.d.ts +25 -0
- package/runtime/base/util/fragment-monitor.d.ts +22 -0
- package/runtime/base/util/utils.d.ts +6 -0
- package/runtime/base/util/wm-route-reuse-strategy.d.ts +29 -0
- package/runtime/dynamic/.npmignore +2 -0
- package/runtime/dynamic/app/app.config.d.ts +5 -0
- package/runtime/dynamic/app/app.module.d.ts +37 -0
- package/runtime/dynamic/app/app.routes.d.ts +2 -0
- package/runtime/dynamic/app/components/page-wrapper.component.d.ts +37 -0
- package/runtime/dynamic/app/services/app-extension.service.d.ts +7 -0
- package/runtime/dynamic/app/services/app-js-provider.service.d.ts +10 -0
- package/runtime/dynamic/app/services/app-resource-manager.service.d.ts +10 -0
- package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +12 -0
- package/runtime/dynamic/app/services/component-ref-provider.service.d.ts +17 -0
- package/runtime/dynamic/app/services/customwidget-config-provider.service.d.ts +8 -0
- package/runtime/dynamic/app/services/prefab-config-provider.service.d.ts +10 -0
- package/runtime/dynamic/bundles/index.umd.js +887 -0
- package/runtime/dynamic/esm2022/app/app.config.mjs +141 -0
- package/runtime/dynamic/esm2022/app/app.module.mjs +314 -0
- package/runtime/dynamic/esm2022/app/app.routes.mjs +21 -0
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +106 -0
- package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +24 -0
- package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +25 -0
- package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +31 -0
- package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +27 -0
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +266 -0
- package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +22 -0
- package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +29 -0
- package/runtime/dynamic/esm2022/index.mjs +5 -0
- package/runtime/dynamic/esm2022/main.mjs +42 -0
- package/runtime/dynamic/esm2022/public_api.mjs +10 -0
- package/runtime/dynamic/fesm2022/index.mjs +950 -0
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -0
- package/runtime/dynamic/index.d.ts +5 -0
- package/runtime/dynamic/main.d.ts +2 -0
- package/runtime/dynamic/package.json +25 -0
- package/runtime/dynamic/public_api.d.ts +9 -0
- package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -0
- package/scripts/d3/d3.min.js +2 -0
- package/scripts/datatable/datatable.js +3769 -0
- package/scripts/iscroll/build/iscroll.js +2091 -0
- package/scripts/jquery-ui/ui/widgets/droppable.js +503 -0
- package/scripts/jquery-ui/ui/widgets/resizable.js +1275 -0
- package/scripts/jquery-ui/ui/widgets/sortable.js +1608 -0
- package/scripts/jquery.ui.touch-punch/jquery.ui.touch-punch.min.js +11 -0
- package/scripts/summernote/dist/summernote-lite.min.js +2 -0
- package/scripts/swipey/swipey.jquery.plugin.js +769 -0
- package/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
- package/security/.npmignore +2 -0
- package/security/bundles/index.umd.js +446 -0
- package/security/esm2022/index.mjs +5 -0
- package/security/esm2022/public_api.mjs +2 -0
- package/security/esm2022/security.service.mjs +439 -0
- package/security/fesm2022/index.mjs +444 -0
- package/security/fesm2022/index.mjs.map +1 -0
- package/security/index.d.ts +5 -0
- package/security/package.json +25 -0
- package/security/public_api.d.ts +1 -0
- package/security/security.service.d.ts +127 -0
- package/swipey/.npmignore +2 -0
- package/swipey/bundles/index.umd.js +54 -0
- package/swipey/esm2022/index.mjs +5 -0
- package/swipey/esm2022/public_api.mjs +2 -0
- package/swipey/esm2022/swipe.animation.mjs +45 -0
- package/swipey/fesm2022/index.mjs +51 -0
- package/swipey/fesm2022/index.mjs.map +1 -0
- package/swipey/index.d.ts +5 -0
- package/swipey/package.json +25 -0
- package/swipey/public_api.d.ts +1 -0
- package/swipey/swipe.animation.d.ts +19 -0
- package/transpiler/.npmignore +2 -0
- package/transpiler/build.d.ts +35 -0
- package/transpiler/bundles/index.umd.js +804 -0
- package/transpiler/esm2022/build.mjs +475 -0
- package/transpiler/esm2022/imports.mjs +318 -0
- package/transpiler/esm2022/index.mjs +5 -0
- package/transpiler/esm2022/public_api.mjs +3 -0
- package/transpiler/fesm2022/index.mjs +799 -0
- package/transpiler/fesm2022/index.mjs.map +1 -0
- package/transpiler/imports.d.ts +2 -0
- package/transpiler/index.d.ts +5 -0
- package/transpiler/package.json +26 -0
- package/transpiler/public_api.d.ts +2 -0
- package/variables/.npmignore +2 -0
- package/variables/advanced-options.d.ts +4 -0
- package/variables/bundles/index.umd.js +3174 -0
- package/variables/constants/variables.constants.d.ts +315 -0
- package/variables/esm2022/advanced-options.mjs +2 -0
- package/variables/esm2022/constants/variables.constants.mjs +333 -0
- package/variables/esm2022/factory/variable-manager.factory.mjs +24 -0
- package/variables/esm2022/factory/variable.factory.mjs +46 -0
- package/variables/esm2022/index.mjs +5 -0
- package/variables/esm2022/manager/action/base-action.manager.mjs +14 -0
- package/variables/esm2022/manager/action/login-action.manager.mjs +180 -0
- package/variables/esm2022/manager/action/logout-action.manager.mjs +77 -0
- package/variables/esm2022/manager/action/navigation-action.manager.mjs +8 -0
- package/variables/esm2022/manager/action/notification-action.manager.mjs +152 -0
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +81 -0
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +289 -0
- package/variables/esm2022/model/action/login-action.mjs +25 -0
- package/variables/esm2022/model/action/logout-action.mjs +22 -0
- package/variables/esm2022/model/action/navigation-action.mjs +26 -0
- package/variables/esm2022/model/action/notification-action.mjs +91 -0
- package/variables/esm2022/model/variable/web-socket-variable.mjs +34 -0
- package/variables/esm2022/public_api.mjs +6 -0
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +60 -0
- package/variables/esm2022/service/variables.service.mjs +199 -0
- package/variables/esm2022/util/action/navigation-action.utils.mjs +52 -0
- package/variables/esm2022/util/oAuth.utils.mjs +11 -0
- package/variables/esm2022/util/variable/pagination.utils.mjs +402 -0
- package/variables/esm2022/util/variable/service-variable.utils.mjs +376 -0
- package/variables/esm2022/util/variable/variables.utils.mjs +809 -0
- package/variables/factory/variable-manager.factory.d.ts +3 -0
- package/variables/factory/variable.factory.d.ts +3 -0
- package/variables/fesm2022/index.mjs +3236 -0
- package/variables/fesm2022/index.mjs.map +1 -0
- package/variables/index.d.ts +5 -0
- package/variables/manager/action/base-action.manager.d.ts +4 -0
- package/variables/manager/action/login-action.manager.d.ts +7 -0
- package/variables/manager/action/logout-action.manager.d.ts +4 -0
- package/variables/manager/action/navigation-action.manager.d.ts +4 -0
- package/variables/manager/action/notification-action.manager.d.ts +23 -0
- package/variables/manager/variable/base-variable.manager.d.ts +24 -0
- package/variables/manager/variable/web-socket-variable.manager.d.ts +124 -0
- package/variables/model/action/login-action.d.ts +11 -0
- package/variables/model/action/logout-action.d.ts +10 -0
- package/variables/model/action/navigation-action.d.ts +9 -0
- package/variables/model/action/notification-action.d.ts +25 -0
- package/variables/model/variable/web-socket-variable.d.ts +11 -0
- package/variables/package.json +25 -0
- package/variables/public_api.d.ts +5 -0
- package/variables/service/metadata-service/metadata.service.d.ts +16 -0
- package/variables/service/variables.service.d.ts +57 -0
- package/variables/util/action/navigation-action.utils.d.ts +6 -0
- package/variables/util/oAuth.utils.d.ts +3 -0
- package/variables/util/variable/pagination.utils.d.ts +82 -0
- package/variables/util/variable/service-variable.utils.d.ts +16 -0
- package/variables/util/variable/variables.utils.d.ts +80 -0
|
@@ -0,0 +1,817 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { Component, EventEmitter, Inject, Injector, Optional, Output, SkipSelf, ViewChild } from '@angular/core';
|
|
4
|
+
import { $appDigest, $watch, adjustVerticalPosition, AppConstants, DataSource, debounce, isDefined, switchClass, triggerFn } from '@wm/core';
|
|
5
|
+
import { DEBOUNCE_TIMES, getOrderByExpr, provideAsWidgetRef, StylableComponent, styler, unsupportedStatePersistenceTypes, WidgetRef } from '@wm/components/base';
|
|
6
|
+
import { registerProps } from './pagination.props';
|
|
7
|
+
import { forEach, get, isArray, isEmpty, isNull, isString, range } from "lodash-es";
|
|
8
|
+
import { PaginationModule } from 'ngx-bootstrap/pagination';
|
|
9
|
+
import { BsDropdownDirective, BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "@angular/forms";
|
|
13
|
+
import * as i3 from "ngx-bootstrap/pagination";
|
|
14
|
+
import * as i4 from "ngx-bootstrap/dropdown";
|
|
15
|
+
const DEFAULT_CLS = 'app-datanavigator clearfix';
|
|
16
|
+
const WIDGET_CONFIG = { widgetType: 'wm-pagination', hostClass: DEFAULT_CLS };
|
|
17
|
+
const sizeClasses = {
|
|
18
|
+
'Pager': {
|
|
19
|
+
'small': 'pager-sm',
|
|
20
|
+
'large': 'pager-lg'
|
|
21
|
+
},
|
|
22
|
+
'Basic': {
|
|
23
|
+
'small': 'pagination-sm',
|
|
24
|
+
'large': 'pagination-lg'
|
|
25
|
+
},
|
|
26
|
+
'Classic': {
|
|
27
|
+
'small': 'pagination-sm',
|
|
28
|
+
'large': 'pagination-lg'
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export class PaginationComponent extends StylableComponent {
|
|
32
|
+
static { this.initializeProps = registerProps(); }
|
|
33
|
+
_setAriaForBasicNavigation() {
|
|
34
|
+
forEach(this.nativeElement.getElementsByTagName('a'), (item) => {
|
|
35
|
+
item.setAttribute('href', 'javascript:void(0);');
|
|
36
|
+
const childNode = item.querySelector('span');
|
|
37
|
+
if (childNode?.dataset.isacitvepage === "true") {
|
|
38
|
+
item.setAttribute('aria-current', 'true');
|
|
39
|
+
}
|
|
40
|
+
if (childNode?.dataset.isdisabled === "true") {
|
|
41
|
+
item.setAttribute('aria-disabled', 'true');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
item.removeAttribute('aria-disabled');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
constructor(inj, parent, explicitContext) {
|
|
49
|
+
super(inj, WIDGET_CONFIG, explicitContext);
|
|
50
|
+
this.parent = parent;
|
|
51
|
+
this.resultEmitter = new EventEmitter();
|
|
52
|
+
this.maxResultsEmitter = new EventEmitter();
|
|
53
|
+
this.defaultPageSizeOptions = [];
|
|
54
|
+
this.focusedIndex = 0;
|
|
55
|
+
this.dn = {
|
|
56
|
+
currentPage: 1
|
|
57
|
+
};
|
|
58
|
+
this.pageCount = 0;
|
|
59
|
+
this.isDisableNext = true;
|
|
60
|
+
this.isDisablePrevious = true;
|
|
61
|
+
this.isDisableFirst = true;
|
|
62
|
+
this.isDisableLast = true;
|
|
63
|
+
this._debouncedApplyDataset = debounce(() => this.widget.dataset = this.dataset, DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);
|
|
64
|
+
this._debouncedPageChanged = debounce(event => {
|
|
65
|
+
const currentPage = event && event.page;
|
|
66
|
+
const maxResults = event && (event.pagesize || event.itemsPerPage) || this.maxResults;
|
|
67
|
+
// Do not call goToPage if page has not changed
|
|
68
|
+
if (currentPage !== this.dn.currentPage || this.maxResults !== maxResults) {
|
|
69
|
+
const inst = this.parent || this;
|
|
70
|
+
this.dn.currentPage = currentPage;
|
|
71
|
+
this.maxResults = maxResults;
|
|
72
|
+
this.maxResultsEmitter.emit(this.maxResults);
|
|
73
|
+
inst.invokeEventCallback('paginationchange', { $event: undefined, $index: this.dn.currentPage });
|
|
74
|
+
this.goToPage();
|
|
75
|
+
if (this.navigation === 'Basic') {
|
|
76
|
+
this._setAriaForBasicNavigation();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);
|
|
80
|
+
styler(this.nativeElement, this);
|
|
81
|
+
this._initTimeoutId = setTimeout(() => {
|
|
82
|
+
// Guard against component destruction or parent being null
|
|
83
|
+
if (this.isDestroyed || !this.parent) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this.allowpagesizechange = this.parent.allowpagesizechange;
|
|
87
|
+
if (this.allowpagesizechange)
|
|
88
|
+
this.defaultPageSizeOptions = this.parent?.pagesizeoptions ? this.parent.pagesizeoptions?.split(',').map(Number).sort((a, b) => a - b) : [];
|
|
89
|
+
}, 0);
|
|
90
|
+
}
|
|
91
|
+
setResult(result) {
|
|
92
|
+
// TODO: Emit event only if result is changed
|
|
93
|
+
this.result = result;
|
|
94
|
+
this.resultEmitter.emit(this.result);
|
|
95
|
+
}
|
|
96
|
+
// Update navigationClass based on navigation and navigationSize props
|
|
97
|
+
updateNavSize() {
|
|
98
|
+
const sizeCls = sizeClasses[this.navcontrols];
|
|
99
|
+
if (sizeCls && this.navigationsize) {
|
|
100
|
+
this.navigationClass = sizeCls[this.navigationsize];
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.navigationClass = '';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Function to reset the paging values to default.
|
|
107
|
+
resetPageNavigation() {
|
|
108
|
+
this.pageCount = 0;
|
|
109
|
+
this.dn.currentPage = 1;
|
|
110
|
+
this.dataSize = 0;
|
|
111
|
+
}
|
|
112
|
+
/*Function to calculate the paging values.*/
|
|
113
|
+
calculatePagingValues() {
|
|
114
|
+
this.pageCount = (this.dataSize > this.maxResults) ? (Math.ceil(this.dataSize / this.maxResults)) : (this.dataSize < 0 ? 0 : 1);
|
|
115
|
+
this.dn.currentPage = this.dn.currentPage || 1;
|
|
116
|
+
}
|
|
117
|
+
/*Function to set default values to the paging parameters*/
|
|
118
|
+
setDefaultPagingValues(dataSize, maxResults, currentPage) {
|
|
119
|
+
/*If neither 'dataSize' nor 'maxResults' is set, then set default values to the paging parameters.*/
|
|
120
|
+
if (!dataSize && !maxResults) {
|
|
121
|
+
this.pageCount = 1;
|
|
122
|
+
this.dn.currentPage = 1;
|
|
123
|
+
this.maxResults = dataSize;
|
|
124
|
+
this.dataSize = dataSize;
|
|
125
|
+
}
|
|
126
|
+
else { /*Else, set the specified values and recalculate paging parameters.*/
|
|
127
|
+
this.maxResults = maxResults || this.maxResults;
|
|
128
|
+
this.dataSize = isDefined(dataSize) ? dataSize : this.dataSize;
|
|
129
|
+
this.dn.currentPage = currentPage || this.dn.currentPage;
|
|
130
|
+
this.calculatePagingValues();
|
|
131
|
+
}
|
|
132
|
+
this.maxResultsEmitter.emit(this.maxResults);
|
|
133
|
+
}
|
|
134
|
+
/*Function to check the dataSize and manipulate the navigator accordingly.*/
|
|
135
|
+
checkDataSize(dataSize, numberOfElements, size) {
|
|
136
|
+
/*If the dataSize is -1 or Integer.MAX_VALUE( which is 2147483647), then the total number of records is not known.
|
|
137
|
+
* Hence,
|
|
138
|
+
* 1. Hide the 'Total Record Count'.
|
|
139
|
+
* 2. Disable the 'GoToLastPage' link as the page number of the last page is not known.*/
|
|
140
|
+
if (dataSize === -1 || dataSize === AppConstants.INT_MAX_VALUE) {
|
|
141
|
+
this.prevshowrecordcount = this.showrecordcount;
|
|
142
|
+
this.isDisableLast = true;
|
|
143
|
+
this.isDisableCount = true;
|
|
144
|
+
this.showrecordcount = false;
|
|
145
|
+
// If number of records in current page is less than the max records size, this is the last page. So disable next button.
|
|
146
|
+
if (numberOfElements < size) {
|
|
147
|
+
this.isDisableNext = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.isDisableCount = false;
|
|
152
|
+
this.showrecordcount = this.prevshowrecordcount || this.showrecordcount;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/*Function to disable navigation based on the current and total pages.*/
|
|
156
|
+
disableNavigation() {
|
|
157
|
+
const isCurrentPageFirst = (this.dn.currentPage === 1), isCurrentPageLast = (this.dn.currentPage === this.pageCount);
|
|
158
|
+
if (!this.pagination?.next) {
|
|
159
|
+
this.isDisableFirst = this.isDisablePrevious = isCurrentPageFirst;
|
|
160
|
+
this.isDisableNext = this.isDisableLast = isCurrentPageLast;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// WMS-18867: In case of server side pagination, for pager type pagination depend on prev and next flags which are set by developer
|
|
164
|
+
this.isDisableFirst = this.isDisablePrevious = !this.pagination.prev;
|
|
165
|
+
this.isDisableNext = this.isDisableLast = !this.pagination.next;
|
|
166
|
+
}
|
|
167
|
+
this.isDisableCurrent = isCurrentPageFirst && isCurrentPageLast;
|
|
168
|
+
// In case of client side pagination, when load more reaches last page hide the on-demand grid ele
|
|
169
|
+
if (this.dataset && this.dataset.length && this.isDisableNext && this.parent.onDemandLoad && this.parent.widgetType === 'wm-table') {
|
|
170
|
+
this.parent.callDataGridMethod('hideLoadingIndicator', this.isDisableNext, this.parent.infScroll);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/*Function to check if the variable bound to the data-navigator has paging.*/
|
|
174
|
+
isDataSourceHasPaging() {
|
|
175
|
+
return this.datasource && this.datasource.execute(DataSource.Operation.IS_PAGEABLE);
|
|
176
|
+
}
|
|
177
|
+
// this function returns an object which gives summary of the current page data (ex: In UI it is shown as 1 to 10 out of 50 records)
|
|
178
|
+
getPageDetails(startIndex, endIndex, totalRecords) {
|
|
179
|
+
this.rowSummary = (isDefined(startIndex) && isDefined(endIndex) && isDefined(totalRecords)) ? {
|
|
180
|
+
startIndex: startIndex,
|
|
181
|
+
endIndex: endIndex,
|
|
182
|
+
totalRecords: totalRecords
|
|
183
|
+
} : {};
|
|
184
|
+
}
|
|
185
|
+
// Set the result for client side pagination
|
|
186
|
+
setNonPageableData(newVal) {
|
|
187
|
+
let dataSize, maxResults, currentPage, startIndex;
|
|
188
|
+
dataSize = isArray(newVal) ? newVal.length : (isEmpty(newVal) ? 0 : 1);
|
|
189
|
+
maxResults = (this.options && this.options.maxResults) || dataSize;
|
|
190
|
+
if (this.allowpagesizechange) { // when default page size is not given then use maxResults instead of options.maxResults
|
|
191
|
+
maxResults = this.maxResults;
|
|
192
|
+
}
|
|
193
|
+
// For static variable, keep the current page. For other variables without pagination reset the page to 1
|
|
194
|
+
// Fix for [WMS-23263]: gridOptions.isNextPageData flag is false when dataset is changed from script, so setting current page to 1
|
|
195
|
+
if (this.datasource && (this.datasource.execute(DataSource.Operation.IS_API_AWARE) || (this.parent.widgetType === 'wm-table' && (this.parent.gridOptions.isNavTypeScrollOrOndemand() && (get(this.parent, 'gridOptions.lastActionPerformed') === this.parent.gridOptions.ACTIONS.DATASET_UPDATE || !get(this.parent, 'gridOptions.isNextPageData')))))) {
|
|
196
|
+
currentPage = 1;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
currentPage = this.dn.currentPage || 1;
|
|
200
|
+
}
|
|
201
|
+
this.setDefaultPagingValues(dataSize, maxResults, currentPage);
|
|
202
|
+
this.disableNavigation();
|
|
203
|
+
startIndex = (this.dn.currentPage - 1) * this.maxResults;
|
|
204
|
+
this.getPageDetails(startIndex + 1, Math.min(startIndex + this.maxResults, newVal?.length), newVal?.length);
|
|
205
|
+
this.setResult(isArray(newVal) ? newVal.slice(startIndex, startIndex + this.maxResults) : newVal);
|
|
206
|
+
}
|
|
207
|
+
/*Function to set the values needed for pagination*/
|
|
208
|
+
setPagingValues(newVal) {
|
|
209
|
+
let dataSize, maxResults, currentPage, startIndex, dataSource;
|
|
210
|
+
let variableOptions = {};
|
|
211
|
+
// Store the data in __fullData. This is used for client side searching witvah out modifying the actual dataset.
|
|
212
|
+
this.__fullData = newVal;
|
|
213
|
+
/*Check for sanity*/
|
|
214
|
+
if (this.binddataset) {
|
|
215
|
+
dataSource = this.datasource || {};
|
|
216
|
+
variableOptions = dataSource._options || {};
|
|
217
|
+
/*Check for number of elements in the data set*/
|
|
218
|
+
if (newVal) {
|
|
219
|
+
if (this.isDataSourceHasPaging()) {
|
|
220
|
+
this.pagination = this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS) || {};
|
|
221
|
+
// If "filterFields" and "sortOptions" have been set, then set them so that the filters can be retained while fetching data upon page navigation.
|
|
222
|
+
this.filterFields = variableOptions.filterFields || {};
|
|
223
|
+
this.logicalOp = variableOptions.logicalOp || '';
|
|
224
|
+
this.sortOptions = variableOptions.orderBy ||
|
|
225
|
+
(isArray(this.pagination.sort) ? getOrderByExpr(this.pagination.sort) : '');
|
|
226
|
+
dataSize = this.pagination.totalElements;
|
|
227
|
+
maxResults = this.pagination.size = Number(this.pagination.size) ? this.pagination.size : get(this.datasource.dataSet, this.pagination.size);
|
|
228
|
+
this.pagination.numberOfElements = Number(this.pagination.numberOfElements) ? this.pagination.numberOfElements : get(this.datasource.dataSet, this.pagination.numberOfElements);
|
|
229
|
+
if (this.pagination.numberOfElements > 0) {
|
|
230
|
+
if (isDefined(this.pagination.number)) { // number is page number received from backend
|
|
231
|
+
this.dn.currentPage = this.pagination.number + 1;
|
|
232
|
+
}
|
|
233
|
+
currentPage = this.dn.currentPage || 1;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
currentPage = 1;
|
|
237
|
+
}
|
|
238
|
+
/* Sending pageCount undefined to calculate it again for query.*/
|
|
239
|
+
this.setDefaultPagingValues(dataSize, maxResults, currentPage);
|
|
240
|
+
this.disableNavigation();
|
|
241
|
+
this.checkDataSize(dataSize, this.pagination.numberOfElements, this.pagination.size);
|
|
242
|
+
startIndex = (currentPage - 1) * this.maxResults;
|
|
243
|
+
this.getPageDetails(startIndex + 1, startIndex + Number(this.pagination.numberOfElements), dataSize);
|
|
244
|
+
this.setResult(newVal);
|
|
245
|
+
}
|
|
246
|
+
else if (!isString(newVal)) {
|
|
247
|
+
this.setNonPageableData(newVal);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
this.setResult(newVal);
|
|
252
|
+
this.resetPageNavigation();
|
|
253
|
+
}
|
|
254
|
+
if (this.navigation === 'Basic') {
|
|
255
|
+
this._setAriaForBasicNavigation();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
if (newVal && !isString(newVal)) {
|
|
260
|
+
this.setNonPageableData(newVal);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/*Function to check if the current page is the first page*/
|
|
265
|
+
isFirstPage() {
|
|
266
|
+
return (this.dn.currentPage === 1 || !this.dn.currentPage);
|
|
267
|
+
}
|
|
268
|
+
/*Function to check if the current page is the last page*/
|
|
269
|
+
isLastPage() {
|
|
270
|
+
return (this.dn.currentPage === this.pageCount);
|
|
271
|
+
}
|
|
272
|
+
/*Function to navigate to the last page*/
|
|
273
|
+
goToLastPage(isRefresh, event, callback) {
|
|
274
|
+
if (!this.isLastPage()) {
|
|
275
|
+
this.dn.currentPage = this.pageCount;
|
|
276
|
+
this.goToPage(event, callback);
|
|
277
|
+
}
|
|
278
|
+
else if (isRefresh) {
|
|
279
|
+
this.goToPage(event, callback);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/*Function to navigate to the first page*/
|
|
283
|
+
goToFirstPage(isRefresh, event, callback) {
|
|
284
|
+
if (!this.isFirstPage()) {
|
|
285
|
+
this.dn.currentPage = 1;
|
|
286
|
+
this.goToPage(event, callback);
|
|
287
|
+
}
|
|
288
|
+
else if (isRefresh) {
|
|
289
|
+
this.goToPage(event, callback);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/*Function to navigate to the current page*/
|
|
293
|
+
goToPage(event, callback) {
|
|
294
|
+
this.firstRow = (this.dn.currentPage - 1) * this.maxResults;
|
|
295
|
+
const mode = this.parent.statePersistence.computeMode(this.statehandler), allowpagesizechange = this.parent.allowpagesizechange;
|
|
296
|
+
if (mode && mode.toLowerCase() !== 'none' && (this.parent.widgetType === 'wm-table' || this.parent.widgetType === 'wm-list')) {
|
|
297
|
+
this.parent._selectedItemsExist = true;
|
|
298
|
+
if (this.isFirstPage() && !allowpagesizechange) {
|
|
299
|
+
this.parent.statePersistence.removeWidgetState(this.parent, 'pagination');
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
if (unsupportedStatePersistenceTypes.indexOf(this.parent.navigation) < 0) {
|
|
303
|
+
const state = { pagination: this.dn.currentPage };
|
|
304
|
+
if (allowpagesizechange) {
|
|
305
|
+
state.pagesize = this.maxResults;
|
|
306
|
+
}
|
|
307
|
+
this.parent.statePersistence.setWidgetState(this.parent, state);
|
|
308
|
+
}
|
|
309
|
+
else if (this.parent.widgetType === 'wm-list' || this.parent.widgetType === 'wm-table') {
|
|
310
|
+
console.warn('Retain State handling on Widget ' + this.parent.name + ' is not supported for current pagination type.');
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
this.parent.currentpage = this.dn.currentPage;
|
|
314
|
+
this.parent.nativeElement?.setAttribute('currentpage', this.dn.currentPage);
|
|
315
|
+
}
|
|
316
|
+
// call getPageData after checking state config so that Static Variables can use it
|
|
317
|
+
this.getPageData(event, callback);
|
|
318
|
+
}
|
|
319
|
+
/*Function to be invoked after the data of the page has been fetched.*/
|
|
320
|
+
onPageDataReady(event, data, callback) {
|
|
321
|
+
this.disableNavigation();
|
|
322
|
+
this.invokeSetRecord(event, data);
|
|
323
|
+
triggerFn(callback);
|
|
324
|
+
}
|
|
325
|
+
/*Function to get data for the current page*/
|
|
326
|
+
getPageData(event, callback) {
|
|
327
|
+
let data, startIndex;
|
|
328
|
+
if (this.isDataSourceHasPaging()) {
|
|
329
|
+
/**
|
|
330
|
+
* In table component, in case of on demand and scroll pagination
|
|
331
|
+
* When there is a change in data item which is not in current page
|
|
332
|
+
* Fetch the items of the page where the change is made
|
|
333
|
+
* */
|
|
334
|
+
let pageIndex = this.dn.currentPage;
|
|
335
|
+
if (this.isEditNotInCurrentPage() && this.parent.gridOptions.lastActionPerformed !== 'delete') {
|
|
336
|
+
pageIndex = this.parent.actionRowPage;
|
|
337
|
+
}
|
|
338
|
+
this.datasource.execute(DataSource.Operation.LIST_RECORDS, {
|
|
339
|
+
'page': pageIndex,
|
|
340
|
+
'size': this.maxResults,
|
|
341
|
+
'filterFields': this.filterFields,
|
|
342
|
+
'orderBy': this.sortOptions,
|
|
343
|
+
'logicalOp': this.logicalOp,
|
|
344
|
+
'matchMode': 'anywhereignorecase'
|
|
345
|
+
}).then(response => {
|
|
346
|
+
this.onPageDataReady(event, response && response.data, callback);
|
|
347
|
+
startIndex = (this.dn.currentPage - 1) * this.maxResults;
|
|
348
|
+
this.getPageDetails(startIndex + 1, startIndex + Number(this.pagination?.numberOfElements), this.pagination?.totalElements);
|
|
349
|
+
$appDigest();
|
|
350
|
+
}, error => {
|
|
351
|
+
// If error is undefined, do not show any message as this may be discarded request
|
|
352
|
+
if (error) {
|
|
353
|
+
// TODO: Handle Error
|
|
354
|
+
// wmToaster.show('error', 'ERROR', 'Unable to get data of page -' + this.dn.currentPage + ':' + error);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
if (this.isEditNotInCurrentPage()) {
|
|
360
|
+
startIndex = (this.parent.actionRowPage - 1) * this.maxResults;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
startIndex = (this.dn.currentPage - 1) * this.maxResults;
|
|
364
|
+
}
|
|
365
|
+
data = isArray(this.__fullData) ? this.__fullData.slice(startIndex, startIndex + this.maxResults) : this.__fullData;
|
|
366
|
+
this.getPageDetails(startIndex + 1, Math.min(startIndex + this.maxResults, this.__fullData?.length), this.__fullData?.length);
|
|
367
|
+
this.setResult(data);
|
|
368
|
+
this.onPageDataReady(event, data, callback);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/*
|
|
372
|
+
Function to check if the edit action is performed on the previous page data of the table
|
|
373
|
+
*/
|
|
374
|
+
isEditNotInCurrentPage() {
|
|
375
|
+
const pageIndex = this.dn.currentPage;
|
|
376
|
+
return this.parent.widgetType === 'wm-table' && pageIndex === this.parent.currentPage &&
|
|
377
|
+
this.parent.actionRowPage && this.parent.actionRowPage < pageIndex;
|
|
378
|
+
}
|
|
379
|
+
invokeSetRecord(event, data) {
|
|
380
|
+
// Trigger the event handler if exists.
|
|
381
|
+
const pageInfo = {
|
|
382
|
+
currentPage: this.dn.currentPage,
|
|
383
|
+
size: this.maxResults,
|
|
384
|
+
totalElements: this.dataSize,
|
|
385
|
+
totalPages: this.pageCount
|
|
386
|
+
};
|
|
387
|
+
if (this.parent) {
|
|
388
|
+
this.parent.invokeEventCallback('setrecord', { $event: event, $data: data, $index: this.dn.currentPage, pageInfo, data });
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
this.invokeEventCallback('setrecord', { $event: event, $data: data, $index: this.dn.currentPage, pageInfo, data });
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/*Function to validate the page input.
|
|
395
|
+
In case of invalid input, navigate to the appropriate page; also return false.
|
|
396
|
+
In case of valid input, return true.*/
|
|
397
|
+
validateCurrentPage(event, callback) {
|
|
398
|
+
/*If the value entered is greater than the last page number or invalid value, then highlighting the field showing error.*/
|
|
399
|
+
if (event && (isNaN(this.dn.currentPage) || this.dn.currentPage <= 0 || (this.pageCount && (this.dn.currentPage > this.pageCount || isNull(this.dn.currentPage))))) {
|
|
400
|
+
if (this.dn.currentPage <= 0) {
|
|
401
|
+
this.dn.currentPage = 1;
|
|
402
|
+
this.goToPage(event);
|
|
403
|
+
}
|
|
404
|
+
else if (this.dn.currentPage > this.pageCount) {
|
|
405
|
+
this.dn.currentPage = this.pageCount;
|
|
406
|
+
this.goToPage(event);
|
|
407
|
+
}
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
onModelChange(event) {
|
|
413
|
+
if (!this.validateCurrentPage(event)) {
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
this.goToPage(event);
|
|
417
|
+
}
|
|
418
|
+
onKeyDown(event) {
|
|
419
|
+
const targetEle = $(event.target).closest('a');
|
|
420
|
+
if (event.code === 'KeyE') {
|
|
421
|
+
targetEle.addClass('ng-invalid');
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
targetEle.removeClass('ng-invalid');
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
pageChanged(event) {
|
|
428
|
+
this._debouncedPageChanged(event);
|
|
429
|
+
}
|
|
430
|
+
/*Function to navigate to the respective pages.*/
|
|
431
|
+
navigatePage(index, event, isRefresh, callback) {
|
|
432
|
+
// when navigated to next page turn on the isDataLoading flag to show the loading indicator
|
|
433
|
+
if (isDefined(this.parent.isDataLoading) && !this.isDisableNext) {
|
|
434
|
+
this.parent.isDataLoading = true;
|
|
435
|
+
// In case of infinite scroll calling the showLoadingIndicator method to update the loading message immediately when navigated to next page
|
|
436
|
+
if (this.parent.infScroll) {
|
|
437
|
+
this.parent.variableInflight = true;
|
|
438
|
+
this.parent.callDataGridMethod('showLoadingIndicator', this.parent.loadingdatamsg, true);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// reset the last action performed to "scroll" and isDatasetUpdated to false
|
|
442
|
+
if (this.parent.widgetType === 'wm-table' && this.parent.gridOptions.isNavTypeScrollOrOndemand()) {
|
|
443
|
+
this.parent.gridOptions.setLastActionPerformed(this.parent.gridOptions.ACTIONS.DEFAULT);
|
|
444
|
+
this.parent.gridOptions.setIsDatasetUpdated(false);
|
|
445
|
+
}
|
|
446
|
+
this.invokeEventCallback('paginationchange', { $event: undefined, $index: this.dn.currentPage });
|
|
447
|
+
// Convert the current page to a valid page number.
|
|
448
|
+
this.dn.currentPage = +this.dn.currentPage;
|
|
449
|
+
switch (index) {
|
|
450
|
+
case 'first':
|
|
451
|
+
if (this.pagination?.next && this.datasource?.pagination) {
|
|
452
|
+
this.datasource.pagination.isNext = false;
|
|
453
|
+
this.datasource.pagination.isPrev = false;
|
|
454
|
+
}
|
|
455
|
+
this.goToFirstPage(isRefresh, event, callback);
|
|
456
|
+
return;
|
|
457
|
+
case 'prev':
|
|
458
|
+
/*Return if already on the first page.*/
|
|
459
|
+
if (!this.pagination?.next && (this.isFirstPage() || !this.validateCurrentPage(event, callback))) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
else if (this.pagination?.next) { // WMS-18867: For server side pagination, skipping the regular flow and enabling isNext flag in pagination metadata
|
|
463
|
+
this.datasource.pagination.isNext = false;
|
|
464
|
+
this.datasource.pagination.isPrev = true;
|
|
465
|
+
}
|
|
466
|
+
/*Decrement the current page by 1.*/
|
|
467
|
+
this.dn.currentPage -= 1;
|
|
468
|
+
break;
|
|
469
|
+
case 'next':
|
|
470
|
+
/*Return if already on the last page.*/
|
|
471
|
+
if (!this.pagination?.next && (this.isLastPage() || !this.validateCurrentPage(event, callback))) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
else if (this.pagination?.next) { // WMS-18867: For server side pagination, skipping the regular flow and enabling isPrev flag in pagination metadata
|
|
475
|
+
this.datasource.pagination.isNext = true;
|
|
476
|
+
this.datasource.pagination.isPrev = false;
|
|
477
|
+
}
|
|
478
|
+
/*Increment the current page by 1.*/
|
|
479
|
+
this.dn.currentPage += 1;
|
|
480
|
+
break;
|
|
481
|
+
case 'last':
|
|
482
|
+
this.goToLastPage(isRefresh, event, callback);
|
|
483
|
+
return;
|
|
484
|
+
default:
|
|
485
|
+
break;
|
|
486
|
+
}
|
|
487
|
+
/*Navigate to the current page.*/
|
|
488
|
+
this.goToPage(event, callback);
|
|
489
|
+
}
|
|
490
|
+
setBindDataSet(binddataset, parent, dataSource, dataset, binddatasource, datasetBoundExpr, statehandler) {
|
|
491
|
+
const parts = binddataset.split('.');
|
|
492
|
+
let bindPagingOptions;
|
|
493
|
+
this.statehandler = statehandler;
|
|
494
|
+
if (parts[0] === 'Variables' || parts[0] === 'Widgets') {
|
|
495
|
+
bindPagingOptions = `${parts[0]}.${parts[1]}.pagination`;
|
|
496
|
+
}
|
|
497
|
+
if (!binddatasource && dataset && !datasetBoundExpr) {
|
|
498
|
+
this.dataset = dataset;
|
|
499
|
+
if (this._debouncedApplyDataset) {
|
|
500
|
+
this._debouncedApplyDataset();
|
|
501
|
+
}
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
this.binddataset = binddataset;
|
|
505
|
+
setTimeout(() => {
|
|
506
|
+
// watching for dataset changes even when dataset is bound to "item." (i.e. by checking for datasetBoundExpr)
|
|
507
|
+
// item context is passed as dataSource here
|
|
508
|
+
// [Todo-CSP]: check if same expr fn is generated by parent widget (list, table)
|
|
509
|
+
this.registerDestroyListener($watch(binddataset, parent, datasetBoundExpr ? dataSource : {}, nv => {
|
|
510
|
+
if (nv) {
|
|
511
|
+
this.dataset = nv;
|
|
512
|
+
if (this._debouncedApplyDataset) {
|
|
513
|
+
this._debouncedApplyDataset();
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
// WMS-19285: Setting dataset on proxy only to handle propertychange handler call for undefined cases
|
|
518
|
+
this.widget.dataset = nv;
|
|
519
|
+
}
|
|
520
|
+
}));
|
|
521
|
+
// Register a watch on paging options. Call dataset property change handler even if paging options changes to reflect pagination state
|
|
522
|
+
if (!bindPagingOptions) {
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
//[Todo-CSP]: either generate watch expr fn or register an event from the datasource itself
|
|
526
|
+
this.registerDestroyListener($watch(bindPagingOptions, parent, {}, () => {
|
|
527
|
+
if (this._debouncedApplyDataset) {
|
|
528
|
+
this._debouncedApplyDataset();
|
|
529
|
+
}
|
|
530
|
+
}));
|
|
531
|
+
});
|
|
532
|
+
// apply datasource only when dataset is not bound to "item.FIELD"
|
|
533
|
+
if (!datasetBoundExpr) {
|
|
534
|
+
this.datasource = dataSource;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
// Set the datasource of pagination from the parent widget
|
|
538
|
+
setDataSource(dataSource) {
|
|
539
|
+
this.datasource = dataSource;
|
|
540
|
+
}
|
|
541
|
+
onPropertyChange(key, nv, ov) {
|
|
542
|
+
let pageSize, prevPageSize;
|
|
543
|
+
if (key === 'dataset') {
|
|
544
|
+
let data;
|
|
545
|
+
if (this.parent && this.parent.onDataNavigatorDataSetChange) {
|
|
546
|
+
data = this.parent.onDataNavigatorDataSetChange(nv);
|
|
547
|
+
}
|
|
548
|
+
else {
|
|
549
|
+
data = nv;
|
|
550
|
+
}
|
|
551
|
+
// Set last action performed to "dataset_update" whenever dataset is changed in table component
|
|
552
|
+
if (this.parent.widgetType === 'wm-table') {
|
|
553
|
+
this.parent._triggeredByUser = false;
|
|
554
|
+
}
|
|
555
|
+
if (data?.length) { // calculate Pagesize options based on actual page size
|
|
556
|
+
if (this.isDataSourceHasPaging()) { // for Live variables
|
|
557
|
+
const currentPageSize = get(data, 'pagination.size') || get(this.datasource, 'pagination.size'), totalElements = get(data, 'pagination.totalElements') || get(this.datasource, 'pagination.totalElements'), widgetState = this.parent.statePersistence.getWidgetState(this.parent);
|
|
558
|
+
this.actualPageSize = widgetState?.actualpagesize || currentPageSize;
|
|
559
|
+
this.actualPageSize = Number(this.actualPageSize) ? this.actualPageSize : get(this.datasource.dataSet, this.actualPageSize);
|
|
560
|
+
if (this.defaultPageSizeOptions.length > 0) {
|
|
561
|
+
this.pageSizeOptions = [...this.defaultPageSizeOptions];
|
|
562
|
+
}
|
|
563
|
+
else {
|
|
564
|
+
this.pageSizeOptions = range(this.actualPageSize, Math.max(this.actualPageSize + 1, this.actualPageSize + totalElements), this.actualPageSize); // here data has only that page data and pagesize has totalNoof Elements
|
|
565
|
+
}
|
|
566
|
+
if (widgetState?.selectedItem && widgetState.actualpagesize !== widgetState.pagesize) {
|
|
567
|
+
if (!this.prevPageSize) {
|
|
568
|
+
this.prevPageSize = this.actualPageSize || data?.length;
|
|
569
|
+
}
|
|
570
|
+
const updatedItems = this.handleStateParamsforNewPageSize(widgetState.selectedItem, this.prevPageSize, data?.length);
|
|
571
|
+
if (updatedItems) {
|
|
572
|
+
this.parent.statePersistence.setWidgetState(this.parent, {
|
|
573
|
+
pagination: 1,
|
|
574
|
+
pagesize: this.maxResults,
|
|
575
|
+
actualpagesize: this.actualPageSize || this.maxResults,
|
|
576
|
+
selectedItem: updatedItems
|
|
577
|
+
});
|
|
578
|
+
this.prevPageSize = undefined;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
else {
|
|
583
|
+
pageSize = this.parent.getActualPageSize();
|
|
584
|
+
if (this.defaultPageSizeOptions.length > 0) {
|
|
585
|
+
this.pageSizeOptions = [...this.defaultPageSizeOptions];
|
|
586
|
+
}
|
|
587
|
+
else {
|
|
588
|
+
this.pageSizeOptions = range(pageSize, data.length + pageSize, pageSize);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
// When the dataset is not in current page, but in previous ones directly set the result without setting page values
|
|
593
|
+
if (this.isEditNotInCurrentPage()) {
|
|
594
|
+
this.setResult(data);
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
this.setPagingValues(data);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
else if (key === 'navigation') {
|
|
601
|
+
if (nv === 'Advanced') { // Support for older projects where navigation type was advanced instead of clasic
|
|
602
|
+
this.navigation = 'Classic';
|
|
603
|
+
}
|
|
604
|
+
this.updateNavSize();
|
|
605
|
+
this.navcontrols = nv;
|
|
606
|
+
}
|
|
607
|
+
else if (key === 'navigationsize') {
|
|
608
|
+
this.updateNavSize();
|
|
609
|
+
}
|
|
610
|
+
else if (key === 'navigationalign') {
|
|
611
|
+
switchClass(this.nativeElement, `text-${nv}`, `text-${ov}`);
|
|
612
|
+
}
|
|
613
|
+
else if (key === 'maxResults') {
|
|
614
|
+
this.setPagingValues(this.dataset);
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
super.onPropertyChange(key, nv, ov);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
// change the selectedItems page number and index in the stateparams when pagesize is changed
|
|
621
|
+
handleStateParamsforNewPageSize(selectedItem, oldPageSize, newPageSize) {
|
|
622
|
+
return selectedItem.map(({ page, index }) => {
|
|
623
|
+
const absoluteIndex = (page - 1) * oldPageSize + index;
|
|
624
|
+
const newPage = Math.floor(absoluteIndex / newPageSize) + 1; // back to 1-based
|
|
625
|
+
const newIndex = absoluteIndex % newPageSize;
|
|
626
|
+
return {
|
|
627
|
+
page: newPage,
|
|
628
|
+
index: newIndex
|
|
629
|
+
};
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
onDropdownKeydown(event, index) {
|
|
633
|
+
const $items = $('ul#dropdown-basic a.dropdown-item');
|
|
634
|
+
const maxIndex = this.pageSizeOptions.length - 1;
|
|
635
|
+
let selectedOption;
|
|
636
|
+
switch (event.key) {
|
|
637
|
+
case 'ArrowDown':
|
|
638
|
+
case 'Tab':
|
|
639
|
+
event.preventDefault();
|
|
640
|
+
if (event.key === 'Tab' && event.shiftKey) {
|
|
641
|
+
// Treat Shift+Tab as ArrowUp
|
|
642
|
+
this.focusedIndex = (index - 1) < 0 ? maxIndex : index - 1;
|
|
643
|
+
}
|
|
644
|
+
else {
|
|
645
|
+
// Treat Tab or ArrowDown as ArrowDown
|
|
646
|
+
this.focusedIndex = (index + 1) > maxIndex ? 0 : index + 1;
|
|
647
|
+
}
|
|
648
|
+
break;
|
|
649
|
+
case 'ArrowUp':
|
|
650
|
+
event.preventDefault();
|
|
651
|
+
this.focusedIndex = (index - 1) < 0 ? maxIndex : index - 1;
|
|
652
|
+
break;
|
|
653
|
+
case 'Enter':
|
|
654
|
+
event.preventDefault();
|
|
655
|
+
selectedOption = this.pageSizeOptions[this.focusedIndex];
|
|
656
|
+
this.onPageSizeChange(event, selectedOption);
|
|
657
|
+
this.closeDropdown();
|
|
658
|
+
return;
|
|
659
|
+
case 'Escape':
|
|
660
|
+
event.preventDefault();
|
|
661
|
+
this.closeDropdown();
|
|
662
|
+
return;
|
|
663
|
+
default:
|
|
664
|
+
return;
|
|
665
|
+
}
|
|
666
|
+
// Move focus after index is updated
|
|
667
|
+
setTimeout(() => {
|
|
668
|
+
$items.eq(this.focusedIndex)?.focus();
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
closeDropdown() {
|
|
672
|
+
// Close dropdown
|
|
673
|
+
this.bsDropdown.hide();
|
|
674
|
+
const $toggleButton = $('button[aria-controls="dropdown-basic"]');
|
|
675
|
+
$toggleButton.focus(); // Return focus to button
|
|
676
|
+
}
|
|
677
|
+
// Function gets called on dropdown open & close
|
|
678
|
+
onOpenChange(isOpen) {
|
|
679
|
+
if (isOpen) {
|
|
680
|
+
this.focusedIndex = 0;
|
|
681
|
+
setTimeout(() => {
|
|
682
|
+
// manually focus the dropdown as dropdown has container="body"
|
|
683
|
+
const $items = $('ul#dropdown-basic a.dropdown-item');
|
|
684
|
+
const $firstItem = $items.eq(this.focusedIndex);
|
|
685
|
+
$firstItem?.focus();
|
|
686
|
+
}, 0);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
onPageSizeChange($event, newPageSize) {
|
|
690
|
+
const widgetState = this.parent.statePersistence.getWidgetState(this.parent);
|
|
691
|
+
let updatedItems;
|
|
692
|
+
if (widgetState?.selectedItem) {
|
|
693
|
+
updatedItems = this.handleStateParamsforNewPageSize(widgetState.selectedItem, this.maxResults, +newPageSize);
|
|
694
|
+
}
|
|
695
|
+
this.actualPageSize = this.actualPageSize || this.maxResults;
|
|
696
|
+
this.maxResults = +newPageSize;
|
|
697
|
+
this.maxResultsEmitter.emit(this.maxResults);
|
|
698
|
+
if (this.isDataSourceHasPaging() && this.datasource) {
|
|
699
|
+
this.datasource.maxResults = this.maxResults;
|
|
700
|
+
}
|
|
701
|
+
if (updatedItems) {
|
|
702
|
+
this.parent.statePersistence.setWidgetState(this.parent, {
|
|
703
|
+
pagination: 1,
|
|
704
|
+
pagesize: this.maxResults,
|
|
705
|
+
actualpagesize: this.actualPageSize || this.maxResults,
|
|
706
|
+
selectedItem: updatedItems
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
else {
|
|
710
|
+
this.parent.statePersistence.setWidgetState(this.parent, {
|
|
711
|
+
pagination: 1,
|
|
712
|
+
pagesize: this.maxResults,
|
|
713
|
+
actualpagesize: this.actualPageSize || this.maxResults
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
this.navigatePage('first', $event, true);
|
|
717
|
+
this.calculatePagingValues();
|
|
718
|
+
if (this.nativeElement.closest('popover-container, .popover')) {
|
|
719
|
+
$event.stopPropagation();
|
|
720
|
+
this.bsDropdown.hide();
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
onDropDownShown($event) {
|
|
724
|
+
const container = $event?._element?.nativeElement;
|
|
725
|
+
if (!container)
|
|
726
|
+
return;
|
|
727
|
+
adjustVerticalPosition($(container), this.nativeElement?.querySelector('.items-per-page div'), this.bsDropdown._dropdown, $(container?.querySelector('ul[id="dropdown-basic"]')));
|
|
728
|
+
this.dropdownScrollHandler = () => {
|
|
729
|
+
this.onDropdownScroll();
|
|
730
|
+
};
|
|
731
|
+
window.addEventListener('scroll', this.dropdownScrollHandler, true);
|
|
732
|
+
}
|
|
733
|
+
onDropdownScroll() {
|
|
734
|
+
// on scroll boostrap is applying 3d translation to prevent from that added this dummy function
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
onDropdownHidden() {
|
|
738
|
+
if (this.dropdownScrollHandler) {
|
|
739
|
+
window.removeEventListener('scroll', this.dropdownScrollHandler, true);
|
|
740
|
+
}
|
|
741
|
+
this.dropdownScrollHandler = undefined;
|
|
742
|
+
}
|
|
743
|
+
ngAfterViewInit() {
|
|
744
|
+
const paginationElem = this.nativeElement;
|
|
745
|
+
paginationElem.onclick = (event) => {
|
|
746
|
+
event.stopPropagation();
|
|
747
|
+
};
|
|
748
|
+
}
|
|
749
|
+
ngOnDestroy() {
|
|
750
|
+
if (this.dropdownScrollHandler) {
|
|
751
|
+
window.removeEventListener('scroll', this.dropdownScrollHandler, true);
|
|
752
|
+
}
|
|
753
|
+
// MEMORY LEAK FIX: Clear initialization timeout if still pending
|
|
754
|
+
if (this._initTimeoutId) {
|
|
755
|
+
clearTimeout(this._initTimeoutId);
|
|
756
|
+
this._initTimeoutId = null;
|
|
757
|
+
}
|
|
758
|
+
// MEMORY LEAK FIX: Complete EventEmitters
|
|
759
|
+
if (this.resultEmitter) {
|
|
760
|
+
this.resultEmitter.complete();
|
|
761
|
+
}
|
|
762
|
+
if (this.maxResultsEmitter) {
|
|
763
|
+
this.maxResultsEmitter.complete();
|
|
764
|
+
}
|
|
765
|
+
// MEMORY LEAK FIX: Nullify debounced function closures
|
|
766
|
+
this._debouncedApplyDataset = null;
|
|
767
|
+
this._debouncedPageChanged = null;
|
|
768
|
+
// MEMORY LEAK FIX: Clear data arrays and objects
|
|
769
|
+
this.dataset = null;
|
|
770
|
+
this.__fullData = null;
|
|
771
|
+
this.result = null;
|
|
772
|
+
this.filterFields = null;
|
|
773
|
+
this.sortOptions = null;
|
|
774
|
+
this.options = null;
|
|
775
|
+
// MEMORY LEAK FIX: Clear page size options array
|
|
776
|
+
if (this.pageSizeOptions) {
|
|
777
|
+
this.pageSizeOptions = [];
|
|
778
|
+
}
|
|
779
|
+
if (this.defaultPageSizeOptions) {
|
|
780
|
+
this.defaultPageSizeOptions = [];
|
|
781
|
+
}
|
|
782
|
+
// MEMORY LEAK FIX: Clear datasource reference
|
|
783
|
+
this.datasource = null;
|
|
784
|
+
// MEMORY LEAK FIX: Clear parent reference
|
|
785
|
+
this.parent = null;
|
|
786
|
+
// Call parent ngOnDestroy (sets isDestroyed = true)
|
|
787
|
+
super.ngOnDestroy();
|
|
788
|
+
}
|
|
789
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaginationComponent, deps: [{ token: i0.Injector }, { token: WidgetRef, skipSelf: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
790
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaginationComponent, isStandalone: true, selector: "[wmPagination]", outputs: { resultEmitter: "resultEmitter", maxResultsEmitter: "maxResultsEmitter" }, providers: [
|
|
791
|
+
provideAsWidgetRef(PaginationComponent)
|
|
792
|
+
], viewQueries: [{ propertyName: "bsDropdown", first: true, predicate: BsDropdownDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if (navcontrols === 'Classic') {\n<ul class=\"pagination advanced {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\" aria-label=\"Change Page Number\">\n <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n [ngModelOptions]=\"{standalone: true}\"\n type=\"number\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (showrecordcount) {\n <li class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n }\n</ul>\n}\n@if (navcontrols === 'Pager') {\n <ul class=\"pager {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n@if (!(dataSize<=maxResults)) {\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n </ul>\n}\n\n@if (navcontrols === 'Basic') {\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <div class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE }} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </div>\n @if (rowSummary?.totalRecords) {\n <div class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </div>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n }\n}\n\n@if (navcontrols === 'Basic' && showrecordcount) {\n <ul class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n </ul>\n}\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n @if (page.active) {\n <span class=\"sr-only\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n }\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: i3.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }] }); }
|
|
793
|
+
}
|
|
794
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
795
|
+
type: Component,
|
|
796
|
+
args: [{ standalone: true, imports: [CommonModule, FormsModule, PaginationModule, BsDropdownModule], selector: '[wmPagination]', providers: [
|
|
797
|
+
provideAsWidgetRef(PaginationComponent)
|
|
798
|
+
], template: "\n@if (navcontrols === 'Classic') {\n<ul class=\"pagination advanced {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\" aria-label=\"Change Page Number\">\n <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n [ngModelOptions]=\"{standalone: true}\"\n type=\"number\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (showrecordcount) {\n <li class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n }\n</ul>\n}\n@if (navcontrols === 'Pager') {\n <ul class=\"pager {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n@if (!(dataSize<=maxResults)) {\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n </ul>\n}\n\n@if (navcontrols === 'Basic') {\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <div class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE }} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (onShown)=\"onDropDownShown($event)\" (onHidden)=\"onDropdownHidden()\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </div>\n @if (rowSummary?.totalRecords) {\n <div class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </div>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n }\n}\n\n@if (navcontrols === 'Basic' && showrecordcount) {\n <ul class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n </ul>\n}\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n @if (page.active) {\n <span class=\"sr-only\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n }\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n" }]
|
|
799
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
800
|
+
type: SkipSelf
|
|
801
|
+
}, {
|
|
802
|
+
type: Inject,
|
|
803
|
+
args: [WidgetRef]
|
|
804
|
+
}] }, { type: undefined, decorators: [{
|
|
805
|
+
type: Inject,
|
|
806
|
+
args: ['EXPLICIT_CONTEXT']
|
|
807
|
+
}, {
|
|
808
|
+
type: Optional
|
|
809
|
+
}] }], propDecorators: { resultEmitter: [{
|
|
810
|
+
type: Output
|
|
811
|
+
}], maxResultsEmitter: [{
|
|
812
|
+
type: Output
|
|
813
|
+
}], bsDropdown: [{
|
|
814
|
+
type: ViewChild,
|
|
815
|
+
args: [BsDropdownDirective]
|
|
816
|
+
}] } });
|
|
817
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9wYWdpbmF0aW9uL3NyYy9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3BhZ2luYXRpb24vc3JjL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsVUFBVSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFDcEgsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNILGNBQWMsRUFDZCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sZ0NBQWdDLEVBQ2hDLFNBQVMsRUFDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FB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RyxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsb0RBQW9EO1FBQ3BELEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTMxQlEsbUJBQW1CLDBDQXFGbUIsU0FBUyw2QkFBeUIsa0JBQWtCO21HQXJGMUYsbUJBQW1CLGtKQUpqQjtZQUNQLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1NBQzFDLHNFQU1VLG1CQUFtQix1RUM5RGxDLDJqVkFzTkEsMkNEbktjLFlBQVksNEhBQUUsV0FBVyxneEJBQUUsZ0JBQWdCLDhiQUFFLGdCQUFnQjs7NEZBTzlELG1CQUFtQjtrQkFUL0IsU0FBUztpQ0FDSSxJQUFJLFdBQ0wsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLFlBQzlELGdCQUFnQixhQUVmO3dCQUNQLGtCQUFrQixxQkFBcUI7cUJBQzFDOzswQkF1RjJCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsU0FBUzs7MEJBQWtCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQW5GcEcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ21DLFVBQVU7c0JBQW5ELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgJGFwcERpZ2VzdCwgJHdhdGNoLCBhZGp1c3RWZXJ0aWNhbFBvc2l0aW9uLCBBcHBDb25zdGFudHMsIERhdGFTb3VyY2UsIGRlYm91bmNlLCBpc0RlZmluZWQsIHN3aXRjaENsYXNzLCB0cmlnZ2VyRm5cbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBERUJPVU5DRV9USU1FUyxcbiAgICBnZXRPcmRlckJ5RXhwcixcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgc3R5bGVyLFxuICAgIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLFxuICAgIFdpZGdldFJlZlxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9wYWdpbmF0aW9uLnByb3BzJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBpc0FycmF5LCBpc0VtcHR5LCBpc051bGwsIGlzU3RyaW5nLCByYW5nZX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHtQYWdpbmF0aW9uTW9kdWxlfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24nO1xuaW1wb3J0IHtCc0Ryb3Bkb3duRGlyZWN0aXZlLCBCc0Ryb3Bkb3duTW9kdWxlfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWRhdGFuYXZpZ2F0b3IgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tcGFnaW5hdGlvbicsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5jb25zdCBzaXplQ2xhc3NlcyA9IHtcbiAgICAnUGFnZXInOiB7XG4gICAgICAgICdzbWFsbCc6ICdwYWdlci1zbScsXG4gICAgICAgICdsYXJnZSc6ICdwYWdlci1sZydcbiAgICB9LFxuICAgICdCYXNpYyc6IHtcbiAgICAgICAgJ3NtYWxsJzogJ3BhZ2luYXRpb24tc20nLFxuICAgICAgICAnbGFyZ2UnOiAncGFnaW5hdGlvbi1sZydcbiAgICB9LFxuICAgICdDbGFzc2ljJzoge1xuICAgICAgICAnc21hbGwnOiAncGFnaW5hdGlvbi1zbScsXG4gICAgICAgICdsYXJnZSc6ICdwYWdpbmF0aW9uLWxnJ1xuICAgIH1cbn07XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUGFnaW5hdGlvbk1vZHVsZSwgQnNEcm9wZG93bk1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdbd21QYWdpbmF0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUGFnaW5hdGlvbkNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBAT3V0cHV0KCkgcmVzdWx0RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG1heFJlc3VsdHNFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAVmlld0NoaWxkKEJzRHJvcGRvd25EaXJlY3RpdmUpIHByb3RlY3RlZCBic0Ryb3Bkb3duO1xuICAgIHByaXZhdGUgZHJvcGRvd25TY3JvbGxIYW5kbGVyITogKCRldmVudDphbnkpID0+IHZvaWQ7XG4gICAgZGF0YXNvdXJjZTtcbiAgICBtYXhSZXN1bHRzO1xuICAgIHBhZ2VTaXplT3B0aW9ucztcbiAgICBwcmV2UGFnZVNpemU7XG4gICAgYWN0dWFsUGFnZVNpemU7XG4gICAgYWxsb3dwYWdlc2l6ZWNoYW5nZTtcbiAgICBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gW107XG4gICAgZm9jdXNlZEluZGV4ID0gMDtcbiAgICByb3dTdW1tYXJ5O1xuICAgIG5hdmlnYXRpb25zaXplO1xuICAgIHNob3dyZWNvcmRjb3VudDtcblxuICAgIG5hdmNvbnRyb2xzO1xuICAgIG5hdmlnYXRpb247XG5cbiAgICBib3VuZGFyeWxpbmtzO1xuICAgIGRpcmVjdGlvbmxpbmtzO1xuXG4gICAgbmF2aWdhdGlvbkNsYXNzO1xuICAgIGRuID0ge1xuICAgICAgICBjdXJyZW50UGFnZTogMVxuICAgIH07XG5cbiAgICBwYWdlQ291bnQgPSAwO1xuICAgIGlzRGlzYWJsZU5leHQgPSB0cnVlO1xuICAgIGlzRGlzYWJsZVByZXZpb3VzID0gdHJ1ZTtcbiAgICBpc0Rpc2FibGVGaXJzdCA9IHRydWU7XG4gICAgaXNEaXNhYmxlTGFzdCA9IHRydWU7XG4gICAgaXNEaXNhYmxlQ3VycmVudDtcbiAgICBkYXRhU2l6ZTtcbiAgICBwcmV2c2hvd3JlY29yZGNvdW50O1xuICAgIGlzRGlzYWJsZUNvdW50O1xuICAgIGZpcnN0Um93O1xuICAgIHJlc3VsdDtcbiAgICBfX2Z1bGxEYXRhO1xuICAgIGRhdGFzZXQ7XG4gICAgb3B0aW9ucztcbiAgICBzdGF0ZWhhbmRsZXI7XG4gICAgZmlsdGVyRmllbGRzO1xuICAgIHNvcnRPcHRpb25zO1xuICAgIGJpbmRkYXRhc2V0O1xuICAgIHBhZ2luYXRpb247XG4gICAgbG9naWNhbE9wO1xuXG4gICAgcHJpdmF0ZSBfaW5pdFRpbWVvdXRJZDogYW55OyAvLyBTdG9yZSB0aW1lb3V0IElEIGZvciBjbGVhbnVwXG4gICAgcHJpdmF0ZSBfZGVib3VuY2VkQXBwbHlEYXRhc2V0ID0gZGVib3VuY2UoKCkgPT4gdGhpcy53aWRnZXQuZGF0YXNldCA9IHRoaXMuZGF0YXNldCwgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FKTtcbiAgICBwcml2YXRlIF9kZWJvdW5jZWRQYWdlQ2hhbmdlZCA9IGRlYm91bmNlKGV2ZW50ID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSBldmVudCAmJiBldmVudC5wYWdlO1xuICAgICAgICBjb25zdCBtYXhSZXN1bHRzID0gZXZlbnQgJiYgKGV2ZW50LnBhZ2VzaXplIHx8IGV2ZW50Lml0ZW1zUGVyUGFnZSkgfHwgdGhpcy5tYXhSZXN1bHRzO1xuXG4gICAgICAgIC8vIERvIG5vdCBjYWxsIGdvVG9QYWdlIGlmIHBhZ2UgaGFzIG5vdCBjaGFuZ2VkXG4gICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gdGhpcy5kbi5jdXJyZW50UGFnZSB8fCB0aGlzLm1heFJlc3VsdHMgIT09IG1heFJlc3VsdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3QgPSAodGhpcyBhcyBhbnkpLnBhcmVudCB8fCB0aGlzO1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlO1xuICAgICAgICAgICAgdGhpcy5tYXhSZXN1bHRzID0gbWF4UmVzdWx0cztcbiAgICAgICAgICAgIHRoaXMubWF4UmVzdWx0c0VtaXR0ZXIuZW1pdCh0aGlzLm1heFJlc3VsdHMpO1xuICAgICAgICAgICAgaW5zdC5pbnZva2VFdmVudENhbGxiYWNrKCdwYWdpbmF0aW9uY2hhbmdlJywgeyRldmVudDogdW5kZWZpbmVkLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2V9KTtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1BhZ2UoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb24gPT09ICdCYXNpYycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRBcmlhRm9yQmFzaWNOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUpO1xuXG4gICAgcHJpdmF0ZSBfc2V0QXJpYUZvckJhc2ljTmF2aWdhdGlvbigpIHtcbiAgICAgICAgZm9yRWFjaCh0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGl0ZW0ucXVlcnlTZWxlY3Rvcignc3BhbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZT8uZGF0YXNldC5pc2FjaXR2ZXBhZ2UgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihjaGlsZE5vZGU/LmRhdGFzZXQuaXNkaXNhYmxlZCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBJbmplY3QoV2lkZ2V0UmVmKSBwdWJsaWMgcGFyZW50LCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgdGhpcy5faW5pdFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IGNvbXBvbmVudCBkZXN0cnVjdGlvbiBvciBwYXJlbnQgYmVpbmcgbnVsbFxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQgfHwgIXRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbGxvd3BhZ2VzaXplY2hhbmdlID0gdGhpcy5wYXJlbnQuYWxsb3dwYWdlc2l6ZWNoYW5nZTtcbiAgICAgICAgICAgIGlmKHRoaXMuYWxsb3dwYWdlc2l6ZWNoYW5nZSlcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhcmVudD8ucGFnZXNpemVvcHRpb25zID8gdGhpcy5wYXJlbnQucGFnZXNpemVvcHRpb25zPy5zcGxpdCgnLCcpLm1hcChOdW1iZXIpLnNvcnQoKGEsIGIpID0+IGEgLSBiKSA6IFtdO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBzZXRSZXN1bHQocmVzdWx0KSB7XG4gICAgICAgIC8vIFRPRE86IEVtaXQgZXZlbnQgb25seSBpZiByZXN1bHQgaXMgY2hhbmdlZFxuICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5yZXN1bHRFbWl0dGVyLmVtaXQodGhpcy5yZXN1bHQpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBuYXZpZ2F0aW9uQ2xhc3MgYmFzZWQgb24gbmF2aWdhdGlvbiBhbmQgbmF2aWdhdGlvblNpemUgcHJvcHNcbiAgICBwcml2YXRlIHVwZGF0ZU5hdlNpemUoKSB7XG4gICAgICAgIGNvbnN0IHNpemVDbHMgPSBzaXplQ2xhc3Nlc1t0aGlzLm5hdmNvbnRyb2xzXTtcbiAgICAgICAgaWYgKHNpemVDbHMgJiYgdGhpcy5uYXZpZ2F0aW9uc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ2xhc3MgPSBzaXplQ2xzW3RoaXMubmF2aWdhdGlvbnNpemVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ2xhc3MgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIHRvIHJlc2V0IHRoZSBwYWdpbmcgdmFsdWVzIHRvIGRlZmF1bHQuXG4gICAgcmVzZXRQYWdlTmF2aWdhdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgdGhpcy5kYXRhU2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIHBhZ2luZyB2YWx1ZXMuKi9cbiAgICBjYWxjdWxhdGVQYWdpbmdWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMucGFnZUNvdW50ID0gKHRoaXMuZGF0YVNpemUgPiB0aGlzLm1heFJlc3VsdHMpID8gKE1hdGguY2VpbCh0aGlzLmRhdGFTaXplIC8gdGhpcy5tYXhSZXN1bHRzKSkgOiAodGhpcy5kYXRhU2l6ZSA8IDAgPyAwIDogMSk7XG4gICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSB0aGlzLmRuLmN1cnJlbnRQYWdlIHx8IDE7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgdG8gdGhlIHBhZ2luZyBwYXJhbWV0ZXJzKi9cbiAgICBzZXREZWZhdWx0UGFnaW5nVmFsdWVzKGRhdGFTaXplLCBtYXhSZXN1bHRzLCBjdXJyZW50UGFnZSkge1xuICAgICAgICAvKklmIG5laXRoZXIgJ2RhdGFTaXplJyBub3IgJ21heFJlc3VsdHMnIGlzIHNldCwgdGhlbiBzZXQgZGVmYXVsdCB2YWx1ZXMgdG8gdGhlIHBhZ2luZyBwYXJhbWV0ZXJzLiovXG4gICAgICAgIGlmICghZGF0YVNpemUgJiYgIW1heFJlc3VsdHMpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gMTtcbiAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgdGhpcy5tYXhSZXN1bHRzID0gZGF0YVNpemU7XG4gICAgICAgICAgICB0aGlzLmRhdGFTaXplID0gZGF0YVNpemU7XG4gICAgICAgIH0gZWxzZSB7IC8qRWxzZSwgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVzIGFuZCByZWNhbGN1bGF0ZSBwYWdpbmcgcGFyYW1ldGVycy4qL1xuICAgICAgICAgICAgdGhpcy5tYXhSZXN1bHRzID0gbWF4UmVzdWx0cyB8fCB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgICAgICB0aGlzLmRhdGFTaXplID0gaXNEZWZpbmVkKGRhdGFTaXplKSA/IGRhdGFTaXplIDogdGhpcy5kYXRhU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZSB8fCB0aGlzLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdpbmdWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1heFJlc3VsdHNFbWl0dGVyLmVtaXQodGhpcy5tYXhSZXN1bHRzKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBkYXRhU2l6ZSBhbmQgbWFuaXB1bGF0ZSB0aGUgbmF2aWdhdG9yIGFjY29yZGluZ2x5LiovXG4gICAgY2hlY2tEYXRhU2l6ZShkYXRhU2l6ZSwgbnVtYmVyT2ZFbGVtZW50cz8sIHNpemU/KSB7XG4gICAgICAgIC8qSWYgdGhlIGRhdGFTaXplIGlzIC0xIG9yIEludGVnZXIuTUFYX1ZBTFVFKCB3aGljaCBpcyAyMTQ3NDgzNjQ3KSwgdGhlbiB0aGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgaXMgbm90IGtub3duLlxuICAgICAgICAgKiBIZW5jZSxcbiAgICAgICAgICogMS4gSGlkZSB0aGUgJ1RvdGFsIFJlY29yZCBDb3VudCcuXG4gICAgICAgICAqIDIuIERpc2FibGUgdGhlICdHb1RvTGFzdFBhZ2UnIGxpbmsgYXMgdGhlIHBhZ2UgbnVtYmVyIG9mIHRoZSBsYXN0IHBhZ2UgaXMgbm90IGtub3duLiovXG4gICAgICAgIGlmIChkYXRhU2l6ZSA9PT0gLTEgfHwgZGF0YVNpemUgPT09IEFwcENvbnN0YW50cy5JTlRfTUFYX1ZBTFVFKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZzaG93cmVjb3JkY291bnQgPSB0aGlzLnNob3dyZWNvcmRjb3VudDtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTGFzdCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUNvdW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2hvd3JlY29yZGNvdW50ID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBJZiBudW1iZXIgb2YgcmVjb3JkcyBpbiBjdXJyZW50IHBhZ2UgaXMgbGVzcyB0aGFuIHRoZSBtYXggcmVjb3JkcyBzaXplLCB0aGlzIGlzIHRoZSBsYXN0IHBhZ2UuIFNvIGRpc2FibGUgbmV4dCBidXR0b24uXG4gICAgICAgICAgICBpZiAobnVtYmVyT2ZFbGVtZW50cyA8IHNpemUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZU5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVDb3VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zaG93cmVjb3JkY291bnQgPSB0aGlzLnByZXZzaG93cmVjb3JkY291bnQgfHwgdGhpcy5zaG93cmVjb3JkY291bnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGRpc2FibGUgbmF2aWdhdGlvbiBiYXNlZCBvbiB0aGUgY3VycmVudCBhbmQgdG90YWwgcGFnZXMuKi9cbiAgICBkaXNhYmxlTmF2aWdhdGlvbigpIHtcbiAgICAgICAgY29uc3QgaXNDdXJyZW50UGFnZUZpcnN0ID0gKHRoaXMuZG4uY3VycmVudFBhZ2UgPT09IDEpLFxuICAgICAgICAgICAgaXNDdXJyZW50UGFnZUxhc3QgPSAodGhpcy5kbi5jdXJyZW50UGFnZSA9PT0gdGhpcy5wYWdlQ291bnQpO1xuICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbj8ubmV4dCkge1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVGaXJzdCA9IHRoaXMuaXNEaXNhYmxlUHJldmlvdXMgPSBpc0N1cnJlbnRQYWdlRmlyc3Q7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZU5leHQgPSB0aGlzLmlzRGlzYWJsZUxhc3QgPSBpc0N1cnJlbnRQYWdlTGFzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdNUy0xODg2NzogSW4gY2FzZSBvZiBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uLCBmb3IgcGFnZXIgdHlwZSBwYWdpbmF0aW9uIGRlcGVuZCBvbiBwcmV2IGFuZCBuZXh0IGZsYWdzIHdoaWNoIGFyZSBzZXQgYnkgZGV2ZWxvcGVyXG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUZpcnN0ID0gdGhpcy5pc0Rpc2FibGVQcmV2aW91cyA9ICF0aGlzLnBhZ2luYXRpb24ucHJldjtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTmV4dCA9IHRoaXMuaXNEaXNhYmxlTGFzdCA9ICF0aGlzLnBhZ2luYXRpb24ubmV4dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGlzYWJsZUN1cnJlbnQgPSBpc0N1cnJlbnRQYWdlRmlyc3QgJiYgaXNDdXJyZW50UGFnZUxhc3Q7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgY2xpZW50IHNpZGUgcGFnaW5hdGlvbiwgd2hlbiBsb2FkIG1vcmUgcmVhY2hlcyBsYXN0IHBhZ2UgaGlkZSB0aGUgb24tZGVtYW5kIGdyaWQgZWxlXG4gICAgICAgIGlmICh0aGlzLmRhdGFzZXQgJiYgdGhpcy5kYXRhc2V0Lmxlbmd0aCAmJiB0aGlzLmlzRGlzYWJsZU5leHQgJiYgdGhpcy5wYXJlbnQub25EZW1hbmRMb2FkICYmIHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmNhbGxEYXRhR3JpZE1ldGhvZCgnaGlkZUxvYWRpbmdJbmRpY2F0b3InLCB0aGlzLmlzRGlzYWJsZU5leHQsIHRoaXMucGFyZW50LmluZlNjcm9sbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSB2YXJpYWJsZSBib3VuZCB0byB0aGUgZGF0YS1uYXZpZ2F0b3IgaGFzIHBhZ2luZy4qL1xuICAgIGlzRGF0YVNvdXJjZUhhc1BhZ2luZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZSAmJiB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19QQUdFQUJMRSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aGljaCBnaXZlcyBzdW1tYXJ5IG9mIHRoZSBjdXJyZW50IHBhZ2UgZGF0YSAoZXg6IEluIFVJIGl0IGlzIHNob3duIGFzICAxIHRvIDEwIG91dCBvZiA1MCByZWNvcmRzKVxuICAgIGdldFBhZ2VEZXRhaWxzKHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0b3RhbFJlY29yZHMpIHtcbiAgICAgICAgdGhpcy5yb3dTdW1tYXJ5ID0gIChpc0RlZmluZWQoc3RhcnRJbmRleCkgJiYgaXNEZWZpbmVkKGVuZEluZGV4KSAmJiBpc0RlZmluZWQodG90YWxSZWNvcmRzKSkgPyB7XG4gICAgICAgICAgICBzdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgZW5kSW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgICAgdG90YWxSZWNvcmRzOiB0b3RhbFJlY29yZHNcbiAgICAgICAgfToge307XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSByZXN1bHQgZm9yIGNsaWVudCBzaWRlIHBhZ2luYXRpb25cbiAgICBzZXROb25QYWdlYWJsZURhdGEobmV3VmFsKSB7XG4gICAgICAgIGxldCBkYXRhU2l6ZSxcbiAgICAgICAgICAgIG1heFJlc3VsdHMsXG4gICAgICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgICAgIHN0YXJ0SW5kZXg7XG4gICAgICAgIGRhdGFTaXplID0gaXNBcnJheShuZXdWYWwpID8gbmV3VmFsLmxlbmd0aCA6IChpc0VtcHR5KG5ld1ZhbCkgPyAwIDogMSk7XG4gICAgICAgIG1heFJlc3VsdHMgPSAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tYXhSZXN1bHRzKSB8fCBkYXRhU2l6ZTtcblxuICAgICAgICBpZiAodGhpcy5hbGxvd3BhZ2VzaXplY2hhbmdlKSB7IC8vIHdoZW4gZGVmYXVsdCBwYWdlIHNpemUgaXMgbm90IGdpdmVuIHRoZW4gdXNlIG1heFJlc3VsdHMgaW5zdGVhZCBvZiBvcHRpb25zLm1heFJlc3VsdHNcbiAgICAgICAgICAgIG1heFJlc3VsdHMgPSB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIHN0YXRpYyB2YXJpYWJsZSwga2VlcCB0aGUgY3VycmVudCBwYWdlLiBGb3Igb3RoZXIgdmFyaWFibGVzIHdpdGhvdXQgcGFnaW5hdGlvbiByZXNldCB0aGUgcGFnZSB0byAxXG4gICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzI2M106IGdyaWRPcHRpb25zLmlzTmV4dFBhZ2VEYXRhIGZsYWcgaXMgZmFsc2Ugd2hlbiBkYXRhc2V0IGlzIGNoYW5nZWQgZnJvbSBzY3JpcHQsIHNvIHNldHRpbmcgY3VycmVudCBwYWdlIHRvIDFcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNvdXJjZSAmJiAodGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSB8fCAodGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyAmJiAodGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpICYmIChnZXQodGhpcy5wYXJlbnQsICdncmlkT3B0aW9ucy5sYXN0QWN0aW9uUGVyZm9ybWVkJykgPT09IHRoaXMucGFyZW50LmdyaWRPcHRpb25zLkFDVElPTlMuREFUQVNFVF9VUERBVEUgfHwgIWdldCh0aGlzLnBhcmVudCwgJ2dyaWRPcHRpb25zLmlzTmV4dFBhZ2VEYXRhJykpKSkpKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2UgfHwgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBhZ2luZ1ZhbHVlcyhkYXRhU2l6ZSwgbWF4UmVzdWx0cywgY3VycmVudFBhZ2UpO1xuICAgICAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uKCk7XG5cbiAgICAgICAgc3RhcnRJbmRleCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgIHRoaXMuZ2V0UGFnZURldGFpbHMoc3RhcnRJbmRleCArIDEsIE1hdGgubWluKHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMsIG5ld1ZhbD8ubGVuZ3RoKSwgbmV3VmFsPy5sZW5ndGgpO1xuICAgICAgICB0aGlzLnNldFJlc3VsdChpc0FycmF5KG5ld1ZhbCkgPyBuZXdWYWwuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRoaXMubWF4UmVzdWx0cykgOiBuZXdWYWwpO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gc2V0IHRoZSB2YWx1ZXMgbmVlZGVkIGZvciBwYWdpbmF0aW9uKi9cbiAgICBwcml2YXRlIHNldFBhZ2luZ1ZhbHVlcyhuZXdWYWwpIHtcbiAgICAgICAgbGV0IGRhdGFTaXplLFxuICAgICAgICAgICAgbWF4UmVzdWx0cyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U7XG4gICAgICAgIGxldCB2YXJpYWJsZU9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAvLyBTdG9yZSB0aGUgZGF0YSBpbiBfX2Z1bGxEYXRhLiBUaGlzIGlzIHVzZWQgZm9yIGNsaWVudCBzaWRlIHNlYXJjaGluZyB3aXR2YWggb3V0IG1vZGlmeWluZyB0aGUgYWN0dWFsIGRhdGFzZXQuXG4gICAgICAgIHRoaXMuX19mdWxsRGF0YSA9IG5ld1ZhbDtcbiAgICAgICAgLypDaGVjayBmb3Igc2FuaXR5Ki9cbiAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzZXQpIHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2UgPSB0aGlzLmRhdGFzb3VyY2UgfHwge307XG4gICAgICAgICAgICB2YXJpYWJsZU9wdGlvbnMgPSBkYXRhU291cmNlLl9vcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgLypDaGVjayBmb3IgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBkYXRhIHNldCovXG4gICAgICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlSGFzUGFnaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1BBR0lOR19PUFRJT05TKSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgXCJmaWx0ZXJGaWVsZHNcIiBhbmQgXCJzb3J0T3B0aW9uc1wiIGhhdmUgYmVlbiBzZXQsIHRoZW4gc2V0IHRoZW0gc28gdGhhdCB0aGUgZmlsdGVycyBjYW4gYmUgcmV0YWluZWQgd2hpbGUgZmV0Y2hpbmcgZGF0YSB1cG9uIHBhZ2UgbmF2aWdhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSB2YXJpYWJsZU9wdGlvbnMuZmlsdGVyRmllbGRzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2ljYWxPcCA9IHZhcmlhYmxlT3B0aW9ucy5sb2dpY2FsT3AgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSB2YXJpYWJsZU9wdGlvbnMub3JkZXJCeSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQXJyYXkodGhpcy5wYWdpbmF0aW9uLnNvcnQpID8gZ2V0T3JkZXJCeUV4cHIodGhpcy5wYWdpbmF0aW9uLnNvcnQpIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhU2l6ZSA9IHRoaXMucGFnaW5hdGlvbi50b3RhbEVsZW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBtYXhSZXN1bHRzID0gdGhpcy5wYWdpbmF0aW9uLnNpemUgPSBOdW1iZXIodGhpcy5wYWdpbmF0aW9uLnNpemUpID8gdGhpcy5wYWdpbmF0aW9uLnNpemUgOiBnZXQodGhpcy5kYXRhc291cmNlLmRhdGFTZXQsIHRoaXMucGFnaW5hdGlvbi5zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLm51bWJlck9mRWxlbWVudHMgPSBOdW1iZXIodGhpcy5wYWdpbmF0aW9uLm51bWJlck9mRWxlbWVudHMpID8gdGhpcy5wYWdpbmF0aW9uLm51bWJlck9mRWxlbWVudHMgOiBnZXQodGhpcy5kYXRhc291cmNlLmRhdGFTZXQsIHRoaXMucGFnaW5hdGlvbi5udW1iZXJPZkVsZW1lbnRzKVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uLm51bWJlck9mRWxlbWVudHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMucGFnaW5hdGlvbi5udW1iZXIpKSB7IC8vIG51bWJlciBpcyBwYWdlIG51bWJlciByZWNlaXZlZCBmcm9tIGJhY2tlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdpbmF0aW9uLm51bWJlciArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2UgfHwgMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvKiBTZW5kaW5nIHBhZ2VDb3VudCB1bmRlZmluZWQgdG8gY2FsY3VsYXRlIGl0IGFnYWluIGZvciBxdWVyeS4qL1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRQYWdpbmdWYWx1ZXMoZGF0YVNpemUsIG1heFJlc3VsdHMsIGN1cnJlbnRQYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRGF0YVNpemUoZGF0YVNpemUsIHRoaXMucGFnaW5hdGlvbi5udW1iZXJPZkVsZW1lbnRzLCB0aGlzLnBhZ2luYXRpb24uc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAoY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQYWdlRGV0YWlscyhzdGFydEluZGV4ICsgMSwgc3RhcnRJbmRleCArIE51bWJlcih0aGlzLnBhZ2luYXRpb24ubnVtYmVyT2ZFbGVtZW50cyksIGRhdGFTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQobmV3VmFsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1N0cmluZyhuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9uUGFnZWFibGVEYXRhKG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJlc3VsdChuZXdWYWwpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQYWdlTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbiA9PT0gJ0Jhc2ljJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEFyaWFGb3JCYXNpY05hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChuZXdWYWwgJiYgIWlzU3RyaW5nKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vblBhZ2VhYmxlRGF0YShuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGlzIHRoZSBmaXJzdCBwYWdlKi9cbiAgICBpc0ZpcnN0UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSAxIHx8ICF0aGlzLmRuLmN1cnJlbnRQYWdlKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGxhc3QgcGFnZSovXG4gICAgaXNMYXN0UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2VDb3VudCk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgbGFzdCBwYWdlKi9cbiAgICBnb1RvTGFzdFBhZ2UoaXNSZWZyZXNoLCBldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTGFzdFBhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUNvdW50O1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZShldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUmVmcmVzaCkge1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZShldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgZmlyc3QgcGFnZSovXG4gICAgZ29Ub0ZpcnN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdFBhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIHRoZSBjdXJyZW50IHBhZ2UqL1xuICAgIGdvVG9QYWdlKGV2ZW50PywgY2FsbGJhY2s/KSB7XG4gICAgICAgIHRoaXMuZmlyc3RSb3cgPSAodGhpcy5kbi5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5tYXhSZXN1bHRzO1xuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlciksXG4gICAgICAgICAgICBhbGxvd3BhZ2VzaXplY2hhbmdlID0gdGhpcy5wYXJlbnQuYWxsb3dwYWdlc2l6ZWNoYW5nZTtcbiAgICAgICAgaWYgKG1vZGUgJiYgbW9kZS50b0xvd2VyQ2FzZSgpICE9PSAnbm9uZScgJiYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgfHwgdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLWxpc3QnKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpcnN0UGFnZSgpICYmICFhbGxvd3BhZ2VzaXplY2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5yZW1vdmVXaWRnZXRTdGF0ZSh0aGlzLnBhcmVudCwgJ3BhZ2luYXRpb24nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLmluZGV4T2YodGhpcy5wYXJlbnQubmF2aWdhdGlvbikgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlOiB7IHBhZ2luYXRpb246IG51bWJlcjsgcGFnZXNpemU/OiBudW1iZXIgfSA9IHsgcGFnaW5hdGlvbjogdGhpcy5kbi5jdXJyZW50UGFnZSB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dwYWdlc2l6ZWNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucGFnZXNpemUgPSB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5zZXRXaWRnZXRTdGF0ZSh0aGlzLnBhcmVudCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLWxpc3QnIHx8IHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdSZXRhaW4gU3RhdGUgaGFuZGxpbmcgb24gV2lkZ2V0ICcgKyB0aGlzLnBhcmVudC5uYW1lICsgJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBjdXJyZW50IHBhZ2luYXRpb24gdHlwZS4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jdXJyZW50cGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2U7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5uYXRpdmVFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRwYWdlJywgdGhpcy5kbi5jdXJyZW50UGFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FsbCBnZXRQYWdlRGF0YSBhZnRlciBjaGVja2luZyBzdGF0ZSBjb25maWcgc28gdGhhdCBTdGF0aWMgVmFyaWFibGVzIGNhbiB1c2UgaXRcbiAgICAgICAgdGhpcy5nZXRQYWdlRGF0YShldmVudCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUgZGF0YSBvZiB0aGUgcGFnZSBoYXMgYmVlbiBmZXRjaGVkLiovXG4gICAgb25QYWdlRGF0YVJlYWR5KGV2ZW50LCBkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaW52b2tlU2V0UmVjb3JkKGV2ZW50LCBkYXRhKTtcbiAgICAgICAgdHJpZ2dlckZuKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGdldCBkYXRhIGZvciB0aGUgY3VycmVudCBwYWdlKi9cbiAgICBnZXRQYWdlRGF0YShldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGRhdGEsXG4gICAgICAgICAgICBzdGFydEluZGV4O1xuXG4gICAgICAgIGlmICh0aGlzLmlzRGF0YVNvdXJjZUhhc1BhZ2luZygpKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHRhYmxlIGNvbXBvbmVudCwgaW4gY2FzZSBvZiBvbiBkZW1hbmQgYW5kIHNjcm9sbCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgKiBXaGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluIGRhdGEgaXRlbSB3aGljaCBpcyBub3QgaW4gY3VycmVudCBwYWdlXG4gICAgICAgICAgICAgKiBGZXRjaCB0aGUgaXRlbXMgb2YgdGhlIHBhZ2Ugd2hlcmUgdGhlIGNoYW5nZSBpcyBtYWRlXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgbGV0IHBhZ2VJbmRleCA9IHRoaXMuZG4uY3VycmVudFBhZ2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkgJiYgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCAhPT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSB0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uTElTVF9SRUNPUkRTLCB7XG4gICAgICAgICAgICAgICAgJ3BhZ2UnOiBwYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgJ3NpemUnOiB0aGlzLm1heFJlc3VsdHMsXG4gICAgICAgICAgICAgICAgJ2ZpbHRlckZpZWxkcyc6IHRoaXMuZmlsdGVyRmllbGRzLFxuICAgICAgICAgICAgICAgICdvcmRlckJ5JzogdGhpcy5zb3J0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAnbG9naWNhbE9wJzogdGhpcy5sb2dpY2FsT3AsXG4gICAgICAgICAgICAgICAgJ21hdGNoTW9kZSc6ICdhbnl3aGVyZWlnbm9yZWNhc2UnXG4gICAgICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZURhdGFSZWFkeShldmVudCwgcmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAodGhpcy5kbi5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5tYXhSZXN1bHRzO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFnZURldGFpbHMoc3RhcnRJbmRleCArIDEgLCBzdGFydEluZGV4ICsgTnVtYmVyKHRoaXMucGFnaW5hdGlvbj8ubnVtYmVyT2ZFbGVtZW50cyksIHRoaXMucGFnaW5hdGlvbj8udG90YWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIGVycm9yIGlzIHVuZGVmaW5lZCwgZG8gbm90IHNob3cgYW55IG1lc3NhZ2UgYXMgdGhpcyBtYXkgYmUgZGlzY2FyZGVkIHJlcXVlc3RcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIC8vIHdtVG9hc3Rlci5zaG93KCdlcnJvcicsICdFUlJPUicsICdVbmFibGUgdG8gZ2V0IGRhdGEgb2YgcGFnZSAtJyArIHRoaXMuZG4uY3VycmVudFBhZ2UgKyAnOicgKyBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gKHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2UgLSAxKSAqIHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhID0gaXNBcnJheSh0aGlzLl9fZnVsbERhdGEpID8gdGhpcy5fX2Z1bGxEYXRhLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMpIDogdGhpcy5fX2Z1bGxEYXRhO1xuICAgICAgICAgICAgdGhpcy5nZXRQYWdlRGV0YWlscyhzdGFydEluZGV4ICsgMSAsIE1hdGgubWluKHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMsIHRoaXMuX19mdWxsRGF0YT8ubGVuZ3RoKSwgdGhpcy5fX2Z1bGxEYXRhPy5sZW5ndGgpO1xuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm9uUGFnZURhdGFSZWFkeShldmVudCwgZGF0YSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZWRpdCBhY3Rpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBwcmV2aW91cyBwYWdlIGRhdGEgb2YgdGhlIHRhYmxlXG4gICAgKi9cbiAgICBpc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSB0aGlzLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyAmJiBwYWdlSW5kZXggPT09IHRoaXMucGFyZW50LmN1cnJlbnRQYWdlICYmXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlICYmIHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2UgPCBwYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgaW52b2tlU2V0UmVjb3JkKGV2ZW50LCBkYXRhKSB7XG4gICAgICAgIC8vIFRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIgaWYgZXhpc3RzLlxuICAgICAgICBjb25zdCBwYWdlSW5mbyA9IHtcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmRuLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy5tYXhSZXN1bHRzLFxuICAgICAgICAgICAgdG90YWxFbGVtZW50czogdGhpcy5kYXRhU2l6ZSxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRoaXMucGFnZUNvdW50XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW52b2tlRXZlbnRDYWxsYmFjaygnc2V0cmVjb3JkJywgeyRldmVudDogZXZlbnQsICRkYXRhOiBkYXRhLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2UsIHBhZ2VJbmZvLCBkYXRhfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NldHJlY29yZCcsIHskZXZlbnQ6IGV2ZW50LCAkZGF0YTogZGF0YSwgJGluZGV4OiB0aGlzLmRuLmN1cnJlbnRQYWdlLCBwYWdlSW5mbywgZGF0YX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgcGFnZSBpbnB1dC5cbiAgICAgSW4gY2FzZSBvZiBpbnZhbGlkIGlucHV0LCBuYXZpZ2F0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcGFnZTsgYWxzbyByZXR1cm4gZmFsc2UuXG4gICAgIEluIGNhc2Ugb2YgdmFsaWQgaW5wdXQsIHJldHVybiB0cnVlLiovXG4gICAgdmFsaWRhdGVDdXJyZW50UGFnZShldmVudCwgY2FsbGJhY2s/KSB7XG4gICAgICAgIC8qSWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IHBhZ2UgbnVtYmVyIG9yIGludmFsaWQgdmFsdWUsIHRoZW4gaGlnaGxpZ2h0aW5nIHRoZSBmaWVsZCBzaG93aW5nIGVycm9yLiovXG4gICAgICAgIGlmIChldmVudCAmJiAoaXNOYU4odGhpcy5kbi5jdXJyZW50UGFnZSkgfHwgdGhpcy5kbi5jdXJyZW50UGFnZSA8PSAwIHx8ICh0aGlzLnBhZ2VDb3VudCAmJiAodGhpcy5kbi5jdXJyZW50UGFnZSA+IHRoaXMucGFnZUNvdW50IHx8IGlzTnVsbCh0aGlzLmRuLmN1cnJlbnRQYWdlKSkpKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZG4uY3VycmVudFBhZ2UgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1BhZ2UoZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRuLmN1cnJlbnRQYWdlID4gdGhpcy5wYWdlQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlQ291bnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5nb1RvUGFnZShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDdXJyZW50UGFnZShldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlID0gJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2EnKTtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdLZXlFJykge1xuICAgICAgICAgICAgdGFyZ2V0RWxlLmFkZENsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0RWxlLnJlbW92ZUNsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHBhZ2VDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICB0aGlzLl9kZWJvdW5jZWRQYWdlQ2hhbmdlZChldmVudCk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgcmVzcGVjdGl2ZSBwYWdlcy4qL1xuICAgIG5hdmlnYXRlUGFnZShpbmRleCwgZXZlbnQsIGlzUmVmcmVzaD8sIGNhbGxiYWNrPykge1xuICAgICAgICAvLyB3aGVuIG5hdmlnYXRlZCB0byBuZXh0IHBhZ2UgdHVybiBvbiB0aGUgaXNEYXRhTG9hZGluZyBmbGFnIHRvIHNob3cgdGhlIGxvYWRpbmcgaW5kaWNhdG9yXG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5wYXJlbnQuaXNEYXRhTG9hZGluZykgJiYgIXRoaXMuaXNEaXNhYmxlTmV4dCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuaXNEYXRhTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGluZmluaXRlIHNjcm9sbCBjYWxsaW5nIHRoZSBzaG93TG9hZGluZ0luZGljYXRvciBtZXRob2QgdG8gdXBkYXRlIHRoZSBsb2FkaW5nIG1lc3NhZ2UgaW1tZWRpYXRlbHkgd2hlbiBuYXZpZ2F0ZWQgdG8gbmV4dCBwYWdlXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQuaW5mU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQudmFyaWFibGVJbmZsaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2FsbERhdGFHcmlkTWV0aG9kKCdzaG93TG9hZGluZ0luZGljYXRvcicsIHRoaXMucGFyZW50LmxvYWRpbmdkYXRhbXNnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXNldCB0aGUgbGFzdCBhY3Rpb24gcGVyZm9ybWVkIHRvIFwic2Nyb2xsXCIgYW5kIGlzRGF0YXNldFVwZGF0ZWQgdG8gZmFsc2VcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5zZXRMYXN0QWN0aW9uUGVyZm9ybWVkKHRoaXMucGFyZW50LmdyaWRPcHRpb25zLkFDVElPTlMuREVGQVVMVCk7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5zZXRJc0RhdGFzZXRVcGRhdGVkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3BhZ2luYXRpb25jaGFuZ2UnLCB7JGV2ZW50OiB1bmRlZmluZWQsICRpbmRleDogdGhpcy5kbi5jdXJyZW50UGFnZX0pO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIGN1cnJlbnQgcGFnZSB0byBhIHZhbGlkIHBhZ2UgbnVtYmVyLlxuICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gK3RoaXMuZG4uY3VycmVudFBhZ2U7XG5cbiAgICAgICAgc3dpdGNoIChpbmRleCkge1xuICAgICAgICAgICAgY2FzZSAnZmlyc3QnOlxuICAgICAgICAgICAgICAgIGlmKHRoaXMucGFnaW5hdGlvbj8ubmV4dCAmJiB0aGlzLmRhdGFzb3VyY2U/LnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLnBhZ2luYXRpb24uaXNOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9GaXJzdFBhZ2UoaXNSZWZyZXNoLCBldmVudCwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXYnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGZpcnN0IHBhZ2UuKi9cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbj8ubmV4dCAmJiAodGhpcy5pc0ZpcnN0UGFnZSgpIHx8ICF0aGlzLnZhbGlkYXRlQ3VycmVudFBhZ2UoZXZlbnQsIGNhbGxiYWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYWdpbmF0aW9uPy5uZXh0KSB7IC8vIFdNUy0xODg2NzogRm9yIHNlcnZlciBzaWRlIHBhZ2luYXRpb24sIHNraXBwaW5nIHRoZSByZWd1bGFyIGZsb3cgYW5kIGVuYWJsaW5nIGlzTmV4dCBmbGFnIGluIHBhZ2luYXRpb24gbWV0YWRhdGFcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLnBhZ2luYXRpb24uaXNOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qRGVjcmVtZW50IHRoZSBjdXJyZW50IHBhZ2UgYnkgMS4qL1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgLT0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGxhc3QgcGFnZS4qL1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uPy5uZXh0ICYmICh0aGlzLmlzTGFzdFBhZ2UoKSB8fCAhdGhpcy52YWxpZGF0ZUN1cnJlbnRQYWdlKGV2ZW50LCBjYWxsYmFjaykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucGFnaW5hdGlvbj8ubmV4dCkgeyAvLyBXTVMtMTg4Njc6IEZvciBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uLCBza2lwcGluZyB0aGUgcmVndWxhciBmbG93IGFuZCBlbmFibGluZyBpc1ByZXYgZmxhZyBpbiBwYWdpbmF0aW9uIG1ldGFkYXRhXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzTmV4dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKkluY3JlbWVudCB0aGUgY3VycmVudCBwYWdlIGJ5IDEuKi9cbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlICs9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qTmF2aWdhdGUgdG8gdGhlIGN1cnJlbnQgcGFnZS4qL1xuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgc2V0QmluZERhdGFTZXQoYmluZGRhdGFzZXQsIHBhcmVudCwgZGF0YVNvdXJjZSwgZGF0YXNldD8sIGJpbmRkYXRhc291cmNlPywgZGF0YXNldEJvdW5kRXhwcj8sIHN0YXRlaGFuZGxlcj8pIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBiaW5kZGF0YXNldC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgYmluZFBhZ2luZ09wdGlvbnM7XG4gICAgICAgIHRoaXMuc3RhdGVoYW5kbGVyID0gc3RhdGVoYW5kbGVyO1xuICAgICAgICBpZiAocGFydHNbMF0gPT09ICdWYXJpYWJsZXMnIHx8IHBhcnRzWzBdID09PSAnV2lkZ2V0cycpIHtcbiAgICAgICAgICAgIGJpbmRQYWdpbmdPcHRpb25zID0gYCR7cGFydHNbMF19LiR7cGFydHNbMV19LnBhZ2luYXRpb25gO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYmluZGRhdGFzb3VyY2UgJiYgZGF0YXNldCAmJiAhZGF0YXNldEJvdW5kRXhwcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gZGF0YXNldDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJpbmRkYXRhc2V0ID0gYmluZGRhdGFzZXQ7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gd2F0Y2hpbmcgZm9yIGRhdGFzZXQgY2hhbmdlcyBldmVuIHdoZW4gZGF0YXNldCBpcyBib3VuZCB0byBcIml0ZW0uXCIgKGkuZS4gYnkgY2hlY2tpbmcgZm9yIGRhdGFzZXRCb3VuZEV4cHIpXG4gICAgICAgICAgICAvLyBpdGVtIGNvbnRleHQgaXMgcGFzc2VkIGFzIGRhdGFTb3VyY2UgaGVyZVxuICAgICAgICAgICAgLy8gW1RvZG8tQ1NQXTogY2hlY2sgaWYgc2FtZSBleHByIGZuIGlzIGdlbmVyYXRlZCBieSBwYXJlbnQgd2lkZ2V0IChsaXN0LCB0YWJsZSlcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgJHdhdGNoKFxuICAgICAgICAgICAgICAgICAgICBiaW5kZGF0YXNldCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0Qm91bmRFeHByID8gZGF0YVNvdXJjZSA6IHt9LFxuICAgICAgICAgICAgICAgICAgICBudiA9PiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gbnY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RlYm91bmNlZEFwcGx5RGF0YXNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV01TLTE5Mjg1OiBTZXR0aW5nIGRhdGFzZXQgb24gcHJveHkgb25seSB0byBoYW5kbGUgcHJvcGVydHljaGFuZ2UgaGFuZGxlciBjYWxsIGZvciB1bmRlZmluZWQgY2FzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gbnY7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBSZWdpc3RlciBhIHdhdGNoIG9uIHBhZ2luZyBvcHRpb25zLiBDYWxsIGRhdGFzZXQgcHJvcGVydHkgY2hhbmdlIGhhbmRsZXIgZXZlbiBpZiBwYWdpbmcgb3B0aW9ucyBjaGFuZ2VzIHRvIHJlZmxlY3QgcGFnaW5hdGlvbiBzdGF0ZVxuICAgICAgICAgICAgaWYgKCFiaW5kUGFnaW5nT3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZWl0aGVyIGdlbmVyYXRlIHdhdGNoIGV4cHIgZm4gb3IgcmVnaXN0ZXIgYW4gZXZlbnQgZnJvbSB0aGUgZGF0YXNvdXJjZSBpdHNlbGZcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgJHdhdGNoKFxuICAgICAgICAgICAgICAgICAgICBiaW5kUGFnaW5nT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RlYm91bmNlZEFwcGx5RGF0YXNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlZEFwcGx5RGF0YXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGFwcGx5IGRhdGFzb3VyY2Ugb25seSB3aGVuIGRhdGFzZXQgaXMgbm90IGJvdW5kIHRvIFwiaXRlbS5GSUVMRFwiXG4gICAgICAgIGlmICghZGF0YXNldEJvdW5kRXhwcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgZGF0YXNvdXJjZSBvZiBwYWdpbmF0aW9uIGZyb20gdGhlIHBhcmVudCB3aWRnZXRcbiAgICBzZXREYXRhU291cmNlKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudiwgb3YpIHtcbiAgICAgICAgbGV0IHBhZ2VTaXplLCBwcmV2UGFnZVNpemU7XG4gICAgICAgIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQub25EYXRhTmF2aWdhdG9yRGF0YVNldENoYW5nZSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLnBhcmVudC5vbkRhdGFOYXZpZ2F0b3JEYXRhU2V0Q2hhbmdlKG52KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IG52O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2V0IGxhc3QgYWN0aW9uIHBlcmZvcm1lZCB0byBcImRhdGFzZXRfdXBkYXRlXCIgd2hlbmV2ZXIgZGF0YXNldCBpcyBjaGFuZ2VkIGluIHRhYmxlIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5fdHJpZ2dlcmVkQnlVc2VyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoKSB7IC8vIGNhbGN1bGF0ZSBQYWdlc2l6ZSBvcHRpb25zIGJhc2VkIG9uIGFjdHVhbCBwYWdlIHNpemVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2VIYXNQYWdpbmcoKSkgeyAvLyBmb3IgTGl2ZSB2YXJpYWJsZXNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VTaXplID0gZ2V0KGRhdGEsICdwYWdpbmF0aW9uLnNpemUnKSB8fCBnZXQodGhpcy5kYXRhc291cmNlLCAncGFnaW5hdGlvbi5zaXplJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEVsZW1lbnRzID0gZ2V0KGRhdGEsICdwYWdpbmF0aW9uLnRvdGFsRWxlbWVudHMnKSB8fCBnZXQodGhpcy5kYXRhc291cmNlLCAncGFnaW5hdGlvbi50b3RhbEVsZW1lbnRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZSA9IHRoaXMucGFyZW50LnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcy5wYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdHVhbFBhZ2VTaXplID0gd2lkZ2V0U3RhdGU/LmFjdHVhbHBhZ2VzaXplIHx8IGN1cnJlbnRQYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3R1YWxQYWdlU2l6ZSA9IE51bWJlcih0aGlzLmFjdHVhbFBhZ2VTaXplKSA/IHRoaXMuYWN0dWFsUGFnZVNpemUgOiBnZXQodGhpcy5kYXRhc291cmNlLmRhdGFTZXQsIHRoaXMuYWN0dWFsUGFnZVNpemUpXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IFsuLi50aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnNdO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gcmFuZ2UodGhpcy5hY3R1YWxQYWdlU2l6ZSwgIE1hdGgubWF4KHRoaXMuYWN0dWFsUGFnZVNpemUgKyAxLCB0aGlzLmFjdHVhbFBhZ2VTaXplICsgdG90YWxFbGVtZW50cyksIHRoaXMuYWN0dWFsUGFnZVNpemUpOyAvLyBoZXJlIGRhdGEgaGFzIG9ubHkgdGhhdCBwYWdlIGRhdGEgYW5kIHBhZ2VzaXplIGhhcyB0b3RhbE5vb2YgRWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAod2lkZ2V0U3RhdGU/LnNlbGVjdGVkSXRlbSAmJiB3aWRnZXRTdGF0ZS5hY3R1YWxwYWdlc2l6ZSAhPT0gd2lkZ2V0U3RhdGUucGFnZXNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcmV2UGFnZVNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZQYWdlU2l6ZSA9IHRoaXMuYWN0dWFsUGFnZVNpemUgfHwgZGF0YT8ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gdGhpcy5oYW5kbGVTdGF0ZVBhcmFtc2Zvck5ld1BhZ2VTaXplKHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbSwgdGhpcy5wcmV2UGFnZVNpemUsIGRhdGE/Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlZEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5zZXRXaWRnZXRTdGF0ZSh0aGlzLnBhcmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlc2l6ZTogdGhpcy5tYXhSZXN1bHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxwYWdlc2l6ZTogdGhpcy5hY3R1YWxQYWdlU2l6ZSB8fCB0aGlzLm1heFJlc3VsdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbTogdXBkYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZQYWdlU2l6ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplID0gdGhpcy5wYXJlbnQuZ2V0QWN0dWFsUGFnZVNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5kZWZhdWx0UGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gWy4uLnRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9uc107XG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSByYW5nZShwYWdlU2l6ZSwgZGF0YS5sZW5ndGggKyBwYWdlU2l6ZSwgcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgZGF0YXNldCBpcyBub3QgaW4gY3VycmVudCBwYWdlLCBidXQgaW4gcHJldmlvdXMgb25lcyBkaXJlY3RseSBzZXQgdGhlIHJlc3VsdCB3aXRob3V0IHNldHRpbmcgcGFnZSB2YWx1ZXNcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE5vdEluQ3VycmVudFBhZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVzdWx0KGRhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2luZ1ZhbHVlcyhkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICduYXZpZ2F0aW9uJykge1xuICAgICAgICAgICAgaWYgKG52ID09PSAnQWR2YW5jZWQnKSB7IC8vIFN1cHBvcnQgZm9yIG9sZGVyIHByb2plY3RzIHdoZXJlIG5hdmlnYXRpb24gdHlwZSB3YXMgYWR2YW5jZWQgaW5zdGVhZCBvZiBjbGFzaWNcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSAnQ2xhc3NpYyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5hdlNpemUoKTtcbiAgICAgICAgICAgIHRoaXMubmF2Y29udHJvbHMgPSBudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICduYXZpZ2F0aW9uc2l6ZScpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2U2l6ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hdmlnYXRpb25hbGlnbicpIHtcbiAgICAgICAgICAgIHN3aXRjaENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYHRleHQtJHtudn1gLCBgdGV4dC0ke292fWApO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ21heFJlc3VsdHMnKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luZ1ZhbHVlcyh0aGlzLmRhdGFzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG4gICAvLyBjaGFuZ2UgdGhlIHNlbGVjdGVkSXRlbXMgcGFnZSBudW1iZXIgYW5kIGluZGV4IGluIHRoZSBzdGF0ZXBhcmFtcyB3aGVuIHBhZ2VzaXplIGlzIGNoYW5nZWRcbiAgICBoYW5kbGVTdGF0ZVBhcmFtc2Zvck5ld1BhZ2VTaXplKFxuICAgICAgICBzZWxlY3RlZEl0ZW06IHsgcGFnZTogbnVtYmVyOyBpbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgb2xkUGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgbmV3UGFnZVNpemU6IG51bWJlclxuICAgICk6IHsgcGFnZTogbnVtYmVyOyBpbmRleDogbnVtYmVyIH1bXSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW0ubWFwKCh7IHBhZ2UsIGluZGV4IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic29sdXRlSW5kZXggPSAocGFnZSAtIDEpICogb2xkUGFnZVNpemUgKyBpbmRleDtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhZ2UgPSBNYXRoLmZsb29yKGFic29sdXRlSW5kZXggLyBuZXdQYWdlU2l6ZSkgKyAxOyAvLyBiYWNrIHRvIDEtYmFzZWRcbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gYWJzb2x1dGVJbmRleCAlIG5ld1BhZ2VTaXplO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICAgICAgICAgICAgaW5kZXg6IG5ld0luZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRyb3Bkb3duS2V5ZG93bihldmVudCwgaW5kZXgpIHtcbiAgICAgICAgY29uc3QgJGl0ZW1zID0gJCgndWwjZHJvcGRvd24tYmFzaWMgYS5kcm9wZG93bi1pdGVtJyk7XG4gICAgICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9uO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IFNoaWZ0K1RhYiBhcyBBcnJvd1VwXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gKGluZGV4IC0gMSkgPCAwID8gbWF4SW5kZXggOiBpbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJlYXQgVGFiIG9yIEFycm93RG93biBhcyBBcnJvd0Rvd25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSAoaW5kZXggKyAxKSA+IG1heEluZGV4ID8gMCA6IGluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gKGluZGV4IC0gMSkgPCAwID8gbWF4SW5kZXggOiBpbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnNbdGhpcy5mb2N1c2VkSW5kZXhdO1xuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZShldmVudCwgc2VsZWN0ZWRPcHRpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNb3ZlIGZvY3VzIGFmdGVyIGluZGV4IGlzIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAkaXRlbXMuZXEodGhpcy5mb2N1c2VkSW5kZXgpPy5mb2N1cygpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgICAgIC8vIENsb3NlIGRyb3Bkb3duXG4gICAgICAgIHRoaXMuYnNEcm9wZG93bi5oaWRlKCk7XG4gICAgICAgIGNvbnN0ICR0b2dnbGVCdXR0b24gPSAkKCdidXR0b25bYXJpYS1jb250cm9scz1cImRyb3Bkb3duLWJhc2ljXCJdJyk7XG4gICAgICAgICR0b2dnbGVCdXR0b24uZm9jdXMoKTsgLy8gUmV0dXJuIGZvY3VzIHRvIGJ1dHRvblxuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIGdldHMgY2FsbGVkIG9uIGRyb3Bkb3duIG9wZW4gJiBjbG9zZVxuICAgIG9uT3BlbkNoYW5nZShpc09wZW4pIHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSAwO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbWFudWFsbHkgZm9jdXMgdGhlIGRyb3Bkb3duIGFzIGRyb3Bkb3duIGhhcyBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICBjb25zdCAkaXRlbXMgPSAkKCd1bCNkcm9wZG93bi1iYXNpYyBhLmRyb3Bkb3duLWl0ZW0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCAkZmlyc3RJdGVtID0gJGl0ZW1zLmVxKHRoaXMuZm9jdXNlZEluZGV4KTtcbiAgICAgICAgICAgICAgICAkZmlyc3RJdGVtPy5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQsIG5ld1BhZ2VTaXplKSB7XG4gICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzLnBhcmVudCk7XG4gICAgICAgICAgICBsZXQgdXBkYXRlZEl0ZW1zO1xuICAgICAgICBpZiAod2lkZ2V0U3RhdGU/LnNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgdXBkYXRlZEl0ZW1zID0gdGhpcy5oYW5kbGVTdGF0ZVBhcmFtc2Zvck5ld1BhZ2VTaXplKHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbSwgdGhpcy5tYXhSZXN1bHRzLCArbmV3UGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0dWFsUGFnZVNpemUgPSB0aGlzLmFjdHVhbFBhZ2VTaXplIHx8IHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgdGhpcy5tYXhSZXN1bHRzID0gK25ld1BhZ2VTaXplO1xuICAgICAgICB0aGlzLm1heFJlc3VsdHNFbWl0dGVyLmVtaXQodGhpcy5tYXhSZXN1bHRzKTtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlSGFzUGFnaW5nKCkgJiYgdGhpcy5kYXRhc291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFzb3VyY2UubWF4UmVzdWx0cyA9IHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMucGFyZW50LCB7XG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogMSxcbiAgICAgICAgICAgICAgICBwYWdlc2l6ZTogdGhpcy5tYXhSZXN1bHRzLFxuICAgICAgICAgICAgICAgIGFjdHVhbHBhZ2VzaXplOiB0aGlzLmFjdHVhbFBhZ2VTaXplIHx8IHRoaXMubWF4UmVzdWx0cyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW06IHVwZGF0ZWRJdGVtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcy5wYXJlbnQsIHtcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiAxLFxuICAgICAgICAgICAgICAgIHBhZ2VzaXplOiB0aGlzLm1heFJlc3VsdHMsXG4gICAgICAgICAgICAgICAgYWN0dWFscGFnZXNpemU6IHRoaXMuYWN0dWFsUGFnZVNpemUgfHwgdGhpcy5tYXhSZXN1bHRzXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubmF2aWdhdGVQYWdlKCdmaXJzdCcsICRldmVudCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnaW5nVmFsdWVzKCk7XG4gICAgICAgIGlmKHRoaXMubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdwb3BvdmVyLWNvbnRhaW5lciwgLnBvcG92ZXInKSl7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyb3BEb3duU2hvd24oJGV2ZW50OiBhbnkpIHtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSAkZXZlbnQ/Ll9lbGVtZW50Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZighY29udGFpbmVyKSByZXR1cm47XG5cbiAgICAgICAgYWRqdXN0VmVydGljYWxQb3NpdGlvbihcbiAgICAgICAgICAgICQoY29udGFpbmVyKSxcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignLml0ZW1zLXBlci1wYWdlIGRpdicpLFxuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLl9kcm9wZG93bixcbiAgICAgICAgICAgICQoY29udGFpbmVyPy5xdWVyeVNlbGVjdG9yKCd1bFtpZD1cImRyb3Bkb3duLWJhc2ljXCJdJykpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kcm9wZG93blNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uRHJvcGRvd25TY3JvbGwoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5kcm9wZG93blNjcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgIH1cblxuICAgIG9uRHJvcGRvd25TY3JvbGwoKSB7XG4gICAgICAgIC8vIG9uIHNjcm9sbCBib29zdHJhcCBpcyBhcHBseWluZyAzZCB0cmFuc2xhdGlvbiB0byBwcmV2ZW50IGZyb20gdGhhdCBhZGRlZCB0aGlzIGR1bW15IGZ1bmN0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkhpZGRlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25TY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5kcm9wZG93blNjcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJvcGRvd25TY3JvbGxIYW5kbGVyID0gdW5kZWZpbmVkITtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25FbGVtID0gIHRoaXMubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgcGFnaW5hdGlvbkVsZW0ub25jbGljayA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duU2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuZHJvcGRvd25TY3JvbGxIYW5kbGVyLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIGluaXRpYWxpemF0aW9uIHRpbWVvdXQgaWYgc3RpbGwgcGVuZGluZ1xuICAgICAgICBpZiAodGhpcy5faW5pdFRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2luaXRUaW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy5faW5pdFRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENvbXBsZXRlIEV2ZW50RW1pdHRlcnNcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0RW1pdHRlcikge1xuICAgICAgICAgICAgdGhpcy5yZXN1bHRFbWl0dGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWF4UmVzdWx0c0VtaXR0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWF4UmVzdWx0c0VtaXR0ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogTnVsbGlmeSBkZWJvdW5jZWQgZnVuY3Rpb24gY2xvc3VyZXNcbiAgICAgICAgdGhpcy5fZGVib3VuY2VkQXBwbHlEYXRhc2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZGVib3VuY2VkUGFnZUNoYW5nZWQgPSBudWxsO1xuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZGF0YSBhcnJheXMgYW5kIG9iamVjdHNcbiAgICAgICAgdGhpcy5kYXRhc2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fX2Z1bGxEYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZXN1bHQgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlckZpZWxkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBudWxsO1xuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgcGFnZSBzaXplIG9wdGlvbnMgYXJyYXlcbiAgICAgICAgaWYgKHRoaXMucGFnZVNpemVPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBkYXRhc291cmNlIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLmRhdGFzb3VyY2UgPSBudWxsO1xuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgcGFyZW50IHJlZmVyZW5jZVxuICAgICAgICB0aGlzLnBhcmVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gQ2FsbCBwYXJlbnQgbmdPbkRlc3Ryb3kgKHNldHMgaXNEZXN0cm95ZWQgPSB0cnVlKVxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIlxuQGlmIChuYXZjb250cm9scyA9PT0gJ0NsYXNzaWMnKSB7XG48dWwgY2xhc3M9XCJwYWdpbmF0aW9uIGFkdmFuY2VkIHt7bmF2aWdhdGlvbkNsYXNzfX1cIj5cbiAgICBAaWYgKGFsbG93cGFnZXNpemVjaGFuZ2UgJiYgIHBhZ2VTaXplT3B0aW9ucz8uWzBdPHJvd1N1bW1hcnk/LnRvdGFsUmVjb3Jkcykge1xuICAgICAgICA8bGkgY2xhc3M9XCJpdGVtcy1wZXItcGFnZVwiPlxuICAgICAgICAgIDxsYWJlbCBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX0lURU1TX1BFUl9QQUdFXCIgY2xhc3M9XCJhcHAtbGFiZWxcIj57e2FwcExvY2FsZS5MQUJFTF9JVEVNU19QRVJfUEFHRX19IDo8L2xhYmVsPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgZHJvcGRvd24gIGNvbnRhaW5lcj1cImJvZHlcIiAob25TaG93bik9XCJvbkRyb3BEb3duU2hvd24oJGV2ZW50KVwiIChvbkhpZGRlbik9XCJvbkRyb3Bkb3duSGlkZGVuKClcIiAoaXNPcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImJ1dHRvbi1iYXNpY1wiIGRyb3Bkb3duVG9nZ2xlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgICAge3ttYXhSZXN1bHRzfX0gPHNwYW4gY2xhc3M9XCJjYXJldFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8dWwgaWQ9XCJkcm9wZG93bi1iYXNpY1wiICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51IHBhZ2VzaXplLW9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImJ1dHRvbi1iYXNpY1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgcGFnZVNpemVPcHRpb25zOyB0cmFjayBvcHRpb247IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IG9wdGlvbiA9PSBtYXhSZXN1bHRzIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50LCBvcHRpb24pXCIgKGtleWRvd24pPVwib25Ecm9wZG93bktleWRvd24oJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImkgPT09IGZvY3VzZWRJbmRleCA/IDAgOiAtMVwiPnt7b3B0aW9ufX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICBAaWYgKHJvd1N1bW1hcnk/LnRvdGFsUmVjb3Jkcykge1xuICAgICAgICA8bGkgY2xhc3M9XCJpdGVtLXJhbmdlXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3Bhbj57e3Jvd1N1bW1hcnkuc3RhcnRJbmRleH19IC0ge3tyb3dTdW1tYXJ5LmVuZEluZGV4fX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5vZjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7cm93U3VtbWFyeS50b3RhbFJlY29yZHN9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgfVxuICAgIEBpZiAoIShkYXRhU2l6ZTw9bWF4UmVzdWx0cykpIHtcbiAgICA8bGkgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXNEaXNhYmxlRmlyc3R9XCI+XG4gICAgICAgIDxhIFt0aXRsZV09XCJhcHBMb2NhbGUuTEFCRUxfRklSU1RcIiBuYW1lPVwiZmlyc3RcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlRmlyc3RcIlxuICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVQYWdlKCdmaXJzdCcsICRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktZmlyc3QtcGFnZVwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBmaXJzdCBwYWdlIHt7IGlzRGlzYWJsZUZpcnN0ID8gJyAsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKCEoZGF0YVNpemU8PW1heFJlc3VsdHMpKSB7XG4gICAgPGxpIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZVByZXZpb3VzfVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX1BSRVZJT1VTXCIgbmFtZT1cInByZXZcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZVByZXZpb3VzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ3ByZXYnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tbGVmdFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBwcmV2aW91cyBwYWdlIHt7IGlzRGlzYWJsZVByZXZpb3VzID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgfVxuICAgIEBpZiAoIShkYXRhU2l6ZTw9bWF4UmVzdWx0cykpIHtcbiAgICA8bGkgY2xhc3M9XCJwYWdlY291bnQgZGlzYWJsZWRcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBhcmlhLWxhYmVsPVwiQ2hhbmdlIFBhZ2UgTnVtYmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkbi5jdXJyZW50UGFnZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1Nob3dpbmcgUGFnZSAnICsgZG4uY3VycmVudFBhZ2UgKyAnIG9mICcgKyBwYWdlQ291bnRcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIChjaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIi8+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKCEoZGF0YVNpemU8PW1heFJlc3VsdHMpKSB7XG4gICAgPGxpIGNsYXNzPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgPGEgW2hpZGRlbl09XCJpc0Rpc2FibGVDb3VudFwiPiAvIHt7cGFnZUNvdW50fX08L2E+XG4gICAgPC9saT5cbiAgICB9XG4gICAgQGlmICghKGRhdGFTaXplPD1tYXhSZXN1bHRzKSkge1xuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVOZXh0fVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX05FWFRcIiBuYW1lPVwibmV4dFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVOZXh0XCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlUGFnZSgnbmV4dCcsICRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktY2hldnJvbi1yaWdodFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBuZXh0IHBhZ2Uge3sgaXNEaXNhYmxlTmV4dCA/ICcgLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICB9XG4gICAgQGlmICghKGRhdGFTaXplPD1tYXhSZXN1bHRzKSkge1xuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVMYXN0fVwiPlxuICAgICAgPGEgW3RpdGxlXT1cImFwcExvY2FsZS5MQUJFTF9MQVNUXCIgbmFtZT1cImxhc3RcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlTGFzdFwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ2xhc3QnLCAkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktbGFzdC1wYWdlXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+R28gdG8gbGFzdCBwYWdlIHt7IGlzRGlzYWJsZUxhc3QgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKHNob3dyZWNvcmRjb3VudCkge1xuICAgICAgPGxpIGNsYXNzPVwidG90YWxjb3VudCBkaXNhYmxlZFwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPnt7YXBwTG9jYWxlLkxBQkVMX1RPVEFMX1JFQ09SRFN9fToge3tkYXRhU2l6ZX19PC9hPlxuICAgICAgPC9saT5cbiAgICB9XG48L3VsPlxufVxuQGlmIChuYXZjb250cm9scyA9PT0gJ1BhZ2VyJykge1xuICA8dWwgY2xhc3M9XCJwYWdlciB7e25hdmlnYXRpb25DbGFzc319XCI+XG4gICAgICAgIEBpZiAoYWxsb3dwYWdlc2l6ZWNoYW5nZSAmJiAgcGFnZVNpemVPcHRpb25zPy5bMF08cm93U3VtbWFyeT8udG90YWxSZWNvcmRzKSB7XG4gICAgICAgIDxsaSBjbGFzcz1cIml0ZW1zLXBlci1wYWdlXCI+XG4gICAgICAgICAgPGxhYmVsIFt0aXRsZV09XCJhcHBMb2NhbGUuTEFCRUxfSVRFTVNfUEVSX1BBR0VcIiBjbGFzcz1cImFwcC1sYWJlbFwiPnt7YXBwTG9jYWxlLkxBQkVMX0lURU1TX1BFUl9QQUdFfX0gOjwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgKG9uU2hvd24pPVwib25Ecm9wRG93blNob3duKCRldmVudClcIiAob25IaWRkZW4pPVwib25Ecm9wZG93bkhpZGRlbigpXCIgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJidXR0b24tYmFzaWNcIiBkcm9wZG93blRvZ2dsZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRyb3Bkb3duLWJhc2ljXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bWF4UmVzdWx0c319IDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPHVsIGlkPVwiZHJvcGRvd24tYmFzaWNcIiAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBwYWdlc2l6ZS1vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJidXR0b24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHBhZ2VTaXplT3B0aW9uczsgdHJhY2sgb3B0aW9uOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IG9wdGlvbiA9PSBtYXhSZXN1bHRzIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQsIG9wdGlvbilcIiAoa2V5ZG93bik9XCJvbkRyb3Bkb3duS2V5ZG93bigkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpID09PSBmb2N1c2VkSW5kZXggPyAwIDogLTFcIj57e29wdGlvbn19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIEBpZiAocm93U3VtbWFyeT8udG90YWxSZWNvcmRzKSB7XG4gICAgICAgIDxsaSBjbGFzcz1cIml0ZW0tcmFuZ2VcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tyb3dTdW1tYXJ5LnN0YXJ0SW5kZXh9fSAtIHt7cm93U3VtbWFyeS5lbmRJbmRleH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPm9mPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cm93U3VtbWFyeS50b3RhbFJlY29yZHN9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgfVxuQGlmICghKGRhdGFTaXplPD1tYXhSZXN1bHRzKSkge1xuICAgIDxsaSBjbGFzcz1cInByZXZpb3VzXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXNEaXNhYmxlUHJldmlvdXN9XCI+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ3ByZXYnLCAkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVQcmV2aW91c1wiPlxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tbGVmdFwiPjwvaT48L3NwYW4+XG4gICAgICAgIHt7YXBwTG9jYWxlLkxBQkVMX1BSRVZJT1VTfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgaXNEaXNhYmxlUHJldmlvdXMgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBjbGFzcz1cIm5leHRcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVOZXh0fVwiPlxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwibmF2aWdhdGVQYWdlKCduZXh0JywgJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlTmV4dFwiPlxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tcmlnaHRcIj48L2k+PC9zcGFuPlxuICAgICAgICB7e2FwcExvY2FsZS5MQUJFTF9ORVhUfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgaXNEaXNhYmxlTmV4dCA/ICcgLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIH1cbiAgPC91bD5cbn1cblxuQGlmIChuYXZjb250cm9scyA9PT0gJ0Jhc2ljJykge1xuICAgIEBpZiAoYWxsb3dwYWdlc2l6ZWNoYW5nZSAmJiAgcGFnZVNpemVPcHRpb25zPy5bMF08cm93U3VtbWFyeT8udG90YWxSZWNvcmRzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtcGVyLXBhZ2VcIj5cbiAgICAgICAgPGxhYmVsIFt0aXRsZV09XCJhcHBMb2NhbGUuTEFCRUxfSVRFTVNfUEVSX1BBR0VcIiBjbGFzcz1cImFwcC1sYWJlbFwiPnt7YXBwTG9jYWxlLkxBQkVMX0lURU1TX1BFUl9QQUdFIH19IDo8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgIChvblNob3duKT1cIm9uRHJvcERvd25TaG93bigkZXZlbnQpXCIgKG9uSGlkZGVuKT1cIm9uRHJvcGRvd25IaWRkZW4oKVwiIChpc09wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJidXR0b24tYmFzaWNcIiBkcm9wZG93blRvZ2dsZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICB7e21heFJlc3VsdHN9fSA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8dWwgaWQ9XCJkcm9wZG93bi1iYXNpY1wiICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51IHBhZ2VzaXplLW9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiYnV0dG9uLWJhc2ljXCI+XG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHBhZ2VTaXplT3B0aW9uczsgdHJhY2sgb3B0aW9uOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogb3B0aW9uID09IG1heFJlc3VsdHMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50LCBvcHRpb24pXCIgKGtleWRvd24pPVwib25Ecm9wZG93bktleWRvd24oJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaSA9PT0gZm9jdXNlZEluZGV4ID8gMCA6IC0xXCI+e3tvcHRpb259fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChyb3dTdW1tYXJ5Py50b3RhbFJlY29yZHMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcmFuZ2VcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuPnt7cm93U3VtbWFyeS5zdGFydEluZGV4fX0gLSB7e3Jvd1N1bW1hcnkuZW5kSW5kZXh9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPm9mPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3tyb3dTdW1tYXJ5LnRvdGFsUmVjb3Jkc319PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGlmICghKGRhdGFTaXplPD1tYXhSZXN1bHRzKSkge1xuICAgICAgPHBhZ2luYXRpb24gY2xhc3M9XCJwYWdpbmF0aW9uIGJhc2ljXCIgW25nQ2xhc3NdPVwibmF2aWdhdGlvbkNsYXNzXCIgcm9sZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICBbaXRlbXNQZXJQYWdlXT1cIm1heFJlc3VsdHNcIiBbdG90YWxJdGVtc109XCJkYXRhU2l6ZVwiXG4gICAgICAgIChwYWdlQ2hhbmdlZCk9XCJwYWdlQ2hhbmdlZCgkZXZlbnQpXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOnRydWV9XCIgW25nTW9kZWxdPVwiZG4uY3VycmVudFBhZ2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTaG93aW5nIFBhZ2UgJyArIGRuLmN1cnJlbnRQYWdlICsgJyBvZiAnICsgcGFnZUNvdW50ICsgJyBwYWdlcydcIlxuICAgICAgICBbYm91bmRhcnlMaW5rc109XCJib3VuZGFyeWxpbmtzXCIgW21heFNpemVdPVwibWF4c2l6ZVwiXG4gICAgICAgIFtkaXJlY3Rpb25MaW5rc109XCJkaXJlY3Rpb25saW5rc1wiXG4gICAgICAgIGZpcnN0VGV4dD1cIkZpcnRzdFwiIGxhc3RUZXh0PVwiTGFzdFwiXG4gICAgICAgIFtjdXN0b21QcmV2aW91c1RlbXBsYXRlXT1cInByZXZUZW1wbGF0ZVwiXG4gICAgICAgIFtjdXN0b21OZXh0VGVtcGxhdGVdPVwibmV4dFRlbXBsYXRlXCJcbiAgICAgICAgW2N1c3RvbVBhZ2VUZW1wbGF0ZV09XCJwYWdlVGVtcGxhdGVcIj48L3BhZ2luYXRpb24+XG4gICAgfVxufVxuXG5AaWYgKG5hdmNvbnRyb2xzID09PSAnQmFzaWMnICYmIHNob3dyZWNvcmRjb3VudCkge1xuICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uXCI+XG4gICAgPGxpIGNsYXNzPVwidG90YWxjb3VudCBkaXNhYmxlZCBiYXNpY2NvdW50XCI+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPnt7YXBwTG9jYWxlLkxBQkVMX1RPVEFMX1JFQ09SRFN9fToge3tkYXRhU2l6ZX19PC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG59XG5cbjxuZy10ZW1wbGF0ZSAjcGFnZVRlbXBsYXRlIGxldC1wYWdlPlxuICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBbYXR0ci5kYXRhLWlzYWNpdHZlcGFnZV09XCJwYWdlLmFjdGl2ZVwiPnt7J1BhZ2UgJ319PC9zcGFuPlxuICB7e3BhZ2UubnVtYmVyfX1cbiAgQGlmIChwYWdlLmFjdGl2ZSkge1xuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPiB7eycsIFNob3dpbmcgcGFnZSAnICsgcGFnZS5udW1iZXIgKyAnIG9mICcgKyBwYWdlQ291bnR9fTwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJldlRlbXBsYXRlIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIFthdHRyLmRhdGEtaXNkaXNhYmxlZF09XCJkaXNhYmxlZFwiPkdvIHRvIFByZXZpb3VzIHBhZ2Uge3tkaXNhYmxlZCA/ICcsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNuZXh0VGVtcGxhdGUgbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgW2F0dHIuZGF0YS1pc2Rpc2FibGVkXT1cImRpc2FibGVkXCI+R28gdG8gTmV4dCBwYWdlIHt7ZGlzYWJsZWQgPyAnLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|