@pepperi-addons/ngx-composite-lib 0.4.2-beta.99 → 0.5.0-ng16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/color-settings/color-settings.component.d.ts +1 -1
- package/core/common/directives/reset-configuration-field.directive.d.ts +1 -1
- package/data-view-builder/data-view-builder.component.d.ts +1 -1
- package/data-view-builder/data-view-builder.model.d.ts +1 -1
- package/data-view-builder/menu-data-view/menu-data-view.component.d.ts +1 -1
- package/esm2022/color-settings/color-settings.component.mjs +90 -0
- package/{esm2020 → esm2022}/color-settings/color-settings.module.mjs +13 -13
- package/esm2022/core/common/directives/reset-configuration-field.directive.mjs +154 -0
- package/{esm2020 → esm2022}/core/common/services/dimx.service.mjs +4 -4
- package/{esm2020 → esm2022}/core/common/services/utilities.service.mjs +4 -4
- package/esm2022/data-view-builder/data-view-builder.component.mjs +126 -0
- package/{esm2020 → esm2022}/data-view-builder/data-view-builder.module.mjs +27 -27
- package/{esm2020 → esm2022}/data-view-builder/data-view-builder.service.mjs +7 -7
- package/{esm2020 → esm2022}/data-view-builder/menu-data-view/menu-data-view.component.mjs +4 -4
- package/{esm2020 → esm2022}/file-status-panel/file-status-panel.component.mjs +4 -4
- package/esm2022/file-status-panel/file-status-panel.module.mjs +74 -0
- package/esm2022/flow-picker-button/flow-picker-button.component.mjs +94 -0
- package/{esm2020 → esm2022}/flow-picker-button/flow-picker-button.module.mjs +11 -11
- package/{esm2020 → esm2022}/flow-picker-button/flow-picker-button.service.mjs +4 -4
- package/esm2022/generic-fields-builder/field-container/field-container.component.mjs +18 -0
- package/esm2022/generic-fields-builder/generic-fields-builder.component.mjs +119 -0
- package/esm2022/generic-fields-builder/generic-fields-builder.module.mjs +82 -0
- package/esm2022/generic-fields-builder/generic-fields-builder.service.mjs +39 -0
- package/esm2022/generic-fields-builder/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +5 -0
- package/esm2022/generic-fields-builder/public-api.mjs +6 -0
- package/esm2022/generic-form/generic-form.component.mjs +194 -0
- package/{esm2020 → esm2022}/generic-form/generic-form.module.mjs +23 -23
- package/{esm2020 → esm2022}/generic-form/generic-form.service.mjs +4 -4
- package/esm2022/generic-list/generic-list.component.mjs +583 -0
- package/esm2022/generic-list/generic-list.module.mjs +114 -0
- package/esm2022/generic-list/generic-list.service.mjs +171 -0
- package/esm2022/group-buttons-settings/group-buttons-settings.component.mjs +157 -0
- package/{esm2020 → esm2022}/group-buttons-settings/group-buttons-settings.module.mjs +13 -13
- package/{esm2020 → esm2022}/icon-picker/icon-picker.component.mjs +4 -4
- package/{esm2020 → esm2022}/icon-picker/icon-picker.module.mjs +15 -15
- package/{esm2020 → esm2022}/icon-picker/icon-picker.service.mjs +4 -4
- package/{esm2020 → esm2022}/layout-builder/hide-in/hide-in.component.mjs +5 -5
- package/{esm2020 → esm2022}/layout-builder/hide-in/hide-in.module.mjs +31 -31
- package/esm2022/layout-builder/layout/layout.component.mjs +229 -0
- package/esm2022/layout-builder/layout/layout.module.mjs +56 -0
- package/{esm2020 → esm2022}/layout-builder/layout-builder-editor/layout-builder-editor.component.mjs +4 -4
- package/{esm2020 → esm2022}/layout-builder/layout-builder-editor/layout-builder-editor.module.mjs +14 -14
- package/esm2022/layout-builder/layout-builder-internal.service.mjs +628 -0
- package/esm2022/layout-builder/layout-builder.component.mjs +232 -0
- package/esm2022/layout-builder/layout-builder.model.mjs +2 -0
- package/{esm2020 → esm2022}/layout-builder/layout-builder.module.mjs +61 -61
- package/esm2022/layout-builder/layout-builder.service.mjs +49 -0
- package/esm2022/layout-builder/main-editor/main-editor.component.mjs +141 -0
- package/{esm2020 → esm2022}/layout-builder/main-editor/main-editor.module.mjs +40 -40
- package/esm2022/layout-builder/section/section.component.mjs +376 -0
- package/{esm2020 → esm2022}/layout-builder/section/section.module.mjs +16 -16
- package/esm2022/layout-builder/section-block/section-block.component.mjs +113 -0
- package/{esm2020 → esm2022}/layout-builder/section-block/section-block.module.mjs +11 -11
- package/esm2022/layout-builder/section-editor/section-editor.component.mjs +201 -0
- package/esm2022/layout-builder/section-editor/section-editor.module.mjs +48 -0
- package/esm2022/manage-parameters/manage-parameter/manage-parameter.component.mjs +86 -0
- package/esm2022/manage-parameters/manage-parameters.component.mjs +189 -0
- package/{esm2020 → esm2022}/manage-parameters/manage-parameters.model.mjs +1 -1
- package/{esm2020 → esm2022}/manage-parameters/manage-parameters.module.mjs +15 -15
- package/esm2022/manage-parameters/manage-parameters.service.mjs +149 -0
- package/esm2022/mapping-parameters/mapping-parameters.component.mjs +44 -0
- package/esm2022/mapping-parameters/mapping-parameters.model.mjs +6 -0
- package/esm2022/mapping-parameters/mapping-parameters.module.mjs +59 -0
- package/esm2022/mapping-parameters/mapping-parameters.service.mjs +37 -0
- package/esm2022/mapping-parameters/param-map/param-map.component.mjs +73 -0
- package/esm2022/mapping-parameters/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs +5 -0
- package/esm2022/mapping-parameters/public-api.mjs +4 -0
- package/{esm2020 → esm2022}/ngx-composite-lib.module.mjs +12 -12
- package/esm2022/padding-settings/padding-settings.component.mjs +90 -0
- package/{esm2020 → esm2022}/padding-settings/padding-settings.model.mjs +3 -3
- package/{esm2020 → esm2022}/padding-settings/padding-settings.module.mjs +17 -17
- package/esm2022/rich-text/rich-text.component.mjs +154 -0
- package/{esm2020 → esm2022}/rich-text/rich-text.module.mjs +15 -15
- package/{esm2020 → esm2022}/rich-text/rich-text.service.mjs +4 -4
- package/esm2022/shadow-settings/shadow-settings.component.mjs +72 -0
- package/{esm2020 → esm2022}/shadow-settings/shadow-settings.module.mjs +15 -15
- package/{esm2020 → esm2022}/show-if-badge/show-if-badge.component.mjs +5 -5
- package/{esm2020 → esm2022}/show-if-badge/show-if-badge.module.mjs +14 -14
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-color-settings.mjs +24 -24
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +53 -53
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +28 -28
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +28 -28
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +254 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-generic-form.mjs +37 -37
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-composite-lib-generic-list.mjs +866 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +26 -26
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-icon-picker.mjs +20 -20
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2439 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +91 -43
- package/fesm2022/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs +209 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-padding-settings.mjs +150 -0
- package/fesm2022/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-rich-text.mjs +28 -28
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +25 -25
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +100 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-composite-lib.mjs +40 -40
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
- package/file-status-panel/file-status-panel.component.d.ts +1 -1
- package/file-status-panel/file-status-panel.model.d.ts +1 -1
- package/flow-picker-button/flow-picker-button.component.d.ts +1 -1
- package/generic-fields-builder/field-container/field-container.component.d.ts +10 -0
- package/generic-fields-builder/generic-fields-builder.component.d.ts +46 -0
- package/generic-fields-builder/generic-fields-builder.module.d.ts +23 -0
- package/generic-fields-builder/generic-fields-builder.service.d.ts +14 -0
- package/generic-fields-builder/index.d.ts +5 -0
- package/generic-fields-builder/public-api.d.ts +2 -0
- package/generic-form/generic-form.component.d.ts +1 -1
- package/generic-list/generic-list.component.d.ts +25 -9
- package/generic-list/generic-list.module.d.ts +13 -11
- package/generic-list/generic-list.service.d.ts +3 -1
- package/group-buttons-settings/group-buttons-settings.component.d.ts +1 -1
- package/group-buttons-settings/group-buttons-settings.model.d.ts +1 -1
- package/icon-picker/icon-picker.component.d.ts +1 -1
- package/layout-builder/hide-in/hide-in.component.d.ts +1 -1
- package/layout-builder/hide-in/hide-in.component.theme.scss +1 -1
- package/layout-builder/layout/layout.component.d.ts +12 -8
- package/layout-builder/layout-builder-editor/layout-builder-editor.component.d.ts +1 -1
- package/layout-builder/layout-builder-internal.service.d.ts +5 -10
- package/layout-builder/layout-builder.component.d.ts +11 -4
- package/layout-builder/layout-builder.component.theme.scss +1 -1
- package/layout-builder/layout-builder.model.d.ts +3 -3
- package/layout-builder/layout-builder.service.d.ts +15 -6
- package/layout-builder/main-editor/main-editor.component.d.ts +7 -5
- package/layout-builder/section/section.component.d.ts +8 -1
- package/layout-builder/section-block/section-block.component.d.ts +1 -1
- package/layout-builder/section-editor/section-editor.component.d.ts +4 -1
- package/layout-builder/section-editor/section-editor.module.d.ts +3 -2
- package/manage-parameters/manage-parameter/manage-parameter.component.d.ts +3 -1
- package/manage-parameters/manage-parameters.component.d.ts +10 -3
- package/manage-parameters/manage-parameters.model.d.ts +4 -1
- package/manage-parameters/manage-parameters.service.d.ts +2 -2
- package/mapping-parameters/index.d.ts +5 -0
- package/mapping-parameters/mapping-parameters.component.d.ts +19 -0
- package/mapping-parameters/mapping-parameters.model.d.ts +8 -0
- package/mapping-parameters/mapping-parameters.module.d.ts +18 -0
- package/mapping-parameters/mapping-parameters.service.d.ts +12 -0
- package/mapping-parameters/param-map/param-map.component.d.ts +27 -0
- package/mapping-parameters/public-api.d.ts +3 -0
- package/package.json +80 -101
- package/padding-settings/padding-settings.component.d.ts +1 -1
- package/padding-settings/padding-settings.model.d.ts +2 -2
- package/rich-text/rich-text.component.d.ts +1 -1
- package/shadow-settings/shadow-settings.component.d.ts +1 -1
- package/shadow-settings/shadow-settings.model.d.ts +1 -1
- package/show-if-badge/show-if-badge.component.d.ts +1 -1
- package/src/assets/i18n/en.ngx-composite-lib.json +22 -2
- package/esm2020/color-settings/color-settings.component.mjs +0 -90
- package/esm2020/core/common/directives/reset-configuration-field.directive.mjs +0 -154
- package/esm2020/data-view-builder/data-view-builder.component.mjs +0 -126
- package/esm2020/file-status-panel/file-status-panel.module.mjs +0 -74
- package/esm2020/flow-picker-button/flow-picker-button.component.mjs +0 -94
- package/esm2020/generic-form/generic-form.component.mjs +0 -194
- package/esm2020/generic-list/generic-list.component.mjs +0 -530
- package/esm2020/generic-list/generic-list.module.mjs +0 -106
- package/esm2020/generic-list/generic-list.service.mjs +0 -146
- package/esm2020/group-buttons-settings/group-buttons-settings.component.mjs +0 -157
- package/esm2020/layout-builder/layout/layout.component.mjs +0 -204
- package/esm2020/layout-builder/layout/layout.module.mjs +0 -54
- package/esm2020/layout-builder/layout-builder-internal.service.mjs +0 -628
- package/esm2020/layout-builder/layout-builder.component.mjs +0 -201
- package/esm2020/layout-builder/layout-builder.model.mjs +0 -2
- package/esm2020/layout-builder/layout-builder.service.mjs +0 -36
- package/esm2020/layout-builder/main-editor/main-editor.component.mjs +0 -130
- package/esm2020/layout-builder/section/section.component.mjs +0 -351
- package/esm2020/layout-builder/section-block/section-block.component.mjs +0 -113
- package/esm2020/layout-builder/section-editor/section-editor.component.mjs +0 -192
- package/esm2020/layout-builder/section-editor/section-editor.module.mjs +0 -44
- package/esm2020/manage-parameters/manage-parameter/manage-parameter.component.mjs +0 -82
- package/esm2020/manage-parameters/manage-parameters.component.mjs +0 -153
- package/esm2020/manage-parameters/manage-parameters.service.mjs +0 -142
- package/esm2020/padding-settings/padding-settings.component.mjs +0 -80
- package/esm2020/rich-text/rich-text.component.mjs +0 -154
- package/esm2020/shadow-settings/shadow-settings.component.mjs +0 -72
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +0 -144
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +0 -378
- package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +0 -126
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +0 -161
- package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs +0 -317
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +0 -801
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +0 -216
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +0 -146
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +0 -2345
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +0 -441
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs +0 -140
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs +0 -234
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +0 -129
- package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +0 -100
- package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib.mjs +0 -329
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +0 -780
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +0 -2322
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs +0 -140
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +0 -100
- package/fesm2020/pepperi-addons-ngx-composite-lib.mjs.map +0 -1
- /package/{esm2020 → esm2022}/color-settings/color-settings.model.mjs +0 -0
- /package/{esm2020 → esm2022}/color-settings/pepperi-addons-ngx-composite-lib-color-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/color-settings/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/directives/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/services/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/data-view-builder/data-view-builder.model.mjs +0 -0
- /package/{esm2020 → esm2022}/data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/data-view-builder/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/file-status-panel/file-status-panel.model.mjs +0 -0
- /package/{esm2020 → esm2022}/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/file-status-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/flow-picker-button/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +0 -0
- /package/{esm2020 → esm2022}/flow-picker-button/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-form/generic-form.model.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-form/pepperi-addons-ngx-composite-lib-generic-form.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-form/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-list/generic-list.model.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-list/pepperi-addons-ngx-composite-lib-generic-list.mjs +0 -0
- /package/{esm2020 → esm2022}/generic-list/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/group-buttons-settings/group-buttons-settings.model.mjs +0 -0
- /package/{esm2020 → esm2022}/group-buttons-settings/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/group-buttons-settings/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/icon-picker/pepperi-addons-ngx-composite-lib-icon-picker.mjs +0 -0
- /package/{esm2020 → esm2022}/icon-picker/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-builder/pepperi-addons-ngx-composite-lib-layout-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-builder/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/manage-parameters/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +0 -0
- /package/{esm2020 → esm2022}/manage-parameters/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/padding-settings/pepperi-addons-ngx-composite-lib-padding-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/padding-settings/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/pepperi-addons-ngx-composite-lib.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/rich-text/pepperi-addons-ngx-composite-lib-rich-text.mjs +0 -0
- /package/{esm2020 → esm2022}/rich-text/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shadow-settings/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/shadow-settings/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shadow-settings/shadow-settings.model.mjs +0 -0
- /package/{esm2020 → esm2022}/show-if-badge/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +0 -0
- /package/{esm2020 → esm2022}/show-if-badge/public-api.mjs +0 -0
|
@@ -1,530 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild, Input, Output, EventEmitter, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { PepGuid, UIControl } from '@pepperi-addons/ngx-lib';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import { PepSelectionData, DEFAULT_PAGE_SIZE } from '@pepperi-addons/ngx-lib/list';
|
|
5
|
-
import { PepGenericListService } from './generic-list.service';
|
|
6
|
-
import { DataViewConverter } from '@pepperi-addons/data-views';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@pepperi-addons/ngx-lib";
|
|
9
|
-
import * as i2 from "@ngx-translate/core";
|
|
10
|
-
import * as i3 from "./generic-list.service";
|
|
11
|
-
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@pepperi-addons/ngx-lib/list";
|
|
13
|
-
import * as i6 from "@pepperi-addons/ngx-lib/page-layout";
|
|
14
|
-
import * as i7 from "@pepperi-addons/ngx-lib/top-bar";
|
|
15
|
-
import * as i8 from "@pepperi-addons/ngx-lib/side-bar";
|
|
16
|
-
import * as i9 from "@pepperi-addons/ngx-lib/search";
|
|
17
|
-
import * as i10 from "@pepperi-addons/ngx-lib/bread-crumbs";
|
|
18
|
-
import * as i11 from "@pepperi-addons/ngx-lib/icon";
|
|
19
|
-
import * as i12 from "@pepperi-addons/ngx-lib/smart-filters";
|
|
20
|
-
export class GenericListComponent {
|
|
21
|
-
constructor(_dataConvertorService, _layoutService, _loaderService, _translate, _genericListService, _sessionService) {
|
|
22
|
-
this._dataConvertorService = _dataConvertorService;
|
|
23
|
-
this._layoutService = _layoutService;
|
|
24
|
-
this._loaderService = _loaderService;
|
|
25
|
-
this._translate = _translate;
|
|
26
|
-
this._genericListService = _genericListService;
|
|
27
|
-
this._sessionService = _sessionService;
|
|
28
|
-
this._dataSource = {
|
|
29
|
-
init: async (params) => {
|
|
30
|
-
return {
|
|
31
|
-
dataView: {
|
|
32
|
-
Type: 'Grid'
|
|
33
|
-
},
|
|
34
|
-
totalCount: -1,
|
|
35
|
-
items: []
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
this.actions = {
|
|
40
|
-
get: async (data) => {
|
|
41
|
-
return [];
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
this.uuidMapping = 'key';
|
|
45
|
-
this.disabled = false;
|
|
46
|
-
this.addPadding = false;
|
|
47
|
-
this.title = '';
|
|
48
|
-
this.description = '';
|
|
49
|
-
this.inline = false;
|
|
50
|
-
this.showSearch = false;
|
|
51
|
-
this.noDataFoundMsg = '';
|
|
52
|
-
this.selectionType = 'multi';
|
|
53
|
-
this.supportSorting = false;
|
|
54
|
-
this.supportSortingFields = undefined;
|
|
55
|
-
this.separator = ',';
|
|
56
|
-
this.cacheSize = -1;
|
|
57
|
-
this.hideSelectAll = false;
|
|
58
|
-
this.pager = {
|
|
59
|
-
type: 'scroll'
|
|
60
|
-
};
|
|
61
|
-
this.tableViewType = 'regular';
|
|
62
|
-
this.zebraStripes = false;
|
|
63
|
-
this.showTopBar = false;
|
|
64
|
-
this.breadCrumbsItems = new Array();
|
|
65
|
-
this.selectAll = false;
|
|
66
|
-
this.scrollPosition = 0;
|
|
67
|
-
this.unknownCount = false;
|
|
68
|
-
this.fieldClick = new EventEmitter();
|
|
69
|
-
this.valueChange = new EventEmitter();
|
|
70
|
-
this.breadCrumbItemClick = new EventEmitter();
|
|
71
|
-
this.startIndexChange = new EventEmitter();
|
|
72
|
-
this.listLoad = new EventEmitter();
|
|
73
|
-
this._resize$ = new Subscription();
|
|
74
|
-
this._loader$ = new Subscription();
|
|
75
|
-
this._dataView = {
|
|
76
|
-
Type: 'Grid'
|
|
77
|
-
};
|
|
78
|
-
this.onLoad = true;
|
|
79
|
-
this.totalRowCount = -1;
|
|
80
|
-
this.searchString = '';
|
|
81
|
-
this.showSmartFilter = false;
|
|
82
|
-
this.showEmptyState = false;
|
|
83
|
-
this.smartFilters = {
|
|
84
|
-
fields: [],
|
|
85
|
-
data: [],
|
|
86
|
-
title: 'Filters'
|
|
87
|
-
};
|
|
88
|
-
this._appliedFilters = [];
|
|
89
|
-
this._sorting = undefined;
|
|
90
|
-
this.menuHandlers = {};
|
|
91
|
-
this.menuActions = [];
|
|
92
|
-
this._resize$ = this._layoutService.onResize$.pipe().subscribe((size) => {
|
|
93
|
-
//
|
|
94
|
-
});
|
|
95
|
-
this._loader$ = this._loaderService.onChanged$.subscribe((status) => {
|
|
96
|
-
//
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
set pepListContainer(val) {
|
|
100
|
-
this._pepListContainer = val;
|
|
101
|
-
}
|
|
102
|
-
set dataSource(val) {
|
|
103
|
-
this._dataSource = val;
|
|
104
|
-
this._sorting = undefined;
|
|
105
|
-
this.initSearch();
|
|
106
|
-
this.initSmartSearch();
|
|
107
|
-
this.initList();
|
|
108
|
-
}
|
|
109
|
-
set smartFilter(val) {
|
|
110
|
-
this.smartFilters = this._genericListService.convertToSmartFilter(val);
|
|
111
|
-
this._appliedFilters = this.smartFilters.data || [];
|
|
112
|
-
this.showSmartFilter = this.smartFilters.fields.length > 0;
|
|
113
|
-
}
|
|
114
|
-
set pepList(val) {
|
|
115
|
-
this._pepList = val;
|
|
116
|
-
}
|
|
117
|
-
get pepList() {
|
|
118
|
-
return this._pepList;
|
|
119
|
-
}
|
|
120
|
-
ngOnInit() {
|
|
121
|
-
//
|
|
122
|
-
}
|
|
123
|
-
async initList() {
|
|
124
|
-
this.onLoad = true;
|
|
125
|
-
setTimeout(async () => {
|
|
126
|
-
if (this._dataSource) {
|
|
127
|
-
//merge selector inputs with callback inputs
|
|
128
|
-
this.loadTableInputs();
|
|
129
|
-
let fromIndex = 0;
|
|
130
|
-
let toIndex = 0;
|
|
131
|
-
if (this.listInputs.pager.type === 'pages') {
|
|
132
|
-
fromIndex = this.listInputs.pager.size * this.listInputs.pager.index;
|
|
133
|
-
toIndex = fromIndex + (this.listInputs.pager.size || DEFAULT_PAGE_SIZE) - 1;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
toIndex = 100; //TO DO - get value from - this.customList.getTopItems()
|
|
137
|
-
}
|
|
138
|
-
const data = await this.loadData(fromIndex, toIndex);
|
|
139
|
-
if (this.listInputs?.emptyState?.show === true) {
|
|
140
|
-
this.setEmptyState();
|
|
141
|
-
}
|
|
142
|
-
this.onLoad = false;
|
|
143
|
-
//show empty state
|
|
144
|
-
if (this.showEmptyState) {
|
|
145
|
-
if (!this.listInputs.emptyState.title) {
|
|
146
|
-
this._translate.get('GENERIC_LIST.EMPTY_STATE.TITLE').subscribe(text => {
|
|
147
|
-
this.listInputs.emptyState.title = text;
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
if (!this.listInputs.emptyState.description) {
|
|
151
|
-
this._translate.get('GENERIC_LIST.EMPTY_STATE.DESCRIPTION').subscribe(text => {
|
|
152
|
-
this.listInputs.emptyState.description = text;
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
setTimeout(async () => {
|
|
158
|
-
if (this._pepListContainer) {
|
|
159
|
-
if (this._pepListContainer.length > 0) {
|
|
160
|
-
this._pepListContainer.remove();
|
|
161
|
-
}
|
|
162
|
-
const { PepListComponent } = await import('@pepperi-addons/ngx-lib/list');
|
|
163
|
-
const componentRef = this._pepListContainer.createComponent(PepListComponent);
|
|
164
|
-
this.pepList = componentRef.instance;
|
|
165
|
-
componentRef.instance.viewType = this._genericListService.getListViewType(this._dataView.Type);
|
|
166
|
-
componentRef.instance.tableViewType = this.listInputs.tableViewType;
|
|
167
|
-
componentRef.instance.zebraStripes = this.listInputs.zebraStripes;
|
|
168
|
-
if (this.disabled) {
|
|
169
|
-
componentRef.instance.disabled = true;
|
|
170
|
-
componentRef.instance.lockItemInnerEvents = true;
|
|
171
|
-
}
|
|
172
|
-
componentRef.instance.supportSorting = this.listInputs.supportSorting;
|
|
173
|
-
componentRef.instance.supportSortingFields = this.listInputs.supportSortingFields;
|
|
174
|
-
componentRef.instance.SEPARATOR = this.listInputs.separator;
|
|
175
|
-
componentRef.instance.sorting = this.listInputs.sorting;
|
|
176
|
-
componentRef.instance.cacheSize = this.listInputs.cacheSize;
|
|
177
|
-
componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;
|
|
178
|
-
componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;
|
|
179
|
-
componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';
|
|
180
|
-
componentRef.instance.pagerType = this.listInputs.pager.type;
|
|
181
|
-
if (this.listInputs.pager.type === 'pages') {
|
|
182
|
-
componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;
|
|
183
|
-
componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;
|
|
184
|
-
}
|
|
185
|
-
if (this.selectionType == "multi" && this.selectAll) {
|
|
186
|
-
this._sessionService.setObject('AllSelected', true);
|
|
187
|
-
}
|
|
188
|
-
componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;
|
|
189
|
-
componentRef.instance.startIndexChange.subscribe($event => {
|
|
190
|
-
this.startIndexChange.emit($event);
|
|
191
|
-
});
|
|
192
|
-
componentRef.instance.fieldClick.subscribe(($event) => {
|
|
193
|
-
this.onCustomizeFieldClick($event);
|
|
194
|
-
});
|
|
195
|
-
componentRef.instance.selectedItemsChange.subscribe(($event) => {
|
|
196
|
-
this.onSelectedItemsChanged($event);
|
|
197
|
-
});
|
|
198
|
-
componentRef.instance.loadItems.subscribe(($event) => {
|
|
199
|
-
this.onLoadItems($event);
|
|
200
|
-
});
|
|
201
|
-
componentRef.instance.loadPage.subscribe(($event) => {
|
|
202
|
-
this.onLoadPage($event);
|
|
203
|
-
});
|
|
204
|
-
componentRef.instance.valueChange.subscribe(($event) => {
|
|
205
|
-
this.onValueChanged($event);
|
|
206
|
-
});
|
|
207
|
-
componentRef.instance.sortingChange.subscribe(($event) => {
|
|
208
|
-
this.onSortingChange($event);
|
|
209
|
-
});
|
|
210
|
-
componentRef.instance.listLoad.subscribe(($event) => {
|
|
211
|
-
this.onSelectedItemsChanged(this._pepList.selectedItems.length);
|
|
212
|
-
this.onListLoad();
|
|
213
|
-
});
|
|
214
|
-
let convertedList = [];
|
|
215
|
-
if (data) {
|
|
216
|
-
if (data?.length) {
|
|
217
|
-
convertedList = this._dataConvertorService.convertListData(data);
|
|
218
|
-
}
|
|
219
|
-
const uiControl = this.getUiControl(DataViewConverter.toUIControlData(this._dataView));
|
|
220
|
-
const selectedItems = this._genericListService.getSelectedItems(convertedList);
|
|
221
|
-
if (selectedItems?.length) {
|
|
222
|
-
componentRef.instance.setSelectedIds(selectedItems);
|
|
223
|
-
}
|
|
224
|
-
componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);
|
|
225
|
-
}
|
|
226
|
-
componentRef.instance.scrollToIndex(this.scrollPosition);
|
|
227
|
-
}
|
|
228
|
-
}, 0);
|
|
229
|
-
}
|
|
230
|
-
}, 0);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* loads inputs in case they are provided and merge with selector inputs
|
|
234
|
-
* @returns merged pep-list inputs
|
|
235
|
-
*/
|
|
236
|
-
loadTableInputs() {
|
|
237
|
-
this.listInputs = {
|
|
238
|
-
supportSorting: this.supportSorting,
|
|
239
|
-
supportSortingFields: this.supportSortingFields,
|
|
240
|
-
separator: this.separator,
|
|
241
|
-
sorting: this.sorting,
|
|
242
|
-
cacheSize: this.cacheSize,
|
|
243
|
-
hideSelectAll: this.hideSelectAll,
|
|
244
|
-
selectionType: this.selectionType,
|
|
245
|
-
pager: this.pager,
|
|
246
|
-
noDataFoundMsg: this.noDataFoundMsg,
|
|
247
|
-
tableViewType: this.tableViewType,
|
|
248
|
-
zebraStripes: this.zebraStripes,
|
|
249
|
-
emptyState: this.emptyState,
|
|
250
|
-
selectAll: this.selectAll
|
|
251
|
-
};
|
|
252
|
-
if (this._dataSource.inputs) {
|
|
253
|
-
Object.entries(this._dataSource.inputs).forEach((item) => {
|
|
254
|
-
if (this._genericListService.hasProperty(this.listInputs, item[0])) {
|
|
255
|
-
this.listInputs[item[0]] = item[1];
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* detemines whether empty state is to be displayed
|
|
262
|
-
*/
|
|
263
|
-
setEmptyState() {
|
|
264
|
-
this.showEmptyState = this.totalRowCount === 0 &&
|
|
265
|
-
this.searchString === '' &&
|
|
266
|
-
this._appliedFilters.length === 0;
|
|
267
|
-
}
|
|
268
|
-
getUiControl(data) {
|
|
269
|
-
const uiControl = new UIControl();
|
|
270
|
-
uiControl.ControlFields = [];
|
|
271
|
-
if (data?.ControlFields) {
|
|
272
|
-
uiControl.ControlFields = data.ControlFields.map((field) => this._genericListService.convertToUiControlField(field));
|
|
273
|
-
}
|
|
274
|
-
return uiControl;
|
|
275
|
-
}
|
|
276
|
-
loadMenuItems() {
|
|
277
|
-
if (this.listInputs.selectionType !== 'none') {
|
|
278
|
-
this.getMenuActions().then(x => this.menuActions = x);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
async getMenuActions() {
|
|
282
|
-
const res = [];
|
|
283
|
-
const result = this.getMenuObjects();
|
|
284
|
-
if (result.success) {
|
|
285
|
-
const actions = await this.actions.get(result.data);
|
|
286
|
-
this.menuHandlers = {};
|
|
287
|
-
actions?.forEach(item => {
|
|
288
|
-
const uuid = PepGuid.newGuid();
|
|
289
|
-
this.menuHandlers[uuid] = item.handler;
|
|
290
|
-
res.push({
|
|
291
|
-
key: uuid,
|
|
292
|
-
text: item.title
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
return res;
|
|
297
|
-
}
|
|
298
|
-
getMenuObjects() {
|
|
299
|
-
const menuObjects = {
|
|
300
|
-
success: false,
|
|
301
|
-
data: new PepSelectionData()
|
|
302
|
-
};
|
|
303
|
-
if (this.pepList) {
|
|
304
|
-
menuObjects.success = true;
|
|
305
|
-
menuObjects.data = this.pepList.getSelectedItemsData();
|
|
306
|
-
}
|
|
307
|
-
return menuObjects;
|
|
308
|
-
}
|
|
309
|
-
initSearch() {
|
|
310
|
-
this.searchString = '';
|
|
311
|
-
this.search?.initSearch();
|
|
312
|
-
}
|
|
313
|
-
initSmartSearch() {
|
|
314
|
-
this._appliedFilters = [];
|
|
315
|
-
this.smartFiltersComponent?.clearFilters();
|
|
316
|
-
}
|
|
317
|
-
async loadData(fromIndex, toIndex) {
|
|
318
|
-
this._loaderService.show();
|
|
319
|
-
let converedData = [];
|
|
320
|
-
const data = await this._dataSource.init({
|
|
321
|
-
searchString: this.searchString || undefined,
|
|
322
|
-
filters: this._appliedFilters.length ? this._appliedFilters : undefined,
|
|
323
|
-
sorting: this._sorting || undefined,
|
|
324
|
-
fromIndex: fromIndex,
|
|
325
|
-
toIndex: toIndex
|
|
326
|
-
});
|
|
327
|
-
this._loaderService.hide();
|
|
328
|
-
// Set the total count
|
|
329
|
-
this.totalRowCount = data?.totalCount || 0;
|
|
330
|
-
this.setEmptyState();
|
|
331
|
-
if (data) {
|
|
332
|
-
this._dataView = data.dataView;
|
|
333
|
-
if (data.items?.length > 0 && !data.isPepRowData) {
|
|
334
|
-
converedData = data.items.map(item => this._genericListService.convertToPepRowData(item, data.dataView, this.uuidMapping));
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
return converedData;
|
|
338
|
-
}
|
|
339
|
-
async updateDataList(fromIndex, toIndex, pageIndex = undefined) {
|
|
340
|
-
if (this._dataSource.update) {
|
|
341
|
-
this._loaderService.show();
|
|
342
|
-
let converedData = [];
|
|
343
|
-
const dataList = await this._dataSource.update({
|
|
344
|
-
searchString: this.searchString || undefined,
|
|
345
|
-
filters: this._appliedFilters.length ? this._appliedFilters : undefined,
|
|
346
|
-
sorting: this._sorting || undefined,
|
|
347
|
-
fromIndex: fromIndex,
|
|
348
|
-
toIndex: toIndex,
|
|
349
|
-
pageIndex: pageIndex
|
|
350
|
-
});
|
|
351
|
-
this._loaderService.hide();
|
|
352
|
-
if (dataList?.length > 0) {
|
|
353
|
-
converedData = dataList.map(item => this._genericListService.convertToPepRowData(item, this._dataView, this.uuidMapping));
|
|
354
|
-
}
|
|
355
|
-
return converedData;
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
return [];
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* loads virtual scroll items from api
|
|
363
|
-
*/
|
|
364
|
-
async onLoadItems(event) {
|
|
365
|
-
const list = await this.updateDataList(event.fromIndex, event.toIndex);
|
|
366
|
-
const convertedList = this._dataConvertorService.convertListData(list);
|
|
367
|
-
const selectedItems = this._genericListService.getSelectedItems(convertedList);
|
|
368
|
-
if (selectedItems?.length) {
|
|
369
|
-
this.pepList.setSelectedIds(selectedItems);
|
|
370
|
-
}
|
|
371
|
-
this.pepList.updateItems(convertedList, event);
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* loads paging bulk from api
|
|
375
|
-
*/
|
|
376
|
-
async onLoadPage(event) {
|
|
377
|
-
const fromIndex = event.pageIndex * event.pageSize;
|
|
378
|
-
const toIndex = Math.min(fromIndex + event.pageSize - 1, this.totalRowCount - 1);
|
|
379
|
-
const list = await this.updateDataList(fromIndex, toIndex, event.pageIndex);
|
|
380
|
-
const convertedList = this._dataConvertorService.convertListData(list);
|
|
381
|
-
const selectedItems = this._genericListService.getSelectedItems(convertedList);
|
|
382
|
-
if (selectedItems?.length) {
|
|
383
|
-
this.pepList.setSelectedIds(selectedItems);
|
|
384
|
-
}
|
|
385
|
-
this.pepList.updatePage(convertedList, event);
|
|
386
|
-
}
|
|
387
|
-
getItemById(id) {
|
|
388
|
-
if (this.pepList) {
|
|
389
|
-
return this._pepList.getItemDataByID(id);
|
|
390
|
-
}
|
|
391
|
-
else {
|
|
392
|
-
return null;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
getSelectedItems() {
|
|
396
|
-
if (this.pepList) {
|
|
397
|
-
return this._pepList.getSelectedItemsData();
|
|
398
|
-
}
|
|
399
|
-
else {
|
|
400
|
-
return null;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
getPageIndex() {
|
|
404
|
-
return this.pepList.pageIndex;
|
|
405
|
-
}
|
|
406
|
-
onActionItemClicked(action) {
|
|
407
|
-
const result = this.getMenuObjects();
|
|
408
|
-
if (result.success) {
|
|
409
|
-
this.menuHandlers[action.source.key](result.data);
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
onSearchChanged(event) {
|
|
413
|
-
this.searchString = event.value;
|
|
414
|
-
this.initList();
|
|
415
|
-
}
|
|
416
|
-
onSelectedItemsChanged(selectedRowsCount) {
|
|
417
|
-
//loading menu items after pep-list selected items are updated
|
|
418
|
-
setTimeout(() => {
|
|
419
|
-
this.loadMenuItems();
|
|
420
|
-
}, 0);
|
|
421
|
-
}
|
|
422
|
-
onCustomizeFieldClick(fieldClickEvent) {
|
|
423
|
-
this.fieldClick.emit(fieldClickEvent);
|
|
424
|
-
}
|
|
425
|
-
onBreadCrumbItemClick(event) {
|
|
426
|
-
this.breadCrumbItemClick.emit(event);
|
|
427
|
-
}
|
|
428
|
-
onValueChanged(event) {
|
|
429
|
-
this.valueChange.emit(event);
|
|
430
|
-
}
|
|
431
|
-
onSortingChange(event) {
|
|
432
|
-
this._sorting = event;
|
|
433
|
-
this.initList();
|
|
434
|
-
}
|
|
435
|
-
onFiltersChange(filters) {
|
|
436
|
-
this._appliedFilters = filters;
|
|
437
|
-
this.initList();
|
|
438
|
-
}
|
|
439
|
-
onListLoad() {
|
|
440
|
-
this.listLoad.emit();
|
|
441
|
-
}
|
|
442
|
-
ngOnDestroy() {
|
|
443
|
-
if (this._resize$) {
|
|
444
|
-
this._resize$.unsubscribe();
|
|
445
|
-
}
|
|
446
|
-
if (this._loader$) {
|
|
447
|
-
this._loader$.unsubscribe();
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, deps: [{ token: i1.PepDataConvertorService }, { token: i1.PepLayoutService }, { token: i1.PepLoaderService }, { token: i2.TranslateService }, { token: i3.PepGenericListService }, { token: i1.PepSessionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
452
|
-
GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", supportSortingFields: "supportSortingFields", separator: "separator", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition", unknownCount: "unknownCount" }, outputs: { fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType", "unknownCount"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i11.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, decorators: [{
|
|
454
|
-
type: Component,
|
|
455
|
-
args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\" [unknownCount]=\"unknownCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
|
|
456
|
-
}], ctorParameters: function () { return [{ type: i1.PepDataConvertorService }, { type: i1.PepLayoutService }, { type: i1.PepLoaderService }, { type: i2.TranslateService }, { type: i3.PepGenericListService }, { type: i1.PepSessionService }]; }, propDecorators: { search: [{
|
|
457
|
-
type: ViewChild,
|
|
458
|
-
args: ['search']
|
|
459
|
-
}], smartFiltersComponent: [{
|
|
460
|
-
type: ViewChild,
|
|
461
|
-
args: ['smartFiltersComponent']
|
|
462
|
-
}], pepListContainer: [{
|
|
463
|
-
type: ViewChild,
|
|
464
|
-
args: ['pepListContainer', { read: ViewContainerRef }]
|
|
465
|
-
}], dataSource: [{
|
|
466
|
-
type: Input
|
|
467
|
-
}], actions: [{
|
|
468
|
-
type: Input
|
|
469
|
-
}], uuidMapping: [{
|
|
470
|
-
type: Input
|
|
471
|
-
}], disabled: [{
|
|
472
|
-
type: Input
|
|
473
|
-
}], addPadding: [{
|
|
474
|
-
type: Input
|
|
475
|
-
}], title: [{
|
|
476
|
-
type: Input
|
|
477
|
-
}], description: [{
|
|
478
|
-
type: Input
|
|
479
|
-
}], inline: [{
|
|
480
|
-
type: Input
|
|
481
|
-
}], showSearch: [{
|
|
482
|
-
type: Input
|
|
483
|
-
}], noDataFoundMsg: [{
|
|
484
|
-
type: Input
|
|
485
|
-
}], emptyState: [{
|
|
486
|
-
type: Input
|
|
487
|
-
}], selectionType: [{
|
|
488
|
-
type: Input
|
|
489
|
-
}], supportSorting: [{
|
|
490
|
-
type: Input
|
|
491
|
-
}], supportSortingFields: [{
|
|
492
|
-
type: Input
|
|
493
|
-
}], separator: [{
|
|
494
|
-
type: Input
|
|
495
|
-
}], sorting: [{
|
|
496
|
-
type: Input
|
|
497
|
-
}], cacheSize: [{
|
|
498
|
-
type: Input
|
|
499
|
-
}], hideSelectAll: [{
|
|
500
|
-
type: Input
|
|
501
|
-
}], pager: [{
|
|
502
|
-
type: Input
|
|
503
|
-
}], tableViewType: [{
|
|
504
|
-
type: Input
|
|
505
|
-
}], zebraStripes: [{
|
|
506
|
-
type: Input
|
|
507
|
-
}], smartFilter: [{
|
|
508
|
-
type: Input
|
|
509
|
-
}], showTopBar: [{
|
|
510
|
-
type: Input
|
|
511
|
-
}], breadCrumbsItems: [{
|
|
512
|
-
type: Input
|
|
513
|
-
}], selectAll: [{
|
|
514
|
-
type: Input
|
|
515
|
-
}], scrollPosition: [{
|
|
516
|
-
type: Input
|
|
517
|
-
}], unknownCount: [{
|
|
518
|
-
type: Input
|
|
519
|
-
}], fieldClick: [{
|
|
520
|
-
type: Output
|
|
521
|
-
}], valueChange: [{
|
|
522
|
-
type: Output
|
|
523
|
-
}], breadCrumbItemClick: [{
|
|
524
|
-
type: Output
|
|
525
|
-
}], startIndexChange: [{
|
|
526
|
-
type: Output
|
|
527
|
-
}], listLoad: [{
|
|
528
|
-
type: Output
|
|
529
|
-
}] } });
|
|
530
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBS3BCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBcUs3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEMsRUFDMUMsZUFBa0M7UUFMbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBakt0QyxnQkFB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QVc7c0JBRFYsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFNTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlGLFdBQVc7c0JBRGQsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBSVAsZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcERhdGFDb252ZXJ0b3JTZXJ2aWNlLFxuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgT2JqZWN0c0RhdGFSb3csXG4gICAgUGVwR3VpZCxcbiAgICBVSUNvbnRyb2wsXG4gICAgUGVwTG9hZGVyU2VydmljZSxcbiAgICBQZXBSb3dEYXRhLFxuICAgIFBlcFNlc3Npb25TZXJ2aWNlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgUGVwTGlzdENvbXBvbmVudCxcbiAgICBQZXBTZWxlY3Rpb25EYXRhLFxuICAgIElQZXBMaXN0TG9hZFBhZ2VFdmVudCxcbiAgICBQZXBMaXN0U2VsZWN0aW9uVHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCxcbiAgICBERUZBVUxUX1BBR0VfU0laRSxcbiAgICBJUGVwTGlzdExvYWRJdGVtc0V2ZW50LFxuICAgIFBlcExpc3RUYWJsZVZpZXdUeXBlLFxuICAgIElQZXBMaXN0U29ydGluZ0RhdGEsXG4gICAgSVBlcExpc3RTdGFydEluZGV4Q2hhbmdlRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvbGlzdCc7XG5pbXBvcnQge1xuICAgIFBlcE1lbnVJdGVtLFxuICAgIElQZXBNZW51SXRlbUNsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL21lbnUnO1xuaW1wb3J0IHsgSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgUGVwQnJlYWRDcnVtYkl0ZW0sXG4gICAgSVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9icmVhZC1jcnVtYnMnO1xuaW1wb3J0IHsgSVBlcFNlYXJjaENsaWNrRXZlbnQsIFBlcFNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NlYXJjaCc7XG5cbmltcG9ydCB7XG4gICAgRGF0YVZpZXcsXG4gICAgR3JpZERhdGFWaWV3XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9wYXBpLXNkay9kaXN0L2VudGl0aWVzL2RhdGEtdmlldyc7XG5pbXBvcnQge1xuICAgIElQZXBHZW5lcmljTGlzdEluaXREYXRhLFxuICAgIElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UsXG4gICAgSVBlcEdlbmVyaWNMaXN0UGFnZXIsXG4gICAgSVBlcEdlbmVyaWNMaXN0QWN0aW9ucyxcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwU21hcnRGaWx0ZXJzLFxuICAgIElQZXBHZW5lcmljTGlzdEVtcHR5U3RhdGVcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgUGVwR2VuZXJpY0xpc3RTZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmljLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhVmlld0NvbnZlcnRlciB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9kYXRhLXZpZXdzJztcbmltcG9ydCB7XG4gICAgSVBlcFNtYXJ0RmlsdGVyRGF0YSxcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBQZXBTbWFydEZpbHRlcnNDb21wb25lbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnNjc3MnLCAnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBHZW5lcmljTGlzdFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2g6IFBlcFNlYXJjaENvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgICBAVmlld0NoaWxkKCdzbWFydEZpbHRlcnNDb21wb25lbnQnKSBzbWFydEZpbHRlcnNDb21wb25lbnQ6IFBlcFNtYXJ0RmlsdGVyc0NvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgX3BlcExpc3RDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgncGVwTGlzdENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIHNldCBwZXBMaXN0Q29udGFpbmVyKHZhbDogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICB0aGlzLl9wZXBMaXN0Q29udGFpbmVyID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UgPSB7XG4gICAgICAgIGluaXQ6IGFzeW5jIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhVmlldzoge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnQ6IC0xLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2YWw7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgICB0aGlzLmluaXRTbWFydFNlYXJjaCgpO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25zOiBJUGVwR2VuZXJpY0xpc3RBY3Rpb25zID0ge1xuICAgICAgICBnZXQ6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIEBJbnB1dCgpXG4gICAgdXVpZE1hcHBpbmcgPSAna2V5JztcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkUGFkZGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0aXRsZSA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBpbmxpbmUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBub0RhdGFGb3VuZE1zZyA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBlbXB0eVN0YXRlOiBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25UeXBlOiBQZXBMaXN0U2VsZWN0aW9uVHlwZSA9ICdtdWx0aSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHN1cHBvcnRTb3J0aW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHN1cHBvcnRTb3J0aW5nRmllbGRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VwYXJhdG9yID0gJywnO1xuXG4gICAgQElucHV0KClcbiAgICBzb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdEYXRhIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBjYWNoZVNpemUgPSAtMTtcblxuICAgIEBJbnB1dCgpXG4gICAgaGlkZVNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcGFnZXI6IElQZXBHZW5lcmljTGlzdFBhZ2VyID0ge1xuICAgICAgICB0eXBlOiAnc2Nyb2xsJ1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgdGFibGVWaWV3VHlwZTogUGVwTGlzdFRhYmxlVmlld1R5cGUgPSAncmVndWxhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHplYnJhU3RyaXBlcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc21hcnRGaWx0ZXIodmFsOiBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcikge1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVycyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlcih2YWwpO1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHRoaXMuc21hcnRGaWx0ZXJzLmRhdGEgfHwgW107XG4gICAgICAgIHRoaXMuc2hvd1NtYXJ0RmlsdGVyID0gdGhpcy5zbWFydEZpbHRlcnMuZmllbGRzLmxlbmd0aCA+IDA7IFxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RvcEJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBicmVhZENydW1ic0l0ZW1zOiBQZXBCcmVhZENydW1iSXRlbVtdID0gbmV3IEFycmF5PFBlcEJyZWFkQ3J1bWJJdGVtPigpO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gICAgQElucHV0KClcbiAgICBzY3JvbGxQb3NpdGlvbiA9IDBcblxuICAgIEBJbnB1dCgpXG4gICAgdW5rbm93bkNvdW50ID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJyZWFkQ3J1bWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBzdGFydEluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwTGlzdFN0YXJ0SW5kZXhDaGFuZ2VFdmVudD4oKVxuXG4gICAgQE91dHB1dCgpXG4gICAgbGlzdExvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHNldCBwZXBMaXN0KHZhbDogUGVwTGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLl9wZXBMaXN0ID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBwZXBMaXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNpemUkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBfbG9hZGVyJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgcHJpdmF0ZSBfZGF0YVZpZXc6IERhdGFWaWV3ID0ge1xuICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICB9O1xuICAgIHByaXZhdGUgX3BlcExpc3Q6IGFueTtcbiAgICBvbkxvYWQgPSB0cnVlO1xuICAgIGxpc3RJbnB1dHM6IGFueTtcbiAgICB0b3RhbFJvd0NvdW50ID0gLTE7XG4gICAgc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgc2hvd1NtYXJ0RmlsdGVyID0gZmFsc2U7XG4gICAgc2hvd0VtcHR5U3RhdGUgPSBmYWxzZTtcbiAgICBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgfTtcbiAgICBwcml2YXRlIF9hcHBsaWVkRmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfc29ydGluZzogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBtZW51SGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogKG9iajogYW55KSA9PiBQcm9taXNlPHZvaWQ+IH0gPSB7fTtcbiAgICBtZW51QWN0aW9uczogQXJyYXk8UGVwTWVudUl0ZW0+ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGF0YUNvbnZlcnRvclNlcnZpY2U6IFBlcERhdGFDb252ZXJ0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2FkZXJTZXJ2aWNlOiBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2dlbmVyaWNMaXN0U2VydmljZTogUGVwR2VuZXJpY0xpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9zZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcmVzaXplJCA9IHRoaXMuX2xheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHsgICAgICAgICAgICBcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9sb2FkZXIkID0gdGhpcy5fbG9hZGVyU2VydmljZS5vbkNoYW5nZWQkLnN1YnNjcmliZSgoc3RhdHVzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAvL1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRMaXN0KCkge1xuICAgICAgICB0aGlzLm9uTG9hZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4geyAvL21ha2luZyBzdXJlIGFsbCBpbnB1dCBkYXRhIGlzIGF2YWlsYWJsZVxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAvL21lcmdlIHNlbGVjdG9yIGlucHV0cyB3aXRoIGNhbGxiYWNrIGlucHV0c1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhYmxlSW5wdXRzKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZnJvbUluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgdG9JbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgKiB0aGlzLmxpc3RJbnB1dHMucGFnZXIuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSBmcm9tSW5kZXggKyAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkUpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b0luZGV4ID0gMTAwOy8vVE8gRE8gLSBnZXQgdmFsdWUgZnJvbSAtIHRoaXMuY3VzdG9tTGlzdC5nZXRUb3BJdGVtcygpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERhdGEoZnJvbUluZGV4LCB0b0luZGV4KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzPy5lbXB0eVN0YXRlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW1wdHlTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vc2hvdyBlbXB0eSBzdGF0ZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dFbXB0eVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUudGl0bGUpIHsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0dFTkVSSUNfTElTVC5FTVBUWV9TVEFURS5USVRMRScpLnN1YnNjcmliZSh0ZXh0ID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzLmVtcHR5U3RhdGUudGl0bGUgPSB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLkRFU0NSSVBUSU9OJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlcExpc3RDb250YWluZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlcExpc3RDb250YWluZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IFBlcExpc3RDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnQHBlcHBlcmktYWRkb25zL25neC1saWIvbGlzdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fcGVwTGlzdENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoUGVwTGlzdENvbXBvbmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVwTGlzdCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZpZXdUeXBlID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldExpc3RWaWV3VHlwZSh0aGlzLl9kYXRhVmlldy5UeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS50YWJsZVZpZXdUeXBlID0gdGhpcy5saXN0SW5wdXRzLnRhYmxlVmlld1R5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuemVicmFTdHJpcGVzID0gdGhpcy5saXN0SW5wdXRzLnplYnJhU3RyaXBlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9ja0l0ZW1Jbm5lckV2ZW50cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3VwcG9ydFNvcnRpbmcgPSB0aGlzLmxpc3RJbnB1dHMuc3VwcG9ydFNvcnRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3VwcG9ydFNvcnRpbmdGaWVsZHMgPSB0aGlzLmxpc3RJbnB1dHMuc3VwcG9ydFNvcnRpbmdGaWVsZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuU0VQQVJBVE9SID0gdGhpcy5saXN0SW5wdXRzLnNlcGFyYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0aW5nID0gdGhpcy5saXN0SW5wdXRzLnNvcnRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2FjaGVTaXplID0gdGhpcy5saXN0SW5wdXRzLmNhY2hlU2l6ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGlvblR5cGVGb3JBY3Rpb25zID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaGlkZUFsbFNlbGVjdGlvbkluTXVsdGkgPSB0aGlzLmxpc3RJbnB1dHMuaGlkZVNlbGVjdEFsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNob3dDYXJkU2VsZWN0aW9uID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlclR5cGUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlU2l6ZSA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyPy5pbmRleCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3Rpb25UeXBlID09IFwibXVsdGlcIiAmJiB0aGlzLnNlbGVjdEFsbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KCdBbGxTZWxlY3RlZCcsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uubm9EYXRhRm91bmRNc2cgPSB0aGlzLmxpc3RJbnB1dHMubm9EYXRhRm91bmRNc2c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3RhcnRJbmRleENoYW5nZS5zdWJzY3JpYmUoJGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXhDaGFuZ2UuZW1pdCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkQ2xpY2suc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ3VzdG9taXplRmllbGRDbGljaygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZEl0ZW1zLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRJdGVtcygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZFBhZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZFBhZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZ0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Tb3J0aW5nQ2hhbmdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5saXN0TG9hZC5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCh0aGlzLl9wZXBMaXN0LnNlbGVjdGVkSXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTGlzdExvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRlZExpc3Q6IE9iamVjdHNEYXRhUm93W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSB0aGlzLmdldFVpQ29udHJvbChEYXRhVmlld0NvbnZlcnRlci50b1VJQ29udHJvbERhdGEodGhpcy5fZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0TGlzdERhdGEodWlDb250cm9sLCB0aGlzLnRvdGFsUm93Q291bnQsIGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNjcm9sbFRvSW5kZXgodGhpcy5zY3JvbGxQb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgc3VwcG9ydFNvcnRpbmdGaWVsZHM6IHRoaXMuc3VwcG9ydFNvcnRpbmdGaWVsZHMsXG4gICAgICAgICAgICBzZXBhcmF0b3I6IHRoaXMuc2VwYXJhdG9yLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgY2FjaGVTaXplOiB0aGlzLmNhY2hlU2l6ZSxcbiAgICAgICAgICAgIGhpZGVTZWxlY3RBbGw6IHRoaXMuaGlkZVNlbGVjdEFsbCxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZTogdGhpcy5lbXB0eVN0YXRlLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmhhc1Byb3BlcnR5KHRoaXMubGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzW2l0ZW1bMF1dID0gaXRlbVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVtaW5lcyB3aGV0aGVyIGVtcHR5IHN0YXRlIGlzIHRvIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW1wdHlTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zaG93RW1wdHlTdGF0ZSA9IHRoaXMudG90YWxSb3dDb3VudCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPT09ICcnICYmXG4gICAgICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVaUNvbnRyb2woZGF0YTogYW55KTogVUlDb250cm9sIHtcbiAgICAgICAgY29uc3QgdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IFtdO1xuXG4gICAgICAgIGlmIChkYXRhPy5Db250cm9sRmllbGRzKSB7XG4gICAgICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IGRhdGEuQ29udHJvbEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9VaUNvbnRyb2xGaWVsZChmaWVsZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpQ29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNZW51SXRlbXMoKTogdm9pZCB7IC8vVE9ET1xuICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U21hcnRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ29tcG9uZW50Py5jbGVhckZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWREYXRhKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IGRhdGE6IElQZXBHZW5lcmljTGlzdEluaXREYXRhID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleFxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRvdGFsIGNvdW50XG4gICAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IGRhdGE/LnRvdGFsQ291bnQgfHwgMDtcbiAgICAgICAgdGhpcy5zZXRFbXB0eVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFWaWV3ID0gZGF0YS5kYXRhVmlldztcblxuICAgICAgICAgICAgaWYgKGRhdGEuaXRlbXM/Lmxlbmd0aCA+IDAgJiYgIWRhdGEuaXNQZXBSb3dEYXRhKSB7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnZlcmVkRGF0YSA9IGRhdGEuaXRlbXMubWFwKGl0ZW0gPT4gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbSwgZGF0YS5kYXRhVmlldywgdGhpcy51dWlkTWFwcGluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnZlcmVkRGF0YTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRGF0YUxpc3QoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlciwgcGFnZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS51cGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2Uuc2hvdygpO1xuICAgICAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgICAgICBjb25zdCBkYXRhTGlzdCA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2UudXBkYXRlKHtcbiAgICAgICAgICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPyB0aGlzLl9hcHBsaWVkRmlsdGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmcm9tSW5kZXg6IGZyb21JbmRleCxcbiAgICAgICAgICAgICAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2UuaGlkZSgpO1xuXG4gICAgICAgICAgICBpZiAoZGF0YUxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb252ZXJlZERhdGEgPSBkYXRhTGlzdC5tYXAoaXRlbSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvUGVwUm93RGF0YShpdGVtLCB0aGlzLl9kYXRhVmlldywgdGhpcy51dWlkTWFwcGluZykpO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJlZERhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyB2aXJ0dWFsIHNjcm9sbCBpdGVtcyBmcm9tIGFwaVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgb25Mb2FkSXRlbXMoZXZlbnQ6IElQZXBMaXN0TG9hZEl0ZW1zRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMudXBkYXRlRGF0YUxpc3QoZXZlbnQuZnJvbUluZGV4LCBldmVudC50b0luZGV4KTtcbiAgICAgICAgY29uc3QgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShsaXN0KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBlcExpc3Quc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXBMaXN0LnVwZGF0ZUl0ZW1zKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBwYWdpbmcgYnVsayBmcm9tIGFwaVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgb25Mb2FkUGFnZShldmVudDogSVBlcExpc3RMb2FkUGFnZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZyb21JbmRleCA9IGV2ZW50LnBhZ2VJbmRleCAqIGV2ZW50LnBhZ2VTaXplO1xuICAgICAgICBjb25zdCB0b0luZGV4ID0gTWF0aC5taW4oZnJvbUluZGV4ICsgZXZlbnQucGFnZVNpemUgLSAxLCB0aGlzLnRvdGFsUm93Q291bnQgLSAxKTtcbiAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMudXBkYXRlRGF0YUxpc3QoZnJvbUluZGV4LCB0b0luZGV4LCBldmVudC5wYWdlSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVwTGlzdC5zZXRTZWxlY3RlZElkcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlUGFnZShjb252ZXJ0ZWRMaXN0LCBldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5SWQoaWQ6IHN0cmluZyk6IE9iamVjdHNEYXRhUm93IHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldEl0ZW1EYXRhQnlJRChpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlbGVjdGVkSXRlbXMoKTogUGVwU2VsZWN0aW9uRGF0YSB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdC5nZXRTZWxlY3RlZEl0ZW1zRGF0YSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQYWdlSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcExpc3QucGFnZUluZGV4O1xuICAgIH1cblxuICAgIG9uQWN0aW9uSXRlbUNsaWNrZWQoYWN0aW9uOiBJUGVwTWVudUl0ZW1DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0TWVudU9iamVjdHMoKTtcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVIYW5kbGVyc1thY3Rpb24uc291cmNlLmtleV0ocmVzdWx0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWFyY2hDaGFuZ2VkKGV2ZW50OiBJUGVwU2VhcmNoQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0cmluZyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlZChzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyKSB7XG4gICAgICAgIC8vbG9hZGluZyBtZW51IGl0ZW1zIGFmdGVyIHBlcC1saXN0IHNlbGVjdGVkIGl0ZW1zIGFyZSB1cGRhdGVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgfVxuXG4gICAgb25CcmVhZENydW1iSXRlbUNsaWNrKGV2ZW50OiBJUGVwQnJlYWRDcnVtYkl0ZW1DbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuYnJlYWRDcnVtYkl0ZW1DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlZChldmVudDogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNvcnRpbmdDaGFuZ2UoZXZlbnQ6IElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSBldmVudDtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyc0NoYW5nZShmaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10pIHtcbiAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25MaXN0TG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0TG9hZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemUkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2xvYWRlciQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRlciQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiAqbmdJZj1cImlubGluZVwiIGNsYXNzPVwiaW5saW5lLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ2FkZC1wYWRkaW5nJzogYWRkUGFkZGluZywgJ3dpdGgtc21hcnQtZmlsdGVycyc6IHNob3dTbWFydEZpbHRlciB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1hcmVhXCIgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvcEJhclwiIGNsYXNzPVwiaW5saW5lLXRvcC1iYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZENydW1ic0l0ZW1zLmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkQ3J1bWJzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic21hcnRGaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb25Mb2FkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPHBlcC1wYWdlLWxheW91dCAqbmdJZj1cIiFpbmxpbmVcIiBjbGFzcz1cIm5vbmUtaW5saW5lXCIgW2FkZFBhZGRpbmddPVwiYWRkUGFkZGluZ1wiIFtzaG93U2hhZG93XT1cInNob3dTbWFydEZpbHRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U21hcnRGaWx0ZXJcIiBwZXAtc2lkZS1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic21hcnRGaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9wQmFyXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCIhb25Mb2FkXCIgcGVwLW1haW4tYXJlYSBjbGFzcz1cIm1haW4tYXJlYS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9wZXAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjdG9wQmFyVGVtcGxhdGU+XG4gICAgPHBlcC10b3AtYmFyIFt0aXRsZV09XCJ0aXRsZVwiIFtpbmxpbmVdPVwiaW5saW5lXCI+XG4gICAgICAgIDxkaXYgaGVhZGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaGVhZGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGZvb3Rlci1zdGFydC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnQtYm90dG9tLWFyZWFdXCI+PC9uZy1jb250ZW50PiAgICAgICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmb290ZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYm90dG9tLWFyZWFdXCI+PC9uZy1jb250ZW50PiAgICAgXG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPHBlcC1saXN0LWFjdGlvbnMgKm5nSWY9XCJtZW51QWN0aW9ucy5sZW5ndGggPiAwXCIgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW2FjdGlvbnNdPVwibWVudUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uSXRlbUNsaWNrZWQoJGV2ZW50KVwiPjwvcGVwLWxpc3QtYWN0aW9ucz5cbiAgICAgICAgPHBlcC1saXN0LXRvdGFsIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiIFt0b3RhbFJvd3NdPVwidG90YWxSb3dDb3VudFwiIFt1bmtub3duQ291bnRdPVwidW5rbm93bkNvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPiAgICBcbiAgICA8cGVwLXNpZGUtYmFyICNzaWRlTmF2IFtuZ0NsYXNzXT1cInsnc21hcnQtZmlsdGVyLWFyZWEnOiBpbmxpbmV9XCI+IFxuICAgICAgICA8cGVwLXNtYXJ0LWZpbHRlcnMgI3NtYXJ0RmlsdGVyc0NvbXBvbmVudCBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIiBjbGFzcz1cImxlYWYtc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIiBjbGFzcz1cImxlYWYtcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtc2tpbnlcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtcm91bmRcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0VtcHR5U3RhdGVcIiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|