@igo2/common 1.14.2 → 1.14.3
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/esm2020/igo2-common.mjs +4 -4
- package/esm2020/lib/action/action.module.mjs +26 -26
- package/esm2020/lib/action/actionbar/actionbar-item.component.mjs +251 -251
- package/esm2020/lib/action/actionbar/actionbar.component.mjs +369 -369
- package/esm2020/lib/action/actionbar/actionbar.module.mjs +56 -56
- package/esm2020/lib/action/index.mjs +2 -2
- package/esm2020/lib/action/shared/action.enums.mjs +6 -6
- package/esm2020/lib/action/shared/action.interfaces.mjs +1 -1
- package/esm2020/lib/action/shared/index.mjs +3 -3
- package/esm2020/lib/action/shared/store.mjs +7 -7
- package/esm2020/lib/backdrop/backdrop.component.mjs +25 -25
- package/esm2020/lib/backdrop/backdrop.module.mjs +24 -24
- package/esm2020/lib/backdrop/index.mjs +1 -1
- package/esm2020/lib/badge-icon/badge-icon.directive.mjs +140 -140
- package/esm2020/lib/badge-icon/badge-icon.module.mjs +25 -25
- package/esm2020/lib/badge-icon/index.mjs +1 -1
- package/esm2020/lib/clickout/clickout.directive.mjs +31 -31
- package/esm2020/lib/clickout/clickout.module.mjs +23 -23
- package/esm2020/lib/clickout/index.mjs +1 -1
- package/esm2020/lib/clone/clone.module.mjs +23 -23
- package/esm2020/lib/clone/clone.pipe.mjs +23 -23
- package/esm2020/lib/clone/index.mjs +1 -1
- package/esm2020/lib/collapsible/collapse.directive.mjs +54 -54
- package/esm2020/lib/collapsible/collapsible.component.mjs +56 -56
- package/esm2020/lib/collapsible/collapsible.module.mjs +26 -26
- package/esm2020/lib/collapsible/index.mjs +2 -2
- package/esm2020/lib/confirm-dialog/confirm-dialog.component.mjs +43 -43
- package/esm2020/lib/confirm-dialog/confirm-dialog.module.mjs +28 -28
- package/esm2020/lib/confirm-dialog/confirm-dialog.service.mjs +21 -21
- package/esm2020/lib/confirm-dialog/index.mjs +2 -2
- package/esm2020/lib/context-menu/context-menu.directive.mjs +102 -102
- package/esm2020/lib/context-menu/context-menu.module.mjs +24 -24
- package/esm2020/lib/context-menu/index.mjs +2 -2
- package/esm2020/lib/context-menu/long-press.directive.mjs +62 -62
- package/esm2020/lib/custom-html/custom-html.component.mjs +27 -27
- package/esm2020/lib/custom-html/custom-html.module.mjs +46 -46
- package/esm2020/lib/custom-html/custom-html.pipe.mjs +17 -17
- package/esm2020/lib/custom-html/index.mjs +2 -2
- package/esm2020/lib/dom/dom.interfaces.mjs +1 -1
- package/esm2020/lib/dom/dom.module.mjs +22 -22
- package/esm2020/lib/dom/dom.service.mjs +29 -29
- package/esm2020/lib/dom/index.mjs +2 -2
- package/esm2020/lib/drag-drop/drag-drop.directive.mjs +87 -87
- package/esm2020/lib/drag-drop/drag-drop.module.mjs +23 -23
- package/esm2020/lib/drag-drop/index.mjs +1 -1
- package/esm2020/lib/dynamic-component/dynamic-component.module.mjs +30 -30
- package/esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs +121 -121
- package/esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs +27 -27
- package/esm2020/lib/dynamic-component/index.mjs +2 -2
- package/esm2020/lib/dynamic-component/shared/dynamic-component.interfaces.mjs +1 -1
- package/esm2020/lib/dynamic-component/shared/dynamic-component.mjs +173 -173
- package/esm2020/lib/dynamic-component/shared/dynamic-component.service.mjs +28 -28
- package/esm2020/lib/dynamic-component/shared/index.mjs +3 -3
- package/esm2020/lib/entity/entity-selector/entity-selector.component.mjs +193 -193
- package/esm2020/lib/entity/entity-selector/entity-selector.module.mjs +31 -31
- package/esm2020/lib/entity/entity-table/entity-table-row.directive.mjs +136 -136
- package/esm2020/lib/entity/entity-table/entity-table.component.mjs +1367 -1367
- package/esm2020/lib/entity/entity-table/entity-table.module.mjs +101 -101
- package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.component.mjs +131 -131
- package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.interface.mjs +1 -1
- package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.module.mjs +27 -27
- package/esm2020/lib/entity/entity.module.mjs +30 -30
- package/esm2020/lib/entity/index.mjs +5 -5
- package/esm2020/lib/entity/shared/entity.enums.mjs +27 -27
- package/esm2020/lib/entity/shared/entity.interfaces.mjs +1 -1
- package/esm2020/lib/entity/shared/entity.utils.mjs +66 -66
- package/esm2020/lib/entity/shared/index.mjs +9 -9
- package/esm2020/lib/entity/shared/state.mjs +190 -190
- package/esm2020/lib/entity/shared/store.mjs +287 -287
- package/esm2020/lib/entity/shared/strategies/filter-custom-function.mjs +78 -78
- package/esm2020/lib/entity/shared/strategies/filter-selection.mjs +83 -83
- package/esm2020/lib/entity/shared/strategies/index.mjs +3 -3
- package/esm2020/lib/entity/shared/strategies/strategy.mjs +74 -74
- package/esm2020/lib/entity/shared/transaction.mjs +315 -315
- package/esm2020/lib/entity/shared/view.mjs +314 -314
- package/esm2020/lib/entity/shared/watcher.mjs +119 -119
- package/esm2020/lib/flexible/flexible.component.mjs +147 -147
- package/esm2020/lib/flexible/flexible.module.mjs +23 -23
- package/esm2020/lib/flexible/flexible.type.mjs +1 -1
- package/esm2020/lib/flexible/index.mjs +2 -2
- package/esm2020/lib/form/form/form.component.mjs +116 -116
- package/esm2020/lib/form/form/form.module.mjs +39 -39
- package/esm2020/lib/form/form-field/form-field-select.component.mjs +126 -126
- package/esm2020/lib/form/form-field/form-field-text.component.mjs +103 -103
- package/esm2020/lib/form/form-field/form-field-textarea.component.mjs +104 -104
- package/esm2020/lib/form/form-field/form-field.component.mjs +71 -71
- package/esm2020/lib/form/form-field/form-field.module.mjs +73 -73
- package/esm2020/lib/form/form-field/index.mjs +4 -4
- package/esm2020/lib/form/form-group/form-group.component.mjs +104 -104
- package/esm2020/lib/form/form-group/form-group.module.mjs +39 -39
- package/esm2020/lib/form/form.module.mjs +48 -48
- package/esm2020/lib/form/index.mjs +4 -4
- package/esm2020/lib/form/shared/form-field-component.mjs +6 -6
- package/esm2020/lib/form/shared/form-field.service.mjs +28 -28
- package/esm2020/lib/form/shared/form.interfaces.mjs +1 -1
- package/esm2020/lib/form/shared/form.service.mjs +80 -80
- package/esm2020/lib/form/shared/form.utils.mjs +39 -39
- package/esm2020/lib/form/shared/index.mjs +5 -5
- package/esm2020/lib/home-button/home-button.component.mjs +30 -30
- package/esm2020/lib/home-button/home-button.module.mjs +40 -40
- package/esm2020/lib/home-button/index.mjs +1 -1
- package/esm2020/lib/image/image-error.directive.mjs +34 -34
- package/esm2020/lib/image/image.module.mjs +24 -24
- package/esm2020/lib/image/index.mjs +2 -2
- package/esm2020/lib/image/secure-image.pipe.mjs +58 -58
- package/esm2020/lib/interactive-tour/index.mjs +4 -4
- package/esm2020/lib/interactive-tour/interactive-tour.component.mjs +134 -134
- package/esm2020/lib/interactive-tour/interactive-tour.interface.mjs +1 -1
- package/esm2020/lib/interactive-tour/interactive-tour.loader.mjs +43 -43
- package/esm2020/lib/interactive-tour/interactive-tour.module.mjs +39 -39
- package/esm2020/lib/interactive-tour/interactive-tour.service.mjs +284 -284
- package/esm2020/lib/json-dialog/index.mjs +2 -2
- package/esm2020/lib/json-dialog/json-dialog.component.mjs +108 -108
- package/esm2020/lib/json-dialog/json-dialog.module.mjs +28 -28
- package/esm2020/lib/json-dialog/json-dialog.service.mjs +23 -23
- package/esm2020/lib/keyvalue/index.mjs +1 -1
- package/esm2020/lib/keyvalue/keyvalue.module.mjs +23 -23
- package/esm2020/lib/keyvalue/keyvalue.pipe.mjs +17 -17
- package/esm2020/lib/list/index.mjs +2 -2
- package/esm2020/lib/list/list-item.directive.mjs +164 -164
- package/esm2020/lib/list/list.component.mjs +261 -261
- package/esm2020/lib/list/list.module.mjs +28 -28
- package/esm2020/lib/panel/index.mjs +1 -1
- package/esm2020/lib/panel/panel.component.mjs +58 -58
- package/esm2020/lib/panel/panel.module.mjs +18 -18
- package/esm2020/lib/sidenav/index.mjs +1 -1
- package/esm2020/lib/sidenav/sidenav-shim.directive.mjs +54 -54
- package/esm2020/lib/sidenav/sidenav.module.mjs +23 -23
- package/esm2020/lib/spinner/index.mjs +2 -2
- package/esm2020/lib/spinner/spinner-activity.directive.mjs +46 -46
- package/esm2020/lib/spinner/spinner.component.mjs +34 -34
- package/esm2020/lib/spinner/spinner.module.mjs +20 -20
- package/esm2020/lib/stop-propagation/index.mjs +2 -2
- package/esm2020/lib/stop-propagation/stop-drop-propagation.directive.mjs +21 -21
- package/esm2020/lib/stop-propagation/stop-propagation.directive.mjs +20 -20
- package/esm2020/lib/stop-propagation/stop-propagation.module.mjs +24 -24
- package/esm2020/lib/table/index.mjs +5 -5
- package/esm2020/lib/table/table-action-color.enum.mjs +6 -6
- package/esm2020/lib/table/table-database.mjs +27 -27
- package/esm2020/lib/table/table-datasource.mjs +60 -60
- package/esm2020/lib/table/table-model.interface.mjs +1 -1
- package/esm2020/lib/table/table.component.mjs +296 -296
- package/esm2020/lib/table/table.module.mjs +66 -66
- package/esm2020/lib/tool/index.mjs +2 -2
- package/esm2020/lib/tool/shared/index.mjs +5 -5
- package/esm2020/lib/tool/shared/tool-component.mjs +8 -8
- package/esm2020/lib/tool/shared/tool.interface.mjs +1 -1
- package/esm2020/lib/tool/shared/tool.service.mjs +42 -42
- package/esm2020/lib/tool/shared/toolbox.enums.mjs +6 -6
- package/esm2020/lib/tool/shared/toolbox.mjs +178 -178
- package/esm2020/lib/tool/tool.module.mjs +31 -31
- package/esm2020/lib/tool/toolbox/toolbox.animation.mjs +9 -9
- package/esm2020/lib/tool/toolbox/toolbox.component.mjs +254 -254
- package/esm2020/lib/tool/toolbox/toolbox.module.mjs +35 -35
- package/esm2020/lib/widget/index.mjs +2 -2
- package/esm2020/lib/widget/shared/index.mjs +3 -3
- package/esm2020/lib/widget/shared/widget.interfaces.mjs +1 -1
- package/esm2020/lib/widget/shared/widget.mjs +3 -3
- package/esm2020/lib/widget/shared/widget.service.mjs +19 -19
- package/esm2020/lib/widget/widget-outlet/widget-outlet.component.mjs +115 -115
- package/esm2020/lib/widget/widget-outlet/widget-outlet.module.mjs +31 -31
- package/esm2020/lib/widget/widget.module.mjs +31 -31
- package/esm2020/lib/workspace/index.mjs +3 -3
- package/esm2020/lib/workspace/shared/index.mjs +3 -3
- package/esm2020/lib/workspace/shared/store.mjs +39 -39
- package/esm2020/lib/workspace/shared/workspace.interfaces.mjs +1 -1
- package/esm2020/lib/workspace/shared/workspace.mjs +116 -116
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.component.mjs +50 -50
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +31 -31
- package/esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +87 -87
- package/esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs +31 -31
- package/esm2020/lib/workspace/workspace.module.mjs +26 -26
- package/esm2020/public_api.mjs +73 -73
- package/fesm2015/igo2-common.mjs +10003 -10003
- package/fesm2020/igo2-common.mjs +9306 -9306
- package/index.d.ts +5 -5
- package/lib/action/action.module.d.ts +8 -8
- package/lib/action/actionbar/actionbar-item.component.d.ts +78 -78
- package/lib/action/actionbar/actionbar.component.d.ts +146 -146
- package/lib/action/actionbar/actionbar.module.d.ts +20 -20
- package/lib/action/index.d.ts +2 -2
- package/lib/action/shared/action.enums.d.ts +5 -5
- package/lib/action/shared/action.interfaces.d.ts +17 -17
- package/lib/action/shared/index.d.ts +3 -3
- package/lib/action/shared/store.d.ts +8 -8
- package/lib/backdrop/backdrop.component.d.ts +9 -9
- package/lib/backdrop/backdrop.module.d.ts +10 -10
- package/lib/backdrop/index.d.ts +1 -1
- package/lib/badge-icon/badge-icon.directive.d.ts +36 -36
- package/lib/badge-icon/badge-icon.module.d.ts +11 -11
- package/lib/badge-icon/index.d.ts +1 -1
- package/lib/clickout/clickout.directive.d.ts +10 -10
- package/lib/clickout/clickout.module.d.ts +9 -9
- package/lib/clickout/index.d.ts +1 -1
- package/lib/clone/clone.module.d.ts +9 -9
- package/lib/clone/clone.pipe.d.ts +7 -7
- package/lib/clone/index.d.ts +1 -1
- package/lib/collapsible/collapse.directive.d.ts +19 -19
- package/lib/collapsible/collapsible.component.d.ts +13 -13
- package/lib/collapsible/collapsible.module.d.ts +12 -12
- package/lib/collapsible/index.d.ts +2 -2
- package/lib/confirm-dialog/confirm-dialog.component.d.ts +9 -9
- package/lib/confirm-dialog/confirm-dialog.module.d.ts +12 -12
- package/lib/confirm-dialog/confirm-dialog.service.d.ts +10 -10
- package/lib/confirm-dialog/index.d.ts +2 -2
- package/lib/context-menu/context-menu.directive.d.ts +21 -21
- package/lib/context-menu/context-menu.module.d.ts +10 -10
- package/lib/context-menu/index.d.ts +2 -2
- package/lib/context-menu/long-press.directive.d.ts +20 -20
- package/lib/custom-html/custom-html.component.d.ts +9 -9
- package/lib/custom-html/custom-html.module.d.ts +16 -16
- package/lib/custom-html/custom-html.pipe.d.ts +10 -10
- package/lib/custom-html/index.d.ts +2 -2
- package/lib/dom/dom.interfaces.d.ts +10 -10
- package/lib/dom/dom.module.d.ts +8 -8
- package/lib/dom/dom.service.d.ts +10 -10
- package/lib/dom/index.d.ts +2 -2
- package/lib/drag-drop/drag-drop.directive.d.ts +14 -14
- package/lib/drag-drop/drag-drop.module.d.ts +9 -9
- package/lib/drag-drop/index.d.ts +1 -1
- package/lib/dynamic-component/dynamic-component.module.d.ts +8 -8
- package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +70 -70
- package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.d.ts +11 -11
- package/lib/dynamic-component/index.d.ts +2 -2
- package/lib/dynamic-component/shared/dynamic-component.d.ts +88 -88
- package/lib/dynamic-component/shared/dynamic-component.interfaces.d.ts +3 -3
- package/lib/dynamic-component/shared/dynamic-component.service.d.ts +18 -18
- package/lib/dynamic-component/shared/index.d.ts +3 -3
- package/lib/entity/entity-selector/entity-selector.component.d.ts +92 -92
- package/lib/entity/entity-selector/entity-selector.module.d.ts +13 -13
- package/lib/entity/entity-table/entity-table-row.directive.d.ts +69 -69
- package/lib/entity/entity-table/entity-table.component.d.ts +327 -327
- package/lib/entity/entity-table/entity-table.module.d.ts +29 -29
- package/lib/entity/entity-table-paginator/entity-table-paginator.component.d.ts +49 -49
- package/lib/entity/entity-table-paginator/entity-table-paginator.interface.d.ts +8 -8
- package/lib/entity/entity-table-paginator/entity-table-paginator.module.d.ts +11 -11
- package/lib/entity/entity.module.d.ts +10 -10
- package/lib/entity/index.d.ts +5 -5
- package/lib/entity/shared/entity.enums.d.ts +23 -23
- package/lib/entity/shared/entity.interfaces.d.ts +114 -114
- package/lib/entity/shared/entity.utils.d.ts +49 -49
- package/lib/entity/shared/index.d.ts +9 -9
- package/lib/entity/shared/state.d.ts +103 -103
- package/lib/entity/shared/store.d.ts +176 -176
- package/lib/entity/shared/strategies/filter-custom-function.d.ts +51 -51
- package/lib/entity/shared/strategies/filter-selection.d.ts +48 -48
- package/lib/entity/shared/strategies/index.d.ts +3 -3
- package/lib/entity/shared/strategies/strategy.d.ts +56 -56
- package/lib/entity/shared/transaction.d.ts +168 -168
- package/lib/entity/shared/view.d.ts +193 -193
- package/lib/entity/shared/watcher.d.ts +72 -72
- package/lib/flexible/flexible.component.d.ts +41 -41
- package/lib/flexible/flexible.module.d.ts +9 -9
- package/lib/flexible/flexible.type.d.ts +2 -2
- package/lib/flexible/index.d.ts +2 -2
- package/lib/form/form/form.component.d.ts +53 -53
- package/lib/form/form/form.module.d.ts +12 -12
- package/lib/form/form-field/form-field-select.component.d.ts +48 -48
- package/lib/form/form-field/form-field-text.component.d.ts +41 -41
- package/lib/form/form-field/form-field-textarea.component.d.ts +41 -41
- package/lib/form/form-field/form-field.component.d.ts +34 -34
- package/lib/form/form-field/form-field.module.d.ts +21 -21
- package/lib/form/form-field/index.d.ts +4 -4
- package/lib/form/form-group/form-group.component.d.ts +49 -49
- package/lib/form/form-group/form-group.module.d.ts +14 -14
- package/lib/form/form.module.d.ts +13 -13
- package/lib/form/index.d.ts +4 -4
- package/lib/form/shared/form-field-component.d.ts +1 -1
- package/lib/form/shared/form-field.service.d.ts +19 -19
- package/lib/form/shared/form.interfaces.d.ts +57 -57
- package/lib/form/shared/form.service.d.ts +15 -15
- package/lib/form/shared/form.utils.d.ts +11 -11
- package/lib/form/shared/index.d.ts +5 -5
- package/lib/home-button/home-button.component.d.ts +9 -9
- package/lib/home-button/home-button.module.d.ts +15 -15
- package/lib/home-button/index.d.ts +1 -1
- package/lib/image/image-error.directive.d.ts +11 -11
- package/lib/image/image.module.d.ts +10 -10
- package/lib/image/index.d.ts +2 -2
- package/lib/image/secure-image.pipe.d.ts +13 -13
- package/lib/interactive-tour/index.d.ts +4 -4
- package/lib/interactive-tour/interactive-tour.component.d.ts +30 -30
- package/lib/interactive-tour/interactive-tour.interface.d.ts +32 -32
- package/lib/interactive-tour/interactive-tour.loader.d.ts +18 -18
- package/lib/interactive-tour/interactive-tour.module.d.ts +12 -12
- package/lib/interactive-tour/interactive-tour.service.d.ts +29 -29
- package/lib/json-dialog/index.d.ts +2 -2
- package/lib/json-dialog/json-dialog.component.d.ts +13 -13
- package/lib/json-dialog/json-dialog.module.d.ts +13 -13
- package/lib/json-dialog/json-dialog.service.d.ts +10 -10
- package/lib/keyvalue/index.d.ts +1 -1
- package/lib/keyvalue/keyvalue.module.d.ts +9 -9
- package/lib/keyvalue/keyvalue.pipe.d.ts +7 -7
- package/lib/list/index.d.ts +2 -2
- package/lib/list/list-item.directive.d.ts +43 -43
- package/lib/list/list.component.d.ts +51 -51
- package/lib/list/list.module.d.ts +14 -14
- package/lib/panel/index.d.ts +1 -1
- package/lib/panel/panel.component.d.ts +10 -10
- package/lib/panel/panel.module.d.ts +8 -8
- package/lib/sidenav/index.d.ts +1 -1
- package/lib/sidenav/sidenav-shim.directive.d.ts +20 -20
- package/lib/sidenav/sidenav.module.d.ts +9 -9
- package/lib/spinner/index.d.ts +2 -2
- package/lib/spinner/spinner-activity.directive.d.ts +32 -32
- package/lib/spinner/spinner.component.d.ts +12 -12
- package/lib/spinner/spinner.module.d.ts +10 -10
- package/lib/stop-propagation/index.d.ts +2 -2
- package/lib/stop-propagation/stop-drop-propagation.directive.d.ts +6 -6
- package/lib/stop-propagation/stop-propagation.directive.d.ts +6 -6
- package/lib/stop-propagation/stop-propagation.module.d.ts +10 -10
- package/lib/table/index.d.ts +5 -5
- package/lib/table/table-action-color.enum.d.ts +5 -5
- package/lib/table/table-database.d.ts +10 -10
- package/lib/table/table-datasource.d.ts +17 -17
- package/lib/table/table-model.interface.d.ts +28 -28
- package/lib/table/table.component.d.ts +40 -40
- package/lib/table/table.module.d.ts +20 -20
- package/lib/tool/index.d.ts +2 -2
- package/lib/tool/shared/index.d.ts +5 -5
- package/lib/tool/shared/tool-component.d.ts +2 -2
- package/lib/tool/shared/tool.interface.d.ts +18 -18
- package/lib/tool/shared/tool.service.d.ts +30 -30
- package/lib/tool/shared/toolbox.d.ts +95 -95
- package/lib/tool/shared/toolbox.enums.d.ts +5 -5
- package/lib/tool/tool.module.d.ts +10 -10
- package/lib/tool/toolbox/toolbox.animation.d.ts +2 -2
- package/lib/tool/toolbox/toolbox.component.d.ts +127 -127
- package/lib/tool/toolbox/toolbox.module.d.ts +13 -13
- package/lib/widget/index.d.ts +2 -2
- package/lib/widget/shared/index.d.ts +3 -3
- package/lib/widget/shared/widget.d.ts +4 -4
- package/lib/widget/shared/widget.interfaces.d.ts +12 -12
- package/lib/widget/shared/widget.service.d.ts +10 -10
- package/lib/widget/widget-outlet/widget-outlet.component.d.ts +71 -71
- package/lib/widget/widget-outlet/widget-outlet.module.d.ts +12 -12
- package/lib/widget/widget.module.d.ts +8 -8
- package/lib/workspace/index.d.ts +3 -3
- package/lib/workspace/shared/index.d.ts +3 -3
- package/lib/workspace/shared/store.d.ts +20 -20
- package/lib/workspace/shared/workspace.d.ts +108 -108
- package/lib/workspace/shared/workspace.interfaces.d.ts +11 -11
- package/lib/workspace/workspace-selector/workspace-selector.component.d.ts +39 -39
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +12 -12
- package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +57 -57
- package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.d.ts +12 -12
- package/lib/workspace/workspace.module.d.ts +9 -9
- package/package.json +3 -3
- package/public_api.d.ts +70 -70
|
@@ -1,1368 +1,1368 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, Optional, Self } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
-
import { EntityTableColumnRenderer, EntityTableSelectionState, EntityTableScrollBehavior } from '../shared';
|
|
4
|
-
import { MatTableDataSource } from '@angular/material/table';
|
|
5
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
6
|
-
import { UntypedFormGroup } from '@angular/forms';
|
|
7
|
-
import { map } from 'rxjs/operators';
|
|
8
|
-
import { default as moment } from 'moment';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/forms";
|
|
11
|
-
import * as i2 from "@angular/cdk/a11y";
|
|
12
|
-
import * as i3 from "@angular/material/core";
|
|
13
|
-
import * as i4 from "@angular/common";
|
|
14
|
-
import * as i5 from "@angular/material/table";
|
|
15
|
-
import * as i6 from "@angular/material/autocomplete";
|
|
16
|
-
import * as i7 from "@angular/material/sort";
|
|
17
|
-
import * as i8 from "@angular/material/icon";
|
|
18
|
-
import * as i9 from "@angular/material/button";
|
|
19
|
-
import * as i10 from "@angular/material/checkbox";
|
|
20
|
-
import * as i11 from "@angular/material/form-field";
|
|
21
|
-
import * as i12 from "@angular/material/select";
|
|
22
|
-
import * as i13 from "../../stop-propagation/stop-propagation.directive";
|
|
23
|
-
import * as i14 from "../entity-table-paginator/entity-table-paginator.component";
|
|
24
|
-
import * as i15 from "../../image/image-error.directive";
|
|
25
|
-
import * as i16 from "@angular/material/input";
|
|
26
|
-
import * as i17 from "@angular/material/datepicker";
|
|
27
|
-
import * as i18 from "@angular/material/tooltip";
|
|
28
|
-
import * as i19 from "./entity-table-row.directive";
|
|
29
|
-
import * as i20 from "../../custom-html/custom-html.pipe";
|
|
30
|
-
import * as i21 from "../../image/secure-image.pipe";
|
|
31
|
-
import * as i22 from "@ngx-translate/core";
|
|
32
|
-
function EntityTableComponent_th_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
34
|
-
i0.ɵɵelementContainerStart(0);
|
|
35
|
-
i0.ɵɵelementStart(1, "mat-checkbox", 11);
|
|
36
|
-
i0.ɵɵlistener("change", function EntityTableComponent_th_3_ng_container_1_ng_container_1_Template_mat_checkbox_change_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r9.onToggleRows($event.checked)); });
|
|
37
|
-
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵelementContainerEnd();
|
|
39
|
-
} if (rf & 2) {
|
|
40
|
-
const selectionState_r8 = ctx.ngIf;
|
|
41
|
-
const ctx_r7 = i0.ɵɵnextContext(3);
|
|
42
|
-
i0.ɵɵadvance(1);
|
|
43
|
-
i0.ɵɵproperty("checked", selectionState_r8 === ctx_r7.entityTableSelectionState.All)("indeterminate", selectionState_r8 === ctx_r7.entityTableSelectionState.Some);
|
|
44
|
-
} }
|
|
45
|
-
function EntityTableComponent_th_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
-
i0.ɵɵelementContainerStart(0);
|
|
47
|
-
i0.ɵɵtemplate(1, EntityTableComponent_th_3_ng_container_1_ng_container_1_Template, 2, 2, "ng-container", 10);
|
|
48
|
-
i0.ɵɵpipe(2, "async");
|
|
49
|
-
i0.ɵɵelementContainerEnd();
|
|
50
|
-
} if (rf & 2) {
|
|
51
|
-
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
52
|
-
i0.ɵɵadvance(1);
|
|
53
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 1, ctx_r6.selectionState$));
|
|
54
|
-
} }
|
|
55
|
-
function EntityTableComponent_th_3_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
i0.ɵɵelementStart(0, "th", 9);
|
|
57
|
-
i0.ɵɵtemplate(1, EntityTableComponent_th_3_ng_container_1_Template, 3, 3, "ng-container", 10);
|
|
58
|
-
i0.ɵɵelementEnd();
|
|
59
|
-
} if (rf & 2) {
|
|
60
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
61
|
-
i0.ɵɵadvance(1);
|
|
62
|
-
i0.ɵɵproperty("ngIf", ctx_r0.selectMany);
|
|
63
|
-
} }
|
|
64
|
-
function EntityTableComponent_td_4_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
const _r14 = i0.ɵɵgetCurrentView();
|
|
66
|
-
i0.ɵɵelementStart(0, "td", 12)(1, "mat-checkbox", 13);
|
|
67
|
-
i0.ɵɵlistener("mousedown", function EntityTableComponent_td_4_Template_mat_checkbox_mousedown_1_listener($event) { return $event.shiftKey ? $event.preventDefault() : null; })("click", function EntityTableComponent_td_4_Template_mat_checkbox_click_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r14); const record_r11 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView($event.shiftKey ? ctx_r13.onShiftToggleRow(!ctx_r13.rowIsSelected(record_r11), record_r11, $event) : $event.stopPropagation()); })("change", function EntityTableComponent_td_4_Template_mat_checkbox_change_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r14); const record_r11 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.onToggleRow($event.checked, record_r11)); });
|
|
68
|
-
i0.ɵɵelementEnd()();
|
|
69
|
-
} if (rf & 2) {
|
|
70
|
-
const record_r11 = ctx.$implicit;
|
|
71
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
72
|
-
i0.ɵɵadvance(1);
|
|
73
|
-
i0.ɵɵproperty("checked", ctx_r1.rowIsSelected(record_r11));
|
|
74
|
-
} }
|
|
75
|
-
function EntityTableComponent_ng_container_5_ng_container_1_th_1_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
-
i0.ɵɵelementStart(0, "th", 16);
|
|
77
|
-
i0.ɵɵtext(1);
|
|
78
|
-
i0.ɵɵelementEnd();
|
|
79
|
-
} if (rf & 2) {
|
|
80
|
-
const column_r16 = i0.ɵɵnextContext(2).$implicit;
|
|
81
|
-
i0.ɵɵproperty("matTooltip", column_r16.tooltip ? column_r16.tooltip : undefined);
|
|
82
|
-
i0.ɵɵadvance(1);
|
|
83
|
-
i0.ɵɵtextInterpolate1(" ", column_r16.title, " ");
|
|
84
|
-
} }
|
|
85
|
-
function EntityTableComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
-
i0.ɵɵelementContainerStart(0);
|
|
87
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_1_th_1_Template, 2, 2, "th", 15);
|
|
88
|
-
i0.ɵɵelementContainerEnd();
|
|
89
|
-
} }
|
|
90
|
-
function EntityTableComponent_ng_container_5_ng_container_2_th_1_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
-
i0.ɵɵelementStart(0, "th", 18);
|
|
92
|
-
i0.ɵɵtext(1);
|
|
93
|
-
i0.ɵɵelementEnd();
|
|
94
|
-
} if (rf & 2) {
|
|
95
|
-
const column_r16 = i0.ɵɵnextContext(2).$implicit;
|
|
96
|
-
i0.ɵɵproperty("matTooltip", column_r16.tooltip ? column_r16.tooltip : undefined);
|
|
97
|
-
i0.ɵɵadvance(1);
|
|
98
|
-
i0.ɵɵtextInterpolate1(" ", column_r16.title, " ");
|
|
99
|
-
} }
|
|
100
|
-
function EntityTableComponent_ng_container_5_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
101
|
-
i0.ɵɵelementContainerStart(0);
|
|
102
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_2_th_1_Template, 2, 2, "th", 17);
|
|
103
|
-
i0.ɵɵelementContainerEnd();
|
|
104
|
-
} }
|
|
105
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
-
i0.ɵɵelementStart(0, "td", 22);
|
|
107
|
-
i0.ɵɵtext(1);
|
|
108
|
-
i0.ɵɵelementEnd();
|
|
109
|
-
} if (rf & 2) {
|
|
110
|
-
const record_r31 = i0.ɵɵnextContext().$implicit;
|
|
111
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
112
|
-
const ctx_r32 = i0.ɵɵnextContext();
|
|
113
|
-
i0.ɵɵproperty("ngClass", ctx_r32.getCellClass(record_r31, column_r16));
|
|
114
|
-
i0.ɵɵadvance(1);
|
|
115
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r32.getValue(record_r31, column_r16), " ");
|
|
116
|
-
} }
|
|
117
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
-
i0.ɵɵelement(0, "img", 26);
|
|
119
|
-
i0.ɵɵpipe(1, "async");
|
|
120
|
-
i0.ɵɵpipe(2, "secureImage");
|
|
121
|
-
} if (rf & 2) {
|
|
122
|
-
const record_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
123
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
124
|
-
const ctx_r37 = i0.ɵɵnextContext();
|
|
125
|
-
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r37.getValue(record_r31, column_r16))), i0.ɵɵsanitizeUrl);
|
|
126
|
-
} }
|
|
127
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
i0.ɵɵelementStart(0, "span");
|
|
129
|
-
i0.ɵɵtext(1);
|
|
130
|
-
i0.ɵɵpipe(2, "translate");
|
|
131
|
-
i0.ɵɵelementEnd();
|
|
132
|
-
} if (rf & 2) {
|
|
133
|
-
i0.ɵɵadvance(1);
|
|
134
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.common.entity-table.targetHtmlUrl"), " ");
|
|
135
|
-
} }
|
|
136
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
-
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
138
|
-
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
139
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_img_2_Template, 3, 5, "img", 24);
|
|
140
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
141
|
-
i0.ɵɵelementEnd()();
|
|
142
|
-
} if (rf & 2) {
|
|
143
|
-
const _r38 = i0.ɵɵreference(4);
|
|
144
|
-
const record_r31 = i0.ɵɵnextContext().$implicit;
|
|
145
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
146
|
-
const ctx_r34 = i0.ɵɵnextContext();
|
|
147
|
-
i0.ɵɵproperty("ngClass", ctx_r34.getCellClass(record_r31, column_r16));
|
|
148
|
-
i0.ɵɵadvance(1);
|
|
149
|
-
i0.ɵɵpropertyInterpolate("href", ctx_r34.getValue(record_r31, column_r16), i0.ɵɵsanitizeUrl);
|
|
150
|
-
i0.ɵɵadvance(1);
|
|
151
|
-
i0.ɵɵproperty("ngIf", ctx_r34.isImg(ctx_r34.getValue(record_r31, column_r16)))("ngIfElse", _r38);
|
|
152
|
-
} }
|
|
153
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
-
i0.ɵɵelementContainerStart(0);
|
|
155
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_td_1_Template, 2, 2, "td", 20);
|
|
156
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template, 5, 4, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
|
|
157
|
-
i0.ɵɵelementContainerEnd();
|
|
158
|
-
} if (rf & 2) {
|
|
159
|
-
const record_r31 = ctx.$implicit;
|
|
160
|
-
const _r33 = i0.ɵɵreference(3);
|
|
161
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
162
|
-
const ctx_r30 = i0.ɵɵnextContext();
|
|
163
|
-
i0.ɵɵadvance(1);
|
|
164
|
-
i0.ɵɵproperty("ngIf", !ctx_r30.isUrl(ctx_r30.getValue(record_r31, column_r16)))("ngIfElse", _r33);
|
|
165
|
-
} }
|
|
166
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementContainerStart(0);
|
|
168
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
169
|
-
i0.ɵɵelementContainerEnd();
|
|
170
|
-
} }
|
|
171
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
-
i0.ɵɵelement(0, "td", 29);
|
|
173
|
-
} if (rf & 2) {
|
|
174
|
-
const record_r47 = i0.ɵɵnextContext().$implicit;
|
|
175
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
176
|
-
const ctx_r48 = i0.ɵɵnextContext();
|
|
177
|
-
i0.ɵɵproperty("ngClass", ctx_r48.getCellClass(record_r47, column_r16))("innerHTML", ctx_r48.getValue(record_r47, column_r16), i0.ɵɵsanitizeHtml);
|
|
178
|
-
} }
|
|
179
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
180
|
-
i0.ɵɵelement(0, "img", 26);
|
|
181
|
-
i0.ɵɵpipe(1, "async");
|
|
182
|
-
i0.ɵɵpipe(2, "secureImage");
|
|
183
|
-
} if (rf & 2) {
|
|
184
|
-
const record_r47 = i0.ɵɵnextContext(2).$implicit;
|
|
185
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
186
|
-
const ctx_r53 = i0.ɵɵnextContext();
|
|
187
|
-
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r53.getValue(record_r47, column_r16))), i0.ɵɵsanitizeUrl);
|
|
188
|
-
} }
|
|
189
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
-
i0.ɵɵelementStart(0, "span");
|
|
191
|
-
i0.ɵɵtext(1);
|
|
192
|
-
i0.ɵɵpipe(2, "translate");
|
|
193
|
-
i0.ɵɵelementEnd();
|
|
194
|
-
} if (rf & 2) {
|
|
195
|
-
i0.ɵɵadvance(1);
|
|
196
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.targetHtmlUrl"), " ");
|
|
197
|
-
} }
|
|
198
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
200
|
-
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
201
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_img_2_Template, 3, 5, "img", 24);
|
|
202
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
203
|
-
i0.ɵɵelementEnd()();
|
|
204
|
-
} if (rf & 2) {
|
|
205
|
-
const _r54 = i0.ɵɵreference(4);
|
|
206
|
-
const record_r47 = i0.ɵɵnextContext().$implicit;
|
|
207
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
208
|
-
const ctx_r50 = i0.ɵɵnextContext();
|
|
209
|
-
i0.ɵɵproperty("ngClass", ctx_r50.getCellClass(record_r47, column_r16));
|
|
210
|
-
i0.ɵɵadvance(1);
|
|
211
|
-
i0.ɵɵpropertyInterpolate("href", ctx_r50.getValue(record_r47, column_r16), i0.ɵɵsanitizeUrl);
|
|
212
|
-
i0.ɵɵadvance(1);
|
|
213
|
-
i0.ɵɵproperty("ngIf", ctx_r50.isImg(ctx_r50.getValue(record_r47, column_r16)))("ngIfElse", _r54);
|
|
214
|
-
} }
|
|
215
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
-
i0.ɵɵelementContainerStart(0);
|
|
217
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_td_1_Template, 1, 2, "td", 27);
|
|
218
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template, 5, 4, "ng-template", null, 28, i0.ɵɵtemplateRefExtractor);
|
|
219
|
-
i0.ɵɵelementContainerEnd();
|
|
220
|
-
} if (rf & 2) {
|
|
221
|
-
const record_r47 = ctx.$implicit;
|
|
222
|
-
const _r49 = i0.ɵɵreference(3);
|
|
223
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
224
|
-
const ctx_r46 = i0.ɵɵnextContext();
|
|
225
|
-
i0.ɵɵadvance(1);
|
|
226
|
-
i0.ɵɵproperty("ngIf", !ctx_r46.isUrl(ctx_r46.getValue(record_r47, column_r16)))("ngIfElse", _r49);
|
|
227
|
-
} }
|
|
228
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
-
i0.ɵɵelementContainerStart(0);
|
|
230
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
231
|
-
i0.ɵɵelementContainerEnd();
|
|
232
|
-
} }
|
|
233
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
234
|
-
const _r79 = i0.ɵɵgetCurrentView();
|
|
235
|
-
i0.ɵɵelementStart(0, "div", 43);
|
|
236
|
-
i0.ɵɵelement(1, "mat-datepicker-toggle", 44);
|
|
237
|
-
i0.ɵɵelementStart(2, "input", 45);
|
|
238
|
-
i0.ɵɵlistener("dateChange", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template_input_dateChange_2_listener($event) { i0.ɵɵrestoreView(_r79); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r77 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r77.onDateChange(column_r16.name, record_r63, $event)); });
|
|
239
|
-
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelement(3, "mat-datepicker", null, 46);
|
|
241
|
-
i0.ɵɵelementEnd();
|
|
242
|
-
} if (rf & 2) {
|
|
243
|
-
const _r76 = i0.ɵɵreference(4);
|
|
244
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
245
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
246
|
-
const ctx_r67 = i0.ɵɵnextContext();
|
|
247
|
-
i0.ɵɵadvance(1);
|
|
248
|
-
i0.ɵɵproperty("for", _r76);
|
|
249
|
-
i0.ɵɵadvance(1);
|
|
250
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r67.getValue(record_r63, column_r16));
|
|
251
|
-
i0.ɵɵproperty("matDatepicker", _r76)("formControlName", column_r16.name);
|
|
252
|
-
} }
|
|
253
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
-
const _r85 = i0.ɵɵgetCurrentView();
|
|
255
|
-
i0.ɵɵelementStart(0, "input", 47);
|
|
256
|
-
i0.ɵɵlistener("focus", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_focus_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onFocus($event)); })("keypress", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_keypress_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onChange($event)); })("blur", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_blur_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onBlur($event)); });
|
|
257
|
-
i0.ɵɵelementEnd();
|
|
258
|
-
} if (rf & 2) {
|
|
259
|
-
const column_r16 = i0.ɵɵnextContext(5).$implicit;
|
|
260
|
-
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
261
|
-
} }
|
|
262
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template(rf, ctx) { if (rf & 1) {
|
|
263
|
-
const _r93 = i0.ɵɵgetCurrentView();
|
|
264
|
-
i0.ɵɵelementStart(0, "input", 48);
|
|
265
|
-
i0.ɵɵlistener("input", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r93); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r91 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r91.onValueChange(column_r16.name, record_r63, $event)); });
|
|
266
|
-
i0.ɵɵelementEnd();
|
|
267
|
-
} if (rf & 2) {
|
|
268
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
269
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
270
|
-
const ctx_r69 = i0.ɵɵnextContext();
|
|
271
|
-
i0.ɵɵpropertyInterpolate("step", column_r16.step);
|
|
272
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r69.getValue(record_r63, column_r16));
|
|
273
|
-
i0.ɵɵpropertyInterpolate("readonly", ctx_r69.getValidationAttributeValue(column_r16, "readonly"));
|
|
274
|
-
i0.ɵɵpropertyInterpolate("required", ctx_r69.getValidationAttributeValue(column_r16, "mandatory"));
|
|
275
|
-
i0.ɵɵpropertyInterpolate("min", ctx_r69.getValidationAttributeValue(column_r16, "minValue"));
|
|
276
|
-
i0.ɵɵpropertyInterpolate("max", ctx_r69.getValidationAttributeValue(column_r16, "maxValue"));
|
|
277
|
-
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
278
|
-
} }
|
|
279
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template(rf, ctx) { if (rf & 1) {
|
|
280
|
-
const _r99 = i0.ɵɵgetCurrentView();
|
|
281
|
-
i0.ɵɵelementStart(0, "input", 49);
|
|
282
|
-
i0.ɵɵlistener("input", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r99); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r97 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r97.onValueChange(column_r16.name, record_r63, $event)); });
|
|
283
|
-
i0.ɵɵelementEnd();
|
|
284
|
-
} if (rf & 2) {
|
|
285
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
286
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
287
|
-
const ctx_r70 = i0.ɵɵnextContext();
|
|
288
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r70.getValue(record_r63, column_r16));
|
|
289
|
-
i0.ɵɵpropertyInterpolate("readonly", ctx_r70.getValidationAttributeValue(column_r16, "readonly"));
|
|
290
|
-
i0.ɵɵpropertyInterpolate("required", ctx_r70.getValidationAttributeValue(column_r16, "mandatory"));
|
|
291
|
-
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
292
|
-
} }
|
|
293
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
-
const _r105 = i0.ɵɵgetCurrentView();
|
|
295
|
-
i0.ɵɵelementStart(0, "mat-checkbox", 50);
|
|
296
|
-
i0.ɵɵlistener("change", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template_mat_checkbox_change_0_listener($event) { i0.ɵɵrestoreView(_r105); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r103 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r103.onBooleanValueChange(column_r16.name, record_r63, $event)); });
|
|
297
|
-
i0.ɵɵelementEnd();
|
|
298
|
-
} if (rf & 2) {
|
|
299
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
300
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
301
|
-
const ctx_r71 = i0.ɵɵnextContext();
|
|
302
|
-
i0.ɵɵproperty("formControlName", column_r16.name)("checked", ctx_r71.getValue(record_r63, column_r16));
|
|
303
|
-
} }
|
|
304
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_mat_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
-
i0.ɵɵelementStart(0, "mat-option", 53);
|
|
306
|
-
i0.ɵɵtext(1);
|
|
307
|
-
i0.ɵɵelementEnd();
|
|
308
|
-
} if (rf & 2) {
|
|
309
|
-
const option_r110 = ctx.$implicit;
|
|
310
|
-
i0.ɵɵproperty("value", option_r110.id)("disabled", option_r110.disabled);
|
|
311
|
-
i0.ɵɵadvance(1);
|
|
312
|
-
i0.ɵɵtextInterpolate1(" ", option_r110.value, " ");
|
|
313
|
-
} }
|
|
314
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
-
const _r113 = i0.ɵɵgetCurrentView();
|
|
316
|
-
i0.ɵɵelementStart(0, "mat-select", 51);
|
|
317
|
-
i0.ɵɵlistener("selectionChange", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template_mat_select_selectionChange_0_listener($event) { i0.ɵɵrestoreView(_r113); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r111 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r111.onSelectValueChange(column_r16.name, record_r63, $event)); });
|
|
318
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_mat_option_1_Template, 2, 3, "mat-option", 52);
|
|
319
|
-
i0.ɵɵelementEnd();
|
|
320
|
-
} if (rf & 2) {
|
|
321
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
322
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
323
|
-
const ctx_r72 = i0.ɵɵnextContext();
|
|
324
|
-
i0.ɵɵpropertyInterpolate("required", ctx_r72.getValidationAttributeValue(column_r16, "mandatory"));
|
|
325
|
-
i0.ɵɵproperty("formControlName", column_r16.name)("multiple", column_r16.multiple)("value", ctx_r72.getValue(record_r63, column_r16));
|
|
326
|
-
i0.ɵɵadvance(1);
|
|
327
|
-
i0.ɵɵproperty("ngForOf", column_r16.domainValues);
|
|
328
|
-
} }
|
|
329
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_7_Template(rf, ctx) { if (rf & 1) {
|
|
330
|
-
i0.ɵɵelement(0, "input", 54);
|
|
331
|
-
} if (rf & 2) {
|
|
332
|
-
i0.ɵɵnextContext();
|
|
333
|
-
const _r74 = i0.ɵɵreference(9);
|
|
334
|
-
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
335
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
336
|
-
const ctx_r73 = i0.ɵɵnextContext();
|
|
337
|
-
i0.ɵɵpropertyInterpolate("required", ctx_r73.getValidationAttributeValue(column_r16, "mandatory"));
|
|
338
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r73.getValue(record_r63, column_r16));
|
|
339
|
-
i0.ɵɵpropertyInterpolate("readonly", ctx_r73.getValidationAttributeValue(column_r16, "readonly"));
|
|
340
|
-
i0.ɵɵproperty("formControlName", column_r16.name)("matAutocomplete", _r74);
|
|
341
|
-
} }
|
|
342
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_option_10_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
-
i0.ɵɵelementStart(0, "mat-option", 55);
|
|
344
|
-
i0.ɵɵtext(1);
|
|
345
|
-
i0.ɵɵelementEnd();
|
|
346
|
-
} if (rf & 2) {
|
|
347
|
-
const option_r119 = ctx.$implicit;
|
|
348
|
-
i0.ɵɵproperty("value", option_r119.id);
|
|
349
|
-
i0.ɵɵadvance(1);
|
|
350
|
-
i0.ɵɵtextInterpolate1(" ", option_r119.value, " ");
|
|
351
|
-
} }
|
|
352
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
-
const _r122 = i0.ɵɵgetCurrentView();
|
|
354
|
-
i0.ɵɵelementStart(0, "td", 32);
|
|
355
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template, 5, 4, "div", 33);
|
|
356
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template, 1, 1, "input", 34);
|
|
357
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template, 1, 7, "input", 35);
|
|
358
|
-
i0.ɵɵtemplate(4, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template, 1, 4, "input", 36);
|
|
359
|
-
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template, 1, 2, "mat-checkbox", 37);
|
|
360
|
-
i0.ɵɵtemplate(6, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template, 2, 5, "mat-select", 38);
|
|
361
|
-
i0.ɵɵtemplate(7, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_7_Template, 1, 5, "input", 39);
|
|
362
|
-
i0.ɵɵelementStart(8, "mat-autocomplete", 40, 41);
|
|
363
|
-
i0.ɵɵlistener("optionSelected", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template_mat_autocomplete_optionSelected_8_listener($event) { i0.ɵɵrestoreView(_r122); const record_r63 = i0.ɵɵnextContext().$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r120 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r120.onAutocompleteValueChange(column_r16, record_r63, $event)); });
|
|
364
|
-
i0.ɵɵtemplate(10, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_option_10_Template, 2, 2, "mat-option", 42);
|
|
365
|
-
i0.ɵɵpipe(11, "async");
|
|
366
|
-
i0.ɵɵelementEnd()();
|
|
367
|
-
} if (rf & 2) {
|
|
368
|
-
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
369
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
370
|
-
const ctx_r64 = i0.ɵɵnextContext();
|
|
371
|
-
i0.ɵɵproperty("formGroup", ctx_r64.formGroup)("ngClass", ctx_r64.getCellClass(record_r63, column_r16));
|
|
372
|
-
i0.ɵɵadvance(1);
|
|
373
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "date");
|
|
374
|
-
i0.ɵɵadvance(1);
|
|
375
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "time");
|
|
376
|
-
i0.ɵɵadvance(1);
|
|
377
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "number");
|
|
378
|
-
i0.ɵɵadvance(1);
|
|
379
|
-
i0.ɵɵproperty("ngIf", !column_r16.type || column_r16.type === "string");
|
|
380
|
-
i0.ɵɵadvance(1);
|
|
381
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "boolean");
|
|
382
|
-
i0.ɵɵadvance(1);
|
|
383
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "list");
|
|
384
|
-
i0.ɵɵadvance(1);
|
|
385
|
-
i0.ɵɵproperty("ngIf", column_r16.type === "autocomplete");
|
|
386
|
-
i0.ɵɵadvance(3);
|
|
387
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(11, 10, ctx_r64.filteredOptions[column_r16.name]));
|
|
388
|
-
} }
|
|
389
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_td_0_Template(rf, ctx) { if (rf & 1) {
|
|
390
|
-
i0.ɵɵelement(0, "td", 29);
|
|
391
|
-
i0.ɵɵpipe(1, "sanitizeHtml");
|
|
392
|
-
} if (rf & 2) {
|
|
393
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
394
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
395
|
-
const ctx_r126 = i0.ɵɵnextContext();
|
|
396
|
-
i0.ɵɵproperty("ngClass", ctx_r126.getCellClass(record_r63, column_r16))("innerHTML", i0.ɵɵpipeBind1(1, 2, ctx_r126.getValue(record_r63, column_r16)), i0.ɵɵsanitizeHtml);
|
|
397
|
-
} }
|
|
398
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
399
|
-
i0.ɵɵelement(0, "img", 26);
|
|
400
|
-
i0.ɵɵpipe(1, "async");
|
|
401
|
-
i0.ɵɵpipe(2, "secureImage");
|
|
402
|
-
} if (rf & 2) {
|
|
403
|
-
const record_r63 = i0.ɵɵnextContext(3).$implicit;
|
|
404
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
405
|
-
const ctx_r131 = i0.ɵɵnextContext();
|
|
406
|
-
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r131.getValue(record_r63, column_r16))), i0.ɵɵsanitizeUrl);
|
|
407
|
-
} }
|
|
408
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
409
|
-
i0.ɵɵelementStart(0, "span");
|
|
410
|
-
i0.ɵɵtext(1);
|
|
411
|
-
i0.ɵɵpipe(2, "translate");
|
|
412
|
-
i0.ɵɵelementEnd();
|
|
413
|
-
} if (rf & 2) {
|
|
414
|
-
i0.ɵɵadvance(1);
|
|
415
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.targetHtmlUrl"), " ");
|
|
416
|
-
} }
|
|
417
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
-
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
419
|
-
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
420
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_img_2_Template, 3, 5, "img", 24);
|
|
421
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
422
|
-
i0.ɵɵelementEnd()();
|
|
423
|
-
} if (rf & 2) {
|
|
424
|
-
const _r132 = i0.ɵɵreference(4);
|
|
425
|
-
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
426
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
427
|
-
const ctx_r128 = i0.ɵɵnextContext();
|
|
428
|
-
i0.ɵɵproperty("ngClass", ctx_r128.getCellClass(record_r63, column_r16));
|
|
429
|
-
i0.ɵɵadvance(1);
|
|
430
|
-
i0.ɵɵpropertyInterpolate("href", ctx_r128.getValue(record_r63, column_r16), i0.ɵɵsanitizeUrl);
|
|
431
|
-
i0.ɵɵadvance(1);
|
|
432
|
-
i0.ɵɵproperty("ngIf", ctx_r128.isImg(ctx_r128.getValue(record_r63, column_r16)))("ngIfElse", _r132);
|
|
433
|
-
} }
|
|
434
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
435
|
-
i0.ɵɵtemplate(0, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_td_0_Template, 2, 4, "td", 27);
|
|
436
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template, 5, 4, "ng-template", null, 56, i0.ɵɵtemplateRefExtractor);
|
|
437
|
-
} if (rf & 2) {
|
|
438
|
-
const _r127 = i0.ɵɵreference(2);
|
|
439
|
-
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
440
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
441
|
-
const ctx_r66 = i0.ɵɵnextContext();
|
|
442
|
-
i0.ɵɵproperty("ngIf", !ctx_r66.isUrl(ctx_r66.getValue(record_r63, column_r16)))("ngIfElse", _r127);
|
|
443
|
-
} }
|
|
444
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
-
i0.ɵɵelementContainerStart(0);
|
|
446
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template, 12, 12, "td", 30);
|
|
447
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_Template, 3, 2, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
|
|
448
|
-
i0.ɵɵelementContainerEnd();
|
|
449
|
-
} if (rf & 2) {
|
|
450
|
-
const record_r63 = ctx.$implicit;
|
|
451
|
-
const _r65 = i0.ɵɵreference(3);
|
|
452
|
-
const ctx_r62 = i0.ɵɵnextContext(4);
|
|
453
|
-
i0.ɵɵadvance(1);
|
|
454
|
-
i0.ɵɵproperty("ngIf", ctx_r62.isEdition(record_r63))("ngIfElse", _r65);
|
|
455
|
-
} }
|
|
456
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
457
|
-
i0.ɵɵelementContainerStart(0);
|
|
458
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
459
|
-
i0.ɵɵelementContainerEnd();
|
|
460
|
-
} }
|
|
461
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
-
const _r147 = i0.ɵɵgetCurrentView();
|
|
463
|
-
i0.ɵɵelementStart(0, "mat-icon", 60);
|
|
464
|
-
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r147); const column_r16 = i0.ɵɵnextContext(4).$implicit; return i0.ɵɵresetView(column_r16.onClick($event)); });
|
|
465
|
-
i0.ɵɵelementEnd();
|
|
466
|
-
} if (rf & 2) {
|
|
467
|
-
const record_r142 = i0.ɵɵnextContext().$implicit;
|
|
468
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
469
|
-
const ctx_r143 = i0.ɵɵnextContext();
|
|
470
|
-
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r143.getValue(record_r142, column_r16) || column_r16.icon);
|
|
471
|
-
} }
|
|
472
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
-
i0.ɵɵelement(0, "mat-icon", 61);
|
|
474
|
-
} if (rf & 2) {
|
|
475
|
-
const record_r142 = i0.ɵɵnextContext().$implicit;
|
|
476
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
477
|
-
const ctx_r144 = i0.ɵɵnextContext();
|
|
478
|
-
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r144.getValue(record_r142, column_r16) || column_r16.icon);
|
|
479
|
-
} }
|
|
480
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
-
i0.ɵɵelementStart(0, "td", 22);
|
|
482
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template, 1, 1, "mat-icon", 58);
|
|
483
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_2_Template, 1, 1, "mat-icon", 59);
|
|
484
|
-
i0.ɵɵelementEnd();
|
|
485
|
-
} if (rf & 2) {
|
|
486
|
-
const record_r142 = ctx.$implicit;
|
|
487
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
488
|
-
const ctx_r141 = i0.ɵɵnextContext();
|
|
489
|
-
i0.ɵɵproperty("ngClass", ctx_r141.getCellClass(record_r142, column_r16));
|
|
490
|
-
i0.ɵɵadvance(1);
|
|
491
|
-
i0.ɵɵproperty("ngIf", column_r16.onClick);
|
|
492
|
-
i0.ɵɵadvance(1);
|
|
493
|
-
i0.ɵɵproperty("ngIf", !column_r16.onClick);
|
|
494
|
-
} }
|
|
495
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
496
|
-
i0.ɵɵelementContainerStart(0);
|
|
497
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_Template, 3, 3, "td", 57);
|
|
498
|
-
i0.ɵɵelementContainerEnd();
|
|
499
|
-
} }
|
|
500
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
-
const _r162 = i0.ɵɵgetCurrentView();
|
|
502
|
-
i0.ɵɵelementStart(0, "button", 65);
|
|
503
|
-
i0.ɵɵlistener("mousedown", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template_button_mousedown_0_listener() { i0.ɵɵrestoreView(_r162); const button_r156 = i0.ɵɵnextContext(2).$implicit; const record_r154 = i0.ɵɵnextContext().$implicit; const ctx_r160 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r160.onButtonClick(button_r156.click, record_r154)); });
|
|
504
|
-
i0.ɵɵelement(1, "mat-icon", 61);
|
|
505
|
-
i0.ɵɵelementEnd();
|
|
506
|
-
} if (rf & 2) {
|
|
507
|
-
const button_r156 = i0.ɵɵnextContext(2).$implicit;
|
|
508
|
-
i0.ɵɵproperty("color", button_r156.color)("disabled", button_r156.disabled);
|
|
509
|
-
i0.ɵɵadvance(1);
|
|
510
|
-
i0.ɵɵpropertyInterpolate("svgIcon", button_r156.icon);
|
|
511
|
-
} }
|
|
512
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
-
const _r167 = i0.ɵɵgetCurrentView();
|
|
514
|
-
i0.ɵɵelementStart(0, "button", 66);
|
|
515
|
-
i0.ɵɵlistener("mousedown", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template_button_mousedown_0_listener() { i0.ɵɵrestoreView(_r167); const button_r156 = i0.ɵɵnextContext(2).$implicit; const record_r154 = i0.ɵɵnextContext().$implicit; const ctx_r165 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r165.onButtonClick(button_r156.click, record_r154)); });
|
|
516
|
-
i0.ɵɵelement(1, "mat-icon", 61);
|
|
517
|
-
i0.ɵɵelementEnd();
|
|
518
|
-
} if (rf & 2) {
|
|
519
|
-
const button_r156 = i0.ɵɵnextContext(2).$implicit;
|
|
520
|
-
i0.ɵɵproperty("color", button_r156.color)("disabled", button_r156.disabled);
|
|
521
|
-
i0.ɵɵadvance(1);
|
|
522
|
-
i0.ɵɵpropertyInterpolate("svgIcon", button_r156.icon);
|
|
523
|
-
} }
|
|
524
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
525
|
-
i0.ɵɵelementContainerStart(0);
|
|
526
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template, 2, 3, "button", 63);
|
|
527
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template, 2, 3, "button", 64);
|
|
528
|
-
i0.ɵɵelementContainerEnd();
|
|
529
|
-
} if (rf & 2) {
|
|
530
|
-
const button_r156 = i0.ɵɵnextContext().$implicit;
|
|
531
|
-
i0.ɵɵadvance(1);
|
|
532
|
-
i0.ɵɵproperty("ngIf", button_r156.style === "mat-icon-button");
|
|
533
|
-
i0.ɵɵadvance(1);
|
|
534
|
-
i0.ɵɵproperty("ngIf", button_r156.style !== "mat-icon-button");
|
|
535
|
-
} }
|
|
536
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
537
|
-
i0.ɵɵelementStart(0, "span");
|
|
538
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_Template, 3, 2, "ng-container", 10);
|
|
539
|
-
i0.ɵɵelementEnd();
|
|
540
|
-
} if (rf & 2) {
|
|
541
|
-
const button_r156 = ctx.$implicit;
|
|
542
|
-
const record_r154 = i0.ɵɵnextContext().$implicit;
|
|
543
|
-
const ctx_r155 = i0.ɵɵnextContext(4);
|
|
544
|
-
i0.ɵɵadvance(1);
|
|
545
|
-
i0.ɵɵproperty("ngIf", ctx_r155.isEdition(record_r154) === button_r156.editMode || button_r156.editMode === undefined);
|
|
546
|
-
} }
|
|
547
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
548
|
-
i0.ɵɵelementContainerStart(0);
|
|
549
|
-
i0.ɵɵelementStart(1, "td", 22);
|
|
550
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_Template, 2, 1, "span", 62);
|
|
551
|
-
i0.ɵɵelementEnd();
|
|
552
|
-
i0.ɵɵelementContainerEnd();
|
|
553
|
-
} if (rf & 2) {
|
|
554
|
-
const record_r154 = ctx.$implicit;
|
|
555
|
-
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
556
|
-
const ctx_r153 = i0.ɵɵnextContext();
|
|
557
|
-
i0.ɵɵadvance(1);
|
|
558
|
-
i0.ɵɵproperty("ngClass", ctx_r153.getCellClass(record_r154, column_r16));
|
|
559
|
-
i0.ɵɵadvance(1);
|
|
560
|
-
i0.ɵɵproperty("ngForOf", ctx_r153.getValue(record_r154, column_r16));
|
|
561
|
-
} }
|
|
562
|
-
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
563
|
-
i0.ɵɵelementContainerStart(0);
|
|
564
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_Template, 3, 2, "ng-container", 19);
|
|
565
|
-
i0.ɵɵelementContainerEnd();
|
|
566
|
-
} }
|
|
567
|
-
function EntityTableComponent_ng_container_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
568
|
-
i0.ɵɵelementContainerStart(0);
|
|
569
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_Template, 2, 0, "ng-container", 10);
|
|
570
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_Template, 2, 0, "ng-container", 10);
|
|
571
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_Template, 2, 0, "ng-container", 10);
|
|
572
|
-
i0.ɵɵtemplate(4, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_Template, 2, 0, "ng-container", 10);
|
|
573
|
-
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_Template, 2, 0, "ng-container", 10);
|
|
574
|
-
i0.ɵɵelementContainerEnd();
|
|
575
|
-
} if (rf & 2) {
|
|
576
|
-
const columnRenderer_r24 = ctx.ngIf;
|
|
577
|
-
const ctx_r19 = i0.ɵɵnextContext(2);
|
|
578
|
-
i0.ɵɵadvance(1);
|
|
579
|
-
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.Default);
|
|
580
|
-
i0.ɵɵadvance(1);
|
|
581
|
-
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.HTML);
|
|
582
|
-
i0.ɵɵadvance(1);
|
|
583
|
-
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.UnsanitizedHTML);
|
|
584
|
-
i0.ɵɵadvance(1);
|
|
585
|
-
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.Icon);
|
|
586
|
-
i0.ɵɵadvance(1);
|
|
587
|
-
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.ButtonGroup);
|
|
588
|
-
} }
|
|
589
|
-
function EntityTableComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
590
|
-
i0.ɵɵelementContainerStart(0, 14);
|
|
591
|
-
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_1_Template, 2, 0, "ng-container", 10);
|
|
592
|
-
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_2_Template, 2, 0, "ng-container", 10);
|
|
593
|
-
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_Template, 6, 5, "ng-container", 10);
|
|
594
|
-
i0.ɵɵelementContainerEnd();
|
|
595
|
-
} if (rf & 2) {
|
|
596
|
-
const column_r16 = ctx.$implicit;
|
|
597
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
598
|
-
i0.ɵɵproperty("matColumnDef", column_r16.name);
|
|
599
|
-
i0.ɵɵadvance(1);
|
|
600
|
-
i0.ɵɵproperty("ngIf", ctx_r2.columnIsSortable(column_r16));
|
|
601
|
-
i0.ɵɵadvance(1);
|
|
602
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.columnIsSortable(column_r16));
|
|
603
|
-
i0.ɵɵadvance(1);
|
|
604
|
-
i0.ɵɵproperty("ngIf", ctx_r2.getColumnRenderer(column_r16));
|
|
605
|
-
} }
|
|
606
|
-
function EntityTableComponent_tr_6_Template(rf, ctx) { if (rf & 1) {
|
|
607
|
-
i0.ɵɵelement(0, "tr", 67);
|
|
608
|
-
} if (rf & 2) {
|
|
609
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
610
|
-
i0.ɵɵproperty("ngClass", ctx_r3.getHeaderClass());
|
|
611
|
-
} }
|
|
612
|
-
function EntityTableComponent_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
613
|
-
const _r175 = i0.ɵɵgetCurrentView();
|
|
614
|
-
i0.ɵɵelementStart(0, "tr", 68);
|
|
615
|
-
i0.ɵɵlistener("select", function EntityTableComponent_tr_7_Template_tr_select_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r175); const record_r173 = restoredCtx.$implicit; const ctx_r174 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r174.onRowSelect(record_r173)); })("click", function EntityTableComponent_tr_7_Template_tr_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r175); const record_r173 = restoredCtx.$implicit; const ctx_r176 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r176.onRowClick(record_r173)); });
|
|
616
|
-
i0.ɵɵelementEnd();
|
|
617
|
-
} if (rf & 2) {
|
|
618
|
-
const record_r173 = ctx.$implicit;
|
|
619
|
-
const ctx_r4 = i0.ɵɵnextContext();
|
|
620
|
-
i0.ɵɵproperty("scrollBehavior", ctx_r4.scrollBehavior)("ngClass", ctx_r4.getRowClass(record_r173))("selection", ctx_r4.selection)("selected", ctx_r4.rowIsSelected(record_r173));
|
|
621
|
-
} }
|
|
622
|
-
function EntityTableComponent_igo_entity_table_paginator_8_Template(rf, ctx) { if (rf & 1) {
|
|
623
|
-
const _r178 = i0.ɵɵgetCurrentView();
|
|
624
|
-
i0.ɵɵelementStart(0, "igo-entity-table-paginator", 69);
|
|
625
|
-
i0.ɵɵlistener("paginatorChange", function EntityTableComponent_igo_entity_table_paginator_8_Template_igo_entity_table_paginator_paginatorChange_0_listener($event) { i0.ɵɵrestoreView(_r178); const ctx_r177 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r177.paginatorChange($event)); });
|
|
626
|
-
i0.ɵɵelementEnd();
|
|
627
|
-
} if (rf & 2) {
|
|
628
|
-
const ctx_r5 = i0.ɵɵnextContext();
|
|
629
|
-
i0.ɵɵproperty("store", ctx_r5.store)("paginatorOptions", ctx_r5.paginatorOptions)("entitySortChange$", ctx_r5.entitySortChange$);
|
|
630
|
-
} }
|
|
631
|
-
const _c0 = function (a0) { return { "height": a0 }; };
|
|
632
|
-
export class EntityTableComponent {
|
|
633
|
-
constructor(cdRef, formBuilder, _focusMonitor, _elementRef, ngControl, _parentForm, _controlName, _defaultErrorStateMatcher, dateAdapter) {
|
|
634
|
-
this.cdRef = cdRef;
|
|
635
|
-
this.formBuilder = formBuilder;
|
|
636
|
-
this._focusMonitor = _focusMonitor;
|
|
637
|
-
this._elementRef = _elementRef;
|
|
638
|
-
this.ngControl = ngControl;
|
|
639
|
-
this._parentForm = _parentForm;
|
|
640
|
-
this._controlName = _controlName;
|
|
641
|
-
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
642
|
-
this.dateAdapter = dateAdapter;
|
|
643
|
-
this.entitySortChange$ = new BehaviorSubject(false);
|
|
644
|
-
this.formGroup = new UntypedFormGroup({});
|
|
645
|
-
this.filteredOptions = {};
|
|
646
|
-
/**
|
|
647
|
-
* Reference to the column renderer types
|
|
648
|
-
* @internal
|
|
649
|
-
*/
|
|
650
|
-
this.entityTableColumnRenderer = EntityTableColumnRenderer;
|
|
651
|
-
/**
|
|
652
|
-
* Reference to the selection's state
|
|
653
|
-
* @internal
|
|
654
|
-
*/
|
|
655
|
-
this.entityTableSelectionState = EntityTableSelectionState;
|
|
656
|
-
/**
|
|
657
|
-
* Observable of the selection,s state
|
|
658
|
-
* @internal
|
|
659
|
-
*/
|
|
660
|
-
this.selectionState$ = new BehaviorSubject(undefined);
|
|
661
|
-
/**
|
|
662
|
-
* Scroll behavior on selection
|
|
663
|
-
*/
|
|
664
|
-
this.scrollBehavior = EntityTableScrollBehavior.Auto;
|
|
665
|
-
/**
|
|
666
|
-
* Whether nulls should be first when sorting
|
|
667
|
-
*/
|
|
668
|
-
this.sortNullsFirst = false;
|
|
669
|
-
/**
|
|
670
|
-
* Show the table paginator or not. False by default.
|
|
671
|
-
*/
|
|
672
|
-
this.withPaginator = false;
|
|
673
|
-
/**
|
|
674
|
-
* Event emitted when an entity (row) is clicked
|
|
675
|
-
*/
|
|
676
|
-
this.entityClick = new EventEmitter();
|
|
677
|
-
/**
|
|
678
|
-
* Event emitted when an entity (row) is selected
|
|
679
|
-
*/
|
|
680
|
-
this.entitySelectChange = new EventEmitter();
|
|
681
|
-
/**
|
|
682
|
-
* Event emitted when the table sort is changed.
|
|
683
|
-
*/
|
|
684
|
-
this.entitySortChange = new EventEmitter(undefined);
|
|
685
|
-
/**
|
|
686
|
-
* Data source consumable by the underlying material table
|
|
687
|
-
* @internal
|
|
688
|
-
*/
|
|
689
|
-
this.dataSource = new MatTableDataSource();
|
|
690
|
-
this.dateAdapter.setLocale('fr-CA');
|
|
691
|
-
}
|
|
692
|
-
/**
|
|
693
|
-
* Table paginator
|
|
694
|
-
*/
|
|
695
|
-
set paginator(value) {
|
|
696
|
-
this._paginator = value;
|
|
697
|
-
this.dataSource.paginator = value;
|
|
698
|
-
}
|
|
699
|
-
get paginator() {
|
|
700
|
-
return this._paginator;
|
|
701
|
-
}
|
|
702
|
-
/**
|
|
703
|
-
* Table headers
|
|
704
|
-
* @internal
|
|
705
|
-
*/
|
|
706
|
-
get headers() {
|
|
707
|
-
let columns = this.template.columns
|
|
708
|
-
.filter((column) => column.visible !== false)
|
|
709
|
-
.map((column) => column.name);
|
|
710
|
-
if (this.selectionCheckbox === true) {
|
|
711
|
-
columns = ['selectionCheckbox'].concat(columns);
|
|
712
|
-
}
|
|
713
|
-
return columns;
|
|
714
|
-
}
|
|
715
|
-
/**
|
|
716
|
-
* Whether selection is supported
|
|
717
|
-
* @internal
|
|
718
|
-
*/
|
|
719
|
-
get selection() { return this.template.selection || false; }
|
|
720
|
-
/**
|
|
721
|
-
* Whether a selection checkbox should be displayed
|
|
722
|
-
* @internal
|
|
723
|
-
*/
|
|
724
|
-
get selectionCheckbox() { return this.template.selectionCheckbox || false; }
|
|
725
|
-
/**
|
|
726
|
-
* Whether selection many entities should eb supported
|
|
727
|
-
* @internal
|
|
728
|
-
*/
|
|
729
|
-
get selectMany() { return this.template.selectMany || false; }
|
|
730
|
-
/**
|
|
731
|
-
* Whether selection many entities should eb supported
|
|
732
|
-
* @internal
|
|
733
|
-
*/
|
|
734
|
-
get fixedHeader() { return this.template.fixedHeader === undefined ? true : this.template.fixedHeader; }
|
|
735
|
-
get tableHeight() { return this.template.tableHeight ? this.template.tableHeight : 'auto'; }
|
|
736
|
-
/**
|
|
737
|
-
* Track the selection state to properly display the selection checkboxes
|
|
738
|
-
* @internal
|
|
739
|
-
*/
|
|
740
|
-
ngOnInit() {
|
|
741
|
-
this.handleDatasource();
|
|
742
|
-
this.dataSource.paginator = this.paginator;
|
|
743
|
-
}
|
|
744
|
-
/**
|
|
745
|
-
* @internal
|
|
746
|
-
*/
|
|
747
|
-
ngOnChanges(changes) {
|
|
748
|
-
const store = changes.store;
|
|
749
|
-
if (store && store.currentValue !== store.previousValue) {
|
|
750
|
-
this.handleDatasource();
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
/**
|
|
754
|
-
* Process text or number value change (edition)
|
|
755
|
-
*/
|
|
756
|
-
onValueChange(column, record, event) {
|
|
757
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
758
|
-
record.entity.properties[key] = event.target.value;
|
|
759
|
-
}
|
|
760
|
-
/**
|
|
761
|
-
* Process boolean value change (edition)
|
|
762
|
-
*/
|
|
763
|
-
onBooleanValueChange(column, record, event) {
|
|
764
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
765
|
-
record.entity.properties[key] = event.checked;
|
|
766
|
-
}
|
|
767
|
-
/**
|
|
768
|
-
* Process select value change (edition)
|
|
769
|
-
*/
|
|
770
|
-
onSelectValueChange(column, record, event) {
|
|
771
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
772
|
-
record.entity.properties[key] = event.value;
|
|
773
|
-
}
|
|
774
|
-
/**
|
|
775
|
-
* Process autocomplete value change (edition)
|
|
776
|
-
*/
|
|
777
|
-
onAutocompleteValueChange(column, record, event) {
|
|
778
|
-
this.formGroup.controls[column.name].setValue(event.option.viewValue);
|
|
779
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
780
|
-
record.entity.properties[key] = event.option.value;
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Process date value change (edition)
|
|
784
|
-
*/
|
|
785
|
-
onDateChange(column, record, event) {
|
|
786
|
-
const format = "YYYY-MM-DD";
|
|
787
|
-
const value = moment(event.value).format(format);
|
|
788
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
789
|
-
record.entity.properties[key] = value;
|
|
790
|
-
}
|
|
791
|
-
/**
|
|
792
|
-
* Enable edition mode for one row
|
|
793
|
-
* More than one row can be edited at the same time
|
|
794
|
-
*/
|
|
795
|
-
enableEdit(record) {
|
|
796
|
-
const item = record.entity.properties || record.entity;
|
|
797
|
-
this.template.columns.forEach(column => {
|
|
798
|
-
column.title = column.validation?.mandatory && !column.title.includes('*') ? column.title + ' *' : column.title;
|
|
799
|
-
const key = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
800
|
-
if (column.type === 'boolean') {
|
|
801
|
-
if (!item[key] || item[key] === null) {
|
|
802
|
-
item[key] = false;
|
|
803
|
-
}
|
|
804
|
-
else if (typeof item[key] === 'string') {
|
|
805
|
-
item[key] = JSON.parse(item[key].toLowerCase());
|
|
806
|
-
}
|
|
807
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
808
|
-
}
|
|
809
|
-
else if (column.type === 'list') {
|
|
810
|
-
if (column.multiple) {
|
|
811
|
-
this.formGroup.setControl(column.name, this.formBuilder.control([item[key]]));
|
|
812
|
-
}
|
|
813
|
-
else {
|
|
814
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
815
|
-
typeof item[key] === 'string' ?
|
|
816
|
-
this.formGroup.controls[column.name].setValue(parseInt(item[key])) :
|
|
817
|
-
this.formGroup.controls[column.name].setValue(item[key]);
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
else if (column.type === 'autocomplete') {
|
|
821
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
822
|
-
this.filteredOptions[column.name] = new Observable();
|
|
823
|
-
this.filteredOptions[column.name] =
|
|
824
|
-
this.formGroup.controls[column.name].valueChanges.pipe(map(value => {
|
|
825
|
-
if (value?.length) {
|
|
826
|
-
return column.domainValues?.filter((option) => {
|
|
827
|
-
const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
|
|
828
|
-
const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
829
|
-
return featureNameNormalized.includes(filterNormalized);
|
|
830
|
-
});
|
|
831
|
-
}
|
|
832
|
-
}));
|
|
833
|
-
let formControlValue = item[key];
|
|
834
|
-
column.domainValues.forEach(option => {
|
|
835
|
-
if (typeof formControlValue === 'string' && /^\d+$/.test(formControlValue)) {
|
|
836
|
-
formControlValue = parseInt(formControlValue);
|
|
837
|
-
}
|
|
838
|
-
if (option.value === formControlValue || option.id === formControlValue) {
|
|
839
|
-
formControlValue = option.value;
|
|
840
|
-
}
|
|
841
|
-
});
|
|
842
|
-
this.formGroup.controls[column.name].setValue(formControlValue);
|
|
843
|
-
if (this.isEdition(record) && column.linkColumnForce) {
|
|
844
|
-
const entity = record.entity;
|
|
845
|
-
this.formGroup.controls[column.name].setValue(entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)]);
|
|
846
|
-
}
|
|
847
|
-
}
|
|
848
|
-
else if (column.type === 'date') {
|
|
849
|
-
if (column.visible !== false) {
|
|
850
|
-
if (item[key]) {
|
|
851
|
-
let date = moment(item[key]);
|
|
852
|
-
item[key] = date.utc().format('YYYY-MM-DD');
|
|
853
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
854
|
-
}
|
|
855
|
-
else {
|
|
856
|
-
const newKey = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
857
|
-
record.entity.properties[newKey] = null;
|
|
858
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(null));
|
|
859
|
-
}
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
else {
|
|
863
|
-
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
864
|
-
}
|
|
865
|
-
if (this.formGroup.controls[column.name] && this.getValidationAttributeValue(column, 'readonly')) {
|
|
866
|
-
this.formGroup.controls[column.name].disable();
|
|
867
|
-
}
|
|
868
|
-
});
|
|
869
|
-
}
|
|
870
|
-
handleDatasource() {
|
|
871
|
-
this.unsubscribeStore();
|
|
872
|
-
this.selection$$ = this.store.stateView
|
|
873
|
-
.manyBy$((record) => record.state.selected === true)
|
|
874
|
-
.subscribe((records) => {
|
|
875
|
-
const firstSelected = records[0];
|
|
876
|
-
const firstSelectedStateviewPosition = this.store.stateView.all().indexOf(firstSelected);
|
|
877
|
-
const pageMax = this.paginator ? this.paginator.pageSize * (this.paginator.pageIndex + 1) : 0;
|
|
878
|
-
const pageMin = this.paginator ? pageMax - this.paginator.pageSize : 0;
|
|
879
|
-
if (this.paginator &&
|
|
880
|
-
(firstSelectedStateviewPosition < pageMin ||
|
|
881
|
-
firstSelectedStateviewPosition >= pageMax)) {
|
|
882
|
-
const pageToReach = Math.floor(firstSelectedStateviewPosition / this.paginator.pageSize);
|
|
883
|
-
this.dataSource.paginator.pageIndex = pageToReach;
|
|
884
|
-
}
|
|
885
|
-
this.selectionState$.next(this.computeSelectionState(records));
|
|
886
|
-
});
|
|
887
|
-
this.dataSource$$ = this.store.stateView.all$().subscribe((all) => {
|
|
888
|
-
if (all[0]) {
|
|
889
|
-
this.enableEdit(all[0]);
|
|
890
|
-
}
|
|
891
|
-
this.dataSource.data = all;
|
|
892
|
-
});
|
|
893
|
-
}
|
|
894
|
-
/**
|
|
895
|
-
* Unbind the store watcher
|
|
896
|
-
* @internal
|
|
897
|
-
*/
|
|
898
|
-
ngOnDestroy() {
|
|
899
|
-
this.unsubscribeStore();
|
|
900
|
-
}
|
|
901
|
-
unsubscribeStore() {
|
|
902
|
-
if (this.selection$$) {
|
|
903
|
-
this.selection$$.unsubscribe();
|
|
904
|
-
}
|
|
905
|
-
if (this.dataSource$$) {
|
|
906
|
-
this.dataSource$$.unsubscribe();
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
/**
|
|
910
|
-
* Trackby function
|
|
911
|
-
* @param record Record
|
|
912
|
-
* @param index Record index
|
|
913
|
-
* @internal
|
|
914
|
-
*/
|
|
915
|
-
getTrackByFunction() {
|
|
916
|
-
return (index, record) => {
|
|
917
|
-
return record.ref;
|
|
918
|
-
};
|
|
919
|
-
}
|
|
920
|
-
/**
|
|
921
|
-
* Trigger a refresh of thre table. This can be useful when
|
|
922
|
-
* the data source doesn't emit a new value but for some reason
|
|
923
|
-
* the records need an update.
|
|
924
|
-
* @internal
|
|
925
|
-
*/
|
|
926
|
-
refresh() {
|
|
927
|
-
this.cdRef.detectChanges();
|
|
928
|
-
}
|
|
929
|
-
paginatorChange(event) {
|
|
930
|
-
this.paginator = event;
|
|
931
|
-
}
|
|
932
|
-
/**
|
|
933
|
-
* On sort, sort the store
|
|
934
|
-
* @param event Sort event
|
|
935
|
-
* @internal
|
|
936
|
-
*/
|
|
937
|
-
onSort(event) {
|
|
938
|
-
const direction = event.direction;
|
|
939
|
-
const column = this.template.columns
|
|
940
|
-
.find((c) => c.name === event.active);
|
|
941
|
-
if (direction === 'asc' || direction === 'desc') {
|
|
942
|
-
this.store.stateView.sort({
|
|
943
|
-
valueAccessor: (record) => this.getValue(record, column),
|
|
944
|
-
direction,
|
|
945
|
-
nullsFirst: this.sortNullsFirst
|
|
946
|
-
});
|
|
947
|
-
this.entitySortChange.emit({ column, direction });
|
|
948
|
-
this.entitySortChange$.next(true);
|
|
949
|
-
}
|
|
950
|
-
else {
|
|
951
|
-
this.store.stateView.sort(undefined);
|
|
952
|
-
}
|
|
953
|
-
}
|
|
954
|
-
/**
|
|
955
|
-
* When an entity is clicked, emit an event
|
|
956
|
-
* @param record Record
|
|
957
|
-
* @internal
|
|
958
|
-
*/
|
|
959
|
-
onRowClick(record) {
|
|
960
|
-
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
961
|
-
this.entityClick.emit(record.entity);
|
|
962
|
-
}
|
|
963
|
-
/**
|
|
964
|
-
* When an entity is selected, select it in the store and emit an event. Even if
|
|
965
|
-
* "many" is set to true, this method always select a single, exclusive row. Selecting
|
|
966
|
-
* multiple rows should be achieved by using the checkboxes.
|
|
967
|
-
* @param record Record
|
|
968
|
-
* @internal
|
|
969
|
-
*/
|
|
970
|
-
onRowSelect(record) {
|
|
971
|
-
if (this.selection === false) {
|
|
972
|
-
return;
|
|
973
|
-
}
|
|
974
|
-
const entity = record.entity;
|
|
975
|
-
this.store.state.update(entity, { selected: true }, true);
|
|
976
|
-
this.entitySelectChange.emit({ added: [entity] });
|
|
977
|
-
}
|
|
978
|
-
/**
|
|
979
|
-
* Select or unselect all rows at once. On select, emit an event.
|
|
980
|
-
* @param toggle Select or unselect
|
|
981
|
-
* @internal
|
|
982
|
-
*/
|
|
983
|
-
onToggleRows(toggle) {
|
|
984
|
-
if (this.selection === false) {
|
|
985
|
-
return;
|
|
986
|
-
}
|
|
987
|
-
this.store.state.updateAll({ selected: toggle });
|
|
988
|
-
if (toggle === true) {
|
|
989
|
-
const entities = this.store.stateView
|
|
990
|
-
.all()
|
|
991
|
-
.map((record) => record.entity);
|
|
992
|
-
this.entitySelectChange.emit({ added: [entities] });
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
|
-
/**
|
|
996
|
-
* When an entity is toggled, select or unselect it in the store. On select,
|
|
997
|
-
* emit an event.
|
|
998
|
-
* @param toggle Select or unselect
|
|
999
|
-
* @param record Record
|
|
1000
|
-
* @internal
|
|
1001
|
-
*/
|
|
1002
|
-
onToggleRow(toggle, record) {
|
|
1003
|
-
if (this.selection === false) {
|
|
1004
|
-
return;
|
|
1005
|
-
}
|
|
1006
|
-
const entity = record.entity;
|
|
1007
|
-
const exclusive = toggle === true && !this.selectMany;
|
|
1008
|
-
this.store.state.update(entity, { selected: toggle }, exclusive);
|
|
1009
|
-
if (toggle === true) {
|
|
1010
|
-
this.entitySelectChange.emit({ added: [entity] });
|
|
1011
|
-
}
|
|
1012
|
-
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* When an entity is toggled, select or unselect it in the store. On select,
|
|
1016
|
-
* emit an event.
|
|
1017
|
-
* @param toggle Select or unselect
|
|
1018
|
-
* @param record Record
|
|
1019
|
-
* @internal
|
|
1020
|
-
*/
|
|
1021
|
-
onShiftToggleRow(toggle, record, event) {
|
|
1022
|
-
if (this.selection === false) {
|
|
1023
|
-
return;
|
|
1024
|
-
}
|
|
1025
|
-
if (this.selectMany === false || this.lastRecordCheckedKey === undefined) {
|
|
1026
|
-
this.onToggleRow(toggle, record);
|
|
1027
|
-
return;
|
|
1028
|
-
}
|
|
1029
|
-
// This is a workaround mat checkbox wrong behavior
|
|
1030
|
-
// when the shift key is held.
|
|
1031
|
-
// See https://github.com/angular/components/issues/6232
|
|
1032
|
-
const range = window.document.createRange();
|
|
1033
|
-
range.selectNode(event.target);
|
|
1034
|
-
window.getSelection().removeAllRanges();
|
|
1035
|
-
window.getSelection().addRange(range);
|
|
1036
|
-
event.stopImmediatePropagation();
|
|
1037
|
-
const records = this.store.stateView.all();
|
|
1038
|
-
const recordIndex = records.indexOf(record);
|
|
1039
|
-
const lastRecordChecked = this.store.stateView.get(this.lastRecordCheckedKey);
|
|
1040
|
-
const lastRecordIndex = records.indexOf(lastRecordChecked);
|
|
1041
|
-
const indexes = [recordIndex, lastRecordIndex];
|
|
1042
|
-
const selectRecords = records.slice(Math.min(...indexes), Math.max(...indexes) + 1);
|
|
1043
|
-
const entities = selectRecords.map((_record) => _record.entity);
|
|
1044
|
-
this.store.state.updateMany(entities, { selected: toggle });
|
|
1045
|
-
if (toggle === true) {
|
|
1046
|
-
this.entitySelectChange.emit({ added: entities });
|
|
1047
|
-
}
|
|
1048
|
-
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
1049
|
-
}
|
|
1050
|
-
/**
|
|
1051
|
-
* Compute the selection state
|
|
1052
|
-
* @returns Whether all, some or no rows are selected
|
|
1053
|
-
* @internal
|
|
1054
|
-
*/
|
|
1055
|
-
computeSelectionState(selectedRecords) {
|
|
1056
|
-
const states = EntityTableSelectionState;
|
|
1057
|
-
const selectionCount = selectedRecords.length;
|
|
1058
|
-
return selectionCount === 0 ?
|
|
1059
|
-
states.None :
|
|
1060
|
-
(selectionCount === this.store.stateView.count ? states.All : states.Some);
|
|
1061
|
-
}
|
|
1062
|
-
/**
|
|
1063
|
-
* Whether a column is sortable
|
|
1064
|
-
* @param column Column
|
|
1065
|
-
* @returns True if a column is sortable
|
|
1066
|
-
* @internal
|
|
1067
|
-
*/
|
|
1068
|
-
columnIsSortable(column) {
|
|
1069
|
-
let sortable = column.sort;
|
|
1070
|
-
if (sortable === undefined) {
|
|
1071
|
-
sortable = this.template.sort === undefined ? false : this.template.sort;
|
|
1072
|
-
}
|
|
1073
|
-
return sortable;
|
|
1074
|
-
}
|
|
1075
|
-
/**
|
|
1076
|
-
* Whether a row is should be selected based on the underlying entity state
|
|
1077
|
-
* @param record Record
|
|
1078
|
-
* @returns True if a row should be selected
|
|
1079
|
-
* @internal
|
|
1080
|
-
*/
|
|
1081
|
-
rowIsSelected(record) {
|
|
1082
|
-
const state = record.state;
|
|
1083
|
-
return state.selected ? state.selected : false;
|
|
1084
|
-
}
|
|
1085
|
-
isImg(value) {
|
|
1086
|
-
if (this.isUrl(value)) {
|
|
1087
|
-
return (['jpg', 'png', 'gif'].indexOf(value.split('.').pop().toLowerCase()) !== -1);
|
|
1088
|
-
}
|
|
1089
|
-
else {
|
|
1090
|
-
return false;
|
|
1091
|
-
}
|
|
1092
|
-
}
|
|
1093
|
-
isUrl(value) {
|
|
1094
|
-
if (typeof value === 'string') {
|
|
1095
|
-
return (value.slice(0, 8) === 'https://' || value.slice(0, 7) === 'http://');
|
|
1096
|
-
}
|
|
1097
|
-
else {
|
|
1098
|
-
return false;
|
|
1099
|
-
}
|
|
1100
|
-
}
|
|
1101
|
-
/**
|
|
1102
|
-
* Method to access an entity's values
|
|
1103
|
-
* @param record Record
|
|
1104
|
-
* @param column Column
|
|
1105
|
-
* @returns Any value
|
|
1106
|
-
* @internal
|
|
1107
|
-
*/
|
|
1108
|
-
getValue(record, column) {
|
|
1109
|
-
const entity = record.entity;
|
|
1110
|
-
let value;
|
|
1111
|
-
if (column.valueAccessor !== undefined) {
|
|
1112
|
-
return column.valueAccessor(entity, record);
|
|
1113
|
-
}
|
|
1114
|
-
if (this.template.valueAccessor !== undefined) {
|
|
1115
|
-
return this.template.valueAccessor(entity, column.name, record);
|
|
1116
|
-
}
|
|
1117
|
-
value = this.store.getProperty(entity, column.name);
|
|
1118
|
-
if (column.type === 'boolean') {
|
|
1119
|
-
if (value === undefined || value === null || value === '') {
|
|
1120
|
-
value = false;
|
|
1121
|
-
}
|
|
1122
|
-
else if (typeof value !== 'boolean' && value !== undefined) {
|
|
1123
|
-
if (typeof value === 'number') {
|
|
1124
|
-
value = Boolean(value);
|
|
1125
|
-
}
|
|
1126
|
-
else {
|
|
1127
|
-
value = JSON.parse(value.toLowerCase());
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
if (!this.isEdition(record)) {
|
|
1131
|
-
value = value ? '✓' : ''; // check mark
|
|
1132
|
-
}
|
|
1133
|
-
}
|
|
1134
|
-
else if (column.type === 'list' && value && column.domainValues) {
|
|
1135
|
-
const entity = record.entity;
|
|
1136
|
-
if (column.multiple) {
|
|
1137
|
-
let list_id;
|
|
1138
|
-
typeof value === 'string' ? list_id = value.match(/[\w.-]+/g).map(Number) : list_id = value;
|
|
1139
|
-
let list_option = [];
|
|
1140
|
-
column.domainValues.forEach(option => {
|
|
1141
|
-
if (list_id.includes(option.id)) {
|
|
1142
|
-
if (record.edition) {
|
|
1143
|
-
list_option.push(option.id);
|
|
1144
|
-
}
|
|
1145
|
-
else {
|
|
1146
|
-
list_option.push(option.value);
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
});
|
|
1150
|
-
this.isEdition(record) ? value = list_id : value = list_option;
|
|
1151
|
-
}
|
|
1152
|
-
else {
|
|
1153
|
-
if (!this.isEdition(record) && column.linkColumnForce) {
|
|
1154
|
-
value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];
|
|
1155
|
-
}
|
|
1156
|
-
else {
|
|
1157
|
-
column.domainValues.forEach(option => {
|
|
1158
|
-
if (typeof value === 'string' && /^\d+$/.test(value)) {
|
|
1159
|
-
value = parseInt(value);
|
|
1160
|
-
}
|
|
1161
|
-
if (option.value === value || option.id === value) {
|
|
1162
|
-
this.isEdition(record) ? value = option.id : value = option.value;
|
|
1163
|
-
}
|
|
1164
|
-
});
|
|
1165
|
-
}
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
|
-
else if (column.type === 'autocomplete' && value && column.domainValues) {
|
|
1169
|
-
const entity = record.entity;
|
|
1170
|
-
if (!this.isEdition(record) && column.linkColumnForce) {
|
|
1171
|
-
value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];
|
|
1172
|
-
}
|
|
1173
|
-
else {
|
|
1174
|
-
column.domainValues.forEach(option => {
|
|
1175
|
-
if (typeof value === 'string' && /^\d+$/.test(value)) {
|
|
1176
|
-
value = parseInt(value);
|
|
1177
|
-
}
|
|
1178
|
-
if (option.value === value || option.id === value) {
|
|
1179
|
-
value = option.value;
|
|
1180
|
-
}
|
|
1181
|
-
});
|
|
1182
|
-
}
|
|
1183
|
-
}
|
|
1184
|
-
else if (column.type === 'date') {
|
|
1185
|
-
if (this.isEdition(record)) {
|
|
1186
|
-
if (value) {
|
|
1187
|
-
let date = moment(value);
|
|
1188
|
-
value = date.format();
|
|
1189
|
-
this.formGroup.controls[column.name].setValue(value);
|
|
1190
|
-
}
|
|
1191
|
-
}
|
|
1192
|
-
else if (!this.isEdition(record) && value === null) {
|
|
1193
|
-
value = "";
|
|
1194
|
-
}
|
|
1195
|
-
}
|
|
1196
|
-
if (value === undefined) {
|
|
1197
|
-
value = '';
|
|
1198
|
-
}
|
|
1199
|
-
return value;
|
|
1200
|
-
}
|
|
1201
|
-
/**
|
|
1202
|
-
* Method to access an entity's validation values
|
|
1203
|
-
* @param column Column
|
|
1204
|
-
* @param validationType string
|
|
1205
|
-
* @returns Any value (false if no validation or not the one concerned)
|
|
1206
|
-
* @internal
|
|
1207
|
-
*/
|
|
1208
|
-
getValidationAttributeValue(column, validationType) {
|
|
1209
|
-
if (column.validation !== undefined && column.validation[validationType] !== undefined) {
|
|
1210
|
-
return column.validation[validationType];
|
|
1211
|
-
}
|
|
1212
|
-
else {
|
|
1213
|
-
return false;
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
|
-
isEdition(record) {
|
|
1217
|
-
return record.entity.edition ? true : false;
|
|
1218
|
-
}
|
|
1219
|
-
/**
|
|
1220
|
-
* Return the type of renderer of a column
|
|
1221
|
-
* @param column Column
|
|
1222
|
-
* @returns Renderer type
|
|
1223
|
-
* @internal
|
|
1224
|
-
*/
|
|
1225
|
-
getColumnRenderer(column) {
|
|
1226
|
-
if (column.renderer !== undefined) {
|
|
1227
|
-
return column.renderer;
|
|
1228
|
-
}
|
|
1229
|
-
return EntityTableColumnRenderer.Default;
|
|
1230
|
-
}
|
|
1231
|
-
/**
|
|
1232
|
-
* Return the table ngClass
|
|
1233
|
-
* @returns ngClass
|
|
1234
|
-
* @internal
|
|
1235
|
-
*/
|
|
1236
|
-
getTableClass() {
|
|
1237
|
-
return {
|
|
1238
|
-
'igo-entity-table-with-selection': this.selection
|
|
1239
|
-
};
|
|
1240
|
-
}
|
|
1241
|
-
/**
|
|
1242
|
-
* Return a header ngClass
|
|
1243
|
-
* @returns ngClass
|
|
1244
|
-
* @internal
|
|
1245
|
-
*/
|
|
1246
|
-
getHeaderClass() {
|
|
1247
|
-
const func = this.template.headerClassFunc;
|
|
1248
|
-
if (func instanceof Function) {
|
|
1249
|
-
return func();
|
|
1250
|
-
}
|
|
1251
|
-
return {};
|
|
1252
|
-
}
|
|
1253
|
-
/**
|
|
1254
|
-
* Return a row ngClass
|
|
1255
|
-
* @param record Record
|
|
1256
|
-
* @returns ngClass
|
|
1257
|
-
* @internal
|
|
1258
|
-
*/
|
|
1259
|
-
getRowClass(record) {
|
|
1260
|
-
const entity = record.entity;
|
|
1261
|
-
const func = this.template.rowClassFunc;
|
|
1262
|
-
if (func instanceof Function) {
|
|
1263
|
-
return func(entity, record);
|
|
1264
|
-
}
|
|
1265
|
-
return {};
|
|
1266
|
-
}
|
|
1267
|
-
/**
|
|
1268
|
-
* Return a row ngClass
|
|
1269
|
-
* @param record Record
|
|
1270
|
-
* @param column Column
|
|
1271
|
-
* @returns ngClass
|
|
1272
|
-
* @internal
|
|
1273
|
-
*/
|
|
1274
|
-
getCellClass(record, column) {
|
|
1275
|
-
const entity = record.entity;
|
|
1276
|
-
const cls = {};
|
|
1277
|
-
const tableFunc = this.template.cellClassFunc;
|
|
1278
|
-
if (tableFunc instanceof Function) {
|
|
1279
|
-
Object.assign(cls, tableFunc(entity, column, record));
|
|
1280
|
-
}
|
|
1281
|
-
const columnFunc = column.cellClassFunc;
|
|
1282
|
-
if (columnFunc instanceof Function) {
|
|
1283
|
-
Object.assign(cls, columnFunc(entity, record));
|
|
1284
|
-
}
|
|
1285
|
-
return cls;
|
|
1286
|
-
}
|
|
1287
|
-
/**
|
|
1288
|
-
* When a button is clicked
|
|
1289
|
-
* @param func Function
|
|
1290
|
-
* @param record Record
|
|
1291
|
-
* @internal
|
|
1292
|
-
*/
|
|
1293
|
-
onButtonClick(clickFunc, record) {
|
|
1294
|
-
this.enableEdit(record);
|
|
1295
|
-
if (typeof clickFunc === 'function') {
|
|
1296
|
-
clickFunc(record.entity, record);
|
|
1297
|
-
}
|
|
1298
|
-
}
|
|
1299
|
-
/**
|
|
1300
|
-
* Retrieve column name without his "properties" tag (useful for edition workspace properties)
|
|
1301
|
-
*/
|
|
1302
|
-
getColumnKeyWithoutPropertiesTag(column) {
|
|
1303
|
-
if (column.includes('properties.')) {
|
|
1304
|
-
return column.split('.')[1];
|
|
1305
|
-
}
|
|
1306
|
-
return column;
|
|
1307
|
-
}
|
|
1308
|
-
}
|
|
1309
|
-
EntityTableComponent.ɵfac = function EntityTableComponent_Factory(t) { return new (t || EntityTableComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.NgControl, 10), i0.ɵɵdirectiveInject(i1.NgForm, 8), i0.ɵɵdirectiveInject(i1.FormControlName, 8), i0.ɵɵdirectiveInject(i3.ErrorStateMatcher), i0.ɵɵdirectiveInject(i3.DateAdapter)); };
|
|
1310
|
-
EntityTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityTableComponent, selectors: [["igo-entity-table"]], inputs: { store: "store", paginator: "paginator", template: "template", scrollBehavior: "scrollBehavior", sortNullsFirst: "sortNullsFirst", withPaginator: "withPaginator", paginatorOptions: "paginatorOptions" }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, features: [i0.ɵɵProvidersFeature([{ provide: MatFormFieldControl, useExisting: EntityTableComponent }]), i0.ɵɵNgOnChangesFeature], decls: 9, vars: 11, consts: [[1, "table-container", 3, "ngStyle"], ["mat-table", "", "matSort", "", 3, "ngClass", "dataSource", "trackBy", "matSortChange"], ["matColumnDef", "selectionCheckbox", 1, "mat-cell-checkbox"], ["mat-header-cell", "", 4, "matHeaderCellDef"], ["mat-cell", "", 4, "matCellDef"], [3, "matColumnDef", 4, "ngFor", "ngForOf"], ["mat-header-row", "", 3, "ngClass", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", "igoEntityTableRow", "", 3, "scrollBehavior", "ngClass", "selection", "selected", "select", "click", 4, "matRowDef", "matRowDefColumns"], [3, "store", "paginatorOptions", "entitySortChange$", "paginatorChange", 4, "ngIf"], ["mat-header-cell", ""], [4, "ngIf"], [3, "checked", "indeterminate", "change"], ["mat-cell", ""], [3, "checked", "mousedown", "click", "change"], [3, "matColumnDef"], ["mat-header-cell", "", "mat-sort-header", "", 3, "matTooltip", 4, "matHeaderCellDef"], ["mat-header-cell", "", "mat-sort-header", "", 3, "matTooltip"], ["mat-header-cell", "", 3, "matTooltip", 4, "matHeaderCellDef"], ["mat-header-cell", "", 3, "matTooltip"], [4, "matCellDef"], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", 4, "ngIf", "ngIfElse"], ["isAnUrlDefault", ""], ["mat-cell", "", 1, "mat-cell-text", 3, "ngClass"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", "click"], ["igoImageError", "", "width", "50", "heigth", "auto", 3, "src", 4, "ngIf", "ngIfElse"], ["notImg", ""], ["igoImageError", "", "width", "50", "heigth", "auto", 3, "src"], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", "innerHTML", 4, "ngIf", "ngIfElse"], ["isAnUrlHTML", ""], ["mat-cell", "", 1, "mat-cell-text", 3, "ngClass", "innerHTML"], ["mat-cell", "", "class", "mat-cell-text edition", 3, "formGroup", "ngClass", 4, "ngIf", "ngIfElse"], ["isUnsanitizedHTML", ""], ["mat-cell", "", 1, "mat-cell-text", "edition", 3, "formGroup", "ngClass"], ["class", "date-picker", 4, "ngIf"], ["matInput", "", "type", "time", "step", "900", 3, "formControlName", "focus", "keypress", "blur", 4, "ngIf"], ["matInput", "", "type", "number", "class", "class_number_edition", 3, "formControlName", "step", "value", "readonly", "required", "min", "max", "input", 4, "ngIf"], ["matInput", "", "type", "text", 3, "formControlName", "value", "readonly", "required", "input", 4, "ngIf"], [3, "formControlName", "checked", "change", 4, "ngIf"], [3, "required", "formControlName", "multiple", "value", "selectionChange", 4, "ngIf"], ["matInput", "", "type", "text", 3, "formControlName", "matAutocomplete", "required", "value", "readonly", 4, "ngIf"], ["panelWidth", "430px", 3, "optionSelected"], ["auto", "matAutocomplete"], [3, "value", 4, "ngFor", "ngForOf"], [1, "date-picker"], ["matSuffix", "", 3, "for"], ["matInput", "", 3, "matDatepicker", "formControlName", "value", "dateChange"], ["picker", ""], ["matInput", "", "type", "time", "step", "900", 3, "formControlName", "focus", "keypress", "blur"], ["matInput", "", "type", "number", 1, "class_number_edition", 3, "formControlName", "step", "value", "readonly", "required", "min", "max", "input"], ["matInput", "", "type", "text", 3, "formControlName", "value", "readonly", "required", "input"], [3, "formControlName", "checked", "change"], [3, "required", "formControlName", "multiple", "value", "selectionChange"], [3, "value", "disabled", 4, "ngFor", "ngForOf"], [3, "value", "disabled"], ["matInput", "", "type", "text", 3, "formControlName", "matAutocomplete", "required", "value", "readonly"], [3, "value"], ["isAnUrlUnsanitizedHTML", ""], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", 4, "matCellDef"], [3, "svgIcon", "click", 4, "ngIf"], [3, "svgIcon", 4, "ngIf"], [3, "svgIcon", "click"], [3, "svgIcon"], [4, "ngFor", "ngForOf"], ["igoStopPropagation", "", "mat-icon-button", "", 3, "color", "disabled", "mousedown", 4, "ngIf"], ["igoStopPropagation", "", "mat-mini-fab", "", 3, "color", "disabled", "mousedown", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", 3, "color", "disabled", "mousedown"], ["igoStopPropagation", "", "mat-mini-fab", "", 3, "color", "disabled", "mousedown"], ["mat-header-row", "", 3, "ngClass"], ["mat-row", "", "igoEntityTableRow", "", 3, "scrollBehavior", "ngClass", "selection", "selected", "select", "click"], [3, "store", "paginatorOptions", "entitySortChange$", "paginatorChange"]], template: function EntityTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1311
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "table", 1);
|
|
1312
|
-
i0.ɵɵlistener("matSortChange", function EntityTableComponent_Template_table_matSortChange_1_listener($event) { return ctx.onSort($event); });
|
|
1313
|
-
i0.ɵɵelementContainerStart(2, 2);
|
|
1314
|
-
i0.ɵɵtemplate(3, EntityTableComponent_th_3_Template, 2, 1, "th", 3);
|
|
1315
|
-
i0.ɵɵtemplate(4, EntityTableComponent_td_4_Template, 2, 1, "td", 4);
|
|
1316
|
-
i0.ɵɵelementContainerEnd();
|
|
1317
|
-
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_Template, 4, 4, "ng-container", 5);
|
|
1318
|
-
i0.ɵɵtemplate(6, EntityTableComponent_tr_6_Template, 1, 1, "tr", 6);
|
|
1319
|
-
i0.ɵɵtemplate(7, EntityTableComponent_tr_7_Template, 1, 4, "tr", 7);
|
|
1320
|
-
i0.ɵɵelementEnd();
|
|
1321
|
-
i0.ɵɵtemplate(8, EntityTableComponent_igo_entity_table_paginator_8_Template, 1, 3, "igo-entity-table-paginator", 8);
|
|
1322
|
-
i0.ɵɵelementEnd();
|
|
1323
|
-
} if (rf & 2) {
|
|
1324
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c0, ctx.tableHeight));
|
|
1325
|
-
i0.ɵɵadvance(1);
|
|
1326
|
-
i0.ɵɵproperty("ngClass", ctx.getTableClass())("dataSource", ctx.dataSource)("trackBy", ctx.getTrackByFunction());
|
|
1327
|
-
i0.ɵɵadvance(4);
|
|
1328
|
-
i0.ɵɵproperty("ngForOf", ctx.template.columns);
|
|
1329
|
-
i0.ɵɵadvance(1);
|
|
1330
|
-
i0.ɵɵproperty("matHeaderRowDef", ctx.headers)("matHeaderRowDefSticky", ctx.fixedHeader);
|
|
1331
|
-
i0.ɵɵadvance(1);
|
|
1332
|
-
i0.ɵɵproperty("matRowDefColumns", ctx.headers);
|
|
1333
|
-
i0.ɵɵadvance(1);
|
|
1334
|
-
i0.ɵɵproperty("ngIf", ctx.withPaginator);
|
|
1335
|
-
} }, dependencies: [i4.NgClass, i4.NgForOf, i4.NgIf, i4.NgStyle, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i6.MatAutocomplete, i6.MatAutocompleteTrigger, i3.MatOption, i7.MatSort, i7.MatSortHeader, i8.MatIcon, i9.MatButton, i10.MatCheckbox, i11.MatSuffix, i12.MatSelect, i13.StopPropagationDirective, i14.EntityTablePaginatorComponent, i15.ImageErrorDirective, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.RequiredValidator, i1.MinValidator, i1.MaxValidator, i1.FormGroupDirective, i1.FormControlName, i16.MatInput, i17.MatDatepicker, i17.MatDatepickerInput, i17.MatDatepickerToggle, i18.MatTooltip, i19.EntityTableRowDirective, i4.AsyncPipe, i20.SanitizeHtmlPipe, i21.SecureImagePipe, i22.TranslatePipe], styles: ["[_nghost-%COMP%]{width:100%;height:100%;display:block}.table-compact[_nghost-%COMP%] tr.mat-header-row[_ngcontent-%COMP%], .table-compact[_nghost-%COMP%] .mat-checkbox .mat-checkbox-ripple{height:36px}.table-compact[_nghost-%COMP%] tr.mat-row[_ngcontent-%COMP%], .table-compact[_nghost-%COMP%] .mat-checkbox .mat-checkbox-ripple{height:28px}.table-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text[_ngcontent-%COMP%]{overflow:hidden;word-wrap:break-word}th.mat-header-cell[_ngcontent-%COMP%], td.mat-cell[_ngcontent-%COMP%], td.mat-footer-cell[_ngcontent-%COMP%]{padding:0 3px}entity-table[_ngcontent-%COMP%] table.igo-entity-table-with-selection[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:7px}.class_hidden[_ngcontent-%COMP%]{visibility:hidden}.class_display_none[_ngcontent-%COMP%]{display:none}.class_boolean[_ngcontent-%COMP%], .class_icon[_ngcontent-%COMP%], .class_number[_ngcontent-%COMP%]{text-align:center;padding-right:35px!important}.class_sting[_ngcontent-%COMP%], .class_text[_ngcontent-%COMP%], .class_number_edition[_ngcontent-%COMP%]{text-align:left}td.edition[_ngcontent-%COMP%]{background:rgba(166,166,166,.2)}input[_ngcontent-%COMP%]{border-bottom:1px solid darkgrey}"], changeDetection: 0 });
|
|
1336
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityTableComponent, [{
|
|
1337
|
-
type: Component,
|
|
1338
|
-
args: [{ selector: 'igo-entity-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: EntityTableComponent }], template: "<div class=\"table-container\" [ngStyle]=\"{'height': tableHeight}\">\n <table mat-table matSort [ngClass]=\"getTableClass()\" [dataSource]=\"dataSource\" [trackBy]=\"getTrackByFunction()\" (matSortChange)=\"onSort($event)\">\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container *ngIf=\"selectMany\">\n <ng-container *ngIf=\"selectionState$ | async as selectionState\">\n <mat-checkbox (change)=\"onToggleRows($event.checked)\" [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"selectionState === entityTableSelectionState.Some\">\n </mat-checkbox>\n </ng-container>\n </ng-container>\n </th>\n <td mat-cell *matCellDef=\"let record\">\n <mat-checkbox (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\" (click)=\"$event.shiftKey ?\n onShiftToggleRow(!rowIsSelected(record), record, $event) : $event.stopPropagation()\" (change)=\"onToggleRow($event.checked,record)\"\n [checked]=\"rowIsSelected(record)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container [matColumnDef]=\"column.name\" *ngFor=\"let column of template.columns\">\n <ng-container *ngIf=\"columnIsSortable(column)\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\n {{column.title}}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"!columnIsSortable(column)\">\n <th mat-header-cell *matHeaderCellDef [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\n {{column.title}}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"getColumnRenderer(column) as columnRenderer\">\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Default\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlDefault\" [ngClass]=\"getCellClass(record, column)\">\n {{getValue(record, column)}}\n </td>\n <ng-template #isAnUrlDefault>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate }}\n </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.HTML\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlHTML\" [ngClass]=\"getCellClass(record, column)\"\n [innerHTML]=\"getValue(record, column)\">\n </td>\n <ng-template #isAnUrlHTML>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' |\n translate }} </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.UnsanitizedHTML\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text edition\" [formGroup]=\"formGroup\" *ngIf=\"isEdition(record);else isUnsanitizedHTML\"\n [ngClass]=\"getCellClass(record, column)\">\n <div class=\"date-picker\" *ngIf=\"column.type === 'date'\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"column.name\" value=\"{{getValue(record, column)}}\"\n (dateChange)=\"onDateChange(column.name, record, $event)\">\n <mat-datepicker #picker></mat-datepicker>\n </div>\n <input matInput type=\"time\" *ngIf=\"column.type === 'time'\" [formControlName]=\"column.name\" step=\"900\" (focus)=\"column.onFocus($event)\"\n (keypress)=\"column.onChange($event)\" (blur)=\"column.onBlur($event)\">\n <input matInput type=\"number\" class=\"class_number_edition\" *ngIf=\"column.type === 'number'\" [formControlName]=\"column.name\" step=\"{{column.step}}\"\n value=\"{{getValue(record,column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\n min=\"{{getValidationAttributeValue(column, 'minValue')}}\" max=\"{{getValidationAttributeValue(column, 'maxValue')}}\">\n <input matInput type=\"text\" *ngIf=\"!column.type || column.type ==='string'\" [formControlName]=\"column.name\"\n value=\"{{getValue(record, column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\">\n <mat-checkbox *ngIf=\"column.type === 'boolean'\" [formControlName]=\"column.name\" [checked]=\"getValue(record,column)\"\n (change)=\"onBooleanValueChange(column.name, record,$event)\"></mat-checkbox>\n <mat-select *ngIf=\"column.type === 'list'\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\n [formControlName]=\"column.name\" [multiple]=\"column.multiple\" (selectionChange)=\"onSelectValueChange(column.name, record, $event)\"\n [value]=\"getValue(record, column)\">\n <mat-option *ngFor=\"let option of column.domainValues\" [value]=\"option.id\" [disabled]=\"option.disabled\">\n {{ option.value }}\n </mat-option>\n </mat-select>\n <input matInput type=\"text\" [formControlName]=\"column.name\" *ngIf=\"column.type === 'autocomplete'\" [matAutocomplete]=\"auto\"\n required=\"{{getValidationAttributeValue(column, 'mandatory')}}\" value=\"{{getValue(record, column)}}\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteValueChange(column, record, $event)\"\n panelWidth=\"430px\">\n <mat-option *ngFor=\"let option of filteredOptions[column.name] | async\"\n [value]=\"option.id\">\n {{ option.value }}\n </mat-option>\n </mat-autocomplete>\n </td>\n <ng-template #isUnsanitizedHTML>\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlUnsanitizedHTML\" [ngClass]=\"getCellClass(record, column)\"\n [innerHTML]=\"getValue(record, column) | sanitizeHtml\">\n </td>\n <ng-template #isAnUrlUnsanitizedHTML>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Icon\">\n <td mat-cell *matCellDef=\"let record\" class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <mat-icon *ngIf=\"column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\" (click)=\"column.onClick($event)\"></mat-icon>\n <mat-icon *ngIf=\"!column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\"></mat-icon>\n </td>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.ButtonGroup\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <span *ngFor=\"let button of getValue(record, column)\">\n <ng-container *ngIf=\"isEdition(record) === button.editMode || button.editMode === undefined\">\n <button *ngIf=\"button.style === 'mat-icon-button'\" igoStopPropagation mat-icon-button\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\n </button>\n <button *ngIf=\"button.style !== 'mat-icon-button'\" igoStopPropagation mat-mini-fab\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\n </button>\n </ng-container>\n </span>\n </td>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"headers; sticky: fixedHeader\" [ngClass]=\"getHeaderClass()\">\n </tr>\n <tr mat-row igoEntityTableRow *matRowDef=\"let record; columns: headers;\" [scrollBehavior]=\"scrollBehavior\" [ngClass]=\"getRowClass(record)\" [selection]=\"selection\" [selected]=\"rowIsSelected(record)\" (select)=\"onRowSelect(record)\" (click)=\"onRowClick(record)\">\n </tr>\n </table>\n <igo-entity-table-paginator *ngIf=\"withPaginator\" [store]=\"store\" [paginatorOptions]=\"paginatorOptions\" [entitySortChange$]=\"entitySortChange$\" (paginatorChange)=\"paginatorChange($event)\">\n </igo-entity-table-paginator>\n</div>", styles: [":host{width:100%;height:100%;display:block}:host.table-compact tr.mat-header-row,:host.table-compact ::ng-deep .mat-checkbox .mat-checkbox-ripple{height:36px}:host.table-compact tr.mat-row,:host.table-compact ::ng-deep .mat-checkbox .mat-checkbox-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0 3px}entity-table table.igo-entity-table-with-selection tr:hover{-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_sting,.class_text,.class_number_edition{text-align:left}td.edition{background:rgba(166,166,166,.2)}input{border-bottom:1px solid darkgrey}\n"] }]
|
|
1339
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
1340
|
-
type: Optional
|
|
1341
|
-
}, {
|
|
1342
|
-
type: Self
|
|
1343
|
-
}] }, { type: i1.NgForm, decorators: [{
|
|
1344
|
-
type: Optional
|
|
1345
|
-
}] }, { type: i1.FormControlName, decorators: [{
|
|
1346
|
-
type: Optional
|
|
1347
|
-
}] }, { type: i3.ErrorStateMatcher }, { type: i3.DateAdapter }]; }, { store: [{
|
|
1348
|
-
type: Input
|
|
1349
|
-
}], paginator: [{
|
|
1350
|
-
type: Input
|
|
1351
|
-
}], template: [{
|
|
1352
|
-
type: Input
|
|
1353
|
-
}], scrollBehavior: [{
|
|
1354
|
-
type: Input
|
|
1355
|
-
}], sortNullsFirst: [{
|
|
1356
|
-
type: Input
|
|
1357
|
-
}], withPaginator: [{
|
|
1358
|
-
type: Input
|
|
1359
|
-
}], paginatorOptions: [{
|
|
1360
|
-
type: Input
|
|
1361
|
-
}], entityClick: [{
|
|
1362
|
-
type: Output
|
|
1363
|
-
}], entitySelectChange: [{
|
|
1364
|
-
type: Output
|
|
1365
|
-
}], entitySortChange: [{
|
|
1366
|
-
type: Output
|
|
1367
|
-
}] }); })();
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, Optional, Self } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
+
import { EntityTableColumnRenderer, EntityTableSelectionState, EntityTableScrollBehavior } from '../shared';
|
|
4
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
5
|
+
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
6
|
+
import { UntypedFormGroup } from '@angular/forms';
|
|
7
|
+
import { map } from 'rxjs/operators';
|
|
8
|
+
import { default as moment } from 'moment';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
import * as i2 from "@angular/cdk/a11y";
|
|
12
|
+
import * as i3 from "@angular/material/core";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
import * as i5 from "@angular/material/table";
|
|
15
|
+
import * as i6 from "@angular/material/autocomplete";
|
|
16
|
+
import * as i7 from "@angular/material/sort";
|
|
17
|
+
import * as i8 from "@angular/material/icon";
|
|
18
|
+
import * as i9 from "@angular/material/button";
|
|
19
|
+
import * as i10 from "@angular/material/checkbox";
|
|
20
|
+
import * as i11 from "@angular/material/form-field";
|
|
21
|
+
import * as i12 from "@angular/material/select";
|
|
22
|
+
import * as i13 from "../../stop-propagation/stop-propagation.directive";
|
|
23
|
+
import * as i14 from "../entity-table-paginator/entity-table-paginator.component";
|
|
24
|
+
import * as i15 from "../../image/image-error.directive";
|
|
25
|
+
import * as i16 from "@angular/material/input";
|
|
26
|
+
import * as i17 from "@angular/material/datepicker";
|
|
27
|
+
import * as i18 from "@angular/material/tooltip";
|
|
28
|
+
import * as i19 from "./entity-table-row.directive";
|
|
29
|
+
import * as i20 from "../../custom-html/custom-html.pipe";
|
|
30
|
+
import * as i21 from "../../image/secure-image.pipe";
|
|
31
|
+
import * as i22 from "@ngx-translate/core";
|
|
32
|
+
function EntityTableComponent_th_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
34
|
+
i0.ɵɵelementContainerStart(0);
|
|
35
|
+
i0.ɵɵelementStart(1, "mat-checkbox", 11);
|
|
36
|
+
i0.ɵɵlistener("change", function EntityTableComponent_th_3_ng_container_1_ng_container_1_Template_mat_checkbox_change_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r9.onToggleRows($event.checked)); });
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
i0.ɵɵelementContainerEnd();
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
const selectionState_r8 = ctx.ngIf;
|
|
41
|
+
const ctx_r7 = i0.ɵɵnextContext(3);
|
|
42
|
+
i0.ɵɵadvance(1);
|
|
43
|
+
i0.ɵɵproperty("checked", selectionState_r8 === ctx_r7.entityTableSelectionState.All)("indeterminate", selectionState_r8 === ctx_r7.entityTableSelectionState.Some);
|
|
44
|
+
} }
|
|
45
|
+
function EntityTableComponent_th_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelementContainerStart(0);
|
|
47
|
+
i0.ɵɵtemplate(1, EntityTableComponent_th_3_ng_container_1_ng_container_1_Template, 2, 2, "ng-container", 10);
|
|
48
|
+
i0.ɵɵpipe(2, "async");
|
|
49
|
+
i0.ɵɵelementContainerEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
52
|
+
i0.ɵɵadvance(1);
|
|
53
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 1, ctx_r6.selectionState$));
|
|
54
|
+
} }
|
|
55
|
+
function EntityTableComponent_th_3_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementStart(0, "th", 9);
|
|
57
|
+
i0.ɵɵtemplate(1, EntityTableComponent_th_3_ng_container_1_Template, 3, 3, "ng-container", 10);
|
|
58
|
+
i0.ɵɵelementEnd();
|
|
59
|
+
} if (rf & 2) {
|
|
60
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
61
|
+
i0.ɵɵadvance(1);
|
|
62
|
+
i0.ɵɵproperty("ngIf", ctx_r0.selectMany);
|
|
63
|
+
} }
|
|
64
|
+
function EntityTableComponent_td_4_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
66
|
+
i0.ɵɵelementStart(0, "td", 12)(1, "mat-checkbox", 13);
|
|
67
|
+
i0.ɵɵlistener("mousedown", function EntityTableComponent_td_4_Template_mat_checkbox_mousedown_1_listener($event) { return $event.shiftKey ? $event.preventDefault() : null; })("click", function EntityTableComponent_td_4_Template_mat_checkbox_click_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r14); const record_r11 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView($event.shiftKey ? ctx_r13.onShiftToggleRow(!ctx_r13.rowIsSelected(record_r11), record_r11, $event) : $event.stopPropagation()); })("change", function EntityTableComponent_td_4_Template_mat_checkbox_change_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r14); const record_r11 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.onToggleRow($event.checked, record_r11)); });
|
|
68
|
+
i0.ɵɵelementEnd()();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const record_r11 = ctx.$implicit;
|
|
71
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
72
|
+
i0.ɵɵadvance(1);
|
|
73
|
+
i0.ɵɵproperty("checked", ctx_r1.rowIsSelected(record_r11));
|
|
74
|
+
} }
|
|
75
|
+
function EntityTableComponent_ng_container_5_ng_container_1_th_1_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementStart(0, "th", 16);
|
|
77
|
+
i0.ɵɵtext(1);
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
} if (rf & 2) {
|
|
80
|
+
const column_r16 = i0.ɵɵnextContext(2).$implicit;
|
|
81
|
+
i0.ɵɵproperty("matTooltip", column_r16.tooltip ? column_r16.tooltip : undefined);
|
|
82
|
+
i0.ɵɵadvance(1);
|
|
83
|
+
i0.ɵɵtextInterpolate1(" ", column_r16.title, " ");
|
|
84
|
+
} }
|
|
85
|
+
function EntityTableComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵelementContainerStart(0);
|
|
87
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_1_th_1_Template, 2, 2, "th", 15);
|
|
88
|
+
i0.ɵɵelementContainerEnd();
|
|
89
|
+
} }
|
|
90
|
+
function EntityTableComponent_ng_container_5_ng_container_2_th_1_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelementStart(0, "th", 18);
|
|
92
|
+
i0.ɵɵtext(1);
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} if (rf & 2) {
|
|
95
|
+
const column_r16 = i0.ɵɵnextContext(2).$implicit;
|
|
96
|
+
i0.ɵɵproperty("matTooltip", column_r16.tooltip ? column_r16.tooltip : undefined);
|
|
97
|
+
i0.ɵɵadvance(1);
|
|
98
|
+
i0.ɵɵtextInterpolate1(" ", column_r16.title, " ");
|
|
99
|
+
} }
|
|
100
|
+
function EntityTableComponent_ng_container_5_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
101
|
+
i0.ɵɵelementContainerStart(0);
|
|
102
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_2_th_1_Template, 2, 2, "th", 17);
|
|
103
|
+
i0.ɵɵelementContainerEnd();
|
|
104
|
+
} }
|
|
105
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
107
|
+
i0.ɵɵtext(1);
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
} if (rf & 2) {
|
|
110
|
+
const record_r31 = i0.ɵɵnextContext().$implicit;
|
|
111
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
112
|
+
const ctx_r32 = i0.ɵɵnextContext();
|
|
113
|
+
i0.ɵɵproperty("ngClass", ctx_r32.getCellClass(record_r31, column_r16));
|
|
114
|
+
i0.ɵɵadvance(1);
|
|
115
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r32.getValue(record_r31, column_r16), " ");
|
|
116
|
+
} }
|
|
117
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelement(0, "img", 26);
|
|
119
|
+
i0.ɵɵpipe(1, "async");
|
|
120
|
+
i0.ɵɵpipe(2, "secureImage");
|
|
121
|
+
} if (rf & 2) {
|
|
122
|
+
const record_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
123
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
124
|
+
const ctx_r37 = i0.ɵɵnextContext();
|
|
125
|
+
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r37.getValue(record_r31, column_r16))), i0.ɵɵsanitizeUrl);
|
|
126
|
+
} }
|
|
127
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelementStart(0, "span");
|
|
129
|
+
i0.ɵɵtext(1);
|
|
130
|
+
i0.ɵɵpipe(2, "translate");
|
|
131
|
+
i0.ɵɵelementEnd();
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
i0.ɵɵadvance(1);
|
|
134
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.common.entity-table.targetHtmlUrl"), " ");
|
|
135
|
+
} }
|
|
136
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
+
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
138
|
+
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
139
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_img_2_Template, 3, 5, "img", 24);
|
|
140
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
141
|
+
i0.ɵɵelementEnd()();
|
|
142
|
+
} if (rf & 2) {
|
|
143
|
+
const _r38 = i0.ɵɵreference(4);
|
|
144
|
+
const record_r31 = i0.ɵɵnextContext().$implicit;
|
|
145
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
146
|
+
const ctx_r34 = i0.ɵɵnextContext();
|
|
147
|
+
i0.ɵɵproperty("ngClass", ctx_r34.getCellClass(record_r31, column_r16));
|
|
148
|
+
i0.ɵɵadvance(1);
|
|
149
|
+
i0.ɵɵpropertyInterpolate("href", ctx_r34.getValue(record_r31, column_r16), i0.ɵɵsanitizeUrl);
|
|
150
|
+
i0.ɵɵadvance(1);
|
|
151
|
+
i0.ɵɵproperty("ngIf", ctx_r34.isImg(ctx_r34.getValue(record_r31, column_r16)))("ngIfElse", _r38);
|
|
152
|
+
} }
|
|
153
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementContainerStart(0);
|
|
155
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_td_1_Template, 2, 2, "td", 20);
|
|
156
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_ng_template_2_Template, 5, 4, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
|
|
157
|
+
i0.ɵɵelementContainerEnd();
|
|
158
|
+
} if (rf & 2) {
|
|
159
|
+
const record_r31 = ctx.$implicit;
|
|
160
|
+
const _r33 = i0.ɵɵreference(3);
|
|
161
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
162
|
+
const ctx_r30 = i0.ɵɵnextContext();
|
|
163
|
+
i0.ɵɵadvance(1);
|
|
164
|
+
i0.ɵɵproperty("ngIf", !ctx_r30.isUrl(ctx_r30.getValue(record_r31, column_r16)))("ngIfElse", _r33);
|
|
165
|
+
} }
|
|
166
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementContainerStart(0);
|
|
168
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
169
|
+
i0.ɵɵelementContainerEnd();
|
|
170
|
+
} }
|
|
171
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
+
i0.ɵɵelement(0, "td", 29);
|
|
173
|
+
} if (rf & 2) {
|
|
174
|
+
const record_r47 = i0.ɵɵnextContext().$implicit;
|
|
175
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
176
|
+
const ctx_r48 = i0.ɵɵnextContext();
|
|
177
|
+
i0.ɵɵproperty("ngClass", ctx_r48.getCellClass(record_r47, column_r16))("innerHTML", ctx_r48.getValue(record_r47, column_r16), i0.ɵɵsanitizeHtml);
|
|
178
|
+
} }
|
|
179
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
180
|
+
i0.ɵɵelement(0, "img", 26);
|
|
181
|
+
i0.ɵɵpipe(1, "async");
|
|
182
|
+
i0.ɵɵpipe(2, "secureImage");
|
|
183
|
+
} if (rf & 2) {
|
|
184
|
+
const record_r47 = i0.ɵɵnextContext(2).$implicit;
|
|
185
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
186
|
+
const ctx_r53 = i0.ɵɵnextContext();
|
|
187
|
+
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r53.getValue(record_r47, column_r16))), i0.ɵɵsanitizeUrl);
|
|
188
|
+
} }
|
|
189
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
+
i0.ɵɵelementStart(0, "span");
|
|
191
|
+
i0.ɵɵtext(1);
|
|
192
|
+
i0.ɵɵpipe(2, "translate");
|
|
193
|
+
i0.ɵɵelementEnd();
|
|
194
|
+
} if (rf & 2) {
|
|
195
|
+
i0.ɵɵadvance(1);
|
|
196
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.targetHtmlUrl"), " ");
|
|
197
|
+
} }
|
|
198
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
+
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
200
|
+
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
201
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_img_2_Template, 3, 5, "img", 24);
|
|
202
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
203
|
+
i0.ɵɵelementEnd()();
|
|
204
|
+
} if (rf & 2) {
|
|
205
|
+
const _r54 = i0.ɵɵreference(4);
|
|
206
|
+
const record_r47 = i0.ɵɵnextContext().$implicit;
|
|
207
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
208
|
+
const ctx_r50 = i0.ɵɵnextContext();
|
|
209
|
+
i0.ɵɵproperty("ngClass", ctx_r50.getCellClass(record_r47, column_r16));
|
|
210
|
+
i0.ɵɵadvance(1);
|
|
211
|
+
i0.ɵɵpropertyInterpolate("href", ctx_r50.getValue(record_r47, column_r16), i0.ɵɵsanitizeUrl);
|
|
212
|
+
i0.ɵɵadvance(1);
|
|
213
|
+
i0.ɵɵproperty("ngIf", ctx_r50.isImg(ctx_r50.getValue(record_r47, column_r16)))("ngIfElse", _r54);
|
|
214
|
+
} }
|
|
215
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
+
i0.ɵɵelementContainerStart(0);
|
|
217
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_td_1_Template, 1, 2, "td", 27);
|
|
218
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_ng_template_2_Template, 5, 4, "ng-template", null, 28, i0.ɵɵtemplateRefExtractor);
|
|
219
|
+
i0.ɵɵelementContainerEnd();
|
|
220
|
+
} if (rf & 2) {
|
|
221
|
+
const record_r47 = ctx.$implicit;
|
|
222
|
+
const _r49 = i0.ɵɵreference(3);
|
|
223
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
224
|
+
const ctx_r46 = i0.ɵɵnextContext();
|
|
225
|
+
i0.ɵɵadvance(1);
|
|
226
|
+
i0.ɵɵproperty("ngIf", !ctx_r46.isUrl(ctx_r46.getValue(record_r47, column_r16)))("ngIfElse", _r49);
|
|
227
|
+
} }
|
|
228
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
+
i0.ɵɵelementContainerStart(0);
|
|
230
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
231
|
+
i0.ɵɵelementContainerEnd();
|
|
232
|
+
} }
|
|
233
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
234
|
+
const _r79 = i0.ɵɵgetCurrentView();
|
|
235
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
236
|
+
i0.ɵɵelement(1, "mat-datepicker-toggle", 44);
|
|
237
|
+
i0.ɵɵelementStart(2, "input", 45);
|
|
238
|
+
i0.ɵɵlistener("dateChange", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template_input_dateChange_2_listener($event) { i0.ɵɵrestoreView(_r79); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r77 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r77.onDateChange(column_r16.name, record_r63, $event)); });
|
|
239
|
+
i0.ɵɵelementEnd();
|
|
240
|
+
i0.ɵɵelement(3, "mat-datepicker", null, 46);
|
|
241
|
+
i0.ɵɵelementEnd();
|
|
242
|
+
} if (rf & 2) {
|
|
243
|
+
const _r76 = i0.ɵɵreference(4);
|
|
244
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
245
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
246
|
+
const ctx_r67 = i0.ɵɵnextContext();
|
|
247
|
+
i0.ɵɵadvance(1);
|
|
248
|
+
i0.ɵɵproperty("for", _r76);
|
|
249
|
+
i0.ɵɵadvance(1);
|
|
250
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r67.getValue(record_r63, column_r16));
|
|
251
|
+
i0.ɵɵproperty("matDatepicker", _r76)("formControlName", column_r16.name);
|
|
252
|
+
} }
|
|
253
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
+
const _r85 = i0.ɵɵgetCurrentView();
|
|
255
|
+
i0.ɵɵelementStart(0, "input", 47);
|
|
256
|
+
i0.ɵɵlistener("focus", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_focus_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onFocus($event)); })("keypress", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_keypress_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onChange($event)); })("blur", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template_input_blur_0_listener($event) { i0.ɵɵrestoreView(_r85); const column_r16 = i0.ɵɵnextContext(5).$implicit; return i0.ɵɵresetView(column_r16.onBlur($event)); });
|
|
257
|
+
i0.ɵɵelementEnd();
|
|
258
|
+
} if (rf & 2) {
|
|
259
|
+
const column_r16 = i0.ɵɵnextContext(5).$implicit;
|
|
260
|
+
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
261
|
+
} }
|
|
262
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template(rf, ctx) { if (rf & 1) {
|
|
263
|
+
const _r93 = i0.ɵɵgetCurrentView();
|
|
264
|
+
i0.ɵɵelementStart(0, "input", 48);
|
|
265
|
+
i0.ɵɵlistener("input", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r93); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r91 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r91.onValueChange(column_r16.name, record_r63, $event)); });
|
|
266
|
+
i0.ɵɵelementEnd();
|
|
267
|
+
} if (rf & 2) {
|
|
268
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
269
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
270
|
+
const ctx_r69 = i0.ɵɵnextContext();
|
|
271
|
+
i0.ɵɵpropertyInterpolate("step", column_r16.step);
|
|
272
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r69.getValue(record_r63, column_r16));
|
|
273
|
+
i0.ɵɵpropertyInterpolate("readonly", ctx_r69.getValidationAttributeValue(column_r16, "readonly"));
|
|
274
|
+
i0.ɵɵpropertyInterpolate("required", ctx_r69.getValidationAttributeValue(column_r16, "mandatory"));
|
|
275
|
+
i0.ɵɵpropertyInterpolate("min", ctx_r69.getValidationAttributeValue(column_r16, "minValue"));
|
|
276
|
+
i0.ɵɵpropertyInterpolate("max", ctx_r69.getValidationAttributeValue(column_r16, "maxValue"));
|
|
277
|
+
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
278
|
+
} }
|
|
279
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template(rf, ctx) { if (rf & 1) {
|
|
280
|
+
const _r99 = i0.ɵɵgetCurrentView();
|
|
281
|
+
i0.ɵɵelementStart(0, "input", 49);
|
|
282
|
+
i0.ɵɵlistener("input", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r99); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r97 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r97.onValueChange(column_r16.name, record_r63, $event)); });
|
|
283
|
+
i0.ɵɵelementEnd();
|
|
284
|
+
} if (rf & 2) {
|
|
285
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
286
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
287
|
+
const ctx_r70 = i0.ɵɵnextContext();
|
|
288
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r70.getValue(record_r63, column_r16));
|
|
289
|
+
i0.ɵɵpropertyInterpolate("readonly", ctx_r70.getValidationAttributeValue(column_r16, "readonly"));
|
|
290
|
+
i0.ɵɵpropertyInterpolate("required", ctx_r70.getValidationAttributeValue(column_r16, "mandatory"));
|
|
291
|
+
i0.ɵɵproperty("formControlName", column_r16.name);
|
|
292
|
+
} }
|
|
293
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
+
const _r105 = i0.ɵɵgetCurrentView();
|
|
295
|
+
i0.ɵɵelementStart(0, "mat-checkbox", 50);
|
|
296
|
+
i0.ɵɵlistener("change", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template_mat_checkbox_change_0_listener($event) { i0.ɵɵrestoreView(_r105); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r103 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r103.onBooleanValueChange(column_r16.name, record_r63, $event)); });
|
|
297
|
+
i0.ɵɵelementEnd();
|
|
298
|
+
} if (rf & 2) {
|
|
299
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
300
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
301
|
+
const ctx_r71 = i0.ɵɵnextContext();
|
|
302
|
+
i0.ɵɵproperty("formControlName", column_r16.name)("checked", ctx_r71.getValue(record_r63, column_r16));
|
|
303
|
+
} }
|
|
304
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_mat_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
+
i0.ɵɵelementStart(0, "mat-option", 53);
|
|
306
|
+
i0.ɵɵtext(1);
|
|
307
|
+
i0.ɵɵelementEnd();
|
|
308
|
+
} if (rf & 2) {
|
|
309
|
+
const option_r110 = ctx.$implicit;
|
|
310
|
+
i0.ɵɵproperty("value", option_r110.id)("disabled", option_r110.disabled);
|
|
311
|
+
i0.ɵɵadvance(1);
|
|
312
|
+
i0.ɵɵtextInterpolate1(" ", option_r110.value, " ");
|
|
313
|
+
} }
|
|
314
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
const _r113 = i0.ɵɵgetCurrentView();
|
|
316
|
+
i0.ɵɵelementStart(0, "mat-select", 51);
|
|
317
|
+
i0.ɵɵlistener("selectionChange", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template_mat_select_selectionChange_0_listener($event) { i0.ɵɵrestoreView(_r113); const record_r63 = i0.ɵɵnextContext(2).$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r111 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r111.onSelectValueChange(column_r16.name, record_r63, $event)); });
|
|
318
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_mat_option_1_Template, 2, 3, "mat-option", 52);
|
|
319
|
+
i0.ɵɵelementEnd();
|
|
320
|
+
} if (rf & 2) {
|
|
321
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
322
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
323
|
+
const ctx_r72 = i0.ɵɵnextContext();
|
|
324
|
+
i0.ɵɵpropertyInterpolate("required", ctx_r72.getValidationAttributeValue(column_r16, "mandatory"));
|
|
325
|
+
i0.ɵɵproperty("formControlName", column_r16.name)("multiple", column_r16.multiple)("value", ctx_r72.getValue(record_r63, column_r16));
|
|
326
|
+
i0.ɵɵadvance(1);
|
|
327
|
+
i0.ɵɵproperty("ngForOf", column_r16.domainValues);
|
|
328
|
+
} }
|
|
329
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_7_Template(rf, ctx) { if (rf & 1) {
|
|
330
|
+
i0.ɵɵelement(0, "input", 54);
|
|
331
|
+
} if (rf & 2) {
|
|
332
|
+
i0.ɵɵnextContext();
|
|
333
|
+
const _r74 = i0.ɵɵreference(9);
|
|
334
|
+
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
335
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
336
|
+
const ctx_r73 = i0.ɵɵnextContext();
|
|
337
|
+
i0.ɵɵpropertyInterpolate("required", ctx_r73.getValidationAttributeValue(column_r16, "mandatory"));
|
|
338
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r73.getValue(record_r63, column_r16));
|
|
339
|
+
i0.ɵɵpropertyInterpolate("readonly", ctx_r73.getValidationAttributeValue(column_r16, "readonly"));
|
|
340
|
+
i0.ɵɵproperty("formControlName", column_r16.name)("matAutocomplete", _r74);
|
|
341
|
+
} }
|
|
342
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_option_10_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
+
i0.ɵɵelementStart(0, "mat-option", 55);
|
|
344
|
+
i0.ɵɵtext(1);
|
|
345
|
+
i0.ɵɵelementEnd();
|
|
346
|
+
} if (rf & 2) {
|
|
347
|
+
const option_r119 = ctx.$implicit;
|
|
348
|
+
i0.ɵɵproperty("value", option_r119.id);
|
|
349
|
+
i0.ɵɵadvance(1);
|
|
350
|
+
i0.ɵɵtextInterpolate1(" ", option_r119.value, " ");
|
|
351
|
+
} }
|
|
352
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
const _r122 = i0.ɵɵgetCurrentView();
|
|
354
|
+
i0.ɵɵelementStart(0, "td", 32);
|
|
355
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_div_1_Template, 5, 4, "div", 33);
|
|
356
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_2_Template, 1, 1, "input", 34);
|
|
357
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_3_Template, 1, 7, "input", 35);
|
|
358
|
+
i0.ɵɵtemplate(4, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_4_Template, 1, 4, "input", 36);
|
|
359
|
+
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_checkbox_5_Template, 1, 2, "mat-checkbox", 37);
|
|
360
|
+
i0.ɵɵtemplate(6, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_select_6_Template, 2, 5, "mat-select", 38);
|
|
361
|
+
i0.ɵɵtemplate(7, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_input_7_Template, 1, 5, "input", 39);
|
|
362
|
+
i0.ɵɵelementStart(8, "mat-autocomplete", 40, 41);
|
|
363
|
+
i0.ɵɵlistener("optionSelected", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template_mat_autocomplete_optionSelected_8_listener($event) { i0.ɵɵrestoreView(_r122); const record_r63 = i0.ɵɵnextContext().$implicit; const column_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r120 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r120.onAutocompleteValueChange(column_r16, record_r63, $event)); });
|
|
364
|
+
i0.ɵɵtemplate(10, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_mat_option_10_Template, 2, 2, "mat-option", 42);
|
|
365
|
+
i0.ɵɵpipe(11, "async");
|
|
366
|
+
i0.ɵɵelementEnd()();
|
|
367
|
+
} if (rf & 2) {
|
|
368
|
+
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
369
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
370
|
+
const ctx_r64 = i0.ɵɵnextContext();
|
|
371
|
+
i0.ɵɵproperty("formGroup", ctx_r64.formGroup)("ngClass", ctx_r64.getCellClass(record_r63, column_r16));
|
|
372
|
+
i0.ɵɵadvance(1);
|
|
373
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "date");
|
|
374
|
+
i0.ɵɵadvance(1);
|
|
375
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "time");
|
|
376
|
+
i0.ɵɵadvance(1);
|
|
377
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "number");
|
|
378
|
+
i0.ɵɵadvance(1);
|
|
379
|
+
i0.ɵɵproperty("ngIf", !column_r16.type || column_r16.type === "string");
|
|
380
|
+
i0.ɵɵadvance(1);
|
|
381
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "boolean");
|
|
382
|
+
i0.ɵɵadvance(1);
|
|
383
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "list");
|
|
384
|
+
i0.ɵɵadvance(1);
|
|
385
|
+
i0.ɵɵproperty("ngIf", column_r16.type === "autocomplete");
|
|
386
|
+
i0.ɵɵadvance(3);
|
|
387
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(11, 10, ctx_r64.filteredOptions[column_r16.name]));
|
|
388
|
+
} }
|
|
389
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_td_0_Template(rf, ctx) { if (rf & 1) {
|
|
390
|
+
i0.ɵɵelement(0, "td", 29);
|
|
391
|
+
i0.ɵɵpipe(1, "sanitizeHtml");
|
|
392
|
+
} if (rf & 2) {
|
|
393
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
394
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
395
|
+
const ctx_r126 = i0.ɵɵnextContext();
|
|
396
|
+
i0.ɵɵproperty("ngClass", ctx_r126.getCellClass(record_r63, column_r16))("innerHTML", i0.ɵɵpipeBind1(1, 2, ctx_r126.getValue(record_r63, column_r16)), i0.ɵɵsanitizeHtml);
|
|
397
|
+
} }
|
|
398
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_img_2_Template(rf, ctx) { if (rf & 1) {
|
|
399
|
+
i0.ɵɵelement(0, "img", 26);
|
|
400
|
+
i0.ɵɵpipe(1, "async");
|
|
401
|
+
i0.ɵɵpipe(2, "secureImage");
|
|
402
|
+
} if (rf & 2) {
|
|
403
|
+
const record_r63 = i0.ɵɵnextContext(3).$implicit;
|
|
404
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
405
|
+
const ctx_r131 = i0.ɵɵnextContext();
|
|
406
|
+
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(1, 1, i0.ɵɵpipeBind1(2, 3, ctx_r131.getValue(record_r63, column_r16))), i0.ɵɵsanitizeUrl);
|
|
407
|
+
} }
|
|
408
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
409
|
+
i0.ɵɵelementStart(0, "span");
|
|
410
|
+
i0.ɵɵtext(1);
|
|
411
|
+
i0.ɵɵpipe(2, "translate");
|
|
412
|
+
i0.ɵɵelementEnd();
|
|
413
|
+
} if (rf & 2) {
|
|
414
|
+
i0.ɵɵadvance(1);
|
|
415
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.targetHtmlUrl"), " ");
|
|
416
|
+
} }
|
|
417
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementStart(0, "td", 22)(1, "a", 23);
|
|
419
|
+
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template_a_click_1_listener($event) { return $event.stopPropagation(); });
|
|
420
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_img_2_Template, 3, 5, "img", 24);
|
|
421
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_ng_template_3_Template, 3, 3, "ng-template", null, 25, i0.ɵɵtemplateRefExtractor);
|
|
422
|
+
i0.ɵɵelementEnd()();
|
|
423
|
+
} if (rf & 2) {
|
|
424
|
+
const _r132 = i0.ɵɵreference(4);
|
|
425
|
+
const record_r63 = i0.ɵɵnextContext(2).$implicit;
|
|
426
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
427
|
+
const ctx_r128 = i0.ɵɵnextContext();
|
|
428
|
+
i0.ɵɵproperty("ngClass", ctx_r128.getCellClass(record_r63, column_r16));
|
|
429
|
+
i0.ɵɵadvance(1);
|
|
430
|
+
i0.ɵɵpropertyInterpolate("href", ctx_r128.getValue(record_r63, column_r16), i0.ɵɵsanitizeUrl);
|
|
431
|
+
i0.ɵɵadvance(1);
|
|
432
|
+
i0.ɵɵproperty("ngIf", ctx_r128.isImg(ctx_r128.getValue(record_r63, column_r16)))("ngIfElse", _r132);
|
|
433
|
+
} }
|
|
434
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
435
|
+
i0.ɵɵtemplate(0, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_td_0_Template, 2, 4, "td", 27);
|
|
436
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_ng_template_1_Template, 5, 4, "ng-template", null, 56, i0.ɵɵtemplateRefExtractor);
|
|
437
|
+
} if (rf & 2) {
|
|
438
|
+
const _r127 = i0.ɵɵreference(2);
|
|
439
|
+
const record_r63 = i0.ɵɵnextContext().$implicit;
|
|
440
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
441
|
+
const ctx_r66 = i0.ɵɵnextContext();
|
|
442
|
+
i0.ɵɵproperty("ngIf", !ctx_r66.isUrl(ctx_r66.getValue(record_r63, column_r16)))("ngIfElse", _r127);
|
|
443
|
+
} }
|
|
444
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
+
i0.ɵɵelementContainerStart(0);
|
|
446
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_td_1_Template, 12, 12, "td", 30);
|
|
447
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_ng_template_2_Template, 3, 2, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
|
|
448
|
+
i0.ɵɵelementContainerEnd();
|
|
449
|
+
} if (rf & 2) {
|
|
450
|
+
const record_r63 = ctx.$implicit;
|
|
451
|
+
const _r65 = i0.ɵɵreference(3);
|
|
452
|
+
const ctx_r62 = i0.ɵɵnextContext(4);
|
|
453
|
+
i0.ɵɵadvance(1);
|
|
454
|
+
i0.ɵɵproperty("ngIf", ctx_r62.isEdition(record_r63))("ngIfElse", _r65);
|
|
455
|
+
} }
|
|
456
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
457
|
+
i0.ɵɵelementContainerStart(0);
|
|
458
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_ng_container_1_Template, 4, 2, "ng-container", 19);
|
|
459
|
+
i0.ɵɵelementContainerEnd();
|
|
460
|
+
} }
|
|
461
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
+
const _r147 = i0.ɵɵgetCurrentView();
|
|
463
|
+
i0.ɵɵelementStart(0, "mat-icon", 60);
|
|
464
|
+
i0.ɵɵlistener("click", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r147); const column_r16 = i0.ɵɵnextContext(4).$implicit; return i0.ɵɵresetView(column_r16.onClick($event)); });
|
|
465
|
+
i0.ɵɵelementEnd();
|
|
466
|
+
} if (rf & 2) {
|
|
467
|
+
const record_r142 = i0.ɵɵnextContext().$implicit;
|
|
468
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
469
|
+
const ctx_r143 = i0.ɵɵnextContext();
|
|
470
|
+
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r143.getValue(record_r142, column_r16) || column_r16.icon);
|
|
471
|
+
} }
|
|
472
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
+
i0.ɵɵelement(0, "mat-icon", 61);
|
|
474
|
+
} if (rf & 2) {
|
|
475
|
+
const record_r142 = i0.ɵɵnextContext().$implicit;
|
|
476
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
477
|
+
const ctx_r144 = i0.ɵɵnextContext();
|
|
478
|
+
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r144.getValue(record_r142, column_r16) || column_r16.icon);
|
|
479
|
+
} }
|
|
480
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
482
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_1_Template, 1, 1, "mat-icon", 58);
|
|
483
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_mat_icon_2_Template, 1, 1, "mat-icon", 59);
|
|
484
|
+
i0.ɵɵelementEnd();
|
|
485
|
+
} if (rf & 2) {
|
|
486
|
+
const record_r142 = ctx.$implicit;
|
|
487
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
488
|
+
const ctx_r141 = i0.ɵɵnextContext();
|
|
489
|
+
i0.ɵɵproperty("ngClass", ctx_r141.getCellClass(record_r142, column_r16));
|
|
490
|
+
i0.ɵɵadvance(1);
|
|
491
|
+
i0.ɵɵproperty("ngIf", column_r16.onClick);
|
|
492
|
+
i0.ɵɵadvance(1);
|
|
493
|
+
i0.ɵɵproperty("ngIf", !column_r16.onClick);
|
|
494
|
+
} }
|
|
495
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
496
|
+
i0.ɵɵelementContainerStart(0);
|
|
497
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_td_1_Template, 3, 3, "td", 57);
|
|
498
|
+
i0.ɵɵelementContainerEnd();
|
|
499
|
+
} }
|
|
500
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
+
const _r162 = i0.ɵɵgetCurrentView();
|
|
502
|
+
i0.ɵɵelementStart(0, "button", 65);
|
|
503
|
+
i0.ɵɵlistener("mousedown", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template_button_mousedown_0_listener() { i0.ɵɵrestoreView(_r162); const button_r156 = i0.ɵɵnextContext(2).$implicit; const record_r154 = i0.ɵɵnextContext().$implicit; const ctx_r160 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r160.onButtonClick(button_r156.click, record_r154)); });
|
|
504
|
+
i0.ɵɵelement(1, "mat-icon", 61);
|
|
505
|
+
i0.ɵɵelementEnd();
|
|
506
|
+
} if (rf & 2) {
|
|
507
|
+
const button_r156 = i0.ɵɵnextContext(2).$implicit;
|
|
508
|
+
i0.ɵɵproperty("color", button_r156.color)("disabled", button_r156.disabled);
|
|
509
|
+
i0.ɵɵadvance(1);
|
|
510
|
+
i0.ɵɵpropertyInterpolate("svgIcon", button_r156.icon);
|
|
511
|
+
} }
|
|
512
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
const _r167 = i0.ɵɵgetCurrentView();
|
|
514
|
+
i0.ɵɵelementStart(0, "button", 66);
|
|
515
|
+
i0.ɵɵlistener("mousedown", function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template_button_mousedown_0_listener() { i0.ɵɵrestoreView(_r167); const button_r156 = i0.ɵɵnextContext(2).$implicit; const record_r154 = i0.ɵɵnextContext().$implicit; const ctx_r165 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r165.onButtonClick(button_r156.click, record_r154)); });
|
|
516
|
+
i0.ɵɵelement(1, "mat-icon", 61);
|
|
517
|
+
i0.ɵɵelementEnd();
|
|
518
|
+
} if (rf & 2) {
|
|
519
|
+
const button_r156 = i0.ɵɵnextContext(2).$implicit;
|
|
520
|
+
i0.ɵɵproperty("color", button_r156.color)("disabled", button_r156.disabled);
|
|
521
|
+
i0.ɵɵadvance(1);
|
|
522
|
+
i0.ɵɵpropertyInterpolate("svgIcon", button_r156.icon);
|
|
523
|
+
} }
|
|
524
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
525
|
+
i0.ɵɵelementContainerStart(0);
|
|
526
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_1_Template, 2, 3, "button", 63);
|
|
527
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_button_2_Template, 2, 3, "button", 64);
|
|
528
|
+
i0.ɵɵelementContainerEnd();
|
|
529
|
+
} if (rf & 2) {
|
|
530
|
+
const button_r156 = i0.ɵɵnextContext().$implicit;
|
|
531
|
+
i0.ɵɵadvance(1);
|
|
532
|
+
i0.ɵɵproperty("ngIf", button_r156.style === "mat-icon-button");
|
|
533
|
+
i0.ɵɵadvance(1);
|
|
534
|
+
i0.ɵɵproperty("ngIf", button_r156.style !== "mat-icon-button");
|
|
535
|
+
} }
|
|
536
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
537
|
+
i0.ɵɵelementStart(0, "span");
|
|
538
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_ng_container_1_Template, 3, 2, "ng-container", 10);
|
|
539
|
+
i0.ɵɵelementEnd();
|
|
540
|
+
} if (rf & 2) {
|
|
541
|
+
const button_r156 = ctx.$implicit;
|
|
542
|
+
const record_r154 = i0.ɵɵnextContext().$implicit;
|
|
543
|
+
const ctx_r155 = i0.ɵɵnextContext(4);
|
|
544
|
+
i0.ɵɵadvance(1);
|
|
545
|
+
i0.ɵɵproperty("ngIf", ctx_r155.isEdition(record_r154) === button_r156.editMode || button_r156.editMode === undefined);
|
|
546
|
+
} }
|
|
547
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
548
|
+
i0.ɵɵelementContainerStart(0);
|
|
549
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
550
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_span_2_Template, 2, 1, "span", 62);
|
|
551
|
+
i0.ɵɵelementEnd();
|
|
552
|
+
i0.ɵɵelementContainerEnd();
|
|
553
|
+
} if (rf & 2) {
|
|
554
|
+
const record_r154 = ctx.$implicit;
|
|
555
|
+
const column_r16 = i0.ɵɵnextContext(3).$implicit;
|
|
556
|
+
const ctx_r153 = i0.ɵɵnextContext();
|
|
557
|
+
i0.ɵɵadvance(1);
|
|
558
|
+
i0.ɵɵproperty("ngClass", ctx_r153.getCellClass(record_r154, column_r16));
|
|
559
|
+
i0.ɵɵadvance(1);
|
|
560
|
+
i0.ɵɵproperty("ngForOf", ctx_r153.getValue(record_r154, column_r16));
|
|
561
|
+
} }
|
|
562
|
+
function EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
563
|
+
i0.ɵɵelementContainerStart(0);
|
|
564
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_ng_container_1_Template, 3, 2, "ng-container", 19);
|
|
565
|
+
i0.ɵɵelementContainerEnd();
|
|
566
|
+
} }
|
|
567
|
+
function EntityTableComponent_ng_container_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
568
|
+
i0.ɵɵelementContainerStart(0);
|
|
569
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_3_ng_container_1_Template, 2, 0, "ng-container", 10);
|
|
570
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_3_ng_container_2_Template, 2, 0, "ng-container", 10);
|
|
571
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_ng_container_3_Template, 2, 0, "ng-container", 10);
|
|
572
|
+
i0.ɵɵtemplate(4, EntityTableComponent_ng_container_5_ng_container_3_ng_container_4_Template, 2, 0, "ng-container", 10);
|
|
573
|
+
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_ng_container_3_ng_container_5_Template, 2, 0, "ng-container", 10);
|
|
574
|
+
i0.ɵɵelementContainerEnd();
|
|
575
|
+
} if (rf & 2) {
|
|
576
|
+
const columnRenderer_r24 = ctx.ngIf;
|
|
577
|
+
const ctx_r19 = i0.ɵɵnextContext(2);
|
|
578
|
+
i0.ɵɵadvance(1);
|
|
579
|
+
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.Default);
|
|
580
|
+
i0.ɵɵadvance(1);
|
|
581
|
+
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.HTML);
|
|
582
|
+
i0.ɵɵadvance(1);
|
|
583
|
+
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.UnsanitizedHTML);
|
|
584
|
+
i0.ɵɵadvance(1);
|
|
585
|
+
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.Icon);
|
|
586
|
+
i0.ɵɵadvance(1);
|
|
587
|
+
i0.ɵɵproperty("ngIf", columnRenderer_r24 === ctx_r19.entityTableColumnRenderer.ButtonGroup);
|
|
588
|
+
} }
|
|
589
|
+
function EntityTableComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
590
|
+
i0.ɵɵelementContainerStart(0, 14);
|
|
591
|
+
i0.ɵɵtemplate(1, EntityTableComponent_ng_container_5_ng_container_1_Template, 2, 0, "ng-container", 10);
|
|
592
|
+
i0.ɵɵtemplate(2, EntityTableComponent_ng_container_5_ng_container_2_Template, 2, 0, "ng-container", 10);
|
|
593
|
+
i0.ɵɵtemplate(3, EntityTableComponent_ng_container_5_ng_container_3_Template, 6, 5, "ng-container", 10);
|
|
594
|
+
i0.ɵɵelementContainerEnd();
|
|
595
|
+
} if (rf & 2) {
|
|
596
|
+
const column_r16 = ctx.$implicit;
|
|
597
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
598
|
+
i0.ɵɵproperty("matColumnDef", column_r16.name);
|
|
599
|
+
i0.ɵɵadvance(1);
|
|
600
|
+
i0.ɵɵproperty("ngIf", ctx_r2.columnIsSortable(column_r16));
|
|
601
|
+
i0.ɵɵadvance(1);
|
|
602
|
+
i0.ɵɵproperty("ngIf", !ctx_r2.columnIsSortable(column_r16));
|
|
603
|
+
i0.ɵɵadvance(1);
|
|
604
|
+
i0.ɵɵproperty("ngIf", ctx_r2.getColumnRenderer(column_r16));
|
|
605
|
+
} }
|
|
606
|
+
function EntityTableComponent_tr_6_Template(rf, ctx) { if (rf & 1) {
|
|
607
|
+
i0.ɵɵelement(0, "tr", 67);
|
|
608
|
+
} if (rf & 2) {
|
|
609
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
610
|
+
i0.ɵɵproperty("ngClass", ctx_r3.getHeaderClass());
|
|
611
|
+
} }
|
|
612
|
+
function EntityTableComponent_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
613
|
+
const _r175 = i0.ɵɵgetCurrentView();
|
|
614
|
+
i0.ɵɵelementStart(0, "tr", 68);
|
|
615
|
+
i0.ɵɵlistener("select", function EntityTableComponent_tr_7_Template_tr_select_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r175); const record_r173 = restoredCtx.$implicit; const ctx_r174 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r174.onRowSelect(record_r173)); })("click", function EntityTableComponent_tr_7_Template_tr_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r175); const record_r173 = restoredCtx.$implicit; const ctx_r176 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r176.onRowClick(record_r173)); });
|
|
616
|
+
i0.ɵɵelementEnd();
|
|
617
|
+
} if (rf & 2) {
|
|
618
|
+
const record_r173 = ctx.$implicit;
|
|
619
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
620
|
+
i0.ɵɵproperty("scrollBehavior", ctx_r4.scrollBehavior)("ngClass", ctx_r4.getRowClass(record_r173))("selection", ctx_r4.selection)("selected", ctx_r4.rowIsSelected(record_r173));
|
|
621
|
+
} }
|
|
622
|
+
function EntityTableComponent_igo_entity_table_paginator_8_Template(rf, ctx) { if (rf & 1) {
|
|
623
|
+
const _r178 = i0.ɵɵgetCurrentView();
|
|
624
|
+
i0.ɵɵelementStart(0, "igo-entity-table-paginator", 69);
|
|
625
|
+
i0.ɵɵlistener("paginatorChange", function EntityTableComponent_igo_entity_table_paginator_8_Template_igo_entity_table_paginator_paginatorChange_0_listener($event) { i0.ɵɵrestoreView(_r178); const ctx_r177 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r177.paginatorChange($event)); });
|
|
626
|
+
i0.ɵɵelementEnd();
|
|
627
|
+
} if (rf & 2) {
|
|
628
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
629
|
+
i0.ɵɵproperty("store", ctx_r5.store)("paginatorOptions", ctx_r5.paginatorOptions)("entitySortChange$", ctx_r5.entitySortChange$);
|
|
630
|
+
} }
|
|
631
|
+
const _c0 = function (a0) { return { "height": a0 }; };
|
|
632
|
+
export class EntityTableComponent {
|
|
633
|
+
constructor(cdRef, formBuilder, _focusMonitor, _elementRef, ngControl, _parentForm, _controlName, _defaultErrorStateMatcher, dateAdapter) {
|
|
634
|
+
this.cdRef = cdRef;
|
|
635
|
+
this.formBuilder = formBuilder;
|
|
636
|
+
this._focusMonitor = _focusMonitor;
|
|
637
|
+
this._elementRef = _elementRef;
|
|
638
|
+
this.ngControl = ngControl;
|
|
639
|
+
this._parentForm = _parentForm;
|
|
640
|
+
this._controlName = _controlName;
|
|
641
|
+
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
642
|
+
this.dateAdapter = dateAdapter;
|
|
643
|
+
this.entitySortChange$ = new BehaviorSubject(false);
|
|
644
|
+
this.formGroup = new UntypedFormGroup({});
|
|
645
|
+
this.filteredOptions = {};
|
|
646
|
+
/**
|
|
647
|
+
* Reference to the column renderer types
|
|
648
|
+
* @internal
|
|
649
|
+
*/
|
|
650
|
+
this.entityTableColumnRenderer = EntityTableColumnRenderer;
|
|
651
|
+
/**
|
|
652
|
+
* Reference to the selection's state
|
|
653
|
+
* @internal
|
|
654
|
+
*/
|
|
655
|
+
this.entityTableSelectionState = EntityTableSelectionState;
|
|
656
|
+
/**
|
|
657
|
+
* Observable of the selection,s state
|
|
658
|
+
* @internal
|
|
659
|
+
*/
|
|
660
|
+
this.selectionState$ = new BehaviorSubject(undefined);
|
|
661
|
+
/**
|
|
662
|
+
* Scroll behavior on selection
|
|
663
|
+
*/
|
|
664
|
+
this.scrollBehavior = EntityTableScrollBehavior.Auto;
|
|
665
|
+
/**
|
|
666
|
+
* Whether nulls should be first when sorting
|
|
667
|
+
*/
|
|
668
|
+
this.sortNullsFirst = false;
|
|
669
|
+
/**
|
|
670
|
+
* Show the table paginator or not. False by default.
|
|
671
|
+
*/
|
|
672
|
+
this.withPaginator = false;
|
|
673
|
+
/**
|
|
674
|
+
* Event emitted when an entity (row) is clicked
|
|
675
|
+
*/
|
|
676
|
+
this.entityClick = new EventEmitter();
|
|
677
|
+
/**
|
|
678
|
+
* Event emitted when an entity (row) is selected
|
|
679
|
+
*/
|
|
680
|
+
this.entitySelectChange = new EventEmitter();
|
|
681
|
+
/**
|
|
682
|
+
* Event emitted when the table sort is changed.
|
|
683
|
+
*/
|
|
684
|
+
this.entitySortChange = new EventEmitter(undefined);
|
|
685
|
+
/**
|
|
686
|
+
* Data source consumable by the underlying material table
|
|
687
|
+
* @internal
|
|
688
|
+
*/
|
|
689
|
+
this.dataSource = new MatTableDataSource();
|
|
690
|
+
this.dateAdapter.setLocale('fr-CA');
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Table paginator
|
|
694
|
+
*/
|
|
695
|
+
set paginator(value) {
|
|
696
|
+
this._paginator = value;
|
|
697
|
+
this.dataSource.paginator = value;
|
|
698
|
+
}
|
|
699
|
+
get paginator() {
|
|
700
|
+
return this._paginator;
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* Table headers
|
|
704
|
+
* @internal
|
|
705
|
+
*/
|
|
706
|
+
get headers() {
|
|
707
|
+
let columns = this.template.columns
|
|
708
|
+
.filter((column) => column.visible !== false)
|
|
709
|
+
.map((column) => column.name);
|
|
710
|
+
if (this.selectionCheckbox === true) {
|
|
711
|
+
columns = ['selectionCheckbox'].concat(columns);
|
|
712
|
+
}
|
|
713
|
+
return columns;
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* Whether selection is supported
|
|
717
|
+
* @internal
|
|
718
|
+
*/
|
|
719
|
+
get selection() { return this.template.selection || false; }
|
|
720
|
+
/**
|
|
721
|
+
* Whether a selection checkbox should be displayed
|
|
722
|
+
* @internal
|
|
723
|
+
*/
|
|
724
|
+
get selectionCheckbox() { return this.template.selectionCheckbox || false; }
|
|
725
|
+
/**
|
|
726
|
+
* Whether selection many entities should eb supported
|
|
727
|
+
* @internal
|
|
728
|
+
*/
|
|
729
|
+
get selectMany() { return this.template.selectMany || false; }
|
|
730
|
+
/**
|
|
731
|
+
* Whether selection many entities should eb supported
|
|
732
|
+
* @internal
|
|
733
|
+
*/
|
|
734
|
+
get fixedHeader() { return this.template.fixedHeader === undefined ? true : this.template.fixedHeader; }
|
|
735
|
+
get tableHeight() { return this.template.tableHeight ? this.template.tableHeight : 'auto'; }
|
|
736
|
+
/**
|
|
737
|
+
* Track the selection state to properly display the selection checkboxes
|
|
738
|
+
* @internal
|
|
739
|
+
*/
|
|
740
|
+
ngOnInit() {
|
|
741
|
+
this.handleDatasource();
|
|
742
|
+
this.dataSource.paginator = this.paginator;
|
|
743
|
+
}
|
|
744
|
+
/**
|
|
745
|
+
* @internal
|
|
746
|
+
*/
|
|
747
|
+
ngOnChanges(changes) {
|
|
748
|
+
const store = changes.store;
|
|
749
|
+
if (store && store.currentValue !== store.previousValue) {
|
|
750
|
+
this.handleDatasource();
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Process text or number value change (edition)
|
|
755
|
+
*/
|
|
756
|
+
onValueChange(column, record, event) {
|
|
757
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
758
|
+
record.entity.properties[key] = event.target.value;
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Process boolean value change (edition)
|
|
762
|
+
*/
|
|
763
|
+
onBooleanValueChange(column, record, event) {
|
|
764
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
765
|
+
record.entity.properties[key] = event.checked;
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* Process select value change (edition)
|
|
769
|
+
*/
|
|
770
|
+
onSelectValueChange(column, record, event) {
|
|
771
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
772
|
+
record.entity.properties[key] = event.value;
|
|
773
|
+
}
|
|
774
|
+
/**
|
|
775
|
+
* Process autocomplete value change (edition)
|
|
776
|
+
*/
|
|
777
|
+
onAutocompleteValueChange(column, record, event) {
|
|
778
|
+
this.formGroup.controls[column.name].setValue(event.option.viewValue);
|
|
779
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
780
|
+
record.entity.properties[key] = event.option.value;
|
|
781
|
+
}
|
|
782
|
+
/**
|
|
783
|
+
* Process date value change (edition)
|
|
784
|
+
*/
|
|
785
|
+
onDateChange(column, record, event) {
|
|
786
|
+
const format = "YYYY-MM-DD";
|
|
787
|
+
const value = moment(event.value).format(format);
|
|
788
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column);
|
|
789
|
+
record.entity.properties[key] = value;
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* Enable edition mode for one row
|
|
793
|
+
* More than one row can be edited at the same time
|
|
794
|
+
*/
|
|
795
|
+
enableEdit(record) {
|
|
796
|
+
const item = record.entity.properties || record.entity;
|
|
797
|
+
this.template.columns.forEach(column => {
|
|
798
|
+
column.title = column.validation?.mandatory && !column.title.includes('*') ? column.title + ' *' : column.title;
|
|
799
|
+
const key = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
800
|
+
if (column.type === 'boolean') {
|
|
801
|
+
if (!item[key] || item[key] === null) {
|
|
802
|
+
item[key] = false;
|
|
803
|
+
}
|
|
804
|
+
else if (typeof item[key] === 'string') {
|
|
805
|
+
item[key] = JSON.parse(item[key].toLowerCase());
|
|
806
|
+
}
|
|
807
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
808
|
+
}
|
|
809
|
+
else if (column.type === 'list') {
|
|
810
|
+
if (column.multiple) {
|
|
811
|
+
this.formGroup.setControl(column.name, this.formBuilder.control([item[key]]));
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
815
|
+
typeof item[key] === 'string' ?
|
|
816
|
+
this.formGroup.controls[column.name].setValue(parseInt(item[key])) :
|
|
817
|
+
this.formGroup.controls[column.name].setValue(item[key]);
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
else if (column.type === 'autocomplete') {
|
|
821
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
822
|
+
this.filteredOptions[column.name] = new Observable();
|
|
823
|
+
this.filteredOptions[column.name] =
|
|
824
|
+
this.formGroup.controls[column.name].valueChanges.pipe(map(value => {
|
|
825
|
+
if (value?.length) {
|
|
826
|
+
return column.domainValues?.filter((option) => {
|
|
827
|
+
const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
|
|
828
|
+
const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
829
|
+
return featureNameNormalized.includes(filterNormalized);
|
|
830
|
+
});
|
|
831
|
+
}
|
|
832
|
+
}));
|
|
833
|
+
let formControlValue = item[key];
|
|
834
|
+
column.domainValues.forEach(option => {
|
|
835
|
+
if (typeof formControlValue === 'string' && /^\d+$/.test(formControlValue)) {
|
|
836
|
+
formControlValue = parseInt(formControlValue);
|
|
837
|
+
}
|
|
838
|
+
if (option.value === formControlValue || option.id === formControlValue) {
|
|
839
|
+
formControlValue = option.value;
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
this.formGroup.controls[column.name].setValue(formControlValue);
|
|
843
|
+
if (this.isEdition(record) && column.linkColumnForce) {
|
|
844
|
+
const entity = record.entity;
|
|
845
|
+
this.formGroup.controls[column.name].setValue(entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)]);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
else if (column.type === 'date') {
|
|
849
|
+
if (column.visible !== false) {
|
|
850
|
+
if (item[key]) {
|
|
851
|
+
let date = moment(item[key]);
|
|
852
|
+
item[key] = date.utc().format('YYYY-MM-DD');
|
|
853
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
854
|
+
}
|
|
855
|
+
else {
|
|
856
|
+
const newKey = this.getColumnKeyWithoutPropertiesTag(column.name);
|
|
857
|
+
record.entity.properties[newKey] = null;
|
|
858
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(null));
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
else {
|
|
863
|
+
this.formGroup.setControl(column.name, this.formBuilder.control(item[key]));
|
|
864
|
+
}
|
|
865
|
+
if (this.formGroup.controls[column.name] && this.getValidationAttributeValue(column, 'readonly')) {
|
|
866
|
+
this.formGroup.controls[column.name].disable();
|
|
867
|
+
}
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
handleDatasource() {
|
|
871
|
+
this.unsubscribeStore();
|
|
872
|
+
this.selection$$ = this.store.stateView
|
|
873
|
+
.manyBy$((record) => record.state.selected === true)
|
|
874
|
+
.subscribe((records) => {
|
|
875
|
+
const firstSelected = records[0];
|
|
876
|
+
const firstSelectedStateviewPosition = this.store.stateView.all().indexOf(firstSelected);
|
|
877
|
+
const pageMax = this.paginator ? this.paginator.pageSize * (this.paginator.pageIndex + 1) : 0;
|
|
878
|
+
const pageMin = this.paginator ? pageMax - this.paginator.pageSize : 0;
|
|
879
|
+
if (this.paginator &&
|
|
880
|
+
(firstSelectedStateviewPosition < pageMin ||
|
|
881
|
+
firstSelectedStateviewPosition >= pageMax)) {
|
|
882
|
+
const pageToReach = Math.floor(firstSelectedStateviewPosition / this.paginator.pageSize);
|
|
883
|
+
this.dataSource.paginator.pageIndex = pageToReach;
|
|
884
|
+
}
|
|
885
|
+
this.selectionState$.next(this.computeSelectionState(records));
|
|
886
|
+
});
|
|
887
|
+
this.dataSource$$ = this.store.stateView.all$().subscribe((all) => {
|
|
888
|
+
if (all[0]) {
|
|
889
|
+
this.enableEdit(all[0]);
|
|
890
|
+
}
|
|
891
|
+
this.dataSource.data = all;
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* Unbind the store watcher
|
|
896
|
+
* @internal
|
|
897
|
+
*/
|
|
898
|
+
ngOnDestroy() {
|
|
899
|
+
this.unsubscribeStore();
|
|
900
|
+
}
|
|
901
|
+
unsubscribeStore() {
|
|
902
|
+
if (this.selection$$) {
|
|
903
|
+
this.selection$$.unsubscribe();
|
|
904
|
+
}
|
|
905
|
+
if (this.dataSource$$) {
|
|
906
|
+
this.dataSource$$.unsubscribe();
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
/**
|
|
910
|
+
* Trackby function
|
|
911
|
+
* @param record Record
|
|
912
|
+
* @param index Record index
|
|
913
|
+
* @internal
|
|
914
|
+
*/
|
|
915
|
+
getTrackByFunction() {
|
|
916
|
+
return (index, record) => {
|
|
917
|
+
return record.ref;
|
|
918
|
+
};
|
|
919
|
+
}
|
|
920
|
+
/**
|
|
921
|
+
* Trigger a refresh of thre table. This can be useful when
|
|
922
|
+
* the data source doesn't emit a new value but for some reason
|
|
923
|
+
* the records need an update.
|
|
924
|
+
* @internal
|
|
925
|
+
*/
|
|
926
|
+
refresh() {
|
|
927
|
+
this.cdRef.detectChanges();
|
|
928
|
+
}
|
|
929
|
+
paginatorChange(event) {
|
|
930
|
+
this.paginator = event;
|
|
931
|
+
}
|
|
932
|
+
/**
|
|
933
|
+
* On sort, sort the store
|
|
934
|
+
* @param event Sort event
|
|
935
|
+
* @internal
|
|
936
|
+
*/
|
|
937
|
+
onSort(event) {
|
|
938
|
+
const direction = event.direction;
|
|
939
|
+
const column = this.template.columns
|
|
940
|
+
.find((c) => c.name === event.active);
|
|
941
|
+
if (direction === 'asc' || direction === 'desc') {
|
|
942
|
+
this.store.stateView.sort({
|
|
943
|
+
valueAccessor: (record) => this.getValue(record, column),
|
|
944
|
+
direction,
|
|
945
|
+
nullsFirst: this.sortNullsFirst
|
|
946
|
+
});
|
|
947
|
+
this.entitySortChange.emit({ column, direction });
|
|
948
|
+
this.entitySortChange$.next(true);
|
|
949
|
+
}
|
|
950
|
+
else {
|
|
951
|
+
this.store.stateView.sort(undefined);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
/**
|
|
955
|
+
* When an entity is clicked, emit an event
|
|
956
|
+
* @param record Record
|
|
957
|
+
* @internal
|
|
958
|
+
*/
|
|
959
|
+
onRowClick(record) {
|
|
960
|
+
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
961
|
+
this.entityClick.emit(record.entity);
|
|
962
|
+
}
|
|
963
|
+
/**
|
|
964
|
+
* When an entity is selected, select it in the store and emit an event. Even if
|
|
965
|
+
* "many" is set to true, this method always select a single, exclusive row. Selecting
|
|
966
|
+
* multiple rows should be achieved by using the checkboxes.
|
|
967
|
+
* @param record Record
|
|
968
|
+
* @internal
|
|
969
|
+
*/
|
|
970
|
+
onRowSelect(record) {
|
|
971
|
+
if (this.selection === false) {
|
|
972
|
+
return;
|
|
973
|
+
}
|
|
974
|
+
const entity = record.entity;
|
|
975
|
+
this.store.state.update(entity, { selected: true }, true);
|
|
976
|
+
this.entitySelectChange.emit({ added: [entity] });
|
|
977
|
+
}
|
|
978
|
+
/**
|
|
979
|
+
* Select or unselect all rows at once. On select, emit an event.
|
|
980
|
+
* @param toggle Select or unselect
|
|
981
|
+
* @internal
|
|
982
|
+
*/
|
|
983
|
+
onToggleRows(toggle) {
|
|
984
|
+
if (this.selection === false) {
|
|
985
|
+
return;
|
|
986
|
+
}
|
|
987
|
+
this.store.state.updateAll({ selected: toggle });
|
|
988
|
+
if (toggle === true) {
|
|
989
|
+
const entities = this.store.stateView
|
|
990
|
+
.all()
|
|
991
|
+
.map((record) => record.entity);
|
|
992
|
+
this.entitySelectChange.emit({ added: [entities] });
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
/**
|
|
996
|
+
* When an entity is toggled, select or unselect it in the store. On select,
|
|
997
|
+
* emit an event.
|
|
998
|
+
* @param toggle Select or unselect
|
|
999
|
+
* @param record Record
|
|
1000
|
+
* @internal
|
|
1001
|
+
*/
|
|
1002
|
+
onToggleRow(toggle, record) {
|
|
1003
|
+
if (this.selection === false) {
|
|
1004
|
+
return;
|
|
1005
|
+
}
|
|
1006
|
+
const entity = record.entity;
|
|
1007
|
+
const exclusive = toggle === true && !this.selectMany;
|
|
1008
|
+
this.store.state.update(entity, { selected: toggle }, exclusive);
|
|
1009
|
+
if (toggle === true) {
|
|
1010
|
+
this.entitySelectChange.emit({ added: [entity] });
|
|
1011
|
+
}
|
|
1012
|
+
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
1013
|
+
}
|
|
1014
|
+
/**
|
|
1015
|
+
* When an entity is toggled, select or unselect it in the store. On select,
|
|
1016
|
+
* emit an event.
|
|
1017
|
+
* @param toggle Select or unselect
|
|
1018
|
+
* @param record Record
|
|
1019
|
+
* @internal
|
|
1020
|
+
*/
|
|
1021
|
+
onShiftToggleRow(toggle, record, event) {
|
|
1022
|
+
if (this.selection === false) {
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
if (this.selectMany === false || this.lastRecordCheckedKey === undefined) {
|
|
1026
|
+
this.onToggleRow(toggle, record);
|
|
1027
|
+
return;
|
|
1028
|
+
}
|
|
1029
|
+
// This is a workaround mat checkbox wrong behavior
|
|
1030
|
+
// when the shift key is held.
|
|
1031
|
+
// See https://github.com/angular/components/issues/6232
|
|
1032
|
+
const range = window.document.createRange();
|
|
1033
|
+
range.selectNode(event.target);
|
|
1034
|
+
window.getSelection().removeAllRanges();
|
|
1035
|
+
window.getSelection().addRange(range);
|
|
1036
|
+
event.stopImmediatePropagation();
|
|
1037
|
+
const records = this.store.stateView.all();
|
|
1038
|
+
const recordIndex = records.indexOf(record);
|
|
1039
|
+
const lastRecordChecked = this.store.stateView.get(this.lastRecordCheckedKey);
|
|
1040
|
+
const lastRecordIndex = records.indexOf(lastRecordChecked);
|
|
1041
|
+
const indexes = [recordIndex, lastRecordIndex];
|
|
1042
|
+
const selectRecords = records.slice(Math.min(...indexes), Math.max(...indexes) + 1);
|
|
1043
|
+
const entities = selectRecords.map((_record) => _record.entity);
|
|
1044
|
+
this.store.state.updateMany(entities, { selected: toggle });
|
|
1045
|
+
if (toggle === true) {
|
|
1046
|
+
this.entitySelectChange.emit({ added: entities });
|
|
1047
|
+
}
|
|
1048
|
+
this.lastRecordCheckedKey = this.store.stateView.getKey(record);
|
|
1049
|
+
}
|
|
1050
|
+
/**
|
|
1051
|
+
* Compute the selection state
|
|
1052
|
+
* @returns Whether all, some or no rows are selected
|
|
1053
|
+
* @internal
|
|
1054
|
+
*/
|
|
1055
|
+
computeSelectionState(selectedRecords) {
|
|
1056
|
+
const states = EntityTableSelectionState;
|
|
1057
|
+
const selectionCount = selectedRecords.length;
|
|
1058
|
+
return selectionCount === 0 ?
|
|
1059
|
+
states.None :
|
|
1060
|
+
(selectionCount === this.store.stateView.count ? states.All : states.Some);
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Whether a column is sortable
|
|
1064
|
+
* @param column Column
|
|
1065
|
+
* @returns True if a column is sortable
|
|
1066
|
+
* @internal
|
|
1067
|
+
*/
|
|
1068
|
+
columnIsSortable(column) {
|
|
1069
|
+
let sortable = column.sort;
|
|
1070
|
+
if (sortable === undefined) {
|
|
1071
|
+
sortable = this.template.sort === undefined ? false : this.template.sort;
|
|
1072
|
+
}
|
|
1073
|
+
return sortable;
|
|
1074
|
+
}
|
|
1075
|
+
/**
|
|
1076
|
+
* Whether a row is should be selected based on the underlying entity state
|
|
1077
|
+
* @param record Record
|
|
1078
|
+
* @returns True if a row should be selected
|
|
1079
|
+
* @internal
|
|
1080
|
+
*/
|
|
1081
|
+
rowIsSelected(record) {
|
|
1082
|
+
const state = record.state;
|
|
1083
|
+
return state.selected ? state.selected : false;
|
|
1084
|
+
}
|
|
1085
|
+
isImg(value) {
|
|
1086
|
+
if (this.isUrl(value)) {
|
|
1087
|
+
return (['jpg', 'png', 'gif'].indexOf(value.split('.').pop().toLowerCase()) !== -1);
|
|
1088
|
+
}
|
|
1089
|
+
else {
|
|
1090
|
+
return false;
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
isUrl(value) {
|
|
1094
|
+
if (typeof value === 'string') {
|
|
1095
|
+
return (value.slice(0, 8) === 'https://' || value.slice(0, 7) === 'http://');
|
|
1096
|
+
}
|
|
1097
|
+
else {
|
|
1098
|
+
return false;
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
/**
|
|
1102
|
+
* Method to access an entity's values
|
|
1103
|
+
* @param record Record
|
|
1104
|
+
* @param column Column
|
|
1105
|
+
* @returns Any value
|
|
1106
|
+
* @internal
|
|
1107
|
+
*/
|
|
1108
|
+
getValue(record, column) {
|
|
1109
|
+
const entity = record.entity;
|
|
1110
|
+
let value;
|
|
1111
|
+
if (column.valueAccessor !== undefined) {
|
|
1112
|
+
return column.valueAccessor(entity, record);
|
|
1113
|
+
}
|
|
1114
|
+
if (this.template.valueAccessor !== undefined) {
|
|
1115
|
+
return this.template.valueAccessor(entity, column.name, record);
|
|
1116
|
+
}
|
|
1117
|
+
value = this.store.getProperty(entity, column.name);
|
|
1118
|
+
if (column.type === 'boolean') {
|
|
1119
|
+
if (value === undefined || value === null || value === '') {
|
|
1120
|
+
value = false;
|
|
1121
|
+
}
|
|
1122
|
+
else if (typeof value !== 'boolean' && value !== undefined) {
|
|
1123
|
+
if (typeof value === 'number') {
|
|
1124
|
+
value = Boolean(value);
|
|
1125
|
+
}
|
|
1126
|
+
else {
|
|
1127
|
+
value = JSON.parse(value.toLowerCase());
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
if (!this.isEdition(record)) {
|
|
1131
|
+
value = value ? '✓' : ''; // check mark
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
else if (column.type === 'list' && value && column.domainValues) {
|
|
1135
|
+
const entity = record.entity;
|
|
1136
|
+
if (column.multiple) {
|
|
1137
|
+
let list_id;
|
|
1138
|
+
typeof value === 'string' ? list_id = value.match(/[\w.-]+/g).map(Number) : list_id = value;
|
|
1139
|
+
let list_option = [];
|
|
1140
|
+
column.domainValues.forEach(option => {
|
|
1141
|
+
if (list_id.includes(option.id)) {
|
|
1142
|
+
if (record.edition) {
|
|
1143
|
+
list_option.push(option.id);
|
|
1144
|
+
}
|
|
1145
|
+
else {
|
|
1146
|
+
list_option.push(option.value);
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
});
|
|
1150
|
+
this.isEdition(record) ? value = list_id : value = list_option;
|
|
1151
|
+
}
|
|
1152
|
+
else {
|
|
1153
|
+
if (!this.isEdition(record) && column.linkColumnForce) {
|
|
1154
|
+
value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];
|
|
1155
|
+
}
|
|
1156
|
+
else {
|
|
1157
|
+
column.domainValues.forEach(option => {
|
|
1158
|
+
if (typeof value === 'string' && /^\d+$/.test(value)) {
|
|
1159
|
+
value = parseInt(value);
|
|
1160
|
+
}
|
|
1161
|
+
if (option.value === value || option.id === value) {
|
|
1162
|
+
this.isEdition(record) ? value = option.id : value = option.value;
|
|
1163
|
+
}
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
else if (column.type === 'autocomplete' && value && column.domainValues) {
|
|
1169
|
+
const entity = record.entity;
|
|
1170
|
+
if (!this.isEdition(record) && column.linkColumnForce) {
|
|
1171
|
+
value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];
|
|
1172
|
+
}
|
|
1173
|
+
else {
|
|
1174
|
+
column.domainValues.forEach(option => {
|
|
1175
|
+
if (typeof value === 'string' && /^\d+$/.test(value)) {
|
|
1176
|
+
value = parseInt(value);
|
|
1177
|
+
}
|
|
1178
|
+
if (option.value === value || option.id === value) {
|
|
1179
|
+
value = option.value;
|
|
1180
|
+
}
|
|
1181
|
+
});
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
else if (column.type === 'date') {
|
|
1185
|
+
if (this.isEdition(record)) {
|
|
1186
|
+
if (value) {
|
|
1187
|
+
let date = moment(value);
|
|
1188
|
+
value = date.format();
|
|
1189
|
+
this.formGroup.controls[column.name].setValue(value);
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
else if (!this.isEdition(record) && value === null) {
|
|
1193
|
+
value = "";
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
if (value === undefined) {
|
|
1197
|
+
value = '';
|
|
1198
|
+
}
|
|
1199
|
+
return value;
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* Method to access an entity's validation values
|
|
1203
|
+
* @param column Column
|
|
1204
|
+
* @param validationType string
|
|
1205
|
+
* @returns Any value (false if no validation or not the one concerned)
|
|
1206
|
+
* @internal
|
|
1207
|
+
*/
|
|
1208
|
+
getValidationAttributeValue(column, validationType) {
|
|
1209
|
+
if (column.validation !== undefined && column.validation[validationType] !== undefined) {
|
|
1210
|
+
return column.validation[validationType];
|
|
1211
|
+
}
|
|
1212
|
+
else {
|
|
1213
|
+
return false;
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
isEdition(record) {
|
|
1217
|
+
return record.entity.edition ? true : false;
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* Return the type of renderer of a column
|
|
1221
|
+
* @param column Column
|
|
1222
|
+
* @returns Renderer type
|
|
1223
|
+
* @internal
|
|
1224
|
+
*/
|
|
1225
|
+
getColumnRenderer(column) {
|
|
1226
|
+
if (column.renderer !== undefined) {
|
|
1227
|
+
return column.renderer;
|
|
1228
|
+
}
|
|
1229
|
+
return EntityTableColumnRenderer.Default;
|
|
1230
|
+
}
|
|
1231
|
+
/**
|
|
1232
|
+
* Return the table ngClass
|
|
1233
|
+
* @returns ngClass
|
|
1234
|
+
* @internal
|
|
1235
|
+
*/
|
|
1236
|
+
getTableClass() {
|
|
1237
|
+
return {
|
|
1238
|
+
'igo-entity-table-with-selection': this.selection
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
/**
|
|
1242
|
+
* Return a header ngClass
|
|
1243
|
+
* @returns ngClass
|
|
1244
|
+
* @internal
|
|
1245
|
+
*/
|
|
1246
|
+
getHeaderClass() {
|
|
1247
|
+
const func = this.template.headerClassFunc;
|
|
1248
|
+
if (func instanceof Function) {
|
|
1249
|
+
return func();
|
|
1250
|
+
}
|
|
1251
|
+
return {};
|
|
1252
|
+
}
|
|
1253
|
+
/**
|
|
1254
|
+
* Return a row ngClass
|
|
1255
|
+
* @param record Record
|
|
1256
|
+
* @returns ngClass
|
|
1257
|
+
* @internal
|
|
1258
|
+
*/
|
|
1259
|
+
getRowClass(record) {
|
|
1260
|
+
const entity = record.entity;
|
|
1261
|
+
const func = this.template.rowClassFunc;
|
|
1262
|
+
if (func instanceof Function) {
|
|
1263
|
+
return func(entity, record);
|
|
1264
|
+
}
|
|
1265
|
+
return {};
|
|
1266
|
+
}
|
|
1267
|
+
/**
|
|
1268
|
+
* Return a row ngClass
|
|
1269
|
+
* @param record Record
|
|
1270
|
+
* @param column Column
|
|
1271
|
+
* @returns ngClass
|
|
1272
|
+
* @internal
|
|
1273
|
+
*/
|
|
1274
|
+
getCellClass(record, column) {
|
|
1275
|
+
const entity = record.entity;
|
|
1276
|
+
const cls = {};
|
|
1277
|
+
const tableFunc = this.template.cellClassFunc;
|
|
1278
|
+
if (tableFunc instanceof Function) {
|
|
1279
|
+
Object.assign(cls, tableFunc(entity, column, record));
|
|
1280
|
+
}
|
|
1281
|
+
const columnFunc = column.cellClassFunc;
|
|
1282
|
+
if (columnFunc instanceof Function) {
|
|
1283
|
+
Object.assign(cls, columnFunc(entity, record));
|
|
1284
|
+
}
|
|
1285
|
+
return cls;
|
|
1286
|
+
}
|
|
1287
|
+
/**
|
|
1288
|
+
* When a button is clicked
|
|
1289
|
+
* @param func Function
|
|
1290
|
+
* @param record Record
|
|
1291
|
+
* @internal
|
|
1292
|
+
*/
|
|
1293
|
+
onButtonClick(clickFunc, record) {
|
|
1294
|
+
this.enableEdit(record);
|
|
1295
|
+
if (typeof clickFunc === 'function') {
|
|
1296
|
+
clickFunc(record.entity, record);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
/**
|
|
1300
|
+
* Retrieve column name without his "properties" tag (useful for edition workspace properties)
|
|
1301
|
+
*/
|
|
1302
|
+
getColumnKeyWithoutPropertiesTag(column) {
|
|
1303
|
+
if (column.includes('properties.')) {
|
|
1304
|
+
return column.split('.')[1];
|
|
1305
|
+
}
|
|
1306
|
+
return column;
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
EntityTableComponent.ɵfac = function EntityTableComponent_Factory(t) { return new (t || EntityTableComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.NgControl, 10), i0.ɵɵdirectiveInject(i1.NgForm, 8), i0.ɵɵdirectiveInject(i1.FormControlName, 8), i0.ɵɵdirectiveInject(i3.ErrorStateMatcher), i0.ɵɵdirectiveInject(i3.DateAdapter)); };
|
|
1310
|
+
EntityTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityTableComponent, selectors: [["igo-entity-table"]], inputs: { store: "store", paginator: "paginator", template: "template", scrollBehavior: "scrollBehavior", sortNullsFirst: "sortNullsFirst", withPaginator: "withPaginator", paginatorOptions: "paginatorOptions" }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, features: [i0.ɵɵProvidersFeature([{ provide: MatFormFieldControl, useExisting: EntityTableComponent }]), i0.ɵɵNgOnChangesFeature], decls: 9, vars: 11, consts: [[1, "table-container", 3, "ngStyle"], ["mat-table", "", "matSort", "", 3, "ngClass", "dataSource", "trackBy", "matSortChange"], ["matColumnDef", "selectionCheckbox", 1, "mat-cell-checkbox"], ["mat-header-cell", "", 4, "matHeaderCellDef"], ["mat-cell", "", 4, "matCellDef"], [3, "matColumnDef", 4, "ngFor", "ngForOf"], ["mat-header-row", "", 3, "ngClass", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", "igoEntityTableRow", "", 3, "scrollBehavior", "ngClass", "selection", "selected", "select", "click", 4, "matRowDef", "matRowDefColumns"], [3, "store", "paginatorOptions", "entitySortChange$", "paginatorChange", 4, "ngIf"], ["mat-header-cell", ""], [4, "ngIf"], [3, "checked", "indeterminate", "change"], ["mat-cell", ""], [3, "checked", "mousedown", "click", "change"], [3, "matColumnDef"], ["mat-header-cell", "", "mat-sort-header", "", 3, "matTooltip", 4, "matHeaderCellDef"], ["mat-header-cell", "", "mat-sort-header", "", 3, "matTooltip"], ["mat-header-cell", "", 3, "matTooltip", 4, "matHeaderCellDef"], ["mat-header-cell", "", 3, "matTooltip"], [4, "matCellDef"], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", 4, "ngIf", "ngIfElse"], ["isAnUrlDefault", ""], ["mat-cell", "", 1, "mat-cell-text", 3, "ngClass"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", "click"], ["igoImageError", "", "width", "50", "heigth", "auto", 3, "src", 4, "ngIf", "ngIfElse"], ["notImg", ""], ["igoImageError", "", "width", "50", "heigth", "auto", 3, "src"], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", "innerHTML", 4, "ngIf", "ngIfElse"], ["isAnUrlHTML", ""], ["mat-cell", "", 1, "mat-cell-text", 3, "ngClass", "innerHTML"], ["mat-cell", "", "class", "mat-cell-text edition", 3, "formGroup", "ngClass", 4, "ngIf", "ngIfElse"], ["isUnsanitizedHTML", ""], ["mat-cell", "", 1, "mat-cell-text", "edition", 3, "formGroup", "ngClass"], ["class", "date-picker", 4, "ngIf"], ["matInput", "", "type", "time", "step", "900", 3, "formControlName", "focus", "keypress", "blur", 4, "ngIf"], ["matInput", "", "type", "number", "class", "class_number_edition", 3, "formControlName", "step", "value", "readonly", "required", "min", "max", "input", 4, "ngIf"], ["matInput", "", "type", "text", 3, "formControlName", "value", "readonly", "required", "input", 4, "ngIf"], [3, "formControlName", "checked", "change", 4, "ngIf"], [3, "required", "formControlName", "multiple", "value", "selectionChange", 4, "ngIf"], ["matInput", "", "type", "text", 3, "formControlName", "matAutocomplete", "required", "value", "readonly", 4, "ngIf"], ["panelWidth", "430px", 3, "optionSelected"], ["auto", "matAutocomplete"], [3, "value", 4, "ngFor", "ngForOf"], [1, "date-picker"], ["matSuffix", "", 3, "for"], ["matInput", "", 3, "matDatepicker", "formControlName", "value", "dateChange"], ["picker", ""], ["matInput", "", "type", "time", "step", "900", 3, "formControlName", "focus", "keypress", "blur"], ["matInput", "", "type", "number", 1, "class_number_edition", 3, "formControlName", "step", "value", "readonly", "required", "min", "max", "input"], ["matInput", "", "type", "text", 3, "formControlName", "value", "readonly", "required", "input"], [3, "formControlName", "checked", "change"], [3, "required", "formControlName", "multiple", "value", "selectionChange"], [3, "value", "disabled", 4, "ngFor", "ngForOf"], [3, "value", "disabled"], ["matInput", "", "type", "text", 3, "formControlName", "matAutocomplete", "required", "value", "readonly"], [3, "value"], ["isAnUrlUnsanitizedHTML", ""], ["mat-cell", "", "class", "mat-cell-text", 3, "ngClass", 4, "matCellDef"], [3, "svgIcon", "click", 4, "ngIf"], [3, "svgIcon", 4, "ngIf"], [3, "svgIcon", "click"], [3, "svgIcon"], [4, "ngFor", "ngForOf"], ["igoStopPropagation", "", "mat-icon-button", "", 3, "color", "disabled", "mousedown", 4, "ngIf"], ["igoStopPropagation", "", "mat-mini-fab", "", 3, "color", "disabled", "mousedown", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", 3, "color", "disabled", "mousedown"], ["igoStopPropagation", "", "mat-mini-fab", "", 3, "color", "disabled", "mousedown"], ["mat-header-row", "", 3, "ngClass"], ["mat-row", "", "igoEntityTableRow", "", 3, "scrollBehavior", "ngClass", "selection", "selected", "select", "click"], [3, "store", "paginatorOptions", "entitySortChange$", "paginatorChange"]], template: function EntityTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1311
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "table", 1);
|
|
1312
|
+
i0.ɵɵlistener("matSortChange", function EntityTableComponent_Template_table_matSortChange_1_listener($event) { return ctx.onSort($event); });
|
|
1313
|
+
i0.ɵɵelementContainerStart(2, 2);
|
|
1314
|
+
i0.ɵɵtemplate(3, EntityTableComponent_th_3_Template, 2, 1, "th", 3);
|
|
1315
|
+
i0.ɵɵtemplate(4, EntityTableComponent_td_4_Template, 2, 1, "td", 4);
|
|
1316
|
+
i0.ɵɵelementContainerEnd();
|
|
1317
|
+
i0.ɵɵtemplate(5, EntityTableComponent_ng_container_5_Template, 4, 4, "ng-container", 5);
|
|
1318
|
+
i0.ɵɵtemplate(6, EntityTableComponent_tr_6_Template, 1, 1, "tr", 6);
|
|
1319
|
+
i0.ɵɵtemplate(7, EntityTableComponent_tr_7_Template, 1, 4, "tr", 7);
|
|
1320
|
+
i0.ɵɵelementEnd();
|
|
1321
|
+
i0.ɵɵtemplate(8, EntityTableComponent_igo_entity_table_paginator_8_Template, 1, 3, "igo-entity-table-paginator", 8);
|
|
1322
|
+
i0.ɵɵelementEnd();
|
|
1323
|
+
} if (rf & 2) {
|
|
1324
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c0, ctx.tableHeight));
|
|
1325
|
+
i0.ɵɵadvance(1);
|
|
1326
|
+
i0.ɵɵproperty("ngClass", ctx.getTableClass())("dataSource", ctx.dataSource)("trackBy", ctx.getTrackByFunction());
|
|
1327
|
+
i0.ɵɵadvance(4);
|
|
1328
|
+
i0.ɵɵproperty("ngForOf", ctx.template.columns);
|
|
1329
|
+
i0.ɵɵadvance(1);
|
|
1330
|
+
i0.ɵɵproperty("matHeaderRowDef", ctx.headers)("matHeaderRowDefSticky", ctx.fixedHeader);
|
|
1331
|
+
i0.ɵɵadvance(1);
|
|
1332
|
+
i0.ɵɵproperty("matRowDefColumns", ctx.headers);
|
|
1333
|
+
i0.ɵɵadvance(1);
|
|
1334
|
+
i0.ɵɵproperty("ngIf", ctx.withPaginator);
|
|
1335
|
+
} }, dependencies: [i4.NgClass, i4.NgForOf, i4.NgIf, i4.NgStyle, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i6.MatAutocomplete, i6.MatAutocompleteTrigger, i3.MatOption, i7.MatSort, i7.MatSortHeader, i8.MatIcon, i9.MatButton, i10.MatCheckbox, i11.MatSuffix, i12.MatSelect, i13.StopPropagationDirective, i14.EntityTablePaginatorComponent, i15.ImageErrorDirective, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.RequiredValidator, i1.MinValidator, i1.MaxValidator, i1.FormGroupDirective, i1.FormControlName, i16.MatInput, i17.MatDatepicker, i17.MatDatepickerInput, i17.MatDatepickerToggle, i18.MatTooltip, i19.EntityTableRowDirective, i4.AsyncPipe, i20.SanitizeHtmlPipe, i21.SecureImagePipe, i22.TranslatePipe], styles: ["[_nghost-%COMP%]{width:100%;height:100%;display:block}.table-compact[_nghost-%COMP%] tr.mat-header-row[_ngcontent-%COMP%], .table-compact[_nghost-%COMP%] .mat-checkbox .mat-checkbox-ripple{height:36px}.table-compact[_nghost-%COMP%] tr.mat-row[_ngcontent-%COMP%], .table-compact[_nghost-%COMP%] .mat-checkbox .mat-checkbox-ripple{height:28px}.table-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text[_ngcontent-%COMP%]{overflow:hidden;word-wrap:break-word}th.mat-header-cell[_ngcontent-%COMP%], td.mat-cell[_ngcontent-%COMP%], td.mat-footer-cell[_ngcontent-%COMP%]{padding:0 3px}entity-table[_ngcontent-%COMP%] table.igo-entity-table-with-selection[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:7px}.class_hidden[_ngcontent-%COMP%]{visibility:hidden}.class_display_none[_ngcontent-%COMP%]{display:none}.class_boolean[_ngcontent-%COMP%], .class_icon[_ngcontent-%COMP%], .class_number[_ngcontent-%COMP%]{text-align:center;padding-right:35px!important}.class_sting[_ngcontent-%COMP%], .class_text[_ngcontent-%COMP%], .class_number_edition[_ngcontent-%COMP%]{text-align:left}td.edition[_ngcontent-%COMP%]{background:rgba(166,166,166,.2)}input[_ngcontent-%COMP%]{border-bottom:1px solid darkgrey}"], changeDetection: 0 });
|
|
1336
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityTableComponent, [{
|
|
1337
|
+
type: Component,
|
|
1338
|
+
args: [{ selector: 'igo-entity-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: EntityTableComponent }], template: "<div class=\"table-container\" [ngStyle]=\"{'height': tableHeight}\">\n <table mat-table matSort [ngClass]=\"getTableClass()\" [dataSource]=\"dataSource\" [trackBy]=\"getTrackByFunction()\" (matSortChange)=\"onSort($event)\">\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container *ngIf=\"selectMany\">\n <ng-container *ngIf=\"selectionState$ | async as selectionState\">\n <mat-checkbox (change)=\"onToggleRows($event.checked)\" [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"selectionState === entityTableSelectionState.Some\">\n </mat-checkbox>\n </ng-container>\n </ng-container>\n </th>\n <td mat-cell *matCellDef=\"let record\">\n <mat-checkbox (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\" (click)=\"$event.shiftKey ?\n onShiftToggleRow(!rowIsSelected(record), record, $event) : $event.stopPropagation()\" (change)=\"onToggleRow($event.checked,record)\"\n [checked]=\"rowIsSelected(record)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container [matColumnDef]=\"column.name\" *ngFor=\"let column of template.columns\">\n <ng-container *ngIf=\"columnIsSortable(column)\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\n {{column.title}}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"!columnIsSortable(column)\">\n <th mat-header-cell *matHeaderCellDef [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\n {{column.title}}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"getColumnRenderer(column) as columnRenderer\">\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Default\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlDefault\" [ngClass]=\"getCellClass(record, column)\">\n {{getValue(record, column)}}\n </td>\n <ng-template #isAnUrlDefault>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate }}\n </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.HTML\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlHTML\" [ngClass]=\"getCellClass(record, column)\"\n [innerHTML]=\"getValue(record, column)\">\n </td>\n <ng-template #isAnUrlHTML>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' |\n translate }} </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.UnsanitizedHTML\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text edition\" [formGroup]=\"formGroup\" *ngIf=\"isEdition(record);else isUnsanitizedHTML\"\n [ngClass]=\"getCellClass(record, column)\">\n <div class=\"date-picker\" *ngIf=\"column.type === 'date'\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"column.name\" value=\"{{getValue(record, column)}}\"\n (dateChange)=\"onDateChange(column.name, record, $event)\">\n <mat-datepicker #picker></mat-datepicker>\n </div>\n <input matInput type=\"time\" *ngIf=\"column.type === 'time'\" [formControlName]=\"column.name\" step=\"900\" (focus)=\"column.onFocus($event)\"\n (keypress)=\"column.onChange($event)\" (blur)=\"column.onBlur($event)\">\n <input matInput type=\"number\" class=\"class_number_edition\" *ngIf=\"column.type === 'number'\" [formControlName]=\"column.name\" step=\"{{column.step}}\"\n value=\"{{getValue(record,column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\n min=\"{{getValidationAttributeValue(column, 'minValue')}}\" max=\"{{getValidationAttributeValue(column, 'maxValue')}}\">\n <input matInput type=\"text\" *ngIf=\"!column.type || column.type ==='string'\" [formControlName]=\"column.name\"\n value=\"{{getValue(record, column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\">\n <mat-checkbox *ngIf=\"column.type === 'boolean'\" [formControlName]=\"column.name\" [checked]=\"getValue(record,column)\"\n (change)=\"onBooleanValueChange(column.name, record,$event)\"></mat-checkbox>\n <mat-select *ngIf=\"column.type === 'list'\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\n [formControlName]=\"column.name\" [multiple]=\"column.multiple\" (selectionChange)=\"onSelectValueChange(column.name, record, $event)\"\n [value]=\"getValue(record, column)\">\n <mat-option *ngFor=\"let option of column.domainValues\" [value]=\"option.id\" [disabled]=\"option.disabled\">\n {{ option.value }}\n </mat-option>\n </mat-select>\n <input matInput type=\"text\" [formControlName]=\"column.name\" *ngIf=\"column.type === 'autocomplete'\" [matAutocomplete]=\"auto\"\n required=\"{{getValidationAttributeValue(column, 'mandatory')}}\" value=\"{{getValue(record, column)}}\"\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteValueChange(column, record, $event)\"\n panelWidth=\"430px\">\n <mat-option *ngFor=\"let option of filteredOptions[column.name] | async\"\n [value]=\"option.id\">\n {{ option.value }}\n </mat-option>\n </mat-autocomplete>\n </td>\n <ng-template #isUnsanitizedHTML>\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlUnsanitizedHTML\" [ngClass]=\"getCellClass(record, column)\"\n [innerHTML]=\"getValue(record, column) | sanitizeHtml\">\n </td>\n <ng-template #isAnUrlUnsanitizedHTML>\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span></ng-template>\n </a>\n </td>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Icon\">\n <td mat-cell *matCellDef=\"let record\" class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <mat-icon *ngIf=\"column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\" (click)=\"column.onClick($event)\"></mat-icon>\n <mat-icon *ngIf=\"!column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\"></mat-icon>\n </td>\n </ng-container>\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.ButtonGroup\">\n <ng-container *matCellDef=\"let record\">\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\n <span *ngFor=\"let button of getValue(record, column)\">\n <ng-container *ngIf=\"isEdition(record) === button.editMode || button.editMode === undefined\">\n <button *ngIf=\"button.style === 'mat-icon-button'\" igoStopPropagation mat-icon-button\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\n </button>\n <button *ngIf=\"button.style !== 'mat-icon-button'\" igoStopPropagation mat-mini-fab\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\n </button>\n </ng-container>\n </span>\n </td>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"headers; sticky: fixedHeader\" [ngClass]=\"getHeaderClass()\">\n </tr>\n <tr mat-row igoEntityTableRow *matRowDef=\"let record; columns: headers;\" [scrollBehavior]=\"scrollBehavior\" [ngClass]=\"getRowClass(record)\" [selection]=\"selection\" [selected]=\"rowIsSelected(record)\" (select)=\"onRowSelect(record)\" (click)=\"onRowClick(record)\">\n </tr>\n </table>\n <igo-entity-table-paginator *ngIf=\"withPaginator\" [store]=\"store\" [paginatorOptions]=\"paginatorOptions\" [entitySortChange$]=\"entitySortChange$\" (paginatorChange)=\"paginatorChange($event)\">\n </igo-entity-table-paginator>\n</div>", styles: [":host{width:100%;height:100%;display:block}:host.table-compact tr.mat-header-row,:host.table-compact ::ng-deep .mat-checkbox .mat-checkbox-ripple{height:36px}:host.table-compact tr.mat-row,:host.table-compact ::ng-deep .mat-checkbox .mat-checkbox-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0 3px}entity-table table.igo-entity-table-with-selection tr:hover{-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_sting,.class_text,.class_number_edition{text-align:left}td.edition{background:rgba(166,166,166,.2)}input{border-bottom:1px solid darkgrey}\n"] }]
|
|
1339
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
1340
|
+
type: Optional
|
|
1341
|
+
}, {
|
|
1342
|
+
type: Self
|
|
1343
|
+
}] }, { type: i1.NgForm, decorators: [{
|
|
1344
|
+
type: Optional
|
|
1345
|
+
}] }, { type: i1.FormControlName, decorators: [{
|
|
1346
|
+
type: Optional
|
|
1347
|
+
}] }, { type: i3.ErrorStateMatcher }, { type: i3.DateAdapter }]; }, { store: [{
|
|
1348
|
+
type: Input
|
|
1349
|
+
}], paginator: [{
|
|
1350
|
+
type: Input
|
|
1351
|
+
}], template: [{
|
|
1352
|
+
type: Input
|
|
1353
|
+
}], scrollBehavior: [{
|
|
1354
|
+
type: Input
|
|
1355
|
+
}], sortNullsFirst: [{
|
|
1356
|
+
type: Input
|
|
1357
|
+
}], withPaginator: [{
|
|
1358
|
+
type: Input
|
|
1359
|
+
}], paginatorOptions: [{
|
|
1360
|
+
type: Input
|
|
1361
|
+
}], entityClick: [{
|
|
1362
|
+
type: Output
|
|
1363
|
+
}], entitySelectChange: [{
|
|
1364
|
+
type: Output
|
|
1365
|
+
}], entitySortChange: [{
|
|
1366
|
+
type: Output
|
|
1367
|
+
}] }); })();
|
|
1368
1368
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvbGliL2VudGl0eS9lbnRpdHktdGFibGUvZW50aXR5LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvbGliL2VudGl0eS9lbnRpdHktdGFibGUvZW50aXR5LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBT3ZCLFFBQVEsRUFDUixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFPTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUMxQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQTBELGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2hDekIsNkJBQWdFO0lBQzVELHdDQUNvRTtJQUR0RCw4TUFBVSxlQUFBLG1DQUE0QixDQUFBLElBQUM7SUFFckQsaUJBQWU7SUFDbkIsMEJBQWU7Ozs7SUFIMkMsZUFBNEQ7SUFBNUQsb0ZBQTRELDhFQUFBOzs7SUFGMUgsNkJBQWlDO0lBQzdCLDRHQUllOztJQUNuQiwwQkFBZTs7O0lBTEksZUFBOEI7SUFBOUIsbUVBQThCOzs7SUFGckQsNkJBQXNDO0lBQ2xDLDZGQU1lO0lBQ25CLGlCQUFLOzs7SUFQYyxlQUFnQjtJQUFoQix3Q0FBZ0I7Ozs7SUFRbkMsOEJBQXNDLHVCQUFBO0lBQ3BCLDRJQUErQix1QkFBdUIsR0FBRyxJQUFJLElBQUMsK05BQVUsaUNBQ3RGLDBCQUFrQixpQ0FBcUIscUJBQWlCLEdBQUcsd0JBQXdCLENBQUEsSUFEUCxpT0FDbUIsZUFBQSwrQ0FBa0MsQ0FBQSxJQURyRDtJQUc1RSxpQkFBZSxFQUFBOzs7O0lBRGYsZUFBaUM7SUFBakMsMERBQWlDOzs7SUFPakMsOEJBQWlIO0lBQzdHLFlBQ0o7SUFBQSxpQkFBSzs7O0lBRmlELGdGQUEwRDtJQUM1RyxlQUNKO0lBREksaURBQ0o7OztJQUhKLDZCQUErQztJQUMzQyxrR0FFSztJQUNULDBCQUFlOzs7SUFHWCw4QkFBaUc7SUFDN0YsWUFDSjtJQUFBLGlCQUFLOzs7SUFGaUMsZ0ZBQTBEO0lBQzVGLGVBQ0o7SUFESSxpREFDSjs7O0lBSEosNkJBQWdEO0lBQzVDLGtHQUVLO0lBQ1QsMEJBQWU7OztJQUtILDhCQUF5STtJQUNySSxZQUNKO0lBQUEsaUJBQUs7Ozs7O0lBRjJGLHNFQUF3QztJQUNwSSxlQUNKO0lBREkseUVBQ0o7OztJQUlZLDBCQUEySjs7Ozs7OztJQUFwRix1SUFBMEQ7OztJQUM1Ryw0QkFBTTtJQUFBLFlBRTNDOztJQUFBLGlCQUFPOztJQUZvQyxlQUUzQztJQUYyQyw2RkFFM0M7OztJQUxRLDhCQUE0RSxZQUFBO0lBQ1MsNEtBQVMsd0JBQXdCLElBQUM7SUFDL0csZ0pBQTJKO0lBQzNKLGlNQUVLO0lBQ1QsaUJBQUksRUFBQTs7Ozs7O0lBTjJCLHNFQUF3QztJQUNwRSxlQUFtQztJQUFuQyw0RkFBbUM7SUFDZCxlQUFzQztJQUF0Qyw4RUFBc0Msa0JBQUE7OztJQVAxRSw2QkFBdUM7SUFDbkMsZ0lBRUs7SUFDTCxtTEFTYztJQUNsQiwwQkFBZTs7Ozs7O0lBYnlCLGVBQXVDO0lBQXZDLCtFQUF1QyxrQkFBQTs7O0lBRm5GLDZCQUEyRTtJQUN2RSxxSUFjZTtJQUNuQiwwQkFBZTs7O0lBR1AseUJBRUs7Ozs7O0lBRndGLHNFQUF3QywwRUFBQTs7O0lBTXpILDBCQUEySjs7Ozs7OztJQUFwRix1SUFBMEQ7OztJQUM1Ryw0QkFBTTtJQUFBLFlBQzVCOztJQUFBLGlCQUFPOztJQURxQixlQUM1QjtJQUQ0Qiw2RUFDNUI7OztJQUpQLDhCQUE0RSxZQUFBO0lBQ1MsNEtBQVMsd0JBQXdCLElBQUM7SUFDL0csZ0pBQTJKO0lBQzNKLGlNQUNvQjtJQUN4QixpQkFBSSxFQUFBOzs7Ozs7SUFMMkIsc0VBQXdDO0lBQ3BFLGVBQW1DO0lBQW5DLDRGQUFtQztJQUNkLGVBQXNDO0lBQXRDLDhFQUFzQyxrQkFBQTs7O0lBUDFFLDZCQUF1QztJQUNuQyxnSUFFSztJQUNMLG1MQVFjO0lBQ2xCLDBCQUFlOzs7Ozs7SUFaeUIsZUFBdUM7SUFBdkMsK0VBQXVDLGtCQUFBOzs7SUFGbkYsNkJBQXdFO0lBQ3BFLHFJQWFlO0lBQ25CLDBCQUFlOzs7O0lBS0gsK0JBQXdEO0lBQ3BELDRDQUF3RTtJQUN4RSxpQ0FDeUQ7SUFBekQsdVZBQWMsZUFBQSx5REFBeUMsQ0FBQSxJQUFDO0lBRHhELGlCQUN5RDtJQUN6RCwyQ0FBeUM7SUFDN0MsaUJBQU07Ozs7OztJQUorQixlQUFjO0lBQWQsMEJBQWM7SUFDMEIsZUFBb0M7SUFBcEMsMkVBQW9DO0lBQTdGLG9DQUF3QixvQ0FBQTs7OztJQUk1QyxpQ0FDb0U7SUFEa0MseVBBQVMsZUFBQSwwQkFBc0IsQ0FBQSxJQUFDLGtQQUMxSCxlQUFBLDJCQUF1QixDQUFBLElBRG1HLDBPQUN6RixlQUFBLHlCQUFxQixDQUFBLElBRG9FO0lBQXRJLGlCQUNvRTs7O0lBRFQsaURBQStCOzs7O0lBRTFGLGlDQUdvSDtJQUZoRiwrVUFBUyxlQUFBLDBEQUEwQyxDQUFBLElBQUM7SUFEeEYsaUJBR29IOzs7OztJQUhRLGlEQUFzQjtJQUNsSiwyRUFBbUM7SUFDbkMsaUdBQThEO0lBQUMsa0dBQStEO0lBQzlILDRGQUF5RDtJQUFDLDRGQUF5RDtJQUh2QixpREFBK0I7Ozs7SUFJM0gsaUNBRStIO0lBRDFGLCtVQUFTLGVBQUEsMERBQTBDLENBQUEsSUFBQztJQUR6RixpQkFFK0g7Ozs7O0lBRC9ILDJFQUFvQztJQUNwQyxpR0FBOEQ7SUFBQyxrR0FBK0Q7SUFGbEQsaURBQStCOzs7O0lBRzNHLHdDQUM0RDtJQUE1RCxpV0FBVSxlQUFBLGtFQUFnRCxDQUFBLElBQUM7SUFBQyxpQkFBZTs7Ozs7SUFEM0IsaURBQStCLHFEQUFBOzs7SUFLM0Usc0NBQXdHO0lBQ3BHLFlBQ0o7SUFBQSxpQkFBYTs7O0lBRjBDLHNDQUFtQixrQ0FBQTtJQUN0RSxlQUNKO0lBREksa0RBQ0o7Ozs7SUFMSixzQ0FFbUM7SUFEMEIsK1dBQW1CLGVBQUEsaUVBQWdELENBQUEsSUFBQztJQUU3SCxrS0FFYTtJQUNqQixpQkFBYTs7Ozs7SUFOOEIsa0dBQStEO0lBQzFHLGlEQUErQixpQ0FBQSxtREFBQTtJQUVJLGVBQXNCO0lBQXRCLGlEQUFzQjs7O0lBSXpELDRCQUVpRTs7Ozs7OztJQUQvRCxrR0FBK0Q7SUFBQywyRUFBb0M7SUFDcEcsaUdBQThEO0lBRnBDLGlEQUErQix5QkFBQTs7O0lBS2pELHNDQUN3QjtJQUNwQixZQUNKO0lBQUEsaUJBQWE7OztJQUZULHNDQUFtQjtJQUNuQixlQUNKO0lBREksa0RBQ0o7Ozs7SUFsQ2QsOEJBQ3lDO0lBQ3JDLHVJQUtNO0lBQ04sMklBQ29FO0lBQ3BFLDJJQUdvSDtJQUNwSCwySUFFK0g7SUFDL0gseUpBQzJFO0lBQzNFLHFKQU1hO0lBQ2IsMklBRWlFO0lBQzNELGdEQUNtQjtJQUR1QixxV0FBa0IsZUFBQSxrRUFBaUQsQ0FBQSxJQUFDO0lBRTFHLHVKQUdhOztJQUNqQixpQkFBbUIsRUFBQTs7Ozs7SUFuQ2MsNkNBQXVCLHlEQUFBO0lBRXBDLGVBQTRCO0lBQTVCLGlEQUE0QjtJQU16QixlQUE0QjtJQUE1QixpREFBNEI7SUFFRyxlQUE4QjtJQUE5QixtREFBOEI7SUFJN0QsZUFBNkM7SUFBN0MsdUVBQTZDO0lBRzNELGVBQStCO0lBQS9CLG9EQUErQjtJQUVqQyxlQUE0QjtJQUE1QixpREFBNEI7SUFPb0IsZUFBb0M7SUFBcEMseURBQW9DO0lBS3hELGVBQXVDO0lBQXZDLDBGQUF1Qzs7O0lBT2hGLHlCQUVLOzs7Ozs7SUFGbUcsdUVBQXdDLGlHQUFBOzs7SUFNcEksMEJBQTJKOzs7Ozs7O0lBQXBGLHdJQUEwRDs7O0lBQzVHLDRCQUFNO0lBQUEsWUFBMEM7O0lBQUEsaUJBQU87O0lBQWpELGVBQTBDO0lBQTFDLDZFQUEwQzs7O0lBSDdFLDhCQUE0RSxZQUFBO0lBQ1MsMExBQVMsd0JBQXdCLElBQUM7SUFDL0csOEpBQTJKO0lBQzNKLCtNQUEwRjtJQUM5RixpQkFBSSxFQUFBOzs7Ozs7SUFKMkIsdUVBQXdDO0lBQ3BFLGVBQW1DO0lBQW5DLDZGQUFtQztJQUNkLGVBQXNDO0lBQXRDLGdGQUFzQyxtQkFBQTs7O0lBTnRFLDhJQUVLO0lBQ0wsaU1BT2M7Ozs7OztJQVZzQiwrRUFBdUMsbUJBQUE7OztJQXZDbkYsNkJBQXVDO0lBQ25DLGtJQW9DSztJQUNMLG1MQVljO0lBQ2xCLDBCQUFlOzs7OztJQWxEeUQsZUFBd0I7SUFBeEIsb0RBQXdCLGtCQUFBOzs7SUFGcEcsNkJBQW1GO0lBQy9FLHFJQW1EZTtJQUNuQiwwQkFBZTs7OztJQUdQLG9DQUF1SDtJQUFqQyxpUEFBUyxlQUFBLDBCQUFzQixDQUFBLElBQUM7SUFBQyxpQkFBVzs7Ozs7SUFBakcsa0dBQW9EOzs7SUFDckYsK0JBQWtHOzs7OztJQUFoRSxrR0FBb0Q7OztJQUYxRiw4QkFBcUc7SUFDakcsa0lBQWtJO0lBQ2xJLGtJQUFrRztJQUN0RyxpQkFBSzs7Ozs7SUFIdUQsd0VBQXdDO0lBQ3JGLGVBQW9CO0lBQXBCLHlDQUFvQjtJQUNwQixlQUFxQjtJQUFyQiwwQ0FBcUI7OztJQUh4Qyw2QkFBd0U7SUFDcEUsaUhBR0s7SUFDVCwwQkFBZTs7OztJQU1LLGtDQUMwRztJQUEvRSx3V0FBYSxlQUFBLHNEQUFtQyxDQUFBLElBQUM7SUFDeEUsK0JBQStDO0lBQ25ELGlCQUFTOzs7SUFGTCx5Q0FBc0Isa0NBQUE7SUFDWixlQUF5QjtJQUF6QixxREFBeUI7Ozs7SUFFdkMsa0NBQzBHO0lBQS9FLHdXQUFhLGVBQUEsc0RBQW1DLENBQUEsSUFBQztJQUN4RSwrQkFBK0M7SUFDbkQsaUJBQVM7OztJQUZMLHlDQUFzQixrQ0FBQTtJQUNaLGVBQXlCO0lBQXpCLHFEQUF5Qjs7O0lBUDNDLDZCQUE2RjtJQUN6Riw4SkFHUztJQUNULDhKQUdTO0lBQ2IsMEJBQWU7OztJQVJGLGVBQXdDO0lBQXhDLDhEQUF3QztJQUl4QyxlQUF3QztJQUF4Qyw4REFBd0M7OztJQU56RCw0QkFBc0Q7SUFDbEQsMkpBU2U7SUFDbkIsaUJBQU87Ozs7O0lBVlksZUFBNEU7SUFBNUUscUhBQTRFOzs7SUFIdkcsNkJBQXVDO0lBQ25DLDhCQUE0RTtJQUN4RSxvSUFXTztJQUNYLGlCQUFLO0lBQ1QsMEJBQWU7Ozs7O0lBZHdCLGVBQXdDO0lBQXhDLHdFQUF3QztJQUM5QyxlQUEyQjtJQUEzQixvRUFBMkI7OztJQUhoRSw2QkFBK0U7SUFDM0UscUlBZWU7SUFDbkIsMEJBQWU7OztJQS9HbkIsNkJBQWtFO0lBQzlELHNIQWdCZTtJQUNmLHNIQWVlO0lBQ2Ysc0hBcURlO0lBQ2Ysc0hBS2U7SUFDZixzSEFpQmU7SUFDbkIsMEJBQWU7Ozs7SUEvR0ksZUFBMEQ7SUFBMUQsdUZBQTBEO0lBaUIxRCxlQUF1RDtJQUF2RCxvRkFBdUQ7SUFnQnZELGVBQWtFO0lBQWxFLCtGQUFrRTtJQXNEbEUsZUFBdUQ7SUFBdkQsb0ZBQXVEO0lBTXZELGVBQThEO0lBQTlELDJGQUE4RDs7O0lBM0dyRixpQ0FBbUY7SUFDL0UsdUdBSWU7SUFFZix1R0FJZTtJQUVmLHVHQWdIZTtJQUNuQiwwQkFBZTs7OztJQTlIRCw4Q0FBNEI7SUFDdkIsZUFBOEI7SUFBOUIsMERBQThCO0lBTTlCLGVBQStCO0lBQS9CLDJEQUErQjtJQU0vQixlQUFnQztJQUFoQywyREFBZ0M7OztJQW1IbkQseUJBQ0s7OztJQUQ4RCxpREFBNEI7Ozs7SUFFL0YsOEJBQWtRO0lBQTVELGlPQUFVLGVBQUEsaUNBQW1CLENBQUEsSUFBQyxrTkFBVSxlQUFBLGdDQUFrQixDQUFBLElBQTVCO0lBQ3BPLGlCQUFLOzs7O0lBRG9FLHNEQUFpQyw0Q0FBQSwrQkFBQSwrQ0FBQTs7OztJQUc5RyxzREFBNEw7SUFBNUMsME9BQW1CLGVBQUEsZ0NBQXVCLENBQUEsSUFBQztJQUMzTCxpQkFBNkI7OztJQURxQixvQ0FBZSw2Q0FBQSwrQ0FBQTs7O0FEM0duRSxNQUFNLE9BQU8sb0JBQW9CO0lBMkovQixZQUFvQixLQUF3QixFQUNsQyxXQUErQixFQUM3QixhQUEyQixFQUMzQixXQUFvQyxFQUNuQixTQUFvQixFQUN6QixXQUFtQixFQUNuQixZQUE2QixFQUN6Qyx5QkFBNEMsRUFDOUMsV0FBOEI7UUFScEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUN6Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQW1CO1FBQzlDLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQWpLeEMsc0JBQWlCLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxFLGNBQVMsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2RCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUU1Qjs7O1dBR0c7UUFDSCw4QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztRQUV0RDs7O1dBR0c7UUFDSCw4QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztRQUV0RDs7O1dBR0c7UUFDTSxvQkFBZSxHQUErQyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQTBDdEc7O1dBRUc7UUFFSCxtQkFBYyxHQUE4Qix5QkFBeUIsQ0FBQyxJQUFJLENBQUM7UUFFM0U7O1dBRUc7UUFFSCxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQzs7V0FFRztRQUVILGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBUS9COztXQUVHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5EOztXQUVHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBRTNDLENBQUM7UUFFTDs7V0FFRztRQUNPLHFCQUFnQixHQUFpRSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQWtCdkg7OztXQUdHO1FBQ0gsZUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQVUsQ0FBQztRQXNDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQXRIRDs7T0FFRztJQUNILElBQWEsU0FBUyxDQUFDLEtBQW1CO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFpREQ7OztPQUdHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2hDLE1BQU0sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDO2FBQy9ELEdBQUcsQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7WUFDbkMsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFBSSxTQUFTLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXJFOzs7T0FHRztJQUNILElBQUksaUJBQWlCLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFckY7OztPQUdHO0lBQ0gsSUFBSSxVQUFVLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXZFOzs7T0FHRztJQUNILElBQUksV0FBVyxLQUFjLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUVqSCxJQUFJLFdBQVcsS0FBYSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQWVwRzs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQXlCLEVBQUUsS0FBSztRQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsTUFBYyxFQUFFLE1BQXlCLEVBQUUsS0FBSztRQUNuRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsTUFBeUIsRUFBRSxLQUFLO1FBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLE1BQXlCLEVBQUUsTUFBeUIsRUFBRSxLQUFLO1FBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUFjLEVBQUUsTUFBeUIsRUFBRSxLQUFLO1FBQzNELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxVQUFVLENBQUMsTUFBeUI7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUVoSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9ELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7cUJBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRDtnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1YsQ0FBQyxDQUFDO2FBQ0o7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDakMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNaLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1YsQ0FBQyxDQUFDO29CQUVILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO3dCQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzVEO2FBQ0Y7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNWLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFVBQVUsRUFBUyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ1YsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFOzRCQUNqQixPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0NBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUMzRyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQ0FDMUcsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0QkFDMUQsQ0FBQyxDQUFDLENBQUM7eUJBQ0o7b0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFFSixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ25DLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO3dCQUMxRSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDL0M7b0JBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLEVBQUU7d0JBQ3ZFLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQ2pDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7b0JBQ3BELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFhLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzNDLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUNsRixDQUFDO2lCQUNIO2FBQ0Y7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDakMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtvQkFDNUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ2IsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNWLENBQUMsQ0FBQztxQkFDSjt5QkFBTTt3QkFDTCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQzdELElBQUksQ0FDTCxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1YsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7YUFDcEMsT0FBTyxDQUFDLENBQUMsTUFBNEIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2FBQ3pFLFNBQVMsQ0FBQyxDQUFDLE9BQStCLEVBQUUsRUFBRTtZQUM3QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXZFLElBQ0UsSUFBSSxDQUFDLFNBQVM7Z0JBQ2QsQ0FBQyw4QkFBOEIsR0FBRyxPQUFPO29CQUN6Qyw4QkFBOEIsSUFBSSxPQUFPLENBQUMsRUFBRTtnQkFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO2FBQ25EO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQjtRQUNoQixPQUFPLENBQUMsS0FBYSxFQUFFLE1BQXlDLEVBQUUsRUFBRTtZQUNsRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDcEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUEwQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzthQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRCxJQUFJLFNBQVMsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRTtZQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLGFBQWEsRUFBRSxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztnQkFDOUUsU0FBUztnQkFDVCxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE1BQTRCO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsTUFBNEI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUV6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxNQUFlO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDbEMsR0FBRyxFQUFFO2lCQUNMLEdBQUcsQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxNQUFlLEVBQUUsTUFBNEI7UUFDdkQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUV6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsTUFBNEIsRUFBRSxLQUFpQjtRQUMvRSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBRXpDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqQyxPQUFPO1NBQ1I7UUFFRCxtREFBbUQ7UUFDbkQsOEJBQThCO1FBQzlCLHdEQUF3RDtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMvQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQTZCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FBQyxlQUF1QztRQUNuRSxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQztRQUN6QyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQzlDLE9BQU8sY0FBYyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNiLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLE1BQXlCO1FBQ3hDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzFCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDMUU7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsTUFBNEI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxDQUNMLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMzRSxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FDcEUsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxNQUE0QixFQUFFLE1BQXlCO1FBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUN6RCxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ2Y7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDNUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUM7b0JBQzVCLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3hCO3FCQUFNO29CQUNMLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2lCQUN6QzthQUNGO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUM7Z0JBQzFCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYTthQUMvQztTQUNGO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBYSxDQUFDO1lBQ3BDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDbkIsSUFBSSxPQUFPLENBQUM7Z0JBQ1osT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQzVGLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFFckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ25DLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQy9CLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTs0QkFDbEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQzdCOzZCQUFNOzRCQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUNoQztxQkFDRjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7b0JBQ3JELEtBQUssR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztpQkFDM0Y7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ25DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ3BELEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3pCO3dCQUNELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUU7NEJBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzt5QkFDbkU7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUN6RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBYSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7Z0JBQ3JELEtBQUssR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQzthQUMzRjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDcEQsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDekI7b0JBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRTt3QkFDakQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQ3RCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQixJQUFJLEtBQUssRUFBRTtvQkFDVCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pCLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDcEQsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNaO1NBQ0Y7UUFFRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNaO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsMkJBQTJCLENBQUMsTUFBeUIsRUFBRSxjQUFzQjtRQUMzRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RGLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBTTtRQUNyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxNQUF5QjtRQUN6QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUN4QjtRQUNELE9BQU8seUJBQXlCLENBQUMsT0FBTyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNYLE9BQU87WUFDTCxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjO1FBQ1osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDM0MsSUFBSSxJQUFJLFlBQVksUUFBUSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDZjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQTRCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxJQUFJLFlBQVksUUFBUSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FBQyxNQUE0QixFQUFFLE1BQXlCO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDOUMsSUFBSSxTQUFTLFlBQVksUUFBUSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksVUFBVSxZQUFZLFFBQVEsRUFBRTtZQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FDWCxTQUFrRSxFQUNsRSxNQUE0QjtRQUU1QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLElBQUksT0FBTyxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQ25DLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0NBQWdDLENBQUMsTUFBYztRQUNwRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7d0ZBMXhCVSxvQkFBb0I7dUVBQXBCLG9CQUFvQixtWkFGcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQzVDbEYsOEJBQWlFLGVBQUE7UUFDaUQsc0hBQWlCLGtCQUFjLElBQUM7UUFDNUksZ0NBQXlFO1FBQ3JFLG1FQVFLO1FBQ0wsbUVBS0s7UUFDVCwwQkFBZTtRQUVmLHVGQThIZTtRQUVmLG1FQUNLO1FBQ0wsbUVBQ0s7UUFDVCxpQkFBUTtRQUNSLG1IQUM2QjtRQUMvQixpQkFBTTs7UUEzSnVCLHFFQUFtQztRQUNyQyxlQUEyQjtRQUEzQiw2Q0FBMkIsOEJBQUEscUNBQUE7UUFtQmMsZUFBbUI7UUFBbkIsOENBQW1CO1FBZ0k3RCxlQUEwQjtRQUExQiw2Q0FBMEIsMENBQUE7UUFFUSxlQUFpQjtRQUFqQiw4Q0FBaUI7UUFHOUMsZUFBbUI7UUFBbkIsd0NBQW1COzt1RkQzR3JDLG9CQUFvQjtjQVBoQyxTQUFTOzJCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxzQkFBc0IsRUFBRSxDQUFDOztzQkFpSzdFLFFBQVE7O3NCQUFJLElBQUk7O3NCQUNoQixRQUFROztzQkFDUixRQUFRO2tGQW5IRixLQUFLO2tCQUFiLEtBQUs7WUFLTyxTQUFTO2tCQUFyQixLQUFLO1lBYUcsUUFBUTtrQkFBaEIsS0FBSztZQU1OLGNBQWM7a0JBRGIsS0FBSztZQU9OLGNBQWM7a0JBRGIsS0FBSztZQU9OLGFBQWE7a0JBRFosS0FBSztZQU9OLGdCQUFnQjtrQkFEZixLQUFLO1lBTUksV0FBVztrQkFBcEIsTUFBTTtZQUtHLGtCQUFrQjtrQkFBM0IsTUFBTTtZQU9HLGdCQUFnQjtrQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIE9wdGlvbmFsLFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIEVudGl0eVJlY29yZCxcbiAgRW50aXR5U3RhdGUsXG4gIEVudGl0eVN0b3JlLFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxuICBFbnRpdHlUYWJsZUNvbHVtbixcbiAgRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlcixcbiAgRW50aXR5VGFibGVTZWxlY3Rpb25TdGF0ZSxcbiAgRW50aXR5VGFibGVTY3JvbGxCZWhhdmlvclxufSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEVudGl0eVRhYmxlUGFnaW5hdG9yT3B0aW9ucyB9IGZyb20gJy4uL2VudGl0eS10YWJsZS1wYWdpbmF0b3IvZW50aXR5LXRhYmxlLXBhZ2luYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBOZ0NvbnRyb2wsIE5nRm9ybSwgRm9ybUNvbnRyb2xOYW1lLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1lbnRpdHktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW50aXR5LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbnRpdHlUYWJsZUNvbXBvbmVudCB9XVxufSlcbmV4cG9ydCBjbGFzcyBFbnRpdHlUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIGVudGl0eVNvcnRDaGFuZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnMgPSB7fTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBjb2x1bW4gcmVuZGVyZXIgdHlwZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyID0gRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlcjtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBzZWxlY3Rpb24ncyBzdGF0ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVudGl0eVRhYmxlU2VsZWN0aW9uU3RhdGUgPSBFbnRpdHlUYWJsZVNlbGVjdGlvblN0YXRlO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBzZWxlY3Rpb24scyBzdGF0ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGlvblN0YXRlJDogQmVoYXZpb3JTdWJqZWN0PEVudGl0eVRhYmxlU2VsZWN0aW9uU3RhdGU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHN0b3JlJ3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdGlvbiQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgZGF0YVNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBkYXRhU291cmNlJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxhc3QgcmVjb3JkIGNoZWNrZWQuIFVzZWZ1bCBmb3Igc2VsZWN0aW5nXG4gICAqIG11bHRpcGxlIHJlY29yZHMgYnkgaG9sZGluZyB0aGUgc2hpZnQga2V5IGFuZCBjaGVja2luZ1xuICAgKiBjaGVja2JveGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBsYXN0UmVjb3JkQ2hlY2tlZEtleTogRW50aXR5S2V5O1xuXG4gIC8qKlxuICAgKiBFbnRpdHkgc3RvcmVcbiAgICovXG4gIEBJbnB1dCgpIHN0b3JlOiBFbnRpdHlTdG9yZTxvYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBUYWJsZSBwYWdpbmF0b3JcbiAgICovXG4gIEBJbnB1dCgpIHNldCBwYWdpbmF0b3IodmFsdWU6IE1hdFBhZ2luYXRvcikge1xuICAgIHRoaXMuX3BhZ2luYXRvciA9IHZhbHVlO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBwYWdpbmF0b3IoKTogTWF0UGFnaW5hdG9yIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnaW5hdG9yO1xuICB9XG4gIHByaXZhdGUgX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIC8qKlxuICAgKiBUYWJsZSB0ZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KCkgdGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBiZWhhdmlvciBvbiBzZWxlY3Rpb25cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNjcm9sbEJlaGF2aW9yOiBFbnRpdHlUYWJsZVNjcm9sbEJlaGF2aW9yID0gRW50aXR5VGFibGVTY3JvbGxCZWhhdmlvci5BdXRvO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG51bGxzIHNob3VsZCBiZSBmaXJzdCB3aGVuIHNvcnRpbmdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNvcnROdWxsc0ZpcnN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIHRhYmxlIHBhZ2luYXRvciBvciBub3QuIEZhbHNlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBASW5wdXQoKVxuICB3aXRoUGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRvciBvcHRpb25zXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWdpbmF0b3JPcHRpb25zOiBFbnRpdHlUYWJsZVBhZ2luYXRvck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBlbnRpdHkgKHJvdykgaXMgY2xpY2tlZFxuICAgKi9cbiAgQE91dHB1dCgpIGVudGl0eUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBlbnRpdHkgKHJvdykgaXMgc2VsZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSBlbnRpdHlTZWxlY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBhZGRlZDogb2JqZWN0W107XG4gIH0+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdGFibGUgc29ydCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGVudGl0eVNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7Y29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbiwgZGlyZWN0aW9uOiBzdHJpbmd9PiA9IG5ldyBFdmVudEVtaXR0ZXIodW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogVGFibGUgaGVhZGVyc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBoZWFkZXJzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgY29sdW1ucyA9IHRoaXMudGVtcGxhdGUuY29sdW1uc1xuICAgICAgLmZpbHRlcigoY29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbikgPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICAgLm1hcCgoY29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbikgPT4gY29sdW1uLm5hbWUpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hlY2tib3ggPT09IHRydWUpIHtcbiAgICAgIGNvbHVtbnMgPSBbJ3NlbGVjdGlvbkNoZWNrYm94J10uY29uY2F0KGNvbHVtbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIERhdGEgc291cmNlIGNvbnN1bWFibGUgYnkgdGhlIHVuZGVybHlpbmcgbWF0ZXJpYWwgdGFibGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxvYmplY3Q+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc2VsZWN0aW9uIGlzIHN1cHBvcnRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBzZWxlY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnRlbXBsYXRlLnNlbGVjdGlvbiB8fCBmYWxzZTsgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgc2VsZWN0aW9uIGNoZWNrYm94IHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgc2VsZWN0aW9uQ2hlY2tib3goKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnRlbXBsYXRlLnNlbGVjdGlvbkNoZWNrYm94IHx8IGZhbHNlOyB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc2VsZWN0aW9uIG1hbnkgZW50aXRpZXMgc2hvdWxkIGViIHN1cHBvcnRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBzZWxlY3RNYW55KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy50ZW1wbGF0ZS5zZWxlY3RNYW55IHx8IGZhbHNlOyB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc2VsZWN0aW9uIG1hbnkgZW50aXRpZXMgc2hvdWxkIGViIHN1cHBvcnRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBmaXhlZEhlYWRlcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMudGVtcGxhdGUuZml4ZWRIZWFkZXIgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLnRlbXBsYXRlLmZpeGVkSGVhZGVyOyB9XG5cbiAgZ2V0IHRhYmxlSGVpZ2h0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnRlbXBsYXRlLnRhYmxlSGVpZ2h0ID8gdGhpcy50ZW1wbGF0ZS50YWJsZUhlaWdodCA6ICdhdXRvJzsgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByb3RlY3RlZCBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9jb250cm9sTmFtZTogRm9ybUNvbnRyb2xOYW1lLFxuICAgIHByb3RlY3RlZCBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPlxuICApIHtcbiAgICB0aGlzLmRhdGVBZGFwdGVyLnNldExvY2FsZSgnZnItQ0EnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayB0aGUgc2VsZWN0aW9uIHN0YXRlIHRvIHByb3Blcmx5IGRpc3BsYXkgdGhlIHNlbGVjdGlvbiBjaGVja2JveGVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYW5kbGVEYXRhc291cmNlKCk7XG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHN0b3JlID0gY2hhbmdlcy5zdG9yZTtcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuY3VycmVudFZhbHVlICE9PSBzdG9yZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLmhhbmRsZURhdGFzb3VyY2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyB0ZXh0IG9yIG51bWJlciB2YWx1ZSBjaGFuZ2UgKGVkaXRpb24pXG4gICAqL1xuICBvblZhbHVlQ2hhbmdlKGNvbHVtbjogc3RyaW5nLCByZWNvcmQ6IEVudGl0eVJlY29yZDxhbnk+LCBldmVudCkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uKTtcbiAgICByZWNvcmQuZW50aXR5LnByb3BlcnRpZXNba2V5XSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGJvb2xlYW4gdmFsdWUgY2hhbmdlIChlZGl0aW9uKVxuICAgKi9cbiAgb25Cb29sZWFuVmFsdWVDaGFuZ2UoY29sdW1uOiBzdHJpbmcsIHJlY29yZDogRW50aXR5UmVjb3JkPGFueT4sIGV2ZW50KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4pO1xuICAgIHJlY29yZC5lbnRpdHkucHJvcGVydGllc1trZXldID0gZXZlbnQuY2hlY2tlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHNlbGVjdCB2YWx1ZSBjaGFuZ2UgKGVkaXRpb24pXG4gICAqL1xuICBvblNlbGVjdFZhbHVlQ2hhbmdlKGNvbHVtbjogc3RyaW5nLCByZWNvcmQ6IEVudGl0eVJlY29yZDxhbnk+LCBldmVudCkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uKTtcbiAgICByZWNvcmQuZW50aXR5LnByb3BlcnRpZXNba2V5XSA9IGV2ZW50LnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYXV0b2NvbXBsZXRlIHZhbHVlIGNoYW5nZSAoZWRpdGlvbilcbiAgICovXG4gIG9uQXV0b2NvbXBsZXRlVmFsdWVDaGFuZ2UoY29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbiwgcmVjb3JkOiBFbnRpdHlSZWNvcmQ8YW55PiwgZXZlbnQpIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjb2x1bW4ubmFtZV0uc2V0VmFsdWUoZXZlbnQub3B0aW9uLnZpZXdWYWx1ZSk7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSk7XG4gICAgcmVjb3JkLmVudGl0eS5wcm9wZXJ0aWVzW2tleV0gPSBldmVudC5vcHRpb24udmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBkYXRlIHZhbHVlIGNoYW5nZSAoZWRpdGlvbilcbiAgICovXG4gIG9uRGF0ZUNoYW5nZShjb2x1bW46IHN0cmluZywgcmVjb3JkOiBFbnRpdHlSZWNvcmQ8YW55PiwgZXZlbnQpIHtcbiAgICBjb25zdCBmb3JtYXQgPSBcIllZWVktTU0tRERcIjtcbiAgICBjb25zdCB2YWx1ZSA9IG1vbWVudChldmVudC52YWx1ZSkuZm9ybWF0KGZvcm1hdCk7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4pO1xuICAgIHJlY29yZC5lbnRpdHkucHJvcGVydGllc1trZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIGVkaXRpb24gbW9kZSBmb3Igb25lIHJvd1xuICAgKiBNb3JlIHRoYW4gb25lIHJvdyBjYW4gYmUgZWRpdGVkIGF0IHRoZSBzYW1lIHRpbWVcbiAgICovXG4gIHByaXZhdGUgZW5hYmxlRWRpdChyZWNvcmQ6IEVudGl0eVJlY29yZDxhbnk+KSB7XG4gICAgY29uc3QgaXRlbSA9IHJlY29yZC5lbnRpdHkucHJvcGVydGllcyB8fCByZWNvcmQuZW50aXR5O1xuICAgIHRoaXMudGVtcGxhdGUuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb2x1bW4udGl0bGUgPSBjb2x1bW4udmFsaWRhdGlvbj8ubWFuZGF0b3J5ICYmICFjb2x1bW4udGl0bGUuaW5jbHVkZXMoJyonKSA/IGNvbHVtbi50aXRsZSArICcgKicgOiBjb2x1bW4udGl0bGU7XG5cbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpO1xuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKCFpdGVtW2tleV0gfHwgaXRlbVtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgaXRlbVtrZXldID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW1ba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpdGVtW2tleV0gPSBKU09OLnBhcnNlKGl0ZW1ba2V5XS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKGNvbHVtbi5uYW1lLCB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgaXRlbVtrZXldXG4gICAgICAgICkpO1xuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpc3QnKSB7XG4gICAgICAgIGlmIChjb2x1bW4ubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKGNvbHVtbi5uYW1lLCB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICBbaXRlbVtrZXldXVxuICAgICAgICAgICkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnNldENvbnRyb2woY29sdW1uLm5hbWUsIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgIGl0ZW1ba2V5XVxuICAgICAgICAgICkpO1xuXG4gICAgICAgICAgdHlwZW9mIGl0ZW1ba2V5XSA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbY29sdW1uLm5hbWVdLnNldFZhbHVlKHBhcnNlSW50KGl0ZW1ba2V5XSkpIDpcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbHVtbi5uYW1lXS5zZXRWYWx1ZShpdGVtW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKGNvbHVtbi5uYW1lLCB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgaXRlbVtrZXldXG4gICAgICAgICkpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW2NvbHVtbi5uYW1lXSA9IG5ldyBPYnNlcnZhYmxlPGFueVtdPigpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tjb2x1bW4ubmFtZV0gPVxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbHVtbi5uYW1lXS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5kb21haW5WYWx1ZXM/LmZpbHRlcigob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJOb3JtYWxpemVkID0gdmFsdWUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIDogJyc7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQgPSBvcHRpb24udmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZm9ybUNvbnRyb2xWYWx1ZSA9IGl0ZW1ba2V5XTtcbiAgICAgICAgY29sdW1uLmRvbWFpblZhbHVlcy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmb3JtQ29udHJvbFZhbHVlID09PSAnc3RyaW5nJyAmJiAvXlxcZCskLy50ZXN0KGZvcm1Db250cm9sVmFsdWUpKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbFZhbHVlID0gcGFyc2VJbnQoZm9ybUNvbnRyb2xWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb24udmFsdWUgPT09IGZvcm1Db250cm9sVmFsdWUgfHwgb3B0aW9uLmlkID09PSBmb3JtQ29udHJvbFZhbHVlKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbFZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbY29sdW1uLm5hbWVdLnNldFZhbHVlKGZvcm1Db250cm9sVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5pc0VkaXRpb24ocmVjb3JkKSAmJiBjb2x1bW4ubGlua0NvbHVtbkZvcmNlKSB7XG4gICAgICAgICAgY29uc3QgZW50aXR5ID0gcmVjb3JkLmVudGl0eSBhcyBhbnk7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbY29sdW1uLm5hbWVdLnNldFZhbHVlKFxuICAgICAgICAgICAgZW50aXR5Py5wcm9wZXJ0aWVzW3RoaXMuZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLmxpbmtDb2x1bW5Gb3JjZSldXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGlmIChjb2x1bW4udmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoaXRlbVtrZXldKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZSA9IG1vbWVudChpdGVtW2tleV0pO1xuICAgICAgICAgICAgaXRlbVtrZXldID0gZGF0ZS51dGMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnNldENvbnRyb2woY29sdW1uLm5hbWUsIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgaXRlbVtrZXldXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3S2V5ID0gdGhpcy5nZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICByZWNvcmQuZW50aXR5LnByb3BlcnRpZXNbbmV3S2V5XSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKGNvbHVtbi5uYW1lLCB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc2V0Q29udHJvbChjb2x1bW4ubmFtZSwgdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgICAgIGl0ZW1ba2V5XVxuICAgICAgICApKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbHVtbi5uYW1lXSAmJiB0aGlzLmdldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdyZWFkb25seScpKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbHVtbi5uYW1lXS5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURhdGFzb3VyY2UoKSB7XG4gICAgdGhpcy51bnN1YnNjcmliZVN0b3JlKCk7XG4gICAgdGhpcy5zZWxlY3Rpb24kJCA9IHRoaXMuc3RvcmUuc3RhdGVWaWV3XG4gICAgICAubWFueUJ5JCgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8b2JqZWN0PikgPT4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlKVxuICAgICAgLnN1YnNjcmliZSgocmVjb3JkczogRW50aXR5UmVjb3JkPG9iamVjdD5bXSkgPT4ge1xuICAgICAgICBjb25zdCBmaXJzdFNlbGVjdGVkID0gcmVjb3Jkc1swXTtcbiAgICAgICAgY29uc3QgZmlyc3RTZWxlY3RlZFN0YXRldmlld1Bvc2l0aW9uID0gdGhpcy5zdG9yZS5zdGF0ZVZpZXcuYWxsKCkuaW5kZXhPZihmaXJzdFNlbGVjdGVkKTtcbiAgICAgICAgY29uc3QgcGFnZU1heCA9IHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgKiAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ICsgMSkgOiAwO1xuICAgICAgICBjb25zdCBwYWdlTWluID0gdGhpcy5wYWdpbmF0b3IgPyBwYWdlTWF4IC0gdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgOiAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvciAmJlxuICAgICAgICAgIChmaXJzdFNlbGVjdGVkU3RhdGV2aWV3UG9zaXRpb24gPCBwYWdlTWluIHx8XG4gICAgICAgICAgZmlyc3RTZWxlY3RlZFN0YXRldmlld1Bvc2l0aW9uID49IHBhZ2VNYXgpKSB7XG4gICAgICAgICAgY29uc3QgcGFnZVRvUmVhY2ggPSBNYXRoLmZsb29yKGZpcnN0U2VsZWN0ZWRTdGF0ZXZpZXdQb3NpdGlvbiAvIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplKTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHBhZ2VUb1JlYWNoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUkLm5leHQodGhpcy5jb21wdXRlU2VsZWN0aW9uU3RhdGUocmVjb3JkcykpO1xuICAgICAgfSk7XG4gICAgdGhpcy5kYXRhU291cmNlJCQgPSB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwkKCkuc3Vic2NyaWJlKChhbGwpID0+IHtcbiAgICAgIGlmIChhbGxbMF0pIHtcbiAgICAgICAgdGhpcy5lbmFibGVFZGl0KGFsbFswXSk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGFsbDtcbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGUgc3RvcmUgd2F0Y2hlclxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVTdG9yZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZVN0b3JlKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbiQkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbiQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UkJCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhY2tieSBmdW5jdGlvblxuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZFxuICAgKiBAcGFyYW0gaW5kZXggUmVjb3JkIGluZGV4XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0VHJhY2tCeUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoaW5kZXg6IG51bWJlciwgcmVjb3JkOiBFbnRpdHlSZWNvcmQ8b2JqZWN0LCBFbnRpdHlTdGF0ZT4pID0+IHtcbiAgICAgIHJldHVybiByZWNvcmQucmVmO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBhIHJlZnJlc2ggb2YgdGhyZSB0YWJsZS4gVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW5cbiAgICogdGhlIGRhdGEgc291cmNlIGRvZXNuJ3QgZW1pdCBhIG5ldyB2YWx1ZSBidXQgZm9yIHNvbWUgcmVhc29uXG4gICAqIHRoZSByZWNvcmRzIG5lZWQgYW4gdXBkYXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwYWdpbmF0b3JDaGFuZ2UoZXZlbnQ6IE1hdFBhZ2luYXRvcikge1xuICAgIHRoaXMucGFnaW5hdG9yID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogT24gc29ydCwgc29ydCB0aGUgc3RvcmVcbiAgICogQHBhcmFtIGV2ZW50IFNvcnQgZXZlbnRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblNvcnQoZXZlbnQ6IHthY3RpdmU6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmd9KSB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gZXZlbnQuZGlyZWN0aW9uO1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMudGVtcGxhdGUuY29sdW1uc1xuICAgICAgLmZpbmQoKGM6IEVudGl0eVRhYmxlQ29sdW1uKSA9PiBjLm5hbWUgPT09IGV2ZW50LmFjdGl2ZSk7XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnYXNjJyB8fCBkaXJlY3Rpb24gPT09ICdkZXNjJykge1xuICAgICAgdGhpcy5zdG9yZS5zdGF0ZVZpZXcuc29ydCh7XG4gICAgICAgIHZhbHVlQWNjZXNzb3I6IChyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB0aGlzLmdldFZhbHVlKHJlY29yZCwgY29sdW1uKSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBudWxsc0ZpcnN0OiB0aGlzLnNvcnROdWxsc0ZpcnN0XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZW50aXR5U29ydENoYW5nZS5lbWl0KHtjb2x1bW4sIGRpcmVjdGlvbn0pO1xuICAgICAgdGhpcy5lbnRpdHlTb3J0Q2hhbmdlJC5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLnN0YXRlVmlldy5zb3J0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYW4gZW50aXR5IGlzIGNsaWNrZWQsIGVtaXQgYW4gZXZlbnRcbiAgICogQHBhcmFtIHJlY29yZCBSZWNvcmRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblJvd0NsaWNrKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pIHtcbiAgICB0aGlzLmxhc3RSZWNvcmRDaGVja2VkS2V5ID0gdGhpcy5zdG9yZS5zdGF0ZVZpZXcuZ2V0S2V5KHJlY29yZCk7XG4gICAgdGhpcy5lbnRpdHlDbGljay5lbWl0KHJlY29yZC5lbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYW4gZW50aXR5IGlzIHNlbGVjdGVkLCBzZWxlY3QgaXQgaW4gdGhlIHN0b3JlIGFuZCBlbWl0IGFuIGV2ZW50LiBFdmVuIGlmXG4gICAqIFwibWFueVwiIGlzIHNldCB0byB0cnVlLCB0aGlzIG1ldGhvZCBhbHdheXMgc2VsZWN0IGEgc2luZ2xlLCBleGNsdXNpdmUgcm93LiBTZWxlY3RpbmdcbiAgICogbXVsdGlwbGUgcm93cyBzaG91bGQgYmUgYWNoaWV2ZWQgYnkgdXNpbmcgdGhlIGNoZWNrYm94ZXMuXG4gICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Sb3dTZWxlY3QocmVjb3JkOiBFbnRpdHlSZWNvcmQ8b2JqZWN0Pikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbiA9PT0gZmFsc2UpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCBlbnRpdHkgPSByZWNvcmQuZW50aXR5O1xuICAgIHRoaXMuc3RvcmUuc3RhdGUudXBkYXRlKGVudGl0eSwge3NlbGVjdGVkOiB0cnVlfSwgdHJ1ZSk7XG4gICAgdGhpcy5lbnRpdHlTZWxlY3RDaGFuZ2UuZW1pdCh7YWRkZWQ6IFtlbnRpdHldfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IG9yIHVuc2VsZWN0IGFsbCByb3dzIGF0IG9uY2UuIE9uIHNlbGVjdCwgZW1pdCBhbiBldmVudC5cbiAgICogQHBhcmFtIHRvZ2dsZSBTZWxlY3Qgb3IgdW5zZWxlY3RcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblRvZ2dsZVJvd3ModG9nZ2xlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uID09PSBmYWxzZSkgeyByZXR1cm47IH1cblxuICAgIHRoaXMuc3RvcmUuc3RhdGUudXBkYXRlQWxsKHtzZWxlY3RlZDogdG9nZ2xlfSk7XG4gICAgaWYgKHRvZ2dsZSA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLnN0b3JlLnN0YXRlVmlld1xuICAgICAgICAuYWxsKClcbiAgICAgICAgLm1hcCgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8b2JqZWN0PikgPT4gcmVjb3JkLmVudGl0eSk7XG4gICAgICB0aGlzLmVudGl0eVNlbGVjdENoYW5nZS5lbWl0KHthZGRlZDogW2VudGl0aWVzXX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGFuIGVudGl0eSBpcyB0b2dnbGVkLCBzZWxlY3Qgb3IgdW5zZWxlY3QgaXQgaW4gdGhlIHN0b3JlLiBPbiBzZWxlY3QsXG4gICAqIGVtaXQgYW4gZXZlbnQuXG4gICAqIEBwYXJhbSB0b2dnbGUgU2VsZWN0IG9yIHVuc2VsZWN0XG4gICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVSb3codG9nZ2xlOiBib29sZWFuLCByZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uID09PSBmYWxzZSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IGVudGl0eSA9IHJlY29yZC5lbnRpdHk7XG4gICAgY29uc3QgZXhjbHVzaXZlID0gdG9nZ2xlID09PSB0cnVlICYmICF0aGlzLnNlbGVjdE1hbnk7XG4gICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUoZW50aXR5LCB7c2VsZWN0ZWQ6IHRvZ2dsZX0sIGV4Y2x1c2l2ZSk7XG4gICAgaWYgKHRvZ2dsZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5lbnRpdHlTZWxlY3RDaGFuZ2UuZW1pdCh7YWRkZWQ6IFtlbnRpdHldfSk7XG4gICAgfVxuICAgIHRoaXMubGFzdFJlY29yZENoZWNrZWRLZXkgPSB0aGlzLnN0b3JlLnN0YXRlVmlldy5nZXRLZXkocmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGFuIGVudGl0eSBpcyB0b2dnbGVkLCBzZWxlY3Qgb3IgdW5zZWxlY3QgaXQgaW4gdGhlIHN0b3JlLiBPbiBzZWxlY3QsXG4gICAqIGVtaXQgYW4gZXZlbnQuXG4gICAqIEBwYXJhbSB0b2dnbGUgU2VsZWN0IG9yIHVuc2VsZWN0XG4gICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25TaGlmdFRvZ2dsZVJvdyh0b2dnbGU6IGJvb2xlYW4sIHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uID09PSBmYWxzZSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLnNlbGVjdE1hbnkgPT09IGZhbHNlIHx8IHRoaXMubGFzdFJlY29yZENoZWNrZWRLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vblRvZ2dsZVJvdyh0b2dnbGUsIHJlY29yZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgbWF0IGNoZWNrYm94IHdyb25nIGJlaGF2aW9yXG4gICAgLy8gd2hlbiB0aGUgc2hpZnQga2V5IGlzIGhlbGQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzYyMzJcbiAgICBjb25zdCByYW5nZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwoKTtcbiAgICBjb25zdCByZWNvcmRJbmRleCA9IHJlY29yZHMuaW5kZXhPZihyZWNvcmQpO1xuICAgIGNvbnN0IGxhc3RSZWNvcmRDaGVja2VkID0gdGhpcy5zdG9yZS5zdGF0ZVZpZXcuZ2V0KHRoaXMubGFzdFJlY29yZENoZWNrZWRLZXkpO1xuICAgIGNvbnN0IGxhc3RSZWNvcmRJbmRleCA9IHJlY29yZHMuaW5kZXhPZihsYXN0UmVjb3JkQ2hlY2tlZCk7XG4gICAgY29uc3QgaW5kZXhlcyA9IFtyZWNvcmRJbmRleCwgbGFzdFJlY29yZEluZGV4XTtcbiAgICBjb25zdCBzZWxlY3RSZWNvcmRzID0gcmVjb3Jkcy5zbGljZShNYXRoLm1pbiguLi5pbmRleGVzKSwgTWF0aC5tYXgoLi4uaW5kZXhlcykgKyAxKTtcblxuICAgIGNvbnN0IGVudGl0aWVzID0gc2VsZWN0UmVjb3Jkcy5tYXAoKF9yZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiBfcmVjb3JkLmVudGl0eSk7XG4gICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGVNYW55KGVudGl0aWVzLCB7c2VsZWN0ZWQ6IHRvZ2dsZX0pO1xuICAgIGlmICh0b2dnbGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuZW50aXR5U2VsZWN0Q2hhbmdlLmVtaXQoe2FkZGVkOiBlbnRpdGllc30pO1xuICAgIH1cbiAgICB0aGlzLmxhc3RSZWNvcmRDaGVja2VkS2V5ID0gdGhpcy5zdG9yZS5zdGF0ZVZpZXcuZ2V0S2V5KHJlY29yZCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgc2VsZWN0aW9uIHN0YXRlXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgYWxsLCBzb21lIG9yIG5vIHJvd3MgYXJlIHNlbGVjdGVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlU2VsZWN0aW9uU3RhdGUoc2VsZWN0ZWRSZWNvcmRzOiBFbnRpdHlSZWNvcmQ8b2JqZWN0PltdKTogRW50aXR5VGFibGVTZWxlY3Rpb25TdGF0ZSB7XG4gICAgY29uc3Qgc3RhdGVzID0gRW50aXR5VGFibGVTZWxlY3Rpb25TdGF0ZTtcbiAgICBjb25zdCBzZWxlY3Rpb25Db3VudCA9IHNlbGVjdGVkUmVjb3Jkcy5sZW5ndGg7XG4gICAgcmV0dXJuIHNlbGVjdGlvbkNvdW50ID09PSAwID9cbiAgICAgIHN0YXRlcy5Ob25lIDpcbiAgICAgIChzZWxlY3Rpb25Db3VudCA9PT0gdGhpcy5zdG9yZS5zdGF0ZVZpZXcuY291bnQgPyBzdGF0ZXMuQWxsIDogc3RhdGVzLlNvbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjb2x1bW4gaXMgc29ydGFibGVcbiAgICogQHBhcmFtIGNvbHVtbiBDb2x1bW5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBhIGNvbHVtbiBpcyBzb3J0YWJsZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbHVtbklzU29ydGFibGUoY29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIGxldCBzb3J0YWJsZSA9IGNvbHVtbi5zb3J0O1xuICAgIGlmIChzb3J0YWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzb3J0YWJsZSA9IHRoaXMudGVtcGxhdGUuc29ydCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB0aGlzLnRlbXBsYXRlLnNvcnQ7XG4gICAgfVxuICAgIHJldHVybiBzb3J0YWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgcm93IGlzIHNob3VsZCBiZSBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgdW5kZXJseWluZyBlbnRpdHkgc3RhdGVcbiAgICogQHBhcmFtIHJlY29yZCBSZWNvcmRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBhIHJvdyBzaG91bGQgYmUgc2VsZWN0ZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICByb3dJc1NlbGVjdGVkKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlY29yZC5zdGF0ZTtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWQgPyBzdGF0ZS5zZWxlY3RlZCA6IGZhbHNlO1xuICB9XG5cbiAgaXNJbWcodmFsdWUpIHtcbiAgICBpZiAodGhpcy5pc1VybCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIFsnanBnJywgJ3BuZycsICdnaWYnXS5pbmRleE9mKHZhbHVlLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNVcmwodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdmFsdWUuc2xpY2UoMCwgOCkgPT09ICdodHRwczovLycgfHwgdmFsdWUuc2xpY2UoMCwgNykgPT09ICdodHRwOi8vJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gYWNjZXNzIGFuIGVudGl0eSdzIHZhbHVlc1xuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZFxuICAgKiBAcGFyYW0gY29sdW1uIENvbHVtblxuICAgKiBAcmV0dXJucyBBbnkgdmFsdWVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRWYWx1ZShyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+LCBjb2x1bW46IEVudGl0eVRhYmxlQ29sdW1uKTogYW55IHtcbiAgICBjb25zdCBlbnRpdHkgPSByZWNvcmQuZW50aXR5O1xuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAoY29sdW1uLnZhbHVlQWNjZXNzb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbHVtbi52YWx1ZUFjY2Vzc29yKGVudGl0eSwgcmVjb3JkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGVtcGxhdGUudmFsdWVBY2Nlc3NvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZS52YWx1ZUFjY2Vzc29yKGVudGl0eSwgY29sdW1uLm5hbWUsIHJlY29yZCk7XG4gICAgfVxuICAgIHZhbHVlID0gdGhpcy5zdG9yZS5nZXRQcm9wZXJ0eShlbnRpdHksIGNvbHVtbi5uYW1lKTtcblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyl7XG4gICAgICAgICAgdmFsdWUgPSBCb29sZWFuKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VkaXRpb24ocmVjb3JkKSl7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgPyAnJiMxMDAwMzsnIDogJyc7IC8vIGNoZWNrIG1hcmtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnbGlzdCcgJiYgdmFsdWUgJiYgY29sdW1uLmRvbWFpblZhbHVlcykge1xuICAgICAgY29uc3QgZW50aXR5ID0gcmVjb3JkLmVudGl0eSBhcyBhbnk7XG4gICAgICBpZiAoY29sdW1uLm11bHRpcGxlKSB7XG4gICAgICAgIGxldCBsaXN0X2lkO1xuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbGlzdF9pZCA9IHZhbHVlLm1hdGNoKC9bXFx3Li1dKy9nKS5tYXAoTnVtYmVyKSA6IGxpc3RfaWQgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGxpc3Rfb3B0aW9uID0gW107XG5cbiAgICAgICAgY29sdW1uLmRvbWFpblZhbHVlcy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKGxpc3RfaWQuaW5jbHVkZXMob3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgaWYgKHJlY29yZC5lZGl0aW9uKSB7XG4gICAgICAgICAgICAgIGxpc3Rfb3B0aW9uLnB1c2gob3B0aW9uLmlkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxpc3Rfb3B0aW9uLnB1c2gob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaXNFZGl0aW9uKHJlY29yZCkgPyB2YWx1ZSA9IGxpc3RfaWQgOiB2YWx1ZSA9IGxpc3Rfb3B0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRWRpdGlvbihyZWNvcmQpICYmIGNvbHVtbi5saW5rQ29sdW1uRm9yY2UpIHtcbiAgICAgICAgICB2YWx1ZSA9IGVudGl0eT8ucHJvcGVydGllc1t0aGlzLmdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5saW5rQ29sdW1uRm9yY2UpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW4uZG9tYWluVmFsdWVzLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUgfHwgb3B0aW9uLmlkID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLmlzRWRpdGlvbihyZWNvcmQpID8gdmFsdWUgPSBvcHRpb24uaWQgOiB2YWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdhdXRvY29tcGxldGUnICYmIHZhbHVlICYmIGNvbHVtbi5kb21haW5WYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHJlY29yZC5lbnRpdHkgYXMgYW55O1xuICAgICAgaWYgKCF0aGlzLmlzRWRpdGlvbihyZWNvcmQpICYmIGNvbHVtbi5saW5rQ29sdW1uRm9yY2UpIHtcbiAgICAgICAgdmFsdWUgPSBlbnRpdHk/LnByb3BlcnRpZXNbdGhpcy5nZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubGlua0NvbHVtbkZvcmNlKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4uZG9tYWluVmFsdWVzLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb24udmFsdWUgPT09IHZhbHVlIHx8IG9wdGlvbi5pZCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBpZiAodGhpcy5pc0VkaXRpb24ocmVjb3JkKSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBsZXQgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XG4gICAgICAgICAgdmFsdWUgPSBkYXRlLmZvcm1hdCgpO1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbHVtbi5uYW1lXS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFZGl0aW9uKHJlY29yZCkgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gYWNjZXNzIGFuIGVudGl0eSdzIHZhbGlkYXRpb24gdmFsdWVzXG4gICAqIEBwYXJhbSBjb2x1bW4gQ29sdW1uXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uVHlwZSBzdHJpbmdcbiAgICogQHJldHVybnMgQW55IHZhbHVlIChmYWxzZSBpZiBubyB2YWxpZGF0aW9uIG9yIG5vdCB0aGUgb25lIGNvbmNlcm5lZClcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRWYWxpZGF0aW9uQXR0cmlidXRlVmFsdWUoY29sdW1uOiBFbnRpdHlUYWJsZUNvbHVtbiwgdmFsaWRhdGlvblR5cGU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKGNvbHVtbi52YWxpZGF0aW9uICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnZhbGlkYXRpb25bdmFsaWRhdGlvblR5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb2x1bW4udmFsaWRhdGlvblt2YWxpZGF0aW9uVHlwZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0aW9uKHJlY29yZCkge1xuICAgIHJldHVybiByZWNvcmQuZW50aXR5LmVkaXRpb24gPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB0eXBlIG9mIHJlbmRlcmVyIG9mIGEgY29sdW1uXG4gICAqIEBwYXJhbSBjb2x1bW4gQ29sdW1uXG4gICAqIEByZXR1cm5zIFJlbmRlcmVyIHR5cGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRDb2x1bW5SZW5kZXJlcihjb2x1bW46IEVudGl0eVRhYmxlQ29sdW1uKTogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlciB7XG4gICAgaWYgKGNvbHVtbi5yZW5kZXJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnJlbmRlcmVyO1xuICAgIH1cbiAgICByZXR1cm4gRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5EZWZhdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgdGFibGUgbmdDbGFzc1xuICAgKiBAcmV0dXJucyBuZ0NsYXNzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0VGFibGVDbGFzcygpOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIHJldHVybiB7XG4gICAgICAnaWdvLWVudGl0eS10YWJsZS13aXRoLXNlbGVjdGlvbic6IHRoaXMuc2VsZWN0aW9uXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBoZWFkZXIgbmdDbGFzc1xuICAgKiBAcmV0dXJucyBuZ0NsYXNzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0SGVhZGVyQ2xhc3MoKToge1trZXk6IHN0cmluZ106IGJvb2xlYW59IHtcbiAgICBjb25zdCBmdW5jID0gdGhpcy50ZW1wbGF0ZS5oZWFkZXJDbGFzc0Z1bmM7XG4gICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIGZ1bmMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJvdyBuZ0NsYXNzXG4gICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkXG4gICAqIEByZXR1cm5zIG5nQ2xhc3NcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRSb3dDbGFzcyhyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KToge1trZXk6IHN0cmluZ106IGJvb2xlYW59IHtcbiAgICBjb25zdCBlbnRpdHkgPSByZWNvcmQuZW50aXR5O1xuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLnRlbXBsYXRlLnJvd0NsYXNzRnVuYztcbiAgICBpZiAoZnVuYyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gZnVuYyhlbnRpdHksIHJlY29yZCk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByb3cgbmdDbGFzc1xuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZFxuICAgKiBAcGFyYW0gY29sdW1uIENvbHVtblxuICAgKiBAcmV0dXJucyBuZ0NsYXNzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0Q2VsbENsYXNzKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4sIGNvbHVtbjogRW50aXR5VGFibGVDb2x1bW4pOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlY29yZC5lbnRpdHk7XG4gICAgY29uc3QgY2xzID0ge307XG5cbiAgICBjb25zdCB0YWJsZUZ1bmMgPSB0aGlzLnRlbXBsYXRlLmNlbGxDbGFzc0Z1bmM7XG4gICAgaWYgKHRhYmxlRnVuYyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNscywgdGFibGVGdW5jKGVudGl0eSwgY29sdW1uLCByZWNvcmQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5GdW5jID0gY29sdW1uLmNlbGxDbGFzc0Z1bmM7XG4gICAgaWYgKGNvbHVtbkZ1bmMgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgT2JqZWN0LmFzc2lnbihjbHMsIGNvbHVtbkZ1bmMoZW50aXR5LCByZWNvcmQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBidXR0b24gaXMgY2xpY2tlZFxuICAgKiBAcGFyYW0gZnVuYyBGdW5jdGlvblxuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uQnV0dG9uQ2xpY2soXG4gICAgY2xpY2tGdW5jOiAoZW50aXR5OiBvYmplY3QsIHJlY29yZD86IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB2b2lkLFxuICAgIHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD5cbiAgKSB7XG4gICAgdGhpcy5lbmFibGVFZGl0KHJlY29yZCk7XG4gICAgaWYgKHR5cGVvZiBjbGlja0Z1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNsaWNrRnVuYyhyZWNvcmQuZW50aXR5LCByZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBjb2x1bW4gbmFtZSB3aXRob3V0IGhpcyBcInByb3BlcnRpZXNcIiB0YWcgKHVzZWZ1bCBmb3IgZWRpdGlvbiB3b3Jrc3BhY2UgcHJvcGVydGllcylcbiAgICovXG4gIHB1YmxpYyBnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW46IHN0cmluZykge1xuICAgIGlmIChjb2x1bW4uaW5jbHVkZXMoJ3Byb3BlcnRpZXMuJykpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uc3BsaXQoJy4nKVsxXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogdGFibGVIZWlnaHR9XCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgbWF0U29ydCBbbmdDbGFzc109XCJnZXRUYWJsZUNsYXNzKClcIiBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW3RyYWNrQnldPVwiZ2V0VHJhY2tCeUZ1bmN0aW9uKClcIiAobWF0U29ydENoYW5nZSk9XCJvblNvcnQoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3Rpb25DaGVja2JveFwiIGNsYXNzPVwibWF0LWNlbGwtY2hlY2tib3hcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0TWFueVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvblN0YXRlJCB8IGFzeW5jIGFzIHNlbGVjdGlvblN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIm9uVG9nZ2xlUm93cygkZXZlbnQuY2hlY2tlZClcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb25TdGF0ZSA9PT0gZW50aXR5VGFibGVTZWxlY3Rpb25TdGF0ZS5BbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblN0YXRlID09PSBlbnRpdHlUYWJsZVNlbGVjdGlvblN0YXRlLlNvbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZWNvcmRcIj5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAobW91c2Vkb3duKT1cIiRldmVudC5zaGlmdEtleSA/ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpIDogbnVsbFwiIChjbGljayk9XCIkZXZlbnQuc2hpZnRLZXkgP1xuICAgICAgICAgICAgICBvblNoaWZ0VG9nZ2xlUm93KCFyb3dJc1NlbGVjdGVkKHJlY29yZCksIHJlY29yZCwgJGV2ZW50KSA6ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwib25Ub2dnbGVSb3coJGV2ZW50LmNoZWNrZWQscmVjb3JkKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd0lzU2VsZWN0ZWQocmVjb3JkKVwiPlxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ubmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGVtcGxhdGUuY29sdW1uc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Jc1NvcnRhYmxlKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgW21hdFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXAgPyBjb2x1bW4udG9vbHRpcCA6IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgICAge3tjb2x1bW4udGl0bGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW5Jc1NvcnRhYmxlKGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0VG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcCA/IGNvbHVtbi50b29sdGlwIDogdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgICB7e2NvbHVtbi50aXRsZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Q29sdW1uUmVuZGVyZXIoY29sdW1uKSBhcyBjb2x1bW5SZW5kZXJlclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uUmVuZGVyZXIgPT09IGVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuRGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbWF0Q2VsbERlZj1cImxldCByZWNvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtYXQtY2VsbC10ZXh0XCIgKm5nSWY9XCIhaXNVcmwoZ2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pKTtlbHNlIGlzQW5VcmxEZWZhdWx0XCIgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzKHJlY29yZCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldFZhbHVlKHJlY29yZCwgY29sdW1uKX19XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzQW5VcmxEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtYXQtY2VsbC10ZXh0XCIgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzKHJlY29yZCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7Z2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pfX1cIiB0YXJnZXQ9J19ibGFuaycgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGlnb0ltYWdlRXJyb3IgKm5nSWY9XCJpc0ltZyhnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbikpO2Vsc2Ugbm90SW1nXCIgc3JjPVwie3soZ2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pIHwgc2VjdXJlSW1hZ2UpIHwgYXN5bmN9fVwiIHdpZHRoPVwiNTBcIiBoZWlndGg9XCJhdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RJbWc+PHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgJ2lnby5jb21tb24uZW50aXR5LXRhYmxlLnRhcmdldEh0bWxVcmwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uUmVuZGVyZXIgPT09IGVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuSFRNTFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbWF0Q2VsbERlZj1cImxldCByZWNvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtYXQtY2VsbC10ZXh0XCIgKm5nSWY9XCIhaXNVcmwoZ2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pKTtlbHNlIGlzQW5VcmxIVE1MXCIgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzKHJlY29yZCwgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNBblVybEhUTUw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1hdC1jZWxsLXRleHRcIiBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3MocmVjb3JkLCBjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwie3tnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbil9fVwiIHRhcmdldD0nX2JsYW5rJyByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgaWdvSW1hZ2VFcnJvciAqbmdJZj1cImlzSW1nKGdldFZhbHVlKHJlY29yZCwgY29sdW1uKSk7ZWxzZSBub3RJbWdcIiBzcmM9XCJ7eyhnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbikgfCBzZWN1cmVJbWFnZSkgfCBhc3luY319XCIgd2lkdGg9XCI1MFwiIGhlaWd0aD1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdEltZz48c3Bhbj57eyAnaWdvLmdlby50YXJnZXRIdG1sVXJsJyB8XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSB9fSA8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uUmVuZGVyZXIgPT09IGVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IHJlY29yZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1hdC1jZWxsLXRleHQgZWRpdGlvblwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKm5nSWY9XCJpc0VkaXRpb24ocmVjb3JkKTtlbHNlIGlzVW5zYW5pdGl6ZWRIVE1MXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3MocmVjb3JkLCBjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbHVtbi5uYW1lXCIgdmFsdWU9XCJ7e2dldFZhbHVlKHJlY29yZCwgY29sdW1uKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZShjb2x1bW4ubmFtZSwgcmVjb3JkLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0aW1lXCIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RpbWUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb2x1bW4ubmFtZVwiIHN0ZXA9XCI5MDBcIiAoZm9jdXMpPVwiY29sdW1uLm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJjb2x1bW4ub25DaGFuZ2UoJGV2ZW50KVwiIChibHVyKT1cImNvbHVtbi5vbkJsdXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiY2xhc3NfbnVtYmVyX2VkaXRpb25cIiAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29sdW1uLm5hbWVcIiBzdGVwPVwie3tjb2x1bW4uc3RlcH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2dldFZhbHVlKHJlY29yZCxjb2x1bW4pfX1cIiAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZShjb2x1bW4ubmFtZSwgcmVjb3JkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk9XCJ7e2dldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdyZWFkb25seScpfX1cIiByZXF1aXJlZD1cInt7Z2V0VmFsaWRhdGlvbkF0dHJpYnV0ZVZhbHVlKGNvbHVtbiwgJ21hbmRhdG9yeScpfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCJ7e2dldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdtaW5WYWx1ZScpfX1cIiBtYXg9XCJ7e2dldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdtYXhWYWx1ZScpfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhY29sdW1uLnR5cGUgfHwgY29sdW1uLnR5cGUgPT09J3N0cmluZydcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2dldFZhbHVlKHJlY29yZCwgY29sdW1uKX19XCIgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoY29sdW1uLm5hbWUsIHJlY29yZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PVwie3tnZXRWYWxpZGF0aW9uQXR0cmlidXRlVmFsdWUoY29sdW1uLCAncmVhZG9ubHknKX19XCIgcmVxdWlyZWQ9XCJ7e2dldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdtYW5kYXRvcnknKX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb2x1bW4ubmFtZVwiIFtjaGVja2VkXT1cImdldFZhbHVlKHJlY29yZCxjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkJvb2xlYW5WYWx1ZUNoYW5nZShjb2x1bW4ubmFtZSwgcmVjb3JkLCRldmVudClcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2xpc3QnXCIgcmVxdWlyZWQ9XCJ7e2dldFZhbGlkYXRpb25BdHRyaWJ1dGVWYWx1ZShjb2x1bW4sICdtYW5kYXRvcnknKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb2x1bW4ubmFtZVwiIFttdWx0aXBsZV09XCJjb2x1bW4ubXVsdGlwbGVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0VmFsdWVDaGFuZ2UoY29sdW1uLm5hbWUsIHJlY29yZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uLmRvbWFpblZhbHVlc1wiIFt2YWx1ZV09XCJvcHRpb24uaWRcIiBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb2x1bW4ubmFtZVwiICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdhdXRvY29tcGxldGUnXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD1cInt7Z2V0VmFsaWRhdGlvbkF0dHJpYnV0ZVZhbHVlKGNvbHVtbiwgJ21hbmRhdG9yeScpfX1cIiB2YWx1ZT1cInt7Z2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PVwie3tnZXRWYWxpZGF0aW9uQXR0cmlidXRlVmFsdWUoY29sdW1uLCAncmVhZG9ubHknKX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cIm9uQXV0b2NvbXBsZXRlVmFsdWVDaGFuZ2UoY29sdW1uLCByZWNvcmQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFdpZHRoPVwiNDMwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zW2NvbHVtbi5uYW1lXSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNVbnNhbml0aXplZEhUTUw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1hdC1jZWxsLXRleHRcIiAqbmdJZj1cIiFpc1VybChnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbikpO2Vsc2UgaXNBblVybFVuc2FuaXRpemVkSFRNTFwiIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzcyhyZWNvcmQsIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFZhbHVlKHJlY29yZCwgY29sdW1uKSB8IHNhbml0aXplSHRtbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzQW5VcmxVbnNhbml0aXplZEhUTUw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtYXQtY2VsbC10ZXh0XCIgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzKHJlY29yZCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2dldFZhbHVlKHJlY29yZCwgY29sdW1uKX19XCIgdGFyZ2V0PSdfYmxhbmsnIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgaWdvSW1hZ2VFcnJvciAqbmdJZj1cImlzSW1nKGdldFZhbHVlKHJlY29yZCwgY29sdW1uKSk7ZWxzZSBub3RJbWdcIiBzcmM9XCJ7eyhnZXRWYWx1ZShyZWNvcmQsIGNvbHVtbikgfCBzZWN1cmVJbWFnZSkgfCBhc3luY319XCIgd2lkdGg9XCI1MFwiIGhlaWd0aD1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RJbWc+PHNwYW4+e3sgJ2lnby5nZW8udGFyZ2V0SHRtbFVybCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uUmVuZGVyZXIgPT09IGVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuSWNvblwiPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJlY29yZFwiIGNsYXNzPVwibWF0LWNlbGwtdGV4dFwiIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzcyhyZWNvcmQsIGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb2x1bW4ub25DbGlja1wiIHN2Z0ljb249XCJ7e2dldFZhbHVlKHJlY29yZCwgY29sdW1uKXx8IGNvbHVtbi5pY29ufX1cIiAoY2xpY2spPVwiY29sdW1uLm9uQ2xpY2soJGV2ZW50KVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWNvbHVtbi5vbkNsaWNrXCIgc3ZnSWNvbj1cInt7Z2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pfHwgY29sdW1uLmljb259fVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtblJlbmRlcmVyID09PSBlbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IHJlY29yZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1hdC1jZWxsLXRleHRcIiBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3MocmVjb3JkLCBjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZ2V0VmFsdWUocmVjb3JkLCBjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW9uKHJlY29yZCkgPT09IGJ1dHRvbi5lZGl0TW9kZSB8fCBidXR0b24uZWRpdE1vZGUgPT09IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJidXR0b24uc3R5bGUgPT09ICdtYXQtaWNvbi1idXR0b24nXCIgaWdvU3RvcFByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYnV0dG9uLmNvbG9yXCIgKG1vdXNlZG93bik9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbi5jbGljaywgcmVjb3JkKVwiIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJ7e2J1dHRvbi5pY29ufX1cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJidXR0b24uc3R5bGUgIT09ICdtYXQtaWNvbi1idXR0b24nXCIgaWdvU3RvcFByb3BhZ2F0aW9uIG1hdC1taW5pLWZhYlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYnV0dG9uLmNvbG9yXCIgKG1vdXNlZG93bik9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbi5jbGljaywgcmVjb3JkKVwiIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJ7e2J1dHRvbi5pY29ufX1cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiaGVhZGVyczsgc3RpY2t5OiBmaXhlZEhlYWRlclwiIFtuZ0NsYXNzXT1cImdldEhlYWRlckNsYXNzKClcIj5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyBpZ29FbnRpdHlUYWJsZVJvdyAqbWF0Um93RGVmPVwibGV0IHJlY29yZDsgY29sdW1uczogaGVhZGVycztcIiBbc2Nyb2xsQmVoYXZpb3JdPVwic2Nyb2xsQmVoYXZpb3JcIiBbbmdDbGFzc109XCJnZXRSb3dDbGFzcyhyZWNvcmQpXCIgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIiBbc2VsZWN0ZWRdPVwicm93SXNTZWxlY3RlZChyZWNvcmQpXCIgKHNlbGVjdCk9XCJvblJvd1NlbGVjdChyZWNvcmQpXCIgKGNsaWNrKT1cIm9uUm93Q2xpY2socmVjb3JkKVwiPlxuICAgICAgPC90cj5cbiAgPC90YWJsZT5cbiAgPGlnby1lbnRpdHktdGFibGUtcGFnaW5hdG9yICpuZ0lmPVwid2l0aFBhZ2luYXRvclwiIFtzdG9yZV09XCJzdG9yZVwiIFtwYWdpbmF0b3JPcHRpb25zXT1cInBhZ2luYXRvck9wdGlvbnNcIiBbZW50aXR5U29ydENoYW5nZSRdPVwiZW50aXR5U29ydENoYW5nZSRcIiAocGFnaW5hdG9yQ2hhbmdlKT1cInBhZ2luYXRvckNoYW5nZSgkZXZlbnQpXCI+XG4gIDwvaWdvLWVudGl0eS10YWJsZS1wYWdpbmF0b3I+XG48L2Rpdj4iXX0=
|