@wavemaker/app-ng-runtime 11.8.0-rc.5663 → 11.8.0-rc.5666
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.
- {app-ng-runtime → package}/components/base/bundles/index.umd.js +6 -4
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +267 -0
- {app-ng-runtime → package}/components/base/fesm2022/index.mjs +6 -4
- {app-ng-runtime → package}/components/base/fesm2022/index.mjs.map +1 -1
- {app-ng-runtime → package}/components/basic/search/bundles/index.umd.js +9 -10
- package/components/basic/search/esm2022/search.component.mjs +921 -0
- {app-ng-runtime → package}/components/basic/search/fesm2022/index.mjs +9 -10
- package/components/basic/search/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/data/pagination/bundles/index.umd.js +9 -10
- package/components/data/pagination/esm2022/pagination.component.mjs +770 -0
- {app-ng-runtime → package}/components/data/pagination/fesm2022/index.mjs +9 -10
- package/components/data/pagination/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/data/table/bundles/index.umd.js +1 -0
- package/components/data/table/esm2022/table.component.mjs +2204 -0
- {app-ng-runtime → package}/components/data/table/fesm2022/index.mjs +1 -0
- package/components/data/table/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/input/color-picker/bundles/index.umd.js +2 -2
- {app-ng-runtime → package}/components/input/color-picker/esm2022/color-picker.component.mjs +3 -3
- {app-ng-runtime → package}/components/input/color-picker/fesm2022/index.mjs +2 -2
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/input/default/bundles/index.umd.js +32 -37
- package/components/input/default/esm2022/checkbox/checkbox.component.mjs +175 -0
- package/components/input/default/esm2022/select/select.component.mjs +202 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/base/base-input.mjs +2 -3
- package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +65 -0
- package/components/input/default/esm2022/text/color/input-color.component.mjs +65 -0
- {app-ng-runtime → package}/components/input/default/fesm2022/index.mjs +32 -37
- package/components/input/default/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/input/default/text/base/base-input.d.ts +0 -1
- {app-ng-runtime → package}/components/input/epoch/bundles/index.umd.js +11 -13
- {app-ng-runtime → package}/components/input/epoch/esm2022/date/date.component.mjs +2 -2
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +507 -0
- package/components/input/epoch/esm2022/time/time.component.mjs +380 -0
- {app-ng-runtime → package}/components/input/epoch/fesm2022/index.mjs +11 -13
- package/components/input/epoch/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/input/rating/bundles/index.umd.js +10 -12
- package/components/input/rating/esm2022/rating.component.mjs +269 -0
- {app-ng-runtime → package}/components/input/rating/fesm2022/index.mjs +10 -12
- package/components/input/rating/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/components/input/slider/bundles/index.umd.js +3 -4
- package/components/input/slider/esm2022/slider.component.mjs +87 -0
- {app-ng-runtime → package}/components/input/slider/fesm2022/index.mjs +3 -4
- package/components/input/slider/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/core/bundles/index.umd.js +0 -23
- {app-ng-runtime → package}/core/esm2022/public_api.mjs +1 -2
- {app-ng-runtime → package}/core/fesm2022/index.mjs +3 -25
- package/core/fesm2022/index.mjs.map +1 -0
- {app-ng-runtime → package}/core/public_api.d.ts +0 -1
- package/npm-shrinkwrap.json +17 -0
- package/package.json +16 -0
- {app-ng-runtime → package}/runtime/base/bundles/index.umd.js +4 -8
- {app-ng-runtime → package}/runtime/base/components/app-component/app.component.d.ts +1 -3
- package/runtime/base/esm2022/components/app-component/app.component.mjs +234 -0
- package/runtime/base/esm2022/services/i18n.service.mjs +334 -0
- {app-ng-runtime → package}/runtime/base/fesm2022/index.mjs +4 -8
- package/runtime/base/fesm2022/index.mjs.map +1 -0
- app-ng-runtime/build-task/.npmignore +0 -2
- app-ng-runtime/build-task/package.json +0 -28
- app-ng-runtime/components/advanced/carousel/.npmignore +0 -2
- app-ng-runtime/components/advanced/carousel/package.json +0 -23
- app-ng-runtime/components/advanced/login/.npmignore +0 -2
- app-ng-runtime/components/advanced/login/package.json +0 -23
- app-ng-runtime/components/advanced/marquee/.npmignore +0 -2
- app-ng-runtime/components/advanced/marquee/package.json +0 -23
- app-ng-runtime/components/base/.npmignore +0 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +0 -265
- app-ng-runtime/components/base/package.json +0 -28
- app-ng-runtime/components/basic/default/.npmignore +0 -2
- app-ng-runtime/components/basic/default/package.json +0 -23
- app-ng-runtime/components/basic/progress/.npmignore +0 -2
- app-ng-runtime/components/basic/progress/package.json +0 -23
- app-ng-runtime/components/basic/rich-text-editor/.npmignore +0 -2
- app-ng-runtime/components/basic/rich-text-editor/package.json +0 -23
- app-ng-runtime/components/basic/search/.npmignore +0 -2
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +0 -922
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/basic/search/package.json +0 -23
- app-ng-runtime/components/basic/tree/.npmignore +0 -2
- app-ng-runtime/components/basic/tree/package.json +0 -23
- app-ng-runtime/components/chart/.npmignore +0 -2
- app-ng-runtime/components/chart/package.json +0 -23
- app-ng-runtime/components/containers/accordion/.npmignore +0 -2
- app-ng-runtime/components/containers/accordion/package.json +0 -23
- app-ng-runtime/components/containers/layout-grid/.npmignore +0 -2
- app-ng-runtime/components/containers/layout-grid/package.json +0 -23
- app-ng-runtime/components/containers/linear-layout/.npmignore +0 -2
- app-ng-runtime/components/containers/linear-layout/package.json +0 -23
- app-ng-runtime/components/containers/panel/.npmignore +0 -2
- app-ng-runtime/components/containers/panel/package.json +0 -23
- app-ng-runtime/components/containers/tabs/.npmignore +0 -2
- app-ng-runtime/components/containers/tabs/package.json +0 -23
- app-ng-runtime/components/containers/tile/.npmignore +0 -2
- app-ng-runtime/components/containers/tile/package.json +0 -23
- app-ng-runtime/components/containers/wizard/.npmignore +0 -2
- app-ng-runtime/components/containers/wizard/package.json +0 -23
- app-ng-runtime/components/data/card/.npmignore +0 -2
- app-ng-runtime/components/data/card/package.json +0 -23
- app-ng-runtime/components/data/form/.npmignore +0 -2
- app-ng-runtime/components/data/form/package.json +0 -23
- app-ng-runtime/components/data/list/.npmignore +0 -2
- app-ng-runtime/components/data/list/package.json +0 -23
- app-ng-runtime/components/data/live-table/.npmignore +0 -2
- app-ng-runtime/components/data/live-table/package.json +0 -23
- app-ng-runtime/components/data/pagination/.npmignore +0 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +0 -771
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/data/pagination/package.json +0 -23
- app-ng-runtime/components/data/table/.npmignore +0 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +0 -2203
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/data/table/package.json +0 -23
- app-ng-runtime/components/dialogs/alert-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/alert-dialog/package.json +0 -23
- app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/confirm-dialog/package.json +0 -23
- app-ng-runtime/components/dialogs/default/.npmignore +0 -2
- app-ng-runtime/components/dialogs/default/package.json +0 -23
- app-ng-runtime/components/dialogs/design-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/design-dialog/package.json +0 -23
- app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/iframe-dialog/package.json +0 -23
- app-ng-runtime/components/dialogs/login-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/login-dialog/package.json +0 -23
- app-ng-runtime/components/dialogs/partial-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/partial-dialog/package.json +0 -23
- app-ng-runtime/components/input/calendar/.npmignore +0 -2
- app-ng-runtime/components/input/calendar/package.json +0 -23
- app-ng-runtime/components/input/chips/.npmignore +0 -2
- app-ng-runtime/components/input/chips/package.json +0 -23
- app-ng-runtime/components/input/color-picker/.npmignore +0 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/input/color-picker/package.json +0 -23
- app-ng-runtime/components/input/currency/.npmignore +0 -2
- app-ng-runtime/components/input/currency/package.json +0 -23
- app-ng-runtime/components/input/default/.npmignore +0 -2
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -176
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +0 -203
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -66
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +0 -66
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/input/default/package.json +0 -23
- app-ng-runtime/components/input/epoch/.npmignore +0 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -508
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +0 -381
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/input/epoch/package.json +0 -23
- app-ng-runtime/components/input/file-upload/.npmignore +0 -2
- app-ng-runtime/components/input/file-upload/package.json +0 -23
- app-ng-runtime/components/input/rating/.npmignore +0 -2
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +0 -271
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/input/rating/package.json +0 -23
- app-ng-runtime/components/input/slider/.npmignore +0 -2
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +0 -88
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/components/input/slider/package.json +0 -23
- app-ng-runtime/components/navigation/breadcrumb/.npmignore +0 -2
- app-ng-runtime/components/navigation/breadcrumb/package.json +0 -23
- app-ng-runtime/components/navigation/menu/.npmignore +0 -2
- app-ng-runtime/components/navigation/menu/package.json +0 -23
- app-ng-runtime/components/navigation/navbar/.npmignore +0 -2
- app-ng-runtime/components/navigation/navbar/package.json +0 -23
- app-ng-runtime/components/navigation/popover/.npmignore +0 -2
- app-ng-runtime/components/navigation/popover/package.json +0 -23
- app-ng-runtime/components/page/default/.npmignore +0 -2
- app-ng-runtime/components/page/default/package.json +0 -23
- app-ng-runtime/components/page/footer/.npmignore +0 -2
- app-ng-runtime/components/page/footer/package.json +0 -23
- app-ng-runtime/components/page/header/.npmignore +0 -2
- app-ng-runtime/components/page/header/package.json +0 -23
- app-ng-runtime/components/page/left-panel/.npmignore +0 -2
- app-ng-runtime/components/page/left-panel/package.json +0 -23
- app-ng-runtime/components/page/right-panel/.npmignore +0 -2
- app-ng-runtime/components/page/right-panel/package.json +0 -23
- app-ng-runtime/components/page/top-nav/.npmignore +0 -2
- app-ng-runtime/components/page/top-nav/package.json +0 -23
- app-ng-runtime/components/prefab/.npmignore +0 -2
- app-ng-runtime/components/prefab/package.json +0 -23
- app-ng-runtime/core/.npmignore +0 -2
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +0 -26
- app-ng-runtime/core/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/core/package.json +0 -29
- app-ng-runtime/core/services/custom-icons-loader.service.d.ts +0 -7
- app-ng-runtime/http/.npmignore +0 -2
- app-ng-runtime/http/package.json +0 -28
- app-ng-runtime/mobile/components/basic/default/.npmignore +0 -2
- app-ng-runtime/mobile/components/basic/default/package.json +0 -23
- app-ng-runtime/mobile/components/basic/search/.npmignore +0 -2
- app-ng-runtime/mobile/components/basic/search/package.json +0 -23
- app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +0 -2
- app-ng-runtime/mobile/components/containers/segmented-control/package.json +0 -23
- app-ng-runtime/mobile/components/data/media-list/.npmignore +0 -2
- app-ng-runtime/mobile/components/data/media-list/package.json +0 -23
- app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +0 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/package.json +0 -23
- app-ng-runtime/mobile/components/device/camera/.npmignore +0 -2
- app-ng-runtime/mobile/components/device/camera/package.json +0 -23
- app-ng-runtime/mobile/components/input/file-upload/.npmignore +0 -2
- app-ng-runtime/mobile/components/input/file-upload/package.json +0 -23
- app-ng-runtime/mobile/components/page/default/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/default/package.json +0 -23
- app-ng-runtime/mobile/components/page/left-panel/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/left-panel/package.json +0 -23
- app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/package.json +0 -23
- app-ng-runtime/mobile/components/page/tab-bar/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/tab-bar/package.json +0 -23
- app-ng-runtime/mobile/core/.npmignore +0 -2
- app-ng-runtime/mobile/core/package.json +0 -28
- app-ng-runtime/mobile/offline/.npmignore +0 -2
- app-ng-runtime/mobile/offline/package.json +0 -28
- app-ng-runtime/mobile/placeholder/runtime/.npmignore +0 -2
- app-ng-runtime/mobile/placeholder/runtime/package.json +0 -27
- app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/package.json +0 -23
- app-ng-runtime/mobile/runtime/.npmignore +0 -2
- app-ng-runtime/mobile/runtime/package.json +0 -28
- app-ng-runtime/mobile/runtime-dynamic/.npmignore +0 -2
- app-ng-runtime/mobile/runtime-dynamic/package.json +0 -23
- app-ng-runtime/mobile/variables/.npmignore +0 -2
- app-ng-runtime/mobile/variables/package.json +0 -28
- app-ng-runtime/oAuth/.npmignore +0 -2
- app-ng-runtime/oAuth/package.json +0 -28
- app-ng-runtime/package.json +0 -11
- app-ng-runtime/runtime/base/.npmignore +0 -2
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +0 -238
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +0 -334
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +0 -1
- app-ng-runtime/runtime/base/package.json +0 -28
- app-ng-runtime/runtime/dynamic/.npmignore +0 -2
- app-ng-runtime/runtime/dynamic/package.json +0 -28
- app-ng-runtime/security/.npmignore +0 -2
- app-ng-runtime/security/package.json +0 -28
- app-ng-runtime/swipey/.npmignore +0 -2
- app-ng-runtime/swipey/package.json +0 -28
- app-ng-runtime/transpiler/.npmignore +0 -2
- app-ng-runtime/transpiler/package.json +0 -29
- app-ng-runtime/variables/.npmignore +0 -2
- app-ng-runtime/variables/package.json +0 -28
- {app-ng-runtime → package}/build-task/advanced/carousel/carousel-template/carousel-template.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/advanced/carousel/carousel.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/advanced/login/login.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/advanced/marquee/marquee.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/anchor/anchor.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/audio/audio.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/html/html.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/icon/icon.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/iframe/iframe.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/label/label.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/picture/picture.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/spinner/spinner.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/default/video/video.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/progress/progress-bar/progress-bar.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/progress/progress-circle/progress-circle.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/rich-text-editor/rich-text-editor.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/search/search.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/basic/tree/tree.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/build-task/chart/chart.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/accordion/accordion-pane/accordion-pane.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/accordion/accordion.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/container.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/layout-grid/layout-grid-column/layout-grid-column.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/layout-grid/layout-grid-row/layout-grid-row.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/layout-grid/layout-grid.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/linear-layout/linear-layout-item/linear-layout-item.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/linear-layout/linear-layout.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/panel/panel.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/repeat-template.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/segmented-control/segment-content/segment-content.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/segmented-control/segmented-control.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/tabs/tab-pane/tab-pane.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/tabs/tabs.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/tile/tile.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/wizard/wizard-step/wizard-step.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/containers/wizard/wizard.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/card/card-actions/card-actions.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/card/card-content/card-content.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/card/card-footer/card-footer.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/card/card.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/form/form-action/form-action.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/form/form-field/form-field.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/form/form.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/list/list.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/live-table/live-table.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/media-list/media-list-item/media-list-item.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/media-list/media-list.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/pagination/pagination.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table-action/table-action.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table-column/table-column.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table-column-group/table-column-group.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table-row/table-row.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table-row-action/table-row-action.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/data/table/table.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/device/barcode-scanner/barcode-scanner.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/device/camera/camera.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/alert-dialog/alert-dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/base/dialog-footer/dialog-footer.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/confirm-dialog/confirm-dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/design-dialog/dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/iframe-dialog/iframe-dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/login-dialog/login-dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/dialogs/partial-dialog/partial-dialog.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/advanced/carousel/carousel.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/advanced/login/login.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/advanced/marquee/marquee.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/html/html.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/label/label.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/default/video/video.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/search/search.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/basic/tree/tree.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/chart/chart.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/accordion/accordion.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/container.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/layout-grid/layout-grid-column/layout-grid-column.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/layout-grid/layout-grid-row/layout-grid-row.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/layout-grid/layout-grid.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/linear-layout/linear-layout-item/linear-layout-item.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/linear-layout/linear-layout.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/panel/panel.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/repeat-template.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/segmented-control/segment-content/segment-content.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/segmented-control/segmented-control.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/tabs/tab-pane/tab-pane.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/tabs/tabs.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/tile/tile.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/containers/wizard/wizard.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/card/card-actions/card-actions.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/card/card-content/card-content.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/card/card-footer/card-footer.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/card/card.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/form/form-action/form-action.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/form/form-field/form-field.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/form/form.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/list/list.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/live-table/live-table.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/media-list/media-list-item/media-list-item.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/media-list/media-list.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/pagination/pagination.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table-action/table-action.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table-column/table-column.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table-column-group/table-column-group.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table-row/table-row.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table-row-action/table-row-action.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/data/table/table.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/device/camera/camera.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/base/dialog-footer/dialog-footer.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/confirm-dialog/confirm-dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/design-dialog/dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/iframe-dialog/iframe-dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/login-dialog/login-dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/calendar/calendar.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/chips/chips.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/color-picker/color-picker.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/currency/currency.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/button/button.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/button-group/button-group.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/checkboxset/checkboxset.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/composite/composite.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/number/number.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/radioset/radioset.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/select/select.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/switch/switch.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/text/text.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/default/textarea/textarea.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/epoch/date/date.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/epoch/date-time/date-time.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/epoch/time/time.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/file-upload/file-upload.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/rating/rating.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/input/slider/slider.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/message/message.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/breadcrumb/breadcrumb.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/menu/menu.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/nav/nav-item/nav-item.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/nav/nav.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/navbar/navbar.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/navigation/popover/popover.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/content/content.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/footer/footer.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/header/header.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/layout.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/left-panel/left-panel.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/mobile-navbar/mobile-navbar.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/page-content/page-content.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/page.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/right-panel/right-panel.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/router-outlet/router-outlet.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/tab-bar/tab-bar.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/page/top-nav/top-nav.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/partial/partial.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/partial-param/partial-param.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/prefab/prefab.build.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/build-task/esm2022/utils/utils.mjs +0 -0
- {app-ng-runtime → package}/build-task/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/build-task/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/build-task/index.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/calendar/calendar.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/chips/chips.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/color-picker/color-picker.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/currency/currency.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/button/button.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/button-group/button-group.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/checkbox/checkbox.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/checkboxset/checkboxset.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/composite/composite.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/number/number.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/radioset/radioset.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/select/select.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/switch/switch.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/text/text.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/default/textarea/textarea.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/epoch/date/date.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/epoch/date-time/date-time.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/epoch/time/time.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/file-upload/file-upload.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/rating/rating.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/input/slider/slider.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/message/message.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/breadcrumb/breadcrumb.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/menu/menu.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/nav/nav-item/nav-item.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/nav/nav.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/navbar/navbar.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/navigation/popover/popover.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/content/content.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/footer/footer.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/header/header.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/layout.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/left-panel/left-panel.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/mobile-navbar/mobile-navbar.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/page-content/page-content.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/page.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/right-panel/right-panel.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/router-outlet/router-outlet.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/tab-bar/tab-bar.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/page/top-nav/top-nav.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/partial/partial.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/partial-param/partial-param.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/prefab/prefab-container/prefab-container.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/prefab/prefab.build.d.ts +0 -0
- {app-ng-runtime → package}/build-task/public_api.d.ts +0 -0
- {app-ng-runtime → package}/build-task/utils/utils.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel-template/carousel-template.props.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel.animator.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel.module.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/carousel.props.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel-template/carousel-template.props.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel.animator.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel.directive.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel.module.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/carousel.props.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/index.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/carousel/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/login/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/advanced/login/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/esm2022/login.component.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/esm2022/login.module.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/esm2022/login.props.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/login/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/advanced/login/index.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/login/login.component.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/login/login.module.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/login/login.props.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/login/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/esm2022/marquee.directive.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/esm2022/marquee.module.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/esm2022/marquee.props.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/index.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/marquee.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/marquee.module.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/marquee.props.d.ts +0 -0
- {app-ng-runtime → package}/components/advanced/marquee/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/base/components.module.d.ts +0 -0
- {app-ng-runtime → package}/components/base/directives/show-in-device.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/esm2022/components.module.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/directives/show-in-device.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/pipes/custom-pipes.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/pipes/image.pipe.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/pipes/sanitize.pipe.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/pipes/trust-as.pipe.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/pipes/wm-pipe.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/utils/data-utils.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/utils/form-utils.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/utils/live-utils.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/utils/widget-utils.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/base-container.component.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/base.component.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/stylable.component.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/base/text-content.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/container/container.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/container/container.props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/item-template/item-template.props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/message/message.component.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/message/message.props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/partial/partial.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/partial/partial.props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/repeat-template/repeat-template.props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/constants.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/deviceview.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/property-change-handler.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/styler.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/types.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/widget-id-generator.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/widget-props.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +0 -0
- {app-ng-runtime → package}/components/base/esm2022/widgets/framework/widget-registry.mjs +0 -0
- {app-ng-runtime → package}/components/base/index.d.ts +0 -0
- {app-ng-runtime → package}/components/base/pipes/custom-pipes.d.ts +0 -0
- {app-ng-runtime → package}/components/base/pipes/image.pipe.d.ts +0 -0
- {app-ng-runtime → package}/components/base/pipes/sanitize.pipe.d.ts +0 -0
- {app-ng-runtime → package}/components/base/pipes/trust-as.pipe.d.ts +0 -0
- {app-ng-runtime → package}/components/base/pipes/wm-pipe.d.ts +0 -0
- {app-ng-runtime → package}/components/base/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/base/utils/data-utils.d.ts +0 -0
- {app-ng-runtime → package}/components/base/utils/form-utils.d.ts +0 -0
- {app-ng-runtime → package}/components/base/utils/live-utils.d.ts +0 -0
- {app-ng-runtime → package}/components/base/utils/widget-utils.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/base-container.component.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/base-field-validations.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/base.component.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/partial-container.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/stylable.component.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/base/text-content.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/container/container.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/container/container.props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/dialog/dialog.service.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/item-template/item-template.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/item-template/item-template.props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/message/message.component.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/message/message.props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/partial/partial.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/partial/partial.props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/partial-param/partial-param.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/redraw/redrawable.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/repeat-template/repeat-template.props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/constants.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/deviceview.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/property-change-handler.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/styler.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/types.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/widget-id-generator.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/widget-props.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/widget-proxy-provider.d.ts +0 -0
- {app-ng-runtime → package}/components/base/widgets/framework/widget-registry.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/anchor/anchor.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/anchor/anchor.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/audio/audio.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/audio/audio.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/basic.module.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/audio/audio.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/audio/audio.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/basic.module.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/html/html.directive.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/html/html.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/icon/icon.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/icon/icon.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/label/label.directive.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/label/label.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/picture/picture.directive.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/picture/picture.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/video/video.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/esm2022/video/video.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/default/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/basic/default/html/html.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/html/html.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/icon/icon.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/icon/icon.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/iframe/iframe.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/iframe/iframe.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/index.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/label/label.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/label/label.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/picture/picture.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/picture/picture.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/spinner/spinner.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/spinner/spinner.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/video/video.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/default/video/video.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/progress.module.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/esm2022/utils.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/progress/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/basic/progress/index.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/progress-bar/progress-bar.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/progress-bar/progress-bar.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/progress-circle/progress-circle.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/progress-circle/progress-circle.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/progress.module.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/progress/utils.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/index.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/rich-text-editor.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/rich-text-editor/rich-text-editor.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/data-provider/data-provider.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/data-provider/local-data-provider.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/data-provider/remote-data-provider.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/data-provider/data-provider.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/data-provider/local-data-provider.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/scrollable.directive.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/search.module.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/esm2022/search.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/search/index.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/scrollable.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/search.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/search.module.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/search/search.props.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/tree/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/basic/tree/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/esm2022/tree.component.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/esm2022/tree.module.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/esm2022/tree.props.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/basic/tree/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/basic/tree/index.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/tree/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/tree/tree.component.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/tree/tree.module.d.ts +0 -0
- {app-ng-runtime → package}/components/basic/tree/tree.props.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/chart/chart.component.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/chart.module.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/chart.props.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/chart.utils.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/chart.component.mjs +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/chart.module.mjs +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/chart.props.mjs +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/chart.utils.mjs +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/chart/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/chart/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/chart/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/chart/index.d.ts +0 -0
- {app-ng-runtime → package}/components/chart/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/accordion-pane/accordion-pane.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/accordion.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/accordion.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/accordion.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/accordion.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/accordion.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/accordion.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/accordion/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/accordion/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/accordion/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/layout-grid.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid-column/layout-grid-column.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid-row/layout-grid-row.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/layout-grid.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/layout-grid/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/linear-layout.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/linear-layout-item/linear-layout-item.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/linear-layout.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/linear-layout.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/linear-layout.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/linear-layout/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/panel/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/panel/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/esm2022/panel.component.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/esm2022/panel.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/esm2022/panel.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/panel/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/panel/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/panel/panel.component.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/panel/panel.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/panel/panel.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/panel/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tabs.animator.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tabs.component.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tabs.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/esm2022/tabs.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tabs/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/tabs/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tab-pane/tab-pane.component.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tab-pane/tab-pane.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tabs.animator.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tabs.component.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tabs.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tabs/tabs.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tile/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/tile/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/esm2022/tile.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/esm2022/tile.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/esm2022/tile.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/tile/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/tile/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tile/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tile/tile.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tile/tile.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/tile/tile.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/wizard.component.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/wizard.module.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/esm2022/wizard.props.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/containers/wizard/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/containers/wizard/index.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/wizard-step/wizard-step.props.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/wizard.component.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/wizard.module.d.ts +0 -0
- {app-ng-runtime → package}/components/containers/wizard/wizard.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/data/card/card-actions/card-actions.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card-actions/card-actions.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card-content/card-content.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card-content/card-content.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card-footer/card-footer.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card-footer/card-footer.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/card.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-actions/card-actions.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-actions/card-actions.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-content/card-content.component.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-content/card-content.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-footer/card-footer.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card-footer/card-footer.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card.component.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/card.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/card/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/data/card/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/card/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form-action/form-action.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form-action/form-action.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form-field/form-field.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form-field/form-field.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form-widget.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form.component.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/form.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/live-actions/dependson.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/live-actions/live-actions.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/live-filter/live-filter.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/live-form/live-form.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/form/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/data/form/form-action/form-action.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form-action/form-action.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form-field/form-field.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form-field/form-field.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form-widget.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/form.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/live-actions/dependson.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/live-actions/live-actions.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/live-filter/live-filter.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/live-form/live-form.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/form/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/list-item.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/list.animator.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/list.component.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/list.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/list.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/list/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/data/list/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/list-item.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/list.animator.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/list.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/list.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/list.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/list/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/live-table/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/data/live-table/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/esm2022/live-table.component.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/esm2022/live-table.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/esm2022/live-table.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/live-table/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/data/live-table/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/live-table/live-table.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/live-table/live-table.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/live-table/live-table.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/live-table/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/pagination/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/pagination/esm2022/pagination.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/pagination/esm2022/pagination.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/pagination/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/pagination/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/pagination/pagination.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/pagination/pagination.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/pagination/pagination.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/pagination/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-action/table-action.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-action/table-action.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-column/table-column.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-column/table-column.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-column-group/table-column-group.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-cud.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-filter.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-row/table-row.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-row/table-row.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table-row-action/table-row-action.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table.module.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/esm2022/table.props.mjs +0 -0
- {app-ng-runtime → package}/components/data/table/index.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-action/table-action.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-action/table-action.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-column/table-column.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-column/table-column.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-column-group/table-column-group.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-column-group/table-column-group.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-cud.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-filter.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-row/table-row.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-row/table-row.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-row-action/table-row-action.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table-row-action/table-row-action.props.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table.component.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table.module.d.ts +0 -0
- {app-ng-runtime → package}/components/data/table/table.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/alert-dialog.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/alert-dialog.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/esm2022/alert-dialog.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/alert-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/confirm-dialog.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/confirm-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/base-dialog.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/dialog-footer/dialog-footer.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/dialog-header/dialog-header.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/base-dialog.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/dialog-footer/dialog-footer.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/default/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/default/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/dialog.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/dialog.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/esm2022/dialog.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/esm2022/dialog.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/design-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/iframe-dialog.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/iframe-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/login-dialog.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/login-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/esm2022/partial-dialog.props.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/index.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/partial-dialog.component.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/partial-dialog.props.d.ts +0 -0
- {app-ng-runtime → package}/components/dialogs/partial-dialog/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/calendar/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/input/calendar/calendar.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/calendar/calendar.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/calendar/calendar.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/calendar/esm2022/calendar.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/esm2022/calendar.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/esm2022/calendar.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/calendar/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/input/calendar/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/calendar/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/chips/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/input/chips/chips.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/chips/chips.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/chips/chips.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/chips/esm2022/chips.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/esm2022/chips.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/esm2022/chips.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/chips/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/input/chips/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/chips/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/color-picker/color-picker.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/color-picker/color-picker.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/color-picker/color-picker.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/color-picker/esm2022/color-picker.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/color-picker/esm2022/color-picker.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/color-picker/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/color-picker/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/color-picker/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/color-picker/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/currency/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/input/currency/currency.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/currency/currency.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/currency/currency.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/currency/esm2022/currency.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/esm2022/currency.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/esm2022/currency.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/currency/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/input/currency/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/currency/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/base-form-custom.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/base-form.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/button/button.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/button/button.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/button-group/button-group.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/button-group/button-group.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/caption-position.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/checkbox/checkbox.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/checkbox/checkbox.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/checkboxset/checkboxset.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/checkboxset/checkboxset.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/composite/composite.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/composite/composite.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/dataset-aware-form.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/base-form-custom.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/base-form.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/button/button.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/button/button.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/button-group/button-group.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/caption-position.directive.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/composite/composite.directive.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/composite/composite.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/input.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/number/number.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/number/number.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/radioset/radioset.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/radioset/radioset.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/select/select.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/switch/switch.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/switch/switch.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/color/input-color.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/email/input-email.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/email/input-email.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/locale/number-locale.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/number/input-number.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/number/input-number.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/text/input-text.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/text/text/input-text.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/textarea/textarea.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/esm2022/textarea/textarea.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/default/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/input.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/number/number.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/number/number.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/radioset/radioset.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/radioset/radioset.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/select/select.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/select/select.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/switch/switch.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/switch/switch.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/calendar/input-calendar.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/calendar/input-calendar.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/color/input-color.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/color/input-color.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/email/input-email.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/email/input-email.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/locale/number-locale.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/number/input-number.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/number/input-number.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/text/input-text.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/text/text/input-text.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/textarea/textarea.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/default/textarea/textarea.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/base-date-time.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date/date.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date/date.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date/imaskUtil.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date-time/date-time-picker.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date-time/date-time.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/date-time/date-time.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/epoch.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/base-date-time.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/date/date.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/date/imaskUtil.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/date-time/date-time.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/epoch.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/picker/picker.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/esm2022/time/time.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/epoch/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/picker/picker.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/time/time.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/epoch/time/time.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/file-upload/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/input/file-upload/esm2022/file-upload.component.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/esm2022/file-upload.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/esm2022/file-upload.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/file-upload/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/input/file-upload/file-upload.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/file-upload/file-upload.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/file-upload/file-upload.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/file-upload/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/file-upload/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/rating/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/rating/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/rating/esm2022/rating.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/rating/esm2022/rating.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/rating/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/rating/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/rating/rating.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/rating/rating.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/rating/rating.props.d.ts +0 -0
- {app-ng-runtime → package}/components/input/slider/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/input/slider/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/input/slider/esm2022/slider.module.mjs +0 -0
- {app-ng-runtime → package}/components/input/slider/esm2022/slider.props.mjs +0 -0
- {app-ng-runtime → package}/components/input/slider/index.d.ts +0 -0
- {app-ng-runtime → package}/components/input/slider/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/input/slider/slider.component.d.ts +0 -0
- {app-ng-runtime → package}/components/input/slider/slider.module.d.ts +0 -0
- {app-ng-runtime → package}/components/input/slider/slider.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/breadcrumb.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/breadcrumb.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/esm2022/breadcrumb.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/index.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/breadcrumb/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu-adapator.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu.module.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/menu.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/nav/nav-item/nav-item.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/nav/nav.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/nav/nav.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/menu/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/navigation/menu/index.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu-adapator.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu.module.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/menu.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/nav/nav-item/nav-item.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/nav/nav.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/nav/nav.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/nav/navigation-control.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/menu/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/esm2022/navbar.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/esm2022/navbar.module.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/esm2022/navbar.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/index.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/navbar.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/navbar.module.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/navbar.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/navbar/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/popover/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/navigation/popover/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/esm2022/popover.component.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/esm2022/popover.module.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/esm2022/popover.props.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/navigation/popover/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/navigation/popover/index.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/popover/popover.component.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/popover/popover.module.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/popover/popover.props.d.ts +0 -0
- {app-ng-runtime → package}/components/navigation/popover/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/default/content/content.component.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/content/content.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/content/content.component.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/content/content.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/layout.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/layout.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/page-content/page-content.component.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/page-content/page-content.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/page.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/page.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/page.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/router-outlet.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/router-outlet.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/spa-page.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/esm2022/spa-page.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/default/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/default/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/layout.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/layout.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/page-content/page-content.component.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/page-content/page-content.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/page.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/page.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/page.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/router-outlet.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/router-outlet.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/spa-page.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/default/spa-page.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/footer/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/footer/esm2022/footer.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/esm2022/footer.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/esm2022/footer.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/footer/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/footer/footer.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/footer/footer.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/footer/footer.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/footer/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/footer/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/header/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/header/esm2022/header.component.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/esm2022/header.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/esm2022/header.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/header/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/header/header.component.d.ts +0 -0
- {app-ng-runtime → package}/components/page/header/header.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/header/header.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/header/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/header/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/left-panel.animator.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/left-panel.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/left-panel.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/left-panel/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/left-panel/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/left-panel.animator.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/left-panel.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/left-panel.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/left-panel.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/left-panel/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/right-panel/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/right-panel/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/esm2022/right-panel.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/esm2022/right-panel.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/esm2022/right-panel.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/right-panel/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/right-panel/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/right-panel/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/right-panel/right-panel.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/right-panel/right-panel.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/right-panel/right-panel.props.d.ts +0 -0
- {app-ng-runtime → package}/components/page/top-nav/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/page/top-nav/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/esm2022/top-nav.directive.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/esm2022/top-nav.module.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/esm2022/top-nav.props.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/page/top-nav/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/page/top-nav/index.d.ts +0 -0
- {app-ng-runtime → package}/components/page/top-nav/public_api.d.ts +0 -0
- {app-ng-runtime → package}/components/page/top-nav/top-nav.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/page/top-nav/top-nav.module.d.ts +0 -0
- {app-ng-runtime → package}/components/page/top-nav/top-nav.props.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/prefab-container/prefab-container.props.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/prefab.directive.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/prefab.module.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/prefab.props.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/components/prefab/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/components/prefab/index.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/prefab-container/prefab-container.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/prefab-container/prefab-container.props.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/prefab.directive.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/prefab.module.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/prefab.props.d.ts +0 -0
- {app-ng-runtime → package}/components/prefab/public_api.d.ts +0 -0
- {app-ng-runtime → package}/core/constants/currency-constants.d.ts +0 -0
- {app-ng-runtime → package}/core/core.module.d.ts +0 -0
- {app-ng-runtime → package}/core/enums/enums.d.ts +0 -0
- {app-ng-runtime → package}/core/esm2022/constants/currency-constants.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/core.module.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/enums/enums.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/constant.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/field-type.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/field-widget.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/pagination.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/script-loader.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/state-persistence.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/user-custom-pipe-manager.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/utils.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/services/viewport.service.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/types/types.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/build-utils.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/dom.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/event-notifier.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/expression-parser.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/id-generator.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/lru-cache.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/utils.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/watcher.mjs +0 -0
- {app-ng-runtime → package}/core/esm2022/utils/wm-project-properties.mjs +0 -0
- {app-ng-runtime → package}/core/index.d.ts +0 -0
- {app-ng-runtime → package}/core/services/constant.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/field-type.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/field-widget.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/pagination.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/script-loader.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/state-persistence.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/user-custom-pipe-manager.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/utils.service.d.ts +0 -0
- {app-ng-runtime → package}/core/services/viewport.service.d.ts +0 -0
- {app-ng-runtime → package}/core/types/types.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/build-utils.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/dom.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/event-notifier.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/expression-parser.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/id-generator.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/lru-cache.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/utils.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/watcher.d.ts +0 -0
- {app-ng-runtime → package}/core/utils/wm-project-properties.d.ts +0 -0
- {app-ng-runtime → package}/http/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/http/esm2022/http-service.module.mjs +0 -0
- {app-ng-runtime → package}/http/esm2022/http.service.mjs +0 -0
- {app-ng-runtime → package}/http/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/http/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/http/esm2022/wm-http-request.mjs +0 -0
- {app-ng-runtime → package}/http/esm2022/wm-http-response.mjs +0 -0
- {app-ng-runtime → package}/http/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/http/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/http/http-service.module.d.ts +0 -0
- {app-ng-runtime → package}/http/http.service.d.ts +0 -0
- {app-ng-runtime → package}/http/index.d.ts +0 -0
- {app-ng-runtime → package}/http/public_api.d.ts +0 -0
- {app-ng-runtime → package}/http/wm-http-request.d.ts +0 -0
- {app-ng-runtime → package}/http/wm-http-response.d.ts +0 -0
- {app-ng-runtime → package}/locales/angular/global/af-na.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/af.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/agq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ak.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/am.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ae.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-bh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-dj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-dz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-eg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-eh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-er.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-il.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-iq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-jo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-km.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-kw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-lb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ly.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ma.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-om.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ps.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-qa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-sa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-sd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-so.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ss.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-sy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-td.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-tn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar-ye.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ar.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/as.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/asa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ast.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/az-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/az-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/az.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bas.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/be-tarask.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/be.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bem.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bez.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bn-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bo-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/br.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/brx.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bs-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bs-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/bs.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ca-ad.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ca-es-valencia.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ca-fr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ca-it.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ca.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ccp-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ccp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ce.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ceb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/cgg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/chr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ckb-ir.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ckb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/cs.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/cy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/da-gl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/da.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dav.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-at.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-be.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-ch.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-it.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-li.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de-lu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/de.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dje.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/doi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dsb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dua.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dyo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/dz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ebu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ee-tg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ee.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/el-cy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/el.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-001.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-150.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ae.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ag.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ai.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-as.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-at.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-au.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-be.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bs.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-bz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ca.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-cc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ch.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ck.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-cm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-cx.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-cy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-de.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-dg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-dk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-dm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-er.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-fi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-fj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-fk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-fm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-gy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-hk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ie.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-il.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-im.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-io.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-je.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-jm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ke.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ki.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-kn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ky.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-lc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-lr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ls.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ms.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-mw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-my.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-na.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-nf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ng.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-nl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-nr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-nu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-nz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-pg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ph.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-pk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-pn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-pr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-pw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-rw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-se.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-si.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ss.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sx.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-sz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-tc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-tk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-to.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-tt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-tv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-tz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ug.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-um.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-vc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-vg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-vi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-vu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-ws.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-za.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-zm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en-zw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/en.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/eo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-419.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ar.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-bo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-br.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-bz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-cl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-co.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-cr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-cu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-do.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ea.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ec.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-gq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-gt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-hn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ic.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-mx.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ni.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-pa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-pe.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ph.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-pr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-py.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-sv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-us.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-uy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es-ve.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/es.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/et.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/eu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ewo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fa-af.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-bf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-cm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-gh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-gm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-gw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-lr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-ne.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-ng.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-sl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm-sn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-adlm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-cm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-gn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-bf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-cm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-gh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-gm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-gn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-gw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-lr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-ne.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-ng.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn-sl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff-mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ff.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fil.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fo-dk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-be.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-bf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-bi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-bj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-bl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ca.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-cd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-cf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-cg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ch.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ci.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-cm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-dj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-dz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ga.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-gf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-gn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-gp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-gq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ht.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-km.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-lu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ma.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ml.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-mu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-nc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-ne.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-pf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-pm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-re.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-rw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-sc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-sn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-sy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-td.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-tg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-tn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-vu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-wf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr-yt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fur.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/fy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ga-gb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ga.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gsw-fr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gsw-li.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gsw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/guz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/gv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ha-gh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ha-ne.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ha.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/haw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/he.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hi-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hr-ba.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hsb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/hy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ia.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/id.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ig.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ii.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/is.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/it-ch.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/it-sm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/it-va.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/it.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ja.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/jgo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/jmc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/jv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ka.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kab.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kam.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kde.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kea.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kgp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/khq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ki.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kkj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kln.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/km.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ko-kp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ko.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kok.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ks-arab.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ks-deva.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ks.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ksb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ksf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ksh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ku.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/kw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ky.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lag.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lkt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ln-ao.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ln-cf.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ln-cg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ln.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lrc-iq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lrc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/luo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/luy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/lv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mai.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mas-tz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mas.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mer.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mfe.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mgh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mgo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ml.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mni-beng.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mni.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ms-bn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ms-id.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ms-sg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ms.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mua.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/my.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/mzn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/naq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nb-sj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nb.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nds-nl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nds.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ne-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ne.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-aw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-be.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-bq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-cw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-sr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl-sx.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nmg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nnh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/no.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nus.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/nyn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/om-ke.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/om.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/or.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/os-ru.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/os.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pa-arab.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pa-guru.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pcm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ps-pk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ps.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-ao.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-ch.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-cv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-gq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-gw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-lu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-mo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-mz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-pt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-st.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt-tl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/pt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/qu-bo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/qu-ec.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/qu.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/rm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/rn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ro-md.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ro.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/rof.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru-by.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru-kg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru-kz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru-md.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru-ua.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ru.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/rw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/rwk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sa.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sah.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/saq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sat-olck.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sat.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sbp.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sc.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sd-arab.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sd-deva.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/se-fi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/se-se.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/se.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/seh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ses.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/shi-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/shi-tfng.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/shi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/si.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/smn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/so-dj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/so-et.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/so-ke.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/so.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sq-mk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sq-xk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-cyrl-ba.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-cyrl-me.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-cyrl-xk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-latn-ba.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-latn-me.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-latn-xk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/su-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/su.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sv-ax.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sv-fi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sv.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sw-cd.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sw-ke.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sw-ug.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/sw.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ta-lk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ta-my.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ta-sg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ta.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/te.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/teo-ke.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/teo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/th.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ti-er.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ti.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/to.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tr-cy.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tr.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tt.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/twq.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/tzm.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ug.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/uk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/und.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ur-in.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/ur.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/uz-arab.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/uz-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/uz-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/uz.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/vai-latn.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/vai-vaii.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/vai.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/vi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/vun.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/wae.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/wo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/xh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/xog.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yav.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yi.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yo-bj.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yrl-co.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yrl-ve.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yrl.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yue-hans.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yue-hant.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/yue.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zgh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hans-hk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hans-mo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hans-sg.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hans.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hant-hk.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hant-mo.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh-hant.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zh.js +0 -0
- {app-ng-runtime → package}/locales/angular/global/zu.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/af.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-dz.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-kw.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-ly.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-ma.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-sa.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar-tn.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ar.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/az.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/bg.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/bs.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ca.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/cs.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/da.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/de.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/el.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/en-au.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/en-gb.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/en-nz.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/es-us.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/es.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/et.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/eu.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/fa.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/fi.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/fr-ca.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/fr-ch.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/fr.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/gl.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/he.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/hi.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/hr.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/hu.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/id.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/is.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/it.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ja.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ka.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/kk.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ko.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/lb.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/lt.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/lv.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/mk.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ms.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/nb.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ne.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/nl.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/nn.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/pl.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/pt-br.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/pt.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ro.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ru.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sk.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sl.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sq.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sr-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sr.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/sv.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/th.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/tr.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/ug.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/uk.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/uz.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/vi.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/zh-cn.js +0 -0
- {app-ng-runtime → package}/locales/fullcalendar/zh-tw.js +0 -0
- {app-ng-runtime → package}/locales/moment/af.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-dz.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-kw.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-ly.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-ma.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-sa.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar-tn.js +0 -0
- {app-ng-runtime → package}/locales/moment/ar.js +0 -0
- {app-ng-runtime → package}/locales/moment/az.js +0 -0
- {app-ng-runtime → package}/locales/moment/be.js +0 -0
- {app-ng-runtime → package}/locales/moment/bg.js +0 -0
- {app-ng-runtime → package}/locales/moment/bm.js +0 -0
- {app-ng-runtime → package}/locales/moment/bn-bd.js +0 -0
- {app-ng-runtime → package}/locales/moment/bn.js +0 -0
- {app-ng-runtime → package}/locales/moment/bo.js +0 -0
- {app-ng-runtime → package}/locales/moment/br.js +0 -0
- {app-ng-runtime → package}/locales/moment/bs.js +0 -0
- {app-ng-runtime → package}/locales/moment/ca.js +0 -0
- {app-ng-runtime → package}/locales/moment/cs.js +0 -0
- {app-ng-runtime → package}/locales/moment/cv.js +0 -0
- {app-ng-runtime → package}/locales/moment/cy.js +0 -0
- {app-ng-runtime → package}/locales/moment/da.js +0 -0
- {app-ng-runtime → package}/locales/moment/de-at.js +0 -0
- {app-ng-runtime → package}/locales/moment/de-ch.js +0 -0
- {app-ng-runtime → package}/locales/moment/de.js +0 -0
- {app-ng-runtime → package}/locales/moment/dv.js +0 -0
- {app-ng-runtime → package}/locales/moment/el.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-au.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-ca.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-gb.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-ie.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-il.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-in.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-nz.js +0 -0
- {app-ng-runtime → package}/locales/moment/en-sg.js +0 -0
- {app-ng-runtime → package}/locales/moment/eo.js +0 -0
- {app-ng-runtime → package}/locales/moment/es-do.js +0 -0
- {app-ng-runtime → package}/locales/moment/es-mx.js +0 -0
- {app-ng-runtime → package}/locales/moment/es-us.js +0 -0
- {app-ng-runtime → package}/locales/moment/es.js +0 -0
- {app-ng-runtime → package}/locales/moment/et.js +0 -0
- {app-ng-runtime → package}/locales/moment/eu.js +0 -0
- {app-ng-runtime → package}/locales/moment/fa.js +0 -0
- {app-ng-runtime → package}/locales/moment/fi.js +0 -0
- {app-ng-runtime → package}/locales/moment/fil.js +0 -0
- {app-ng-runtime → package}/locales/moment/fo.js +0 -0
- {app-ng-runtime → package}/locales/moment/fr-ca.js +0 -0
- {app-ng-runtime → package}/locales/moment/fr-ch.js +0 -0
- {app-ng-runtime → package}/locales/moment/fr.js +0 -0
- {app-ng-runtime → package}/locales/moment/fy.js +0 -0
- {app-ng-runtime → package}/locales/moment/ga.js +0 -0
- {app-ng-runtime → package}/locales/moment/gd.js +0 -0
- {app-ng-runtime → package}/locales/moment/gl.js +0 -0
- {app-ng-runtime → package}/locales/moment/gom-deva.js +0 -0
- {app-ng-runtime → package}/locales/moment/gom-latn.js +0 -0
- {app-ng-runtime → package}/locales/moment/gu.js +0 -0
- {app-ng-runtime → package}/locales/moment/he.js +0 -0
- {app-ng-runtime → package}/locales/moment/hi.js +0 -0
- {app-ng-runtime → package}/locales/moment/hr.js +0 -0
- {app-ng-runtime → package}/locales/moment/hu.js +0 -0
- {app-ng-runtime → package}/locales/moment/hy-am.js +0 -0
- {app-ng-runtime → package}/locales/moment/id.js +0 -0
- {app-ng-runtime → package}/locales/moment/is.js +0 -0
- {app-ng-runtime → package}/locales/moment/it-ch.js +0 -0
- {app-ng-runtime → package}/locales/moment/it.js +0 -0
- {app-ng-runtime → package}/locales/moment/ja.js +0 -0
- {app-ng-runtime → package}/locales/moment/jv.js +0 -0
- {app-ng-runtime → package}/locales/moment/ka.js +0 -0
- {app-ng-runtime → package}/locales/moment/kk.js +0 -0
- {app-ng-runtime → package}/locales/moment/km.js +0 -0
- {app-ng-runtime → package}/locales/moment/kn.js +0 -0
- {app-ng-runtime → package}/locales/moment/ko.js +0 -0
- {app-ng-runtime → package}/locales/moment/ku.js +0 -0
- {app-ng-runtime → package}/locales/moment/ky.js +0 -0
- {app-ng-runtime → package}/locales/moment/lb.js +0 -0
- {app-ng-runtime → package}/locales/moment/lo.js +0 -0
- {app-ng-runtime → package}/locales/moment/lt.js +0 -0
- {app-ng-runtime → package}/locales/moment/lv.js +0 -0
- {app-ng-runtime → package}/locales/moment/me.js +0 -0
- {app-ng-runtime → package}/locales/moment/mi.js +0 -0
- {app-ng-runtime → package}/locales/moment/mk.js +0 -0
- {app-ng-runtime → package}/locales/moment/ml.js +0 -0
- {app-ng-runtime → package}/locales/moment/mn.js +0 -0
- {app-ng-runtime → package}/locales/moment/mr.js +0 -0
- {app-ng-runtime → package}/locales/moment/ms-my.js +0 -0
- {app-ng-runtime → package}/locales/moment/ms.js +0 -0
- {app-ng-runtime → package}/locales/moment/mt.js +0 -0
- {app-ng-runtime → package}/locales/moment/my.js +0 -0
- {app-ng-runtime → package}/locales/moment/nb.js +0 -0
- {app-ng-runtime → package}/locales/moment/ne.js +0 -0
- {app-ng-runtime → package}/locales/moment/nl-be.js +0 -0
- {app-ng-runtime → package}/locales/moment/nl.js +0 -0
- {app-ng-runtime → package}/locales/moment/nn.js +0 -0
- {app-ng-runtime → package}/locales/moment/oc-lnc.js +0 -0
- {app-ng-runtime → package}/locales/moment/pa-in.js +0 -0
- {app-ng-runtime → package}/locales/moment/pl.js +0 -0
- {app-ng-runtime → package}/locales/moment/pt-br.js +0 -0
- {app-ng-runtime → package}/locales/moment/pt.js +0 -0
- {app-ng-runtime → package}/locales/moment/ro.js +0 -0
- {app-ng-runtime → package}/locales/moment/ru.js +0 -0
- {app-ng-runtime → package}/locales/moment/sd.js +0 -0
- {app-ng-runtime → package}/locales/moment/se.js +0 -0
- {app-ng-runtime → package}/locales/moment/si.js +0 -0
- {app-ng-runtime → package}/locales/moment/sk.js +0 -0
- {app-ng-runtime → package}/locales/moment/sl.js +0 -0
- {app-ng-runtime → package}/locales/moment/sq.js +0 -0
- {app-ng-runtime → package}/locales/moment/sr-cyrl.js +0 -0
- {app-ng-runtime → package}/locales/moment/sr.js +0 -0
- {app-ng-runtime → package}/locales/moment/ss.js +0 -0
- {app-ng-runtime → package}/locales/moment/sv.js +0 -0
- {app-ng-runtime → package}/locales/moment/sw.js +0 -0
- {app-ng-runtime → package}/locales/moment/ta.js +0 -0
- {app-ng-runtime → package}/locales/moment/te.js +0 -0
- {app-ng-runtime → package}/locales/moment/tet.js +0 -0
- {app-ng-runtime → package}/locales/moment/tg.js +0 -0
- {app-ng-runtime → package}/locales/moment/th.js +0 -0
- {app-ng-runtime → package}/locales/moment/tk.js +0 -0
- {app-ng-runtime → package}/locales/moment/tl-ph.js +0 -0
- {app-ng-runtime → package}/locales/moment/tlh.js +0 -0
- {app-ng-runtime → package}/locales/moment/tr.js +0 -0
- {app-ng-runtime → package}/locales/moment/tzl.js +0 -0
- {app-ng-runtime → package}/locales/moment/tzm-latn.js +0 -0
- {app-ng-runtime → package}/locales/moment/tzm.js +0 -0
- {app-ng-runtime → package}/locales/moment/ug-cn.js +0 -0
- {app-ng-runtime → package}/locales/moment/uk.js +0 -0
- {app-ng-runtime → package}/locales/moment/ur.js +0 -0
- {app-ng-runtime → package}/locales/moment/uz-latn.js +0 -0
- {app-ng-runtime → package}/locales/moment/uz.js +0 -0
- {app-ng-runtime → package}/locales/moment/vi.js +0 -0
- {app-ng-runtime → package}/locales/moment/x-pseudo.js +0 -0
- {app-ng-runtime → package}/locales/moment/yo.js +0 -0
- {app-ng-runtime → package}/locales/moment/zh-cn.js +0 -0
- {app-ng-runtime → package}/locales/moment/zh-hk.js +0 -0
- {app-ng-runtime → package}/locales/moment/zh-mo.js +0 -0
- {app-ng-runtime → package}/locales/moment/zh-tw.js +0 -0
- {app-ng-runtime → package}/locales/moment-timezone/moment-timezone-with-data.js +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/basic.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/basic.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/esm2022/search.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/esm2022/search.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/search.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/basic/search/search.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/media-list.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/media-list.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/media-list.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/data/media-list/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/barcode-scanner/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/camera.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/camera.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/camera.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/esm2022/camera.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/esm2022/camera.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/esm2022/camera.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/device/camera/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/file-upload.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/input/file-upload/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/esm2022/page.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/esm2022/page.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/page.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/page.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/default/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/left-panel.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/left-panel/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/mobile-navbar/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/core/core.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/core.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/native.xhr.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-file-download.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-file.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device-start-up-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/device.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/esm2022/services/network.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/core/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/core/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/native.xhr.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-file-cache.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-file-download.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-file-opener.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-file-upload.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-file.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device-start-up-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/device.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/ext-app-message.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/core/services/network.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/models/config.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/models/local-db-store.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/offline.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/change-log.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/local-db.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/push.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/utils/security.utils.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/esm2022/utils/utils.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/offline/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/offline/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/models/config.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/models/local-db-store.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/offline.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/change-log.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/local-db-data-pull.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/local-db-management.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/local-db.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/local-key-value.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/push.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/workers/error-blocker.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/workers/file-handler.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/workers/id-resolver.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/utils/file-upload.utils.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/utils/live-variable.utils.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/utils/query-executor.utils.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/utils/security.utils.d.ts +0 -0
- {app-ng-runtime → package}/mobile/offline/utils/utils.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/runtime/components/app-ext.component.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/services/cookie.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/runtime/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/mobile-runtime.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/services/cookie.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/services/http-interceptor.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime/services/webprocess.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/calendar-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/camera-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/contacts-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/datasync-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/file-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/services/scan-service.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/esm2022/variables.module.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/mobile/variables/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/mobile/variables/index.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/public_api.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/calendar-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/camera-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/contacts-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/datasync-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/device-service/device-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/device-service/location-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/file-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/services/scan-service.d.ts +0 -0
- {app-ng-runtime → package}/mobile/variables/variables.module.d.ts +0 -0
- {app-ng-runtime → package}/oAuth/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/oAuth/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/oAuth/esm2022/oAuth.module.mjs +0 -0
- {app-ng-runtime → package}/oAuth/esm2022/oAuth.service.mjs +0 -0
- {app-ng-runtime → package}/oAuth/esm2022/oAuth.utils.mjs +0 -0
- {app-ng-runtime → package}/oAuth/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/oAuth/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/oAuth/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/oAuth/index.d.ts +0 -0
- {app-ng-runtime → package}/oAuth/oAuth.module.d.ts +0 -0
- {app-ng-runtime → package}/oAuth/oAuth.service.d.ts +0 -0
- {app-ng-runtime → package}/oAuth/oAuth.utils.d.ts +0 -0
- {app-ng-runtime → package}/oAuth/public_api.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/app-spinner.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/base-layout.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/base-page.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/base-partial.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/base-prefab.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/base-spa-page.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/custom-toaster.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/empty-component/empty-page.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/components/prefab-preview.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/directives/accessroles.directive.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/directives/prefab.directive.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/app-spinner.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/base-layout.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/base-page.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/base-partial.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/base-prefab.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/base-spa-page.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/custom-toaster.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/components/prefab-preview.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/directives/accessroles.directive.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/directives/prefab.directive.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/guards/auth.guard.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/guards/page-not-found.guard.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/guards/role.guard.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/app-extension.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/app-js.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/app-variables.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/i18n.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/metadata.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/resolves/security-config.resolve.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/runtime-base.module.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/app-defaults.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/app.manager.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/app.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/http-interceptor.services.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/navigation.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/pipe-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/pipe.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/prefab-manager.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/spinner.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/services/toaster.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/types/types.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/util/fragment-monitor.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/util/utils.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +0 -0
- {app-ng-runtime → package}/runtime/base/guards/auth.guard.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/guards/can-deactivate-page.guard.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/guards/page-not-found.guard.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/guards/role.guard.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/index.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/overrides/wm_dom_renderer.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/overrides/wm_shared_styles_host.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/public_api.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/app-extension.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/app-js.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/app-variables.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/i18n.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/metadata.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/resolves/security-config.resolve.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/runtime-base.module.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/app-defaults.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/app.manager.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/app.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/dynamic-component-ref-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/http-interceptor.services.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/i18n.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/navigation.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/pipe-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/pipe.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/prefab-manager.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/spinner.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/services/toaster.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/types/types.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/util/fragment-monitor.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/util/utils.d.ts +0 -0
- {app-ng-runtime → package}/runtime/base/util/wm-route-reuse-strategy.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/app.module.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/app.routes.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/components/page-wrapper.component.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/app-extension.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/app-js-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/app-resource-manager.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/app-variables-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/component-ref-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/app/services/prefab-config-provider.service.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/app.module.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/app.routes.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/main.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/runtime/dynamic/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/runtime/dynamic/index.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/main.d.ts +0 -0
- {app-ng-runtime → package}/runtime/dynamic/public_api.d.ts +0 -0
- {app-ng-runtime → package}/scripts/@wavemaker/nvd3/build/nv.d3.min.js +0 -0
- {app-ng-runtime → package}/scripts/d3/d3.min.js +0 -0
- {app-ng-runtime → package}/scripts/datatable/datatable.js +0 -0
- {app-ng-runtime → package}/scripts/fullcalendar/main.min.js +0 -0
- {app-ng-runtime → package}/scripts/hammerjs/hammer.min.js +0 -0
- {app-ng-runtime → package}/scripts/iscroll/build/iscroll.js +0 -0
- {app-ng-runtime → package}/scripts/jquery-ui/ui/widgets/droppable.js +0 -0
- {app-ng-runtime → package}/scripts/jquery-ui/ui/widgets/resizable.js +0 -0
- {app-ng-runtime → package}/scripts/jquery-ui/ui/widgets/sortable.js +0 -0
- {app-ng-runtime → package}/scripts/jquery.ui.touch-punch/jquery.ui.touch-punch.min.js +0 -0
- {app-ng-runtime → package}/scripts/summernote/dist/summernote-lite.min.js +0 -0
- {app-ng-runtime → package}/scripts/swipey/swipey.jquery.plugin.js +0 -0
- {app-ng-runtime → package}/scripts/tree-keyboard-navigation/keyboard-navigation.js +0 -0
- {app-ng-runtime → package}/security/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/security/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/security/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/security/esm2022/security.module.mjs +0 -0
- {app-ng-runtime → package}/security/esm2022/security.service.mjs +0 -0
- {app-ng-runtime → package}/security/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/security/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/security/index.d.ts +0 -0
- {app-ng-runtime → package}/security/public_api.d.ts +0 -0
- {app-ng-runtime → package}/security/security.module.d.ts +0 -0
- {app-ng-runtime → package}/security/security.service.d.ts +0 -0
- {app-ng-runtime → package}/swipey/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/swipey/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/swipey/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/swipey/esm2022/swipe.animation.mjs +0 -0
- {app-ng-runtime → package}/swipey/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/swipey/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/swipey/index.d.ts +0 -0
- {app-ng-runtime → package}/swipey/public_api.d.ts +0 -0
- {app-ng-runtime → package}/swipey/swipe.animation.d.ts +0 -0
- {app-ng-runtime → package}/transpiler/build.d.ts +0 -0
- {app-ng-runtime → package}/transpiler/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/transpiler/esm2022/build.mjs +0 -0
- {app-ng-runtime → package}/transpiler/esm2022/imports.mjs +0 -0
- {app-ng-runtime → package}/transpiler/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/transpiler/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/transpiler/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/transpiler/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/transpiler/imports.d.ts +0 -0
- {app-ng-runtime → package}/transpiler/index.d.ts +0 -0
- {app-ng-runtime → package}/transpiler/public_api.d.ts +0 -0
- {app-ng-runtime → package}/variables/advanced-options.d.ts +0 -0
- {app-ng-runtime → package}/variables/bundles/index.umd.js +0 -0
- {app-ng-runtime → package}/variables/constants/variables.constants.d.ts +0 -0
- {app-ng-runtime → package}/variables/esm2022/advanced-options.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/constants/variables.constants.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/factory/variable-manager.factory.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/factory/variable.factory.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/index.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/action/base-action.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/action/login-action.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/action/logout-action.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/action/navigation-action.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/action/notification-action.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/variable/base-variable.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/variable/device-variable-service.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/action/login-action.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/action/logout-action.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/action/navigation-action.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/action/notification-action.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/variable/device-variable.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/model/variable/web-socket-variable.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/public_api.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/service/metadata-service/metadata.service.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/service/variables.service.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/util/action/navigation-action.utils.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/util/oAuth.utils.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/util/variable/pagination.utils.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/util/variable/service-variable.utils.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/util/variable/variables.utils.mjs +0 -0
- {app-ng-runtime → package}/variables/esm2022/variables.module.mjs +0 -0
- {app-ng-runtime → package}/variables/factory/variable-manager.factory.d.ts +0 -0
- {app-ng-runtime → package}/variables/factory/variable.factory.d.ts +0 -0
- {app-ng-runtime → package}/variables/fesm2022/index.mjs +0 -0
- {app-ng-runtime → package}/variables/fesm2022/index.mjs.map +0 -0
- {app-ng-runtime → package}/variables/index.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/action/base-action.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/action/login-action.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/action/logout-action.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/action/navigation-action.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/action/notification-action.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/variable/base-variable.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/variable/device-variable-manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/variable/device-variable-operation.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/variable/device-variable-service.d.ts +0 -0
- {app-ng-runtime → package}/variables/manager/variable/web-socket-variable.manager.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/action/login-action.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/action/logout-action.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/action/navigation-action.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/action/notification-action.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/variable/device-variable.d.ts +0 -0
- {app-ng-runtime → package}/variables/model/variable/web-socket-variable.d.ts +0 -0
- {app-ng-runtime → package}/variables/public_api.d.ts +0 -0
- {app-ng-runtime → package}/variables/service/metadata-service/metadata.service.d.ts +0 -0
- {app-ng-runtime → package}/variables/service/variables.service.d.ts +0 -0
- {app-ng-runtime → package}/variables/util/action/navigation-action.utils.d.ts +0 -0
- {app-ng-runtime → package}/variables/util/oAuth.utils.d.ts +0 -0
- {app-ng-runtime → package}/variables/util/variable/pagination.utils.d.ts +0 -0
- {app-ng-runtime → package}/variables/util/variable/service-variable.utils.d.ts +0 -0
- {app-ng-runtime → package}/variables/util/variable/variables.utils.d.ts +0 -0
- {app-ng-runtime → package}/variables/variables.module.d.ts +0 -0
|
@@ -0,0 +1,2204 @@
|
|
|
1
|
+
import { Attribute, Component, ContentChild, ContentChildren, ElementRef, HostListener, Inject, Injector, NgZone, Optional, QueryList, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { $appDigest, $invokeWatchers, $parseEvent, $unwatch, $watch, App, closePopover, DataSource, DynamicComponentRefProvider, extendProto, getClonedObject, getDatasourceFromExpr, getValidJSON, isDataSourceEqual, isDefined, isMobile, PaginationService, StatePersistence, triggerFn, Viewport } from '@wm/core';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { DEBOUNCE_TIMES, EDIT_MODE, extractDataSourceName, getConditionalClasses, getOrderByExpr, getRowOperationsColumn, NAVIGATION_TYPE, prepareFieldDefs, provideAs, provideAsWidgetRef, StylableComponent, styler, transformData, TrustAsPipe, unsupportedStatePersistenceTypes } from '@wm/components/base';
|
|
6
|
+
import { PaginationComponent } from '@wm/components/data/pagination';
|
|
7
|
+
import { ListComponent } from '@wm/components/data/list';
|
|
8
|
+
import { registerProps } from './table.props';
|
|
9
|
+
import { debounceTime } from 'rxjs/operators';
|
|
10
|
+
import { debounce, extend, find, findIndex, floor, forEach, get, includes, indexOf, isArray, isEmpty, isEqual, isNaN, isObject, isUndefined, keys, omitBy, pullAllWith, remove, set, some, split, startsWith, toNumber, values } from "lodash-es";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "@wm/core";
|
|
14
|
+
import * as i3 from "@wm/components/data/list";
|
|
15
|
+
import * as i4 from "@wm/components/base";
|
|
16
|
+
import * as i5 from "@wm/components/basic";
|
|
17
|
+
import * as i6 from "ngx-bootstrap/dropdown";
|
|
18
|
+
import * as i7 from "@angular/common";
|
|
19
|
+
import * as i8 from "@wm/components/input";
|
|
20
|
+
import * as i9 from "@wm/components/navigation/menu";
|
|
21
|
+
import * as i10 from "@wm/components/data/pagination";
|
|
22
|
+
const _c0 = ["rowExpansionTmpl"];
|
|
23
|
+
const _c1 = ["rowActionTmpl"];
|
|
24
|
+
const _c2 = ["filterTmpl"];
|
|
25
|
+
const _c3 = ["inlineWidgetTmpl"];
|
|
26
|
+
const _c4 = ["inlineWidgetTmplNew"];
|
|
27
|
+
const _c5 = ["customExprTmpl"];
|
|
28
|
+
const _c6 = ["rowExpansionActionTmpl"];
|
|
29
|
+
const _c7 = ["datagridElement"];
|
|
30
|
+
const _c8 = ["rowActionsView"];
|
|
31
|
+
const _c9 = ["multiColumnFilterView"];
|
|
32
|
+
const _c10 = ["inlineEditView"];
|
|
33
|
+
const _c11 = ["inlineEditNewView"];
|
|
34
|
+
const _c12 = ["customExprView"];
|
|
35
|
+
const _c13 = ["rowDetailView"];
|
|
36
|
+
const _c14 = ["rowExpansionActionView"];
|
|
37
|
+
const _c15 = ["dynamicTable"];
|
|
38
|
+
const _c16 = ["wmTable", ""];
|
|
39
|
+
const _c17 = a0 => ({ btn: a0 });
|
|
40
|
+
const _c18 = (a0, a1) => ({ "btn-sm": a0, "disabled-new": a1 });
|
|
41
|
+
function TableComponent_div_0_i_3_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
i0.ɵɵelement(0, "i");
|
|
43
|
+
} if (rf & 2) {
|
|
44
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
45
|
+
i0.ɵɵclassMapInterpolate1("app-icon panel-icon ", ctx_r0.iconclass, "");
|
|
46
|
+
} }
|
|
47
|
+
function TableComponent_div_0_div_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵelementContainer(0, 29);
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const btn_r2 = ctx.$implicit;
|
|
51
|
+
const index_r3 = ctx.index;
|
|
52
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
53
|
+
const buttonRef_r4 = i0.ɵɵreference(8);
|
|
54
|
+
const anchorRef_r5 = i0.ɵɵreference(10);
|
|
55
|
+
i0.ɵɵproperty("ngTemplateOutlet", btn_r2.widgetType === "button" ? buttonRef_r4 : anchorRef_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c17, btn_r2))("ngTemplateOutletInjector", ctx_r0.createCustomInjector("actions_header_" + index_r3, i0.ɵɵpureFunction1(5, _c17, btn_r2)));
|
|
56
|
+
} }
|
|
57
|
+
function TableComponent_div_0_div_7_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelement(0, "div", 30);
|
|
59
|
+
} if (rf & 2) {
|
|
60
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
61
|
+
i0.ɵɵattributeInterpolate1("name", "", ctx_r0.name, "-export");
|
|
62
|
+
} }
|
|
63
|
+
function TableComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
65
|
+
i0.ɵɵtemplate(1, TableComponent_div_0_div_7_ng_container_1_Template, 1, 7, "ng-container", 27)(2, TableComponent_div_0_div_7_div_2_Template, 1, 2, "div", 28);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
69
|
+
i0.ɵɵadvance();
|
|
70
|
+
i0.ɵɵproperty("ngForOf", ctx_r0._actions.header);
|
|
71
|
+
i0.ɵɵadvance();
|
|
72
|
+
i0.ɵɵproperty("ngIf", ctx_r0.exportOptions.length);
|
|
73
|
+
} }
|
|
74
|
+
function TableComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "h3", 20)(2, "div", 21);
|
|
76
|
+
i0.ɵɵtemplate(3, TableComponent_div_0_i_3_Template, 1, 3, "i", 22);
|
|
77
|
+
i0.ɵɵelementEnd();
|
|
78
|
+
i0.ɵɵelementStart(4, "div", 21);
|
|
79
|
+
i0.ɵɵelement(5, "div", 23)(6, "div", 24);
|
|
80
|
+
i0.ɵɵelementEnd();
|
|
81
|
+
i0.ɵɵtemplate(7, TableComponent_div_0_div_7_Template, 3, 2, "div", 25);
|
|
82
|
+
i0.ɵɵelementEnd()();
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
85
|
+
i0.ɵɵadvance(3);
|
|
86
|
+
i0.ɵɵproperty("ngIf", ctx_r0.iconclass);
|
|
87
|
+
i0.ɵɵadvance(2);
|
|
88
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.title, i0.ɵɵsanitizeHtml);
|
|
89
|
+
i0.ɵɵadvance();
|
|
90
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.subheading, i0.ɵɵsanitizeHtml);
|
|
91
|
+
i0.ɵɵadvance();
|
|
92
|
+
i0.ɵɵproperty("ngIf", ctx_r0.exportOptions.length || ctx_r0._actions.header.length);
|
|
93
|
+
} }
|
|
94
|
+
function TableComponent_div_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
+
i0.ɵɵelementContainer(0, 29);
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const btn_r6 = ctx.$implicit;
|
|
98
|
+
const index_r7 = ctx.index;
|
|
99
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
100
|
+
const buttonRef_r4 = i0.ɵɵreference(8);
|
|
101
|
+
const anchorRef_r5 = i0.ɵɵreference(10);
|
|
102
|
+
i0.ɵɵproperty("ngTemplateOutlet", btn_r6.widgetType === "button" ? buttonRef_r4 : anchorRef_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c17, btn_r6))("ngTemplateOutletInjector", ctx_r0.createCustomInjector("actions_footer_" + index_r7, i0.ɵɵpureFunction1(5, _c17, btn_r6)));
|
|
103
|
+
} }
|
|
104
|
+
function TableComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
106
|
+
i0.ɵɵtemplate(1, TableComponent_div_6_ng_container_1_Template, 1, 7, "ng-container", 27);
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
} if (rf & 2) {
|
|
109
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
110
|
+
i0.ɵɵadvance();
|
|
111
|
+
i0.ɵɵproperty("ngForOf", ctx_r0._actions.footer);
|
|
112
|
+
} }
|
|
113
|
+
function TableComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
115
|
+
i0.ɵɵelementStart(0, "button", 32);
|
|
116
|
+
i0.ɵɵlistener("click", function TableComponent_ng_template_7_Template_button_click_0_listener($event) { const btn_r9 = i0.ɵɵrestoreView(_r8).btn; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.invokeActionEvent($event, btn_r9.action)); });
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
} if (rf & 2) {
|
|
119
|
+
const btn_r9 = ctx.btn;
|
|
120
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
121
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c18, ctx_r0.spacing === "condensed", btn_r9.key === "addNewRow" && (ctx_r0.isGridEditMode || ctx_r0.isLoading)));
|
|
122
|
+
i0.ɵɵattribute("aria-label", btn_r9.displayName);
|
|
123
|
+
} }
|
|
124
|
+
function TableComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
126
|
+
i0.ɵɵelementStart(0, "a", 33);
|
|
127
|
+
i0.ɵɵlistener("click", function TableComponent_ng_template_9_Template_a_click_0_listener($event) { const btn_r11 = i0.ɵɵrestoreView(_r10).btn; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.invokeActionEvent($event, btn_r11.action)); });
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
} if (rf & 2) {
|
|
130
|
+
const btn_r11 = ctx.btn;
|
|
131
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
132
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(1, _c18, ctx_r0.spacing === "condensed", btn_r11.key === "addNewRow" && (ctx_r0.isGridEditMode || ctx_r0.isLoading)));
|
|
133
|
+
} }
|
|
134
|
+
const DEFAULT_CLS = 'app-grid app-panel panel';
|
|
135
|
+
const WIDGET_CONFIG = { widgetType: 'wm-table', hostClass: DEFAULT_CLS };
|
|
136
|
+
const exportIconMapping = {
|
|
137
|
+
EXCEL: 'fa fa-file-excel-o',
|
|
138
|
+
CSV: 'fa fa-file-text-o'
|
|
139
|
+
};
|
|
140
|
+
const ROW_OPS_FIELD = 'rowOperations';
|
|
141
|
+
const noop = () => { };
|
|
142
|
+
const isInputBodyWrapper = target => {
|
|
143
|
+
const classes = ['.dropdown-menu', '.uib-typeahead-match', '.modal-dialog', '.toast'];
|
|
144
|
+
let isInput = false;
|
|
145
|
+
classes.forEach(cls => {
|
|
146
|
+
if (target.closest(cls).length) {
|
|
147
|
+
isInput = true;
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
const attrs = ['bsdatepickerdaydecorator'];
|
|
152
|
+
if (!isInput) {
|
|
153
|
+
attrs.forEach(attr => {
|
|
154
|
+
if (target[0].hasAttribute(attr)) {
|
|
155
|
+
isInput = true;
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return isInput;
|
|
161
|
+
};
|
|
162
|
+
export class TableComponent extends StylableComponent {
|
|
163
|
+
static { this.initializeProps = registerProps(); }
|
|
164
|
+
set gridData(newValue) {
|
|
165
|
+
this.isDataLoading = false;
|
|
166
|
+
// Fix for [WMS-24012]: hide no datafound msg when variableInflight is true and dataset is empty
|
|
167
|
+
if (this.variableInflight && isEmpty(newValue)) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
this.variableInflight = false;
|
|
171
|
+
// Fix for [WMS-24108]: Change the status to ready or nodata found when variableInflight is false(after getting the data)
|
|
172
|
+
if (newValue && (newValue.length) === 0) {
|
|
173
|
+
this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.callDataGridMethod('setStatus', 'ready');
|
|
177
|
+
}
|
|
178
|
+
if (this.gridOptions.isNavTypeScrollOrOndemand()) {
|
|
179
|
+
// update the _gridData field with the next set of items and modify the current page
|
|
180
|
+
[this._gridData, this.currentPage] = this.paginationService.updateFieldsOnPagination(this, newValue);
|
|
181
|
+
// When edit action is performed on previous page, update the _gridData field with the modified row data
|
|
182
|
+
if (this.gridOptions.lastActionPerformed === this.gridOptions.ACTIONS.EDIT) {
|
|
183
|
+
const rowIndex = floor(this.actionRowIndex % this.pagesize);
|
|
184
|
+
this._gridData.splice(this.actionRowIndex, 1, newValue[rowIndex]);
|
|
185
|
+
}
|
|
186
|
+
this.setDataGridOption('isLastPage', !!(this.dataNavigator.isDisableNext));
|
|
187
|
+
// In case of on demand pagination, create the load more button only once and show the button until next page is not disabled
|
|
188
|
+
if (!this.$element.find('.on-demand-datagrid').length && !this.dataNavigator.isDisableNext && this.onDemandLoad) {
|
|
189
|
+
this.gridOptions.addLoadMoreBtn();
|
|
190
|
+
}
|
|
191
|
+
else if ((this._gridData && this._gridData.length) && (this.dataNavigator.isDisableNext || !this.isDataLoading)) {
|
|
192
|
+
// when the next page is disabled or when the data is not loading remove the loading/load more button accordingly
|
|
193
|
+
this.callDataGridMethod('hideLoadingIndicator', this.dataNavigator.isDisableNext, this.infScroll);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
this._gridData = newValue;
|
|
198
|
+
}
|
|
199
|
+
let startRowIndex = 0;
|
|
200
|
+
let gridOptions;
|
|
201
|
+
this._onChange(this._gridData);
|
|
202
|
+
this._onTouched();
|
|
203
|
+
if (isDefined(newValue)) {
|
|
204
|
+
this.gridOptions.bindScrollEvt();
|
|
205
|
+
/*Setting the serial no's only when show navigation is enabled and data navigator is compiled
|
|
206
|
+
and its current page is set properly*/
|
|
207
|
+
if (this.isNavigationEnabled() && this.dataNavigator.dn.currentPage) {
|
|
208
|
+
startRowIndex = ((this.dataNavigator.dn.currentPage - 1) * (this.dataNavigator.maxResults || 1)) + 1;
|
|
209
|
+
this.setDataGridOption('startRowIndex', startRowIndex);
|
|
210
|
+
}
|
|
211
|
+
/* If colDefs are available, but not already set on the datagrid, then set them.
|
|
212
|
+
* This will happen while switching from markup to design tab. */
|
|
213
|
+
gridOptions = this.callDataGridMethod('getOptions');
|
|
214
|
+
if (!gridOptions) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (!gridOptions.colDefs.length && this.fieldDefs.length) {
|
|
218
|
+
this.setDataGridOption('colDefs', getClonedObject(this.fieldDefs));
|
|
219
|
+
}
|
|
220
|
+
// If data and colDefs are present, call on before data render event
|
|
221
|
+
if (!this.isdynamictable && !isEmpty(newValue) && gridOptions.colDefs.length) {
|
|
222
|
+
this.invokeEventCallback('beforedatarender', { $data: this._gridData, $columns: this.columns, data: this._gridData, columns: this.columns });
|
|
223
|
+
}
|
|
224
|
+
this.setDataGridOption('data', getClonedObject(this._gridData));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
get gridData() {
|
|
228
|
+
return this._gridData || [];
|
|
229
|
+
}
|
|
230
|
+
get selecteditem() {
|
|
231
|
+
if (this.multiselect) {
|
|
232
|
+
return getClonedObject(this.items);
|
|
233
|
+
}
|
|
234
|
+
if (isEmpty(this.items)) {
|
|
235
|
+
return {};
|
|
236
|
+
}
|
|
237
|
+
return getClonedObject(this.items[0]);
|
|
238
|
+
}
|
|
239
|
+
set selecteditem(val) {
|
|
240
|
+
// Select the rows in the table based on the new selected items passed
|
|
241
|
+
this.items.length = 0;
|
|
242
|
+
this.callDataGridMethod('selectRows', val);
|
|
243
|
+
}
|
|
244
|
+
onKeyPress($event) {
|
|
245
|
+
if ($event.which === 13) {
|
|
246
|
+
this.invokeEventCallback('enterkeypress', { $event, $data: this.gridData });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
constructor(inj, fb, app, dynamicComponentProvider, statePersistence, paginationService, viewport, parentList, binddataset, binddatasource, readonlygrid, ngZone, trustAsPipe, explicitContext) {
|
|
250
|
+
super(inj, WIDGET_CONFIG, explicitContext);
|
|
251
|
+
this.inj = inj;
|
|
252
|
+
this.fb = fb;
|
|
253
|
+
this.app = app;
|
|
254
|
+
this.dynamicComponentProvider = dynamicComponentProvider;
|
|
255
|
+
this.statePersistence = statePersistence;
|
|
256
|
+
this.paginationService = paginationService;
|
|
257
|
+
this.viewport = viewport;
|
|
258
|
+
this.parentList = parentList;
|
|
259
|
+
this.binddataset = binddataset;
|
|
260
|
+
this.binddatasource = binddatasource;
|
|
261
|
+
this.readonlygrid = readonlygrid;
|
|
262
|
+
this.ngZone = ngZone;
|
|
263
|
+
this.trustAsPipe = trustAsPipe;
|
|
264
|
+
this.rowActionsCompiledTl = {};
|
|
265
|
+
this.rowFilterCompliedTl = {};
|
|
266
|
+
this.inlineCompliedTl = {};
|
|
267
|
+
this.inlineNewCompliedTl = {};
|
|
268
|
+
this.customExprCompiledTl = {};
|
|
269
|
+
this.customExprCompiledSummaryTl = {};
|
|
270
|
+
this.rowDefInstances = {};
|
|
271
|
+
this.rowDefMap = {};
|
|
272
|
+
this.rowExpansionActionTl = {};
|
|
273
|
+
this.columns = {};
|
|
274
|
+
this.formfields = {};
|
|
275
|
+
this.enablesort = true;
|
|
276
|
+
this.showviewlessbutton = false;
|
|
277
|
+
this.primaryKey = [];
|
|
278
|
+
this.selectedItems = [];
|
|
279
|
+
this.selectedItemChange = new Subject();
|
|
280
|
+
this.selectedItemChange$ = this.selectedItemChange.asObservable();
|
|
281
|
+
this.actions = [];
|
|
282
|
+
this._actions = {
|
|
283
|
+
'header': [],
|
|
284
|
+
'footer': []
|
|
285
|
+
};
|
|
286
|
+
this.exportOptions = [];
|
|
287
|
+
this.headerConfig = [];
|
|
288
|
+
this.items = [];
|
|
289
|
+
this.rowActions = [];
|
|
290
|
+
this.shownavigation = false;
|
|
291
|
+
this.showFirstRow = false;
|
|
292
|
+
this.documentClickBind = noop;
|
|
293
|
+
this.prevFilterExpression = [];
|
|
294
|
+
this.fieldDefs = [];
|
|
295
|
+
this.rowDef = {};
|
|
296
|
+
this.rowInstance = {};
|
|
297
|
+
this.fullFieldDefs = [];
|
|
298
|
+
this.variableInflight = true;
|
|
299
|
+
this.applyProps = new Map();
|
|
300
|
+
this.redraw = debounce(this._redraw, 150);
|
|
301
|
+
this.debouncedHandleLoading = debounce(this.handleLoading, 350);
|
|
302
|
+
// Filter and Sort Methods
|
|
303
|
+
this.rowFilter = {};
|
|
304
|
+
this._searchSortHandler = noop;
|
|
305
|
+
this.searchSortHandler = (...args) => { this._searchSortHandler.apply(this, args); };
|
|
306
|
+
this.onRowFilterChange = noop;
|
|
307
|
+
this.onFilterConditionSelect = noop;
|
|
308
|
+
this.showClearIcon = noop;
|
|
309
|
+
this.clearRowFilter = noop;
|
|
310
|
+
this.adjustContainer = noop;
|
|
311
|
+
this._pageLoad = true;
|
|
312
|
+
this.gridOptions = {
|
|
313
|
+
data: [],
|
|
314
|
+
colDefs: [],
|
|
315
|
+
startRowIndex: 1,
|
|
316
|
+
mode: '',
|
|
317
|
+
sortInfo: {
|
|
318
|
+
field: '',
|
|
319
|
+
direction: ''
|
|
320
|
+
},
|
|
321
|
+
filtermode: '',
|
|
322
|
+
filteronkeypress: false,
|
|
323
|
+
searchLabel: '',
|
|
324
|
+
rowActions: [],
|
|
325
|
+
headerConfig: [],
|
|
326
|
+
rowClass: '',
|
|
327
|
+
editmode: '',
|
|
328
|
+
formPosition: '',
|
|
329
|
+
isMobile: false,
|
|
330
|
+
rowExpansionEnabled: false,
|
|
331
|
+
rowDef: {
|
|
332
|
+
position: '0'
|
|
333
|
+
},
|
|
334
|
+
name: '',
|
|
335
|
+
messages: {
|
|
336
|
+
selectField: 'Select Field'
|
|
337
|
+
},
|
|
338
|
+
securityUtils: {
|
|
339
|
+
pipeTransform: {}
|
|
340
|
+
},
|
|
341
|
+
navigation: '',
|
|
342
|
+
isdynamictable: '',
|
|
343
|
+
deletedRowIndex: -1,
|
|
344
|
+
lastActionPerformed: 'scroll',
|
|
345
|
+
isSearchTrigerred: false,
|
|
346
|
+
isDatasetUpdated: false,
|
|
347
|
+
isDataUpdatedByUser: false,
|
|
348
|
+
showviewlessbutton: false,
|
|
349
|
+
ondemandmessage: '',
|
|
350
|
+
viewlessmessage: '',
|
|
351
|
+
loadingdatamsg: '',
|
|
352
|
+
isNextPageData: undefined,
|
|
353
|
+
ACTIONS: {
|
|
354
|
+
'DELETE': 'delete',
|
|
355
|
+
'EDIT': 'edit',
|
|
356
|
+
'SEARCH_OR_SORT': 'search_or_sort',
|
|
357
|
+
'DEFAULT': 'scroll',
|
|
358
|
+
'FILTER_CRITERIA': 'filter',
|
|
359
|
+
'DATASET_UPDATE': 'dataset_update'
|
|
360
|
+
},
|
|
361
|
+
actionRowIndex: undefined,
|
|
362
|
+
actionRowPage: undefined,
|
|
363
|
+
isLastPage: false,
|
|
364
|
+
// get the current page number
|
|
365
|
+
getCurrentPage: () => {
|
|
366
|
+
return get(this.dataNavigator, 'dn.currentPage') || 1;
|
|
367
|
+
},
|
|
368
|
+
// set the page number
|
|
369
|
+
setCurrentPage: (pageNum) => {
|
|
370
|
+
set(this.dataNavigator, 'dn.currentPage', pageNum || 1);
|
|
371
|
+
},
|
|
372
|
+
getDataSource: () => {
|
|
373
|
+
return this.datasource;
|
|
374
|
+
},
|
|
375
|
+
// get the page limit
|
|
376
|
+
getPageSize: () => {
|
|
377
|
+
return this.pagesize;
|
|
378
|
+
},
|
|
379
|
+
getPageCount: () => {
|
|
380
|
+
return this.dataNavigator.pageCount;
|
|
381
|
+
},
|
|
382
|
+
enableNavigation: () => {
|
|
383
|
+
this.dataNavigator.widget.isDisableNext = false;
|
|
384
|
+
this.dataNavigator.widget.isDisableLast = false;
|
|
385
|
+
this.gridOptions.mode = 'viewless';
|
|
386
|
+
},
|
|
387
|
+
// set the deleted row index
|
|
388
|
+
setDeletedRowIndex: (id) => {
|
|
389
|
+
this.setDataGridOption('deletedRowIndex', id);
|
|
390
|
+
},
|
|
391
|
+
// sets the last action performed like edit, delete etc.
|
|
392
|
+
setLastActionPerformed: (action) => {
|
|
393
|
+
this.setDataGridOption('lastActionPerformed', action || this.gridOptions.lastActionPerformed);
|
|
394
|
+
},
|
|
395
|
+
isNavTypeScrollOrOndemand: () => {
|
|
396
|
+
return this.gridOptions.navigation === 'Scroll' || this.gridOptions.navigation === 'On-Demand';
|
|
397
|
+
},
|
|
398
|
+
setIsSearchTrigerred: (value) => {
|
|
399
|
+
this.setDataGridOption('isSearchTrigerred', value);
|
|
400
|
+
},
|
|
401
|
+
setIsDatasetUpdated: (value) => {
|
|
402
|
+
this.setDataGridOption('isDatasetUpdated', value);
|
|
403
|
+
},
|
|
404
|
+
// Fix for [WMS-23263]: 'isNextPageData' flag is set to true -> if user fetching the next page data by clicking onLoad more or scroll
|
|
405
|
+
setIsNextPageData: (value) => {
|
|
406
|
+
this.setDataGridOption('isNextPageData', value);
|
|
407
|
+
},
|
|
408
|
+
// Fix for [WMS-23263]: 'isDataUpdatedByUser' flag is set to true -> if user changes the dataset from script
|
|
409
|
+
setIsDataUpdatedByUser: (value) => {
|
|
410
|
+
this.setDataGridOption('isDataUpdatedByUser', value);
|
|
411
|
+
},
|
|
412
|
+
onDataRender: () => {
|
|
413
|
+
this.ngZone.run(() => {
|
|
414
|
+
if (this.gridData.length) {
|
|
415
|
+
this.invokeEventCallback('datarender', { $data: this.gridData, data: this.gridData });
|
|
416
|
+
}
|
|
417
|
+
// select rows selected in previous pages. (Not finding intersection of data and selecteditems as it will be heavy)
|
|
418
|
+
if (!this.multiselect) {
|
|
419
|
+
this.items.length = 0;
|
|
420
|
+
}
|
|
421
|
+
this.callDataGridMethod('selectRows', this.items);
|
|
422
|
+
this.selectedItems = this.callDataGridMethod('getSelectedRows');
|
|
423
|
+
if (this.selectedItems.length) {
|
|
424
|
+
this.selectedItemChange.next(this.selectedItems);
|
|
425
|
+
}
|
|
426
|
+
// On render, apply the filters set for query service variable
|
|
427
|
+
if (this._isPageSearch && this.filterInfo) {
|
|
428
|
+
this.searchSortHandler(this.filterInfo, undefined, 'search');
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
},
|
|
432
|
+
onRowSelect: (row, e) => {
|
|
433
|
+
this.ngZone.run(() => {
|
|
434
|
+
this.selectedItems = this.callDataGridMethod('getSelectedRows');
|
|
435
|
+
if (this.selectedItems.length) {
|
|
436
|
+
this.selectedItemChange.next(this.selectedItems);
|
|
437
|
+
}
|
|
438
|
+
const rowData = this.addRowIndex(row);
|
|
439
|
+
if (this.selectedItems.length && rowData.$index && this.getConfiguredState() !== 'none' && this.dataNavigator && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
|
|
440
|
+
const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
|
|
441
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
442
|
+
if (get(widgetState, 'selectedItem') && this.multiselect) {
|
|
443
|
+
if (!some(widgetState.selectedItem, obj)) {
|
|
444
|
+
widgetState.selectedItem.push(obj);
|
|
445
|
+
}
|
|
446
|
+
this.statePersistence.setWidgetState(this, { 'selectedItem': widgetState.selectedItem });
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
this.statePersistence.setWidgetState(this, { 'selectedItem': [obj] });
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
console.warn('Retain State handling on Widget ' + this.name + ' is not supported for current pagination type.');
|
|
454
|
+
}
|
|
455
|
+
this.invokeEventCallback('rowselect', { $data: rowData, $event: e, row: rowData });
|
|
456
|
+
});
|
|
457
|
+
},
|
|
458
|
+
// assigns the items on capture phase of the click handler.
|
|
459
|
+
assignSelectedItems: (row, e, rowInfo) => {
|
|
460
|
+
this.ngZone.run(() => {
|
|
461
|
+
/*
|
|
462
|
+
* in case of single select, update the items with out changing the reference.
|
|
463
|
+
* for multi select, keep old selected items in tact
|
|
464
|
+
*/
|
|
465
|
+
if (this.multiselect) {
|
|
466
|
+
//Fix for [WMS-25110]: Add row to items list only if the row is selected
|
|
467
|
+
if (findIndex(this.items, row) === -1 && (rowInfo?._selected === undefined || rowInfo?._selected == true || (this.gridfirstrowselect && rowInfo?.rowId == 0 && !this.showFirstRow))) {
|
|
468
|
+
this.items.push(row);
|
|
469
|
+
if (rowInfo?.rowId == 0) {
|
|
470
|
+
this.showFirstRow = true;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
this.items.length = 0;
|
|
476
|
+
this.items.push(row);
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
},
|
|
480
|
+
onRowDblClick: (row, e) => {
|
|
481
|
+
const rowData = this.addRowIndex(row);
|
|
482
|
+
this.invokeEventCallback('rowdblclick', { $data: rowData, $event: e, row: rowData });
|
|
483
|
+
},
|
|
484
|
+
onRowDeselect: (row, e) => {
|
|
485
|
+
if (this.multiselect) {
|
|
486
|
+
this.ngZone.run(() => {
|
|
487
|
+
this.items = pullAllWith(this.items, [row], isEqual);
|
|
488
|
+
this.selectedItems = this.callDataGridMethod('getSelectedRows');
|
|
489
|
+
this.invokeEventCallback('rowdeselect', { $data: row, $event: e, row });
|
|
490
|
+
const rowData = this.addRowIndex(row);
|
|
491
|
+
if (this.getConfiguredState() !== 'none' && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
|
|
492
|
+
const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
|
|
493
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
494
|
+
if (get(widgetState, 'selectedItem')) {
|
|
495
|
+
remove(widgetState.selectedItem, function (selectedItem) {
|
|
496
|
+
return isEqual(selectedItem, obj);
|
|
497
|
+
});
|
|
498
|
+
this.statePersistence.removeWidgetState(this, 'selectedItem');
|
|
499
|
+
if (widgetState.selectedItem.length > 0) {
|
|
500
|
+
this.statePersistence.setWidgetState(this, { 'selectedItem': widgetState.selectedItem });
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
console.warn('Retain State handling on Widget ' + this.name + ' is not supported for current pagination type.');
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
callOnRowDeselectEvent: (row, e) => {
|
|
511
|
+
this.items = this.selectedItems = this.callDataGridMethod('getSelectedRows');
|
|
512
|
+
this.invokeEventCallback('rowdeselect', { $data: row, $event: e, row });
|
|
513
|
+
},
|
|
514
|
+
callOnRowClickEvent: (row, e) => {
|
|
515
|
+
// WMS-18774: If we invoke navigation action variable on rowclick callback, the navigation is triggering outside angular zone so adding ngZone.run
|
|
516
|
+
this.ngZone.run(() => {
|
|
517
|
+
// Call row click only if click is triggered by user
|
|
518
|
+
if (e && e.hasOwnProperty('originalEvent')) {
|
|
519
|
+
const rowData = this.addRowIndex(row);
|
|
520
|
+
this.invokeEventCallback('rowclick', { $data: rowData, $event: e, row: rowData });
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
},
|
|
524
|
+
closePopover: closePopover,
|
|
525
|
+
onColumnSelect: (col, e) => {
|
|
526
|
+
this.selectedColumns = this.callDataGridMethod('getSelectedColumns');
|
|
527
|
+
this.invokeEventCallback('columnselect', { $data: col, $event: e });
|
|
528
|
+
},
|
|
529
|
+
onColumnDeselect: (col, e) => {
|
|
530
|
+
this.selectedColumns = this.callDataGridMethod('getSelectedColumns');
|
|
531
|
+
this.invokeEventCallback('columndeselect', { $data: col, $event: e });
|
|
532
|
+
},
|
|
533
|
+
onHeaderClick: (col, e) => {
|
|
534
|
+
// if onSort function is registered invoke it when the column header is clicked
|
|
535
|
+
this.invokeEventCallback('headerclick', { $event: e, $data: col, column: col });
|
|
536
|
+
},
|
|
537
|
+
onRowDelete: (row, cancelRowDeleteCallback, e, callBack, options) => {
|
|
538
|
+
this.ngZone.run(() => {
|
|
539
|
+
this.deleteRecord(extend({}, options, {
|
|
540
|
+
row,
|
|
541
|
+
'cancelRowDeleteCallback': cancelRowDeleteCallback,
|
|
542
|
+
'evt': e,
|
|
543
|
+
'callBack': callBack
|
|
544
|
+
}));
|
|
545
|
+
});
|
|
546
|
+
},
|
|
547
|
+
onRowInsert: (row, e, callBack, options) => {
|
|
548
|
+
this.insertRecord(extend({}, options, { row, event: e, 'callBack': callBack }));
|
|
549
|
+
},
|
|
550
|
+
beforeRowUpdate: (row, eventName) => {
|
|
551
|
+
if (this._liveTableParent) {
|
|
552
|
+
this._liveTableParent.updateRow(row, eventName);
|
|
553
|
+
}
|
|
554
|
+
this.prevData = getClonedObject(row);
|
|
555
|
+
},
|
|
556
|
+
afterRowUpdate: (row, e, callBack, options) => {
|
|
557
|
+
this.updateRecord(extend({}, options, { row, 'prevData': this.prevData, 'event': e, 'callBack': callBack }));
|
|
558
|
+
},
|
|
559
|
+
onBeforeRowUpdate: (row, e, options) => {
|
|
560
|
+
return this.invokeEventCallback('beforerowupdate', { $event: e, $data: row, row, options: options });
|
|
561
|
+
},
|
|
562
|
+
onBeforeRowInsert: (row, e, options) => {
|
|
563
|
+
return this.invokeEventCallback('beforerowinsert', { $event: e, $data: row, row, options: options });
|
|
564
|
+
},
|
|
565
|
+
onBeforeRowDelete: (row, e, options) => {
|
|
566
|
+
const rowData = this.addRowIndex(row);
|
|
567
|
+
return this.invokeEventCallback('beforerowdelete', { $event: e, row: rowData, options: options });
|
|
568
|
+
},
|
|
569
|
+
onFormRender: ($row, e, operation, alwaysNewRow) => {
|
|
570
|
+
const widget = alwaysNewRow ? 'inlineInstanceNew' : 'inlineInstance';
|
|
571
|
+
setTimeout(() => {
|
|
572
|
+
this.formWidgets = {};
|
|
573
|
+
this.fieldDefs.forEach(col => {
|
|
574
|
+
if (col[widget]) {
|
|
575
|
+
this.formWidgets[col.field] = col[widget];
|
|
576
|
+
// Adding formwidgets to the context for inlineinstance widget when fieldDefs were ready
|
|
577
|
+
if (col[widget].context) {
|
|
578
|
+
col[widget].context.formWidgets = this.formWidgets;
|
|
579
|
+
}
|
|
580
|
+
this.setDisabledOnField(operation, col, widget);
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
this.invokeEventCallback('formrender', { $event: e, formWidgets: this.formWidgets, $operation: operation });
|
|
584
|
+
}, 250);
|
|
585
|
+
},
|
|
586
|
+
onBeforeFormRender: (row, e, operation) => {
|
|
587
|
+
return this.invokeEventCallback('beforeformrender', { $event: e, row, $operation: operation });
|
|
588
|
+
},
|
|
589
|
+
registerRowNgClassWatcher: (rowData, index) => {
|
|
590
|
+
if (!this.rowngclass) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
const row = this.getClonedRowObject(rowData);
|
|
594
|
+
const watchName = `${this.widgetId}_rowNgClass_${index}`;
|
|
595
|
+
$unwatch(watchName);
|
|
596
|
+
//[Todo-CSP]: generate watcher expr in page if rowngclass attr is present for table
|
|
597
|
+
this.registerDestroyListener($watch(this.rowngclass, this.viewParent, { row }, (nv, ov) => {
|
|
598
|
+
this.callDataGridMethod('applyRowNgClass', getConditionalClasses(nv, ov), index);
|
|
599
|
+
}, watchName));
|
|
600
|
+
},
|
|
601
|
+
registerColNgClassWatcher: (rowData, colDef, rowIndex, colIndex) => {
|
|
602
|
+
if (!colDef['col-ng-class']) {
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
const row = this.getClonedRowObject(rowData);
|
|
606
|
+
const watchName = `${this.widgetId}_colNgClass_${rowIndex}_${colIndex}`;
|
|
607
|
+
$unwatch(watchName);
|
|
608
|
+
//[Todo-CSP]: generate watcher expr in page if col-ng-class attr is present for table
|
|
609
|
+
this.registerDestroyListener($watch(colDef['col-ng-class'], this.viewParent, { row }, (nv, ov) => {
|
|
610
|
+
this.callDataGridMethod('applyColNgClass', getConditionalClasses(nv, ov), rowIndex, colIndex);
|
|
611
|
+
}, watchName));
|
|
612
|
+
},
|
|
613
|
+
clearCustomExpression: () => {
|
|
614
|
+
this.customExprViewRef.clear();
|
|
615
|
+
this.customExprCompiledTl = {};
|
|
616
|
+
this.customExprCompiledSummaryTl = {};
|
|
617
|
+
},
|
|
618
|
+
clearRowDetailExpression: () => {
|
|
619
|
+
this.rowDetailViewRef.clear();
|
|
620
|
+
this.rowDefMap = {};
|
|
621
|
+
this.rowDefInstances = {};
|
|
622
|
+
},
|
|
623
|
+
generateCustomExpressions: (rowData, index, summaryRow) => {
|
|
624
|
+
const row = this.getClonedRowObject(rowData);
|
|
625
|
+
const compileTemplate = (tmpl) => {
|
|
626
|
+
if (!tmpl) {
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
const colDef = {};
|
|
630
|
+
const context = {
|
|
631
|
+
row,
|
|
632
|
+
colDef
|
|
633
|
+
};
|
|
634
|
+
this.addEventsToContext(context);
|
|
635
|
+
const customExprView = this.customExprViewRef.createEmbeddedView(tmpl, context);
|
|
636
|
+
const rootNode = customExprView.rootNodes[0];
|
|
637
|
+
const fieldName = rootNode.getAttribute('data-col-identifier');
|
|
638
|
+
extend(colDef, this.columns[fieldName]);
|
|
639
|
+
if (!summaryRow) {
|
|
640
|
+
this.customExprCompiledTl[fieldName + index] = rootNode;
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
this.customExprCompiledSummaryTl[fieldName + index] = rootNode;
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
if (this.isdynamictable) {
|
|
647
|
+
this.fieldDefs.forEach(col => {
|
|
648
|
+
compileTemplate(col.customExprTmpl);
|
|
649
|
+
});
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
// For all the columns inside the table, generate the custom expression
|
|
653
|
+
this.customExprTmpl.forEach(compileTemplate.bind(this));
|
|
654
|
+
},
|
|
655
|
+
generateRowExpansionCell: (rowData, index) => {
|
|
656
|
+
const row = this.getClonedRowObject(rowData);
|
|
657
|
+
// For all the columns inside the table, generate the inline widget
|
|
658
|
+
this.rowExpansionActionTmpl.forEach((tmpl) => {
|
|
659
|
+
this.rowExpansionActionTl[index] = this.rowExpansionActionViewRef.createEmbeddedView(tmpl, { row }).rootNodes;
|
|
660
|
+
});
|
|
661
|
+
},
|
|
662
|
+
getRowExpansionAction: (index) => {
|
|
663
|
+
return this.rowExpansionActionTl[index];
|
|
664
|
+
},
|
|
665
|
+
generateRowDetailView: ($event, rowData, rowId, $target, $overlay, callback) => {
|
|
666
|
+
const row = this.getClonedRowObject(rowData);
|
|
667
|
+
const rowDef = getClonedObject(this.rowDef);
|
|
668
|
+
if (this.rowInstance.invokeEventCallback('beforerowexpand', { $event, $data: rowDef, row }) === false) {
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
if (!rowDef.content) {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
// Expand the row detail
|
|
675
|
+
callback();
|
|
676
|
+
// Row is already rendered. Return here
|
|
677
|
+
if (this.rowDefMap[rowId] && this.rowDefMap[rowId].content === rowDef.content) {
|
|
678
|
+
this.rowInstance.invokeEventCallback('rowexpand', { $event, row, $data: this.rowDefInstances[rowId] });
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
this.rowDefMap[rowId] = rowDef;
|
|
682
|
+
$target.empty();
|
|
683
|
+
$target.hide();
|
|
684
|
+
$overlay.show();
|
|
685
|
+
const context = {
|
|
686
|
+
row,
|
|
687
|
+
rowDef,
|
|
688
|
+
containerLoad: (widget) => {
|
|
689
|
+
setTimeout(() => {
|
|
690
|
+
$overlay.hide();
|
|
691
|
+
$target.show();
|
|
692
|
+
this.rowDefInstances[rowId] = widget;
|
|
693
|
+
this.rowInstance.invokeEventCallback('rowexpand', { $event, row, $data: widget });
|
|
694
|
+
}, 500);
|
|
695
|
+
}
|
|
696
|
+
};
|
|
697
|
+
const rootNode = this.rowDetailViewRef.createEmbeddedView(this.rowExpansionTmpl, context).rootNodes[0];
|
|
698
|
+
$target[0].appendChild(rootNode);
|
|
699
|
+
$appDigest();
|
|
700
|
+
},
|
|
701
|
+
onBeforeRowCollapse: ($event, row, rowId) => {
|
|
702
|
+
return this.rowInstance.invokeEventCallback('beforerowcollapse', { $event, row, $data: this.rowDefInstances[rowId] });
|
|
703
|
+
},
|
|
704
|
+
onRowCollapse: ($event, row) => {
|
|
705
|
+
this.rowInstance.invokeEventCallback('rowcollapse', { $event, row });
|
|
706
|
+
},
|
|
707
|
+
getCustomExpression: (fieldName, index, summaryRow) => {
|
|
708
|
+
let customExpression;
|
|
709
|
+
if (!summaryRow) {
|
|
710
|
+
customExpression = this.customExprCompiledTl[fieldName + index];
|
|
711
|
+
}
|
|
712
|
+
else {
|
|
713
|
+
customExpression = this.customExprCompiledSummaryTl[fieldName + index];
|
|
714
|
+
}
|
|
715
|
+
return customExpression || '';
|
|
716
|
+
},
|
|
717
|
+
clearRowActions: () => {
|
|
718
|
+
this.rowActionsViewRef.clear();
|
|
719
|
+
this.rowActionsCompiledTl = {};
|
|
720
|
+
this.rowExpansionActionViewRef.clear();
|
|
721
|
+
this.rowExpansionActionTl = {};
|
|
722
|
+
},
|
|
723
|
+
generateRowActions: (rowData, index) => {
|
|
724
|
+
const row = this.getClonedRowObject(rowData);
|
|
725
|
+
this.rowActionsCompiledTl[index] = [];
|
|
726
|
+
// For all the columns inside the table, generate the inline widget
|
|
727
|
+
this.rowActionTmpl.forEach((tmpl) => {
|
|
728
|
+
this.rowActionsCompiledTl[index].push(...this.rowActionsViewRef.createEmbeddedView(tmpl, { row }).rootNodes);
|
|
729
|
+
});
|
|
730
|
+
},
|
|
731
|
+
getRowAction: (index) => {
|
|
732
|
+
return this.rowActionsCompiledTl[index];
|
|
733
|
+
},
|
|
734
|
+
generateInlineEditRow: (rowData, alwaysNewRow) => {
|
|
735
|
+
const row = this.getClonedRowObject(rowData);
|
|
736
|
+
if (alwaysNewRow) {
|
|
737
|
+
// Clear the view container ref
|
|
738
|
+
this.inlineEditNewViewRef.clear();
|
|
739
|
+
this.inlineNewCompliedTl = {};
|
|
740
|
+
// For all the columns inside the table, generate the inline widget
|
|
741
|
+
this.inlineWidgetNewTmpl.forEach(tmpl => {
|
|
742
|
+
let fieldName;
|
|
743
|
+
const context = {
|
|
744
|
+
row,
|
|
745
|
+
getControl: () => {
|
|
746
|
+
return this.ngform.controls[fieldName + '_new'] || {};
|
|
747
|
+
},
|
|
748
|
+
getValidationMessage: () => {
|
|
749
|
+
return this.columns[fieldName] && this.columns[fieldName].validationmessage;
|
|
750
|
+
},
|
|
751
|
+
getPendingSpinnerStatusNew: () => {
|
|
752
|
+
return this.columns[fieldName] && this.columns[fieldName].showPendingSpinnerNew;
|
|
753
|
+
}
|
|
754
|
+
};
|
|
755
|
+
const rootNode = this.inlineEditNewViewRef.createEmbeddedView(tmpl, context).rootNodes[0];
|
|
756
|
+
fieldName = rootNode.getAttribute('data-col-identifier');
|
|
757
|
+
this.inlineNewCompliedTl[fieldName] = rootNode;
|
|
758
|
+
});
|
|
759
|
+
this.clearForm(true);
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
// Clear the view container ref
|
|
763
|
+
this.inlineEditViewRef.clear();
|
|
764
|
+
this.inlineCompliedTl = {};
|
|
765
|
+
this.clearForm();
|
|
766
|
+
// For all the columns inside the table, generate the inline widget
|
|
767
|
+
this.inlineWidgetTmpl.forEach(tmpl => {
|
|
768
|
+
let fieldName;
|
|
769
|
+
const context = {
|
|
770
|
+
row,
|
|
771
|
+
getControl: () => {
|
|
772
|
+
return this.ngform.controls[fieldName] || {};
|
|
773
|
+
},
|
|
774
|
+
getValidationMessage: () => {
|
|
775
|
+
return this.columns[fieldName] && this.columns[fieldName].validationmessage;
|
|
776
|
+
},
|
|
777
|
+
getPendingSpinnerStatus: () => {
|
|
778
|
+
return this.columns[fieldName] && this.columns[fieldName].showPendingSpinner;
|
|
779
|
+
}
|
|
780
|
+
};
|
|
781
|
+
const rootNode = this.inlineEditViewRef.createEmbeddedView(tmpl, context).rootNodes[0];
|
|
782
|
+
fieldName = rootNode.getAttribute('data-col-identifier');
|
|
783
|
+
this.inlineCompliedTl[fieldName] = rootNode;
|
|
784
|
+
});
|
|
785
|
+
},
|
|
786
|
+
getInlineEditWidget: (fieldName, value, alwaysNewRow) => {
|
|
787
|
+
if (alwaysNewRow) {
|
|
788
|
+
this.gridOptions.setFieldValue(fieldName + '_new', value);
|
|
789
|
+
return this.inlineNewCompliedTl[fieldName];
|
|
790
|
+
}
|
|
791
|
+
this.gridOptions.setFieldValue(fieldName, value);
|
|
792
|
+
return this.inlineCompliedTl[fieldName];
|
|
793
|
+
},
|
|
794
|
+
setFieldValue: (fieldName, value) => {
|
|
795
|
+
const control = this.ngform.controls && this.ngform.controls[fieldName];
|
|
796
|
+
if (control) {
|
|
797
|
+
control.setValue(value);
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
getFieldValue: fieldName => {
|
|
801
|
+
const control = this.ngform.controls && this.ngform.controls[fieldName];
|
|
802
|
+
return control && control.value;
|
|
803
|
+
},
|
|
804
|
+
// function to add load more button to table
|
|
805
|
+
addLoadMoreBtn: () => {
|
|
806
|
+
this.callDataGridMethod('addLoadMoreBtn', this.ondemandmessage, this.loadingdatamsg, ($event) => {
|
|
807
|
+
this.gridOptions.setIsNextPageData(true);
|
|
808
|
+
this.gridOptions.setIsDataUpdatedByUser(false);
|
|
809
|
+
if (this.gridOptions.mode === 'viewless') {
|
|
810
|
+
this.dataNavigator.navigatePage('first', $event, true);
|
|
811
|
+
this.gridOptions.mode = '';
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
this.dataNavigator.navigatePage('next', $event);
|
|
815
|
+
this.isDataLoading = true;
|
|
816
|
+
}
|
|
817
|
+
}, this.infScroll);
|
|
818
|
+
},
|
|
819
|
+
// function to bind scroll event
|
|
820
|
+
bindScrollEvt: () => {
|
|
821
|
+
if (this._gridData && this._gridData.length && this.infScroll) {
|
|
822
|
+
// smoothscroll events will be binded.
|
|
823
|
+
// Added timeout as the table html is rendered at runtime
|
|
824
|
+
setTimeout(() => {
|
|
825
|
+
this.paginationService.bindScrollEvt(this, 'tbody', DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);
|
|
826
|
+
}, 0);
|
|
827
|
+
}
|
|
828
|
+
},
|
|
829
|
+
generateFilterRow: () => {
|
|
830
|
+
// Clear the view container ref
|
|
831
|
+
this.filterViewRef.clear();
|
|
832
|
+
this.rowFilterCompliedTl = {};
|
|
833
|
+
// For all the columns inside the table, generate the compiled filter template
|
|
834
|
+
this.filterTmpl.forEach((tmpl) => {
|
|
835
|
+
const rootNode = this.filterViewRef.createEmbeddedView(tmpl, {
|
|
836
|
+
changeFn: this.onRowFilterChange.bind(this),
|
|
837
|
+
isDisabled: (fieldName) => {
|
|
838
|
+
return this.emptyMatchModes.indexOf(this.rowFilter[fieldName] && this.rowFilter[fieldName].matchMode) > -1;
|
|
839
|
+
}
|
|
840
|
+
}).rootNodes[0];
|
|
841
|
+
this.rowFilterCompliedTl[rootNode.getAttribute('data-col-identifier')] = rootNode;
|
|
842
|
+
});
|
|
843
|
+
},
|
|
844
|
+
getFilterWidget: (fieldName) => {
|
|
845
|
+
// Move the generated filter template to the filter row
|
|
846
|
+
return this.rowFilterCompliedTl[fieldName];
|
|
847
|
+
},
|
|
848
|
+
setGridEditMode: (val) => {
|
|
849
|
+
this.ngZone.run(() => {
|
|
850
|
+
this.isGridEditMode = val;
|
|
851
|
+
$appDigest();
|
|
852
|
+
});
|
|
853
|
+
},
|
|
854
|
+
setGridState: (val) => {
|
|
855
|
+
this.isLoading = val === 'loading';
|
|
856
|
+
},
|
|
857
|
+
/*
|
|
858
|
+
set actionRowIndex and actionRowPage values
|
|
859
|
+
actionRowIndex will have the row index in the dataset on which edit/delete operation is being performed
|
|
860
|
+
actionRowPage will have page number in which the action row index is present
|
|
861
|
+
*/
|
|
862
|
+
setActionRowIndex: (val) => {
|
|
863
|
+
if (this.gridOptions.isNavTypeScrollOrOndemand()) {
|
|
864
|
+
this.actionRowIndex = parseInt(val);
|
|
865
|
+
this.setDataGridOption('actionRowIndex', this.actionRowIndex);
|
|
866
|
+
if (!isNaN(this.actionRowIndex)) {
|
|
867
|
+
this.actionRowPage = Math.floor(this.actionRowIndex / this.pagesize) + 1;
|
|
868
|
+
this.setDataGridOption('actionRowPage', this.actionRowPage || this.gridOptions.actionRowPage);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
clearActionRowIndex: () => {
|
|
873
|
+
if (!this.isRowDeleted && (this.infScroll || this.onDemandLoad)) {
|
|
874
|
+
this.clearActionRowVars();
|
|
875
|
+
}
|
|
876
|
+
},
|
|
877
|
+
noChangesDetected: () => {
|
|
878
|
+
this.toggleMessage(true, 'info', 'No Changes Detected', '');
|
|
879
|
+
},
|
|
880
|
+
// Function to redraw the widgets on resize of columns
|
|
881
|
+
redrawWidgets: () => {
|
|
882
|
+
this.fieldDefs.forEach(col => {
|
|
883
|
+
triggerFn(col.inlineInstance && col.inlineInstance.redraw);
|
|
884
|
+
triggerFn(col.inlineInstanceNew && col.inlineInstanceNew.redraw);
|
|
885
|
+
triggerFn(col.filterInstance && col.filterInstance.redraw);
|
|
886
|
+
});
|
|
887
|
+
},
|
|
888
|
+
searchHandler: this.searchSortHandler.bind(this),
|
|
889
|
+
sortHandler: this.searchSortHandler.bind(this),
|
|
890
|
+
timeoutCall: (fn, delay) => {
|
|
891
|
+
setTimeout(fn, delay);
|
|
892
|
+
},
|
|
893
|
+
runInNgZone: fn => {
|
|
894
|
+
this.ngZone.run(fn);
|
|
895
|
+
},
|
|
896
|
+
safeApply: () => {
|
|
897
|
+
$appDigest();
|
|
898
|
+
},
|
|
899
|
+
setTouched: (name) => {
|
|
900
|
+
const ctrl = this.ngform.controls[name];
|
|
901
|
+
if (ctrl) {
|
|
902
|
+
ctrl.markAsTouched();
|
|
903
|
+
}
|
|
904
|
+
},
|
|
905
|
+
clearForm: this.clearForm.bind(this),
|
|
906
|
+
callLoadInlineWidgetData: () => {
|
|
907
|
+
this.fullFieldDefs.forEach(col => {
|
|
908
|
+
if (isUndefined(col.isDataSetBound)) {
|
|
909
|
+
triggerFn(col.loadInlineWidgetData && col.loadInlineWidgetData.bind(col));
|
|
910
|
+
}
|
|
911
|
+
});
|
|
912
|
+
},
|
|
913
|
+
// Function to apply validators to Inline form controls
|
|
914
|
+
applyValidations: (col, alwaysNewRow) => {
|
|
915
|
+
if (alwaysNewRow) {
|
|
916
|
+
triggerFn(col.applyNewRowValidations && col.applyNewRowValidations.bind(col));
|
|
917
|
+
}
|
|
918
|
+
else {
|
|
919
|
+
triggerFn(col.applyValidations && col.applyValidations.bind(col));
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
// Function to remove validators and set form state to untouched for inline form control
|
|
923
|
+
removeValidations: (alwaysNewRow) => {
|
|
924
|
+
this.fullFieldDefs.forEach(col => {
|
|
925
|
+
if (!col.readonly && col.binding !== 'rowOperations') {
|
|
926
|
+
if (alwaysNewRow) {
|
|
927
|
+
triggerFn(col.removeNewRowValidations && col.removeNewRowValidations.bind(col));
|
|
928
|
+
}
|
|
929
|
+
else {
|
|
930
|
+
triggerFn(col.removeValidations && col.removeValidations.bind(col));
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
};
|
|
936
|
+
this._selectedItemsExist = false;
|
|
937
|
+
this._onChange = () => { };
|
|
938
|
+
this._onTouched = () => { };
|
|
939
|
+
styler(this.nativeElement, this);
|
|
940
|
+
this.ngform = fb.group({});
|
|
941
|
+
this.addEventsToContext(this.context);
|
|
942
|
+
const listenersToRemove = [
|
|
943
|
+
// Updates pagination, filter, sort etc options for service and crud variables
|
|
944
|
+
this.app.subscribe('check-state-persistence-options', options => {
|
|
945
|
+
let dataSourceName = get(this.datasource, 'name');
|
|
946
|
+
// in Prefabs, this.datasource is not resolved at the time of variable invocation, so additional check is required.
|
|
947
|
+
if (!dataSourceName) {
|
|
948
|
+
dataSourceName = extractDataSourceName(this.binddatasource);
|
|
949
|
+
}
|
|
950
|
+
if (get(options, 'variable.name') !== dataSourceName) {
|
|
951
|
+
return;
|
|
952
|
+
}
|
|
953
|
+
if (this._pageLoad && this.getConfiguredState() !== 'none') {
|
|
954
|
+
this._pageLoad = false;
|
|
955
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
956
|
+
if (widgetState) {
|
|
957
|
+
options = this.handleStateParams(widgetState, options);
|
|
958
|
+
}
|
|
959
|
+
else {
|
|
960
|
+
this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
}),
|
|
964
|
+
// Show loading status based on the variable life cycle
|
|
965
|
+
this.app.subscribe('toggle-variable-state', options => {
|
|
966
|
+
if (this.datasource && this.datasource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(options.variable, this.datasource)) {
|
|
967
|
+
if (this._pageLoad && this.getConfiguredState() !== 'none') {
|
|
968
|
+
this._pageLoad = false;
|
|
969
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
970
|
+
if (widgetState) {
|
|
971
|
+
options = this.handleStateParams(widgetState, options);
|
|
972
|
+
}
|
|
973
|
+
else {
|
|
974
|
+
this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
isDefined(this.variableInflight) ? this.debouncedHandleLoading(options) : this.handleLoading(options);
|
|
978
|
+
}
|
|
979
|
+
}),
|
|
980
|
+
this.app.subscribe('setup-cud-listener', param => {
|
|
981
|
+
if (this.name !== param) {
|
|
982
|
+
return;
|
|
983
|
+
}
|
|
984
|
+
this._isDependent = true;
|
|
985
|
+
this.selectedItemChange$
|
|
986
|
+
.pipe(debounceTime(250))
|
|
987
|
+
.subscribe(this.triggerWMEvent.bind(this));
|
|
988
|
+
})
|
|
989
|
+
];
|
|
990
|
+
listenersToRemove.forEach(l => this.registerDestroyListener(l));
|
|
991
|
+
this.deleteoktext = this.appLocale.LABEL_OK;
|
|
992
|
+
this.deletecanceltext = this.appLocale.LABEL_CANCEL;
|
|
993
|
+
}
|
|
994
|
+
ngAfterContentInit() {
|
|
995
|
+
super.ngAfterContentInit();
|
|
996
|
+
this.headerConfig = this.headerConfig.filter(this.filterEmptyValues.bind(this));
|
|
997
|
+
remove(this.fieldDefs, f => f === undefined);
|
|
998
|
+
const runModeInitialProperties = {
|
|
999
|
+
showrowindex: 'showRowIndex',
|
|
1000
|
+
multiselect: 'multiselect',
|
|
1001
|
+
radioselect: 'showRadioColumn',
|
|
1002
|
+
filternullrecords: 'filterNullRecords',
|
|
1003
|
+
enablesort: 'enableSort',
|
|
1004
|
+
showheader: 'showHeader',
|
|
1005
|
+
enablecolumnselection: 'enableColumnSelection',
|
|
1006
|
+
shownewrow: 'showNewRow',
|
|
1007
|
+
gridfirstrowselect: 'selectFirstRow'
|
|
1008
|
+
};
|
|
1009
|
+
if (this._liveTableParent) {
|
|
1010
|
+
this.isPartOfLiveGrid = true;
|
|
1011
|
+
}
|
|
1012
|
+
if (this.readonlygrid || !this.editmode) {
|
|
1013
|
+
if (this.readonlygrid === 'true') {
|
|
1014
|
+
this.editmode = '';
|
|
1015
|
+
}
|
|
1016
|
+
else {
|
|
1017
|
+
if (this.isPartOfLiveGrid) {
|
|
1018
|
+
this.editmode = this.isPartOfLiveGrid.formlayout === 'inline' ? EDIT_MODE.FORM : EDIT_MODE.DIALOG;
|
|
1019
|
+
}
|
|
1020
|
+
else {
|
|
1021
|
+
this.editmode = this.readonlygrid ? EDIT_MODE.INLINE : '';
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
this.gridOptions.colDefs = this.fullFieldDefs;
|
|
1026
|
+
this.gridOptions.rowActions = this.rowActions;
|
|
1027
|
+
this.gridOptions.headerConfig = this.headerConfig;
|
|
1028
|
+
this.gridOptions.rowClass = this.rowclass;
|
|
1029
|
+
this.gridOptions.editmode = this.editmode;
|
|
1030
|
+
this.gridOptions.formPosition = this.formposition;
|
|
1031
|
+
this.gridOptions.filtermode = this.filtermode;
|
|
1032
|
+
this.gridOptions.filteronkeypress = this.filteronkeypress;
|
|
1033
|
+
this.gridOptions.searchLabel = this.searchlabel;
|
|
1034
|
+
this.gridOptions.isMobile = isMobile();
|
|
1035
|
+
this.gridOptions.name = this.name;
|
|
1036
|
+
this.gridOptions.securityUtils.pipeTransform = this.trustAsPipe;
|
|
1037
|
+
this.gridOptions.navigation = this.navigation;
|
|
1038
|
+
this.gridOptions.isdynamictable = this.isdynamictable;
|
|
1039
|
+
this.gridOptions.showviewlessbutton = this.showviewlessbutton;
|
|
1040
|
+
this.gridOptions.ondemandmessage = this.ondemandmessage;
|
|
1041
|
+
this.gridOptions.viewlessmessage = this.viewlessmessage;
|
|
1042
|
+
this.gridOptions.loadingdatamsg = this.loadingdatamsg;
|
|
1043
|
+
// When loadondemand property is enabled(deferload="true") and show is true, only the column titles of the datatable are rendered, the data(body of the datatable) is not at all rendered.
|
|
1044
|
+
// Because the griddata is setting before the datatable dom is rendered but we are sending empty data to the datatable.
|
|
1045
|
+
if (!isEmpty(this.gridData)) {
|
|
1046
|
+
this.gridOptions.data = getClonedObject(this.gridData);
|
|
1047
|
+
}
|
|
1048
|
+
this.gridOptions.messages = {
|
|
1049
|
+
'selectField': this.appLocale.MESSAGE_SELECT_FIELD
|
|
1050
|
+
};
|
|
1051
|
+
this.datagridElement = $(this._tableElement.nativeElement);
|
|
1052
|
+
this.gridElement = this.$element;
|
|
1053
|
+
this.$element.css({ 'position': 'relative' });
|
|
1054
|
+
forEach(runModeInitialProperties, (value, key) => {
|
|
1055
|
+
if (isDefined(this[key])) {
|
|
1056
|
+
this.gridOptions[value] = (this[key] === 'true' || this[key] === true);
|
|
1057
|
+
}
|
|
1058
|
+
});
|
|
1059
|
+
if (this.statehandler !== 'none') {
|
|
1060
|
+
this.gridOptions['selectFirstRow'] = false;
|
|
1061
|
+
}
|
|
1062
|
+
this.renderOperationColumns();
|
|
1063
|
+
this.gridOptions.colDefs = this.fieldDefs;
|
|
1064
|
+
this.datagridElement.datatable(this.gridOptions);
|
|
1065
|
+
this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
|
|
1066
|
+
// if(this.gridOptions.data.length || this.variableInflight) {
|
|
1067
|
+
// this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
|
|
1068
|
+
// } else {
|
|
1069
|
+
// this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
1070
|
+
// }
|
|
1071
|
+
this.applyProps.forEach(args => this.callDataGridMethod(...args));
|
|
1072
|
+
if (this.editmode === EDIT_MODE.QUICK_EDIT) {
|
|
1073
|
+
this.documentClickBind = this._documentClickBind.bind(this);
|
|
1074
|
+
document.addEventListener('click', this.documentClickBind);
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
getConfiguredState() {
|
|
1078
|
+
const mode = this.statePersistence.computeMode(this.statehandler);
|
|
1079
|
+
return mode && mode.toLowerCase();
|
|
1080
|
+
}
|
|
1081
|
+
handleStateParams(widgetState, options) {
|
|
1082
|
+
if (get(widgetState, 'selectedItem')) {
|
|
1083
|
+
this._selectedItemsExist = true;
|
|
1084
|
+
}
|
|
1085
|
+
options.options = options.options || {};
|
|
1086
|
+
if (get(widgetState, 'pagination')) {
|
|
1087
|
+
options.options.page = widgetState.pagination;
|
|
1088
|
+
if (get(widgetState, 'sort')) {
|
|
1089
|
+
this.sortStateHandler(widgetState);
|
|
1090
|
+
options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
|
|
1091
|
+
}
|
|
1092
|
+
if (get(widgetState, 'search')) {
|
|
1093
|
+
setTimeout(() => {
|
|
1094
|
+
this.searchStateHandler(widgetState);
|
|
1095
|
+
}, 500);
|
|
1096
|
+
options.options.filterFields = this.getFilterFields(widgetState.search);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
else {
|
|
1100
|
+
options.options.page = 1;
|
|
1101
|
+
if (get(widgetState, 'search')) {
|
|
1102
|
+
setTimeout(() => {
|
|
1103
|
+
this.searchStateHandler(widgetState);
|
|
1104
|
+
}, 500);
|
|
1105
|
+
options.options.filterFields = this.getFilterFields(widgetState.search);
|
|
1106
|
+
}
|
|
1107
|
+
if (get(widgetState, 'sort')) {
|
|
1108
|
+
this.sortStateHandler(widgetState);
|
|
1109
|
+
options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
return options;
|
|
1113
|
+
}
|
|
1114
|
+
triggerWMEvent(newVal) {
|
|
1115
|
+
if (this.editmode === 'dialog') {
|
|
1116
|
+
return;
|
|
1117
|
+
}
|
|
1118
|
+
$invokeWatchers(true);
|
|
1119
|
+
this.app.notify('wm-event', { eventName: 'selectedItemChange', widgetName: this.name, row: newVal, table: this });
|
|
1120
|
+
}
|
|
1121
|
+
sortStateHandler(widgetState) {
|
|
1122
|
+
const $gridElement = this.datagridElement;
|
|
1123
|
+
const $sortIcon = $gridElement.find('th[data-col-field="' + get(widgetState, 'sort.field') + '"] .sort-icon');
|
|
1124
|
+
if (get(widgetState, 'sort.direction') === 'asc' && $sortIcon.length) {
|
|
1125
|
+
$sortIcon.addClass('asc wi wi-long-arrow-up');
|
|
1126
|
+
}
|
|
1127
|
+
else if (get(widgetState, 'sort.direction') === 'desc' && $sortIcon.length) {
|
|
1128
|
+
$sortIcon.addClass('desc wi wi-long-arrow-down');
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
searchStateHandler(widgetState) {
|
|
1132
|
+
if (isArray(widgetState.search)) {
|
|
1133
|
+
forEach(widgetState.search, (filterObj) => {
|
|
1134
|
+
if (this.rowFilter[filterObj.field]) {
|
|
1135
|
+
this.rowFilter[filterObj.field].value = filterObj.value;
|
|
1136
|
+
this.rowFilter[filterObj.field].matchMode = filterObj.matchMode;
|
|
1137
|
+
this.rowFilter[filterObj.field].type = filterObj.type;
|
|
1138
|
+
if ($(this.rowFilterCompliedTl[filterObj.field]).length) {
|
|
1139
|
+
const val = filterObj.type === 'integer' ? parseInt(filterObj.value) : filterObj.value;
|
|
1140
|
+
$(this.rowFilterCompliedTl[filterObj.field]).find('input').val(filterObj.value);
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1145
|
+
else {
|
|
1146
|
+
const $gridElement = this.datagridElement;
|
|
1147
|
+
$gridElement.find('[data-element="dgSearchText"]').val(widgetState.search.value);
|
|
1148
|
+
$gridElement.find('[data-element="dgFilterValue"]').val(widgetState.search.field);
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
// removes empty values in headerConfig array.
|
|
1152
|
+
filterEmptyValues(item) {
|
|
1153
|
+
if (item.columns) {
|
|
1154
|
+
item.columns = item.columns.filter(this.filterEmptyValues.bind(this));
|
|
1155
|
+
}
|
|
1156
|
+
return item !== undefined;
|
|
1157
|
+
}
|
|
1158
|
+
// Compares the prevFilterCriteria Rules with the new rules
|
|
1159
|
+
compareFilterExpressions(prevFilters, newFilters) {
|
|
1160
|
+
return !!((prevFilters.length === newFilters.length) && (isEqual(prevFilters, newFilters)));
|
|
1161
|
+
}
|
|
1162
|
+
// Set the table lastActionPerformed to Filter Criteria and maintain the prevFilterExpression
|
|
1163
|
+
setLastActionToFilterCriteria() {
|
|
1164
|
+
this.prevFilterExpression = get(this.datasource, 'filterExpressions.rules') ? getClonedObject(this.datasource.filterExpressions.rules) : getClonedObject([].concat(this.datasource.dataBinding));
|
|
1165
|
+
this.gridOptions.setLastActionPerformed(this.gridOptions.ACTIONS.FILTER_CRITERIA);
|
|
1166
|
+
this.gridOptions.setIsSearchTrigerred(true);
|
|
1167
|
+
}
|
|
1168
|
+
// Set the table lastActionPerformed to Dataset update and set isDatasetUpdated to true
|
|
1169
|
+
// Fix for [WMS-22323]-this method is called when dataset is being updated
|
|
1170
|
+
setLastActionToDatasetUpdate() {
|
|
1171
|
+
this.gridOptions.setLastActionPerformed(this.gridOptions.ACTIONS.DATASET_UPDATE);
|
|
1172
|
+
// Fix for [WMS-23263]: reset currentPage to 1 as dataset is being changed
|
|
1173
|
+
this.gridOptions.setCurrentPage(1);
|
|
1174
|
+
this.gridOptions.setIsDatasetUpdated(true);
|
|
1175
|
+
}
|
|
1176
|
+
// Update the lastActionPerformed to Filter_Criteria, when there is change in the Variable filter criteria rules
|
|
1177
|
+
checkIfVarFiltersApplied() {
|
|
1178
|
+
if (!isEmpty(get(this.datasource, 'filterExpressions.rules')) || !isEmpty(get(this.datasource, 'dataBinding'))) {
|
|
1179
|
+
const currentFilterExpr = get(this.datasource, 'filterExpressions.rules') ? this.datasource.filterExpressions.rules : [].concat(this.datasource.dataBinding);
|
|
1180
|
+
const isEqual = this.compareFilterExpressions(this.prevFilterExpression, currentFilterExpr);
|
|
1181
|
+
if (!isEqual) {
|
|
1182
|
+
this.setLastActionToFilterCriteria();
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
watchVariableDataSet(newVal) {
|
|
1187
|
+
let result;
|
|
1188
|
+
// Check for Variable filters if applied
|
|
1189
|
+
if (this.gridOptions.isNavTypeScrollOrOndemand()) {
|
|
1190
|
+
this.checkIfVarFiltersApplied();
|
|
1191
|
+
}
|
|
1192
|
+
// State handling for static variables
|
|
1193
|
+
if (get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') {
|
|
1194
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
1195
|
+
this._pageLoad = false;
|
|
1196
|
+
if (get(widgetState, 'selectedItem')) {
|
|
1197
|
+
this._selectedItemsExist = true;
|
|
1198
|
+
}
|
|
1199
|
+
else {
|
|
1200
|
+
this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
|
|
1201
|
+
}
|
|
1202
|
+
if (get(widgetState, 'search')) {
|
|
1203
|
+
this.searchStateHandler(widgetState);
|
|
1204
|
+
this.searchSortHandler(widgetState.search, undefined, 'search', true);
|
|
1205
|
+
}
|
|
1206
|
+
if (get(widgetState, 'sort')) {
|
|
1207
|
+
this.searchSortHandler(widgetState.sort, undefined, 'sort', true);
|
|
1208
|
+
this.sortStateHandler(widgetState);
|
|
1209
|
+
}
|
|
1210
|
+
if (get(widgetState, 'pagination')) {
|
|
1211
|
+
this.dataNavigator.pageChanged({ page: widgetState.pagination }, true);
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
// After the setting the watch on navigator, dataset is triggered with undefined. In this case, return here.
|
|
1215
|
+
if (this.dataNavigatorWatched && isUndefined(newVal) && this.__fullData) {
|
|
1216
|
+
return;
|
|
1217
|
+
}
|
|
1218
|
+
// If variable is in loading state, show loading icon
|
|
1219
|
+
if (this.variableInflight && !this.infScroll) {
|
|
1220
|
+
this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
|
|
1221
|
+
}
|
|
1222
|
+
result = getValidJSON(newVal);
|
|
1223
|
+
// Converting newval to object if it is an Object that comes as a string "{"data" : 1}"
|
|
1224
|
+
if (result) {
|
|
1225
|
+
newVal = result;
|
|
1226
|
+
}
|
|
1227
|
+
const sortExp = this.getSortExpr();
|
|
1228
|
+
const sortExpArr = sortExp.split(' ');
|
|
1229
|
+
if (sortExp && sortExpArr.length) {
|
|
1230
|
+
this.sortInfo = {
|
|
1231
|
+
direction: sortExpArr[1],
|
|
1232
|
+
field: sortExpArr[0]
|
|
1233
|
+
};
|
|
1234
|
+
}
|
|
1235
|
+
/*Return if data is invalid.*/
|
|
1236
|
+
if (!this.isDataValid()) {
|
|
1237
|
+
return;
|
|
1238
|
+
}
|
|
1239
|
+
// If value is empty or in studio mode, dont enable the navigation
|
|
1240
|
+
if (newVal) {
|
|
1241
|
+
if (this.shownavigation && !this.dataNavigatorWatched) {
|
|
1242
|
+
this.enablePageNavigation();
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
else {
|
|
1247
|
+
this.resetPageNavigation();
|
|
1248
|
+
// If the dataset is undefined or empty or table is bound to static variable then set variableInflight to false inorder to update the status
|
|
1249
|
+
if (newVal === '' || newVal === undefined || get(this.datasource, 'category') === 'wm.Variable') {
|
|
1250
|
+
this.variableInflight = false;
|
|
1251
|
+
}
|
|
1252
|
+
/*for run mode, disabling the loader and showing no data found message if dataset is not valid*/
|
|
1253
|
+
if (!this.variableInflight) {
|
|
1254
|
+
this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
1255
|
+
}
|
|
1256
|
+
this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
|
|
1257
|
+
}
|
|
1258
|
+
if (!this.isNavigationEnabled() && newVal) {
|
|
1259
|
+
this.checkFiltersApplied(this.getSortExpr());
|
|
1260
|
+
}
|
|
1261
|
+
// @ts-ignore
|
|
1262
|
+
if (!isObject(newVal) || newVal === '' || (newVal && newVal.dataValue === '')) {
|
|
1263
|
+
if (!this.variableInflight) {
|
|
1264
|
+
// If variable has finished loading and resultSet is empty, ender empty data
|
|
1265
|
+
this.setGridData([]);
|
|
1266
|
+
}
|
|
1267
|
+
return;
|
|
1268
|
+
}
|
|
1269
|
+
if (newVal) {
|
|
1270
|
+
this.populateGridData(newVal);
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
ngOnDestroy() {
|
|
1274
|
+
document.removeEventListener('click', this.documentClickBind);
|
|
1275
|
+
if (this.navigatorResultWatch) {
|
|
1276
|
+
this.navigatorResultWatch.unsubscribe();
|
|
1277
|
+
}
|
|
1278
|
+
if (this.navigatorMaxResultWatch) {
|
|
1279
|
+
this.navigatorMaxResultWatch.unsubscribe();
|
|
1280
|
+
}
|
|
1281
|
+
super.ngOnDestroy();
|
|
1282
|
+
}
|
|
1283
|
+
addRowIndex(row) {
|
|
1284
|
+
const rowData = getClonedObject(row);
|
|
1285
|
+
const rowIndex = indexOf(this.gridOptions.data, row);
|
|
1286
|
+
if (rowIndex < 0) {
|
|
1287
|
+
return row;
|
|
1288
|
+
}
|
|
1289
|
+
rowData.$index = rowIndex + 1;
|
|
1290
|
+
rowData.$isFirst = rowData.$index === 1;
|
|
1291
|
+
rowData.$isLast = this.gridData.length === rowData.$index;
|
|
1292
|
+
return rowData;
|
|
1293
|
+
}
|
|
1294
|
+
addEventsToContext(context) {
|
|
1295
|
+
context.addNewRow = () => this.addNewRow();
|
|
1296
|
+
context.deleteRow = () => this.deleteRow();
|
|
1297
|
+
context.editRow = () => this.editRow();
|
|
1298
|
+
}
|
|
1299
|
+
execute(operation, options) {
|
|
1300
|
+
if ([DataSource.Operation.IS_API_AWARE, DataSource.Operation.IS_PAGEABLE, DataSource.Operation.SUPPORTS_SERVER_FILTER].includes(operation)) {
|
|
1301
|
+
return false;
|
|
1302
|
+
}
|
|
1303
|
+
return this.datasource ? this.datasource.execute(operation, options) : {};
|
|
1304
|
+
}
|
|
1305
|
+
isNavigationEnabled() {
|
|
1306
|
+
return this.shownavigation && this.dataNavigator && this.dataNavigatorWatched;
|
|
1307
|
+
}
|
|
1308
|
+
getClonedRowObject(rowData) {
|
|
1309
|
+
const row = getClonedObject(rowData);
|
|
1310
|
+
row.getProperty = field => {
|
|
1311
|
+
return get(row, field);
|
|
1312
|
+
};
|
|
1313
|
+
row.$isFirst = row.$index === 1;
|
|
1314
|
+
row.$isLast = this.gridData.length === row.$index;
|
|
1315
|
+
delete row.$$index;
|
|
1316
|
+
delete row.$$pk;
|
|
1317
|
+
return row;
|
|
1318
|
+
}
|
|
1319
|
+
handleLoading(data) {
|
|
1320
|
+
this.variableInflight = data.active;
|
|
1321
|
+
// based on the active state and response toggling the 'loading data...' and 'no data found' messages.
|
|
1322
|
+
if (data.active) {
|
|
1323
|
+
this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
|
|
1324
|
+
}
|
|
1325
|
+
else {
|
|
1326
|
+
// If grid is in edit mode or grid has data, dont show the no data message
|
|
1327
|
+
if (!this.isGridEditMode && isEmpty(this.dataset)) {
|
|
1328
|
+
this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
1329
|
+
}
|
|
1330
|
+
else {
|
|
1331
|
+
this.callDataGridMethod('setStatus', 'ready');
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
setDisabledOnField(operation, colDef, widgetType) {
|
|
1336
|
+
if (operation !== 'new' && colDef['primary-key'] && colDef.generator === 'assigned' && !colDef['related-entity-name'] && !colDef.period) {
|
|
1337
|
+
colDef[widgetType].disabled = true;
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
resetFormControl(ctrl) {
|
|
1341
|
+
ctrl.markAsUntouched();
|
|
1342
|
+
ctrl.markAsPristine();
|
|
1343
|
+
}
|
|
1344
|
+
clearForm(newRow) {
|
|
1345
|
+
const ctrls = this.ngform.controls;
|
|
1346
|
+
keys(this.ngform.controls).forEach(key => {
|
|
1347
|
+
// If new row, clear the controls in the new row. Else, clear the controls in edit row
|
|
1348
|
+
if (!key.endsWith('_filter') && ((key.endsWith('_new') && newRow) || (!key.endsWith('_new') && !newRow))) {
|
|
1349
|
+
ctrls[key].setValue('');
|
|
1350
|
+
this.resetFormControl(ctrls[key]);
|
|
1351
|
+
}
|
|
1352
|
+
});
|
|
1353
|
+
}
|
|
1354
|
+
showFieldBasedOnScreenType(field) {
|
|
1355
|
+
let showField;
|
|
1356
|
+
if (isMobile() && this.viewport.isMobileType) {
|
|
1357
|
+
showField = field.mobileDisplay;
|
|
1358
|
+
}
|
|
1359
|
+
else if (this.viewport.isTabletType) {
|
|
1360
|
+
showField = field.tabletDisplay;
|
|
1361
|
+
}
|
|
1362
|
+
else {
|
|
1363
|
+
showField = field.pcDisplay;
|
|
1364
|
+
}
|
|
1365
|
+
return showField;
|
|
1366
|
+
}
|
|
1367
|
+
/* Check whether it is non-empty row. */
|
|
1368
|
+
isEmptyRecord(record) {
|
|
1369
|
+
const properties = Object.keys(record);
|
|
1370
|
+
let data, isDisplayed;
|
|
1371
|
+
return properties.every((prop, index) => {
|
|
1372
|
+
data = record[prop];
|
|
1373
|
+
/* If fieldDefs are missing, show all columns in data. */
|
|
1374
|
+
isDisplayed = (this.fieldDefs.length && isDefined(this.fieldDefs[index]) && this.showFieldBasedOnScreenType(this.fieldDefs[index])) || true;
|
|
1375
|
+
/*Validating only the displayed fields*/
|
|
1376
|
+
if (isDisplayed) {
|
|
1377
|
+
return (data === null || data === undefined || data === '');
|
|
1378
|
+
}
|
|
1379
|
+
return true;
|
|
1380
|
+
});
|
|
1381
|
+
}
|
|
1382
|
+
/* Function to remove the empty data. */
|
|
1383
|
+
removeEmptyRecords(serviceData) {
|
|
1384
|
+
const allRecords = serviceData;
|
|
1385
|
+
let filteredData = [];
|
|
1386
|
+
if (allRecords && allRecords.length) {
|
|
1387
|
+
/*Comparing and pushing the non-empty data columns*/
|
|
1388
|
+
filteredData = allRecords.filter(record => {
|
|
1389
|
+
return record && !this.isEmptyRecord(record);
|
|
1390
|
+
});
|
|
1391
|
+
}
|
|
1392
|
+
return filteredData;
|
|
1393
|
+
}
|
|
1394
|
+
setGridData(serverData) {
|
|
1395
|
+
const data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
|
|
1396
|
+
// fix for [WMS-24012] set variableinflight flag to false for static variables
|
|
1397
|
+
// If the table is bound to some widget and not bound to any variable (ex: Table1.selectedItem) then set variableInflight to false
|
|
1398
|
+
if (get(this.datasource, 'category') === 'wm.Variable' || get(this.datasource, 'category') === undefined) {
|
|
1399
|
+
this.variableInflight = false;
|
|
1400
|
+
}
|
|
1401
|
+
if (!this.variableInflight) {
|
|
1402
|
+
if (data && (data.length) === 0) {
|
|
1403
|
+
this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
1404
|
+
}
|
|
1405
|
+
else {
|
|
1406
|
+
this.callDataGridMethod('setStatus', 'ready');
|
|
1407
|
+
}
|
|
1408
|
+
}
|
|
1409
|
+
this.gridData = data;
|
|
1410
|
+
}
|
|
1411
|
+
setDataGridOption(optionName, newVal, forceSet = false) {
|
|
1412
|
+
if (!this.datagridElement || !this.datagridElement.datatable || !this.datagridElement.datatable('instance')) {
|
|
1413
|
+
return;
|
|
1414
|
+
}
|
|
1415
|
+
const option = {};
|
|
1416
|
+
if (isDefined && (!isEqual(newVal, this.gridOptions[optionName]) || forceSet)) {
|
|
1417
|
+
option[optionName] = newVal;
|
|
1418
|
+
this.datagridElement.datatable('option', option);
|
|
1419
|
+
this.gridOptions[optionName] = newVal;
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
callDataGridMethod(...args) {
|
|
1423
|
+
if (!this.datagridElement || !this.datagridElement.datatable('instance')) {
|
|
1424
|
+
this.applyProps.set(args[1], args);
|
|
1425
|
+
return; // If datagrid is not initiliazed or destroyed, return here
|
|
1426
|
+
}
|
|
1427
|
+
return this.datagridElement.datatable.apply(this.datagridElement, args);
|
|
1428
|
+
}
|
|
1429
|
+
renderOperationColumns() {
|
|
1430
|
+
let rowActionCol, insertPosition;
|
|
1431
|
+
const rowOperationsColumn = getRowOperationsColumn(), config = {
|
|
1432
|
+
'name': rowOperationsColumn.field,
|
|
1433
|
+
'field': rowOperationsColumn.field,
|
|
1434
|
+
'isPredefined': true
|
|
1435
|
+
};
|
|
1436
|
+
// Return if no fieldDefs are present
|
|
1437
|
+
if (!this.fieldDefs.length) {
|
|
1438
|
+
return;
|
|
1439
|
+
}
|
|
1440
|
+
rowActionCol = find(this.fullFieldDefs, { 'field': ROW_OPS_FIELD, type: 'custom' }); // Check if column is fetched from markup
|
|
1441
|
+
remove(this.fieldDefs, { type: 'custom', field: ROW_OPS_FIELD }); // Removing operations column
|
|
1442
|
+
remove(this.headerConfig, { field: rowOperationsColumn.field });
|
|
1443
|
+
/*Add the column for row operations only if at-least one operation has been enabled.*/
|
|
1444
|
+
if (this.rowActions.length) {
|
|
1445
|
+
if (rowActionCol) { // If column is present in markup, push the column or push the default column
|
|
1446
|
+
insertPosition = rowActionCol.rowactionsposition ? toNumber(rowActionCol.rowactionsposition) : this.fieldDefs.length;
|
|
1447
|
+
this.fieldDefs.splice(insertPosition, 0, rowActionCol);
|
|
1448
|
+
if (insertPosition === 0) {
|
|
1449
|
+
this.headerConfig.unshift(config);
|
|
1450
|
+
}
|
|
1451
|
+
else {
|
|
1452
|
+
this.headerConfig.push(config);
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
else {
|
|
1456
|
+
this.fieldDefs.push(rowOperationsColumn);
|
|
1457
|
+
this.headerConfig.push(config);
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
this.setDataGridOption('headerConfig', this.headerConfig);
|
|
1461
|
+
}
|
|
1462
|
+
enablePageNavigation() {
|
|
1463
|
+
if (this.dataset && this.binddataset && this.dataNavigator) {
|
|
1464
|
+
/*Check for sanity*/
|
|
1465
|
+
this.dataNavigatorWatched = true;
|
|
1466
|
+
if (this.navigatorResultWatch) {
|
|
1467
|
+
this.navigatorResultWatch.unsubscribe();
|
|
1468
|
+
}
|
|
1469
|
+
/*Register a watch on the "result" property of the "dataNavigator" so that the paginated data is displayed in the live-list.*/
|
|
1470
|
+
this.navigatorResultWatch = this.dataNavigator.resultEmitter.subscribe((newVal) => {
|
|
1471
|
+
/* Check for sanity. */
|
|
1472
|
+
if (isDefined(newVal)) {
|
|
1473
|
+
// Watch will not be triggered if dataset and new value are equal. So trigger the property change handler manually
|
|
1474
|
+
// This happens in case, if dataset is directly updated.
|
|
1475
|
+
if (isEqual(this.dataset, newVal)) {
|
|
1476
|
+
this.watchVariableDataSet(newVal);
|
|
1477
|
+
}
|
|
1478
|
+
else {
|
|
1479
|
+
if (isArray(newVal)) {
|
|
1480
|
+
this.widget.dataset = [].concat(newVal);
|
|
1481
|
+
}
|
|
1482
|
+
else if (isObject(newVal)) {
|
|
1483
|
+
this.widget.dataset = extend({}, newVal);
|
|
1484
|
+
}
|
|
1485
|
+
else {
|
|
1486
|
+
this.widget.dataset = newVal;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
else {
|
|
1491
|
+
this.widget.dataset = undefined;
|
|
1492
|
+
}
|
|
1493
|
+
}, true);
|
|
1494
|
+
/*De-register the watch if it is exists */
|
|
1495
|
+
if (this.navigatorMaxResultWatch) {
|
|
1496
|
+
this.navigatorMaxResultWatch.unsubscribe();
|
|
1497
|
+
}
|
|
1498
|
+
/*Register a watch on the "maxResults" property of the "dataNavigator" so that the "pageSize" is displayed in the live-list.*/
|
|
1499
|
+
this.navigatorMaxResultWatch = this.dataNavigator.maxResultsEmitter.subscribe((newVal) => {
|
|
1500
|
+
this.pagesize = newVal;
|
|
1501
|
+
});
|
|
1502
|
+
// If dataset is a pageable object, data is present inside the content property
|
|
1503
|
+
this.__fullData = this.dataset;
|
|
1504
|
+
this.dataNavigator.widget.maxResults = this.pagesize || 5;
|
|
1505
|
+
this.dataNavigator.options = {
|
|
1506
|
+
maxResults: this.pagesize || 5
|
|
1507
|
+
};
|
|
1508
|
+
this.removePropertyBinding('dataset');
|
|
1509
|
+
this.dataNavigator.setBindDataSet(this.binddataset, this.viewParent, this.datasource, this.dataset, this.binddatasource, undefined, this.statehandler);
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
resetPageNavigation() {
|
|
1513
|
+
/*Check for sanity*/
|
|
1514
|
+
if (this.dataNavigator) {
|
|
1515
|
+
this.dataNavigator.resetPageNavigation();
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
isDataValid() {
|
|
1519
|
+
let error;
|
|
1520
|
+
const dataset = this.dataset || {};
|
|
1521
|
+
/*In case "data" contains "error" & "errorMessage", then display the error message in the grid.*/
|
|
1522
|
+
if (dataset.error) {
|
|
1523
|
+
error = dataset.error;
|
|
1524
|
+
}
|
|
1525
|
+
if (dataset.data && dataset.data.error) {
|
|
1526
|
+
if (dataset.data.errorMessage) {
|
|
1527
|
+
error = dataset.data.errorMessage;
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
if (error) {
|
|
1531
|
+
this.setGridData([]);
|
|
1532
|
+
this.callDataGridMethod('setStatus', 'error', error);
|
|
1533
|
+
return false;
|
|
1534
|
+
}
|
|
1535
|
+
return true;
|
|
1536
|
+
}
|
|
1537
|
+
// Function to populate the grid with data.
|
|
1538
|
+
populateGridData(serviceData) {
|
|
1539
|
+
let data;
|
|
1540
|
+
serviceData = transformData(serviceData, this.name);
|
|
1541
|
+
// Apply filter and sort, if data is refreshed through Refresh data method
|
|
1542
|
+
if (!this.isNavigationEnabled() && this._isClientSearch) {
|
|
1543
|
+
data = getClonedObject(serviceData);
|
|
1544
|
+
data = this.getSearchResult(data, this.filterInfo);
|
|
1545
|
+
data = this.getSortResult(data, this.sortInfo);
|
|
1546
|
+
this.serverData = data;
|
|
1547
|
+
}
|
|
1548
|
+
else {
|
|
1549
|
+
this.serverData = serviceData;
|
|
1550
|
+
}
|
|
1551
|
+
// If fielddefs are not present, generate fielddefs from data
|
|
1552
|
+
// Removing fielddefs check because When loadondemand property is enabled(deferload="true"), the dataset propertychangehanlder is triggered first before the dom is getting rendered.
|
|
1553
|
+
// So at that time fielddefs length is zero, due to this the columns are created dynamically.
|
|
1554
|
+
if (this.isdynamictable) {
|
|
1555
|
+
this.createGridColumns(this.serverData);
|
|
1556
|
+
}
|
|
1557
|
+
else {
|
|
1558
|
+
this.setGridData(this.serverData);
|
|
1559
|
+
}
|
|
1560
|
+
if (this.getConfiguredState() !== 'none' && this._selectedItemsExist && serviceData.length) {
|
|
1561
|
+
const widgetState = this.statePersistence.getWidgetState(this);
|
|
1562
|
+
let currentPageItems;
|
|
1563
|
+
if (get(widgetState, 'selectedItem')) {
|
|
1564
|
+
currentPageItems = widgetState.selectedItem.filter(val => {
|
|
1565
|
+
return val.page === this.dataNavigator.dn.currentPage;
|
|
1566
|
+
});
|
|
1567
|
+
this._selectedItemsExist = false;
|
|
1568
|
+
// if an item is already selected, don't trigger onSelect event for it again
|
|
1569
|
+
if (currentPageItems.length && this.selecteditem.length !== widgetState.selectedItem.length) {
|
|
1570
|
+
// don't reassign this.selecteditem if selected items already exist.
|
|
1571
|
+
if (isArray(this.selecteditem)) {
|
|
1572
|
+
currentPageItems.forEach((item) => {
|
|
1573
|
+
this.selectItem(item.index, undefined);
|
|
1574
|
+
});
|
|
1575
|
+
}
|
|
1576
|
+
else {
|
|
1577
|
+
this.selecteditem = currentPageItems.map(function (val) { return val.index; });
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
}
|
|
1583
|
+
// Function to generate and compile the form fields from the metadata
|
|
1584
|
+
async generateDynamicColumns(columns) {
|
|
1585
|
+
this.fieldDefs = []; // empty the form fields
|
|
1586
|
+
// empty the filter field template refs.
|
|
1587
|
+
this.filterTmpl._results = [];
|
|
1588
|
+
if (isEmpty(columns)) {
|
|
1589
|
+
return;
|
|
1590
|
+
}
|
|
1591
|
+
let tmpl = '';
|
|
1592
|
+
columns.forEach(col => {
|
|
1593
|
+
let attrsTmpl = '';
|
|
1594
|
+
let customTmpl = '';
|
|
1595
|
+
forEach(col, (val, key) => {
|
|
1596
|
+
if (!isUndefined(val) && val !== '') {
|
|
1597
|
+
// If custom expression is present, keep it inside table column. Else, keep as attribute
|
|
1598
|
+
if (key === 'customExpression') {
|
|
1599
|
+
customTmpl = val;
|
|
1600
|
+
}
|
|
1601
|
+
else {
|
|
1602
|
+
attrsTmpl += ` ${key}="${val}"`;
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
});
|
|
1606
|
+
tmpl += `<wm-table-column ${attrsTmpl} tableName="${this.name}${this.$attrs.get('table_reference')}">${customTmpl}</wm-table-column>`;
|
|
1607
|
+
});
|
|
1608
|
+
this.dynamicTableRef.clear();
|
|
1609
|
+
if (!this._dynamicContext) {
|
|
1610
|
+
this._dynamicContext = Object.create(this.viewParent);
|
|
1611
|
+
this._dynamicContext[this.getAttr('wmTable')] = this;
|
|
1612
|
+
}
|
|
1613
|
+
this.noOfColumns = columns.length;
|
|
1614
|
+
const componentFactoryRef = await this.dynamicComponentProvider.getComponentFactoryRef('app-table-dynamic-' + this.widgetId, tmpl, {
|
|
1615
|
+
noCache: true,
|
|
1616
|
+
transpile: true
|
|
1617
|
+
});
|
|
1618
|
+
const component = this.dynamicTableRef.createComponent(componentFactoryRef, 0, this.inj);
|
|
1619
|
+
extendProto(component.instance, this._dynamicContext);
|
|
1620
|
+
this.$element.find('.dynamic-table-container')[0].appendChild(component.location.nativeElement);
|
|
1621
|
+
}
|
|
1622
|
+
prepareColDefs(data) {
|
|
1623
|
+
let defaultFieldDefs;
|
|
1624
|
+
let properties;
|
|
1625
|
+
let columnIndex = 0;
|
|
1626
|
+
let headerIndex = 0;
|
|
1627
|
+
this.fieldDefs = [];
|
|
1628
|
+
this.headerConfig = [];
|
|
1629
|
+
this.columns = {};
|
|
1630
|
+
/* if properties map is existed then fetch the column configuration for all nested levels using util function */
|
|
1631
|
+
properties = data;
|
|
1632
|
+
/*call utility function to prepare fieldDefs for grid against given data (A MAX OF 10 COLUMNS ONLY)*/
|
|
1633
|
+
defaultFieldDefs = prepareFieldDefs(properties);
|
|
1634
|
+
/*append additional properties*/
|
|
1635
|
+
forEach(defaultFieldDefs, columnDef => {
|
|
1636
|
+
columnDef.binding = columnDef.field;
|
|
1637
|
+
columnDef.caption = columnDef.displayName;
|
|
1638
|
+
columnDef.pcDisplay = true;
|
|
1639
|
+
columnDef.mobileDisplay = true;
|
|
1640
|
+
columnDef.tabletDisplay = true;
|
|
1641
|
+
columnDef.searchable = true;
|
|
1642
|
+
columnDef.showinfilter = true;
|
|
1643
|
+
columnDef.type = 'string';
|
|
1644
|
+
// Fix for [WMS-19668] and [WMS-19669]- Adding index and headerIndex for Dynamic DB columns.
|
|
1645
|
+
// Note: we don't have column groups for Dynamic DB
|
|
1646
|
+
columnDef.index = columnIndex;
|
|
1647
|
+
columnDef.headerIndex = headerIndex;
|
|
1648
|
+
columnIndex++;
|
|
1649
|
+
headerIndex++;
|
|
1650
|
+
});
|
|
1651
|
+
defaultFieldDefs.forEach(col => {
|
|
1652
|
+
this.columns[col.field] = col;
|
|
1653
|
+
});
|
|
1654
|
+
this.invokeEventCallback('beforedatarender', { $data: data, $columns: this.columns, data: data, columns: this.columns });
|
|
1655
|
+
defaultFieldDefs = [];
|
|
1656
|
+
// Apply the changes made by the user
|
|
1657
|
+
forEach(this.columns, val => {
|
|
1658
|
+
defaultFieldDefs.push(val);
|
|
1659
|
+
});
|
|
1660
|
+
this.generateDynamicColumns(defaultFieldDefs);
|
|
1661
|
+
}
|
|
1662
|
+
createGridColumns(data) {
|
|
1663
|
+
/* this call back function receives the data from the variable */
|
|
1664
|
+
/* check whether data is valid or not */
|
|
1665
|
+
const dataValid = data && !data.error;
|
|
1666
|
+
/*if the data is type json object, make it an array of the object*/
|
|
1667
|
+
if (dataValid && !isArray(data)) {
|
|
1668
|
+
data = [data];
|
|
1669
|
+
}
|
|
1670
|
+
/* if the data is empty, show nodatamessage */
|
|
1671
|
+
if (isEmpty(data)) {
|
|
1672
|
+
this.setGridData(data);
|
|
1673
|
+
return;
|
|
1674
|
+
}
|
|
1675
|
+
if (!dataValid) {
|
|
1676
|
+
return;
|
|
1677
|
+
}
|
|
1678
|
+
/* if new columns to be rendered, prepare default fieldDefs for the data provided*/
|
|
1679
|
+
this.prepareColDefs(data);
|
|
1680
|
+
this.serverData = data;
|
|
1681
|
+
this.setGridData(this.serverData);
|
|
1682
|
+
}
|
|
1683
|
+
getSortExpr() {
|
|
1684
|
+
let sortExp;
|
|
1685
|
+
let pagingOptions;
|
|
1686
|
+
if (this.datasource && this.datasource.execute(DataSource.Operation.IS_PAGEABLE)) {
|
|
1687
|
+
pagingOptions = this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS);
|
|
1688
|
+
sortExp = isEmpty(pagingOptions) ? '' : getOrderByExpr(pagingOptions.sort);
|
|
1689
|
+
}
|
|
1690
|
+
return sortExp || '';
|
|
1691
|
+
}
|
|
1692
|
+
onPropertyChange(key, nv, ov) {
|
|
1693
|
+
let enableNewRow;
|
|
1694
|
+
switch (key) {
|
|
1695
|
+
case 'datasource':
|
|
1696
|
+
// Fix for [WMS-23653] when startUpdate is false (request on page load property is unchecked),
|
|
1697
|
+
// then set status msg as "No data found"
|
|
1698
|
+
if (nv.startUpdate === false) {
|
|
1699
|
+
this.variableInflight = false;
|
|
1700
|
+
this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
|
|
1701
|
+
}
|
|
1702
|
+
this.watchVariableDataSet(this.dataset);
|
|
1703
|
+
this.onDataSourceChange();
|
|
1704
|
+
break;
|
|
1705
|
+
case 'dataset':
|
|
1706
|
+
if (this.gridOptions.isNavTypeScrollOrOndemand() && this.gridOptions.getCurrentPage() === 1) {
|
|
1707
|
+
this.gridOptions.setIsNextPageData(false);
|
|
1708
|
+
}
|
|
1709
|
+
if (this.binddatasource && !this.datasource) {
|
|
1710
|
+
return;
|
|
1711
|
+
}
|
|
1712
|
+
// if table is inside list then table dataset will be set as "item.XXX" and there is no datasource.
|
|
1713
|
+
// So extracting datasource from the datset bound expression.
|
|
1714
|
+
if (this.parentList && !this.datasource && startsWith(this.binddataset, 'item')) {
|
|
1715
|
+
this.datasource = getDatasourceFromExpr(this.widget.$attrs.get('datasetboundexpr'), this);
|
|
1716
|
+
}
|
|
1717
|
+
if (this.gridOptions.isNavTypeScrollOrOndemand()) {
|
|
1718
|
+
if (this.gridOptions.isNextPageData) {
|
|
1719
|
+
// when fetching next page data
|
|
1720
|
+
this.gridOptions.setIsDataUpdatedByUser(false);
|
|
1721
|
+
}
|
|
1722
|
+
else {
|
|
1723
|
+
// when dataset is updated from script
|
|
1724
|
+
this.gridOptions.setIsDataUpdatedByUser(true);
|
|
1725
|
+
this.setLastActionToDatasetUpdate();
|
|
1726
|
+
this.gridOptions.setIsNextPageData(false);
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
// for Static Variables with Retain State enabled, prevent Table from rendering more than once
|
|
1730
|
+
// Fix for [WMS-25284]: Render table that is inside list widget and bound to static Variable
|
|
1731
|
+
if (!(get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') || (this.parentList && startsWith(this.binddataset, 'item'))) {
|
|
1732
|
+
this.watchVariableDataSet(nv);
|
|
1733
|
+
}
|
|
1734
|
+
break;
|
|
1735
|
+
case 'filtermode':
|
|
1736
|
+
this.setDataGridOption('filtermode', nv);
|
|
1737
|
+
break;
|
|
1738
|
+
case 'searchlabel':
|
|
1739
|
+
this.setDataGridOption('searchLabel', nv);
|
|
1740
|
+
break;
|
|
1741
|
+
case 'navigation':
|
|
1742
|
+
if (nv === 'Advanced') { // Support for older projects where navigation type was advanced instead of clasic
|
|
1743
|
+
this.navigation = 'Classic';
|
|
1744
|
+
return;
|
|
1745
|
+
}
|
|
1746
|
+
if (nv !== 'None') {
|
|
1747
|
+
this.shownavigation = true;
|
|
1748
|
+
}
|
|
1749
|
+
this.setDataGridOption('navigation', this.navigation);
|
|
1750
|
+
this.onDemandLoad = nv === NAVIGATION_TYPE.ONDEMAND ? true : false;
|
|
1751
|
+
this.infScroll = nv === NAVIGATION_TYPE.SCROLL ? true : false;
|
|
1752
|
+
this.navControls = nv;
|
|
1753
|
+
break;
|
|
1754
|
+
case 'gridfirstrowselect':
|
|
1755
|
+
this.setDataGridOption('selectFirstRow', nv);
|
|
1756
|
+
break;
|
|
1757
|
+
case 'gridclass':
|
|
1758
|
+
this.callDataGridMethod('option', 'cssClassNames.grid', nv);
|
|
1759
|
+
break;
|
|
1760
|
+
case 'nodatamessage':
|
|
1761
|
+
this.callDataGridMethod('option', 'dataStates.nodata', nv);
|
|
1762
|
+
break;
|
|
1763
|
+
case 'loadingdatamsg':
|
|
1764
|
+
this.callDataGridMethod('option', 'dataStates.loading', nv);
|
|
1765
|
+
break;
|
|
1766
|
+
case 'loadingicon':
|
|
1767
|
+
this.callDataGridMethod('option', 'loadingicon', nv);
|
|
1768
|
+
break;
|
|
1769
|
+
case 'spacing':
|
|
1770
|
+
this.callDataGridMethod('option', 'spacing', nv);
|
|
1771
|
+
if (nv === 'condensed') {
|
|
1772
|
+
this.navigationSize = 'small';
|
|
1773
|
+
}
|
|
1774
|
+
else {
|
|
1775
|
+
this.navigationSize = '';
|
|
1776
|
+
}
|
|
1777
|
+
break;
|
|
1778
|
+
case 'exportformat':
|
|
1779
|
+
this.exportOptions = [];
|
|
1780
|
+
if (nv) {
|
|
1781
|
+
// Populate options for export drop down menu
|
|
1782
|
+
forEach(split(nv, ','), type => {
|
|
1783
|
+
this.exportOptions.push({
|
|
1784
|
+
label: type,
|
|
1785
|
+
icon: exportIconMapping[type]
|
|
1786
|
+
});
|
|
1787
|
+
});
|
|
1788
|
+
}
|
|
1789
|
+
break;
|
|
1790
|
+
case 'shownewrow':
|
|
1791
|
+
// Enable new row if shownew is true or addNewRow buton is present
|
|
1792
|
+
enableNewRow = nv || some(this.actions, act => includes(act.action, 'addNewRow()'));
|
|
1793
|
+
this.callDataGridMethod('option', 'actionsEnabled.new', enableNewRow);
|
|
1794
|
+
break;
|
|
1795
|
+
case 'pagesize':
|
|
1796
|
+
this.dataNavigator.options = {
|
|
1797
|
+
maxResults: nv
|
|
1798
|
+
};
|
|
1799
|
+
this.dataNavigator.widget.maxResults = nv;
|
|
1800
|
+
this.dataNavigator.maxResults = nv;
|
|
1801
|
+
break;
|
|
1802
|
+
case 'ondemandmessage':
|
|
1803
|
+
if (nv) {
|
|
1804
|
+
this.$element.find('.on-demand-datagrid > a').text(nv);
|
|
1805
|
+
}
|
|
1806
|
+
this.gridOptions.ondemandmessage = nv;
|
|
1807
|
+
break;
|
|
1808
|
+
case 'viewlessmessage':
|
|
1809
|
+
this.gridOptions.viewlessmessage = nv;
|
|
1810
|
+
break;
|
|
1811
|
+
case 'show':
|
|
1812
|
+
if (nv) {
|
|
1813
|
+
this.invokeEventCallback('show');
|
|
1814
|
+
}
|
|
1815
|
+
else {
|
|
1816
|
+
this.invokeEventCallback('hide');
|
|
1817
|
+
}
|
|
1818
|
+
default:
|
|
1819
|
+
super.onPropertyChange(key, nv, ov);
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
onDataSourceChange() {
|
|
1823
|
+
this.fieldDefs.forEach(col => {
|
|
1824
|
+
triggerFn(col.onDataSourceChange && col.onDataSourceChange.bind(col));
|
|
1825
|
+
});
|
|
1826
|
+
}
|
|
1827
|
+
clearActionRowVars() {
|
|
1828
|
+
this.actionRowIndex = undefined;
|
|
1829
|
+
this.actionRowPage = undefined;
|
|
1830
|
+
this.setDataGridOption('actionRowIndex', undefined);
|
|
1831
|
+
this.setDataGridOption('actionRowPage', undefined);
|
|
1832
|
+
}
|
|
1833
|
+
onStyleChange(key, nv, ov) {
|
|
1834
|
+
switch (key) {
|
|
1835
|
+
case 'width':
|
|
1836
|
+
this.callDataGridMethod('setGridDimensions', 'width', nv);
|
|
1837
|
+
break;
|
|
1838
|
+
case 'height':
|
|
1839
|
+
this.callDataGridMethod('setGridDimensions', 'height', nv);
|
|
1840
|
+
break;
|
|
1841
|
+
}
|
|
1842
|
+
super.onStyleChange(key, nv, ov);
|
|
1843
|
+
}
|
|
1844
|
+
populateActions() {
|
|
1845
|
+
this._actions.header = [];
|
|
1846
|
+
this._actions.footer = [];
|
|
1847
|
+
forEach(this.actions, (action) => {
|
|
1848
|
+
if (includes(action.position, 'header')) {
|
|
1849
|
+
this._actions.header.push(action);
|
|
1850
|
+
}
|
|
1851
|
+
if (includes(action.position, 'footer')) {
|
|
1852
|
+
this._actions.footer.push(action);
|
|
1853
|
+
}
|
|
1854
|
+
});
|
|
1855
|
+
}
|
|
1856
|
+
// this method will render the filter row.
|
|
1857
|
+
renderDynamicFilterColumn(filteTemRef) {
|
|
1858
|
+
// For dynamic table manually pushing the filtertemplateRef as templateRef will not be available prior.
|
|
1859
|
+
if (this.isdynamictable) {
|
|
1860
|
+
this.filterTmpl._results.push(filteTemRef);
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
registerColumns(tableColumn, colIndex) {
|
|
1864
|
+
if (isMobile() && this.viewport.isMobileType) {
|
|
1865
|
+
if (!tableColumn.mobileDisplay) {
|
|
1866
|
+
return;
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
else if (this.viewport.isTabletType) {
|
|
1870
|
+
if (!tableColumn.tabletDisplay) {
|
|
1871
|
+
return;
|
|
1872
|
+
}
|
|
1873
|
+
}
|
|
1874
|
+
else {
|
|
1875
|
+
if (!tableColumn.pcDisplay) {
|
|
1876
|
+
return;
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
if (tableColumn['primary-key']) {
|
|
1880
|
+
this.primaryKey.push(tableColumn.field);
|
|
1881
|
+
}
|
|
1882
|
+
this.fieldDefs[colIndex] = tableColumn;
|
|
1883
|
+
const colCount = this.fieldDefs.length;
|
|
1884
|
+
this.fullFieldDefs.push(tableColumn);
|
|
1885
|
+
this.rowFilter[tableColumn.field] = {
|
|
1886
|
+
value: undefined
|
|
1887
|
+
};
|
|
1888
|
+
this.fieldDefs.forEach(col => {
|
|
1889
|
+
this.columns[col.field] = col;
|
|
1890
|
+
});
|
|
1891
|
+
// If dynamic datatable and last column, pass the columns to jquery datatable
|
|
1892
|
+
if (this.isdynamictable && colCount === this.noOfColumns) {
|
|
1893
|
+
this.renderOperationColumns();
|
|
1894
|
+
this.setDataGridOption('colDefs', this.fieldDefs);
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
registerFormField(name, formField) {
|
|
1898
|
+
this.formfields[name] = formField;
|
|
1899
|
+
}
|
|
1900
|
+
registerActions(tableAction) {
|
|
1901
|
+
this.actions.push(tableAction);
|
|
1902
|
+
this.populateActions();
|
|
1903
|
+
}
|
|
1904
|
+
registerRow(tableRow, rowInstance) {
|
|
1905
|
+
this.rowDef = tableRow;
|
|
1906
|
+
this.rowInstance = rowInstance;
|
|
1907
|
+
this.callDataGridMethod('option', 'cssClassNames.rowExpandIcon', this.rowDef.expandicon);
|
|
1908
|
+
this.callDataGridMethod('option', 'cssClassNames.rowCollapseIcon', this.rowDef.collapseicon);
|
|
1909
|
+
this.gridOptions.rowExpansionEnabled = true;
|
|
1910
|
+
this.gridOptions.rowDef = this.rowDef;
|
|
1911
|
+
}
|
|
1912
|
+
registerRowActions(tableRowAction) {
|
|
1913
|
+
this.rowActions.push(tableRowAction);
|
|
1914
|
+
}
|
|
1915
|
+
selectItem(item, data) {
|
|
1916
|
+
/* server is not updating immediately, so set the server data to success callback data */
|
|
1917
|
+
if (data) {
|
|
1918
|
+
this.serverData = data;
|
|
1919
|
+
}
|
|
1920
|
+
if (isObject(item)) {
|
|
1921
|
+
item = omitBy(item, (value) => {
|
|
1922
|
+
return isArray(value) && isEmpty(value);
|
|
1923
|
+
});
|
|
1924
|
+
}
|
|
1925
|
+
this.callDataGridMethod('selectRow', item, true);
|
|
1926
|
+
}
|
|
1927
|
+
/* deselect the given item*/
|
|
1928
|
+
deselectItem(item) {
|
|
1929
|
+
this.callDataGridMethod('deselectRow', item);
|
|
1930
|
+
}
|
|
1931
|
+
onDataNavigatorDataSetChange(nv) {
|
|
1932
|
+
let data;
|
|
1933
|
+
this.__fullData = nv;
|
|
1934
|
+
this.checkFiltersApplied(this.getSortExpr());
|
|
1935
|
+
if (this._isClientSearch) {
|
|
1936
|
+
data = getClonedObject(this.__fullData);
|
|
1937
|
+
if (isObject(data) && !isArray(data)) {
|
|
1938
|
+
data = [data];
|
|
1939
|
+
}
|
|
1940
|
+
data = this.getSearchResult(data, this.filterInfo);
|
|
1941
|
+
data = this.getSortResult(data, this.sortInfo);
|
|
1942
|
+
return data;
|
|
1943
|
+
}
|
|
1944
|
+
return nv;
|
|
1945
|
+
}
|
|
1946
|
+
toggleMessage(show, type, msg, header) {
|
|
1947
|
+
if (show && msg) {
|
|
1948
|
+
this.app.notifyApp(msg, type, header);
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
export($item) {
|
|
1952
|
+
let filterFields;
|
|
1953
|
+
const sortOptions = isEmpty(this.sortInfo) ? '' : this.sortInfo.field + ' ' + this.sortInfo.direction;
|
|
1954
|
+
const columns = {};
|
|
1955
|
+
let isValid;
|
|
1956
|
+
let requestData;
|
|
1957
|
+
this.fieldDefs.forEach(fieldDef => {
|
|
1958
|
+
// Do not add the row operation actions column to the exported file.
|
|
1959
|
+
if (fieldDef.field === ROW_OPS_FIELD || !fieldDef.show) {
|
|
1960
|
+
return;
|
|
1961
|
+
}
|
|
1962
|
+
const option = {
|
|
1963
|
+
'header': fieldDef.displayName
|
|
1964
|
+
};
|
|
1965
|
+
// If column has exportexpression, then send form the expression as required by backend.
|
|
1966
|
+
// otherwise send the field name.
|
|
1967
|
+
if (fieldDef.exportexpression) {
|
|
1968
|
+
option.expression = fieldDef.exportexpression;
|
|
1969
|
+
}
|
|
1970
|
+
else {
|
|
1971
|
+
option.field = fieldDef.field;
|
|
1972
|
+
}
|
|
1973
|
+
columns[fieldDef.field] = option;
|
|
1974
|
+
});
|
|
1975
|
+
filterFields = this.getFilterFields(this.filterInfo);
|
|
1976
|
+
requestData = {
|
|
1977
|
+
matchMode: 'anywhereignorecase',
|
|
1978
|
+
filterFields: filterFields,
|
|
1979
|
+
orderBy: sortOptions,
|
|
1980
|
+
exportType: $item.label,
|
|
1981
|
+
logicalOp: 'AND',
|
|
1982
|
+
exportSize: this.exportdatasize,
|
|
1983
|
+
columns: columns
|
|
1984
|
+
};
|
|
1985
|
+
isValid = this.invokeEventCallback('beforeexport', { $data: requestData });
|
|
1986
|
+
if (isValid === false) {
|
|
1987
|
+
return;
|
|
1988
|
+
}
|
|
1989
|
+
requestData.fields = values(requestData.columns);
|
|
1990
|
+
this.datasource.execute(DataSource.Operation.DOWNLOAD, { data: requestData });
|
|
1991
|
+
}
|
|
1992
|
+
expandRow(rowId) {
|
|
1993
|
+
this.callDataGridMethod('expandRow', rowId);
|
|
1994
|
+
}
|
|
1995
|
+
collapseRow(rowId) {
|
|
1996
|
+
this.callDataGridMethod('collapseRow', rowId);
|
|
1997
|
+
}
|
|
1998
|
+
_documentClickBind(event) {
|
|
1999
|
+
const $target = event.target;
|
|
2000
|
+
// If click triggered from same grid or a dialog, do not save the row
|
|
2001
|
+
if (this.$element[0].contains($target) || event.target.doctype || isInputBodyWrapper($($target))) {
|
|
2002
|
+
return;
|
|
2003
|
+
}
|
|
2004
|
+
this.callDataGridMethod('saveRow');
|
|
2005
|
+
}
|
|
2006
|
+
_redraw(forceRender) {
|
|
2007
|
+
if (forceRender) {
|
|
2008
|
+
this.datagridElement.datatable(this.gridOptions);
|
|
2009
|
+
}
|
|
2010
|
+
else {
|
|
2011
|
+
setTimeout(() => {
|
|
2012
|
+
this.callDataGridMethod('setColGroupWidths');
|
|
2013
|
+
this.callDataGridMethod('addOrRemoveScroll');
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
2016
|
+
}
|
|
2017
|
+
invokeActionEvent($event, expression) {
|
|
2018
|
+
const fn = $parseEvent(expression);
|
|
2019
|
+
fn(this.viewParent, Object.assign(this.context, { $event }));
|
|
2020
|
+
}
|
|
2021
|
+
// change and blur events are added from the template
|
|
2022
|
+
handleEvent(node, eventName, callback, locals) {
|
|
2023
|
+
if (eventName !== 'select') {
|
|
2024
|
+
super.handleEvent(this.nativeElement, eventName, callback, locals);
|
|
2025
|
+
}
|
|
2026
|
+
}
|
|
2027
|
+
triggerUploadEvent($event, eventName, fieldName, row) {
|
|
2028
|
+
const params = { $event, row };
|
|
2029
|
+
if (!this.columns[fieldName]) {
|
|
2030
|
+
return;
|
|
2031
|
+
}
|
|
2032
|
+
if (eventName === 'change') {
|
|
2033
|
+
params.newVal = $event.target.files;
|
|
2034
|
+
params.oldVal = this.columns[fieldName]._oldUploadVal;
|
|
2035
|
+
this.columns[fieldName]._oldUploadVal = params.newVal;
|
|
2036
|
+
}
|
|
2037
|
+
this.columns[fieldName].invokeEventCallback(eventName, params);
|
|
2038
|
+
}
|
|
2039
|
+
registerFormWidget() { }
|
|
2040
|
+
// Form control accessor methods. This will be used for table inside form
|
|
2041
|
+
writeValue() { }
|
|
2042
|
+
registerOnChange(fn) {
|
|
2043
|
+
this._onChange = fn;
|
|
2044
|
+
}
|
|
2045
|
+
registerOnTouched(fn) {
|
|
2046
|
+
this._onTouched = fn;
|
|
2047
|
+
}
|
|
2048
|
+
ngOnDetach() {
|
|
2049
|
+
super.ngOnDetach();
|
|
2050
|
+
if (get(this.datasource, 'category') === 'wm.Variable' && this.getConfiguredState() !== 'none') {
|
|
2051
|
+
this._pageLoad = false;
|
|
2052
|
+
}
|
|
2053
|
+
else {
|
|
2054
|
+
this._pageLoad = true;
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
static { this.ɵfac = function TableComponent_Factory(t) { return new (t || TableComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.App), i0.ɵɵdirectiveInject(i2.DynamicComponentRefProvider), i0.ɵɵdirectiveInject(i2.StatePersistence), i0.ɵɵdirectiveInject(i2.PaginationService), i0.ɵɵdirectiveInject(i2.Viewport), i0.ɵɵdirectiveInject(i3.ListComponent, 8), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵinjectAttribute('datasource.bind'), i0.ɵɵinjectAttribute('readonlygrid'), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.TrustAsPipe), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
2058
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TableComponent, selectors: [["", "wmTable", ""]], contentQueries: function TableComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
2059
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
2060
|
+
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
2061
|
+
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
|
2062
|
+
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
|
2063
|
+
i0.ɵɵcontentQuery(dirIndex, _c4, 5);
|
|
2064
|
+
i0.ɵɵcontentQuery(dirIndex, _c5, 5);
|
|
2065
|
+
i0.ɵɵcontentQuery(dirIndex, _c6, 5);
|
|
2066
|
+
} if (rf & 2) {
|
|
2067
|
+
let _t;
|
|
2068
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionTmpl = _t.first);
|
|
2069
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowActionTmpl = _t);
|
|
2070
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterTmpl = _t);
|
|
2071
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineWidgetTmpl = _t);
|
|
2072
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineWidgetNewTmpl = _t);
|
|
2073
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customExprTmpl = _t);
|
|
2074
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionActionTmpl = _t);
|
|
2075
|
+
} }, viewQuery: function TableComponent_Query(rf, ctx) { if (rf & 1) {
|
|
2076
|
+
i0.ɵɵviewQuery(PaginationComponent, 7);
|
|
2077
|
+
i0.ɵɵviewQuery(_c7, 7);
|
|
2078
|
+
i0.ɵɵviewQuery(_c8, 7, ViewContainerRef);
|
|
2079
|
+
i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);
|
|
2080
|
+
i0.ɵɵviewQuery(_c10, 7, ViewContainerRef);
|
|
2081
|
+
i0.ɵɵviewQuery(_c11, 7, ViewContainerRef);
|
|
2082
|
+
i0.ɵɵviewQuery(_c12, 7, ViewContainerRef);
|
|
2083
|
+
i0.ɵɵviewQuery(_c13, 7, ViewContainerRef);
|
|
2084
|
+
i0.ɵɵviewQuery(_c14, 7, ViewContainerRef);
|
|
2085
|
+
i0.ɵɵviewQuery(_c15, 7, ViewContainerRef);
|
|
2086
|
+
} if (rf & 2) {
|
|
2087
|
+
let _t;
|
|
2088
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataNavigator = _t.first);
|
|
2089
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tableElement = _t.first);
|
|
2090
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowActionsViewRef = _t.first);
|
|
2091
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterViewRef = _t.first);
|
|
2092
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineEditViewRef = _t.first);
|
|
2093
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineEditNewViewRef = _t.first);
|
|
2094
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customExprViewRef = _t.first);
|
|
2095
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowDetailViewRef = _t.first);
|
|
2096
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionActionViewRef = _t.first);
|
|
2097
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicTableRef = _t.first);
|
|
2098
|
+
} }, hostBindings: function TableComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
2099
|
+
i0.ɵɵlistener("keypress", function TableComponent_keypress_HostBindingHandler($event) { return ctx.onKeyPress($event); });
|
|
2100
|
+
} }, features: [i0.ɵɵProvidersFeature([
|
|
2101
|
+
provideAs(TableComponent, NG_VALUE_ACCESSOR, true),
|
|
2102
|
+
provideAsWidgetRef(TableComponent)
|
|
2103
|
+
]), i0.ɵɵInheritDefinitionFeature], attrs: _c16, decls: 29, vars: 4, consts: [["datagridElement", ""], ["buttonRef", ""], ["anchorRef", ""], ["multiColumnFilterView", ""], ["inlineEditView", ""], ["inlineEditNewView", ""], ["rowActionsView", ""], ["rowExpansionActionView", ""], ["customExprView", ""], ["dynamicTable", ""], ["rowDetailView", ""], ["class", "panel-heading", 4, "ngIf"], [1, "app-datagrid"], [1, "panel-footer", "clearfix", 3, "hidden"], [1, "app-datagrid-paginator", 3, "hidden"], ["wmPagination", "", "show.bind", "shownavigation", "navigationalign.bind", "navigationalign", "navigationsize.bind", "navigationSize", "navigation.bind", "navControls", "showrecordcount.bind", "showrecordcount", "maxsize.bind", "maxsize", "boundarylinks.bind", "boundarylinks", "forceellipses.bind", "forceellipses", "directionlinks.bind", "directionlinks"], ["class", "app-datagrid-actions", 4, "ngIf"], ["hidden", ""], [1, "dynamic-table-container"], [1, "panel-heading"], [1, "panel-title"], [1, "pull-left"], [3, "class", 4, "ngIf"], [1, "heading", 3, "innerHTML"], [1, "description", 3, "innerHTML"], ["class", "panel-actions app-datagrid-actions", 4, "ngIf"], [1, "panel-actions", "app-datagrid-actions"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", "ngTemplateOutletInjector", 4, "ngFor", "ngForOf"], ["wmMenu", "", "dropdown", "", "caption.bind", "appLocale.LABEL_EXPORT", "autoclose", "always", "dataset.bind", "exportOptions", "select.event", "export($item)", "menuposition", "down,left", 4, "ngIf"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", "ngTemplateOutletInjector"], ["wmMenu", "", "dropdown", "", "caption.bind", "appLocale.LABEL_EXPORT", "autoclose", "always", "dataset.bind", "exportOptions", "select.event", "export($item)", "menuposition", "down,left"], [1, "app-datagrid-actions"], ["wmButton", "", "caption.bind", "btn.displayName", "show.bind", "btn.show", "class.bind", "btn.class", "iconclass.bind", "btn.iconclass", "type", "button", "shortcutkey.bind", "btn.shortcutkey", "tabindex.bind", "btn.tabindex", "hint.bind", "btn.title", "disabled.bind", "btn.disabled", "conditionalclass.bind", "btn.conditionalclass", "conditionalstyle.bind", "btn.conditionalstyle", 3, "click", "ngClass"], ["wmAnchor", "", "caption.bind", "btn.displayName", "show.bind", "btn.show", "class.bind", "btn.class", "iconclass.bind", "btn.iconclass", "shortcutkey.bind", "btn.shortcutkey", "tabindex.bind", "btn.tabindex", "hint.bind", "btn.title", "hyperlink.bind", "btn.hyperlink", "target.bind", "btn.target", "conditionalclass.bind", "btn.conditionalclass", "conditionalstyle.bind", "btn.conditionalstyle", 3, "click", "ngClass"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2104
|
+
i0.ɵɵtemplate(0, TableComponent_div_0_Template, 8, 4, "div", 11);
|
|
2105
|
+
i0.ɵɵelement(1, "div", 12, 0);
|
|
2106
|
+
i0.ɵɵelementStart(3, "div", 13)(4, "div", 14);
|
|
2107
|
+
i0.ɵɵelement(5, "nav", 15);
|
|
2108
|
+
i0.ɵɵelementEnd();
|
|
2109
|
+
i0.ɵɵtemplate(6, TableComponent_div_6_Template, 2, 1, "div", 16);
|
|
2110
|
+
i0.ɵɵelementEnd();
|
|
2111
|
+
i0.ɵɵtemplate(7, TableComponent_ng_template_7_Template, 1, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(9, TableComponent_ng_template_9_Template, 1, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
2112
|
+
i0.ɵɵelementStart(11, "div", 17);
|
|
2113
|
+
i0.ɵɵelementContainer(12, null, 3)(14, null, 4)(16, null, 5)(18, null, 6)(20, null, 7)(22, null, 8)(24, null, 9)(26, null, 10);
|
|
2114
|
+
i0.ɵɵelement(28, "div", 18);
|
|
2115
|
+
i0.ɵɵelementEnd();
|
|
2116
|
+
} if (rf & 2) {
|
|
2117
|
+
i0.ɵɵproperty("ngIf", ctx.title || ctx.subheading || ctx.iconclass || ctx.exportOptions.length || ctx._actions.header.length);
|
|
2118
|
+
i0.ɵɵadvance(3);
|
|
2119
|
+
i0.ɵɵproperty("hidden", !ctx._actions.footer.length && (!ctx.shownavigation || ctx.onDemandLoad && ctx.dataNavigator.isDisableNext || (ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) <= ctx.pagesize));
|
|
2120
|
+
i0.ɵɵadvance();
|
|
2121
|
+
i0.ɵɵproperty("hidden", !(ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) && !(ctx.dataNavigator.datasource == null ? null : ctx.dataNavigator.datasource.pagination == null ? null : ctx.dataNavigator.datasource.pagination.next) || !ctx.shownavigation || ctx.onDemandLoad && ctx.dataNavigator.isDisableNext || (ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) <= ctx.pagesize);
|
|
2122
|
+
i0.ɵɵadvance(2);
|
|
2123
|
+
i0.ɵɵproperty("ngIf", ctx._actions.footer.length);
|
|
2124
|
+
} }, dependencies: [i5.AnchorComponent, i6.BsDropdownDirective, i7.NgClass, i7.NgForOf, i7.NgIf, i7.NgTemplateOutlet, i8.ButtonComponent, i9.MenuComponent, i10.PaginationComponent], encapsulation: 2 }); }
|
|
2125
|
+
}
|
|
2126
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableComponent, [{
|
|
2127
|
+
type: Component,
|
|
2128
|
+
args: [{ selector: '[wmTable]', providers: [
|
|
2129
|
+
provideAs(TableComponent, NG_VALUE_ACCESSOR, true),
|
|
2130
|
+
provideAsWidgetRef(TableComponent)
|
|
2131
|
+
], template: "<div class=\"panel-heading\" *ngIf=\"title || subheading || iconclass || exportOptions.length || _actions.header.length\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon {{iconclass}}\" *ngIf=\"iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"panel-actions app-datagrid-actions\" *ngIf=\"exportOptions.length || _actions.header.length\">\n <ng-container *ngFor=\"let btn of _actions.header; let index = index;\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('actions_header_' + index, {btn:btn})\">\n </ng-container>\n <div wmMenu dropdown caption.bind=\"appLocale.LABEL_EXPORT\" *ngIf=\"exportOptions.length\" autoclose=\"always\" attr.name=\"{{name}}-export\"\n dataset.bind=\"exportOptions\" select.event=\"export($item)\" menuposition=\"down,left\"></div>\n </div>\n </h3>\n</div>\n<div class=\"app-datagrid\" #datagridElement></div>\n\n<div class=\"panel-footer clearfix\" [hidden]=\"!_actions.footer.length && (!shownavigation || (onDemandLoad && dataNavigator.isDisableNext) || dataNavigator?.dataSize <= pagesize)\">\n <div class=\"app-datagrid-paginator\" [hidden]=\"(!dataNavigator?.dataSize && !dataNavigator.datasource?.pagination?.next) || !shownavigation || (onDemandLoad && dataNavigator.isDisableNext) || dataNavigator?.dataSize <= pagesize\">\n <nav wmPagination show.bind=\"shownavigation\" navigationalign.bind=\"navigationalign\"\n navigationsize.bind=\"navigationSize\"\n navigation.bind=\"navControls\" showrecordcount.bind=\"showrecordcount\" maxsize.bind=\"maxsize\"\n boundarylinks.bind=\"boundarylinks\"\n forceellipses.bind=\"forceellipses\" directionlinks.bind=\"directionlinks\"></nav>\n </div>\n <div class=\"app-datagrid-actions\" *ngIf=\"_actions.footer.length\">\n <ng-container *ngFor=\"let btn of _actions.footer; let index = index;\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('actions_footer_' + index, {btn:btn})\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton caption.bind=\"btn.displayName\" show.bind=\"btn.show\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" (click)=\"invokeActionEvent($event, btn.action)\"\n [ngClass]=\"{'btn-sm': spacing === 'condensed', 'disabled-new': btn.key === 'addNewRow' && (isGridEditMode || isLoading)}\"\n type=\"button\" shortcutkey.bind=\"btn.shortcutkey\" tabindex.bind=\"btn.tabindex\" hint.bind=\"btn.title\" [attr.aria-label]=\"btn.displayName\" disabled.bind=\"btn.disabled\" conditionalclass.bind=\"btn.conditionalclass\" conditionalstyle.bind=\"btn.conditionalstyle\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor caption.bind=\"btn.displayName\" show.bind=\"btn.show\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" (click)=\"invokeActionEvent($event, btn.action)\"\n [ngClass]=\"{'btn-sm': spacing === 'condensed', 'disabled-new': btn.key === 'addNewRow' && (isGridEditMode || isLoading)}\"\n shortcutkey.bind=\"btn.shortcutkey\" tabindex.bind=\"btn.tabindex\" hint.bind=\"btn.title\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\" conditionalclass.bind=\"btn.conditionalclass\" conditionalstyle.bind=\"btn.conditionalstyle\"></a>\n</ng-template>\n\n<div hidden>\n <ng-container #multiColumnFilterView></ng-container>\n\n <ng-container #inlineEditView></ng-container>\n\n <ng-container #inlineEditNewView></ng-container>\n\n <ng-container #rowActionsView></ng-container>\n\n <ng-container #rowExpansionActionView></ng-container>\n\n <ng-container #customExprView></ng-container>\n\n <ng-container #dynamicTable></ng-container>\n\n <ng-container #rowDetailView></ng-container>\n\n <div class=\"dynamic-table-container\"></div>\n</div>\n" }]
|
|
2132
|
+
}], () => [{ type: i0.Injector }, { type: i1.FormBuilder }, { type: i2.App }, { type: i2.DynamicComponentRefProvider }, { type: i2.StatePersistence }, { type: i2.PaginationService }, { type: i2.Viewport }, { type: i3.ListComponent, decorators: [{
|
|
2133
|
+
type: Optional
|
|
2134
|
+
}] }, { type: undefined, decorators: [{
|
|
2135
|
+
type: Attribute,
|
|
2136
|
+
args: ['dataset.bind']
|
|
2137
|
+
}] }, { type: undefined, decorators: [{
|
|
2138
|
+
type: Attribute,
|
|
2139
|
+
args: ['datasource.bind']
|
|
2140
|
+
}] }, { type: undefined, decorators: [{
|
|
2141
|
+
type: Attribute,
|
|
2142
|
+
args: ['readonlygrid']
|
|
2143
|
+
}] }, { type: i0.NgZone }, { type: i4.TrustAsPipe }, { type: undefined, decorators: [{
|
|
2144
|
+
type: Inject,
|
|
2145
|
+
args: ['EXPLICIT_CONTEXT']
|
|
2146
|
+
}, {
|
|
2147
|
+
type: Optional
|
|
2148
|
+
}] }], { dataNavigator: [{
|
|
2149
|
+
type: ViewChild,
|
|
2150
|
+
args: [PaginationComponent, { static: true }]
|
|
2151
|
+
}], _tableElement: [{
|
|
2152
|
+
type: ViewChild,
|
|
2153
|
+
args: ['datagridElement', { static: true }]
|
|
2154
|
+
}], rowActionTmpl: [{
|
|
2155
|
+
type: ContentChildren,
|
|
2156
|
+
args: ['rowActionTmpl', { descendants: true }]
|
|
2157
|
+
}], rowActionsViewRef: [{
|
|
2158
|
+
type: ViewChild,
|
|
2159
|
+
args: ['rowActionsView', { static: true, read: ViewContainerRef }]
|
|
2160
|
+
}], filterTmpl: [{
|
|
2161
|
+
type: ContentChildren,
|
|
2162
|
+
args: ['filterTmpl', { descendants: true }]
|
|
2163
|
+
}], filterViewRef: [{
|
|
2164
|
+
type: ViewChild,
|
|
2165
|
+
args: ['multiColumnFilterView', { static: true, read: ViewContainerRef }]
|
|
2166
|
+
}], inlineWidgetTmpl: [{
|
|
2167
|
+
type: ContentChildren,
|
|
2168
|
+
args: ['inlineWidgetTmpl', { descendants: true }]
|
|
2169
|
+
}], inlineEditViewRef: [{
|
|
2170
|
+
type: ViewChild,
|
|
2171
|
+
args: ['inlineEditView', { static: true, read: ViewContainerRef }]
|
|
2172
|
+
}], inlineWidgetNewTmpl: [{
|
|
2173
|
+
type: ContentChildren,
|
|
2174
|
+
args: ['inlineWidgetTmplNew', { descendants: true }]
|
|
2175
|
+
}], inlineEditNewViewRef: [{
|
|
2176
|
+
type: ViewChild,
|
|
2177
|
+
args: ['inlineEditNewView', { static: true, read: ViewContainerRef }]
|
|
2178
|
+
}], customExprTmpl: [{
|
|
2179
|
+
type: ContentChildren,
|
|
2180
|
+
args: ['customExprTmpl', { descendants: true }]
|
|
2181
|
+
}], customExprViewRef: [{
|
|
2182
|
+
type: ViewChild,
|
|
2183
|
+
args: ['customExprView', { static: true, read: ViewContainerRef }]
|
|
2184
|
+
}], rowExpansionActionTmpl: [{
|
|
2185
|
+
type: ContentChildren,
|
|
2186
|
+
args: ['rowExpansionActionTmpl', { descendants: true }]
|
|
2187
|
+
}], rowExpansionTmpl: [{
|
|
2188
|
+
type: ContentChild,
|
|
2189
|
+
args: ['rowExpansionTmpl']
|
|
2190
|
+
}], rowDetailViewRef: [{
|
|
2191
|
+
type: ViewChild,
|
|
2192
|
+
args: ['rowDetailView', { static: true, read: ViewContainerRef }]
|
|
2193
|
+
}], rowExpansionActionViewRef: [{
|
|
2194
|
+
type: ViewChild,
|
|
2195
|
+
args: ['rowExpansionActionView', { static: true, read: ViewContainerRef }]
|
|
2196
|
+
}], dynamicTableRef: [{
|
|
2197
|
+
type: ViewChild,
|
|
2198
|
+
args: ['dynamicTable', { static: true, read: ViewContainerRef }]
|
|
2199
|
+
}], onKeyPress: [{
|
|
2200
|
+
type: HostListener,
|
|
2201
|
+
args: ['keypress', ['$event']]
|
|
2202
|
+
}] }); })();
|
|
2203
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "table.component.ts", lineNumber: 122 }); })();
|
|
2204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RhdGEvdGFibGUvc3JjL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQUUsTUFBTSxFQUNwQixRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixXQUFXLEVBQWEsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQ0gsVUFBVSxFQUNWLGVBQWUsRUFDZixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixHQUFHLEVBQ0gsWUFBWSxFQUNaLFVBQVUsRUFDViwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsRUFDWCxNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCxjQUFjLEVBQ2QsU0FBUyxFQUNULHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIs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TSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFFaEIsY0FBYztrQkFBckUsZUFBZTttQkFBQyxnQkFBZ0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7WUFDaUIsaUJBQWlCO2tCQUF2RixTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFFSCxzQkFBc0I7a0JBQXZGLGVBQWU7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1lBQzlCLGdCQUFnQjtrQkFBakQsWUFBWTttQkFBQyxrQkFBa0I7WUFDc0MsZ0JBQWdCO2tCQUFyRixTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ1cseUJBQXlCO2tCQUF2RyxTQUFTO21CQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFFUixlQUFlO2tCQUFuRixTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBNjFCN0IsVUFBVTtrQkFBL0MsWUFBWTttQkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQXYzQjNCLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLCBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkcGFyc2VFdmVudCxcbiAgICAkdW53YXRjaCxcbiAgICAkd2F0Y2gsXG4gICAgQXBwLFxuICAgIGNsb3NlUG9wb3ZlcixcbiAgICBEYXRhU291cmNlLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBleHRlbmRQcm90byxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGdldFZhbGlkSlNPTixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICBpc0RlZmluZWQsXG4gICAgaXNNb2JpbGUsXG4gICAgUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICB0cmlnZ2VyRm4sXG4gICAgVmlld3BvcnRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBERUJPVU5DRV9USU1FUyxcbiAgICBFRElUX01PREUsXG4gICAgZXh0cmFjdERhdGFTb3VyY2VOYW1lLFxuICAgIGdldENvbmRpdGlvbmFsQ2xhc3NlcyxcbiAgICBnZXRPcmRlckJ5RXhwcixcbiAgICBnZXRSb3dPcGVyYXRpb25zQ29sdW1uLFxuICAgIE5BVklHQVRJT05fVFlQRSxcbiAgICBwcmVwYXJlRmllbGREZWZzLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgc3R5bGVyLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgVHJ1c3RBc1BpcGUsXG4gICAgdW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXNcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge1BhZ2luYXRpb25Db21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvcGFnaW5hdGlvbic7XG5cbmltcG9ydCB7TGlzdENvbXBvbmVudH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0JztcbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi90YWJsZS5wcm9wcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZSxcbiAgICBleHRlbmQsIGZpbmQsXG4gICAgZmluZEluZGV4LCBmbG9vciwgZm9yRWFjaCxcbiAgICBnZXQsIGluY2x1ZGVzLCBpbmRleE9mLCBpc0FycmF5LCBpc0VtcHR5LFxuICAgIGlzRXF1YWwsXG4gICAgaXNOYU4sIGlzT2JqZWN0LFxuICAgIGlzVW5kZWZpbmVkLCBrZXlzLCBvbWl0QnksXG4gICAgcHVsbEFsbFdpdGgsXG4gICAgcmVtb3ZlLFxuICAgIHNldCxcbiAgICBzb21lLCBzcGxpdCwgc3RhcnRzV2l0aCwgdG9OdW1iZXIsIHZhbHVlc1xufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWdyaWQgYXBwLXBhbmVsIHBhbmVsJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXRhYmxlJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbmNvbnN0IGV4cG9ydEljb25NYXBwaW5nID0ge1xuICAgIEVYQ0VMOiAnZmEgZmEtZmlsZS1leGNlbC1vJyxcbiAgICBDU1Y6ICdmYSBmYS1maWxlLXRleHQtbydcbn07XG5cbmNvbnN0IFJPV19PUFNfRklFTEQgPSAncm93T3BlcmF0aW9ucyc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuY29uc3QgaXNJbnB1dEJvZHlXcmFwcGVyID0gdGFyZ2V0ID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gWycuZHJvcGRvd24tbWVudScsICcudWliLXR5cGVhaGVhZC1tYXRjaCcsICcubW9kYWwtZGlhbG9nJywgJy50b2FzdCddO1xuICAgIGxldCBpc0lucHV0ID0gZmFsc2U7XG4gICAgY2xhc3Nlcy5mb3JFYWNoKGNscyA9PiB7XG4gICAgICAgIGlmICh0YXJnZXQuY2xvc2VzdChjbHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgaXNJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBhdHRycyA9IFsnYnNkYXRlcGlja2VyZGF5ZGVjb3JhdG9yJ107XG4gICAgaWYgKCFpc0lucHV0KSB7XG4gICAgICAgIGF0dHJzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0WzBdLmhhc0F0dHJpYnV0ZShhdHRyKSkge1xuICAgICAgICAgICAgICAgIGlzSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpc0lucHV0O1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbd21UYWJsZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhUYWJsZUNvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVGFibGVDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBAVmlld0NoaWxkKFBhZ2luYXRpb25Db21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBkYXRhTmF2aWdhdG9yO1xuXG4gICAgQFZpZXdDaGlsZCgnZGF0YWdyaWRFbGVtZW50Jywge3N0YXRpYzogdHJ1ZX0pIHByaXZhdGUgX3RhYmxlRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ3Jvd0FjdGlvblRtcGwnLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHJvd0FjdGlvblRtcGw6IFF1ZXJ5TGlzdDxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ3Jvd0FjdGlvbnNWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcm93QWN0aW9uc1ZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKCdmaWx0ZXJUbXBsJywge2Rlc2NlbmRhbnRzOiB0cnVlfSkgZmlsdGVyVG1wbDogUXVlcnlMaXN0PGFueT47XG4gICAgQFZpZXdDaGlsZCgnbXVsdGlDb2x1bW5GaWx0ZXJWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZmlsdGVyVmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2lubGluZVdpZGdldFRtcGwnLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBpbmxpbmVXaWRnZXRUbXBsOiBRdWVyeUxpc3Q8YW55PjtcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVFZGl0VmlldycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGlubGluZUVkaXRWaWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbignaW5saW5lV2lkZ2V0VG1wbE5ldycsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGlubGluZVdpZGdldE5ld1RtcGw6IFF1ZXJ5TGlzdDxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZUVkaXROZXdWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgaW5saW5lRWRpdE5ld1ZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKCdjdXN0b21FeHByVG1wbCcsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGN1c3RvbUV4cHJUbXBsOiBRdWVyeUxpc3Q8YW55PjtcbiAgICBAVmlld0NoaWxkKCdjdXN0b21FeHByVmlldycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGN1c3RvbUV4cHJWaWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbigncm93RXhwYW5zaW9uQWN0aW9uVG1wbCcsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm93RXhwYW5zaW9uQWN0aW9uVG1wbDogUXVlcnlMaXN0PGFueT47XG4gICAgQENvbnRlbnRDaGlsZCgncm93RXhwYW5zaW9uVG1wbCcpIHJvd0V4cGFuc2lvblRtcGw6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQFZpZXdDaGlsZCgncm93RGV0YWlsVmlldycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHJvd0RldGFpbFZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgncm93RXhwYW5zaW9uQWN0aW9uVmlldycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHJvd0V4cGFuc2lvbkFjdGlvblZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljVGFibGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBkeW5hbWljVGFibGVSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBwcml2YXRlIHJvd0FjdGlvbnNDb21waWxlZFRsOiBhbnkgID0ge307XG4gICAgcHJpdmF0ZSByb3dGaWx0ZXJDb21wbGllZFRsOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGlubGluZUNvbXBsaWVkVGw6IGFueSA9IHt9O1xuICAgIHByaXZhdGUgaW5saW5lTmV3Q29tcGxpZWRUbDogYW55ID0ge307XG4gICAgcHJpdmF0ZSBjdXN0b21FeHByQ29tcGlsZWRUbDogYW55ID0ge307XG4gICAgcHJpdmF0ZSBjdXN0b21FeHByQ29tcGlsZWRTdW1tYXJ5VGw6IGFueSA9IHt9O1xuICAgIHByaXZhdGUgcm93RGVmSW5zdGFuY2VzID0ge307XG4gICAgcHJpdmF0ZSByb3dEZWZNYXAgPSB7fTtcbiAgICBwcml2YXRlIHJvd0V4cGFuc2lvbkFjdGlvblRsOiBhbnkgPSB7fTtcblxuICAgIGNvbHVtbnMgPSB7fTtcbiAgICBmb3JtZmllbGRzID0ge307XG4gICAgZGF0YWdyaWRFbGVtZW50O1xuICAgIGRhdGFzb3VyY2U7XG4gICAgZWRpdG1vZGU7XG4gICAgZW5hYmxlY29sdW1uc2VsZWN0aW9uO1xuICAgIGVuYWJsZXNvcnQgPSB0cnVlO1xuICAgIGZpbHRlcm1vZGU7XG4gICAgZmlsdGVyb25rZXlwcmVzcztcbiAgICBzZWFyY2hsYWJlbDtcbiAgICBmb3JtcG9zaXRpb247XG4gICAgZ3JpZGNsYXNzO1xuICAgIGdyaWRmaXJzdHJvd3NlbGVjdDtcbiAgICBpY29uY2xhc3M7XG4gICAgb25kZW1hbmRtZXNzYWdlO1xuICAgIHZpZXdsZXNzbWVzc2FnZTtcbiAgICBzaG93dmlld2xlc3NidXR0b24gPSBmYWxzZTtcbiAgICBfdHJpZ2dlcmVkQnlVc2VyO1xuICAgIGlzR3JpZEVkaXRNb2RlO1xuICAgIGxvYWRpbmdkYXRhbXNnO1xuICAgIG11bHRpc2VsZWN0O1xuICAgIG5hbWU7XG4gICAgX2lzRGVwZW5kZW50O1xuICAgIG5hdmlnYXRpb247XG4gICAgbmF2aWdhdGlvblNpemU7XG4gICAgbmF2aWdhdGlvbmFsaWduO1xuICAgIG5vZGF0YW1lc3NhZ2U7XG4gICAgcGFnZXNpemU7XG4gICAgcHJldkRhdGE7XG4gICAgcHJpbWFyeUtleSA9IFtdO1xuICAgIHJhZGlvc2VsZWN0O1xuICAgIHJvd2NsYXNzO1xuICAgIHJvd25nY2xhc3M7XG4gICAgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHNob3doZWFkZXI7XG4gICAgc2hvd3JlY29yZGNvdW50O1xuICAgIHNob3dyb3dpbmRleDtcbiAgICBzdWJoZWFkaW5nO1xuICAgIHRpdGxlO1xuICAgIHNob3duZXdyb3c7XG4gICAgZGVsZXRlb2t0ZXh0O1xuICAgIGRlbGV0ZWNhbmNlbHRleHQ7XG4gICAgb25FcnJvcjtcbiAgICBvblJvd2luc2VydDtcbiAgICBvblJvd3VwZGF0ZTtcbiAgICBvblJvd2RlbGV0ZTtcbiAgICBzdGF0ZWhhbmRsZXI7XG4gICAgc2VsZWN0ZWRJdGVtQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcbiAgICBzZWxlY3RlZEl0ZW1DaGFuZ2UkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5hc09ic2VydmFibGUoKTtcblxuICAgIGFjdGlvbnMgPSBbXTtcbiAgICBfYWN0aW9ucyA9IHtcbiAgICAgICAgJ2hlYWRlcic6IFtdLFxuICAgICAgICAnZm9vdGVyJzogW11cbiAgICB9O1xuICAgIGV4cG9ydE9wdGlvbnMgPSBbXTtcbiAgICBleHBvcnRkYXRhc2l6ZTtcbiAgICBmb3JtV2lkZ2V0cztcbiAgICBoZWFkZXJDb25maWcgPSBbXTtcbiAgICBpdGVtcyA9IFtdO1xuICAgIG5hdkNvbnRyb2xzO1xuICAgIHJvd0FjdGlvbnMgPSBbXTtcbiAgICBzZWxlY3RlZENvbHVtbnM7XG4gICAgc2hvd25hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBzaG93Rmlyc3RSb3cgPSBmYWxzZTtcbiAgICBkYXRhc2V0O1xuICAgIF9saXZlVGFibGVQYXJlbnQ7XG4gICAgaXNQYXJ0T2ZMaXZlR3JpZDtcbiAgICBncmlkRWxlbWVudDtcbiAgICBpc05ld1Jvd0luc2VydGVkO1xuICAgIGlzTW9iaWxlO1xuICAgIGlzTG9hZGluZztcbiAgICBpc1Jvd0RlbGV0ZWQ7XG4gICAgZG9jdW1lbnRDbGlja0JpbmQgPSBub29wO1xuICAgIGFjdGlvblJvd0luZGV4O1xuICAgIGFjdGlvblJvd1BhZ2U7XG4gICAgcHJldkZpbHRlckV4cHJlc3Npb246IGFueSA9IFtdO1xuICAgIGZpZWxkRGVmcyA9IFtdO1xuICAgIHJvd0RlZjogYW55ID0ge307XG4gICAgcm93SW5zdGFuY2U6IGFueSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBmdWxsRmllbGREZWZzID0gW107XG4gICAgcHJpdmF0ZSBfX2Z1bGxEYXRhO1xuICAgIHByaXZhdGUgZGF0YU5hdmlnYXRvcldhdGNoZWQ7XG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JSZXN1bHRXYXRjaDtcbiAgICBwcml2YXRlIG5hdmlnYXRvck1heFJlc3VsdFdhdGNoO1xuICAgIHByaXZhdGUgZmlsdGVySW5mbztcbiAgICBwcml2YXRlIHNvcnRJbmZvO1xuICAgIHByaXZhdGUgc2VydmVyRGF0YTtcbiAgICBwcml2YXRlIGZpbHRlcm51bGxyZWNvcmRzO1xuICAgIHByaXZhdGUgdmFyaWFibGVJbmZsaWdodCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc2R5bmFtaWN0YWJsZTtcbiAgICBwcml2YXRlIF9keW5hbWljQ29udGV4dDtcbiAgICBwcml2YXRlIG5vT2ZDb2x1bW5zO1xuICAgIHB1YmxpYyBvbkRlbWFuZExvYWQ7XG4gICAgcHVibGljIGluZlNjcm9sbDtcbiAgICBwcml2YXRlIGlzRGF0YUxvYWRpbmc7XG4gICAgcHJpdmF0ZSBjdXJyZW50UGFnZTtcbiAgICBwcml2YXRlIGFwcGx5UHJvcHMgPSBuZXcgTWFwKCk7XG5cbiAgICByZWRyYXcgPSBkZWJvdW5jZSh0aGlzLl9yZWRyYXcsIDE1MCk7XG4gICAgZGVib3VuY2VkSGFuZGxlTG9hZGluZyA9IGRlYm91bmNlKHRoaXMuaGFuZGxlTG9hZGluZywgMzUwKTtcblxuICAgIC8vIEZpbHRlciBhbmQgU29ydCBNZXRob2RzXG4gICAgcm93RmlsdGVyOiBhbnkgPSB7fTtcbiAgICBtYXRjaE1vZGVUeXBlc01hcDtcbiAgICBtYXRjaE1vZGVNc2dzO1xuICAgIGVtcHR5TWF0Y2hNb2RlcztcbiAgICBfc2VhcmNoU29ydEhhbmRsZXIgPSBub29wO1xuICAgIHNlYXJjaFNvcnRIYW5kbGVyID0gKC4uLmFyZ3MpID0+IHsgdGhpcy5fc2VhcmNoU29ydEhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7IH07XG4gICAgX2lzUGFnZVNlYXJjaDtcbiAgICBfaXNDbGllbnRTZWFyY2g7XG4gICAgY2hlY2tGaWx0ZXJzQXBwbGllZDogRnVuY3Rpb247XG4gICAgZ2V0U2VhcmNoUmVzdWx0OiBGdW5jdGlvbjtcbiAgICBnZXRTb3J0UmVzdWx0OiBGdW5jdGlvbjtcbiAgICBnZXRGaWx0ZXJGaWVsZHM6IEZ1bmN0aW9uO1xuICAgIG9uUm93RmlsdGVyQ2hhbmdlID0gbm9vcDtcbiAgICBvbkZpbHRlckNvbmRpdGlvblNlbGVjdCA9IG5vb3A7XG4gICAgc2hvd0NsZWFySWNvbiA9IG5vb3A7XG4gICAgY2xlYXJSb3dGaWx0ZXIgPSBub29wO1xuICAgIGFkanVzdENvbnRhaW5lciA9IG5vb3A7XG4gICAgZ2V0TmF2aWdhdGlvblRhcmdldEJ5U29ydEluZm86IEZ1bmN0aW9uO1xuICAgIHJlZnJlc2hEYXRhOiBGdW5jdGlvbjtcbiAgICBjbGVhckZpbHRlcjogRnVuY3Rpb247XG5cbiAgICAvLyBJbmxpbmUgRWRpdFxuICAgIG5nZm9ybTogRm9ybUdyb3VwO1xuICAgIHVwZGF0ZVZhcmlhYmxlOiBGdW5jdGlvbjtcbiAgICB1cGRhdGVSZWNvcmQ6IEZ1bmN0aW9uO1xuICAgIGRlbGV0ZVJlY29yZDogRnVuY3Rpb247XG4gICAgaW5zZXJ0UmVjb3JkOiBGdW5jdGlvbjtcbiAgICBlZGl0Um93OiBGdW5jdGlvbjtcbiAgICBhZGROZXdSb3c6IEZ1bmN0aW9uO1xuICAgIGFkZFJvdzogRnVuY3Rpb247XG4gICAgZGVsZXRlUm93OiBGdW5jdGlvbjtcbiAgICBvblJlY29yZERlbGV0ZTogRnVuY3Rpb247XG4gICAgaW5pdGlhdGVTZWxlY3RJdGVtOiBGdW5jdGlvbjtcbiAgICBoaWRlRWRpdFJvdzogRnVuY3Rpb247XG4gICAgc2F2ZVJvdzogRnVuY3Rpb247XG4gICAgY2FuY2VsUm93OiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIF9wYWdlTG9hZCA9IHRydWU7XG5cbiAgICBwdWJsaWMgZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICBjb2xEZWZzOiBbXSxcbiAgICAgICAgc3RhcnRSb3dJbmRleDogMSxcbiAgICAgICAgbW9kZTogJycsXG4gICAgICAgIHNvcnRJbmZvOiB7XG4gICAgICAgICAgICBmaWVsZDogJycsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcm1vZGU6ICcnLFxuICAgICAgICBmaWx0ZXJvbmtleXByZXNzOiBmYWxzZSxcbiAgICAgICAgc2VhcmNoTGFiZWw6ICcnLFxuICAgICAgICByb3dBY3Rpb25zOiBbXSxcbiAgICAgICAgaGVhZGVyQ29uZmlnOiBbXSxcbiAgICAgICAgcm93Q2xhc3M6ICcnLFxuICAgICAgICBlZGl0bW9kZTogJycsXG4gICAgICAgIGZvcm1Qb3NpdGlvbjogJycsXG4gICAgICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICAgICAgcm93RXhwYW5zaW9uRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHJvd0RlZjoge1xuICAgICAgICAgICAgcG9zaXRpb246ICcwJ1xuICAgICAgICB9LFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkOiAnU2VsZWN0IEZpZWxkJ1xuICAgICAgICB9LFxuICAgICAgICBzZWN1cml0eVV0aWxzOiB7XG4gICAgICAgICAgICBwaXBlVHJhbnNmb3JtIDoge31cbiAgICAgICAgfSxcbiAgICAgICAgbmF2aWdhdGlvbjogJycsXG4gICAgICAgIGlzZHluYW1pY3RhYmxlOiAnJyxcbiAgICAgICAgZGVsZXRlZFJvd0luZGV4OiAtMSxcbiAgICAgICAgbGFzdEFjdGlvblBlcmZvcm1lZDogJ3Njcm9sbCcsXG4gICAgICAgIGlzU2VhcmNoVHJpZ2VycmVkOiBmYWxzZSxcbiAgICAgICAgaXNEYXRhc2V0VXBkYXRlZDogZmFsc2UsXG4gICAgICAgIGlzRGF0YVVwZGF0ZWRCeVVzZXI6IGZhbHNlLFxuICAgICAgICBzaG93dmlld2xlc3NidXR0b246IGZhbHNlLFxuICAgICAgICBvbmRlbWFuZG1lc3NhZ2U6ICcnLFxuICAgICAgICB2aWV3bGVzc21lc3NhZ2U6ICcnLFxuICAgICAgICBsb2FkaW5nZGF0YW1zZzogJycsXG4gICAgICAgIGlzTmV4dFBhZ2VEYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIEFDVElPTlM6IHtcbiAgICAgICAgICAgICdERUxFVEUnOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICdFRElUJzogJ2VkaXQnLFxuICAgICAgICAgICAgJ1NFQVJDSF9PUl9TT1JUJzogJ3NlYXJjaF9vcl9zb3J0JyxcbiAgICAgICAgICAgICdERUZBVUxUJzogJ3Njcm9sbCcsXG4gICAgICAgICAgICAnRklMVEVSX0NSSVRFUklBJyA6ICdmaWx0ZXInLFxuICAgICAgICAgICAgJ0RBVEFTRVRfVVBEQVRFJzogJ2RhdGFzZXRfdXBkYXRlJ1xuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25Sb3dJbmRleDogdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25Sb3dQYWdlOiB1bmRlZmluZWQsXG4gICAgICAgIGlzTGFzdFBhZ2UgOiBmYWxzZSxcbiAgICAgICAgLy8gZ2V0IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyXG4gICAgICAgIGdldEN1cnJlbnRQYWdlOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMuZGF0YU5hdmlnYXRvciwgJ2RuLmN1cnJlbnRQYWdlJykgfHwgMTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IHRoZSBwYWdlIG51bWJlclxuICAgICAgICBzZXRDdXJyZW50UGFnZTogKHBhZ2VOdW0pID0+IHtcbiAgICAgICAgICAgIHNldCh0aGlzLmRhdGFOYXZpZ2F0b3IsICdkbi5jdXJyZW50UGFnZScsIHBhZ2VOdW0gfHwgMSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldERhdGFTb3VyY2U6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2U7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGdldCB0aGUgcGFnZSBsaW1pdFxuICAgICAgICBnZXRQYWdlU2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFnZXNpemU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UGFnZUNvdW50IDogKCkgPT57XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhTmF2aWdhdG9yLnBhZ2VDb3VudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlTmF2aWdhdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQuaXNEaXNhYmxlTmV4dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQuaXNEaXNhYmxlTGFzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMubW9kZSA9ICd2aWV3bGVzcyc7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHNldCB0aGUgZGVsZXRlZCByb3cgaW5kZXhcbiAgICAgICAgc2V0RGVsZXRlZFJvd0luZGV4OiAoaWQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2RlbGV0ZWRSb3dJbmRleCcsIGlkKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0cyB0aGUgbGFzdCBhY3Rpb24gcGVyZm9ybWVkIGxpa2UgZWRpdCwgZGVsZXRlIGV0Yy5cbiAgICAgICAgc2V0TGFzdEFjdGlvblBlcmZvcm1lZDogKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignbGFzdEFjdGlvblBlcmZvcm1lZCcsIGFjdGlvbiB8fCB0aGlzLmdyaWRPcHRpb25zLmxhc3RBY3Rpb25QZXJmb3JtZWQpO1xuICAgICAgICB9LFxuICAgICAgICBpc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5uYXZpZ2F0aW9uID09PSAnU2Nyb2xsJyB8fCB0aGlzLmdyaWRPcHRpb25zLm5hdmlnYXRpb24gPT09ICdPbi1EZW1hbmQnO1xuICAgICAgICB9LFxuICAgICAgICBzZXRJc1NlYXJjaFRyaWdlcnJlZDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdpc1NlYXJjaFRyaWdlcnJlZCcsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0SXNEYXRhc2V0VXBkYXRlZDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdpc0RhdGFzZXRVcGRhdGVkJywgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyAgRml4IGZvciBbV01TLTIzMjYzXTogJ2lzTmV4dFBhZ2VEYXRhJyBmbGFnIGlzIHNldCB0byB0cnVlIC0+IGlmIHVzZXIgZmV0Y2hpbmcgdGhlIG5leHQgcGFnZSBkYXRhIGJ5IGNsaWNraW5nIG9uTG9hZCBtb3JlIG9yIHNjcm9sbFxuICAgICAgICBzZXRJc05leHRQYWdlRGF0YTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdpc05leHRQYWdlRGF0YScsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gIEZpeCBmb3IgW1dNUy0yMzI2M106ICdpc0RhdGFVcGRhdGVkQnlVc2VyJyBmbGFnIGlzIHNldCB0byB0cnVlIC0+IGlmIHVzZXIgY2hhbmdlcyB0aGUgZGF0YXNldCBmcm9tIHNjcmlwdFxuICAgICAgICBzZXRJc0RhdGFVcGRhdGVkQnlVc2VyOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2lzRGF0YVVwZGF0ZWRCeVVzZXInLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRGF0YVJlbmRlcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdkYXRhcmVuZGVyJywgeyRkYXRhOiB0aGlzLmdyaWREYXRhLCBkYXRhOiB0aGlzLmdyaWREYXRhfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHNlbGVjdCByb3dzIHNlbGVjdGVkIGluIHByZXZpb3VzIHBhZ2VzLiAoTm90IGZpbmRpbmcgaW50ZXJzZWN0aW9uIG9mIGRhdGEgYW5kIHNlbGVjdGVkaXRlbXMgYXMgaXQgd2lsbCBiZSBoZWF2eSlcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2VsZWN0Um93cycsIHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gT24gcmVuZGVyLCBhcHBseSB0aGUgZmlsdGVycyBzZXQgZm9yIHF1ZXJ5IHNlcnZpY2UgdmFyaWFibGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNQYWdlU2VhcmNoICYmIHRoaXMuZmlsdGVySW5mbykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNvcnRIYW5kbGVyKHRoaXMuZmlsdGVySW5mbywgdW5kZWZpbmVkLCAnc2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93U2VsZWN0OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggJiYgcm93RGF0YS4kaW5kZXggJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmIHRoaXMuZGF0YU5hdmlnYXRvciAmJiB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcy5pbmRleE9mKHRoaXMubmF2aWdhdGlvbikgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtwYWdlOiB0aGlzLmRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UsIGluZGV4OiByb3dEYXRhLiRpbmRleCAtIDF9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpICYmIHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc29tZSh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0sIG9iaikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ucHVzaChvYmopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMsIHsnc2VsZWN0ZWRJdGVtJzogd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgeydzZWxlY3RlZEl0ZW0nOiBbb2JqXX0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdSZXRhaW4gU3RhdGUgaGFuZGxpbmcgb24gV2lkZ2V0ICcgKyB0aGlzLm5hbWUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGN1cnJlbnQgcGFnaW5hdGlvbiB0eXBlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Jvd3NlbGVjdCcsIHskZGF0YTogcm93RGF0YSwgJGV2ZW50OiBlLCByb3c6IHJvd0RhdGF9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBhc3NpZ25zIHRoZSBpdGVtcyBvbiBjYXB0dXJlIHBoYXNlIG9mIHRoZSBjbGljayBoYW5kbGVyLlxuICAgICAgICBhc3NpZ25TZWxlY3RlZEl0ZW1zOiAocm93LCBlLCByb3dJbmZvKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICogaW4gY2FzZSBvZiBzaW5nbGUgc2VsZWN0LCB1cGRhdGUgdGhlIGl0ZW1zIHdpdGggb3V0IGNoYW5naW5nIHRoZSByZWZlcmVuY2UuXG4gICAgICAgICAgICAgICAgICogZm9yIG11bHRpIHNlbGVjdCwga2VlcCBvbGQgc2VsZWN0ZWQgaXRlbXMgaW4gdGFjdFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRml4IGZvciBbV01TLTI1MTEwXTogQWRkIHJvdyB0byBpdGVtcyBsaXN0IG9ubHkgaWYgdGhlIHJvdyBpcyBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4KHRoaXMuaXRlbXMsIHJvdykgPT09IC0xICYmIChyb3dJbmZvPy5fc2VsZWN0ZWQgPT09IHVuZGVmaW5lZCB8fCByb3dJbmZvPy5fc2VsZWN0ZWQgPT0gdHJ1ZSB8fCAodGhpcy5ncmlkZmlyc3Ryb3dzZWxlY3QgJiYgcm93SW5mbz8ucm93SWQgPT0gMCAmJiAhdGhpcy5zaG93Rmlyc3RSb3cpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93SW5mbz8ucm93SWQgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0ZpcnN0Um93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93RGJsQ2xpY2s6IChyb3csIGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Jvd2RibGNsaWNrJywgeyRkYXRhOiByb3dEYXRhLCAkZXZlbnQ6IGUsIHJvdzogcm93RGF0YX0pO1xuICAgICAgICB9LFxuICAgICAgICBvblJvd0Rlc2VsZWN0OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBwdWxsQWxsV2l0aCh0aGlzLml0ZW1zLCBbcm93XSwgaXNFcXVhbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dkZXNlbGVjdCcsIHskZGF0YTogcm93LCAkZXZlbnQ6IGUsIHJvd30pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dEYXRhID0gdGhpcy5hZGRSb3dJbmRleChyb3cpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLmluZGV4T2YodGhpcy5uYXZpZ2F0aW9uKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtwYWdlOiB0aGlzLmRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UsIGluZGV4OiByb3dEYXRhLiRpbmRleCAtIDF9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc2VsZWN0ZWRJdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUod2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtLCBmdW5jdGlvbiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsKHNlbGVjdGVkSXRlbSwgb2JqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgeydzZWxlY3RlZEl0ZW0nOiB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1JldGFpbiBTdGF0ZSBoYW5kbGluZyBvbiBXaWRnZXQgJyArIHRoaXMubmFtZSArICcgaXMgbm90IHN1cHBvcnRlZCBmb3IgY3VycmVudCBwYWdpbmF0aW9uIHR5cGUuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjYWxsT25Sb3dEZXNlbGVjdEV2ZW50OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2dldFNlbGVjdGVkUm93cycpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dkZXNlbGVjdCcsIHskZGF0YTogcm93LCAkZXZlbnQ6IGUsIHJvd30pO1xuICAgICAgICB9LFxuICAgICAgICBjYWxsT25Sb3dDbGlja0V2ZW50OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICAvLyBXTVMtMTg3NzQ6IElmIHdlIGludm9rZSBuYXZpZ2F0aW9uIGFjdGlvbiB2YXJpYWJsZSBvbiByb3djbGljayBjYWxsYmFjaywgdGhlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmluZyBvdXRzaWRlIGFuZ3VsYXIgem9uZSBzbyBhZGRpbmcgbmdab25lLnJ1blxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDYWxsIHJvdyBjbGljayBvbmx5IGlmIGNsaWNrIGlzIHRyaWdnZXJlZCBieSB1c2VyXG4gICAgICAgICAgICAgICAgaWYgKGUgJiYgZS5oYXNPd25Qcm9wZXJ0eSgnb3JpZ2luYWxFdmVudCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygncm93Y2xpY2snLCB7JGRhdGE6IHJvd0RhdGEsICRldmVudDogZSwgcm93OiByb3dEYXRhfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlUG9wb3ZlcjogY2xvc2VQb3BvdmVyLFxuICAgICAgICBvbkNvbHVtblNlbGVjdDogKGNvbCwgZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnZ2V0U2VsZWN0ZWRDb2x1bW5zJyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NvbHVtbnNlbGVjdCcsIHskZGF0YTogY29sLCAkZXZlbnQ6IGV9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db2x1bW5EZXNlbGVjdDogKGNvbCwgZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnZ2V0U2VsZWN0ZWRDb2x1bW5zJyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NvbHVtbmRlc2VsZWN0JywgeyRkYXRhOiBjb2wsICRldmVudDogZX0pO1xuICAgICAgICB9LFxuICAgICAgICBvbkhlYWRlckNsaWNrOiAoY29sLCBlKSA9PiB7XG4gICAgICAgICAgICAvLyBpZiBvblNvcnQgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBpbnZva2UgaXQgd2hlbiB0aGUgY29sdW1uIGhlYWRlciBpcyBjbGlja2VkXG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2hlYWRlcmNsaWNrJywgeyRldmVudDogZSwgJGRhdGE6IGNvbCwgY29sdW1uOiBjb2x9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Sb3dEZWxldGU6IChyb3csIGNhbmNlbFJvd0RlbGV0ZUNhbGxiYWNrLCBlLCBjYWxsQmFjaywgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVJlY29yZChleHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgICAnY2FuY2VsUm93RGVsZXRlQ2FsbGJhY2snOiBjYW5jZWxSb3dEZWxldGVDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgJ2V2dCc6IGUsXG4gICAgICAgICAgICAgICAgICAgICdjYWxsQmFjayc6IGNhbGxCYWNrXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93SW5zZXJ0OiAocm93LCBlLCBjYWxsQmFjaywgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRSZWNvcmQoZXh0ZW5kKHt9LCBvcHRpb25zLCB7cm93LCBldmVudDogZSwgJ2NhbGxCYWNrJzogY2FsbEJhY2t9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZVJvd1VwZGF0ZTogKHJvdywgZXZlbnROYW1lPykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpdmVUYWJsZVBhcmVudC51cGRhdGVSb3cocm93LCBldmVudE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmV2RGF0YSA9IGdldENsb25lZE9iamVjdChyb3cpO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJvd1VwZGF0ZTogKHJvdywgZSwgY2FsbEJhY2ssIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVjb3JkKGV4dGVuZCh7fSwgb3B0aW9ucywge3JvdywgJ3ByZXZEYXRhJzogdGhpcy5wcmV2RGF0YSwgJ2V2ZW50JzogZSwgJ2NhbGxCYWNrJzogY2FsbEJhY2t9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQmVmb3JlUm93VXBkYXRlOiAocm93LCBlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyb3d1cGRhdGUnLCB7JGV2ZW50OiBlLCAkZGF0YTogcm93LCByb3csIG9wdGlvbnM6IG9wdGlvbnN9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25CZWZvcmVSb3dJbnNlcnQ6IChyb3csIGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2luc2VydCcsIHskZXZlbnQ6IGUsICRkYXRhOiByb3csIHJvdywgb3B0aW9uczogb3B0aW9uc30pO1xuICAgICAgICB9LFxuICAgICAgICBvbkJlZm9yZVJvd0RlbGV0ZTogKHJvdywgZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93RGF0YSA9IHRoaXMuYWRkUm93SW5kZXgocm93KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2RlbGV0ZScsIHskZXZlbnQ6IGUsIHJvdzogcm93RGF0YSwgb3B0aW9uczogb3B0aW9uc30pO1xuICAgICAgICB9LFxuICAgICAgICBvbkZvcm1SZW5kZXI6ICgkcm93LCBlLCBvcGVyYXRpb24sIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0ID0gYWx3YXlzTmV3Um93ID8gJ2lubGluZUluc3RhbmNlTmV3JyA6ICdpbmxpbmVJbnN0YW5jZSc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXRzID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sW3dpZGdldF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldHNbY29sLmZpZWxkXSA9IGNvbFt3aWRnZXRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIGZvcm13aWRnZXRzIHRvIHRoZSBjb250ZXh0IGZvciBpbmxpbmVpbnN0YW5jZSB3aWRnZXQgd2hlbiBmaWVsZERlZnMgd2VyZSByZWFkeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbFt3aWRnZXRdLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xbd2lkZ2V0XS5jb250ZXh0LmZvcm1XaWRnZXRzID0gdGhpcy5mb3JtV2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRPbkZpZWxkKG9wZXJhdGlvbiwgY29sLCB3aWRnZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdmb3JtcmVuZGVyJywgeyRldmVudDogZSwgZm9ybVdpZGdldHM6IHRoaXMuZm9ybVdpZGdldHMsICRvcGVyYXRpb246IG9wZXJhdGlvbn0pO1xuICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25CZWZvcmVGb3JtUmVuZGVyOiAocm93LCBlLCBvcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWZvcm1yZW5kZXInLCB7JGV2ZW50OiBlLCByb3csICRvcGVyYXRpb246IG9wZXJhdGlvbn0pO1xuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlclJvd05nQ2xhc3NXYXRjaGVyOiAocm93RGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5yb3duZ2NsYXNzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICBjb25zdCB3YXRjaE5hbWUgPSBgJHt0aGlzLndpZGdldElkfV9yb3dOZ0NsYXNzXyR7aW5kZXh9YDtcbiAgICAgICAgICAgICR1bndhdGNoKHdhdGNoTmFtZSk7XG4gICAgICAgICAgICAvL1tUb2RvLUNTUF06IGdlbmVyYXRlIHdhdGNoZXIgZXhwciBpbiBwYWdlIGlmIHJvd25nY2xhc3MgYXR0ciBpcyBwcmVzZW50IGZvciB0YWJsZVxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigkd2F0Y2godGhpcy5yb3duZ2NsYXNzLCB0aGlzLnZpZXdQYXJlbnQsIHtyb3d9LCAobnYsIG92KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2FwcGx5Um93TmdDbGFzcycsIGdldENvbmRpdGlvbmFsQ2xhc3Nlcyhudiwgb3YpLCBpbmRleCk7XG4gICAgICAgICAgICB9LCB3YXRjaE5hbWUpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJDb2xOZ0NsYXNzV2F0Y2hlcjogKHJvd0RhdGEsIGNvbERlZiwgcm93SW5kZXgsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbERlZlsnY29sLW5nLWNsYXNzJ10pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLmdldENsb25lZFJvd09iamVjdChyb3dEYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoTmFtZSA9IGAke3RoaXMud2lkZ2V0SWR9X2NvbE5nQ2xhc3NfJHtyb3dJbmRleH1fJHtjb2xJbmRleH1gO1xuICAgICAgICAgICAgJHVud2F0Y2god2F0Y2hOYW1lKTtcbiAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZ2VuZXJhdGUgd2F0Y2hlciBleHByIGluIHBhZ2UgaWYgY29sLW5nLWNsYXNzIGF0dHIgaXMgcHJlc2VudCBmb3IgdGFibGVcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoJHdhdGNoKGNvbERlZlsnY29sLW5nLWNsYXNzJ10sIHRoaXMudmlld1BhcmVudCwge3Jvd30sIChudiwgb3YpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnYXBwbHlDb2xOZ0NsYXNzJywgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzKG52LCBvdiksIHJvd0luZGV4LCBjb2xJbmRleCk7XG4gICAgICAgICAgICB9LCB3YXRjaE5hbWUpKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJDdXN0b21FeHByZXNzaW9uOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJWaWV3UmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFRsID0ge307XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFN1bW1hcnlUbCA9IHt9O1xuICAgICAgICB9LFxuICAgICAgICBjbGVhclJvd0RldGFpbEV4cHJlc3Npb246ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5yb3dEZWZNYXAgPSB7fTtcbiAgICAgICAgICAgIHRoaXMucm93RGVmSW5zdGFuY2VzID0ge307XG4gICAgICAgIH0sXG4gICAgICAgIGdlbmVyYXRlQ3VzdG9tRXhwcmVzc2lvbnM6IChyb3dEYXRhLCBpbmRleCwgc3VtbWFyeVJvdz8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgY29uc3QgY29tcGlsZVRlbXBsYXRlID0gKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRtcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb2xEZWYgPSB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgIGNvbERlZlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudHNUb0NvbnRleHQoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRXhwclZpZXcgPSB0aGlzLmN1c3RvbUV4cHJWaWV3UmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0bXBsLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IGN1c3RvbUV4cHJWaWV3LnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSByb290Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sLWlkZW50aWZpZXInKTtcbiAgICAgICAgICAgICAgICBleHRlbmQoY29sRGVmLCB0aGlzLmNvbHVtbnNbZmllbGROYW1lXSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzdW1tYXJ5Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRXhwckNvbXBpbGVkVGxbZmllbGROYW1lICsgaW5kZXhdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FeHByQ29tcGlsZWRTdW1tYXJ5VGxbZmllbGROYW1lICsgaW5kZXhdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb21waWxlVGVtcGxhdGUoY29sLmN1c3RvbUV4cHJUbXBsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb3IgYWxsIHRoZSBjb2x1bW5zIGluc2lkZSB0aGUgdGFibGUsIGdlbmVyYXRlIHRoZSBjdXN0b20gZXhwcmVzc2lvblxuICAgICAgICAgICAgdGhpcy5jdXN0b21FeHByVG1wbC5mb3JFYWNoKGNvbXBpbGVUZW1wbGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2VuZXJhdGVSb3dFeHBhbnNpb25DZWxsOiAocm93RGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbnNpb25BY3Rpb25UbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuc2lvbkFjdGlvblRsW2luZGV4XSA9IHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwge3Jvd30pLnJvb3ROb2RlcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRSb3dFeHBhbnNpb25BY3Rpb246IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVGxbaW5kZXhdO1xuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZVJvd0RldGFpbFZpZXc6ICgkZXZlbnQsIHJvd0RhdGEsIHJvd0lkLCAkdGFyZ2V0LCAkb3ZlcmxheSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgY29uc3Qgcm93RGVmID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMucm93RGVmKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0luc3RhbmNlLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2V4cGFuZCcsIHskZXZlbnQsICRkYXRhOiByb3dEZWYsIHJvd30pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcm93RGVmLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeHBhbmQgdGhlIHJvdyBkZXRhaWxcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAvLyBSb3cgaXMgYWxyZWFkeSByZW5kZXJlZC4gUmV0dXJuIGhlcmVcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RlZk1hcFtyb3dJZF0gJiYgdGhpcy5yb3dEZWZNYXBbcm93SWRdLmNvbnRlbnQgPT09IHJvd0RlZi5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dJbnN0YW5jZS5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dleHBhbmQnLCB7JGV2ZW50LCByb3csICRkYXRhOiB0aGlzLnJvd0RlZkluc3RhbmNlc1tyb3dJZF19KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJvd0RlZk1hcFtyb3dJZF0gPSByb3dEZWY7XG4gICAgICAgICAgICAkdGFyZ2V0LmVtcHR5KCk7XG4gICAgICAgICAgICAkdGFyZ2V0LmhpZGUoKTtcbiAgICAgICAgICAgICRvdmVybGF5LnNob3coKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgICAgcm93RGVmLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2FkOiAod2lkZ2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3ZlcmxheS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dEZWZJbnN0YW5jZXNbcm93SWRdID0gd2lkZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93SW5zdGFuY2UuaW52b2tlRXZlbnRDYWxsYmFjaygncm93ZXhwYW5kJywgeyRldmVudCwgcm93LCAkZGF0YTogd2lkZ2V0fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgICAgICB9fTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy5yb3dEZXRhaWxWaWV3UmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnJvd0V4cGFuc2lvblRtcGwsIGNvbnRleHQpLnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICR0YXJnZXRbMF0uYXBwZW5kQ2hpbGQocm9vdE5vZGUpO1xuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvbkJlZm9yZVJvd0NvbGxhcHNlOiAoJGV2ZW50LCByb3csIHJvd0lkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3dJbnN0YW5jZS5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyb3djb2xsYXBzZScsIHskZXZlbnQsIHJvdywgJGRhdGE6IHRoaXMucm93RGVmSW5zdGFuY2VzW3Jvd0lkXX0pO1xuICAgICAgICB9LFxuICAgICAgICBvblJvd0NvbGxhcHNlOiAoJGV2ZW50LCByb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93SW5zdGFuY2UuaW52b2tlRXZlbnRDYWxsYmFjaygncm93Y29sbGFwc2UnLCB7JGV2ZW50LCByb3d9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q3VzdG9tRXhwcmVzc2lvbjogKGZpZWxkTmFtZSwgaW5kZXgsIHN1bW1hcnlSb3c/KSA9PiB7XG4gICAgICAgICAgICBsZXQgY3VzdG9tRXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlmICghc3VtbWFyeVJvdykge1xuICAgICAgICAgICAgICAgIGN1c3RvbUV4cHJlc3Npb24gPSB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFRsW2ZpZWxkTmFtZSArIGluZGV4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VzdG9tRXhwcmVzc2lvbiA9IHRoaXMuY3VzdG9tRXhwckNvbXBpbGVkU3VtbWFyeVRsW2ZpZWxkTmFtZSArIGluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXN0b21FeHByZXNzaW9uIHx8ICcnO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhclJvd0FjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93QWN0aW9uc1ZpZXdSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMucm93QWN0aW9uc0NvbXBpbGVkVGwgPSB7fTtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbnNpb25BY3Rpb25UbCA9IHt9O1xuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZVJvd0FjdGlvbnM6IChyb3dEYXRhLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICB0aGlzLnJvd0FjdGlvbnNDb21waWxlZFRsW2luZGV4XSA9IFtdO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5yb3dBY3Rpb25UbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0FjdGlvbnNDb21waWxlZFRsW2luZGV4XS5wdXNoKC4uLnRoaXMucm93QWN0aW9uc1ZpZXdSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRtcGwsIHtyb3d9KS5yb290Tm9kZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldFJvd0FjdGlvbjogKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3dBY3Rpb25zQ29tcGlsZWRUbFtpbmRleF07XG4gICAgICAgIH0sXG4gICAgICAgIGdlbmVyYXRlSW5saW5lRWRpdFJvdzogKHJvd0RhdGEsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICBpZiAoYWx3YXlzTmV3Um93KSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lRWRpdE5ld1ZpZXdSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlubGluZU5ld0NvbXBsaWVkVGwgPSB7fTtcbiAgICAgICAgICAgICAgICAvLyBGb3IgYWxsIHRoZSBjb2x1bW5zIGluc2lkZSB0aGUgdGFibGUsIGdlbmVyYXRlIHRoZSBpbmxpbmUgd2lkZ2V0XG4gICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVXaWRnZXROZXdUbXBsLmZvckVhY2godG1wbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDb250cm9sOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdmb3JtLmNvbnRyb2xzW2ZpZWxkTmFtZSArICdfbmV3J10gfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsaWRhdGlvbk1lc3NhZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0gJiYgdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0udmFsaWRhdGlvbm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGVuZGluZ1NwaW5uZXJTdGF0dXNOZXc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0gJiYgdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0uc2hvd1BlbmRpbmdTcGlubmVyTmV3O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMuaW5saW5lRWRpdE5ld1ZpZXdSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRtcGwsIGNvbnRleHQpLnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0gcm9vdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbC1pZGVudGlmaWVyJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lTmV3Q29tcGxpZWRUbFtmaWVsZE5hbWVdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckZvcm0odHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgdGhpcy5pbmxpbmVFZGl0Vmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5pbmxpbmVDb21wbGllZFRsID0ge307XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5pbmxpbmVXaWRnZXRUbXBsLmZvckVhY2godG1wbCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkTmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgIGdldENvbnRyb2w6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5nZm9ybS5jb250cm9sc1tmaWVsZE5hbWVdIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdICYmIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLnZhbGlkYXRpb25tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBnZXRQZW5kaW5nU3Bpbm5lclN0YXR1czogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdICYmIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLnNob3dQZW5kaW5nU3Bpbm5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy5pbmxpbmVFZGl0Vmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwgY29udGV4dCkucm9vdE5vZGVzWzBdO1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IHJvb3ROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2wtaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lQ29tcGxpZWRUbFtmaWVsZE5hbWVdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SW5saW5lRWRpdFdpZGdldDogKGZpZWxkTmFtZSwgdmFsdWUsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgaWYgKGFsd2F5c05ld1Jvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0RmllbGRWYWx1ZShmaWVsZE5hbWUgKyAnX25ldycsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVOZXdDb21wbGllZFRsW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldEZpZWxkVmFsdWUoZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVDb21wbGllZFRsW2ZpZWxkTmFtZV07XG4gICAgICAgIH0sXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IChmaWVsZE5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ2Zvcm0uY29udHJvbHMgJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbZmllbGROYW1lXTtcbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldEZpZWxkVmFsdWU6IGZpZWxkTmFtZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ2Zvcm0uY29udHJvbHMgJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbZmllbGROYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sICYmIGNvbnRyb2wudmFsdWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuY3Rpb24gdG8gYWRkIGxvYWQgbW9yZSBidXR0b24gdG8gdGFibGVcbiAgICAgICAgYWRkTG9hZE1vcmVCdG46ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnYWRkTG9hZE1vcmVCdG4nLCB0aGlzLm9uZGVtYW5kbWVzc2FnZSwgdGhpcy5sb2FkaW5nZGF0YW1zZywgKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc05leHRQYWdlRGF0YSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0SXNEYXRhVXBkYXRlZEJ5VXNlcihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5tb2RlID09PSAndmlld2xlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLm5hdmlnYXRlUGFnZSgnZmlyc3QnLCAkZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMubW9kZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3IubmF2aWdhdGVQYWdlKCduZXh0JywgJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHRoaXMuaW5mU2Nyb2xsKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZnVuY3Rpb24gdG8gYmluZCBzY3JvbGwgZXZlbnRcbiAgICAgICAgYmluZFNjcm9sbEV2dDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2dyaWREYXRhICYmIHRoaXMuX2dyaWREYXRhLmxlbmd0aCAmJiB0aGlzLmluZlNjcm9sbCkge1xuICAgICAgICAgICAgICAgIC8vIHNtb290aHNjcm9sbCBldmVudHMgd2lsbCBiZSBiaW5kZWQuXG4gICAgICAgICAgICAgICAgLy8gQWRkZWQgdGltZW91dCBhcyB0aGUgdGFibGUgaHRtbCBpcyByZW5kZXJlZCBhdCBydW50aW1lXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuYmluZFNjcm9sbEV2dCh0aGlzLCAndGJvZHknLCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZUZpbHRlclJvdzogKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3UmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnJvd0ZpbHRlckNvbXBsaWVkVGwgPSB7fTtcbiAgICAgICAgICAgIC8vIEZvciBhbGwgdGhlIGNvbHVtbnMgaW5zaWRlIHRoZSB0YWJsZSwgZ2VuZXJhdGUgdGhlIGNvbXBpbGVkIGZpbHRlciB0ZW1wbGF0ZVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJUbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMuZmlsdGVyVmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5vblJvd0ZpbHRlckNoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiAoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU1hdGNoTW9kZXMuaW5kZXhPZih0aGlzLnJvd0ZpbHRlcltmaWVsZE5hbWVdICYmIHRoaXMucm93RmlsdGVyW2ZpZWxkTmFtZV0ubWF0Y2hNb2RlKSA+IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkucm9vdE5vZGVzWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMucm93RmlsdGVyQ29tcGxpZWRUbFtyb290Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sLWlkZW50aWZpZXInKV0gPSByb290Tm9kZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRGaWx0ZXJXaWRnZXQ6IChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIC8vIE1vdmUgdGhlIGdlbmVyYXRlZCBmaWx0ZXIgdGVtcGxhdGUgdG8gdGhlIGZpbHRlciByb3dcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvd0ZpbHRlckNvbXBsaWVkVGxbZmllbGROYW1lXTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0R3JpZEVkaXRNb2RlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNHcmlkRWRpdE1vZGUgPSB2YWw7XG4gICAgICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEdyaWRTdGF0ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB2YWwgPT09ICdsb2FkaW5nJztcbiAgICAgICAgfSxcbiAgICAgICAgLypcbiAgICAgICAgICAgIHNldCBhY3Rpb25Sb3dJbmRleCBhbmQgYWN0aW9uUm93UGFnZSB2YWx1ZXNcbiAgICAgICAgICAgIGFjdGlvblJvd0luZGV4IHdpbGwgaGF2ZSB0aGUgcm93IGluZGV4IGluIHRoZSBkYXRhc2V0IG9uIHdoaWNoIGVkaXQvZGVsZXRlIG9wZXJhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWRcbiAgICAgICAgICAgIGFjdGlvblJvd1BhZ2Ugd2lsbCBoYXZlIHBhZ2UgbnVtYmVyIGluIHdoaWNoIHRoZSBhY3Rpb24gcm93IGluZGV4IGlzIHByZXNlbnRcbiAgICAgICAgICovXG4gICAgICAgIHNldEFjdGlvblJvd0luZGV4OiAodmFsKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblJvd0luZGV4ID0gcGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdhY3Rpb25Sb3dJbmRleCcsIHRoaXMuYWN0aW9uUm93SW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4odGhpcy5hY3Rpb25Sb3dJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Sb3dQYWdlID0gTWF0aC5mbG9vcih0aGlzLmFjdGlvblJvd0luZGV4IC8gdGhpcy5wYWdlc2l6ZSkgKyAxO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdhY3Rpb25Sb3dQYWdlJywgdGhpcy5hY3Rpb25Sb3dQYWdlIHx8IHRoaXMuZ3JpZE9wdGlvbnMuYWN0aW9uUm93UGFnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbGVhckFjdGlvblJvd0luZGV4OiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNSb3dEZWxldGVkICYmICh0aGlzLmluZlNjcm9sbCB8fCB0aGlzLm9uRGVtYW5kTG9hZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQWN0aW9uUm93VmFycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBub0NoYW5nZXNEZXRlY3RlZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVNZXNzYWdlKHRydWUsICdpbmZvJywgJ05vIENoYW5nZXMgRGV0ZWN0ZWQnLCAnJyk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHJlZHJhdyB0aGUgd2lkZ2V0cyBvbiByZXNpemUgb2YgY29sdW1uc1xuICAgICAgICByZWRyYXdXaWRnZXRzOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmcy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlckZuKGNvbC5pbmxpbmVJbnN0YW5jZSAmJiBjb2wuaW5saW5lSW5zdGFuY2UucmVkcmF3KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmlubGluZUluc3RhbmNlTmV3ICYmIGNvbC5pbmxpbmVJbnN0YW5jZU5ldy5yZWRyYXcpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wuZmlsdGVySW5zdGFuY2UgJiYgY29sLmZpbHRlckluc3RhbmNlLnJlZHJhdyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoSGFuZGxlcjogdGhpcy5zZWFyY2hTb3J0SGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgICBzb3J0SGFuZGxlcjogdGhpcy5zZWFyY2hTb3J0SGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgICB0aW1lb3V0Q2FsbDogKGZuLCBkZWxheSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChmbiwgZGVsYXkpO1xuICAgICAgICB9LFxuICAgICAgICBydW5Jbk5nWm9uZTogZm4gPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKGZuKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2FmZUFwcGx5OiAoKSA9PiB7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFRvdWNoZWQ6IChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5uZ2Zvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgIGN0cmwubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbGVhckZvcm06IHRoaXMuY2xlYXJGb3JtLmJpbmQodGhpcyksXG4gICAgICAgIGNhbGxMb2FkSW5saW5lV2lkZ2V0RGF0YTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoY29sLmlzRGF0YVNldEJvdW5kKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmxvYWRJbmxpbmVXaWRnZXREYXRhICYmIGNvbC5sb2FkSW5saW5lV2lkZ2V0RGF0YS5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBGdW5jdGlvbiB0byBhcHBseSB2YWxpZGF0b3JzIHRvIElubGluZSBmb3JtIGNvbnRyb2xzXG4gICAgICAgIGFwcGx5VmFsaWRhdGlvbnM6IChjb2wsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgaWYgKGFsd2F5c05ld1Jvdykge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wuYXBwbHlOZXdSb3dWYWxpZGF0aW9ucyAmJiBjb2wuYXBwbHlOZXdSb3dWYWxpZGF0aW9ucy5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmFwcGx5VmFsaWRhdGlvbnMgJiYgY29sLmFwcGx5VmFsaWRhdGlvbnMuYmluZChjb2wpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gcmVtb3ZlIHZhbGlkYXRvcnMgYW5kIHNldCBmb3JtIHN0YXRlIHRvIHVudG91Y2hlZCBmb3IgaW5saW5lIGZvcm0gY29udHJvbFxuICAgICAgICByZW1vdmVWYWxpZGF0aW9uczogKGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbC5yZWFkb25seSAmJiBjb2wuYmluZGluZyAhPT0gJ3Jvd09wZXJhdGlvbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbHdheXNOZXdSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wucmVtb3ZlTmV3Um93VmFsaWRhdGlvbnMgJiYgY29sLnJlbW92ZU5ld1Jvd1ZhbGlkYXRpb25zLmJpbmQoY29sKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLnJlbW92ZVZhbGlkYXRpb25zICYmIGNvbC5yZW1vdmVWYWxpZGF0aW9ucy5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfZ3JpZERhdGE7XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtc0V4aXN0ID0gZmFsc2U7XG4gICAgc2V0IGdyaWREYXRhKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXNEYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQwMTJdOiBoaWRlIG5vIGRhdGFmb3VuZCBtc2cgd2hlbiB2YXJpYWJsZUluZmxpZ2h0IGlzIHRydWUgYW5kIGRhdGFzZXQgaXMgZW1wdHlcbiAgICAgICAgaWYgKHRoaXMudmFyaWFibGVJbmZsaWdodCAmJiBpc0VtcHR5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFyaWFibGVJbmZsaWdodCA9IGZhbHNlO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQxMDhdOiBDaGFuZ2UgdGhlIHN0YXR1cyB0byByZWFkeSBvciBub2RhdGEgZm91bmQgd2hlbiB2YXJpYWJsZUluZmxpZ2h0IGlzIGZhbHNlKGFmdGVyIGdldHRpbmcgdGhlIGRhdGEpXG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiAobmV3VmFsdWUubGVuZ3RoKSA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdub2RhdGEnLCB0aGlzLm5vZGF0YW1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBfZ3JpZERhdGEgZmllbGQgd2l0aCB0aGUgbmV4dCBzZXQgb2YgaXRlbXMgYW5kIG1vZGlmeSB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICBbdGhpcy5fZ3JpZERhdGEsIHRoaXMuY3VycmVudFBhZ2VdID0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVGaWVsZHNPblBhZ2luYXRpb24odGhpcywgbmV3VmFsdWUpO1xuXG4gICAgICAgICAgICAvLyBXaGVuIGVkaXQgYWN0aW9uIGlzIHBlcmZvcm1lZCBvbiBwcmV2aW91cyBwYWdlLCB1cGRhdGUgdGhlIF9ncmlkRGF0YSBmaWVsZCB3aXRoIHRoZSBtb2RpZmllZCByb3cgZGF0YVxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCA9PT0gdGhpcy5ncmlkT3B0aW9ucy5BQ1RJT05TLkVESVQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJbmRleCA9IGZsb29yKHRoaXMuYWN0aW9uUm93SW5kZXggJSB0aGlzLnBhZ2VzaXplKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ncmlkRGF0YS5zcGxpY2UodGhpcy5hY3Rpb25Sb3dJbmRleCwgMSAsIG5ld1ZhbHVlW3Jvd0luZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdpc0xhc3RQYWdlJywgISEodGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQpKTtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2Ygb24gZGVtYW5kIHBhZ2luYXRpb24sIGNyZWF0ZSB0aGUgbG9hZCBtb3JlIGJ1dHRvbiBvbmx5IG9uY2UgYW5kIHNob3cgdGhlIGJ1dHRvbiB1bnRpbCBuZXh0IHBhZ2UgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgICBpZiAoIXRoaXMuJGVsZW1lbnQuZmluZCgnLm9uLWRlbWFuZC1kYXRhZ3JpZCcpLmxlbmd0aCAmJiAhdGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQgJiYgdGhpcy5vbkRlbWFuZExvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFkZExvYWRNb3JlQnRuKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLl9ncmlkRGF0YSAmJiB0aGlzLl9ncmlkRGF0YS5sZW5ndGgpICYmICh0aGlzLmRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCB8fCAhdGhpcy5pc0RhdGFMb2FkaW5nKSkge1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIG5leHQgcGFnZSBpcyBkaXNhYmxlZCBvciB3aGVuIHRoZSBkYXRhIGlzIG5vdCBsb2FkaW5nIHJlbW92ZSB0aGUgbG9hZGluZy9sb2FkIG1vcmUgYnV0dG9uIGFjY29yZGluZ2x5XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2hpZGVMb2FkaW5nSW5kaWNhdG9yJywgdGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQsIHRoaXMuaW5mU2Nyb2xsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2dyaWREYXRhID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YXJ0Um93SW5kZXggPSAwO1xuICAgICAgICBsZXQgZ3JpZE9wdGlvbnM7XG5cbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fZ3JpZERhdGEpO1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoaXNEZWZpbmVkKG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5iaW5kU2Nyb2xsRXZ0KCk7XG5cbiAgICAgICAgICAgIC8qU2V0dGluZyB0aGUgc2VyaWFsIG5vJ3Mgb25seSB3aGVuIHNob3cgbmF2aWdhdGlvbiBpcyBlbmFibGVkIGFuZCBkYXRhIG5hdmlnYXRvciBpcyBjb21waWxlZFxuICAgICAgICAgICAgIGFuZCBpdHMgY3VycmVudCBwYWdlIGlzIHNldCBwcm9wZXJseSovXG4gICAgICAgICAgICBpZiAodGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgdGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRSb3dJbmRleCA9ICgodGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiAodGhpcy5kYXRhTmF2aWdhdG9yLm1heFJlc3VsdHMgfHwgMSkpICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzdGFydFJvd0luZGV4Jywgc3RhcnRSb3dJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBJZiBjb2xEZWZzIGFyZSBhdmFpbGFibGUsIGJ1dCBub3QgYWxyZWFkeSBzZXQgb24gdGhlIGRhdGFncmlkLCB0aGVuIHNldCB0aGVtLlxuICAgICAgICAgICAgICogVGhpcyB3aWxsIGhhcHBlbiB3aGlsZSBzd2l0Y2hpbmcgZnJvbSBtYXJrdXAgdG8gZGVzaWduIHRhYi4gKi9cbiAgICAgICAgICAgIGdyaWRPcHRpb25zID0gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2dldE9wdGlvbnMnKTtcblxuICAgICAgICAgICAgaWYgKCFncmlkT3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5jb2xEZWZzLmxlbmd0aCAmJiB0aGlzLmZpZWxkRGVmcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdjb2xEZWZzJywgZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZmllbGREZWZzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBkYXRhIGFuZCBjb2xEZWZzIGFyZSBwcmVzZW50LCBjYWxsIG9uIGJlZm9yZSBkYXRhIHJlbmRlciBldmVudFxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzZHluYW1pY3RhYmxlICYmICFpc0VtcHR5KG5ld1ZhbHVlKSAmJiBncmlkT3B0aW9ucy5jb2xEZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3JlZGF0YXJlbmRlcicsIHskZGF0YTogdGhpcy5fZ3JpZERhdGEsICRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsIGRhdGE6IHRoaXMuX2dyaWREYXRhLCBjb2x1bW5zOiB0aGlzLmNvbHVtbnN9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2RhdGEnLCBnZXRDbG9uZWRPYmplY3QodGhpcy5fZ3JpZERhdGEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBncmlkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWREYXRhIHx8IFtdO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZGl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuaXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWRpdGVtKHZhbCkge1xuICAgICAgICAvLyBTZWxlY3QgdGhlIHJvd3MgaW4gdGhlIHRhYmxlIGJhc2VkIG9uIHRoZSBuZXcgc2VsZWN0ZWQgaXRlbXMgcGFzc2VkXG4gICAgICAgIHRoaXMuaXRlbXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NlbGVjdFJvd3MnLCB2YWwpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXByZXNzJywgWyckZXZlbnQnXSkgb25LZXlQcmVzcyAoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCRldmVudC53aGljaCA9PT0gMTMpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZW50ZXJrZXlwcmVzcycsIHskZXZlbnQsICRkYXRhOiB0aGlzLmdyaWREYXRhfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluajogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgc3RhdGVQZXJzaXN0ZW5jZTogU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICAgICAgcHJpdmF0ZSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnQ6IFZpZXdwb3J0LFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgcGFyZW50TGlzdDogTGlzdENvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGF0YXNldC5iaW5kJykgcHVibGljIGJpbmRkYXRhc2V0LFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc291cmNlLmJpbmQnKSBwdWJsaWMgYmluZGRhdGFzb3VyY2UsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3JlYWRvbmx5Z3JpZCcpIHB1YmxpYyByZWFkb25seWdyaWQsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdHJ1c3RBc1BpcGU6IFRydXN0QXNQaXBlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICB0aGlzLm5nZm9ybSA9IGZiLmdyb3VwKHt9KTtcbiAgICAgICAgdGhpcy5hZGRFdmVudHNUb0NvbnRleHQodGhpcy5jb250ZXh0KTtcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzVG9SZW1vdmUgPSBbXG4gICAgICAgICAgICAvLyBVcGRhdGVzIHBhZ2luYXRpb24sIGZpbHRlciwgc29ydCBldGMgb3B0aW9ucyBmb3Igc2VydmljZSBhbmQgY3J1ZCB2YXJpYWJsZXNcbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnY2hlY2stc3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucycsIG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlTmFtZSA9IGdldCh0aGlzLmRhdGFzb3VyY2UsICduYW1lJyk7XG4gICAgICAgICAgICAgICAgLy8gaW4gUHJlZmFicywgdGhpcy5kYXRhc291cmNlIGlzIG5vdCByZXNvbHZlZCBhdCB0aGUgdGltZSBvZiB2YXJpYWJsZSBpbnZvY2F0aW9uLCBzbyBhZGRpdGlvbmFsIGNoZWNrIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgIGlmICghZGF0YVNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU5hbWUgPSBleHRyYWN0RGF0YVNvdXJjZU5hbWUodGhpcy5iaW5kZGF0YXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChnZXQob3B0aW9ucywgJ3ZhcmlhYmxlLm5hbWUnKSAhPT0gZGF0YVNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFnZUxvYWQgJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkZ2V0U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKHdpZGdldFN0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzZWxlY3RGaXJzdFJvdycsIHRoaXMuZ3JpZGZpcnN0cm93c2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgc3RhdHVzIGJhc2VkIG9uIHRoZSB2YXJpYWJsZSBsaWZlIGN5Y2xlXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3RvZ2dsZS12YXJpYWJsZS1zdGF0ZScsIG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2UgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSAmJiBpc0RhdGFTb3VyY2VFcXVhbChvcHRpb25zLnZhcmlhYmxlLCB0aGlzLmRhdGFzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wYWdlTG9hZCAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWRnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKHdpZGdldFN0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VsZWN0Rmlyc3RSb3cnLCB0aGlzLmdyaWRmaXJzdHJvd3NlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXNEZWZpbmVkKHRoaXMudmFyaWFibGVJbmZsaWdodCkgPyB0aGlzLmRlYm91bmNlZEhhbmRsZUxvYWRpbmcob3B0aW9ucykgOiB0aGlzLmhhbmRsZUxvYWRpbmcob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnc2V0dXAtY3VkLWxpc3RlbmVyJywgcGFyYW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgIT09IHBhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faXNEZXBlbmRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlJFxuICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLnRyaWdnZXJXTUV2ZW50LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcblxuICAgICAgICBsaXN0ZW5lcnNUb1JlbW92ZS5mb3JFYWNoKCBsID0+IHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIobCkgKTtcblxuICAgICAgICB0aGlzLmRlbGV0ZW9rdGV4dCA9IHRoaXMuYXBwTG9jYWxlLkxBQkVMX09LO1xuICAgICAgICB0aGlzLmRlbGV0ZWNhbmNlbHRleHQgPSB0aGlzLmFwcExvY2FsZS5MQUJFTF9DQU5DRUw7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0aGlzLmhlYWRlckNvbmZpZy5maWx0ZXIodGhpcy5maWx0ZXJFbXB0eVZhbHVlcy5iaW5kKHRoaXMpKTtcbiAgICAgICAgcmVtb3ZlKHRoaXMuZmllbGREZWZzLCBmID0+IGYgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJ1bk1vZGVJbml0aWFsUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIHNob3dyb3dpbmRleDogJ3Nob3dSb3dJbmRleCcsXG4gICAgICAgICAgICBtdWx0aXNlbGVjdDogJ211bHRpc2VsZWN0JyxcbiAgICAgICAgICAgIHJhZGlvc2VsZWN0OiAnc2hvd1JhZGlvQ29sdW1uJyxcbiAgICAgICAgICAgIGZpbHRlcm51bGxyZWNvcmRzOiAnZmlsdGVyTnVsbFJlY29yZHMnLFxuICAgICAgICAgICAgZW5hYmxlc29ydDogJ2VuYWJsZVNvcnQnLFxuICAgICAgICAgICAgc2hvd2hlYWRlcjogJ3Nob3dIZWFkZXInLFxuICAgICAgICAgICAgZW5hYmxlY29sdW1uc2VsZWN0aW9uOiAnZW5hYmxlQ29sdW1uU2VsZWN0aW9uJyxcbiAgICAgICAgICAgIHNob3duZXdyb3c6ICdzaG93TmV3Um93JyxcbiAgICAgICAgICAgIGdyaWRmaXJzdHJvd3NlbGVjdDogJ3NlbGVjdEZpcnN0Um93J1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLl9saXZlVGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXJ0T2ZMaXZlR3JpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWFkb25seWdyaWQgfHwgIXRoaXMuZWRpdG1vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRvbmx5Z3JpZCA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0bW9kZSA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcnRPZkxpdmVHcmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG1vZGUgPSB0aGlzLmlzUGFydE9mTGl2ZUdyaWQuZm9ybWxheW91dCA9PT0gJ2lubGluZScgPyBFRElUX01PREUuRk9STSA6IEVESVRfTU9ERS5ESUFMT0c7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0bW9kZSA9IHRoaXMucmVhZG9ubHlncmlkID8gRURJVF9NT0RFLklOTElORSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sRGVmcyA9IHRoaXMuZnVsbEZpZWxkRGVmcztcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dBY3Rpb25zID0gdGhpcy5yb3dBY3Rpb25zO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmhlYWRlckNvbmZpZyA9IHRoaXMuaGVhZGVyQ29uZmlnO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnJvd0NsYXNzID0gdGhpcy5yb3djbGFzcztcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5lZGl0bW9kZSA9IHRoaXMuZWRpdG1vZGU7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZm9ybVBvc2l0aW9uID0gdGhpcy5mb3JtcG9zaXRpb247XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZmlsdGVybW9kZSA9IHRoaXMuZmlsdGVybW9kZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5maWx0ZXJvbmtleXByZXNzID0gdGhpcy5maWx0ZXJvbmtleXByZXNzO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNlYXJjaExhYmVsID0gdGhpcy5zZWFyY2hsYWJlbDtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5pc01vYmlsZSA9IGlzTW9iaWxlKCk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZWN1cml0eVV0aWxzLnBpcGVUcmFuc2Zvcm0gPSB0aGlzLnRydXN0QXNQaXBlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm5hdmlnYXRpb24gPSB0aGlzLm5hdmlnYXRpb247XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuaXNkeW5hbWljdGFibGUgPSB0aGlzLmlzZHluYW1pY3RhYmxlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNob3d2aWV3bGVzc2J1dHRvbiA9IHRoaXMuc2hvd3ZpZXdsZXNzYnV0dG9uO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm9uZGVtYW5kbWVzc2FnZSA9IHRoaXMub25kZW1hbmRtZXNzYWdlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnZpZXdsZXNzbWVzc2FnZSA9IHRoaXMudmlld2xlc3NtZXNzYWdlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmxvYWRpbmdkYXRhbXNnID0gdGhpcy5sb2FkaW5nZGF0YW1zZztcblxuICAgICAgICAvLyBXaGVuIGxvYWRvbmRlbWFuZCBwcm9wZXJ0eSBpcyBlbmFibGVkKGRlZmVybG9hZD1cInRydWVcIikgYW5kIHNob3cgaXMgdHJ1ZSwgb25seSB0aGUgY29sdW1uIHRpdGxlcyBvZiB0aGUgZGF0YXRhYmxlIGFyZSByZW5kZXJlZCwgdGhlIGRhdGEoYm9keSBvZiB0aGUgZGF0YXRhYmxlKSBpcyBub3QgYXQgYWxsIHJlbmRlcmVkLlxuICAgICAgICAvLyBCZWNhdXNlIHRoZSBncmlkZGF0YSBpcyBzZXR0aW5nIGJlZm9yZSB0aGUgZGF0YXRhYmxlIGRvbSBpcyByZW5kZXJlZCBidXQgd2UgYXJlIHNlbmRpbmcgZW1wdHkgZGF0YSB0byB0aGUgZGF0YXRhYmxlLlxuICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ncmlkRGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZGF0YSA9IGdldENsb25lZE9iamVjdCh0aGlzLmdyaWREYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm1lc3NhZ2VzID0ge1xuICAgICAgICAgICAgJ3NlbGVjdEZpZWxkJzogdGhpcy5hcHBMb2NhbGUuTUVTU0FHRV9TRUxFQ1RfRklFTERcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRhZ3JpZEVsZW1lbnQgPSAkKHRoaXMuX3RhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLmdyaWRFbGVtZW50ID0gdGhpcy4kZWxlbWVudDtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5jc3Moeydwb3NpdGlvbic6ICdyZWxhdGl2ZSd9KTtcblxuICAgICAgICBmb3JFYWNoKHJ1bk1vZGVJbml0aWFsUHJvcGVydGllcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodGhpc1trZXldKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnNbdmFsdWVdID0gKHRoaXNba2V5XSA9PT0gJ3RydWUnIHx8IHRoaXNba2V5XSA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZWhhbmRsZXIgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9uc1snc2VsZWN0Rmlyc3RSb3cnXSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXJPcGVyYXRpb25Db2x1bW5zKCk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sRGVmcyA9IHRoaXMuZmllbGREZWZzO1xuXG4gICAgICAgIHRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSh0aGlzLmdyaWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdsb2FkaW5nJywgdGhpcy5sb2FkaW5nZGF0YW1zZyk7XG4gICAgICAgIC8vIGlmKHRoaXMuZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGggfHwgdGhpcy52YXJpYWJsZUluZmxpZ2h0KSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ2xvYWRpbmcnLCB0aGlzLmxvYWRpbmdkYXRhbXNnKTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIHRoaXMuYXBwbHlQcm9wcy5mb3JFYWNoKGFyZ3MgPT4gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoLi4uYXJncykpO1xuXG4gICAgICAgIGlmICh0aGlzLmVkaXRtb2RlID09PSBFRElUX01PREUuUVVJQ0tfRURJVCkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrQmluZCA9IHRoaXMuX2RvY3VtZW50Q2xpY2tCaW5kLmJpbmQodGhpcyk7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0JpbmQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0Q29uZmlndXJlZFN0YXRlKCkge1xuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmNvbXB1dGVNb2RlKHRoaXMuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIG1vZGUgJiYgbW9kZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlU3RhdGVQYXJhbXMod2lkZ2V0U3RhdGUsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zRXhpc3QgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCB7fTtcbiAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3BhZ2luYXRpb24nKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLnBhZ2UgPSB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLm9yZGVyQnkgPSBnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmZpZWxkJykgKyAnICcgKyBnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmRpcmVjdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlYXJjaCcpKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9wdGlvbnMuZmlsdGVyRmllbGRzID0gdGhpcy5nZXRGaWx0ZXJGaWVsZHMod2lkZ2V0U3RhdGUuc2VhcmNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5wYWdlID0gMTtcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWFyY2gnKSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZUhhbmRsZXIod2lkZ2V0U3RhdGUpO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLmZpbHRlckZpZWxkcyA9IHRoaXMuZ2V0RmlsdGVyRmllbGRzKHdpZGdldFN0YXRlLnNlYXJjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc29ydCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0U3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9wdGlvbnMub3JkZXJCeSA9IGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQuZmllbGQnKSArICcgJyArIGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQuZGlyZWN0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmlnZ2VyV01FdmVudChuZXdWYWwpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG1vZGUgPT09ICdkaWFsb2cnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ3dtLWV2ZW50Jywge2V2ZW50TmFtZTogJ3NlbGVjdGVkSXRlbUNoYW5nZScsIHdpZGdldE5hbWU6IHRoaXMubmFtZSwgcm93OiBuZXdWYWwsIHRhYmxlOiB0aGlzfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKSB7XG4gICAgICAgIGNvbnN0ICRncmlkRWxlbWVudCA9IHRoaXMuZGF0YWdyaWRFbGVtZW50O1xuICAgICAgICBjb25zdCAkc29ydEljb24gPSAkZ3JpZEVsZW1lbnQuZmluZCgndGhbZGF0YS1jb2wtZmllbGQ9XCInICsgZ2V0KHdpZGdldFN0YXRlLCAnc29ydC5maWVsZCcpICsgJ1wiXSAuc29ydC1pY29uJyk7XG4gICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmRpcmVjdGlvbicpID09PSAnYXNjJyAmJiAkc29ydEljb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAkc29ydEljb24uYWRkQ2xhc3MoJ2FzYyB3aSB3aS1sb25nLWFycm93LXVwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc29ydC5kaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnICYmICRzb3J0SWNvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICRzb3J0SWNvbi5hZGRDbGFzcygnZGVzYyB3aSB3aS1sb25nLWFycm93LWRvd24nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoU3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKSB7XG4gICAgICAgIGlmIChpc0FycmF5KHdpZGdldFN0YXRlLnNlYXJjaCkpIHtcbiAgICAgICAgICAgIGZvckVhY2god2lkZ2V0U3RhdGUuc2VhcmNoLCAoZmlsdGVyT2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucm93RmlsdGVyW2ZpbHRlck9iai5maWVsZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dGaWx0ZXJbZmlsdGVyT2JqLmZpZWxkXS52YWx1ZSA9IGZpbHRlck9iai52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dGaWx0ZXJbZmlsdGVyT2JqLmZpZWxkXS5tYXRjaE1vZGUgPSBmaWx0ZXJPYmoubWF0Y2hNb2RlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0ZpbHRlcltmaWx0ZXJPYmouZmllbGRdLnR5cGUgPSBmaWx0ZXJPYmoudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcy5yb3dGaWx0ZXJDb21wbGllZFRsW2ZpbHRlck9iai5maWVsZF0pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyT2JqLnR5cGUgPT09ICdpbnRlZ2VyJyA/IHBhcnNlSW50KGZpbHRlck9iai52YWx1ZSkgOiBmaWx0ZXJPYmoudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMucm93RmlsdGVyQ29tcGxpZWRUbFtmaWx0ZXJPYmouZmllbGRdKS5maW5kKCdpbnB1dCcpLnZhbChmaWx0ZXJPYmoudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCAkZ3JpZEVsZW1lbnQgPSB0aGlzLmRhdGFncmlkRWxlbWVudDtcbiAgICAgICAgICAgICRncmlkRWxlbWVudC5maW5kKCdbZGF0YS1lbGVtZW50PVwiZGdTZWFyY2hUZXh0XCJdJykudmFsKHdpZGdldFN0YXRlLnNlYXJjaC52YWx1ZSk7XG4gICAgICAgICAgICAkZ3JpZEVsZW1lbnQuZmluZCgnW2RhdGEtZWxlbWVudD1cImRnRmlsdGVyVmFsdWVcIl0nKS52YWwod2lkZ2V0U3RhdGUuc2VhcmNoLmZpZWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlbW92ZXMgZW1wdHkgdmFsdWVzIGluIGhlYWRlckNvbmZpZyBhcnJheS5cbiAgICBmaWx0ZXJFbXB0eVZhbHVlcyhpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGl0ZW0uY29sdW1ucyA9IGl0ZW0uY29sdW1ucy5maWx0ZXIodGhpcy5maWx0ZXJFbXB0eVZhbHVlcy5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBDb21wYXJlcyB0aGUgcHJldkZpbHRlckNyaXRlcmlhIFJ1bGVzIHdpdGggdGhlIG5ldyBydWxlc1xuICAgIGNvbXBhcmVGaWx0ZXJFeHByZXNzaW9ucyhwcmV2RmlsdGVycywgbmV3RmlsdGVycykge1xuICAgICAgICByZXR1cm4gISEoKHByZXZGaWx0ZXJzLmxlbmd0aCA9PT0gbmV3RmlsdGVycy5sZW5ndGgpICYmIChpc0VxdWFsKHByZXZGaWx0ZXJzLCBuZXdGaWx0ZXJzKSkpO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFibGUgbGFzdEFjdGlvblBlcmZvcm1lZCB0byBGaWx0ZXIgQ3JpdGVyaWEgYW5kIG1haW50YWluIHRoZSBwcmV2RmlsdGVyRXhwcmVzc2lvblxuICAgIHNldExhc3RBY3Rpb25Ub0ZpbHRlckNyaXRlcmlhKCkge1xuICAgICAgICB0aGlzLnByZXZGaWx0ZXJFeHByZXNzaW9uID0gZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2ZpbHRlckV4cHJlc3Npb25zLnJ1bGVzJykgPyBnZXRDbG9uZWRPYmplY3QodGhpcy5kYXRhc291cmNlLmZpbHRlckV4cHJlc3Npb25zLnJ1bGVzKSA6IGdldENsb25lZE9iamVjdChbXS5jb25jYXQodGhpcy5kYXRhc291cmNlLmRhdGFCaW5kaW5nKSk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLmdyaWRPcHRpb25zLkFDVElPTlMuRklMVEVSX0NSSVRFUklBKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc1NlYXJjaFRyaWdlcnJlZCh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHRhYmxlIGxhc3RBY3Rpb25QZXJmb3JtZWQgdG8gRGF0YXNldCB1cGRhdGUgYW5kIHNldCBpc0RhdGFzZXRVcGRhdGVkIHRvIHRydWVcbiAgICAvLyBGaXggZm9yIFtXTVMtMjIzMjNdLXRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGRhdGFzZXQgaXMgYmVpbmcgdXBkYXRlZFxuICAgIHNldExhc3RBY3Rpb25Ub0RhdGFzZXRVcGRhdGUoKSB7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLmdyaWRPcHRpb25zLkFDVElPTlMuREFUQVNFVF9VUERBVEUpO1xuICAgICAgICAvLyAgRml4IGZvciBbV01TLTIzMjYzXTogcmVzZXQgY3VycmVudFBhZ2UgdG8gMSBhcyBkYXRhc2V0IGlzIGJlaW5nIGNoYW5nZWRcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRDdXJyZW50UGFnZSgxKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc0RhdGFzZXRVcGRhdGVkKHRydWUpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbGFzdEFjdGlvblBlcmZvcm1lZCB0byBGaWx0ZXJfQ3JpdGVyaWEsIHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIHRoZSBWYXJpYWJsZSBmaWx0ZXIgY3JpdGVyaWEgcnVsZXNcbiAgICBjaGVja0lmVmFyRmlsdGVyc0FwcGxpZWQoKSB7XG4gICAgICAgIGlmICghaXNFbXB0eShnZXQodGhpcy5kYXRhc291cmNlLCAnZmlsdGVyRXhwcmVzc2lvbnMucnVsZXMnKSkgfHwgIWlzRW1wdHkoZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2RhdGFCaW5kaW5nJykpKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyRXhwciA9IGdldCh0aGlzLmRhdGFzb3VyY2UsICdmaWx0ZXJFeHByZXNzaW9ucy5ydWxlcycpID8gdGhpcy5kYXRhc291cmNlLmZpbHRlckV4cHJlc3Npb25zLnJ1bGVzIDogW10uY29uY2F0KHRoaXMuZGF0YXNvdXJjZS5kYXRhQmluZGluZyk7XG4gICAgICAgICAgICBjb25zdCBpc0VxdWFsID0gdGhpcy5jb21wYXJlRmlsdGVyRXhwcmVzc2lvbnModGhpcy5wcmV2RmlsdGVyRXhwcmVzc2lvbiwgY3VycmVudEZpbHRlckV4cHIpO1xuICAgICAgICAgICAgaWYgKCFpc0VxdWFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYXN0QWN0aW9uVG9GaWx0ZXJDcml0ZXJpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hWYXJpYWJsZURhdGFTZXQobmV3VmFsKSB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIC8vIENoZWNrIGZvciBWYXJpYWJsZSBmaWx0ZXJzIGlmIGFwcGxpZWRcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrSWZWYXJGaWx0ZXJzQXBwbGllZCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFN0YXRlIGhhbmRsaW5nIGZvciBzdGF0aWMgdmFyaWFibGVzXG4gICAgICAgIGlmIChnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiB0aGlzLl9wYWdlTG9hZCAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ3NlbGVjdEZpcnN0Um93JywgdGhpcy5ncmlkZmlyc3Ryb3dzZWxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlYXJjaCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZUhhbmRsZXIod2lkZ2V0U3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU29ydEhhbmRsZXIod2lkZ2V0U3RhdGUuc2VhcmNoLCB1bmRlZmluZWQsICdzZWFyY2gnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzb3J0JykpIHtcbiAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU29ydEhhbmRsZXIod2lkZ2V0U3RhdGUuc29ydCwgdW5kZWZpbmVkLCAnc29ydCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAncGFnaW5hdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLnBhZ2VDaGFuZ2VkKHtwYWdlOiB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9ufSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWZ0ZXIgdGhlIHNldHRpbmcgdGhlIHdhdGNoIG9uIG5hdmlnYXRvciwgZGF0YXNldCBpcyB0cmlnZ2VyZWQgd2l0aCB1bmRlZmluZWQuIEluIHRoaXMgY2FzZSwgcmV0dXJuIGhlcmUuXG4gICAgICAgIGlmICh0aGlzLmRhdGFOYXZpZ2F0b3JXYXRjaGVkICYmIGlzVW5kZWZpbmVkKG5ld1ZhbCkgJiYgdGhpcy5fX2Z1bGxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdmFyaWFibGUgaXMgaW4gbG9hZGluZyBzdGF0ZSwgc2hvdyBsb2FkaW5nIGljb25cbiAgICAgICAgaWYgKHRoaXMudmFyaWFibGVJbmZsaWdodCAmJiAhdGhpcy5pbmZTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbG9hZGluZycsIHRoaXMubG9hZGluZ2RhdGFtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gZ2V0VmFsaWRKU09OKG5ld1ZhbCk7XG5cbiAgICAgICAgLy8gQ29udmVydGluZyBuZXd2YWwgdG8gb2JqZWN0IGlmIGl0IGlzIGFuIE9iamVjdCB0aGF0IGNvbWVzIGFzIGEgc3RyaW5nIFwie1wiZGF0YVwiIDogMX1cIlxuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBuZXdWYWwgPSByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3J0RXhwID0gdGhpcy5nZXRTb3J0RXhwcigpO1xuICAgICAgICBjb25zdCBzb3J0RXhwQXJyID0gc29ydEV4cC5zcGxpdCgnICcpO1xuICAgICAgICBpZiAoc29ydEV4cCAmJiBzb3J0RXhwQXJyLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zb3J0SW5mbyA9IHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gOiBzb3J0RXhwQXJyWzFdLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAgc29ydEV4cEFyclswXVxuXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLypSZXR1cm4gaWYgZGF0YSBpcyBpbnZhbGlkLiovXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGFWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB2YWx1ZSBpcyBlbXB0eSBvciBpbiBzdHVkaW8gbW9kZSwgZG9udCBlbmFibGUgdGhlIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd25hdmlnYXRpb24gJiYgIXRoaXMuZGF0YU5hdmlnYXRvcldhdGNoZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVBhZ2VOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFBhZ2VOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0YXNldCBpcyB1bmRlZmluZWQgb3IgZW1wdHkgb3IgdGFibGUgaXMgYm91bmQgdG8gc3RhdGljIHZhcmlhYmxlIHRoZW4gc2V0IHZhcmlhYmxlSW5mbGlnaHQgdG8gZmFsc2UgaW5vcmRlciB0byB1cGRhdGUgdGhlIHN0YXR1c1xuICAgICAgICAgICAgaWYgKG5ld1ZhbCA9PT0gJycgfHwgbmV3VmFsID09PSB1bmRlZmluZWQgfHwgZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2NhdGVnb3J5JykgPT09ICd3bS5WYXJpYWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qZm9yIHJ1biBtb2RlLCBkaXNhYmxpbmcgdGhlIGxvYWRlciBhbmQgc2hvd2luZyBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaWYgZGF0YXNldCBpcyBub3QgdmFsaWQqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZhcmlhYmxlSW5mbGlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ25vZGF0YScsIHRoaXMubm9kYXRhbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzZWxlY3RGaXJzdFJvdycsIHRoaXMuZ3JpZGZpcnN0cm93c2VsZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgbmV3VmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRmlsdGVyc0FwcGxpZWQodGhpcy5nZXRTb3J0RXhwcigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKCFpc09iamVjdChuZXdWYWwpIHx8IG5ld1ZhbCA9PT0gJycgfHwgKG5ld1ZhbCAmJiBuZXdWYWwuZGF0YVZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YXJpYWJsZUluZmxpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdmFyaWFibGUgaGFzIGZpbmlzaGVkIGxvYWRpbmcgYW5kIHJlc3VsdFNldCBpcyBlbXB0eSwgZW5kZXIgZW1wdHkgZGF0YVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0R3JpZERhdGEoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVHcmlkRGF0YShuZXdWYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrQmluZCk7XG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGFkZFJvd0luZGV4KHJvdykge1xuICAgICAgICBjb25zdCByb3dEYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KHJvdyk7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gaW5kZXhPZih0aGlzLmdyaWRPcHRpb25zLmRhdGEsIHJvdyk7XG4gICAgICAgIGlmIChyb3dJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH1cbiAgICAgICAgcm93RGF0YS4kaW5kZXggPSByb3dJbmRleCArIDE7XG4gICAgICAgIHJvd0RhdGEuJGlzRmlyc3QgPSByb3dEYXRhLiRpbmRleCA9PT0gMTtcbiAgICAgICAgcm93RGF0YS4kaXNMYXN0ID0gdGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IHJvd0RhdGEuJGluZGV4O1xuICAgICAgICByZXR1cm4gcm93RGF0YTtcbiAgICB9XG5cbiAgICBhZGRFdmVudHNUb0NvbnRleHQoY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LmFkZE5ld1JvdyA9ICgpID0+IHRoaXMuYWRkTmV3Um93KCk7XG4gICAgICAgIGNvbnRleHQuZGVsZXRlUm93ID0gKCkgPT4gdGhpcy5kZWxldGVSb3coKTtcbiAgICAgICAgY29udGV4dC5lZGl0Um93ID0gKCkgPT4gdGhpcy5lZGl0Um93KCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZShvcGVyYXRpb24sIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFtEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUsIERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFLCBEYXRhU291cmNlLk9wZXJhdGlvbi5TVVBQT1JUU19TRVJWRVJfRklMVEVSXS5pbmNsdWRlcyhvcGVyYXRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZSA/IHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucykgOiB7fTtcbiAgICB9XG5cbiAgICBpc05hdmlnYXRpb25FbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93bmF2aWdhdGlvbiAmJiB0aGlzLmRhdGFOYXZpZ2F0b3IgJiYgdGhpcy5kYXRhTmF2aWdhdG9yV2F0Y2hlZDtcbiAgICB9XG5cbiAgICBnZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSkge1xuICAgICAgICBjb25zdCByb3cgPSBnZXRDbG9uZWRPYmplY3Qocm93RGF0YSk7XG4gICAgICAgIHJvdy5nZXRQcm9wZXJ0eSA9IGZpZWxkID0+IHtcbiAgICAgICAgICAgIHJldHVybiBnZXQocm93LCBmaWVsZCk7XG4gICAgICAgIH07XG4gICAgICAgIHJvdy4kaXNGaXJzdCA9IHJvdy4kaW5kZXggPT09IDE7XG4gICAgICAgIHJvdy4kaXNMYXN0ID0gdGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IHJvdy4kaW5kZXg7XG4gICAgICAgIGRlbGV0ZSByb3cuJCRpbmRleDtcbiAgICAgICAgZGVsZXRlIHJvdy4kJHBrO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGhhbmRsZUxvYWRpbmcoZGF0YSkge1xuICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgLy8gYmFzZWQgb24gdGhlIGFjdGl2ZSBzdGF0ZSBhbmQgcmVzcG9uc2UgdG9nZ2xpbmcgdGhlICdsb2FkaW5nIGRhdGEuLi4nIGFuZCAnbm8gZGF0YSBmb3VuZCcgbWVzc2FnZXMuXG4gICAgICAgIGlmIChkYXRhLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdsb2FkaW5nJywgdGhpcy5sb2FkaW5nZGF0YW1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBncmlkIGlzIGluIGVkaXQgbW9kZSBvciBncmlkIGhhcyBkYXRhLCBkb250IHNob3cgdGhlIG5vIGRhdGEgbWVzc2FnZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzR3JpZEVkaXRNb2RlICYmIGlzRW1wdHkodGhpcy5kYXRhc2V0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRPbkZpZWxkKG9wZXJhdGlvbiwgY29sRGVmLCB3aWRnZXRUeXBlKSB7XG4gICAgICAgIGlmIChvcGVyYXRpb24gIT09ICduZXcnICYmIGNvbERlZlsncHJpbWFyeS1rZXknXSAmJiBjb2xEZWYuZ2VuZXJhdG9yID09PSAnYXNzaWduZWQnICYmICFjb2xEZWZbJ3JlbGF0ZWQtZW50aXR5LW5hbWUnXSAmJiAhY29sRGVmLnBlcmlvZCkge1xuICAgICAgICAgICAgY29sRGVmW3dpZGdldFR5cGVdLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0Rm9ybUNvbnRyb2woY3RybCkge1xuICAgICAgICBjdHJsLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICBjdHJsLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfVxuXG4gICAgY2xlYXJGb3JtKG5ld1Jvdz8pIHtcbiAgICAgICAgY29uc3QgY3RybHMgPSB0aGlzLm5nZm9ybS5jb250cm9scztcbiAgICAgICAga2V5cyh0aGlzLm5nZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgbmV3IHJvdywgY2xlYXIgdGhlIGNvbnRyb2xzIGluIHRoZSBuZXcgcm93LiBFbHNlLCBjbGVhciB0aGUgY29udHJvbHMgaW4gZWRpdCByb3dcbiAgICAgICAgICAgIGlmICgha2V5LmVuZHNXaXRoKCdfZmlsdGVyJykgJiYgKChrZXkuZW5kc1dpdGgoJ19uZXcnKSAmJiBuZXdSb3cpIHx8ICgha2V5LmVuZHNXaXRoKCdfbmV3JykgJiYgIW5ld1JvdykpKSB7XG4gICAgICAgICAgICAgICAgY3RybHNba2V5XS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm1Db250cm9sKGN0cmxzW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RmllbGRCYXNlZE9uU2NyZWVuVHlwZShmaWVsZCkge1xuICAgICAgICBsZXQgc2hvd0ZpZWxkO1xuICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiB0aGlzLnZpZXdwb3J0LmlzTW9iaWxlVHlwZSkge1xuICAgICAgICAgICAgc2hvd0ZpZWxkID0gZmllbGQubW9iaWxlRGlzcGxheTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdwb3J0LmlzVGFibGV0VHlwZSkge1xuICAgICAgICAgICAgc2hvd0ZpZWxkID0gZmllbGQudGFibGV0RGlzcGxheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNob3dGaWVsZCA9IGZpZWxkLnBjRGlzcGxheTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hvd0ZpZWxkO1xuICAgIH1cblxuICAgIC8qIENoZWNrIHdoZXRoZXIgaXQgaXMgbm9uLWVtcHR5IHJvdy4gKi9cbiAgICBpc0VtcHR5UmVjb3JkKHJlY29yZCkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMocmVjb3JkKTtcbiAgICAgICAgbGV0IGRhdGEsXG4gICAgICAgICAgICBpc0Rpc3BsYXllZDtcblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5ldmVyeSgocHJvcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRhdGEgPSByZWNvcmRbcHJvcF07XG4gICAgICAgICAgICAvKiBJZiBmaWVsZERlZnMgYXJlIG1pc3NpbmcsIHNob3cgYWxsIGNvbHVtbnMgaW4gZGF0YS4gKi9cbiAgICAgICAgICAgIGlzRGlzcGxheWVkID0gKHRoaXMuZmllbGREZWZzLmxlbmd0aCAmJiBpc0RlZmluZWQodGhpcy5maWVsZERlZnNbaW5kZXhdKSAmJiB0aGlzLnNob3dGaWVsZEJhc2VkT25TY3JlZW5UeXBlKHRoaXMuZmllbGREZWZzW2luZGV4XSkpIHx8IHRydWU7XG4gICAgICAgICAgICAvKlZhbGlkYXRpbmcgb25seSB0aGUgZGlzcGxheWVkIGZpZWxkcyovXG4gICAgICAgICAgICBpZiAoaXNEaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiBGdW5jdGlvbiB0byByZW1vdmUgdGhlIGVtcHR5IGRhdGEuICovXG4gICAgcmVtb3ZlRW1wdHlSZWNvcmRzKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIGNvbnN0IGFsbFJlY29yZHMgPSBzZXJ2aWNlRGF0YTtcbiAgICAgICAgbGV0IGZpbHRlcmVkRGF0YSA9IFtdO1xuICAgICAgICBpZiAoYWxsUmVjb3JkcyAmJiBhbGxSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgLypDb21wYXJpbmcgYW5kIHB1c2hpbmcgdGhlIG5vbi1lbXB0eSBkYXRhIGNvbHVtbnMqL1xuICAgICAgICAgICAgZmlsdGVyZWREYXRhID0gYWxsUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkICYmICF0aGlzLmlzRW1wdHlSZWNvcmQocmVjb3JkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gICAgfVxuXG4gICAgc2V0R3JpZERhdGEoc2VydmVyRGF0YSkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5maWx0ZXJudWxscmVjb3JkcyA/ICB0aGlzLnJlbW92ZUVtcHR5UmVjb3JkcyhzZXJ2ZXJEYXRhKSA6IHNlcnZlckRhdGE7XG4gICAgICAgIC8vIGZpeCBmb3IgW1dNUy0yNDAxMl0gc2V0IHZhcmlhYmxlaW5mbGlnaHQgZmxhZyB0byBmYWxzZSBmb3Igc3RhdGljIHZhcmlhYmxlc1xuICAgICAgICAvLyBJZiB0aGUgdGFibGUgaXMgYm91bmQgdG8gc29tZSB3aWRnZXQgYW5kIG5vdCBib3VuZCB0byBhbnkgdmFyaWFibGUgKGV4OiBUYWJsZTEuc2VsZWN0ZWRJdGVtKSB0aGVuIHNldCB2YXJpYWJsZUluZmxpZ2h0IHRvIGZhbHNlXG4gICAgICAgIGlmIChnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gJ3dtLlZhcmlhYmxlJyB8fCBnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudmFyaWFibGVJbmZsaWdodCkge1xuICAgICAgICAgICAgaWYgKGRhdGEgJiYgKGRhdGEubGVuZ3RoKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIHNldERhdGFHcmlkT3B0aW9uKG9wdGlvbk5hbWUsIG5ld1ZhbCwgZm9yY2VTZXQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YWdyaWRFbGVtZW50IHx8ICF0aGlzLmRhdGFncmlkRWxlbWVudC5kYXRhdGFibGUgfHwgIXRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSgnaW5zdGFuY2UnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHt9O1xuICAgICAgICBpZiAoaXNEZWZpbmVkICYmICghaXNFcXVhbChuZXdWYWwsIHRoaXMuZ3JpZE9wdGlvbnNbb3B0aW9uTmFtZV0pIHx8IGZvcmNlU2V0KSkge1xuICAgICAgICAgICAgb3B0aW9uW29wdGlvbk5hbWVdID0gbmV3VmFsO1xuICAgICAgICAgICAgdGhpcy5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlKCdvcHRpb24nLCBvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9uc1tvcHRpb25OYW1lXSA9IG5ld1ZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxEYXRhR3JpZE1ldGhvZCguLi5hcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhZ3JpZEVsZW1lbnQgfHwgIXRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSgnaW5zdGFuY2UnKSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVByb3BzLnNldChhcmdzWzFdLCBhcmdzKTtcbiAgICAgICAgICAgIHJldHVybjsgLy8gSWYgZGF0YWdyaWQgaXMgbm90IGluaXRpbGlhemVkIG9yIGRlc3Ryb3llZCwgcmV0dXJuIGhlcmVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlLmFwcGx5KHRoaXMuZGF0YWdyaWRFbGVtZW50LCBhcmdzKTtcbiAgICB9XG5cbiAgICByZW5kZXJPcGVyYXRpb25Db2x1bW5zKCkge1xuICAgICAgICBsZXQgcm93QWN0aW9uQ29sLFxuICAgICAgICAgICAgaW5zZXJ0UG9zaXRpb247XG5cbiAgICAgICAgY29uc3Qgcm93T3BlcmF0aW9uc0NvbHVtbiA9IGdldFJvd09wZXJhdGlvbnNDb2x1bW4oKSxcbiAgICAgICAgICAgIGNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAnbmFtZSc6IHJvd09wZXJhdGlvbnNDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICAgICAgJ2ZpZWxkJzogcm93T3BlcmF0aW9uc0NvbHVtbi5maWVsZCxcbiAgICAgICAgICAgICAgICAnaXNQcmVkZWZpbmVkJzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgLy8gUmV0dXJuIGlmIG5vIGZpZWxkRGVmcyBhcmUgcHJlc2VudFxuICAgICAgICBpZiAoIXRoaXMuZmllbGREZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93QWN0aW9uQ29sID0gZmluZCh0aGlzLmZ1bGxGaWVsZERlZnMsIHsnZmllbGQnOiBST1dfT1BTX0ZJRUxELCB0eXBlOiAnY3VzdG9tJ30pOyAvLyBDaGVjayBpZiBjb2x1bW4gaXMgZmV0Y2hlZCBmcm9tIG1hcmt1cFxuICAgICAgICByZW1vdmUodGhpcy5maWVsZERlZnMsIHt0eXBlOiAnY3VzdG9tJywgZmllbGQ6IFJPV19PUFNfRklFTER9KTsgLy8gUmVtb3Zpbmcgb3BlcmF0aW9ucyBjb2x1bW5cbiAgICAgICAgcmVtb3ZlKHRoaXMuaGVhZGVyQ29uZmlnLCB7ZmllbGQ6IHJvd09wZXJhdGlvbnNDb2x1bW4uZmllbGR9KTtcblxuICAgICAgICAvKkFkZCB0aGUgY29sdW1uIGZvciByb3cgb3BlcmF0aW9ucyBvbmx5IGlmIGF0LWxlYXN0IG9uZSBvcGVyYXRpb24gaGFzIGJlZW4gZW5hYmxlZC4qL1xuICAgICAgICBpZiAodGhpcy5yb3dBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHJvd0FjdGlvbkNvbCkgeyAvLyBJZiBjb2x1bW4gaXMgcHJlc2VudCBpbiBtYXJrdXAsIHB1c2ggdGhlIGNvbHVtbiBvciBwdXNoIHRoZSBkZWZhdWx0IGNvbHVtblxuICAgICAgICAgICAgICAgIGluc2VydFBvc2l0aW9uID0gcm93QWN0aW9uQ29sLnJvd2FjdGlvbnNwb3NpdGlvbiA/IHRvTnVtYmVyKHJvd0FjdGlvbkNvbC5yb3dhY3Rpb25zcG9zaXRpb24pIDogdGhpcy5maWVsZERlZnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGREZWZzLnNwbGljZShpbnNlcnRQb3NpdGlvbiwgMCwgcm93QWN0aW9uQ29sKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0UG9zaXRpb24gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJDb25maWcudW5zaGlmdChjb25maWcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQ29uZmlnLnB1c2goY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGREZWZzLnB1c2gocm93T3BlcmF0aW9uc0NvbHVtbik7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJDb25maWcucHVzaChjb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2hlYWRlckNvbmZpZycsIHRoaXMuaGVhZGVyQ29uZmlnKTtcbiAgICB9XG5cbiAgICBlbmFibGVQYWdlTmF2aWdhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldCAmJiB0aGlzLmJpbmRkYXRhc2V0ICYmIHRoaXMuZGF0YU5hdmlnYXRvcikge1xuICAgICAgICAgICAgLypDaGVjayBmb3Igc2FuaXR5Ki9cbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvcldhdGNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0b3JSZXN1bHRXYXRjaCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgXCJyZXN1bHRcIiBwcm9wZXJ0eSBvZiB0aGUgXCJkYXRhTmF2aWdhdG9yXCIgc28gdGhhdCB0aGUgcGFnaW5hdGVkIGRhdGEgaXMgZGlzcGxheWVkIGluIHRoZSBsaXZlLWxpc3QuKi9cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2ggPSB0aGlzLmRhdGFOYXZpZ2F0b3IucmVzdWx0RW1pdHRlci5zdWJzY3JpYmUoKG5ld1ZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIENoZWNrIGZvciBzYW5pdHkuICovXG4gICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZChuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdhdGNoIHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBkYXRhc2V0IGFuZCBuZXcgdmFsdWUgYXJlIGVxdWFsLiBTbyB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlciBtYW51YWxseVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gY2FzZSwgaWYgZGF0YXNldCBpcyBkaXJlY3RseSB1cGRhdGVkLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbCh0aGlzLmRhdGFzZXQsIG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQobmV3VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gW10uY29uY2F0KG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gZXh0ZW5kKHt9LCBuZXdWYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gbmV3VmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXQuZGF0YXNldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICAgIC8qRGUtcmVnaXN0ZXIgdGhlIHdhdGNoIGlmIGl0IGlzIGV4aXN0cyAqL1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvck1heFJlc3VsdFdhdGNoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKlJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIFwibWF4UmVzdWx0c1wiIHByb3BlcnR5IG9mIHRoZSBcImRhdGFOYXZpZ2F0b3JcIiBzbyB0aGF0IHRoZSBcInBhZ2VTaXplXCIgaXMgZGlzcGxheWVkIGluIHRoZSBsaXZlLWxpc3QuKi9cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2ggPSB0aGlzLmRhdGFOYXZpZ2F0b3IubWF4UmVzdWx0c0VtaXR0ZXIuc3Vic2NyaWJlKChuZXdWYWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzaXplID0gbmV3VmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiBkYXRhc2V0IGlzIGEgcGFnZWFibGUgb2JqZWN0LCBkYXRhIGlzIHByZXNlbnQgaW5zaWRlIHRoZSBjb250ZW50IHByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLl9fZnVsbERhdGEgPSB0aGlzLmRhdGFzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQubWF4UmVzdWx0cyA9IHRoaXMucGFnZXNpemUgfHwgNTtcbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIG1heFJlc3VsdHM6IHRoaXMucGFnZXNpemUgfHwgNVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydHlCaW5kaW5nKCdkYXRhc2V0Jyk7XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iuc2V0QmluZERhdGFTZXQodGhpcy5iaW5kZGF0YXNldCwgdGhpcy52aWV3UGFyZW50LCB0aGlzLmRhdGFzb3VyY2UsIHRoaXMuZGF0YXNldCwgdGhpcy5iaW5kZGF0YXNvdXJjZSwgdW5kZWZpbmVkLCB0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFBhZ2VOYXZpZ2F0aW9uKCkge1xuICAgICAgICAvKkNoZWNrIGZvciBzYW5pdHkqL1xuICAgICAgICBpZiAodGhpcy5kYXRhTmF2aWdhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3IucmVzZXRQYWdlTmF2aWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNEYXRhVmFsaWQoKSB7XG4gICAgICAgIGxldCBlcnJvcjtcbiAgICAgICAgY29uc3QgZGF0YXNldCA9IHRoaXMuZGF0YXNldCB8fCB7fTtcblxuICAgICAgICAvKkluIGNhc2UgXCJkYXRhXCIgY29udGFpbnMgXCJlcnJvclwiICYgXCJlcnJvck1lc3NhZ2VcIiwgdGhlbiBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlIGluIHRoZSBncmlkLiovXG4gICAgICAgIGlmIChkYXRhc2V0LmVycm9yKSB7XG4gICAgICAgICAgICBlcnJvciA9IGRhdGFzZXQuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFzZXQuZGF0YSAmJiBkYXRhc2V0LmRhdGEuZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChkYXRhc2V0LmRhdGEuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBkYXRhc2V0LmRhdGEuZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5zZXRHcmlkRGF0YShbXSk7XG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIHRvIHBvcHVsYXRlIHRoZSBncmlkIHdpdGggZGF0YS5cbiAgICBwb3B1bGF0ZUdyaWREYXRhKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIGxldCBkYXRhO1xuICAgICAgICBzZXJ2aWNlRGF0YSA9IHRyYW5zZm9ybURhdGEoc2VydmljZURhdGEsIHRoaXMubmFtZSk7XG4gICAgICAgIC8vIEFwcGx5IGZpbHRlciBhbmQgc29ydCwgaWYgZGF0YSBpcyByZWZyZXNoZWQgdGhyb3VnaCBSZWZyZXNoIGRhdGEgbWV0aG9kXG4gICAgICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgdGhpcy5faXNDbGllbnRTZWFyY2gpIHtcbiAgICAgICAgICAgIGRhdGEgPSBnZXRDbG9uZWRPYmplY3Qoc2VydmljZURhdGEpO1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZ2V0U2VhcmNoUmVzdWx0KGRhdGEsIHRoaXMuZmlsdGVySW5mbyk7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRTb3J0UmVzdWx0KGRhdGEsIHRoaXMuc29ydEluZm8pO1xuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJEYXRhID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmVyRGF0YSA9IHNlcnZpY2VEYXRhO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGZpZWxkZGVmcyBhcmUgbm90IHByZXNlbnQsIGdlbmVyYXRlIGZpZWxkZGVmcyBmcm9tIGRhdGFcbiAgICAgICAgLy8gUmVtb3ZpbmcgZmllbGRkZWZzIGNoZWNrIGJlY2F1c2UgV2hlbiBsb2Fkb25kZW1hbmQgcHJvcGVydHkgaXMgZW5hYmxlZChkZWZlcmxvYWQ9XCJ0cnVlXCIpLCB0aGUgZGF0YXNldCBwcm9wZXJ0eWNoYW5nZWhhbmxkZXIgaXMgdHJpZ2dlcmVkIGZpcnN0IGJlZm9yZSB0aGUgZG9tIGlzIGdldHRpbmcgcmVuZGVyZWQuXG4gICAgICAgIC8vIFNvIGF0IHRoYXQgdGltZSBmaWVsZGRlZnMgbGVuZ3RoIGlzIHplcm8sIGR1ZSB0byB0aGlzIHRoZSBjb2x1bW5zIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5LlxuICAgICAgICBpZiAodGhpcy5pc2R5bmFtaWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVHcmlkQ29sdW1ucyh0aGlzLnNlcnZlckRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRHcmlkRGF0YSh0aGlzLnNlcnZlckRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScgJiYgdGhpcy5fc2VsZWN0ZWRJdGVtc0V4aXN0ICYmIHNlcnZpY2VEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBsZXQgY3VycmVudFBhZ2VJdGVtcztcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlSXRlbXMgPSB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0uZmlsdGVyKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwucGFnZSA9PT0gdGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIGlmIGFuIGl0ZW0gaXMgYWxyZWFkeSBzZWxlY3RlZCwgZG9uJ3QgdHJpZ2dlciBvblNlbGVjdCBldmVudCBmb3IgaXQgYWdhaW5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2VJdGVtcy5sZW5ndGggJiYgdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoICE9PSB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHJlYXNzaWduIHRoaXMuc2VsZWN0ZWRpdGVtIGlmIHNlbGVjdGVkIGl0ZW1zIGFscmVhZHkgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHRoaXMuc2VsZWN0ZWRpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2VJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0uaW5kZXgsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0gY3VycmVudFBhZ2VJdGVtcy5tYXAoZnVuY3Rpb24odmFsKSB7cmV0dXJuIHZhbC5pbmRleDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhbmQgY29tcGlsZSB0aGUgZm9ybSBmaWVsZHMgZnJvbSB0aGUgbWV0YWRhdGFcbiAgICBhc3luYyBnZW5lcmF0ZUR5bmFtaWNDb2x1bW5zKGNvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBbXTsgLy8gZW1wdHkgdGhlIGZvcm0gZmllbGRzXG4gICAgICAgIC8vIGVtcHR5IHRoZSBmaWx0ZXIgZmllbGQgdGVtcGxhdGUgcmVmcy5cbiAgICAgICAgKHRoaXMuZmlsdGVyVG1wbCBhcyBhbnkpLl9yZXN1bHRzID0gW107XG5cbiAgICAgICAgaWYgKGlzRW1wdHkoY29sdW1ucykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0bXBsID0gJyc7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgbGV0IGF0dHJzVG1wbCA9ICcnO1xuICAgICAgICAgICAgbGV0IGN1c3RvbVRtcGwgPSAnJztcbiAgICAgICAgICAgIGZvckVhY2goY29sLCAodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBjdXN0b20gZXhwcmVzc2lvbiBpcyBwcmVzZW50LCBrZWVwIGl0IGluc2lkZSB0YWJsZSBjb2x1bW4uIEVsc2UsIGtlZXAgYXMgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdjdXN0b21FeHByZXNzaW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tVG1wbCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzVG1wbCArPSBgICR7a2V5fT1cIiR7dmFsfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdG1wbCArPSBgPHdtLXRhYmxlLWNvbHVtbiAke2F0dHJzVG1wbH0gdGFibGVOYW1lPVwiJHt0aGlzLm5hbWV9JHsodGhpcyBhcyBhbnkpLiRhdHRycy5nZXQoJ3RhYmxlX3JlZmVyZW5jZScpfVwiPiR7Y3VzdG9tVG1wbH08L3dtLXRhYmxlLWNvbHVtbj5gO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5keW5hbWljVGFibGVSZWYuY2xlYXIoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljQ29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHQgPSBPYmplY3QuY3JlYXRlKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtVGFibGUnKV0gPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9PZkNvbHVtbnMgPSBjb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeVJlZiA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyLmdldENvbXBvbmVudEZhY3RvcnlSZWYoXG4gICAgICAgICAgICAnYXBwLXRhYmxlLWR5bmFtaWMtJyArIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICAgICB0bXBsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5vQ2FjaGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHJhbnNwaWxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5keW5hbWljVGFibGVSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnlSZWYsIDAsIHRoaXMuaW5qKTtcbiAgICAgICAgZXh0ZW5kUHJvdG8oY29tcG9uZW50Lmluc3RhbmNlLCB0aGlzLl9keW5hbWljQ29udGV4dCk7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLmR5bmFtaWMtdGFibGUtY29udGFpbmVyJylbMF0uYXBwZW5kQ2hpbGQoY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByZXBhcmVDb2xEZWZzKGRhdGEpIHtcbiAgICAgICAgbGV0IGRlZmF1bHRGaWVsZERlZnM7XG4gICAgICAgIGxldCBwcm9wZXJ0aWVzO1xuICAgICAgICBsZXQgY29sdW1uSW5kZXggPSAwO1xuICAgICAgICBsZXQgaGVhZGVySW5kZXggPSAwO1xuXG4gICAgICAgIHRoaXMuZmllbGREZWZzID0gW107XG4gICAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gW107XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHt9O1xuICAgICAgICAvKiBpZiBwcm9wZXJ0aWVzIG1hcCBpcyBleGlzdGVkIHRoZW4gZmV0Y2ggdGhlIGNvbHVtbiBjb25maWd1cmF0aW9uIGZvciBhbGwgbmVzdGVkIGxldmVscyB1c2luZyB1dGlsIGZ1bmN0aW9uICovXG4gICAgICAgIHByb3BlcnRpZXMgPSBkYXRhO1xuICAgICAgICAvKmNhbGwgdXRpbGl0eSBmdW5jdGlvbiB0byBwcmVwYXJlIGZpZWxkRGVmcyBmb3IgZ3JpZCBhZ2FpbnN0IGdpdmVuIGRhdGEgKEEgTUFYIE9GIDEwIENPTFVNTlMgT05MWSkqL1xuICAgICAgICBkZWZhdWx0RmllbGREZWZzID0gcHJlcGFyZUZpZWxkRGVmcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgICAvKmFwcGVuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMqL1xuICAgICAgICBmb3JFYWNoKGRlZmF1bHRGaWVsZERlZnMsIGNvbHVtbkRlZiA9PiB7XG4gICAgICAgICAgICBjb2x1bW5EZWYuYmluZGluZyA9IGNvbHVtbkRlZi5maWVsZDtcbiAgICAgICAgICAgIGNvbHVtbkRlZi5jYXB0aW9uID0gY29sdW1uRGVmLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgY29sdW1uRGVmLnBjRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYubW9iaWxlRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYudGFibGV0RGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYuc2VhcmNoYWJsZSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYuc2hvd2luZmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbHVtbkRlZi50eXBlICA9ICdzdHJpbmcnO1xuICAgICAgICAgICAgLy8gRml4IGZvciBbV01TLTE5NjY4XSBhbmQgW1dNUy0xOTY2OV0tIEFkZGluZyBpbmRleCBhbmQgaGVhZGVySW5kZXggZm9yIER5bmFtaWMgREIgY29sdW1ucy5cbiAgICAgICAgICAgIC8vIE5vdGU6IHdlIGRvbid0IGhhdmUgY29sdW1uIGdyb3VwcyBmb3IgRHluYW1pYyBEQlxuICAgICAgICAgICAgY29sdW1uRGVmLmluZGV4ID0gY29sdW1uSW5kZXg7XG4gICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5kZXggPSBoZWFkZXJJbmRleDtcbiAgICAgICAgICAgIGNvbHVtbkluZGV4Kys7XG4gICAgICAgICAgICBoZWFkZXJJbmRleCsrO1xuICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0RmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tjb2wuZmllbGRdID0gY29sO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWRhdGFyZW5kZXInLCB7JGRhdGE6IGRhdGEsICRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsIGRhdGE6IGRhdGEsIGNvbHVtbnM6IHRoaXMuY29sdW1uc30pO1xuXG4gICAgICAgIGRlZmF1bHRGaWVsZERlZnMgPSBbXTtcbiAgICAgICAgLy8gQXBwbHkgdGhlIGNoYW5nZXMgbWFkZSBieSB0aGUgdXNlclxuICAgICAgICBmb3JFYWNoKHRoaXMuY29sdW1ucywgdmFsID0+IHtcbiAgICAgICAgICAgIGRlZmF1bHRGaWVsZERlZnMucHVzaCh2YWwpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdlbmVyYXRlRHluYW1pY0NvbHVtbnMoZGVmYXVsdEZpZWxkRGVmcyk7XG4gICAgfVxuXG4gICAgY3JlYXRlR3JpZENvbHVtbnMoZGF0YSkge1xuICAgICAgICAvKiB0aGlzIGNhbGwgYmFjayBmdW5jdGlvbiByZWNlaXZlcyB0aGUgZGF0YSBmcm9tIHRoZSB2YXJpYWJsZSAqL1xuICAgICAgICAvKiBjaGVjayB3aGV0aGVyIGRhdGEgaXMgdmFsaWQgb3Igbm90ICovXG4gICAgICAgIGNvbnN0IGRhdGFWYWxpZCA9IGRhdGEgJiYgIWRhdGEuZXJyb3I7XG4gICAgICAgIC8qaWYgdGhlIGRhdGEgaXMgdHlwZSBqc29uIG9iamVjdCwgbWFrZSBpdCBhbiBhcnJheSBvZiB0aGUgb2JqZWN0Ki9cbiAgICAgICAgaWYgKGRhdGFWYWxpZCAmJiAhaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpZiB0aGUgZGF0YSBpcyBlbXB0eSwgc2hvdyBub2RhdGFtZXNzYWdlICovXG4gICAgICAgIGlmIChpc0VtcHR5KGRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEdyaWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXRhVmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKiBpZiBuZXcgY29sdW1ucyB0byBiZSByZW5kZXJlZCwgcHJlcGFyZSBkZWZhdWx0IGZpZWxkRGVmcyBmb3IgdGhlIGRhdGEgcHJvdmlkZWQqL1xuICAgICAgICB0aGlzLnByZXBhcmVDb2xEZWZzKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuc2VydmVyRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuc2V0R3JpZERhdGEodGhpcy5zZXJ2ZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRTb3J0RXhwcigpIHtcbiAgICAgICAgbGV0IHNvcnRFeHA7XG4gICAgICAgIGxldCBwYWdpbmdPcHRpb25zO1xuICAgICAgICBpZiAodGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFKSkge1xuICAgICAgICAgICAgcGFnaW5nT3B0aW9ucyA9IHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9QQUdJTkdfT1BUSU9OUyk7XG4gICAgICAgICAgICBzb3J0RXhwID0gaXNFbXB0eShwYWdpbmdPcHRpb25zKSA/ICcnIDogZ2V0T3JkZXJCeUV4cHIocGFnaW5nT3B0aW9ucy5zb3J0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc29ydEV4cCB8fCAnJztcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBsZXQgZW5hYmxlTmV3Um93O1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgLy8gRml4IGZvciBbV01TLTIzNjUzXSB3aGVuIHN0YXJ0VXBkYXRlIGlzIGZhbHNlIChyZXF1ZXN0IG9uIHBhZ2UgbG9hZCBwcm9wZXJ0eSBpcyB1bmNoZWNrZWQpLFxuICAgICAgICAgICAgICAgIC8vIHRoZW4gc2V0IHN0YXR1cyBtc2cgYXMgXCJObyBkYXRhIGZvdW5kXCJcbiAgICAgICAgICAgICAgICBpZiAobnYuc3RhcnRVcGRhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFyaWFibGVJbmZsaWdodCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ25vZGF0YScsIHRoaXMubm9kYXRhbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQodGhpcy5kYXRhc2V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpICYmIHRoaXMuZ3JpZE9wdGlvbnMuZ2V0Q3VycmVudFBhZ2UoKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldElzTmV4dFBhZ2VEYXRhKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzb3VyY2UgJiYgIXRoaXMuZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGlmIHRhYmxlIGlzIGluc2lkZSBsaXN0IHRoZW4gdGFibGUgZGF0YXNldCB3aWxsIGJlIHNldCBhcyBcIml0ZW0uWFhYXCIgYW5kIHRoZXJlIGlzIG5vIGRhdGFzb3VyY2UuXG4gICAgICAgICAgICAgICAgLy8gU28gZXh0cmFjdGluZyBkYXRhc291cmNlIGZyb20gdGhlIGRhdHNldCBib3VuZCBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudExpc3QgJiYgIXRoaXMuZGF0YXNvdXJjZSAmJiBzdGFydHNXaXRoKHRoaXMuYmluZGRhdGFzZXQsICdpdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlID0gZ2V0RGF0YXNvdXJjZUZyb21FeHByKHRoaXMud2lkZ2V0LiRhdHRycy5nZXQoJ2RhdGFzZXRib3VuZGV4cHInKSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5pc05leHRQYWdlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBmZXRjaGluZyBuZXh0IHBhZ2UgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc0RhdGFVcGRhdGVkQnlVc2VyKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZGF0YXNldCBpcyB1cGRhdGVkIGZyb20gc2NyaXB0XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldElzRGF0YVVwZGF0ZWRCeVVzZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExhc3RBY3Rpb25Ub0RhdGFzZXRVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0SXNOZXh0UGFnZURhdGEoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGZvciBTdGF0aWMgVmFyaWFibGVzIHdpdGggUmV0YWluIFN0YXRlIGVuYWJsZWQsIHByZXZlbnQgVGFibGUgZnJvbSByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjUyODRdOiBSZW5kZXIgdGFibGUgdGhhdCBpcyBpbnNpZGUgbGlzdCB3aWRnZXQgYW5kIGJvdW5kIHRvIHN0YXRpYyBWYXJpYWJsZVxuICAgICAgICAgICAgICAgIGlmICghKGdldCh0aGlzLmRhdGFzb3VyY2UsICdjYXRlZ29yeScpID09PSAnd20uVmFyaWFibGUnICYmIHRoaXMuX3BhZ2VMb2FkICYmIHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJykgfHwgKHRoaXMucGFyZW50TGlzdCAmJiBzdGFydHNXaXRoKHRoaXMuYmluZGRhdGFzZXQsICdpdGVtJykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQobnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcm1vZGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2ZpbHRlcm1vZGUnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWFyY2hsYWJlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VhcmNoTGFiZWwnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduYXZpZ2F0aW9uJzpcbiAgICAgICAgICAgICAgICBpZiAobnYgPT09ICdBZHZhbmNlZCcpIHsgLy8gU3VwcG9ydCBmb3Igb2xkZXIgcHJvamVjdHMgd2hlcmUgbmF2aWdhdGlvbiB0eXBlIHdhcyBhZHZhbmNlZCBpbnN0ZWFkIG9mIGNsYXNpY1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSAnQ2xhc3NpYyc7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSAnTm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93bmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMub25EZW1hbmRMb2FkID0gbnYgPT09IE5BVklHQVRJT05fVFlQRS5PTkRFTUFORCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmluZlNjcm9sbCA9IG52ID09PSBOQVZJR0FUSU9OX1RZUEUuU0NST0xMID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Q29udHJvbHMgPSBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyaWRmaXJzdHJvd3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VsZWN0Rmlyc3RSb3cnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmlkY2xhc3MnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdvcHRpb24nLCAnY3NzQ2xhc3NOYW1lcy5ncmlkJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm9kYXRhbWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ29wdGlvbicsICdkYXRhU3RhdGVzLm5vZGF0YScsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xvYWRpbmdkYXRhbXNnJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2RhdGFTdGF0ZXMubG9hZGluZycsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xvYWRpbmdpY29uJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2xvYWRpbmdpY29uJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3BhY2luZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ29wdGlvbicsICdzcGFjaW5nJywgbnYpO1xuICAgICAgICAgICAgICAgIGlmIChudiA9PT0gJ2NvbmRlbnNlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2l6ZSA9ICdzbWFsbCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2l6ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2V4cG9ydGZvcm1hdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBvcHVsYXRlIG9wdGlvbnMgZm9yIGV4cG9ydCBkcm9wIGRvd24gbWVudVxuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKHNwbGl0KG52LCAnLCcpLCB0eXBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0T3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBleHBvcnRJY29uTWFwcGluZ1t0eXBlXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3duZXdyb3cnOlxuICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBuZXcgcm93IGlmIHNob3duZXcgaXMgdHJ1ZSBvciBhZGROZXdSb3cgYnV0b24gaXMgcHJlc2VudFxuICAgICAgICAgICAgICAgIGVuYWJsZU5ld1JvdyA9IG52IHx8IHNvbWUodGhpcy5hY3Rpb25zLCBhY3QgPT4gaW5jbHVkZXMoYWN0LmFjdGlvbiwgJ2FkZE5ld1JvdygpJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdvcHRpb24nLCAnYWN0aW9uc0VuYWJsZWQubmV3JywgZW5hYmxlTmV3Um93KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhZ2VzaXplJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iub3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0czogbnZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQubWF4UmVzdWx0cyA9IG52O1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5tYXhSZXN1bHRzID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvbmRlbWFuZG1lc3NhZ2UnOlxuICAgICAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5vbi1kZW1hbmQtZGF0YWdyaWQgPiBhJykudGV4dChudik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMub25kZW1hbmRtZXNzYWdlID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2aWV3bGVzc21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMudmlld2xlc3NtZXNzYWdlID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzaG93Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdoaWRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGF0YVNvdXJjZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICB0cmlnZ2VyRm4oY29sLm9uRGF0YVNvdXJjZUNoYW5nZSAmJiBjb2wub25EYXRhU291cmNlQ2hhbmdlLmJpbmQoY29sKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBY3Rpb25Sb3dWYXJzKCkge1xuICAgICAgICB0aGlzLmFjdGlvblJvd0luZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvblJvd1BhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2FjdGlvblJvd0luZGV4JywgdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignYWN0aW9uUm93UGFnZScsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgb25TdHlsZUNoYW5nZShrZXksIG52LCBvdikge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnd2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRHcmlkRGltZW5zaW9ucycsICd3aWR0aCcsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldEdyaWREaW1lbnNpb25zJywgJ2hlaWdodCcsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm9uU3R5bGVDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQWN0aW9ucygpIHtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5oZWFkZXIgPSBbXTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5mb290ZXIgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh0aGlzLmFjdGlvbnMsIChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3Rpb24ucG9zaXRpb24sICdoZWFkZXInKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMuaGVhZGVyLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3Rpb24ucG9zaXRpb24sICdmb290ZXInKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMuZm9vdGVyLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZW5kZXIgdGhlIGZpbHRlciByb3cuXG4gICAgcmVuZGVyRHluYW1pY0ZpbHRlckNvbHVtbihmaWx0ZVRlbVJlZikge1xuICAgICAgICAvLyBGb3IgZHluYW1pYyB0YWJsZSBtYW51YWxseSBwdXNoaW5nIHRoZSBmaWx0ZXJ0ZW1wbGF0ZVJlZiBhcyB0ZW1wbGF0ZVJlZiB3aWxsIG5vdCBiZSBhdmFpbGFibGUgcHJpb3IuXG4gICAgICAgIGlmICh0aGlzLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAodGhpcy5maWx0ZXJUbXBsIGFzIGFueSkuX3Jlc3VsdHMucHVzaChmaWx0ZVRlbVJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3RlckNvbHVtbnModGFibGVDb2x1bW4sIGNvbEluZGV4KSB7XG4gICAgICAgIGlmIChpc01vYmlsZSgpICYmIHRoaXMudmlld3BvcnQuaXNNb2JpbGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIXRhYmxlQ29sdW1uLm1vYmlsZURpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3cG9ydC5pc1RhYmxldFR5cGUpIHtcbiAgICAgICAgICAgIGlmICghdGFibGVDb2x1bW4udGFibGV0RGlzcGxheSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGFibGVDb2x1bW4ucGNEaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZUNvbHVtblsncHJpbWFyeS1rZXknXSkge1xuICAgICAgICAgICAgdGhpcy5wcmltYXJ5S2V5LnB1c2godGFibGVDb2x1bW4uZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGREZWZzW2NvbEluZGV4XSA9IHRhYmxlQ29sdW1uO1xuICAgICAgICBjb25zdCBjb2xDb3VudCA9IHRoaXMuZmllbGREZWZzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLnB1c2godGFibGVDb2x1bW4pO1xuICAgICAgICB0aGlzLnJvd0ZpbHRlclt0YWJsZUNvbHVtbi5maWVsZF0gPSB7XG4gICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tjb2wuZmllbGRdID0gY29sO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gSWYgZHluYW1pYyBkYXRhdGFibGUgYW5kIGxhc3QgY29sdW1uLCBwYXNzIHRoZSBjb2x1bW5zIHRvIGpxdWVyeSBkYXRhdGFibGVcbiAgICAgICAgaWYgKHRoaXMuaXNkeW5hbWljdGFibGUgJiYgY29sQ291bnQgPT09IHRoaXMubm9PZkNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyT3BlcmF0aW9uQ29sdW1ucygpO1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignY29sRGVmcycsIHRoaXMuZmllbGREZWZzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyRm9ybUZpZWxkKG5hbWUsIGZvcm1GaWVsZCkge1xuICAgICAgICB0aGlzLmZvcm1maWVsZHNbbmFtZV0gPSBmb3JtRmllbGQ7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJBY3Rpb25zKHRhYmxlQWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKHRhYmxlQWN0aW9uKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUFjdGlvbnMoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlclJvdyh0YWJsZVJvdywgcm93SW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5yb3dEZWYgPSB0YWJsZVJvdztcbiAgICAgICAgdGhpcy5yb3dJbnN0YW5jZSA9IHJvd0luc3RhbmNlO1xuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2Nzc0NsYXNzTmFtZXMucm93RXhwYW5kSWNvbicsIHRoaXMucm93RGVmLmV4cGFuZGljb24pO1xuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2Nzc0NsYXNzTmFtZXMucm93Q29sbGFwc2VJY29uJywgdGhpcy5yb3dEZWYuY29sbGFwc2VpY29uKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dFeHBhbnNpb25FbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dEZWYgPSB0aGlzLnJvd0RlZjtcbiAgICB9XG5cbiAgICByZWdpc3RlclJvd0FjdGlvbnModGFibGVSb3dBY3Rpb24pIHtcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zLnB1c2godGFibGVSb3dBY3Rpb24pO1xuICAgIH1cblxuICAgIHNlbGVjdEl0ZW0oaXRlbSwgZGF0YSkge1xuICAgICAgICAvKiBzZXJ2ZXIgaXMgbm90IHVwZGF0aW5nIGltbWVkaWF0ZWx5LCBzbyBzZXQgdGhlIHNlcnZlciBkYXRhIHRvIHN1Y2Nlc3MgY2FsbGJhY2sgZGF0YSAqL1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJEYXRhID0gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPYmplY3QoaXRlbSkpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBvbWl0QnkoaXRlbSwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpICYmIGlzRW1wdHkodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NlbGVjdFJvdycsIGl0ZW0sIHRydWUpO1xuICAgIH1cbiAgICAvKiBkZXNlbGVjdCB0aGUgZ2l2ZW4gaXRlbSovXG4gICAgZGVzZWxlY3RJdGVtKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2Rlc2VsZWN0Um93JywgaXRlbSk7XG4gICAgfVxuXG4gICAgb25EYXRhTmF2aWdhdG9yRGF0YVNldENoYW5nZShudikge1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgdGhpcy5fX2Z1bGxEYXRhID0gbnY7XG4gICAgICAgIHRoaXMuY2hlY2tGaWx0ZXJzQXBwbGllZCh0aGlzLmdldFNvcnRFeHByKCkpO1xuICAgICAgICBpZiAodGhpcy5faXNDbGllbnRTZWFyY2gpIHtcbiAgICAgICAgICAgIGRhdGEgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5fX2Z1bGxEYXRhKTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhKSAmJiAhaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRTZWFyY2hSZXN1bHQoZGF0YSwgdGhpcy5maWx0ZXJJbmZvKTtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFNvcnRSZXN1bHQoZGF0YSwgdGhpcy5zb3J0SW5mbyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnY7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVzc2FnZShzaG93LCB0eXBlLCBtc2csIGhlYWRlcj8pIHtcbiAgICAgICAgaWYgKHNob3cgJiYgbXNnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnlBcHAobXNnLCB0eXBlLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0KCRpdGVtKSB7XG4gICAgICAgIGxldCBmaWx0ZXJGaWVsZHM7XG4gICAgICAgIGNvbnN0IHNvcnRPcHRpb25zID0gaXNFbXB0eSh0aGlzLnNvcnRJbmZvKSA/ICcnIDogdGhpcy5zb3J0SW5mby5maWVsZCArICcgJyArIHRoaXMuc29ydEluZm8uZGlyZWN0aW9uO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0ge307XG4gICAgICAgIGxldCBpc1ZhbGlkO1xuICAgICAgICBsZXQgcmVxdWVzdERhdGE7XG4gICAgICAgIHRoaXMuZmllbGREZWZzLmZvckVhY2goZmllbGREZWYgPT4ge1xuICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUgcm93IG9wZXJhdGlvbiBhY3Rpb25zIGNvbHVtbiB0byB0aGUgZXhwb3J0ZWQgZmlsZS5cbiAgICAgICAgICAgIGlmIChmaWVsZERlZi5maWVsZCA9PT0gUk9XX09QU19GSUVMRCB8fCAhZmllbGREZWYuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAnaGVhZGVyJzogZmllbGREZWYuZGlzcGxheU5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBJZiBjb2x1bW4gaGFzIGV4cG9ydGV4cHJlc3Npb24sIHRoZW4gc2VuZCBmb3JtIHRoZSBleHByZXNzaW9uIGFzIHJlcXVpcmVkIGJ5IGJhY2tlbmQuXG4gICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2VuZCB0aGUgZmllbGQgbmFtZS5cbiAgICAgICAgICAgIGlmIChmaWVsZERlZi5leHBvcnRleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgKDxhbnk+b3B0aW9uKS5leHByZXNzaW9uID0gZmllbGREZWYuZXhwb3J0ZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKDxhbnk+b3B0aW9uKS5maWVsZCA9IGZpZWxkRGVmLmZpZWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uc1tmaWVsZERlZi5maWVsZF0gPSBvcHRpb247XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXJGaWVsZHMgPSB0aGlzLmdldEZpbHRlckZpZWxkcyh0aGlzLmZpbHRlckluZm8pO1xuICAgICAgICByZXF1ZXN0RGF0YSA9IHtcbiAgICAgICAgICAgIG1hdGNoTW9kZSA6ICdhbnl3aGVyZWlnbm9yZWNhc2UnLFxuICAgICAgICAgICAgZmlsdGVyRmllbGRzIDogZmlsdGVyRmllbGRzLFxuICAgICAgICAgICAgb3JkZXJCeSA6IHNvcnRPcHRpb25zLFxuICAgICAgICAgICAgZXhwb3J0VHlwZSA6ICRpdGVtLmxhYmVsLFxuICAgICAgICAgICAgbG9naWNhbE9wIDogJ0FORCcsXG4gICAgICAgICAgICBleHBvcnRTaXplIDogdGhpcy5leHBvcnRkYXRhc2l6ZSxcbiAgICAgICAgICAgIGNvbHVtbnMgOiBjb2x1bW5zXG4gICAgICAgIH07XG4gICAgICAgIGlzVmFsaWQgPSB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWV4cG9ydCcsIHskZGF0YTogcmVxdWVzdERhdGF9KTtcbiAgICAgICAgaWYgKGlzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdERhdGEuZmllbGRzID0gdmFsdWVzKHJlcXVlc3REYXRhLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5ET1dOTE9BRCwge2RhdGE6IHJlcXVlc3REYXRhfSk7XG4gICAgfVxuXG4gICAgZXhwYW5kUm93KHJvd0lkKSB7XG4gICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdleHBhbmRSb3cnLCByb3dJZCk7XG4gICAgfVxuXG4gICAgY29sbGFwc2VSb3cocm93SWQpIHtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2NvbGxhcHNlUm93Jywgcm93SWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RvY3VtZW50Q2xpY2tCaW5kKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0ICR0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIC8vIElmIGNsaWNrIHRyaWdnZXJlZCBmcm9tIHNhbWUgZ3JpZCBvciBhIGRpYWxvZywgZG8gbm90IHNhdmUgdGhlIHJvd1xuICAgICAgICBpZiAodGhpcy4kZWxlbWVudFswXS5jb250YWlucygkdGFyZ2V0KSB8fCBldmVudC50YXJnZXQuZG9jdHlwZSB8fCBpc0lucHV0Qm9keVdyYXBwZXIoJCgkdGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2F2ZVJvdycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlZHJhdyhmb3JjZVJlbmRlcikge1xuICAgICAgICBpZiAoZm9yY2VSZW5kZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSh0aGlzLmdyaWRPcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRDb2xHcm91cFdpZHRocycpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdhZGRPclJlbW92ZVNjcm9sbCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnZva2VBY3Rpb25FdmVudCgkZXZlbnQsIGV4cHJlc3Npb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBmbiA9ICRwYXJzZUV2ZW50KGV4cHJlc3Npb24pO1xuICAgICAgICBmbih0aGlzLnZpZXdQYXJlbnQsIE9iamVjdC5hc3NpZ24odGhpcy5jb250ZXh0LCB7JGV2ZW50fSkpO1xuICAgIH1cblxuICAgIC8vIGNoYW5nZSBhbmQgYmx1ciBldmVudHMgYXJlIGFkZGVkIGZyb20gdGhlIHRlbXBsYXRlXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJpZ2dlclVwbG9hZEV2ZW50KCRldmVudCwgZXZlbnROYW1lLCBmaWVsZE5hbWUsIHJvdykge1xuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHskZXZlbnQsIHJvd307XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnY2hhbmdlJykge1xuICAgICAgICAgICAgcGFyYW1zLm5ld1ZhbCA9ICRldmVudC50YXJnZXQuZmlsZXM7XG4gICAgICAgICAgICBwYXJhbXMub2xkVmFsID0gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0uX29sZFVwbG9hZFZhbDtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLl9vbGRVcGxvYWRWYWwgPSBwYXJhbXMubmV3VmFsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRm9ybVdpZGdldCgpIHt9XG5cbiAgICAvLyBGb3JtIGNvbnRyb2wgYWNjZXNzb3IgbWV0aG9kcy4gVGhpcyB3aWxsIGJlIHVzZWQgZm9yIHRhYmxlIGluc2lkZSBmb3JtXG4gICAgd3JpdGVWYWx1ZSgpIHt9XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRldGFjaCgpO1xuICAgICAgICBpZiAoZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2NhdGVnb3J5JykgPT09ICd3bS5WYXJpYWJsZScgJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9wYWdlTG9hZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIiAqbmdJZj1cInRpdGxlIHx8IHN1YmhlYWRpbmcgfHwgaWNvbmNsYXNzIHx8IGV4cG9ydE9wdGlvbnMubGVuZ3RoIHx8IF9hY3Rpb25zLmhlYWRlci5sZW5ndGhcIj5cbiAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1sZWZ0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24ge3tpY29uY2xhc3N9fVwiICpuZ0lmPVwiaWNvbmNsYXNzXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cInN1YmhlYWRpbmdcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1hY3Rpb25zIGFwcC1kYXRhZ3JpZC1hY3Rpb25zXCIgKm5nSWY9XCJleHBvcnRPcHRpb25zLmxlbmd0aCB8fCBfYWN0aW9ucy5oZWFkZXIubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgX2FjdGlvbnMuaGVhZGVyOyBsZXQgaW5kZXggPSBpbmRleDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidG4ud2lkZ2V0VHlwZSA9PT0gJ2J1dHRvbicgPyBidXR0b25SZWYgOiBhbmNob3JSZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2J0bjpidG59XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJjcmVhdGVDdXN0b21JbmplY3RvcignYWN0aW9uc19oZWFkZXJfJyArIGluZGV4LCB7YnRuOmJ0bn0pXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgd21NZW51IGRyb3Bkb3duIGNhcHRpb24uYmluZD1cImFwcExvY2FsZS5MQUJFTF9FWFBPUlRcIiAqbmdJZj1cImV4cG9ydE9wdGlvbnMubGVuZ3RoXCIgIGF1dG9jbG9zZT1cImFsd2F5c1wiIGF0dHIubmFtZT1cInt7bmFtZX19LWV4cG9ydFwiXG4gICAgICAgICAgICAgICAgZGF0YXNldC5iaW5kPVwiZXhwb3J0T3B0aW9uc1wiIHNlbGVjdC5ldmVudD1cImV4cG9ydCgkaXRlbSlcIiBtZW51cG9zaXRpb249XCJkb3duLGxlZnRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9oMz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFwcC1kYXRhZ3JpZFwiICNkYXRhZ3JpZEVsZW1lbnQ+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXIgY2xlYXJmaXhcIiBbaGlkZGVuXT1cIiFfYWN0aW9ucy5mb290ZXIubGVuZ3RoICYmICghc2hvd25hdmlnYXRpb24gfHwgKG9uRGVtYW5kTG9hZCAmJiBkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQpIHx8IGRhdGFOYXZpZ2F0b3I/LmRhdGFTaXplIDw9IHBhZ2VzaXplKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZGF0YWdyaWQtcGFnaW5hdG9yXCIgW2hpZGRlbl09XCIoIWRhdGFOYXZpZ2F0b3I/LmRhdGFTaXplICYmICFkYXRhTmF2aWdhdG9yLmRhdGFzb3VyY2U/LnBhZ2luYXRpb24/Lm5leHQpIHx8ICFzaG93bmF2aWdhdGlvbiB8fCAob25EZW1hbmRMb2FkICYmIGRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCkgfHwgZGF0YU5hdmlnYXRvcj8uZGF0YVNpemUgPD0gcGFnZXNpemVcIj5cbiAgICAgICAgPG5hdiB3bVBhZ2luYXRpb24gc2hvdy5iaW5kPVwic2hvd25hdmlnYXRpb25cIiBuYXZpZ2F0aW9uYWxpZ24uYmluZD1cIm5hdmlnYXRpb25hbGlnblwiXG4gICAgICAgICAgICAgbmF2aWdhdGlvbnNpemUuYmluZD1cIm5hdmlnYXRpb25TaXplXCJcbiAgICAgICAgICAgICBuYXZpZ2F0aW9uLmJpbmQ9XCJuYXZDb250cm9sc1wiIHNob3dyZWNvcmRjb3VudC5iaW5kPVwic2hvd3JlY29yZGNvdW50XCIgbWF4c2l6ZS5iaW5kPVwibWF4c2l6ZVwiXG4gICAgICAgICAgICAgYm91bmRhcnlsaW5rcy5iaW5kPVwiYm91bmRhcnlsaW5rc1wiXG4gICAgICAgICAgICAgZm9yY2VlbGxpcHNlcy5iaW5kPVwiZm9yY2VlbGxpcHNlc1wiIGRpcmVjdGlvbmxpbmtzLmJpbmQ9XCJkaXJlY3Rpb25saW5rc1wiPjwvbmF2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZGF0YWdyaWQtYWN0aW9uc1wiICpuZ0lmPVwiX2FjdGlvbnMuZm9vdGVyLmxlbmd0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgX2FjdGlvbnMuZm9vdGVyOyBsZXQgaW5kZXggPSBpbmRleDtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0bi53aWRnZXRUeXBlID09PSAnYnV0dG9uJyA/IGJ1dHRvblJlZiA6IGFuY2hvclJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntidG46YnRufVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJjcmVhdGVDdXN0b21JbmplY3RvcignYWN0aW9uc19mb290ZXJfJyArIGluZGV4LCB7YnRuOmJ0bn0pXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uUmVmIGxldC1idG49XCJidG5cIj5cbiAgICA8YnV0dG9uIHdtQnV0dG9uIGNhcHRpb24uYmluZD1cImJ0bi5kaXNwbGF5TmFtZVwiIHNob3cuYmluZD1cImJ0bi5zaG93XCIgY2xhc3MuYmluZD1cImJ0bi5jbGFzc1wiICBpY29uY2xhc3MuYmluZD1cImJ0bi5pY29uY2xhc3NcIiAoY2xpY2spPVwiaW52b2tlQWN0aW9uRXZlbnQoJGV2ZW50LCBidG4uYWN0aW9uKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2J0bi1zbSc6IHNwYWNpbmcgPT09ICdjb25kZW5zZWQnLCAnZGlzYWJsZWQtbmV3JzogYnRuLmtleSA9PT0gJ2FkZE5ld1JvdycgJiYgKGlzR3JpZEVkaXRNb2RlIHx8IGlzTG9hZGluZyl9XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBzaG9ydGN1dGtleS5iaW5kPVwiYnRuLnNob3J0Y3V0a2V5XCIgdGFiaW5kZXguYmluZD1cImJ0bi50YWJpbmRleFwiIGhpbnQuYmluZD1cImJ0bi50aXRsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuLmRpc3BsYXlOYW1lXCIgZGlzYWJsZWQuYmluZD1cImJ0bi5kaXNhYmxlZFwiIGNvbmRpdGlvbmFsY2xhc3MuYmluZD1cImJ0bi5jb25kaXRpb25hbGNsYXNzXCIgY29uZGl0aW9uYWxzdHlsZS5iaW5kPVwiYnRuLmNvbmRpdGlvbmFsc3R5bGVcIj48L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYW5jaG9yUmVmIGxldC1idG49XCJidG5cIj5cbiAgICA8YSB3bUFuY2hvciBjYXB0aW9uLmJpbmQ9XCJidG4uZGlzcGxheU5hbWVcIiBzaG93LmJpbmQ9XCJidG4uc2hvd1wiIGNsYXNzLmJpbmQ9XCJidG4uY2xhc3NcIiAgaWNvbmNsYXNzLmJpbmQ9XCJidG4uaWNvbmNsYXNzXCIgKGNsaWNrKT1cImludm9rZUFjdGlvbkV2ZW50KCRldmVudCwgYnRuLmFjdGlvbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydidG4tc20nOiBzcGFjaW5nID09PSAnY29uZGVuc2VkJywgJ2Rpc2FibGVkLW5ldyc6IGJ0bi5rZXkgPT09ICdhZGROZXdSb3cnICYmIChpc0dyaWRFZGl0TW9kZSB8fCBpc0xvYWRpbmcpfVwiXG4gICAgICAgICAgICBzaG9ydGN1dGtleS5iaW5kPVwiYnRuLnNob3J0Y3V0a2V5XCIgdGFiaW5kZXguYmluZD1cImJ0bi50YWJpbmRleFwiIGhpbnQuYmluZD1cImJ0bi50aXRsZVwiXG4gICAgICAgICAgICBoeXBlcmxpbmsuYmluZD1cImJ0bi5oeXBlcmxpbmtcIiB0YXJnZXQuYmluZD1cImJ0bi50YXJnZXRcIiBjb25kaXRpb25hbGNsYXNzLmJpbmQ9XCJidG4uY29uZGl0aW9uYWxjbGFzc1wiIGNvbmRpdGlvbmFsc3R5bGUuYmluZD1cImJ0bi5jb25kaXRpb25hbHN0eWxlXCI+PC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBoaWRkZW4+XG4gICAgPG5nLWNvbnRhaW5lciAjbXVsdGlDb2x1bW5GaWx0ZXJWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjaW5saW5lRWRpdFZpZXc+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICNpbmxpbmVFZGl0TmV3Vmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgI3Jvd0FjdGlvbnNWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjcm93RXhwYW5zaW9uQWN0aW9uVmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgI2N1c3RvbUV4cHJWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY1RhYmxlPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjcm93RGV0YWlsVmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXRhYmxlLWNvbnRhaW5lclwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
|