@wavemaker/app-ng-runtime 11.14.1-rc.6310 → 11.14.2-rc.6311
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/components/advanced/carousel/bundles/index.umd.js +15 -1
- package/components/advanced/carousel/carousel.directive.d.ts +1 -0
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
- package/components/advanced/carousel/fesm2022/index.mjs +15 -1
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/bundles/index.umd.js +24 -3
- package/components/advanced/login/esm2022/login.component.mjs +25 -4
- package/components/advanced/login/fesm2022/index.mjs +24 -3
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +5 -2
- package/components/base/bundles/index.umd.js +331 -36
- package/components/base/directives/show-in-device.directive.d.ts +2 -1
- package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
- package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
- package/components/base/fesm2022/index.mjs +327 -34
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
- package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
- package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
- package/components/basic/anchor/bundles/index.umd.js +13 -1
- package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
- package/components/basic/anchor/fesm2022/index.mjs +13 -1
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
- package/components/basic/html/bundles/index.umd.js +13 -1
- package/components/basic/html/esm2022/html.directive.mjs +14 -2
- package/components/basic/html/fesm2022/index.mjs +13 -1
- package/components/basic/html/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/bundles/index.umd.js +17 -1
- package/components/basic/label/esm2022/label.directive.mjs +18 -2
- package/components/basic/label/fesm2022/index.mjs +17 -1
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/label.directive.d.ts +3 -2
- package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
- package/components/basic/search/bundles/index.umd.js +31 -5
- package/components/basic/search/esm2022/scrollable.directive.mjs +13 -4
- package/components/basic/search/esm2022/search.component.mjs +20 -3
- package/components/basic/search/fesm2022/index.mjs +31 -5
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/scrollable.directive.d.ts +5 -3
- package/components/basic/search/search.component.d.ts +3 -2
- package/components/basic/spinner/bundles/index.umd.js +9 -1
- package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
- package/components/basic/spinner/fesm2022/index.mjs +9 -1
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
- package/components/basic/spinner/spinner.component.d.ts +4 -2
- package/components/chart/bundles/index.umd.js +21 -3
- package/components/chart/esm2022/chart.component.mjs +22 -4
- package/components/chart/fesm2022/index.mjs +21 -3
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
- package/components/containers/accordion/accordion.directive.d.ts +5 -2
- package/components/containers/accordion/bundles/index.umd.js +49 -2
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
- package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
- package/components/containers/accordion/fesm2022/index.mjs +49 -2
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/bundles/index.umd.js +13 -0
- package/components/containers/panel/esm2022/panel.component.mjs +14 -1
- package/components/containers/panel/fesm2022/index.mjs +13 -0
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +3 -2
- package/components/containers/tabs/bundles/index.umd.js +54 -2
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
- package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
- package/components/containers/tabs/fesm2022/index.mjs +54 -2
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
- package/components/containers/tabs/tabs.component.d.ts +5 -2
- package/components/containers/wizard/bundles/index.umd.js +47 -3
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
- package/components/containers/wizard/fesm2022/index.mjs +47 -3
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
- package/components/containers/wizard/wizard.component.d.ts +4 -2
- package/components/data/card/bundles/index.umd.js +17 -1
- package/components/data/card/card-content/card-content.component.d.ts +3 -2
- package/components/data/card/card.component.d.ts +4 -2
- package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
- package/components/data/card/esm2022/card.component.mjs +13 -2
- package/components/data/card/fesm2022/index.mjs +17 -1
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +92 -0
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
- package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
- package/components/data/form/esm2022/form.component.mjs +27 -1
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
- package/components/data/form/fesm2022/index.mjs +92 -0
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +3 -2
- package/components/data/form/form-field/form-field.directive.d.ts +3 -2
- package/components/data/form/form-widget.directive.d.ts +3 -2
- package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
- package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
- package/components/data/form/live-form/live-form.directive.d.ts +3 -1
- package/components/data/list/bundles/index.umd.js +213 -19
- package/components/data/list/esm2022/list-item.directive.mjs +95 -11
- package/components/data/list/esm2022/list.component.mjs +120 -10
- package/components/data/list/fesm2022/index.mjs +213 -19
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +7 -2
- package/components/data/list/list.component.d.ts +7 -0
- package/components/data/live-table/bundles/index.umd.js +13 -1
- package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
- package/components/data/live-table/fesm2022/index.mjs +13 -1
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +4 -2
- package/components/data/pagination/bundles/index.umd.js +57 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
- package/components/data/pagination/fesm2022/index.mjs +57 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +4 -2
- package/components/data/table/bundles/index.umd.js +345 -15
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table.component.mjs +193 -12
- package/components/data/table/fesm2022/index.mjs +345 -15
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +3 -2
- package/components/data/table/table-column/table-column.directive.d.ts +3 -2
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
- package/components/data/table/table-cud.directive.d.ts +3 -1
- package/components/data/table/table-filter.directive.d.ts +3 -1
- package/components/data/table/table-row/table-row.directive.d.ts +3 -2
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
- package/components/data/table/table.component.d.ts +6 -2
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
- package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/bundles/index.umd.js +15 -2
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
- package/components/dialogs/default/fesm2022/index.mjs +15 -2
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
- package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
- package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
- package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
- package/components/input/base-form/base-form.component.d.ts +4 -2
- package/components/input/base-form/bundles/index.umd.js +16 -2
- package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
- package/components/input/base-form/fesm2022/index.mjs +16 -2
- package/components/input/base-form/fesm2022/index.mjs.map +1 -1
- package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
- package/components/input/base-form-custom/bundles/index.umd.js +13 -2
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
- package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
- package/components/input/checkbox/bundles/index.umd.js +7 -0
- package/components/input/checkbox/checkbox.component.d.ts +3 -2
- package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
- package/components/input/checkbox/fesm2022/index.mjs +7 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
- package/components/input/checkboxset/bundles/index.umd.js +18 -2
- package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
- package/components/input/checkboxset/fesm2022/index.mjs +18 -2
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/bundles/index.umd.js +45 -5
- package/components/input/chips/chips.component.d.ts +3 -2
- package/components/input/chips/esm2022/chips.component.mjs +46 -6
- package/components/input/chips/fesm2022/index.mjs +45 -5
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/bundles/index.umd.js +8 -0
- package/components/input/color-picker/color-picker.component.d.ts +3 -2
- package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
- package/components/input/color-picker/fesm2022/index.mjs +8 -0
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/composite/bundles/index.umd.js +10 -1
- package/components/input/composite/composite.directive.d.ts +3 -2
- package/components/input/composite/esm2022/composite.directive.mjs +11 -2
- package/components/input/composite/fesm2022/index.mjs +10 -1
- package/components/input/composite/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/bundles/index.umd.js +7 -0
- package/components/input/currency/currency.component.d.ts +3 -2
- package/components/input/currency/esm2022/currency.component.mjs +8 -1
- package/components/input/currency/fesm2022/index.mjs +7 -0
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
- package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date/bundles/index.umd.js +22 -0
- package/components/input/epoch/date/date.component.d.ts +1 -0
- package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
- package/components/input/epoch/date/fesm2022/index.mjs +22 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/bundles/index.umd.js +25 -8
- package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
- package/components/input/file-upload/fesm2022/index.mjs +25 -8
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +3 -0
- package/components/input/number/bundles/index.umd.js +8 -0
- package/components/input/number/esm2022/number.component.mjs +9 -1
- package/components/input/number/fesm2022/index.mjs +8 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -1
- package/components/input/number/number.component.d.ts +3 -2
- package/components/input/radioset/bundles/index.umd.js +18 -2
- package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
- package/components/input/radioset/fesm2022/index.mjs +18 -2
- package/components/input/radioset/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/radioset.component.d.ts +4 -2
- package/components/input/rating/bundles/index.umd.js +10 -0
- package/components/input/rating/esm2022/rating.component.mjs +11 -1
- package/components/input/rating/fesm2022/index.mjs +10 -0
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/rating.component.d.ts +3 -2
- package/components/input/select/bundles/index.umd.js +6 -0
- package/components/input/select/esm2022/select.component.mjs +7 -1
- package/components/input/select/fesm2022/index.mjs +6 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -1
- package/components/input/select/select.component.d.ts +3 -2
- package/components/input/slider/bundles/index.umd.js +10 -0
- package/components/input/slider/esm2022/slider.component.mjs +11 -1
- package/components/input/slider/fesm2022/index.mjs +10 -0
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +3 -2
- package/components/input/switch/bundles/index.umd.js +22 -2
- package/components/input/switch/esm2022/switch.component.mjs +23 -3
- package/components/input/switch/fesm2022/index.mjs +22 -2
- package/components/input/switch/fesm2022/index.mjs.map +1 -1
- package/components/input/switch/switch.component.d.ts +3 -2
- package/components/input/text/bundles/index.umd.js +36 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
- package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
- package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
- package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
- package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
- package/components/input/text/fesm2022/index.mjs +36 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -1
- package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
- package/components/input/text/input-color/input-color.component.d.ts +3 -2
- package/components/input/text/input-email/input-email.component.d.ts +3 -2
- package/components/input/text/input-number/input-number.component.d.ts +3 -2
- package/components/input/text/input-text/input-text.component.d.ts +3 -2
- package/components/input/textarea/bundles/index.umd.js +7 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
- package/components/input/textarea/fesm2022/index.mjs +7 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -1
- package/components/input/textarea/textarea.component.d.ts +3 -2
- package/components/navigation/menu/bundles/index.umd.js +55 -6
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
- package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
- package/components/navigation/menu/fesm2022/index.mjs +55 -6
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
- package/components/navigation/menu/nav/nav.component.d.ts +3 -2
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
- package/components/navigation/navbar/bundles/index.umd.js +5 -0
- package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
- package/components/navigation/navbar/fesm2022/index.mjs +5 -0
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +3 -2
- package/components/navigation/popover/bundles/index.umd.js +65 -13
- package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
- package/components/navigation/popover/fesm2022/index.mjs +62 -10
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +11 -3
- package/components/page/default/bundles/index.umd.js +30 -6
- package/components/page/default/esm2022/layout.directive.mjs +9 -1
- package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
- package/components/page/default/esm2022/router-outlet.directive.mjs +13 -6
- package/components/page/default/fesm2022/index.mjs +30 -6
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +3 -2
- package/components/page/default/page-content/page-content.component.d.ts +3 -2
- package/components/page/default/router-outlet.directive.d.ts +5 -2
- package/components/page/left-panel/bundles/index.umd.js +16 -0
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
- package/components/page/left-panel/fesm2022/index.mjs +16 -0
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +3 -2
- package/components/page/top-nav/bundles/index.umd.js +2 -1
- package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- package/components/page/top-nav/fesm2022/index.mjs +2 -1
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/prefab/bundles/index.umd.js +4 -0
- package/components/prefab/esm2022/prefab.directive.mjs +5 -1
- package/components/prefab/fesm2022/index.mjs +4 -0
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +391 -94
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/services/viewport.service.mjs +24 -10
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/dom.mjs +18 -2
- package/core/esm2022/utils/event-notifier.mjs +5 -2
- package/core/esm2022/utils/lru-cache.mjs +16 -2
- package/core/esm2022/utils/utils.mjs +6 -2
- package/core/esm2022/utils/watcher.mjs +323 -81
- package/core/fesm2022/index.mjs +390 -96
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/services/viewport.service.d.ts +5 -2
- package/core/types/types.d.ts +1 -0
- package/core/utils/lru-cache.d.ts +6 -0
- package/core/utils/utils.d.ts +1 -0
- package/core/utils/watcher.d.ts +26 -5
- package/http/bundles/index.umd.js +31 -1
- package/http/esm2022/http.service.mjs +32 -2
- package/http/fesm2022/index.mjs +31 -1
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/http.service.d.ts +6 -2
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +9 -0
- package/oAuth/esm2022/oAuth.service.mjs +10 -1
- package/oAuth/fesm2022/index.mjs +9 -0
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/oAuth.service.d.ts +3 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +367 -32
- package/runtime/base/components/app-component/app.component.d.ts +4 -0
- package/runtime/base/components/prefab-preview.component.d.ts +5 -2
- package/runtime/base/directives/accessroles.directive.d.ts +4 -3
- package/runtime/base/directives/prefab.directive.d.ts +3 -2
- package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
- package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
- package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
- package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
- package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
- package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
- package/runtime/base/esm2022/services/app.manager.service.mjs +40 -12
- package/runtime/base/esm2022/services/app.service.mjs +34 -2
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
- package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
- package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
- package/runtime/base/fesm2022/index.mjs +368 -33
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/runtime-base.module.d.ts +2 -2
- package/runtime/base/services/app.manager.service.d.ts +6 -1
- package/runtime/base/services/app.service.d.ts +12 -2
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
- package/runtime/base/services/spinner.service.d.ts +3 -1
- package/runtime/base/util/fragment-monitor.d.ts +6 -0
- package/runtime/dynamic/bundles/index.umd.js +5 -0
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
- package/runtime/dynamic/fesm2022/index.mjs +5 -0
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- package/scripts/datatable/datatable.js +100 -14
- package/security/bundles/index.umd.js +41 -2
- package/security/esm2022/security.service.mjs +42 -3
- package/security/fesm2022/index.mjs +41 -2
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/security.service.d.ts +5 -2
- package/variables/bundles/index.umd.js +50 -6
- package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
- package/variables/esm2022/service/variables.service.mjs +8 -2
- package/variables/fesm2022/index.mjs +50 -6
- package/variables/fesm2022/index.mjs.map +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AfterViewInit, Injector } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, Injector, OnDestroy } from '@angular/core';
|
|
2
2
|
import { StylableComponent } from '@wm/components/base';
|
|
3
3
|
import { AccordionDirective } from '../accordion.directive';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class AccordionPaneComponent extends StylableComponent implements AfterViewInit {
|
|
5
|
+
export declare class AccordionPaneComponent extends StylableComponent implements AfterViewInit, OnDestroy {
|
|
6
6
|
private accordionRef;
|
|
7
7
|
static initializeProps: void;
|
|
8
8
|
isActive: boolean;
|
|
@@ -40,6 +40,7 @@ export declare class AccordionPaneComponent extends StylableComponent implements
|
|
|
40
40
|
private notifyParent;
|
|
41
41
|
onPropertyChange(key: any, nv: any, ov: any): void;
|
|
42
42
|
ngAfterViewInit(): void;
|
|
43
|
+
ngOnDestroy(): void;
|
|
43
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<AccordionPaneComponent, [null, null, { optional: true; }]>;
|
|
44
45
|
static ɵcmp: i0.ɵɵComponentDeclaration<AccordionPaneComponent, "div[wmAccordionPane]", ["wmAccordionPane"], {}, {}, ["reDrawableComponents"], ["*"], true, never>;
|
|
45
46
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AfterContentInit, Injector, QueryList } from '@angular/core';
|
|
1
|
+
import { AfterContentInit, Injector, OnDestroy, QueryList } from '@angular/core';
|
|
2
2
|
import { DynamicComponentRefProvider, StatePersistence } from '@wm/core';
|
|
3
3
|
import { StylableComponent } from '@wm/components/base';
|
|
4
4
|
import { AccordionPaneComponent } from './accordion-pane/accordion-pane.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class AccordionDirective extends StylableComponent implements AfterContentInit {
|
|
6
|
+
export declare class AccordionDirective extends StylableComponent implements AfterContentInit, OnDestroy {
|
|
7
7
|
static initializeProps: void;
|
|
8
8
|
defaultpaneindex: number;
|
|
9
9
|
closeothers: boolean;
|
|
@@ -17,6 +17,8 @@ export declare class AccordionDirective extends StylableComponent implements Aft
|
|
|
17
17
|
private dynamicPaneIndex;
|
|
18
18
|
private dynamicPanes;
|
|
19
19
|
fieldDefs: any;
|
|
20
|
+
private panesChangesSubscription;
|
|
21
|
+
private dynamicComponentRefs;
|
|
20
22
|
panes: QueryList<AccordionPaneComponent>;
|
|
21
23
|
constructor(inj: Injector, statePersistence: StatePersistence, dynamicComponentProvider: DynamicComponentRefProvider, explicitContext: any);
|
|
22
24
|
/**
|
|
@@ -54,6 +56,7 @@ export declare class AccordionDirective extends StylableComponent implements Aft
|
|
|
54
56
|
private onDataChange;
|
|
55
57
|
onPropertyChange(key: string, nv: any, ov?: any): void;
|
|
56
58
|
ngAfterContentInit(): void;
|
|
59
|
+
ngOnDestroy(): void;
|
|
57
60
|
static ɵfac: i0.ɵɵFactoryDeclaration<AccordionDirective, [null, null, null, { optional: true; }]>;
|
|
58
61
|
static ɵdir: i0.ɵɵDirectiveDeclaration<AccordionDirective, "div[wmAccordion]", ["wmAccordion"], {}, {}, ["panes"], never, true, never>;
|
|
59
62
|
}
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
constructor(inj, statePersistence, dynamicComponentProvider, explicitContext) {
|
|
71
71
|
let resolveFn = i1.noop;
|
|
72
72
|
super(inj, WIDGET_CONFIG$1, explicitContext, new Promise(res => resolveFn = res));
|
|
73
|
+
this.dynamicComponentRefs = [];
|
|
73
74
|
this.promiseResolverFn = resolveFn;
|
|
74
75
|
this.statePersistence = statePersistence;
|
|
75
76
|
this.dynamicComponentProvider = dynamicComponentProvider;
|
|
@@ -177,7 +178,13 @@
|
|
|
177
178
|
this._dynamicContext = Object.create(this.viewParent);
|
|
178
179
|
this._dynamicContext[this.getAttr('wmAccordian')] = this;
|
|
179
180
|
}
|
|
180
|
-
|
|
181
|
+
// MEMORY LEAK FIX: Store component reference for cleanup
|
|
182
|
+
this.dynamicComponentProvider.addComponent(this.getNativeElement(), markup, this._dynamicContext, { inj: this.inj })
|
|
183
|
+
.then(componentRef => {
|
|
184
|
+
if (componentRef) {
|
|
185
|
+
this.dynamicComponentRefs.push(componentRef);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
181
188
|
});
|
|
182
189
|
return paneNamesList;
|
|
183
190
|
}
|
|
@@ -262,12 +269,43 @@
|
|
|
262
269
|
ngAfterContentInit() {
|
|
263
270
|
super.ngAfterContentInit();
|
|
264
271
|
this.promiseResolverFn();
|
|
265
|
-
this.panes.changes.subscribe(slides => {
|
|
272
|
+
this.panesChangesSubscription = this.panes.changes.subscribe(slides => {
|
|
266
273
|
if (this.panes.length) {
|
|
267
274
|
this.expandPane(this.defaultpaneindex);
|
|
268
275
|
}
|
|
269
276
|
});
|
|
270
277
|
}
|
|
278
|
+
ngOnDestroy() {
|
|
279
|
+
// MEMORY LEAK FIX: Unsubscribe from panes changes
|
|
280
|
+
if (this.panesChangesSubscription) {
|
|
281
|
+
this.panesChangesSubscription.unsubscribe();
|
|
282
|
+
this.panesChangesSubscription = null;
|
|
283
|
+
}
|
|
284
|
+
// MEMORY LEAK FIX: Destroy all dynamically created component instances
|
|
285
|
+
if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {
|
|
286
|
+
this.dynamicComponentRefs.forEach(componentRef => {
|
|
287
|
+
if (componentRef && componentRef.destroy) {
|
|
288
|
+
componentRef.destroy();
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
this.dynamicComponentRefs = [];
|
|
292
|
+
}
|
|
293
|
+
// MEMORY LEAK FIX: Clear dynamic context
|
|
294
|
+
if (this._dynamicContext) {
|
|
295
|
+
Object.keys(this._dynamicContext).forEach(key => {
|
|
296
|
+
delete this._dynamicContext[key];
|
|
297
|
+
});
|
|
298
|
+
this._dynamicContext = null;
|
|
299
|
+
}
|
|
300
|
+
// MEMORY LEAK FIX: Clear dynamic panes array
|
|
301
|
+
if (this.dynamicPanes) {
|
|
302
|
+
this.dynamicPanes = [];
|
|
303
|
+
}
|
|
304
|
+
// MEMORY LEAK FIX: Clear field definitions
|
|
305
|
+
this.fieldDefs = null;
|
|
306
|
+
this.activePane = null;
|
|
307
|
+
super.ngOnDestroy();
|
|
308
|
+
}
|
|
271
309
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AccordionDirective, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.StatePersistence }, { token: i1__namespace.DynamicComponentRefProvider }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
|
|
272
310
|
static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionDirective, isStandalone: true, selector: "div[wmAccordion]", providers: [
|
|
273
311
|
base.provideAsWidgetRef(AccordionDirective)
|
|
@@ -388,6 +426,15 @@
|
|
|
388
426
|
this.accordionRef.registerDynamicPane(this);
|
|
389
427
|
}
|
|
390
428
|
}
|
|
429
|
+
ngOnDestroy() {
|
|
430
|
+
// MEMORY LEAK FIX: Clear ContentChildren QueryList reference
|
|
431
|
+
if (this.reDrawableComponents) {
|
|
432
|
+
this.reDrawableComponents = null;
|
|
433
|
+
}
|
|
434
|
+
// MEMORY LEAK FIX: Clear lazy load function reference
|
|
435
|
+
this.$lazyLoad = null;
|
|
436
|
+
super.ngOnDestroy();
|
|
437
|
+
}
|
|
391
438
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AccordionPaneComponent, deps: [{ token: i0__namespace.Injector }, { token: AccordionDirective }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
392
439
|
static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccordionPaneComponent, isStandalone: true, selector: "div[wmAccordionPane]", providers: [
|
|
393
440
|
base.provideAsWidgetRef(AccordionPaneComponent)
|
|
@@ -102,6 +102,15 @@ export class AccordionPaneComponent extends StylableComponent {
|
|
|
102
102
|
this.accordionRef.registerDynamicPane(this);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
+
ngOnDestroy() {
|
|
106
|
+
// MEMORY LEAK FIX: Clear ContentChildren QueryList reference
|
|
107
|
+
if (this.reDrawableComponents) {
|
|
108
|
+
this.reDrawableComponents = null;
|
|
109
|
+
}
|
|
110
|
+
// MEMORY LEAK FIX: Clear lazy load function reference
|
|
111
|
+
this.$lazyLoad = null;
|
|
112
|
+
super.ngOnDestroy();
|
|
113
|
+
}
|
|
105
114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPaneComponent, deps: [{ token: i0.Injector }, { token: i1.AccordionDirective }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
115
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccordionPaneComponent, isStandalone: true, selector: "div[wmAccordionPane]", providers: [
|
|
107
116
|
provideAsWidgetRef(AccordionPaneComponent)
|
|
@@ -121,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
121
130
|
type: ContentChildren,
|
|
122
131
|
args: [RedrawableDirective, { descendants: true }]
|
|
123
132
|
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLXBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uL3NyYy9hY2NvcmRpb24tcGFuZS9hY2NvcmRpb24tcGFuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1wYW5lL2FjY29yZGlvbi1wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUNILGlCQUFpQixFQUVqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFNUQsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQWtCLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQVloRyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQWlCO2FBQ2xELG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBaUJ6QyxZQUFZLEdBQWEsRUFBVSxZ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QUM7UUFDaEQsQ0FBQztJQUNMLENBQUM7K0dBcEhRLHNCQUFzQiw0RUFrQjhDLGtCQUFrQjttR0FsQnRGLHNCQUFzQixtRUFMcEI7WUFDUCxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztTQUM3QywrREFtQmdCLG1CQUFtQixzR0M1Q3hDLHM1Q0E0QkEsMkNEUmMsWUFBWTs7NEZBUWIsc0JBQXNCO2tCQVZsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLHNCQUFzQixhQUVyQjt3QkFDUCxrQkFBa0Isd0JBQXdCO3FCQUM3QyxZQUNTLGlCQUFpQjs7MEJBb0IyQyxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FGN0Msb0JBQW9CO3NCQUFoRixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG5vb3AsIHJlbW92ZUF0dHIgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFJlZHJhd2FibGVEaXJlY3RpdmUsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgc3R5bGVyLFxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vYWNjb3JkaW9uLXBhbmUucHJvcHMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYWNjb3JkaW9uLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1hY2NvcmRpb24tcGFuZWwgcGFuZWwnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHsgd2lkZ2V0VHlwZTogJ3dtLWFjY29yZGlvbnBhbmUnLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdkaXZbd21BY2NvcmRpb25QYW5lXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi1wYW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEFjY29yZGlvblBhbmVDb21wb25lbnQpXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtQWNjb3JkaW9uUGFuZSdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uUGFuZUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBpY29uY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcbiAgICBwdWJsaWMgc3ViaGVhZGluZzogc3RyaW5nO1xuICAgIHB1YmxpYyBiYWRnZXR5cGU6IGFueTtcbiAgICBwdWJsaWMgYmFkZ2V2YWx1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBzbW9vdGhzY3JvbGw6IGFueTtcbiAgICBwcml2YXRlICRsYXp5TG9hZCA9IG5vb3A7XG4gICAgcHJpdmF0ZSBpc2R5bmFtaWM6IGJvb2xlYW47XG4gICAgcHVibGljIHRhYmluZGV4O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudHMgd2hpY2ggbmVlZHMgYSByZWRyYXcoZWcsIGdyaWQsIGNoYXJ0KSB3aGVuIHRoZSBoZWlnaHQgb2YgdGhpcyBjb21wb25lbnQgY2hhbmdlc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUmVkcmF3YWJsZURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSByZURyYXdhYmxlQ29tcG9uZW50cztcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIHByaXZhdGUgYWNjb3JkaW9uUmVmOiBBY2NvcmRpb25EaXJlY3RpdmUsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuU0hFTEwpO1xuXG4gICAgICAgIC8vIHRpdGxlIHByb3BlcnR5IGhlcmUgc2VydmVzIHRoZSBwdXJwb3NlIG9mIGhlYWRpbmcuXG4gICAgICAgIC8vIHJlbW92ZSB0aXRsZSBwcm9wZXJ0eSBhcyBhdHRyaWJ1dGVcbiAgICAgICAgcmVtb3ZlQXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICd0aXRsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGhhbmRsZXMgdGhlIHBhbmUgZXhwYW5kXG4gICAgICogaW52b2tlICRsYXp5TG9hZCBtZXRob2Qgd2hpY2ggdGFrZXMgY2FyZSBvZiBsb2FkaW5nIHRoZSBwYXJ0aWFsIHdoZW4gdGhlIGNvbnRlbnQgcHJvcGVydHkgaXMgcHJvdmlkZWQgLSBsYXp5TG9hZGluZyBvciBwYXJ0aWFsXG4gICAgICogaW52b2tlIHJlZHJhdyBvbiB0aGUgcmUtZHJhd2FibGUgY2hpbGRyZW5cbiAgICAgKiBpbnZva2UgZXhwYW5kIGNhbGxiYWNrXG4gICAgICogbm90aWZ5IHBhcmVudCBhYm91dCB0aGUgY2hhbmdlXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZ0XG4gICAgICovXG4gICAgcHVibGljIGV4cGFuZChldnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLiRsYXp5TG9hZCgpO1xuICAgICAgICB0aGlzLnJlZHJhd0NoaWxkcmVuKCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXhwYW5kJywgeyAkZXZlbnQ6IGV2dCB9KTtcbiAgICAgICAgdGhpcy5ub3RpZnlQYXJlbnQodHJ1ZSwgZXZ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBoYW5kbGVzIHRoZSBwYW5lIGNvbGxhcHNlXG4gICAgICogaW52b2tlIGNvbGxhcHNlIGNhbGxiYWNrXG4gICAgICogbm90aWZ5IHBhcmVudCBhYm91dCB0aGUgY2hhbmdlXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZ0XG4gICAgICovXG4gICAgcHVibGljIGNvbGxhcHNlKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjb2xsYXBzZScsIHsgJGV2ZW50OiBldnQgfSk7XG4gICAgICAgIHRoaXMubm90aWZ5UGFyZW50KGZhbHNlLCBldnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUoKSB7XG4gICAgICAgIGNvbnN0IHBhbmVJbmRleCA9ICh0aGlzIGFzIGFueSkuYWNjb3JkaW9uUmVmLmdldFBhbmVJbmRleEJ5UmVmKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSAmJiB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzID09PSB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy5sYXN0ID8gdGhpcy5hY2NvcmRpb25SZWYucGFuZXMudG9BcnJheSgpW3BhbmVJbmRleCAtIDFdLmV4cGFuZCgpIDogdGhpcy5hY2NvcmRpb25SZWYucGFuZXMudG9BcnJheSgpW3BhbmVJbmRleCArIDFdLmV4cGFuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVBhbmVzID0gdGhpcy5hY2NvcmRpb25SZWYucGFuZXMudG9BcnJheSgpO1xuICAgICAgICBhdmFpbGFibGVQYW5lcy5zcGxpY2UoKHRoaXMgYXMgYW55KS5hY2NvcmRpb25SZWYuZ2V0UGFuZUluZGV4QnlSZWYodGhpcyksIDEpO1xuICAgICAgICB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy5yZXNldChbLi4uYXZhaWxhYmxlUGFuZXNdKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoZXZ0OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZShldnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leHBhbmQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRvZG8gLSBWaW5heSBleHRlcm5hbGl6ZVxuICAgIHByaXZhdGUgcmVkcmF3Q2hpbGRyZW4oKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVEcmF3YWJsZUNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzLmZvckVhY2goYyA9PiBjLnJlZHJhdygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeVBhcmVudChpc0V4cGFuZDogYm9vbGVhbiwgZXZ0OiBFdmVudCkge1xuICAgICAgICB0aGlzLmFjY29yZGlvblJlZi5ub3RpZnlDaGFuZ2UodGhpcywgaXNFeHBhbmQsIGV2dCk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdikge1xuICAgICAgICBpZiAoa2V5ID09PSAnY29udGVudCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLiRsYXp5TG9hZCgpLCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBhbmVsLWJvZHknKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBBUFBMWV9TVFlMRVNfVFlQRS5JTk5FUl9TSEVMTFxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5pc2R5bmFtaWMpIHtcbiAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uUmVmLnJlZ2lzdGVyRHluYW1pY1BhbmUodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZyBjbGVhcmZpeFwiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6IGlzQWN0aXZlfVwiPlxuICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgIDxhIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNBY3RpdmVcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICBjbGFzcz1cImFjY29yZGlvbi10b2dnbGUgY2xlYXJmaXhcIlxuICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHJvbGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24ge3tpY29uY2xhc3N9fVwiIFtoaWRkZW5dPVwiIWljb25jbGFzc1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCIgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwic3ViaGVhZGluZ1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYWN0aW9ucyBwdWxsLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBhZGRlZCBjbGFzcyBhcyBiYWRnZSwgYXBwLWxhYmVsIHNpbmNlIGl0IG5lZWRzIHRoaXMgY2xhc3NlcyB0byB0cmlnZ2VyIHRoZSBiYWRnZSB0b2tlbnMgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBhcHAtbGFiZWwgbGFiZWwte3tiYWRnZXR5cGV9fVwiPnt7IGJhZGdldmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtaWNvbiBwYW5lbC1hY3Rpb24gd2lcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3thcHBMb2NhbGUuTEFCRUxfQ09MTEFQU0V9fS97e2FwcExvY2FsZS5MQUJFTF9FWFBBTkR9fVwiPlxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImlzQWN0aXZlID8gJ3dpLW1pbnVzJyA6ICd3aS1wbHVzJ1wiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgPC9oMz5cbjwvZGl2PlxuPGRpdiBbbmdDbGFzc109XCJpc0FjdGl2ZSA/ICdjb2xsYXBzZSBpbicgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJwYW5lbC1jb2xsYXBzZSBjb2xsYXBzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgIHBhcnRpYWwtY29udGFpbmVyLXRhcmdldD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLXBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uL3NyYy9hY2NvcmRpb24tcGFuZS9hY2NvcmRpb24tcGFuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1wYW5lL2FjY29yZGlvbi1wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUNILGlCQUFpQixFQUVqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFNUQsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQWtCLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQVloRyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQWlCO2FBQ2xELG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBaUJ6QyxZQUFZLEdBQWEsRUFBVSxZ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QUM7UUFDaEQsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNyQyxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQWhJUSxzQkFBc0IsNEVBa0I4QyxrQkFBa0I7bUdBbEJ0RixzQkFBc0IsbUVBTHBCO1lBQ1Asa0JBQWtCLENBQUMsc0JBQXNCLENBQUM7U0FDN0MsK0RBbUJnQixtQkFBbUIsc0dDNUN4QyxzNUNBNEJBLDJDRFJjLFlBQVk7OzRGQVFiLHNCQUFzQjtrQkFWbEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYixzQkFBc0IsYUFFckI7d0JBQ1Asa0JBQWtCLHdCQUF3QjtxQkFDN0MsWUFDUyxpQkFBaUI7OzBCQW9CMkMsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBRjdDLG9CQUFvQjtzQkFBaEYsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG5vb3AsIHJlbW92ZUF0dHIgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFJlZHJhd2FibGVEaXJlY3RpdmUsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgc3R5bGVyLFxufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vYWNjb3JkaW9uLXBhbmUucHJvcHMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYWNjb3JkaW9uLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1hY2NvcmRpb24tcGFuZWwgcGFuZWwnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHsgd2lkZ2V0VHlwZTogJ3dtLWFjY29yZGlvbnBhbmUnLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdkaXZbd21BY2NvcmRpb25QYW5lXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi1wYW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEFjY29yZGlvblBhbmVDb21wb25lbnQpXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtQWNjb3JkaW9uUGFuZSdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uUGFuZUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgcHVibGljIGljb25jbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyB0aXRsZTogYW55O1xuICAgIHB1YmxpYyBzdWJoZWFkaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIGJhZGdldHlwZTogYW55O1xuICAgIHB1YmxpYyBiYWRnZXZhbHVlOiBzdHJpbmc7XG4gICAgcHVibGljIHNtb290aHNjcm9sbDogYW55O1xuICAgIHByaXZhdGUgJGxhenlMb2FkID0gbm9vcDtcbiAgICBwcml2YXRlIGlzZHluYW1pYzogYm9vbGVhbjtcbiAgICBwdWJsaWMgdGFiaW5kZXg7XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50cyB3aGljaCBuZWVkcyBhIHJlZHJhdyhlZywgZ3JpZCwgY2hhcnQpIHdoZW4gdGhlIGhlaWdodCBvZiB0aGlzIGNvbXBvbmVudCBjaGFuZ2VzXG4gICAgQENvbnRlbnRDaGlsZHJlbihSZWRyYXdhYmxlRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHJlRHJhd2FibGVDb21wb25lbnRzO1xuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgcHJpdmF0ZSBhY2NvcmRpb25SZWY6IEFjY29yZGlvbkRpcmVjdGl2ZSwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5TSEVMTCk7XG5cbiAgICAgICAgLy8gdGl0bGUgcHJvcGVydHkgaGVyZSBzZXJ2ZXMgdGhlIHB1cnBvc2Ugb2YgaGVhZGluZy5cbiAgICAgICAgLy8gcmVtb3ZlIHRpdGxlIHByb3BlcnR5IGFzIGF0dHJpYnV0ZVxuICAgICAgICByZW1vdmVBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ3RpdGxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaGFuZGxlcyB0aGUgcGFuZSBleHBhbmRcbiAgICAgKiBpbnZva2UgJGxhenlMb2FkIG1ldGhvZCB3aGljaCB0YWtlcyBjYXJlIG9mIGxvYWRpbmcgdGhlIHBhcnRpYWwgd2hlbiB0aGUgY29udGVudCBwcm9wZXJ0eSBpcyBwcm92aWRlZCAtIGxhenlMb2FkaW5nIG9yIHBhcnRpYWxcbiAgICAgKiBpbnZva2UgcmVkcmF3IG9uIHRoZSByZS1kcmF3YWJsZSBjaGlsZHJlblxuICAgICAqIGludm9rZSBleHBhbmQgY2FsbGJhY2tcbiAgICAgKiBub3RpZnkgcGFyZW50IGFib3V0IHRoZSBjaGFuZ2VcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5kKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuJGxhenlMb2FkKCk7XG4gICAgICAgIHRoaXMucmVkcmF3Q2hpbGRyZW4oKTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdleHBhbmQnLCB7ICRldmVudDogZXZ0IH0pO1xuICAgICAgICB0aGlzLm5vdGlmeVBhcmVudCh0cnVlLCBldnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGhhbmRsZXMgdGhlIHBhbmUgY29sbGFwc2VcbiAgICAgKiBpbnZva2UgY29sbGFwc2UgY2FsbGJhY2tcbiAgICAgKiBub3RpZnkgcGFyZW50IGFib3V0IHRoZSBjaGFuZ2VcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldnRcbiAgICAgKi9cbiAgICBwdWJsaWMgY29sbGFwc2UoZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NvbGxhcHNlJywgeyAkZXZlbnQ6IGV2dCB9KTtcbiAgICAgICAgdGhpcy5ub3RpZnlQYXJlbnQoZmFsc2UsIGV2dCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZSgpIHtcbiAgICAgICAgY29uc3QgcGFuZUluZGV4ID0gKHRoaXMgYXMgYW55KS5hY2NvcmRpb25SZWYuZ2V0UGFuZUluZGV4QnlSZWYodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlICYmIHRoaXMuYWNjb3JkaW9uUmVmLnBhbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMgPT09IHRoaXMuYWNjb3JkaW9uUmVmLnBhbmVzLmxhc3QgPyB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy50b0FycmF5KClbcGFuZUluZGV4IC0gMV0uZXhwYW5kKCkgOiB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy50b0FycmF5KClbcGFuZUluZGV4ICsgMV0uZXhwYW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUGFuZXMgPSB0aGlzLmFjY29yZGlvblJlZi5wYW5lcy50b0FycmF5KCk7XG4gICAgICAgIGF2YWlsYWJsZVBhbmVzLnNwbGljZSgodGhpcyBhcyBhbnkpLmFjY29yZGlvblJlZi5nZXRQYW5lSW5kZXhCeVJlZih0aGlzKSwgMSk7XG4gICAgICAgIHRoaXMuYWNjb3JkaW9uUmVmLnBhbmVzLnJlc2V0KFsuLi5hdmFpbGFibGVQYW5lc10pO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZShldnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlKGV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVG9kbyAtIFZpbmF5IGV4dGVybmFsaXplXG4gICAgcHJpdmF0ZSByZWRyYXdDaGlsZHJlbigpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVEcmF3YWJsZUNvbXBvbmVudHMuZm9yRWFjaChjID0+IGMucmVkcmF3KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5UGFyZW50KGlzRXhwYW5kOiBib29sZWFuLCBldnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuYWNjb3JkaW9uUmVmLm5vdGlmeUNoYW5nZSh0aGlzLCBpc0V4cGFuZCwgZXZ0KTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjb250ZW50Jykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuJGxhenlMb2FkKCksIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcihcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGFuZWwtYm9keScpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIEFQUExZX1NUWUxFU19UWVBFLklOTkVSX1NIRUxMXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmlzZHluYW1pYykge1xuICAgICAgICAgICAgdGhpcy5hY2NvcmRpb25SZWYucmVnaXN0ZXJEeW5hbWljUGFuZSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIENvbnRlbnRDaGlsZHJlbiBRdWVyeUxpc3QgcmVmZXJlbmNlXG4gICAgICAgIGlmICh0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgbGF6eSBsb2FkIGZ1bmN0aW9uIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLiRsYXp5TG9hZCA9IG51bGw7XG5cbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZyBjbGVhcmZpeFwiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6IGlzQWN0aXZlfVwiPlxuICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgIDxhIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNBY3RpdmVcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICBjbGFzcz1cImFjY29yZGlvbi10b2dnbGUgY2xlYXJmaXhcIlxuICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHJvbGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24ge3tpY29uY2xhc3N9fVwiIFtoaWRkZW5dPVwiIWljb25jbGFzc1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCIgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwic3ViaGVhZGluZ1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYWN0aW9ucyBwdWxsLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBhZGRlZCBjbGFzcyBhcyBiYWRnZSwgYXBwLWxhYmVsIHNpbmNlIGl0IG5lZWRzIHRoaXMgY2xhc3NlcyB0byB0cmlnZ2VyIHRoZSBiYWRnZSB0b2tlbnMgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBhcHAtbGFiZWwgbGFiZWwte3tiYWRnZXR5cGV9fVwiPnt7IGJhZGdldmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtaWNvbiBwYW5lbC1hY3Rpb24gd2lcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3thcHBMb2NhbGUuTEFCRUxfQ09MTEFQU0V9fS97e2FwcExvY2FsZS5MQUJFTF9FWFBBTkR9fVwiPlxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImlzQWN0aXZlID8gJ3dpLW1pbnVzJyA6ICd3aS1wbHVzJ1wiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgPC9oMz5cbjwvZGl2PlxuPGRpdiBbbmdDbGFzc109XCJpc0FjdGl2ZSA/ICdjb2xsYXBzZSBpbicgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJwYW5lbC1jb2xsYXBzZSBjb2xsYXBzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgIHBhcnRpYWwtY29udGFpbmVyLXRhcmdldD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -16,6 +16,7 @@ export class AccordionDirective extends StylableComponent {
|
|
|
16
16
|
constructor(inj, statePersistence, dynamicComponentProvider, explicitContext) {
|
|
17
17
|
let resolveFn = noop;
|
|
18
18
|
super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));
|
|
19
|
+
this.dynamicComponentRefs = [];
|
|
19
20
|
this.promiseResolverFn = resolveFn;
|
|
20
21
|
this.statePersistence = statePersistence;
|
|
21
22
|
this.dynamicComponentProvider = dynamicComponentProvider;
|
|
@@ -123,7 +124,13 @@ export class AccordionDirective extends StylableComponent {
|
|
|
123
124
|
this._dynamicContext = Object.create(this.viewParent);
|
|
124
125
|
this._dynamicContext[this.getAttr('wmAccordian')] = this;
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
+
// MEMORY LEAK FIX: Store component reference for cleanup
|
|
128
|
+
this.dynamicComponentProvider.addComponent(this.getNativeElement(), markup, this._dynamicContext, { inj: this.inj })
|
|
129
|
+
.then(componentRef => {
|
|
130
|
+
if (componentRef) {
|
|
131
|
+
this.dynamicComponentRefs.push(componentRef);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
127
134
|
});
|
|
128
135
|
return paneNamesList;
|
|
129
136
|
}
|
|
@@ -208,12 +215,43 @@ export class AccordionDirective extends StylableComponent {
|
|
|
208
215
|
ngAfterContentInit() {
|
|
209
216
|
super.ngAfterContentInit();
|
|
210
217
|
this.promiseResolverFn();
|
|
211
|
-
this.panes.changes.subscribe(slides => {
|
|
218
|
+
this.panesChangesSubscription = this.panes.changes.subscribe(slides => {
|
|
212
219
|
if (this.panes.length) {
|
|
213
220
|
this.expandPane(this.defaultpaneindex);
|
|
214
221
|
}
|
|
215
222
|
});
|
|
216
223
|
}
|
|
224
|
+
ngOnDestroy() {
|
|
225
|
+
// MEMORY LEAK FIX: Unsubscribe from panes changes
|
|
226
|
+
if (this.panesChangesSubscription) {
|
|
227
|
+
this.panesChangesSubscription.unsubscribe();
|
|
228
|
+
this.panesChangesSubscription = null;
|
|
229
|
+
}
|
|
230
|
+
// MEMORY LEAK FIX: Destroy all dynamically created component instances
|
|
231
|
+
if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {
|
|
232
|
+
this.dynamicComponentRefs.forEach(componentRef => {
|
|
233
|
+
if (componentRef && componentRef.destroy) {
|
|
234
|
+
componentRef.destroy();
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
this.dynamicComponentRefs = [];
|
|
238
|
+
}
|
|
239
|
+
// MEMORY LEAK FIX: Clear dynamic context
|
|
240
|
+
if (this._dynamicContext) {
|
|
241
|
+
Object.keys(this._dynamicContext).forEach(key => {
|
|
242
|
+
delete this._dynamicContext[key];
|
|
243
|
+
});
|
|
244
|
+
this._dynamicContext = null;
|
|
245
|
+
}
|
|
246
|
+
// MEMORY LEAK FIX: Clear dynamic panes array
|
|
247
|
+
if (this.dynamicPanes) {
|
|
248
|
+
this.dynamicPanes = [];
|
|
249
|
+
}
|
|
250
|
+
// MEMORY LEAK FIX: Clear field definitions
|
|
251
|
+
this.fieldDefs = null;
|
|
252
|
+
this.activePane = null;
|
|
253
|
+
super.ngOnDestroy();
|
|
254
|
+
}
|
|
217
255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionDirective, deps: [{ token: i0.Injector }, { token: i1.StatePersistence }, { token: i1.DynamicComponentRefProvider }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
218
256
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionDirective, isStandalone: true, selector: "div[wmAccordion]", providers: [
|
|
219
257
|
provideAsWidgetRef(AccordionDirective)
|
|
@@ -238,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
238
276
|
type: ContentChildren,
|
|
239
277
|
args: [forwardRef(() => AccordionPaneComponent)]
|
|
240
278
|
}] } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL2FjY29yZGlvbi9zcmMvYWNjb3JkaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9FLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsZUFBZSxFQUVmLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTNFLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsY0FBYztJQUMxQixTQUFTLEVBQUUsV0FBVztDQUN6QixDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjthQUM5QyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQWtCekMsWUFBWSxHQUFhLEVBQUUsZ0JBQWtDLEVBQUUsd0JBQXFELEVBQTBDLGVBQW9CO1FBQzlLLElBQUksU0FBUyxHQUFhLElBQUksQ0FBQztRQUMvQixL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O1lBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXBPUSxrQkFBa0IscUhBbUJtRyxrQkFBa0I7bUdBbkJ2SSxrQkFBa0IsK0RBSmhCO1lBQ1Asa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7U0FDekMsb0VBbUJpQyxzQkFBc0I7OzRGQWpCL0Msa0JBQWtCO2tCQVI5QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsU0FBUyxFQUFFO3dCQUNQLGtCQUFrQixvQkFBb0I7cUJBQ3pDO2lCQUNKOzswQkFvQjBILE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQUZoRyxLQUFLO3NCQUEvRCxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXIsIG5vb3AsIFN0YXRlUGVyc2lzdGVuY2UgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIGNyZWF0ZUFycmF5RnJvbSxcbiAgICBJV2lkZ2V0Q29uZmlnLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBzdHlsZXJcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2FjY29yZGlvbi5wcm9wcyc7XG5pbXBvcnQgeyBBY2NvcmRpb25QYW5lQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24tcGFuZS9hY2NvcmRpb24tcGFuZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmluZCwgZm9yRWFjaCwgZ2V0LCBpbmRleE9mLCBpc0FycmF5LCBpc051bWJlciB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWFjY29yZGlvbiBwYW5lbC1ncm91cCc7XG5jb25zdCBXSURHRVRfQ09ORklHOiBJV2lkZ2V0Q29uZmlnID0ge1xuICAgIHdpZGdldFR5cGU6ICd3bS1hY2NvcmRpb24nLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdkaXZbd21BY2NvcmRpb25dJyxcbiAgICBleHBvcnRBczogJ3dtQWNjb3JkaW9uJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEFjY29yZGlvbkRpcmVjdGl2ZSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkRpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBkZWZhdWx0cGFuZWluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIGNsb3Nlb3RoZXJzOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG5cbiAgICBwcml2YXRlIGFjdGl2ZVBhbmVJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgYWN0aXZlUGFuZTogQWNjb3JkaW9uUGFuZUNvbXBvbmVudDtcbiAgICBwcml2YXRlIHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICBwcml2YXRlIF9keW5hbWljQ29udGV4dDtcbiAgICBwcml2YXRlIGR5bmFtaWNQYW5lSW5kZXg7XG4gICAgcHJpdmF0ZSBkeW5hbWljUGFuZXM7XG4gICAgcHVibGljIGZpZWxkRGVmcztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBBY2NvcmRpb25QYW5lQ29tcG9uZW50KSkgcGFuZXM6IFF1ZXJ5TGlzdDxBY2NvcmRpb25QYW5lQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2UsIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCwgbmV3IFByb21pc2UocmVzID0+IHJlc29sdmVGbiA9IHJlcykpO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UgPSBzdGF0ZVBlcnNpc3RlbmNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlciA9IGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5keW5hbWljUGFuZXMgPSBbXTtcbiAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4ID0gMDtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuU0NST0xMQUJMRV9DT05UQUlORVIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjY29yZGlvblBhbmUgY2hpbGRyZW4gY29tcG9uZW50cyBpbnZva2UgdGhpcyBtZXRob2QgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgcGFyZW50XG4gICAgICogaWYgaXNFeHBhbmQgaXMgdHJ1ZSBhbmQgd2hlbiBjbG9zZW90aGVycyBpcyB0cnVlLCBhbGwgdGhlIG90aGVyIHBhbmVzIGFyZSBjb2xsYXBzZWRcbiAgICAgKiBpZiB0aGUgZXZ0IGFyZ3VtZW50IGlzIGRlZmluZWQgb24tY2hhbmdlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZC5cbiAgICAgKiB1cGRhdGVzIHRoZSBhY3RpdmVQYW5lIGluZGV4IHByb3BlcnR5XG4gICAgICogQHBhcmFtIHtBY2NvcmRpb25QYW5lQ29tcG9uZW50fSBwYW5lUmVmXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0V4cGFuZFxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dFxuICAgICAqL1xuICAgIHB1YmxpYyBub3RpZnlDaGFuZ2UocGFuZVJlZjogQWNjb3JkaW9uUGFuZUNvbXBvbmVudCwgaXNFeHBhbmQ6IGJvb2xlYW4sIGV2dDogRXZlbnQpIHtcbiAgICAgICAgaWYgKGlzRXhwYW5kKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUGFuZXNFeGNlcHQocGFuZVJlZik7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYocGFuZVJlZik7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVBhbmUgPSBwYW5lUmVmLmdldFdpZGdldCgpO1xuICAgICAgICAgICAgLy8gaWYgdGhlIGV2ZW50IGlzIGRlZmluZWQgaW52b2tlIHRoZSBjaGFuZ2UgY2FsbGJhY2suXG4gICAgICAgICAgICAvLyBwcm9ncmFtbWF0aWMgaW52b2NhdGlvbnMgb2YgZXhwYW5kL2NvbGxhcHNlIG9uIGFjY29yZGlvbi1wYW5lIHdpbGwgbm90IHRyaWdnZXIgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBpZiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgICAgICAgICRldmVudDogZXZ0LFxuICAgICAgICAgICAgICAgICAgICBuZXdQYW5lSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBvbGRQYW5lSW5kZXg6IHRoaXMuYWN0aXZlUGFuZUluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVBhbmVJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuY29tcHV0ZU1vZGUodGhpcy5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoZXZ0ICYmIG1vZGUgJiYgbW9kZS50b0xvd2VyQ2FzZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVBhbmVzID0gW107XG4gICAgICAgICAgICB0aGlzLnBhbmVzLmZvckVhY2goZnVuY3Rpb24gKHBhbmUpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFuZS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmVQYW5lcy5wdXNoKHBhbmUubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYWN0aXZlUGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMsIGFjdGl2ZVBhbmVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnJlbW92ZVdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byByZWdpc3RlciB0aGUgZHluYW1pYyBwYW5lcy5cbiAgICAgKiBBZnRlciBhbGwgcGFuZXMgYXJlIGluaXRpYWx6ZWQsIHVwZGF0ZSB0aGUgcXVlcnlsaXN0IG1hbnVhbGx5IGJhc2VkIG9uIGluZGV4LlxuICAgICAqIEBwYXJhbSBwYW5lUmVmIC0gcmVmcmVuY2Ugb2YgdGhlIHRhYnBhbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJEeW5hbWljUGFuZShwYW5lUmVmKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1BhbmVzLnB1c2gocGFuZVJlZik7XG4gICAgICAgIGNvbnN0IGlzTGFzdFBhbmUgPSB0aGlzLmR5bmFtaWNQYW5lcy5sZW5ndGggPT09IHRoaXMuZHluYW1pY1BhbmVJbmRleDtcbiAgICAgICAgaWYgKGlzTGFzdFBhbmUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5keW5hbWljUGFuZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQYW5lUmVmID0gZmluZCh0aGlzLmR5bmFtaWNQYW5lcywgcGFuZSA9PiBwYW5lLmR5bmFtaWNQYW5lSW5kZXggPT09IGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlUGFuZSA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIG5ld1BhbmVSZWYpO1xuICAgICAgICAgICAgICAgIGlmICghaXNEdXBsaWNhdGVQYW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZXMucmVzZXQoWy4uLnRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYW5lUmVmLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFuZVJlZi5leHBhbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRvIGFkZCB0aGUgdGFicGFuZSBkeW5hbWljYWxseVxuICAgICAqIEBwYXJhbSB0YWJwYW5lcyAtIGxpc3Qgb2YgdGFicGFuZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUGFuZSh0YWJwYW5lcykge1xuICAgICAgICBpZiAoIWlzQXJyYXkodGFicGFuZXMpKSB7XG4gICAgICAgICAgICB0YWJwYW5lcyA9IFt0YWJwYW5lc107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFuZU5hbWVzTGlzdCA9IFtdO1xuICAgICAgICBmb3JFYWNoKHRhYnBhbmVzLCAocGFuZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlDcmVhdGVkID0gZmluZCh0aGlzLnBhbmVzLnRvQXJyYXkoKSwgeyBuYW1lOiBwYW5lLm5hbWUgfSk7XG4gICAgICAgICAgICBjb25zdCBpc1BhbmVOYW1lRXhpc3QgPSBpbmRleE9mKHBhbmVOYW1lc0xpc3QsIHBhbmUubmFtZSk7XG4gICAgICAgICAgICAvLyBJZiB1c2VyIHRyaWVzIHRvIGFkZCB0YWJwYW5lIHdpdGggdGhlIHNhbWUgbmFtZSB3aGljaCBpcyBhbHJlYWR5IGV4aXN0cyB0aGVuIGRvIG5vdCBjcmVhdGUgdGhlIHBhbmVcbiAgICAgICAgICAgIGlmIChpc1BhbmVBbHJlYWR5Q3JlYXRlZCB8fCBpc1BhbmVOYW1lRXhpc3QgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgdGFiIHBhbmUgd2l0aCBuYW1lICR7cGFuZS5uYW1lfSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcmFtTWFya3VwID0gJyc7XG4gICAgICAgICAgICBsZXQgcHJvcHNUbXBsID0gJyc7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNQYW5lSW5kZXgrKztcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYW5lLm5hbWUgPyBwYW5lLm5hbWUgOiBgYWNjb3JkaW9ucGFuZSR7dGhpcy5wYW5lcy50b0FycmF5KCkubGVuZ3RoICsgKGluZGV4ICsgMSl9YDtcbiAgICAgICAgICAgIHBhbmVOYW1lc0xpc3QucHVzaChuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxQYXJhbXMgPSBnZXQocGFuZSwgJ3BhcmFtcycpO1xuXG4gICAgICAgICAgICBmb3JFYWNoKHBhbmUsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3BhcmFtcycpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNUbXBsID0gYCR7cHJvcHNUbXBsfSAke2tleX09XCIke3ZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvckVhY2gocGFydGlhbFBhcmFtcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbU1hcmt1cCA9IGAke3BhcmFtTWFya3VwfSA8d20tcGFyYW0gbmFtZT1cIiR7a2V5fVwiIHZhbHVlPVwiJHt2YWx1ZX1cIj48L3dtLXBhcmFtPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IGA8d20tYWNjb3JkaW9ucGFuZSBkeW5hbWljUGFuZUluZGV4PVwiJHt0aGlzLmR5bmFtaWNQYW5lSW5kZXggLSAxfVwiIGlzZHluYW1pYz1cInRydWVcIiBuYW1lPVwiJHtuYW1lfVwiICR7cHJvcHNUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcmFtTWFya3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC93bS1hY2NvcmRpb25wYW5lPmA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZHluYW1pY0NvbnRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dCA9IE9iamVjdC5jcmVhdGUodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtQWNjb3JkaWFuJyldID0gdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIuYWRkQ29tcG9uZW50KHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7IGluajogdGhpcy5pbmogfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFuZU5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHRhYnBhbmVcbiAgICAgKiBAcGFyYW0gcGFuZU5hbWUgLSBuYW1lIG9mIHRoZSBwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVBhbmUocGFuZU5hbWUpIHtcbiAgICAgICAgY29uc3QgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5TmFtZShwYW5lTmFtZSk7XG4gICAgICAgIGlmIChwYW5lUmVmKSB7XG4gICAgICAgICAgICBwYW5lUmVmLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkUGFuZUluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5wYW5lcy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGFuZVJlZkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBBY2NvcmRpb25QYW5lQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIHsgbmFtZTogbmFtZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVJbmRleEJ5UmVmKHBhbmVSZWY6IEFjY29yZGlvblBhbmVDb21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lcy50b0FycmF5KCkuaW5kZXhPZihwYW5lUmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBBY2NvcmRpb25QYW5lQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvLyBFeGNlcHQgdGhlIHBhbmUgcHJvdmlkZWQgY2xvc2UgYWxsIG90aGVyIHBhbmVzXG4gICAgcHJpdmF0ZSBjbG9zZVBhbmVzRXhjZXB0KHBhbmVSZWY6IEFjY29yZGlvblBhbmVDb21wb25lbnQgfCBudW1iZXIpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKHBhbmVSZWYpKSB7XG4gICAgICAgICAgICBwYW5lUmVmID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChwYW5lUmVmIGFzIG51bWJlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VvdGhlcnMpIHtcbiAgICAgICAgICAgIHRoaXMucGFuZXMuZm9yRWFjaChwYW5lID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFuZSAhPT0gcGFuZVJlZikge1xuICAgICAgICAgICAgICAgICAgICBwYW5lLmNvbGxhcHNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGFuZFBhbmUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZXNFeGNlcHQoaW5kZXgpO1xuICAgICAgICB0aGlzLnBhbmVzLnRvQXJyYXkoKVtpbmRleF0uZXhwYW5kKCk7XG4gICAgfVxuICAgIHByaXZhdGUgb25EYXRhQ2hhbmdlKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLmZpZWxkRGVmcyA9IGNyZWF0ZUFycmF5RnJvbShuZXdWYWwpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdkZWZhdWx0cGFuZWluZGV4Jykge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0cGFuZWluZGV4ID0gbnY7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGF0YXNldCcpIHtcbiAgICAgICAgICAgIHRoaXMub25EYXRhQ2hhbmdlKG52KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdzdGF0ZWhhbmRsZXInKSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIGxldCBwYW5lVG9TZWxlY3Q6IGFueSA9IFtdO1xuICAgICAgICAgICAgaWYgKG52ICE9PSAnbm9uZScgJiYgaXNBcnJheSh3aWRnZXRTdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5mb3JFYWNoKHBhbmVOYW1lID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZVRvU2VsZWN0ID0gdGhpcy5wYW5lcy5maWx0ZXIoZnVuY3Rpb24gKHBhbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYW5lTmFtZSA9PT0gcGFuZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYW5lVG9TZWxlY3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0FjY29yZGlvbiBwYW5lIG5hbWUgJyArIHBhbmVOYW1lICsgJyBpbiBTdGF0ZSBpcyBpbmNvcnJlY3QuJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFBhbmUodGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lVG9TZWxlY3RbMF0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkUGFuZUluZGV4KHRoaXMuZGVmYXVsdHBhbmVpbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRQYW5lKHRoaXMuZGVmYXVsdHBhbmVpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHRoaXMucGFuZXMuY2hhbmdlcy5zdWJzY3JpYmUoc2xpZGVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kUGFuZSh0aGlzLmRlZmF1bHRwYW5laW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL2FjY29yZGlvbi9zcmMvYWNjb3JkaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9FLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsZUFBZSxFQUVmLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTNFLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsY0FBYztJQUMxQixTQUFTLEVBQUUsV0FBVztDQUN6QixDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjthQUM5QyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQW9CekMsWUFBWSxHQUFhLEVBQUUsZ0JBQWtDLEVBQUUsd0JBQXFELEVBQTBDLGVBQW9CO1FBQzlLLElBQUksU0FBUyxHQUFhLElBQUksQ0FBQztRQUMvQixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQU41RSx5QkFBb0IsR0FBVSxFQUFFLENBQUM7UUFPckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksWUFBWSxDQUFDLE9BQStCLEVBQUUsUUFBaUIsRUFBRSxHQUFVO1FBQzlFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLHNEQUFzRDtZQUN0RCw4RkFBOEY7WUFDOUYsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFO29CQUMvQixNQUFNLEVBQUUsR0FBRztvQkFDWCxZQUFZLEVBQUUsS0FBSztvQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlO2lCQUNyQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDL0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSTtnQkFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDNUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBTztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDdEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLFFBQVE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELHNHQUFzRztZQUN0RyxJQUFJLG9CQUFvQixJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsQ0FBQztnQkFDbkUsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUxQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN6QixJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbkIsU0FBUyxHQUFHLEdBQUcsU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUcsQ0FBQztnQkFDakQsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsV0FBVyxHQUFHLEdBQUcsV0FBVyxvQkFBb0IsR0FBRyxZQUFZLEtBQUssZUFBZSxDQUFDO1lBQ3hGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsdUNBQXVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLDRCQUE0QixJQUFJLEtBQUssU0FBUzs4QkFDM0csV0FBVzs0Q0FDRyxDQUFDO1lBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUM3RCxDQUFDO1lBRUQseURBQXlEO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUMvRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLFFBQVE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBK0I7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYTtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGlEQUFpRDtJQUN6QyxnQkFBZ0IsQ0FBQyxPQUF3QztRQUM3RCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ08sWUFBWSxDQUFDLE1BQU07UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUMzQyxJQUFJLEdBQUcsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0QsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksRUFBRSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDM0IsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSTt3QkFDM0MsT0FBTyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLEdBQUcseUJBQXlCLENBQUMsQ0FBQztvQkFDaEYsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdELENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzdDLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdkMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBalJRLGtCQUFrQixxSEFxQm1HLGtCQUFrQjttR0FyQnZJLGtCQUFrQiwrREFKaEI7WUFDUCxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztTQUN6QyxvRUFxQmlDLHNCQUFzQjs7NEZBbkIvQyxrQkFBa0I7a0JBUjlCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixTQUFTLEVBQUU7d0JBQ1Asa0JBQWtCLG9CQUFvQjtxQkFDekM7aUJBQ0o7OzBCQXNCMEgsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBRmhHLEtBQUs7c0JBQS9ELGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLCBub29wLCBTdGF0ZVBlcnNpc3RlbmNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBUFBMWV9TVFlMRVNfVFlQRSxcbiAgICBjcmVhdGVBcnJheUZyb20sXG4gICAgSVdpZGdldENvbmZpZyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgc3R5bGVyXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9hY2NvcmRpb24ucHJvcHMnO1xuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZUNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLXBhbmUvYWNjb3JkaW9uLXBhbmUuY29tcG9uZW50JztcbmltcG9ydCB7IGZpbmQsIGZvckVhY2gsIGdldCwgaW5kZXhPZiwgaXNBcnJheSwgaXNOdW1iZXIgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1hY2NvcmRpb24gcGFuZWwtZ3JvdXAnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tYWNjb3JkaW9uJyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQWNjb3JkaW9uXScsXG4gICAgZXhwb3J0QXM6ICd3bUFjY29yZGlvbicsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihBY2NvcmRpb25EaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25EaXJlY3RpdmUgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBkZWZhdWx0cGFuZWluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIGNsb3Nlb3RoZXJzOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG5cbiAgICBwcml2YXRlIGFjdGl2ZVBhbmVJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgYWN0aXZlUGFuZTogQWNjb3JkaW9uUGFuZUNvbXBvbmVudDtcbiAgICBwcml2YXRlIHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICBwcml2YXRlIF9keW5hbWljQ29udGV4dDtcbiAgICBwcml2YXRlIGR5bmFtaWNQYW5lSW5kZXg7XG4gICAgcHJpdmF0ZSBkeW5hbWljUGFuZXM7XG4gICAgcHVibGljIGZpZWxkRGVmcztcbiAgICBwcml2YXRlIHBhbmVzQ2hhbmdlc1N1YnNjcmlwdGlvbjogYW55O1xuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFJlZnM6IGFueVtdID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQWNjb3JkaW9uUGFuZUNvbXBvbmVudCkpIHBhbmVzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uUGFuZUNvbXBvbmVudD47XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBzdGF0ZVBlcnNpc3RlbmNlOiBTdGF0ZVBlcnNpc3RlbmNlLCBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbiA9IHJlc29sdmVGbjtcbiAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlID0gc3RhdGVQZXJzaXN0ZW5jZTtcbiAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIgPSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1BhbmVzID0gW107XG4gICAgICAgIHRoaXMuZHluYW1pY1BhbmVJbmRleCA9IDA7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNDUk9MTEFCTEVfQ09OVEFJTkVSKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBY2NvcmRpb25QYW5lIGNoaWxkcmVuIGNvbXBvbmVudHMgaW52b2tlIHRoaXMgbWV0aG9kIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBhcmVudFxuICAgICAqIGlmIGlzRXhwYW5kIGlzIHRydWUgYW5kIHdoZW4gY2xvc2VvdGhlcnMgaXMgdHJ1ZSwgYWxsIHRoZSBvdGhlciBwYW5lcyBhcmUgY29sbGFwc2VkXG4gICAgICogaWYgdGhlIGV2dCBhcmd1bWVudCBpcyBkZWZpbmVkIG9uLWNoYW5nZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQuXG4gICAgICogdXBkYXRlcyB0aGUgYWN0aXZlUGFuZSBpbmRleCBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB7QWNjb3JkaW9uUGFuZUNvbXBvbmVudH0gcGFuZVJlZlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNFeHBhbmRcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbm90aWZ5Q2hhbmdlKHBhbmVSZWY6IEFjY29yZGlvblBhbmVDb21wb25lbnQsIGlzRXhwYW5kOiBib29sZWFuLCBldnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmIChpc0V4cGFuZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVzRXhjZXB0KHBhbmVSZWYpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFBhbmVJbmRleEJ5UmVmKHBhbmVSZWYpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVQYW5lID0gcGFuZVJlZi5nZXRXaWRnZXQoKTtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBldmVudCBpcyBkZWZpbmVkIGludm9rZSB0aGUgY2hhbmdlIGNhbGxiYWNrLlxuICAgICAgICAgICAgLy8gcHJvZ3JhbW1hdGljIGludm9jYXRpb25zIG9mIGV4cGFuZC9jb2xsYXBzZSBvbiBhY2NvcmRpb24tcGFuZSB3aWxsIG5vdCB0cmlnZ2VyIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgaWYgKGV2dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICAkZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgICAgICAgbmV3UGFuZUluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgb2xkUGFuZUluZGV4OiB0aGlzLmFjdGl2ZVBhbmVJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVQYW5lSW5kZXggPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmNvbXB1dGVNb2RlKHRoaXMuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKGV2dCAmJiBtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVQYW5lcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5wYW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChwYW5lKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhbmUuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlUGFuZXMucHVzaChwYW5lLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVBhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5zZXRXaWRnZXRTdGF0ZSh0aGlzLCBhY3RpdmVQYW5lcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5yZW1vdmVXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgcGFuZXMuXG4gICAgICogQWZ0ZXIgYWxsIHBhbmVzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gcGFuZVJlZiAtIHJlZnJlbmNlIG9mIHRoZSB0YWJwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1BhbmUocGFuZVJlZikge1xuICAgICAgICB0aGlzLmR5bmFtaWNQYW5lcy5wdXNoKHBhbmVSZWYpO1xuICAgICAgICBjb25zdCBpc0xhc3RQYW5lID0gdGhpcy5keW5hbWljUGFuZXMubGVuZ3RoID09PSB0aGlzLmR5bmFtaWNQYW5lSW5kZXg7XG4gICAgICAgIGlmIChpc0xhc3RQYW5lKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZHluYW1pY1BhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UGFuZVJlZiA9IGZpbmQodGhpcy5keW5hbWljUGFuZXMsIHBhbmUgPT4gcGFuZS5keW5hbWljUGFuZUluZGV4ID09PSBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZVBhbmUgPSBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRHVwbGljYXRlUGFuZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVzLnJlc2V0KFsuLi50aGlzLnBhbmVzLnRvQXJyYXkoKSwgbmV3UGFuZVJlZl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3UGFuZVJlZi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhbmVSZWYuZXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byBhZGQgdGhlIHRhYnBhbmUgZHluYW1pY2FsbHlcbiAgICAgKiBAcGFyYW0gdGFicGFuZXMgLSBsaXN0IG9mIHRhYnBhbmVzXG4gICAgICovXG4gICAgcHVibGljIGFkZFBhbmUodGFicGFuZXMpIHtcbiAgICAgICAgaWYgKCFpc0FycmF5KHRhYnBhbmVzKSkge1xuICAgICAgICAgICAgdGFicGFuZXMgPSBbdGFicGFuZXNdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhbmVOYW1lc0xpc3QgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh0YWJwYW5lcywgKHBhbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1BhbmVBbHJlYWR5Q3JlYXRlZCA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIHsgbmFtZTogcGFuZS5uYW1lIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNQYW5lTmFtZUV4aXN0ID0gaW5kZXhPZihwYW5lTmFtZXNMaXN0LCBwYW5lLm5hbWUpO1xuICAgICAgICAgICAgLy8gSWYgdXNlciB0cmllcyB0byBhZGQgdGFicGFuZSB3aXRoIHRoZSBzYW1lIG5hbWUgd2hpY2ggaXMgYWxyZWFkeSBleGlzdHMgdGhlbiBkbyBub3QgY3JlYXRlIHRoZSBwYW5lXG4gICAgICAgICAgICBpZiAoaXNQYW5lQWxyZWFkeUNyZWF0ZWQgfHwgaXNQYW5lTmFtZUV4aXN0ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIHRhYiBwYW5lIHdpdGggbmFtZSAke3BhbmUubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXJhbU1hcmt1cCA9ICcnO1xuICAgICAgICAgICAgbGV0IHByb3BzVG1wbCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4Kys7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogYGFjY29yZGlvbnBhbmUke3RoaXMucGFuZXMudG9BcnJheSgpLmxlbmd0aCArIChpbmRleCArIDEpfWA7XG4gICAgICAgICAgICBwYW5lTmFtZXNMaXN0LnB1c2gobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYXJ0aWFsUGFyYW1zID0gZ2V0KHBhbmUsICdwYXJhbXMnKTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYW5lLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdwYXJhbXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzVG1wbCA9IGAke3Byb3BzVG1wbH0gJHtrZXl9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3JFYWNoKHBhcnRpYWxQYXJhbXMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1NYXJrdXAgPSBgJHtwYXJhbU1hcmt1cH0gPHdtLXBhcmFtIG5hbWU9XCIke2tleX1cIiB2YWx1ZT1cIiR7dmFsdWV9XCI+PC93bS1wYXJhbT5gO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBtYXJrdXAgPSBgPHdtLWFjY29yZGlvbnBhbmUgZHluYW1pY1BhbmVJbmRleD1cIiR7dGhpcy5keW5hbWljUGFuZUluZGV4IC0gMX1cIiBpc2R5bmFtaWM9XCJ0cnVlXCIgbmFtZT1cIiR7bmFtZX1cIiAke3Byb3BzVG1wbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJhbU1hcmt1cH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd20tYWNjb3JkaW9ucGFuZT5gO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2R5bmFtaWNDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHQgPSBPYmplY3QuY3JlYXRlKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHRbdGhpcy5nZXRBdHRyKCd3bUFjY29yZGlhbicpXSA9IHRoaXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgY29tcG9uZW50IHJlZmVyZW5jZSBmb3IgY2xlYW51cFxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIuYWRkQ29tcG9uZW50KHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7IGluajogdGhpcy5pbmogfSlcbiAgICAgICAgICAgICAgICAudGhlbihjb21wb25lbnRSZWYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRSZWZzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhbmVOYW1lc0xpc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdG8gcmVtb3ZlIHRoZSB0YWJwYW5lXG4gICAgICogQHBhcmFtIHBhbmVOYW1lIC0gbmFtZSBvZiB0aGUgcGFuZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVQYW5lKHBhbmVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHBhbmVSZWYgPSB0aGlzLmdldFBhbmVSZWZCeU5hbWUocGFuZU5hbWUpO1xuICAgICAgICBpZiAocGFuZVJlZikge1xuICAgICAgICAgICAgcGFuZVJlZi5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFBhbmVJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucGFuZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogQWNjb3JkaW9uUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCB7IG5hbWU6IG5hbWUgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmOiBBY2NvcmRpb25QYW5lQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpLmluZGV4T2YocGFuZVJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lUmVmQnlJbmRleChpbmRleDogbnVtYmVyKTogQWNjb3JkaW9uUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuXG4gICAgLy8gRXhjZXB0IHRoZSBwYW5lIHByb3ZpZGVkIGNsb3NlIGFsbCBvdGhlciBwYW5lc1xuICAgIHByaXZhdGUgY2xvc2VQYW5lc0V4Y2VwdChwYW5lUmVmOiBBY2NvcmRpb25QYW5lQ29tcG9uZW50IHwgbnVtYmVyKSB7XG4gICAgICAgIGlmIChpc051bWJlcihwYW5lUmVmKSkge1xuICAgICAgICAgICAgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgocGFuZVJlZiBhcyBudW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsb3Nlb3RoZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVzLmZvckVhY2gocGFuZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhbmUgIT09IHBhbmVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZS5jb2xsYXBzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBhbmRQYW5lKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVzRXhjZXB0KGluZGV4KTtcbiAgICAgICAgdGhpcy5wYW5lcy50b0FycmF5KClbaW5kZXhdLmV4cGFuZCgpO1xuICAgIH1cbiAgICBwcml2YXRlIG9uRGF0YUNoYW5nZShuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBjcmVhdGVBcnJheUZyb20obmV3VmFsKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnZGVmYXVsdHBhbmVpbmRleCcpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdHBhbmVpbmRleCA9IG52O1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZShudik7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnc3RhdGVoYW5kbGVyJykge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBsZXQgcGFuZVRvU2VsZWN0OiBhbnkgPSBbXTtcbiAgICAgICAgICAgIGlmIChudiAhPT0gJ25vbmUnICYmIGlzQXJyYXkod2lkZ2V0U3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuZm9yRWFjaChwYW5lTmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVUb1NlbGVjdCA9IHRoaXMucGFuZXMuZmlsdGVyKGZ1bmN0aW9uIChwYW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFuZU5hbWUgPT09IHBhbmUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFuZVRvU2VsZWN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdBY2NvcmRpb24gcGFuZSBuYW1lICcgKyBwYW5lTmFtZSArICcgaW4gU3RhdGUgaXMgaW5jb3JyZWN0LicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRQYW5lKHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYocGFuZVRvU2VsZWN0WzBdKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFBhbmVJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kUGFuZSh0aGlzLmRlZmF1bHRwYW5laW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbigpO1xuICAgICAgICB0aGlzLnBhbmVzQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMucGFuZXMuY2hhbmdlcy5zdWJzY3JpYmUoc2xpZGVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kUGFuZSh0aGlzLmRlZmF1bHRwYW5laW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbnN1YnNjcmliZSBmcm9tIHBhbmVzIGNoYW5nZXNcbiAgICAgICAgaWYgKHRoaXMucGFuZXNDaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVzQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5wYW5lc0NoYW5nZXNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBEZXN0cm95IGFsbCBkeW5hbWljYWxseSBjcmVhdGVkIGNvbXBvbmVudCBpbnN0YW5jZXNcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY0NvbXBvbmVudFJlZnMgJiYgdGhpcy5keW5hbWljQ29tcG9uZW50UmVmcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFJlZnMuZm9yRWFjaChjb21wb25lbnRSZWYgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRSZWYgJiYgY29tcG9uZW50UmVmLmRlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFJlZnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZHluYW1pYyBjb250ZXh0XG4gICAgICAgIGlmICh0aGlzLl9keW5hbWljQ29udGV4dCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5fZHluYW1pY0NvbnRleHQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZHluYW1pY0NvbnRleHRba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBkeW5hbWljIHBhbmVzIGFycmF5XG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYW5lcykge1xuICAgICAgICAgICAgdGhpcy5keW5hbWljUGFuZXMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZmllbGQgZGVmaW5pdGlvbnNcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhbmUgPSBudWxsO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -52,6 +52,7 @@ class AccordionDirective extends StylableComponent {
|
|
|
52
52
|
constructor(inj, statePersistence, dynamicComponentProvider, explicitContext) {
|
|
53
53
|
let resolveFn = noop;
|
|
54
54
|
super(inj, WIDGET_CONFIG$1, explicitContext, new Promise(res => resolveFn = res));
|
|
55
|
+
this.dynamicComponentRefs = [];
|
|
55
56
|
this.promiseResolverFn = resolveFn;
|
|
56
57
|
this.statePersistence = statePersistence;
|
|
57
58
|
this.dynamicComponentProvider = dynamicComponentProvider;
|
|
@@ -159,7 +160,13 @@ class AccordionDirective extends StylableComponent {
|
|
|
159
160
|
this._dynamicContext = Object.create(this.viewParent);
|
|
160
161
|
this._dynamicContext[this.getAttr('wmAccordian')] = this;
|
|
161
162
|
}
|
|
162
|
-
|
|
163
|
+
// MEMORY LEAK FIX: Store component reference for cleanup
|
|
164
|
+
this.dynamicComponentProvider.addComponent(this.getNativeElement(), markup, this._dynamicContext, { inj: this.inj })
|
|
165
|
+
.then(componentRef => {
|
|
166
|
+
if (componentRef) {
|
|
167
|
+
this.dynamicComponentRefs.push(componentRef);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
163
170
|
});
|
|
164
171
|
return paneNamesList;
|
|
165
172
|
}
|
|
@@ -244,12 +251,43 @@ class AccordionDirective extends StylableComponent {
|
|
|
244
251
|
ngAfterContentInit() {
|
|
245
252
|
super.ngAfterContentInit();
|
|
246
253
|
this.promiseResolverFn();
|
|
247
|
-
this.panes.changes.subscribe(slides => {
|
|
254
|
+
this.panesChangesSubscription = this.panes.changes.subscribe(slides => {
|
|
248
255
|
if (this.panes.length) {
|
|
249
256
|
this.expandPane(this.defaultpaneindex);
|
|
250
257
|
}
|
|
251
258
|
});
|
|
252
259
|
}
|
|
260
|
+
ngOnDestroy() {
|
|
261
|
+
// MEMORY LEAK FIX: Unsubscribe from panes changes
|
|
262
|
+
if (this.panesChangesSubscription) {
|
|
263
|
+
this.panesChangesSubscription.unsubscribe();
|
|
264
|
+
this.panesChangesSubscription = null;
|
|
265
|
+
}
|
|
266
|
+
// MEMORY LEAK FIX: Destroy all dynamically created component instances
|
|
267
|
+
if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {
|
|
268
|
+
this.dynamicComponentRefs.forEach(componentRef => {
|
|
269
|
+
if (componentRef && componentRef.destroy) {
|
|
270
|
+
componentRef.destroy();
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
this.dynamicComponentRefs = [];
|
|
274
|
+
}
|
|
275
|
+
// MEMORY LEAK FIX: Clear dynamic context
|
|
276
|
+
if (this._dynamicContext) {
|
|
277
|
+
Object.keys(this._dynamicContext).forEach(key => {
|
|
278
|
+
delete this._dynamicContext[key];
|
|
279
|
+
});
|
|
280
|
+
this._dynamicContext = null;
|
|
281
|
+
}
|
|
282
|
+
// MEMORY LEAK FIX: Clear dynamic panes array
|
|
283
|
+
if (this.dynamicPanes) {
|
|
284
|
+
this.dynamicPanes = [];
|
|
285
|
+
}
|
|
286
|
+
// MEMORY LEAK FIX: Clear field definitions
|
|
287
|
+
this.fieldDefs = null;
|
|
288
|
+
this.activePane = null;
|
|
289
|
+
super.ngOnDestroy();
|
|
290
|
+
}
|
|
253
291
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionDirective, deps: [{ token: i0.Injector }, { token: i1.StatePersistence }, { token: i1.DynamicComponentRefProvider }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
254
292
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionDirective, isStandalone: true, selector: "div[wmAccordion]", providers: [
|
|
255
293
|
provideAsWidgetRef(AccordionDirective)
|
|
@@ -370,6 +408,15 @@ class AccordionPaneComponent extends StylableComponent {
|
|
|
370
408
|
this.accordionRef.registerDynamicPane(this);
|
|
371
409
|
}
|
|
372
410
|
}
|
|
411
|
+
ngOnDestroy() {
|
|
412
|
+
// MEMORY LEAK FIX: Clear ContentChildren QueryList reference
|
|
413
|
+
if (this.reDrawableComponents) {
|
|
414
|
+
this.reDrawableComponents = null;
|
|
415
|
+
}
|
|
416
|
+
// MEMORY LEAK FIX: Clear lazy load function reference
|
|
417
|
+
this.$lazyLoad = null;
|
|
418
|
+
super.ngOnDestroy();
|
|
419
|
+
}
|
|
373
420
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPaneComponent, deps: [{ token: i0.Injector }, { token: AccordionDirective }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
374
421
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccordionPaneComponent, isStandalone: true, selector: "div[wmAccordionPane]", providers: [
|
|
375
422
|
provideAsWidgetRef(AccordionPaneComponent)
|