@openziti/ziti-console-lib 1.0.3 → 1.1.0
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/assets/styles/global.scss +70 -0
- package/fesm2022/openziti-ziti-console-lib.mjs +2133 -1321
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/index.d.ts +5689 -6
- package/index.d.ts.map +1 -0
- package/package.json +10 -12
- package/esm2022/lib/ZAC_VERSION.mjs +0 -4
- package/esm2022/lib/app.initializer.mjs +0 -24
- package/esm2022/lib/default-app-config.mjs +0 -5
- package/esm2022/lib/features/card/card.component.mjs +0 -34
- package/esm2022/lib/features/card-list/card-list.component.mjs +0 -55
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +0 -337
- package/esm2022/lib/features/confirm/confirm.component.mjs +0 -77
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +0 -93
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +0 -111
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +0 -46
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +0 -49
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +0 -58
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +0 -123
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +0 -268
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +0 -93
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +0 -37
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +0 -33
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +0 -138
- package/esm2022/lib/features/data-table/data-table.component.mjs +0 -918
- package/esm2022/lib/features/data-table/data-table.service.mjs +0 -98
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +0 -108
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +0 -26
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +0 -29
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +0 -34
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +0 -72
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +0 -134
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +0 -189
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +0 -50
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +0 -95
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +0 -121
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +0 -83
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +0 -100
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +0 -201
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +0 -166
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +0 -108
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +0 -126
- package/esm2022/lib/features/extendable/extendable.component.mjs +0 -55
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +0 -52
- package/esm2022/lib/features/header-bar/header-bar.component.mjs +0 -105
- package/esm2022/lib/features/json-view/json-view.component.mjs +0 -212
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +0 -138
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +0 -66
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +0 -29
- package/esm2022/lib/features/login/login-dialog.component.mjs +0 -121
- package/esm2022/lib/features/messaging/growler.component.mjs +0 -62
- package/esm2022/lib/features/messaging/growler.model.mjs +0 -24
- package/esm2022/lib/features/messaging/growler.module.mjs +0 -34
- package/esm2022/lib/features/messaging/growler.service.mjs +0 -71
- package/esm2022/lib/features/messaging/logger.service.mjs +0 -174
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +0 -30
- package/esm2022/lib/features/no-items/no-items.component.mjs +0 -46
- package/esm2022/lib/features/overrides/overrides.component.mjs +0 -118
- package/esm2022/lib/features/overrides/overrides.service.mjs +0 -114
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +0 -151
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +0 -114
- package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +0 -43
- package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +0 -90
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +0 -143
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +0 -118
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +0 -337
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +0 -114
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +0 -399
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +0 -95
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +0 -217
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +0 -54
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +0 -244
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +0 -92
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +0 -275
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +0 -137
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +0 -231
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +0 -118
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +0 -277
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +0 -188
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +0 -101
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +0 -54
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +0 -135
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +0 -471
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +0 -131
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +0 -533
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +0 -79
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +0 -437
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +0 -81
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +0 -315
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +0 -330
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +0 -591
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +0 -1036
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +0 -275
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +0 -172
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +0 -279
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +0 -230
- package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +0 -213
- package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +0 -84
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +0 -244
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +0 -130
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +0 -224
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +0 -118
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +0 -166
- package/esm2022/lib/features/quick-add/quick-add.component.mjs +0 -50
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +0 -86
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +0 -61
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +0 -45
- package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +0 -127
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +0 -54
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +0 -291
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +0 -586
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +0 -373
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +0 -1706
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +0 -591
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +0 -883
- package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +0 -32
- package/esm2022/lib/models/api-session.mjs +0 -7
- package/esm2022/lib/models/auth-policy.mjs +0 -31
- package/esm2022/lib/models/certificate-authority.mjs +0 -16
- package/esm2022/lib/models/config-type.mjs +0 -10
- package/esm2022/lib/models/config.mjs +0 -10
- package/esm2022/lib/models/edge-router-policy.mjs +0 -11
- package/esm2022/lib/models/edge-router.mjs +0 -13
- package/esm2022/lib/models/identity.mjs +0 -34
- package/esm2022/lib/models/jwt-signer.mjs +0 -20
- package/esm2022/lib/models/posture-check.mjs +0 -29
- package/esm2022/lib/models/service-edge-router-policy.mjs +0 -11
- package/esm2022/lib/models/service-policy.mjs +0 -13
- package/esm2022/lib/models/service.mjs +0 -12
- package/esm2022/lib/models/session.mjs +0 -7
- package/esm2022/lib/models/terminator.mjs +0 -14
- package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +0 -112
- package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +0 -235
- package/esm2022/lib/pages/attributes/attributes.component.mjs +0 -104
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +0 -120
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +0 -215
- package/esm2022/lib/pages/callback/callback.component.mjs +0 -155
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +0 -119
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +0 -240
- package/esm2022/lib/pages/config-types/config-types-page.component.mjs +0 -130
- package/esm2022/lib/pages/config-types/config-types-page.service.mjs +0 -134
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +0 -134
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +0 -251
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +0 -128
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +0 -407
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +0 -136
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +0 -354
- package/esm2022/lib/pages/geolocate/geolocate.component.mjs +0 -130
- package/esm2022/lib/pages/identities/identities-page.component.mjs +0 -221
- package/esm2022/lib/pages/identities/identities-page.service.mjs +0 -591
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +0 -160
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +0 -177
- package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +0 -103
- package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +0 -200
- package/esm2022/lib/pages/profile/profile.component.mjs +0 -58
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +0 -122
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +0 -367
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +0 -124
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +0 -446
- package/esm2022/lib/pages/services/services-page.component.mjs +0 -218
- package/esm2022/lib/pages/services/services-page.service.mjs +0 -378
- package/esm2022/lib/pages/sessions/sessions-page.component.mjs +0 -112
- package/esm2022/lib/pages/sessions/sessions-page.service.mjs +0 -228
- package/esm2022/lib/pages/settings/settings.component.mjs +0 -61
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +0 -97
- package/esm2022/lib/pages/terminators/terminators-page.service.mjs +0 -235
- package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +0 -129
- package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +0 -248
- package/esm2022/lib/safe.pipe.mjs +0 -18
- package/esm2022/lib/services/auth.service.mjs +0 -94
- package/esm2022/lib/services/console-events.service.mjs +0 -20
- package/esm2022/lib/services/csv-download.service.mjs +0 -91
- package/esm2022/lib/services/deactivate-guard.service.mjs +0 -17
- package/esm2022/lib/services/login-service.class.mjs +0 -47
- package/esm2022/lib/services/node-data.service.mjs +0 -397
- package/esm2022/lib/services/noop-login.service.mjs +0 -41
- package/esm2022/lib/services/schema.service.mjs +0 -807
- package/esm2022/lib/services/settings-service.class.mjs +0 -120
- package/esm2022/lib/services/settings.service.mjs +0 -203
- package/esm2022/lib/services/tab-name.service.mjs +0 -73
- package/esm2022/lib/services/validation.service.mjs +0 -156
- package/esm2022/lib/services/ziti-controller-data.service.mjs +0 -340
- package/esm2022/lib/services/ziti-data.service.mjs +0 -100
- package/esm2022/lib/services/ziti-domain-controller.service.mjs +0 -3
- package/esm2022/lib/shared/list-page-component.class.mjs +0 -186
- package/esm2022/lib/shared/list-page-service.class.mjs +0 -244
- package/esm2022/lib/urls.mjs +0 -34
- package/esm2022/lib/zac-routing.module.mjs +0 -34
- package/esm2022/lib/ziti-console-lib.module.mjs +0 -538
- package/esm2022/lib/ziti-console.constants.mjs +0 -20
- package/esm2022/openziti-ziti-console-lib.mjs +0 -5
- package/esm2022/public-api.mjs +0 -130
- package/lib/ZAC_VERSION.d.ts +0 -4
- package/lib/ZAC_VERSION.d.ts.map +0 -1
- package/lib/app.initializer.d.ts +0 -3
- package/lib/app.initializer.d.ts.map +0 -1
- package/lib/default-app-config.d.ts +0 -9
- package/lib/default-app-config.d.ts.map +0 -1
- package/lib/features/card/card.component.d.ts +0 -13
- package/lib/features/card/card.component.d.ts.map +0 -1
- package/lib/features/card-list/card-list.component.d.ts +0 -27
- package/lib/features/card-list/card-list.component.d.ts.map +0 -1
- package/lib/features/config-editor/config-editor.component.d.ts +0 -50
- package/lib/features/config-editor/config-editor.component.d.ts.map +0 -1
- package/lib/features/confirm/confirm.component.d.ts +0 -34
- package/lib/features/confirm/confirm.component.d.ts.map +0 -1
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +0 -32
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +0 -1
- package/lib/features/custom-tags/custom-tags.component.d.ts +0 -37
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +0 -16
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts +0 -20
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +0 -15
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +0 -22
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +0 -52
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +0 -27
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +0 -19
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +0 -15
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +0 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +0 -37
- package/lib/features/data-table/data-table-filter.service.d.ts.map +0 -1
- package/lib/features/data-table/data-table.component.d.ts +0 -164
- package/lib/features/data-table/data-table.component.d.ts.map +0 -1
- package/lib/features/data-table/data-table.service.d.ts +0 -20
- package/lib/features/data-table/data-table.service.d.ts.map +0 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +0 -25
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +0 -1
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +0 -10
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +0 -1
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +0 -15
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +0 -1
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +0 -15
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +0 -19
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +0 -28
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +0 -50
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +0 -14
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +0 -23
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/object/object.component.d.ts +0 -26
- package/lib/features/dynamic-widgets/object/object.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts +0 -24
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +0 -22
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +0 -60
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +0 -30
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +0 -27
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +0 -26
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +0 -1
- package/lib/features/extendable/extendable.component.d.ts +0 -15
- package/lib/features/extendable/extendable.component.d.ts.map +0 -1
- package/lib/features/extendable/extensions-noop.service.d.ts +0 -35
- package/lib/features/extendable/extensions-noop.service.d.ts.map +0 -1
- package/lib/features/header-bar/header-bar.component.d.ts +0 -29
- package/lib/features/header-bar/header-bar.component.d.ts.map +0 -1
- package/lib/features/json-view/json-view.component.d.ts +0 -40
- package/lib/features/json-view/json-view.component.d.ts.map +0 -1
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +0 -35
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +0 -1
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +0 -14
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +0 -1
- package/lib/features/loading-indicator/loading-indicator.component.d.ts +0 -11
- package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +0 -1
- package/lib/features/login/login-dialog.component.d.ts +0 -30
- package/lib/features/login/login-dialog.component.d.ts.map +0 -1
- package/lib/features/messaging/growler.component.d.ts +0 -19
- package/lib/features/messaging/growler.component.d.ts.map +0 -1
- package/lib/features/messaging/growler.model.d.ts +0 -8
- package/lib/features/messaging/growler.model.d.ts.map +0 -1
- package/lib/features/messaging/growler.module.d.ts +0 -10
- package/lib/features/messaging/growler.module.d.ts.map +0 -1
- package/lib/features/messaging/growler.service.d.ts +0 -18
- package/lib/features/messaging/growler.service.d.ts.map +0 -1
- package/lib/features/messaging/logger.service.d.ts +0 -27
- package/lib/features/messaging/logger.service.d.ts.map +0 -1
- package/lib/features/multi-action-button/multi-action-button.component.d.ts +0 -13
- package/lib/features/multi-action-button/multi-action-button.component.d.ts.map +0 -1
- package/lib/features/no-items/no-items.component.d.ts +0 -19
- package/lib/features/no-items/no-items.component.d.ts.map +0 -1
- package/lib/features/overrides/overrides.component.d.ts +0 -33
- package/lib/features/overrides/overrides.component.d.ts.map +0 -1
- package/lib/features/overrides/overrides.service.d.ts +0 -18
- package/lib/features/overrides/overrides.service.d.ts.map +0 -1
- package/lib/features/preview-list/preview-list.component.d.ts +0 -34
- package/lib/features/preview-list/preview-list.component.d.ts.map +0 -1
- package/lib/features/preview-selections/preview-selections.component.d.ts +0 -39
- package/lib/features/preview-selections/preview-selections.component.d.ts.map +0 -1
- package/lib/features/progress-meter/progress-meter.component.d.ts +0 -19
- package/lib/features/progress-meter/progress-meter.component.d.ts.map +0 -1
- package/lib/features/progress-wizard/progress-wizard.component.d.ts +0 -31
- package/lib/features/progress-wizard/progress-wizard.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +0 -50
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +0 -74
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +0 -38
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +0 -80
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts +0 -37
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +0 -62
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts +0 -28
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +0 -63
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +0 -62
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts +0 -33
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -53
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +0 -29
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -54
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +0 -40
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +0 -29
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +0 -15
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +0 -38
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -93
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts +0 -20
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +0 -97
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts +0 -21
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +0 -134
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts +0 -23
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/projectable-form.class.d.ts +0 -92
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -70
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/service-form.service.d.ts +0 -123
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +0 -173
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -53
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +0 -38
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -55
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +0 -48
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/session/session-form.component.d.ts +0 -63
- package/lib/features/projectable-forms/session/session-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/session/session-form.service.d.ts +0 -23
- package/lib/features/projectable-forms/session/session-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +0 -58
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts +0 -33
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +0 -50
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts.map +0 -1
- package/lib/features/qr-code/qr-code.component.d.ts +0 -45
- package/lib/features/qr-code/qr-code.component.d.ts.map +0 -1
- package/lib/features/quick-add/quick-add.component.d.ts +0 -15
- package/lib/features/quick-add/quick-add.component.d.ts.map +0 -1
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +0 -27
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +0 -1
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +0 -13
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +0 -1
- package/lib/features/side-modal/side-modal.component.d.ts +0 -15
- package/lib/features/side-modal/side-modal.component.d.ts.map +0 -1
- package/lib/features/side-navigator/side-navigator.component.d.ts +0 -33
- package/lib/features/side-navigator/side-navigator.component.d.ts.map +0 -1
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +0 -16
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +0 -1
- package/lib/features/tag-selector/tag-selector.component.d.ts +0 -59
- package/lib/features/tag-selector/tag-selector.component.d.ts.map +0 -1
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +0 -54
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +0 -1
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +0 -21
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +0 -146
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts +0 -172
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts +0 -35
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts.map +0 -1
- package/lib/features/visualizer/visualizer-service.class.d.ts +0 -10
- package/lib/features/visualizer/visualizer-service.class.d.ts.map +0 -1
- package/lib/models/api-session.d.ts +0 -18
- package/lib/models/api-session.d.ts.map +0 -1
- package/lib/models/auth-policy.d.ts +0 -8
- package/lib/models/auth-policy.d.ts.map +0 -1
- package/lib/models/certificate-authority.d.ts +0 -14
- package/lib/models/certificate-authority.d.ts.map +0 -1
- package/lib/models/config-type.d.ts +0 -7
- package/lib/models/config-type.d.ts.map +0 -1
- package/lib/models/config.d.ts +0 -7
- package/lib/models/config.d.ts.map +0 -1
- package/lib/models/edge-router-policy.d.ts +0 -8
- package/lib/models/edge-router-policy.d.ts.map +0 -1
- package/lib/models/edge-router.d.ts +0 -10
- package/lib/models/edge-router.d.ts.map +0 -1
- package/lib/models/identity.d.ts +0 -16
- package/lib/models/identity.d.ts.map +0 -1
- package/lib/models/jwt-signer.d.ts +0 -17
- package/lib/models/jwt-signer.d.ts.map +0 -1
- package/lib/models/posture-check.d.ts +0 -17
- package/lib/models/posture-check.d.ts.map +0 -1
- package/lib/models/service-edge-router-policy.d.ts +0 -8
- package/lib/models/service-edge-router-policy.d.ts.map +0 -1
- package/lib/models/service-policy.d.ts +0 -10
- package/lib/models/service-policy.d.ts.map +0 -1
- package/lib/models/service.d.ts +0 -9
- package/lib/models/service.d.ts.map +0 -1
- package/lib/models/session.d.ts +0 -17
- package/lib/models/session.d.ts.map +0 -1
- package/lib/models/terminator.d.ts +0 -11
- package/lib/models/terminator.d.ts.map +0 -1
- package/lib/pages/api-sessions/api-sessions-page.component.d.ts +0 -30
- package/lib/pages/api-sessions/api-sessions-page.component.d.ts.map +0 -1
- package/lib/pages/api-sessions/api-sessions-page.service.d.ts +0 -31
- package/lib/pages/api-sessions/api-sessions-page.service.d.ts.map +0 -1
- package/lib/pages/attributes/attributes.component.d.ts +0 -31
- package/lib/pages/attributes/attributes.component.d.ts.map +0 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts +0 -29
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +0 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +0 -34
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +0 -1
- package/lib/pages/callback/callback.component.d.ts +0 -22
- package/lib/pages/callback/callback.component.d.ts.map +0 -1
- package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts +0 -30
- package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts.map +0 -1
- package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts +0 -35
- package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +0 -1
- package/lib/pages/config-types/config-types-page.component.d.ts +0 -31
- package/lib/pages/config-types/config-types-page.component.d.ts.map +0 -1
- package/lib/pages/config-types/config-types-page.service.d.ts +0 -29
- package/lib/pages/config-types/config-types-page.service.d.ts.map +0 -1
- package/lib/pages/configurations/configurations-page.component.d.ts +0 -30
- package/lib/pages/configurations/configurations-page.component.d.ts.map +0 -1
- package/lib/pages/configurations/configurations-page.service.d.ts +0 -80
- package/lib/pages/configurations/configurations-page.service.d.ts.map +0 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +0 -33
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +0 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -63
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +0 -1
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +0 -36
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +0 -1
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +0 -51
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +0 -1
- package/lib/pages/geolocate/geolocate.component.d.ts +0 -32
- package/lib/pages/geolocate/geolocate.component.d.ts.map +0 -1
- package/lib/pages/identities/identities-page.component.d.ts +0 -40
- package/lib/pages/identities/identities-page.component.d.ts.map +0 -1
- package/lib/pages/identities/identities-page.service.d.ts +0 -64
- package/lib/pages/identities/identities-page.service.d.ts.map +0 -1
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +0 -34
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +0 -1
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts +0 -31
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts.map +0 -1
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts +0 -29
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts.map +0 -1
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts +0 -28
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts.map +0 -1
- package/lib/pages/profile/profile.component.d.ts +0 -17
- package/lib/pages/profile/profile.component.d.ts.map +0 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +0 -33
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +0 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -57
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +0 -1
- package/lib/pages/service-policies/service-policies-page.component.d.ts +0 -34
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +0 -1
- package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -63
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +0 -1
- package/lib/pages/services/services-page.component.d.ts +0 -42
- package/lib/pages/services/services-page.component.d.ts.map +0 -1
- package/lib/pages/services/services-page.service.d.ts +0 -69
- package/lib/pages/services/services-page.service.d.ts.map +0 -1
- package/lib/pages/sessions/sessions-page.component.d.ts +0 -30
- package/lib/pages/sessions/sessions-page.component.d.ts.map +0 -1
- package/lib/pages/sessions/sessions-page.service.d.ts +0 -30
- package/lib/pages/sessions/sessions-page.service.d.ts.map +0 -1
- package/lib/pages/settings/settings.component.d.ts +0 -23
- package/lib/pages/settings/settings.component.d.ts.map +0 -1
- package/lib/pages/terminators/terminators-page.component.d.ts +0 -29
- package/lib/pages/terminators/terminators-page.component.d.ts.map +0 -1
- package/lib/pages/terminators/terminators-page.service.d.ts +0 -32
- package/lib/pages/terminators/terminators-page.service.d.ts.map +0 -1
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts +0 -35
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +0 -1
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts +0 -50
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts.map +0 -1
- package/lib/safe.pipe.d.ts +0 -11
- package/lib/safe.pipe.d.ts.map +0 -1
- package/lib/services/auth.service.d.ts +0 -21
- package/lib/services/auth.service.d.ts.map +0 -1
- package/lib/services/console-events.service.d.ts +0 -12
- package/lib/services/console-events.service.d.ts.map +0 -1
- package/lib/services/csv-download.service.d.ts +0 -11
- package/lib/services/csv-download.service.d.ts.map +0 -1
- package/lib/services/deactivate-guard.service.d.ts +0 -14
- package/lib/services/deactivate-guard.service.d.ts.map +0 -1
- package/lib/services/login-service.class.d.ts +0 -30
- package/lib/services/login-service.class.d.ts.map +0 -1
- package/lib/services/node-data.service.d.ts +0 -38
- package/lib/services/node-data.service.d.ts.map +0 -1
- package/lib/services/noop-login.service.d.ts +0 -22
- package/lib/services/noop-login.service.d.ts.map +0 -1
- package/lib/services/schema.service.d.ts +0 -63
- package/lib/services/schema.service.d.ts.map +0 -1
- package/lib/services/settings-service.class.d.ts +0 -36
- package/lib/services/settings-service.class.d.ts.map +0 -1
- package/lib/services/settings.service.d.ts +0 -20
- package/lib/services/settings.service.d.ts.map +0 -1
- package/lib/services/tab-name.service.d.ts +0 -20
- package/lib/services/tab-name.service.d.ts.map +0 -1
- package/lib/services/validation.service.d.ts +0 -20
- package/lib/services/validation.service.d.ts.map +0 -1
- package/lib/services/ziti-controller-data.service.d.ts +0 -36
- package/lib/services/ziti-controller-data.service.d.ts.map +0 -1
- package/lib/services/ziti-data.service.d.ts +0 -49
- package/lib/services/ziti-data.service.d.ts.map +0 -1
- package/lib/services/ziti-domain-controller.service.d.ts +0 -13
- package/lib/services/ziti-domain-controller.service.d.ts.map +0 -1
- package/lib/shared/list-page-component.class.d.ts +0 -57
- package/lib/shared/list-page-component.class.d.ts.map +0 -1
- package/lib/shared/list-page-service.class.d.ts +0 -81
- package/lib/shared/list-page-service.class.d.ts.map +0 -1
- package/lib/urls.d.ts +0 -34
- package/lib/urls.d.ts.map +0 -1
- package/lib/zac-routing.module.d.ts +0 -8
- package/lib/zac-routing.module.d.ts.map +0 -1
- package/lib/ziti-console-lib.module.d.ts +0 -121
- package/lib/ziti-console-lib.module.d.ts.map +0 -1
- package/lib/ziti-console.constants.d.ts +0 -5
- package/lib/ziti-console.constants.d.ts.map +0 -1
- package/openziti-ziti-console-lib.d.ts.map +0 -1
- package/public-api.d.ts +0 -127
- package/public-api.d.ts.map +0 -1
|
@@ -1,918 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright NetFoundry Inc.
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
17
|
-
// Import the resized event model
|
|
18
|
-
import $ from 'jquery';
|
|
19
|
-
import _ from 'lodash';
|
|
20
|
-
import moment from 'moment';
|
|
21
|
-
import { TableColumnDefaultComponent } from "./column-headers/table-column-default/table-column-default.component";
|
|
22
|
-
import { TableColumnSelectComponent } from "./column-headers/table-column-select/table-column-select.component";
|
|
23
|
-
import { TableColumnMenuComponent } from "./column-headers/table-column-menu/table-column-menu.component";
|
|
24
|
-
import { TableCellSelectComponent } from "./cells/table-cell-select/table-cell-select.component";
|
|
25
|
-
import { TableCellMenuComponent } from "./cells/table-cell-menu/table-cell-menu.component";
|
|
26
|
-
import { TableCellTokenComponent } from "./cells/table-cell-token/table-cell-token.component";
|
|
27
|
-
import { Subscription } from "rxjs";
|
|
28
|
-
import * as i0 from "@angular/core";
|
|
29
|
-
import * as i1 from "./data-table.service";
|
|
30
|
-
import * as i2 from "./data-table-filter.service";
|
|
31
|
-
import * as i3 from "@angular/common";
|
|
32
|
-
import * as i4 from "@angular/forms";
|
|
33
|
-
import * as i5 from "primeng/api";
|
|
34
|
-
import * as i6 from "primeng/calendar";
|
|
35
|
-
import * as i7 from "ag-grid-angular";
|
|
36
|
-
import * as i8 from "ng-click-outside";
|
|
37
|
-
import * as i9 from "./table-filter-bar/filter-bar.component";
|
|
38
|
-
import * as i10 from "./table-hidden-columns-bar/hidden-columns-bar.component";
|
|
39
|
-
import * as i11 from "../no-items/no-items.component";
|
|
40
|
-
import * as i12 from "../tag-selector/tag-selector.component";
|
|
41
|
-
export class DataTableComponent {
|
|
42
|
-
set tableId(id) {
|
|
43
|
-
this.svc.tableId = id;
|
|
44
|
-
this.updateEntityTypeLabel();
|
|
45
|
-
}
|
|
46
|
-
set view(value) {
|
|
47
|
-
this._view = value;
|
|
48
|
-
}
|
|
49
|
-
constructor(svc, tableFilterService) {
|
|
50
|
-
this.svc = svc;
|
|
51
|
-
this.tableFilterService = tableFilterService;
|
|
52
|
-
this.options = { noSelect: false, noMenu: false };
|
|
53
|
-
this.filterApplied = false;
|
|
54
|
-
this.menuItems = [];
|
|
55
|
-
this.headerActions = [];
|
|
56
|
-
this.noItemsClass = 'background-image: url("/assets/svgs/No_Clients.svg")';
|
|
57
|
-
this.entityTypeName = 'Identities';
|
|
58
|
-
this.showNoItemsAdd = true;
|
|
59
|
-
this.currentPage = 1;
|
|
60
|
-
this.noItemsImage = 'nodata';
|
|
61
|
-
this.rowHeight = this.remToPx(3.125);
|
|
62
|
-
this.filterName = 'name';
|
|
63
|
-
this.filterColumn = 'name';
|
|
64
|
-
this.actionRequested = new EventEmitter();
|
|
65
|
-
// @Output() filterChanged = new EventEmitter();
|
|
66
|
-
this.gridReady = new EventEmitter();
|
|
67
|
-
this.dragStart = new EventEmitter();
|
|
68
|
-
this.dragLeave = new EventEmitter();
|
|
69
|
-
this.pageChanged = new EventEmitter();
|
|
70
|
-
this._view = 'list';
|
|
71
|
-
this.filterOptions = [];
|
|
72
|
-
this.appendAttributeHash = true;
|
|
73
|
-
this.attributesColumn = '';
|
|
74
|
-
this.dateTimeColumn = '';
|
|
75
|
-
this.dateTimeFilterLabel = '';
|
|
76
|
-
this.selectedRange = '';
|
|
77
|
-
this.resizeHandlerInit = false;
|
|
78
|
-
this.selectedItem = {
|
|
79
|
-
actionList: [],
|
|
80
|
-
};
|
|
81
|
-
this.entityTypeLabel = '';
|
|
82
|
-
this.columnFilters = {};
|
|
83
|
-
this.roleAttributes = [];
|
|
84
|
-
this.namedAttributes = [];
|
|
85
|
-
this.selectedRoleAttributes = [];
|
|
86
|
-
this.selectedNamedAttributes = [];
|
|
87
|
-
this.currentHeaderComponentParams = {};
|
|
88
|
-
this.subscription = new Subscription();
|
|
89
|
-
this.menuColumnDefinition = {
|
|
90
|
-
colId: 'ziti-ag-menu',
|
|
91
|
-
field: 'ziti-ag-menu',
|
|
92
|
-
resizable: false,
|
|
93
|
-
width: this.remToPx(3.125),
|
|
94
|
-
sortable: false,
|
|
95
|
-
lockPosition: true,
|
|
96
|
-
suppressMovable: true,
|
|
97
|
-
headerClass: 'menuHeader',
|
|
98
|
-
cellClass: 'tCol cellMenu',
|
|
99
|
-
cellRenderer: 'cellMenuComponent',
|
|
100
|
-
cellRendererParams: {
|
|
101
|
-
openMenu: ($event, item) => {
|
|
102
|
-
this.openActionMenu($event, item);
|
|
103
|
-
},
|
|
104
|
-
closeMenu: (event) => {
|
|
105
|
-
this.closeActionMenu();
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
suppressSizeToFit: true,
|
|
109
|
-
pinned: 'right',
|
|
110
|
-
headerComponent: TableColumnMenuComponent,
|
|
111
|
-
headerComponentParams: {
|
|
112
|
-
openHeaderMenu: ($event) => {
|
|
113
|
-
this.openHeaderActionMenu($event);
|
|
114
|
-
},
|
|
115
|
-
closeMenu: (event) => {
|
|
116
|
-
this.closeActionMenu();
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
this.selectColumnDefinition = {
|
|
121
|
-
colId: 'ziti-ag-selected',
|
|
122
|
-
field: 'ziti-ag-selected',
|
|
123
|
-
suppressSizeToFit: true,
|
|
124
|
-
lockPosition: true,
|
|
125
|
-
suppressMovable: true,
|
|
126
|
-
resizable: false,
|
|
127
|
-
pinned: 'left',
|
|
128
|
-
width: this.remToPx(3.75),
|
|
129
|
-
sortable: false,
|
|
130
|
-
headerClass: 'selectHeader',
|
|
131
|
-
cellClass: 'tCol',
|
|
132
|
-
cellRenderer: 'cellSelectComponent',
|
|
133
|
-
cellRendererParams: {
|
|
134
|
-
toggleItem: (item) => {
|
|
135
|
-
item.selected = !item.selected;
|
|
136
|
-
this.svc.gridObj.api.zitiAllToggled = _.every(this.rowData, { selected: true });
|
|
137
|
-
_.defer(() => {
|
|
138
|
-
this.svc.gridObj.api.refreshCells({ force: true });
|
|
139
|
-
});
|
|
140
|
-
this.actionRequested.emit({ action: 'toggleItem', item: item });
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
headerComponent: TableColumnSelectComponent,
|
|
144
|
-
headerComponentParams: {
|
|
145
|
-
toggleAll: (selected) => {
|
|
146
|
-
if (!this.svc.gridObj) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
_.forEach(this.rowData, (row) => {
|
|
150
|
-
row.selected = selected;
|
|
151
|
-
});
|
|
152
|
-
this.actionRequested.emit({ action: 'toggleAll' });
|
|
153
|
-
_.defer(() => {
|
|
154
|
-
this.svc.gridObj.api.refreshCells({ force: true });
|
|
155
|
-
});
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
};
|
|
159
|
-
this.resizeGridColumnsDebounced = _.debounce(this.svc.resizeGridColumns.bind(this.svc), 20, { leading: true });
|
|
160
|
-
this._refreshCellsDebounced = _.debounce(this.svc.refreshCells.bind(this.svc), 50);
|
|
161
|
-
this._onColumnsResizedDebounced = _.debounce(this.svc.onColumnsResized.bind(this.svc), 400);
|
|
162
|
-
this._saveColumnStateDebounced = _.debounce(this.svc.saveColumnState.bind(this.svc), 400);
|
|
163
|
-
}
|
|
164
|
-
hideMenuItem(menuItem, selectedItem) {
|
|
165
|
-
if (_.isFunction(menuItem.hidden)) {
|
|
166
|
-
return menuItem.hidden(selectedItem);
|
|
167
|
-
}
|
|
168
|
-
else if (_.isBoolean(menuItem.hidden)) {
|
|
169
|
-
return menuItem.hidden;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
return !selectedItem.actionList.includes(menuItem.action);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
set columnDefinitions(value) {
|
|
176
|
-
this._columnDefinitions = value;
|
|
177
|
-
}
|
|
178
|
-
get showFilterBar() {
|
|
179
|
-
return this._view !== 'upload' && this._view !== 'process';
|
|
180
|
-
}
|
|
181
|
-
set refreshCount(value) {
|
|
182
|
-
if (!this.svc.gridObj) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
_.defer(() => {
|
|
186
|
-
this.svc.gridObj.api.redrawRows();
|
|
187
|
-
this.svc.gridObj.api.refreshCells({ force: true });
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
get showTable() {
|
|
191
|
-
const _showTable = this.isLoading || this.filterApplied || this.rowData?.length > 0;
|
|
192
|
-
if (_showTable && !this.resizeHandlerInit) {
|
|
193
|
-
this._initGridResizeHandler();
|
|
194
|
-
}
|
|
195
|
-
return _showTable;
|
|
196
|
-
}
|
|
197
|
-
ngOnInit() {
|
|
198
|
-
this.frameworkComponents = {
|
|
199
|
-
cellSelectComponent: TableCellSelectComponent,
|
|
200
|
-
cellMenuComponent: TableCellMenuComponent,
|
|
201
|
-
cellTokenComponent: TableCellTokenComponent,
|
|
202
|
-
headerCellSelectComponent: TableColumnSelectComponent,
|
|
203
|
-
headerHeaderMenuComponent: TableColumnMenuComponent,
|
|
204
|
-
headerDefaultComponent: TableColumnDefaultComponent,
|
|
205
|
-
};
|
|
206
|
-
this.autoGroupColumnDef = {
|
|
207
|
-
field: 'processTree',
|
|
208
|
-
headerName: 'Process Name',
|
|
209
|
-
cellRenderer: 'cellResourceStatusComponent',
|
|
210
|
-
resizable: true,
|
|
211
|
-
cellRendererParams: { resourceType: 'process-execution' },
|
|
212
|
-
headerComponentFramework: TableColumnDefaultComponent,
|
|
213
|
-
};
|
|
214
|
-
if (this._columnDefinitions) {
|
|
215
|
-
this._addColumnEvents();
|
|
216
|
-
this._addDefaultColumnDefs();
|
|
217
|
-
this._storeInitialColumnDefs();
|
|
218
|
-
this._setColumnWidths();
|
|
219
|
-
this._setColumnOrderAndVisibility();
|
|
220
|
-
this._initColumnVisibility();
|
|
221
|
-
this._initGridOptions();
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
ngOnChanges(changes) {
|
|
225
|
-
if (this.svc.gridObj && changes.rowData) {
|
|
226
|
-
this._refreshCellsDebounced(changes.rowData);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
columnVisibilityChanged(event) {
|
|
230
|
-
this.setColumnVisibilityColumn(event?.column, event?.visible);
|
|
231
|
-
}
|
|
232
|
-
openActionMenu(event, item) {
|
|
233
|
-
this.selectedItem = item;
|
|
234
|
-
this.openMenu = true;
|
|
235
|
-
_.delay(() => {
|
|
236
|
-
const height = this.contextMenu?.nativeElement?.offsetHeight || 120;
|
|
237
|
-
const windowOffset = window.innerHeight - event.clientY;
|
|
238
|
-
const menuOffset = windowOffset <= height ? height - windowOffset : 0;
|
|
239
|
-
this.menuLeft = event.clientX - 100;
|
|
240
|
-
this.menuTop = event.clientY + 5 - menuOffset;
|
|
241
|
-
}, 10);
|
|
242
|
-
}
|
|
243
|
-
onGridReady(params) {
|
|
244
|
-
this.gridReady.emit(params);
|
|
245
|
-
}
|
|
246
|
-
resetTableColumns() {
|
|
247
|
-
if (!this.svc.gridObj) {
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
this.mergedColumnDefinitions = _.cloneDeep(this._initialColumnDefs);
|
|
251
|
-
this.svc.gridObj.api.setColumnDefs(this.mergedColumnDefinitions);
|
|
252
|
-
this.svc.resetCookieConfig();
|
|
253
|
-
this.svc.gridObj.api.resetColumnState();
|
|
254
|
-
_.defer(() => {
|
|
255
|
-
this._updateHiddenColumns();
|
|
256
|
-
this.svc.resizeGridColumns();
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
openHeaderActionMenu(event) {
|
|
260
|
-
this.menuLeft = event.clientX - 150;
|
|
261
|
-
this.menuTop = event.clientY + 5;
|
|
262
|
-
_.delay(() => {
|
|
263
|
-
this.openHeaderMenu = true;
|
|
264
|
-
}, 100);
|
|
265
|
-
}
|
|
266
|
-
closeActionMenu() {
|
|
267
|
-
this.selectedItem = {
|
|
268
|
-
actionList: [],
|
|
269
|
-
};
|
|
270
|
-
this.openMenu = false;
|
|
271
|
-
this.openHeaderMenu = false;
|
|
272
|
-
}
|
|
273
|
-
openHeaderFilter(event, options, type, columnId, filterLabel, headerComponentParams) {
|
|
274
|
-
this.filterOptions = options;
|
|
275
|
-
this.menuLeft = event.clientX;
|
|
276
|
-
this.menuTop = event.clientY + 10;
|
|
277
|
-
if (type === 'DATETIME') {
|
|
278
|
-
this.dateTimeColumn = columnId;
|
|
279
|
-
this.dateTimeFilterLabel = filterLabel || 'Date: ';
|
|
280
|
-
_.delay(() => {
|
|
281
|
-
this.showDateTimePicker = true;
|
|
282
|
-
}, 10);
|
|
283
|
-
_.delay(() => {
|
|
284
|
-
this.calendar.toggle();
|
|
285
|
-
}, 100);
|
|
286
|
-
}
|
|
287
|
-
else if (type === 'ATTRIBUTE') {
|
|
288
|
-
this.appendAttributeHash = headerComponentParams.appendAttributeHash !== false;
|
|
289
|
-
this.attributesColumn = columnId;
|
|
290
|
-
this.roleAttributes = headerComponentParams?.getRoleAttributes();
|
|
291
|
-
this.namedAttributes = headerComponentParams?.getNamedAttributes();
|
|
292
|
-
this.selectedRoleAttributes = headerComponentParams.getSelectedRoleAttributes();
|
|
293
|
-
this.selectedNamedAttributes = headerComponentParams.getSelectedNamedAttributes();
|
|
294
|
-
this.dateTimeFilterLabel = filterLabel;
|
|
295
|
-
this.currentHeaderComponentParams = headerComponentParams;
|
|
296
|
-
_.delay(() => {
|
|
297
|
-
this.showTagSelector = true;
|
|
298
|
-
}, 100);
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
_.defer(() => {
|
|
302
|
-
this.showFilterOptions = true;
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
setDateRangeFilter(range) {
|
|
307
|
-
let startDate;
|
|
308
|
-
let label;
|
|
309
|
-
let endDate = moment();
|
|
310
|
-
let closeCalendar = true;
|
|
311
|
-
this.selectedRange = range;
|
|
312
|
-
switch (range) {
|
|
313
|
-
case 'hour':
|
|
314
|
-
startDate = moment().subtract(1, 'hours');
|
|
315
|
-
label = 'Last Hour';
|
|
316
|
-
break;
|
|
317
|
-
case 'day':
|
|
318
|
-
startDate = moment().subtract(24, 'hours');
|
|
319
|
-
label = 'Last Day';
|
|
320
|
-
break;
|
|
321
|
-
case 'week':
|
|
322
|
-
startDate = moment().subtract(7, 'days');
|
|
323
|
-
label = 'Last Week';
|
|
324
|
-
break;
|
|
325
|
-
case 'month':
|
|
326
|
-
startDate = moment().subtract(1, 'month');
|
|
327
|
-
label = 'Last Month';
|
|
328
|
-
break;
|
|
329
|
-
case 'custom':
|
|
330
|
-
if (!this.dateValue) {
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
startDate = moment(this.dateValue[0]);
|
|
334
|
-
if (this.dateValue[1] !== undefined && this.dateValue[1] !== null) {
|
|
335
|
-
endDate = moment(this.dateValue[1]);
|
|
336
|
-
}
|
|
337
|
-
label = 'Custom';
|
|
338
|
-
closeCalendar = false;
|
|
339
|
-
break;
|
|
340
|
-
default:
|
|
341
|
-
startDate = moment().subtract(24, 'hours');
|
|
342
|
-
label = 'Last Day';
|
|
343
|
-
break;
|
|
344
|
-
}
|
|
345
|
-
const startDateRange = encodeURIComponent(startDate.toISOString());
|
|
346
|
-
const endDateRange = encodeURIComponent(endDate.toISOString());
|
|
347
|
-
this.columnFilters[this.dateTimeColumn] = [startDateRange, endDateRange];
|
|
348
|
-
if (closeCalendar) {
|
|
349
|
-
this.calendar.toggle();
|
|
350
|
-
}
|
|
351
|
-
if (range !== 'custom') {
|
|
352
|
-
this.dateValue = [startDate.toDate(), endDate.toDate()];
|
|
353
|
-
}
|
|
354
|
-
const filterObj = {
|
|
355
|
-
columnId: this.dateTimeColumn,
|
|
356
|
-
value: [startDateRange, endDateRange],
|
|
357
|
-
label: label,
|
|
358
|
-
filterName: this.dateTimeFilterLabel,
|
|
359
|
-
type: 'DATETIME'
|
|
360
|
-
};
|
|
361
|
-
this.tableFilterService.updateFilter(filterObj);
|
|
362
|
-
}
|
|
363
|
-
tagSelectionChanged(event, isRole) {
|
|
364
|
-
let label = '';
|
|
365
|
-
let value = '';
|
|
366
|
-
if (isRole) {
|
|
367
|
-
this.selectedNamedAttributes = [];
|
|
368
|
-
if (this.selectedRoleAttributes.length > 1) {
|
|
369
|
-
this.selectedRoleAttributes = [_.last(this.selectedRoleAttributes)];
|
|
370
|
-
}
|
|
371
|
-
this.selectedRoleAttributes.forEach((attr, index) => {
|
|
372
|
-
if (index > 0) {
|
|
373
|
-
label += ', ';
|
|
374
|
-
value += ', ';
|
|
375
|
-
}
|
|
376
|
-
label += ((this.appendAttributeHash ? '#' : '') + attr);
|
|
377
|
-
value += ((this.appendAttributeHash ? '%23' : '') + attr);
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
this.selectedRoleAttributes = [];
|
|
382
|
-
const attrIdMap = this.currentHeaderComponentParams.getNamedAttributesMap();
|
|
383
|
-
if (this.selectedNamedAttributes.length > 1) {
|
|
384
|
-
this.selectedNamedAttributes = [_.last(this.selectedNamedAttributes)];
|
|
385
|
-
}
|
|
386
|
-
this.selectedNamedAttributes.forEach((attr, index) => {
|
|
387
|
-
if (index > 0) {
|
|
388
|
-
label += ', ';
|
|
389
|
-
value += ', ';
|
|
390
|
-
}
|
|
391
|
-
label += '@' + attr;
|
|
392
|
-
value += '%40' + attrIdMap[attr];
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
const filterObj = {
|
|
396
|
-
columnId: this.attributesColumn,
|
|
397
|
-
value: value,
|
|
398
|
-
label: label,
|
|
399
|
-
filterName: this.dateTimeFilterLabel,
|
|
400
|
-
type: 'ATTRIBUTE'
|
|
401
|
-
};
|
|
402
|
-
this.currentHeaderComponentParams.setSelectedRoleAttributes(this.selectedRoleAttributes);
|
|
403
|
-
this.currentHeaderComponentParams.setSelectedNamedAttributes(this.selectedNamedAttributes);
|
|
404
|
-
this.tableFilterService.updateFilter(filterObj);
|
|
405
|
-
}
|
|
406
|
-
applyFilter(event, filter) {
|
|
407
|
-
this.tableFilterService.updateFilter(filter);
|
|
408
|
-
this.closeHeaderFilter(event);
|
|
409
|
-
}
|
|
410
|
-
closeHeaderFilter(event) {
|
|
411
|
-
this.showFilterOptions = false;
|
|
412
|
-
}
|
|
413
|
-
closeDateTime(event) {
|
|
414
|
-
this.showDateTimePicker = false;
|
|
415
|
-
}
|
|
416
|
-
closeTagSelector(event) {
|
|
417
|
-
this.showTagSelector = false;
|
|
418
|
-
}
|
|
419
|
-
openCreate() {
|
|
420
|
-
this.actionRequested.emit({ action: 'create' });
|
|
421
|
-
}
|
|
422
|
-
anySelected() {
|
|
423
|
-
return _.some(this.rowData, { selected: true });
|
|
424
|
-
}
|
|
425
|
-
showDownload() {
|
|
426
|
-
return this.allowDownload && this._view !== 'process';
|
|
427
|
-
}
|
|
428
|
-
_initGridResizeHandler() {
|
|
429
|
-
if (!this.tableContainer) {
|
|
430
|
-
return;
|
|
431
|
-
}
|
|
432
|
-
const observer = new ResizeObserver(entries => {
|
|
433
|
-
this.resizeGridColumnsDebounced();
|
|
434
|
-
});
|
|
435
|
-
observer.observe(this.tableContainer.nativeElement);
|
|
436
|
-
this.resizeHandlerInit = true;
|
|
437
|
-
}
|
|
438
|
-
_initGridOptions() {
|
|
439
|
-
this.gridOptions = {
|
|
440
|
-
pagination: false,
|
|
441
|
-
rowSelection: 'single',
|
|
442
|
-
rowClass: 'ziti-table-row',
|
|
443
|
-
rowHeight: this.rowHeight,
|
|
444
|
-
immutableData: true,
|
|
445
|
-
suppressRowClickSelection: true,
|
|
446
|
-
suppressHorizontalScroll: false,
|
|
447
|
-
stopEditingWhenGridLosesFocus: true,
|
|
448
|
-
suppressPropertyNamesCheck: true,
|
|
449
|
-
animateRows: true,
|
|
450
|
-
defaultColDef: {
|
|
451
|
-
sortable: false,
|
|
452
|
-
filter: false, // set filtering on for all columns
|
|
453
|
-
},
|
|
454
|
-
onRowDragMove: (params) => {
|
|
455
|
-
this.dragStart.emit(params);
|
|
456
|
-
},
|
|
457
|
-
onRowDragLeave: (params) => {
|
|
458
|
-
this.dragLeave.emit(params);
|
|
459
|
-
},
|
|
460
|
-
onRowDragEnd: () => {
|
|
461
|
-
$('.attribute-item').show();
|
|
462
|
-
$('.drag-hover').removeClass('drag-hover');
|
|
463
|
-
$('#ColumnVisibilityHeader').trigger('click');
|
|
464
|
-
$('.new-attribute-target').hide();
|
|
465
|
-
},
|
|
466
|
-
rowClassRules: {
|
|
467
|
-
// row style function
|
|
468
|
-
'row-invalid': function (params) {
|
|
469
|
-
return _.get(params, 'data.invalid');
|
|
470
|
-
},
|
|
471
|
-
'row-copied': function (params) {
|
|
472
|
-
return _.get(params, 'data.copied');
|
|
473
|
-
},
|
|
474
|
-
'row-child-sub-process': function (params) {
|
|
475
|
-
return (params.api.view === 'process' &&
|
|
476
|
-
!_.get(params, 'data.isRoot') &&
|
|
477
|
-
!_.isEmpty(_.get(params, 'data.subprocessId')));
|
|
478
|
-
},
|
|
479
|
-
'row-child': function (params) {
|
|
480
|
-
return ((params.api.view === 'process' || params.api.view === 'user-roles') &&
|
|
481
|
-
!_.get(params, 'data.isRoot') &&
|
|
482
|
-
!_.isEmpty(_.get(params, 'data.parentId')));
|
|
483
|
-
},
|
|
484
|
-
'row-child-second': function (params) {
|
|
485
|
-
return (params.api.view === 'process' &&
|
|
486
|
-
!_.get(params, 'data.isRoot') &&
|
|
487
|
-
_.get(params, 'data.isParallel'));
|
|
488
|
-
},
|
|
489
|
-
'row-child-even': function (params) {
|
|
490
|
-
return ((params.api.view === 'process' || params.api.view === 'user-roles') &&
|
|
491
|
-
_.get(params, 'data.parentIndex') % 2 > 0);
|
|
492
|
-
},
|
|
493
|
-
'row-child-odd': function (params) {
|
|
494
|
-
return ((params.api.view === 'process' || params.api.view === 'user-roles') &&
|
|
495
|
-
_.get(params, 'data.parentIndex') % 2 === 0);
|
|
496
|
-
},
|
|
497
|
-
'row-child-warn': function (params) {
|
|
498
|
-
return params.api.view === 'process' && _.get(params, 'data.state') === 'WARNING';
|
|
499
|
-
},
|
|
500
|
-
'row-child-header': function (params) {
|
|
501
|
-
return params.api.view === 'process' && _.get(params, 'data.rowType') === 'step-header';
|
|
502
|
-
},
|
|
503
|
-
'row-role-item': function (params) {
|
|
504
|
-
return _.get(params, 'data.roleItem');
|
|
505
|
-
},
|
|
506
|
-
},
|
|
507
|
-
getRowHeight: (params) => {
|
|
508
|
-
return this.remToPx(3.125);
|
|
509
|
-
},
|
|
510
|
-
onCellEditingStopped: (eventObj) => {
|
|
511
|
-
if (!this.validateService) {
|
|
512
|
-
return;
|
|
513
|
-
}
|
|
514
|
-
const field = _.get(eventObj, 'colDef.field', '');
|
|
515
|
-
if (_.includes(field.toLowerCase(), 'attribute')) {
|
|
516
|
-
const newVal = eventObj.newValue.split(',');
|
|
517
|
-
_.set(eventObj, `data.${field}`, newVal);
|
|
518
|
-
}
|
|
519
|
-
else {
|
|
520
|
-
_.set(eventObj, `data.${field}`, eventObj.newValue);
|
|
521
|
-
}
|
|
522
|
-
this._validateTable(eventObj);
|
|
523
|
-
},
|
|
524
|
-
getRowNodeId: (data) => data.name,
|
|
525
|
-
onBodyScroll: (scroller) => {
|
|
526
|
-
this._handleTableScroll(scroller);
|
|
527
|
-
},
|
|
528
|
-
onGridReady: (grid) => {
|
|
529
|
-
grid.api.zitiAllToggled = false;
|
|
530
|
-
grid.api.zitiHideColumn = this.setColumnVisibilityColumn.bind(this);
|
|
531
|
-
grid.api.validateTable = this._validateTable.bind(this);
|
|
532
|
-
grid.api.view = this._view;
|
|
533
|
-
grid.api.zitiRowData = this.rowData;
|
|
534
|
-
grid.api.openHeaderFilter = this.openHeaderFilter.bind(this);
|
|
535
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
536
|
-
grid.api.rowsToggled = this.rowsToggled ? this.rowsToggled.bind(this) : () => { };
|
|
537
|
-
if (this.serverSideDataSource) {
|
|
538
|
-
grid.api.setServerSideDatasource(this.serverSideDataSource);
|
|
539
|
-
}
|
|
540
|
-
this.svc.gridObj = grid;
|
|
541
|
-
_.defer(this._applyColumnState.bind(this));
|
|
542
|
-
},
|
|
543
|
-
onColumnVisible: (eventObj) => {
|
|
544
|
-
if (!eventObj.column) {
|
|
545
|
-
return;
|
|
546
|
-
}
|
|
547
|
-
this.updateColumnVisibility(eventObj.column.colDef.colId, eventObj.visible);
|
|
548
|
-
if (eventObj.visible) {
|
|
549
|
-
this.svc.gridObj.api.moveColumns([eventObj.column.colDef.colId], this.mergedColumnDefinitions.length - 1);
|
|
550
|
-
_.defer(() => {
|
|
551
|
-
this.svc.gridObj.api.ensureColumnVisible(eventObj.column.colDef.colId);
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
|
-
this._updateGridColumns();
|
|
555
|
-
this.svc.saveColumnState();
|
|
556
|
-
},
|
|
557
|
-
onFirstDataRendered: (eventObj) => {
|
|
558
|
-
this.svc.resizeGridColumns();
|
|
559
|
-
this.gridRendered = true;
|
|
560
|
-
},
|
|
561
|
-
onColumnPinned: (eventObj) => {
|
|
562
|
-
if (!eventObj.column) {
|
|
563
|
-
return;
|
|
564
|
-
}
|
|
565
|
-
const colId = eventObj.column.colDef.colId;
|
|
566
|
-
const pinned = eventObj.pinned === 'left';
|
|
567
|
-
this.mergedColumnDefinitions = _.map(this.mergedColumnDefinitions, (colDef) => {
|
|
568
|
-
if (colDef.colId === colId) {
|
|
569
|
-
colDef.lockPosition = pinned;
|
|
570
|
-
colDef.suppressMovable = pinned;
|
|
571
|
-
}
|
|
572
|
-
return colDef;
|
|
573
|
-
});
|
|
574
|
-
this._updateGridColumns();
|
|
575
|
-
this.svc.resizeGridColumns();
|
|
576
|
-
this.svc.saveColumnState();
|
|
577
|
-
},
|
|
578
|
-
onColumnResized: (eventObj) => {
|
|
579
|
-
if (!eventObj.column || eventObj.source === 'sizeColumnsToFit') {
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
this._onColumnsResizedDebounced(eventObj.column);
|
|
583
|
-
},
|
|
584
|
-
onColumnMoved: (eventObj) => {
|
|
585
|
-
this._saveColumnStateDebounced();
|
|
586
|
-
},
|
|
587
|
-
};
|
|
588
|
-
}
|
|
589
|
-
_validateTable(eventObj) {
|
|
590
|
-
this.rowData[eventObj.rowIndex] = eventObj.data;
|
|
591
|
-
_.delay(() => {
|
|
592
|
-
this.validateService(this.rowData);
|
|
593
|
-
_.delay(() => {
|
|
594
|
-
this.svc.gridObj.api.refreshCells({ force: true });
|
|
595
|
-
this.svc.gridObj.api.redrawRows();
|
|
596
|
-
}, 50);
|
|
597
|
-
}, 50);
|
|
598
|
-
}
|
|
599
|
-
_applyColumnState() {
|
|
600
|
-
const tableStateCookie = localStorage.getItem(`ziti_${this.svc.tableId}_table_state`);
|
|
601
|
-
const tableState = JSON.parse(tableStateCookie);
|
|
602
|
-
if (tableState) {
|
|
603
|
-
this.svc.gridObj.api.applyColumnState({ state: tableState });
|
|
604
|
-
this._updateHiddenColumns();
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
_addColumnEvents() {
|
|
608
|
-
this._columnDefinitions = _.map(this._columnDefinitions, (colDef) => {
|
|
609
|
-
colDef.pinColumn = this.svc.pinColumn.bind(this.svc);
|
|
610
|
-
colDef.cellClass = this._getCellStyle.bind(this);
|
|
611
|
-
return colDef;
|
|
612
|
-
});
|
|
613
|
-
}
|
|
614
|
-
_getCellStyle(params) {
|
|
615
|
-
if (!this.rowValidation || this.rowValidation.length <= 0) {
|
|
616
|
-
return '';
|
|
617
|
-
}
|
|
618
|
-
const validationResult = this.rowValidation[params.node.rowIndex];
|
|
619
|
-
if (!validationResult || !validationResult.errors) {
|
|
620
|
-
return '';
|
|
621
|
-
}
|
|
622
|
-
const field = _.get(params, 'colDef.field', '');
|
|
623
|
-
if (validationResult.errors[field]) {
|
|
624
|
-
return 'ziti-table-cell-error';
|
|
625
|
-
}
|
|
626
|
-
return '';
|
|
627
|
-
}
|
|
628
|
-
updateColumnVisibility(colId, visible) {
|
|
629
|
-
this._columnDefinitions = _.map(this._columnDefinitions, (colDef) => {
|
|
630
|
-
if (colDef.colId === colId) {
|
|
631
|
-
colDef.hide = !visible;
|
|
632
|
-
}
|
|
633
|
-
return colDef;
|
|
634
|
-
});
|
|
635
|
-
for (const colDef of this.mergedColumnDefinitions) {
|
|
636
|
-
if (colDef.colId === colId) {
|
|
637
|
-
colDef.hide = !visible;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
this._updateHiddenColumns();
|
|
641
|
-
this.svc.resizeGridColumns();
|
|
642
|
-
}
|
|
643
|
-
updateEntityTypeLabel() {
|
|
644
|
-
switch (this.svc.tableId) {
|
|
645
|
-
case 'api-sessions':
|
|
646
|
-
this.entityTypeLabel = 'API Sessions';
|
|
647
|
-
break;
|
|
648
|
-
case 'auth-policies':
|
|
649
|
-
this.entityTypeLabel = 'Auth Policies';
|
|
650
|
-
break;
|
|
651
|
-
case 'certificate-authorities':
|
|
652
|
-
this.entityTypeLabel = 'Certificate Authorities';
|
|
653
|
-
break;
|
|
654
|
-
case 'ext-jwt-signers':
|
|
655
|
-
this.entityTypeLabel = 'External JWT Signers';
|
|
656
|
-
break;
|
|
657
|
-
case 'identities':
|
|
658
|
-
this.entityTypeLabel = 'Identities';
|
|
659
|
-
break;
|
|
660
|
-
case 'posture-checks':
|
|
661
|
-
this.entityTypeLabel = 'Posture Checks';
|
|
662
|
-
break;
|
|
663
|
-
case 'edge-routers':
|
|
664
|
-
this.entityTypeLabel = 'Edge Routers';
|
|
665
|
-
break;
|
|
666
|
-
case 'services':
|
|
667
|
-
this.entityTypeLabel = 'Services';
|
|
668
|
-
break;
|
|
669
|
-
case 'configurations':
|
|
670
|
-
this.entityTypeLabel = 'Configs';
|
|
671
|
-
break;
|
|
672
|
-
case 'config-types':
|
|
673
|
-
this.entityTypeLabel = 'Config Types';
|
|
674
|
-
break;
|
|
675
|
-
case 'service-policies':
|
|
676
|
-
this.entityTypeLabel = 'Service Policies';
|
|
677
|
-
break;
|
|
678
|
-
case 'edge-router-policies':
|
|
679
|
-
this.entityTypeLabel = 'Edge Router Policies';
|
|
680
|
-
break;
|
|
681
|
-
case 'service-edge-router-policies':
|
|
682
|
-
this.entityTypeLabel = 'Service Edge Router Policies';
|
|
683
|
-
break;
|
|
684
|
-
case 'sessions':
|
|
685
|
-
this.entityTypeLabel = 'Sessions';
|
|
686
|
-
break;
|
|
687
|
-
case 'terminators':
|
|
688
|
-
this.entityTypeLabel = 'Terminators';
|
|
689
|
-
break;
|
|
690
|
-
case 'transit-routers':
|
|
691
|
-
this.entityTypeLabel = 'Transit Routers';
|
|
692
|
-
break;
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
|
-
setColumnVisibilityColumn(column, visible) {
|
|
696
|
-
this.svc.gridObj.api.setColumnsVisible([column.colId], visible);
|
|
697
|
-
this.svc.gridObj.api.refreshHeader();
|
|
698
|
-
_.defer(() => {
|
|
699
|
-
this.updateColumnVisibility(column.colId, visible);
|
|
700
|
-
});
|
|
701
|
-
}
|
|
702
|
-
_updateHiddenColumns() {
|
|
703
|
-
const gridColumnDefs = this.svc.gridObj?.api?.columnModel?.gridColumns;
|
|
704
|
-
const visibleGridColumns = gridColumnDefs.filter((col) => col.visible);
|
|
705
|
-
const hiddenGridColumns = gridColumnDefs.filter((col) => !col.visible);
|
|
706
|
-
this.visibleColumns = _.map(visibleGridColumns, 'colDef');
|
|
707
|
-
this.visibleColumnIds = _.map(this.visibleColumns, 'field');
|
|
708
|
-
this.hiddenColumns = _.map(hiddenGridColumns, 'colDef');
|
|
709
|
-
this.hiddenColumnIds = _.map(this.hiddenColumns, 'field');
|
|
710
|
-
}
|
|
711
|
-
addHeaderMenu(columnDefs = []) {
|
|
712
|
-
columnDefs.forEach((columnDef) => {
|
|
713
|
-
if (columnDef.useHeaderMenu) {
|
|
714
|
-
columnDef.headerComponentParams = {
|
|
715
|
-
openHeaderMenu: ($event) => {
|
|
716
|
-
this.openHeaderActionMenu($event);
|
|
717
|
-
},
|
|
718
|
-
closeMenu: (event) => {
|
|
719
|
-
this.closeActionMenu();
|
|
720
|
-
},
|
|
721
|
-
};
|
|
722
|
-
}
|
|
723
|
-
});
|
|
724
|
-
}
|
|
725
|
-
_addDefaultColumnDefs() {
|
|
726
|
-
this.addHeaderMenu(this._columnDefinitions);
|
|
727
|
-
this.mergedColumnDefinitions = _.cloneDeep(this._columnDefinitions);
|
|
728
|
-
if (this._view === 'process') {
|
|
729
|
-
const cellParams = _.cloneDeep(this.menuColumnDefinition.cellRendererParams);
|
|
730
|
-
this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].cellRendererParams = _.merge(this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].cellRendererParams, cellParams);
|
|
731
|
-
this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].headerComponentParams =
|
|
732
|
-
this.menuColumnDefinition.headerComponentParams;
|
|
733
|
-
}
|
|
734
|
-
else if ((this.options.noSelect && this.options.noMenu)) {
|
|
735
|
-
// Don't add any additional columns
|
|
736
|
-
}
|
|
737
|
-
else if ((this.options.noSelect && !this.options.noMenu)) {
|
|
738
|
-
this.mergedColumnDefinitions.push(this.menuColumnDefinition);
|
|
739
|
-
}
|
|
740
|
-
else if (!this.options.noSelect && this.options.noMenu) {
|
|
741
|
-
this.mergedColumnDefinitions.push(this.selectColumnDefinition);
|
|
742
|
-
}
|
|
743
|
-
else if (this._view !== 'upload') {
|
|
744
|
-
this.mergedColumnDefinitions.splice(0, 0, this.selectColumnDefinition);
|
|
745
|
-
this.mergedColumnDefinitions.push(this.menuColumnDefinition);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
_storeInitialColumnDefs() {
|
|
749
|
-
this._initialColumnDefs = _.cloneDeep(this.mergedColumnDefinitions);
|
|
750
|
-
}
|
|
751
|
-
_initColumnVisibility() {
|
|
752
|
-
this.visibleColumns = this._columnDefinitions.filter((col) => !col.hide);
|
|
753
|
-
this.hiddenColumns = this._columnDefinitions.filter((col) => col.hide);
|
|
754
|
-
this.visibleColumnIds = _.map(this.visibleColumns, 'field');
|
|
755
|
-
}
|
|
756
|
-
_updateGridColumns() {
|
|
757
|
-
this._setColumnWidths();
|
|
758
|
-
this.svc.gridObj.api.setColumnDefs(this.mergedColumnDefinitions);
|
|
759
|
-
this.svc.gridObj.api.refreshHeader();
|
|
760
|
-
}
|
|
761
|
-
_setColumnWidths() {
|
|
762
|
-
if (this._view === 'upload' || this._view === 'process') {
|
|
763
|
-
return;
|
|
764
|
-
}
|
|
765
|
-
const colWidthsCookie = localStorage.getItem(`ziti_${this.svc.tableId}_column_widths`);
|
|
766
|
-
if (!_.isEmpty(colWidthsCookie)) {
|
|
767
|
-
const colWidths = JSON.parse(colWidthsCookie);
|
|
768
|
-
_.forEach(colWidths, (colWidth, colId) => {
|
|
769
|
-
_.forEach(this.mergedColumnDefinitions, (colDef) => {
|
|
770
|
-
if (colDef.colId === colId) {
|
|
771
|
-
colDef.width = colWidth;
|
|
772
|
-
colDef.suppressSizeToFit = true;
|
|
773
|
-
}
|
|
774
|
-
});
|
|
775
|
-
});
|
|
776
|
-
}
|
|
777
|
-
}
|
|
778
|
-
_setColumnOrderAndVisibility() {
|
|
779
|
-
if (this._view === 'upload' || this._view === 'process') {
|
|
780
|
-
return;
|
|
781
|
-
}
|
|
782
|
-
const tableStateCookie = localStorage.getItem(`ziti_${this.svc.tableId}_table_state`);
|
|
783
|
-
if (!_.isEmpty(tableStateCookie) || typeof tableStateCookie === 'undefined') {
|
|
784
|
-
const colStates = JSON.parse(tableStateCookie);
|
|
785
|
-
const columnIndexes = [];
|
|
786
|
-
_.forEach(colStates, (colState) => {
|
|
787
|
-
_.forEach(this.mergedColumnDefinitions, (colDef) => {
|
|
788
|
-
if (colDef.colId === colState.colId) {
|
|
789
|
-
columnIndexes.push(colDef);
|
|
790
|
-
colDef.hide = colState.hide;
|
|
791
|
-
}
|
|
792
|
-
});
|
|
793
|
-
});
|
|
794
|
-
_.forEach(this.mergedColumnDefinitions, (colDef) => {
|
|
795
|
-
let colFound = false;
|
|
796
|
-
_.forEach(columnIndexes, (colIndex) => {
|
|
797
|
-
if (colDef.colId === colIndex.colId) {
|
|
798
|
-
colFound = true;
|
|
799
|
-
}
|
|
800
|
-
});
|
|
801
|
-
if (!colFound) {
|
|
802
|
-
columnIndexes.push(colDef);
|
|
803
|
-
}
|
|
804
|
-
});
|
|
805
|
-
this.mergedColumnDefinitions = columnIndexes;
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
_handleTableScroll(scroller) {
|
|
809
|
-
const scrollWidth = $('.ag-center-cols-container').width();
|
|
810
|
-
const viewWidth = $('.ag-center-cols-viewport').width();
|
|
811
|
-
const scrollableWidth = scrollWidth - viewWidth;
|
|
812
|
-
if (scroller.left > 0) {
|
|
813
|
-
$('.ag-pinned-left-cols-container').addClass('ag-pinned-left-shadow');
|
|
814
|
-
}
|
|
815
|
-
else {
|
|
816
|
-
$('.ag-pinned-left-cols-container').removeClass('ag-pinned-left-shadow');
|
|
817
|
-
}
|
|
818
|
-
if (scroller.left < scrollableWidth - 2) {
|
|
819
|
-
$('.ag-pinned-right-cols-container').addClass('ag-pinned-right-shadow');
|
|
820
|
-
}
|
|
821
|
-
else {
|
|
822
|
-
$('.ag-pinned-right-cols-container').removeClass('ag-pinned-right-shadow');
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
remToPx(remValue) {
|
|
826
|
-
const rootFontSize = parseFloat(window.getComputedStyle(document.documentElement).fontSize);
|
|
827
|
-
return remValue * rootFontSize;
|
|
828
|
-
}
|
|
829
|
-
;
|
|
830
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i1.DataTableService }, { token: i2.DataTableFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
831
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, selector: "lib-data-table", inputs: { rowData: "rowData", expandRowData: "expandRowData", collapseRowData: "collapseRowData", rowValidation: "rowValidation", isTimeSearchAvailable: "isTimeSearchAvailable", isLoading: "isLoading", tableId: "tableId", options: "options", validateService: "validateService", rowsToggled: "rowsToggled", tableRefreshCount: "tableRefreshCount", view: "view", serverSideDataSource: "serverSideDataSource", allowDownload: "allowDownload", startCount: "startCount", endCount: "endCount", totalCount: "totalCount", emptyMsg: "emptyMsg", filterApplied: "filterApplied", menuItems: "menuItems", headerActions: "headerActions", noItemsClass: "noItemsClass", entityTypeName: "entityTypeName", showNoItemsAdd: "showNoItemsAdd", currentPage: "currentPage", noItemsImage: "noItemsImage", rowHeight: "rowHeight", filterName: "filterName", filterColumn: "filterColumn", columnDefinitions: "columnDefinitions", refreshCount: "refreshCount" }, outputs: { actionRequested: "actionRequested", gridReady: "gridReady", dragStart: "dragStart", dragLeave: "dragLeave", pageChanged: "pageChanged" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }, { propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #tableContainer class=\"data-table-container\" *ngIf=\"showTable;else nodata\">\n <lib-table-filter-bar\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [filterName]=\"filterName\"\n [filterColumn]=\"filterColumn\"\n ></lib-table-filter-bar>\n <lib-table-hidden-columns-bar\n *ngIf=\"gridRendered && showFilterBar\"\n [hiddenColumns]=\"hiddenColumns\"\n (columnVisibilityChanged)=\"columnVisibilityChanged($event)\"\n ></lib-table-hidden-columns-bar>\n <div (resize)=\"resizeGridColumnsDebounced($event)\" class=\"ziti-ag-grid\" id=\"ItemTable\">\n <ag-grid-angular\n #nfAgGrid\n [columnDefs]=\"mergedColumnDefinitions\"\n [components]=\"frameworkComponents\"\n [getDataPath]=\"svc.getDataPath\"\n [getRowId]=\"svc.getRowNodeId\"\n [gridOptions]=\"gridOptions\"\n [modules]=\"gridModules\"\n [rowData]=\"rowData\"\n [tooltipHideDelay]=\"20000\"\n [tooltipShowDelay]=\"0\"\n (gridReady)=\"onGridReady($event)\"\n class=\"ziti-ag-grid-table ag-theme-alpine rows\"\n id=\"ItemGrid\"\n >\n </ag-grid-angular>\n </div>\n <div\n [ngClass]=\"{ open: openHeaderMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderActionMenu\"\n >\n <div (click)=\"resetTableColumns()\" class=\"tActionRow\" id=\"ResetTableButton\">Restore Default Table</div>\n <div\n *ngFor=\"let headerAction of headerActions\"\n (click)=\"actionRequested.emit({ action: headerAction.action })\"\n class=\"tActionRow\"\n id=\"ResetTableButton\"\n >\n {{headerAction.name || headerAction.label}}\n </div>\n </div>\n <div\n [ngClass]=\"{ open: openMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu item-menu\"\n id=\"RowActionMenu\"\n #contextMenu\n >\n <div\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"actionRequested.emit({ action: menuItem.action, item: selectedItem })\"\n [ngClass]=\"{'menu-item-hidden': hideMenuItem(menuItem, selectedItem) }\"\n class=\"tActionRow\"\n id=\"TableActionButton_{{menuItem.action}}\"\n >\n {{menuItem.name || menuItem.label}}\n </div>\n </div>\n <div\n (clickOutside)=\"closeHeaderFilter($event)\"\n [ngClass]=\"{ open: showFilterOptions }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderFilterOptions\"\n >\n <div (click)=\"applyFilter($event, filter)\" *ngFor=\"let filter of filterOptions\" class=\"tActionRow\" [ngClass]=\"{'has-icon': filter.icon}\" [id]=\"filter.columnId\">\n <span *ngIf=\"filter.bubbleClass\" [ngClass]=\"filter.bubbleClass\" class=\"bubble\">\n <svg *ngIf=\"filter.showLoader\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle\n class=\"path\"\n cx=\"50\"\n cy=\"50\"\n fill=\"none\"\n r=\"20\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3\"\n ></circle>\n </svg>\n </span>\n <span *ngIf=\"filter.icon\" class=\"os-icon {{filter.icon}}\"></span>\n {{ filter.label }}\n </div>\n </div>\n</div>\n\n<div *ngIf=\"showDateTimePicker\" class=\"date-time-container data-table-date-time\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeDateTime($event)\">\n <p-calendar\n [(ngModel)]=\"dateValue\"\n (onSelect)=\"setDateRangeFilter('custom')\"\n dateFormat=\"mm/dd/yy\"\n selectionMode=\"range\"\n placeholder=\"Select Time Range\"\n #calendar\n >\n <ng-template pTemplate=\"header\">\n <div class=\"filter-button-container\">\n <div\n class=\"toggleButton\"\n [ngClass]=\"{selected: selectedRange === 'hour'}\"\n (click)=\"setDateRangeFilter('hour')\"\n >\n Last Hour\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('day')\"\n [ngClass]=\"{selected: selectedRange === 'day'}\"\n >\n Last Day\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('week')\"\n [ngClass]=\"{selected: selectedRange === 'week'}\"\n >\n Last Week\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('month')\"\n [ngClass]=\"{selected: selectedRange === 'month'}\"\n >\n Last Month\n </div>\n </div>\n </ng-template>\n </p-calendar>\n</div>\n\n<div *ngIf=\"showTagSelector\" class=\"tag-selector-container data-table-tag-selector\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeTagSelector($event)\">\n <div class=\"buttonBall icon-close\" (click)=\"closeTagSelector($event)\"></div>\n <div class=\"tag-selector-label\">\n <span>Select an Attribute:</span>\n </div>\n <lib-tag-selector\n [focusOnInit]=\"true\"\n [availableRoleAttributes]=\"roleAttributes\"\n [availableNamedAttributes]=\"namedAttributes\"\n [(selectedRoleAttributes)]=\"selectedRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedNamedAttributes\"\n (selectedNamedAttributesChange)=\"tagSelectionChanged($event, false)\"\n (selectedRoleAttributesChange)=\"tagSelectionChanged($event, true)\"\n ></lib-tag-selector>\n</div>\n<ng-template #nodata>\n <lib-no-items\n (clickEmit)=\"openCreate()\"\n [image]=\"noItemsImage\"\n [isEmpty]=\"!rowData || rowData.length === 0\"\n [typeName]=\"this.entityTypeLabel\"\n [hasAdd]=\"showNoItemsAdd\"\n ></lib-no-items>\n</ng-template>\n", styles: [".data-table-container{display:flex;position:relative;height:calc(100% - 5.625rem);width:100%;flex-direction:column}.data-table-container .ziti-ag-grid{position:relative;width:100%;height:100%;display:flex;clear:both;align-items:center;justify-content:center}.data-table-container .ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.data-table-container .tMenu.action-menu.header-menu,.data-table-container .tMenu.action-menu.item-menu{position:fixed;height:unset;width:12.5rem;transition-property:opacity}.data-table-container .tMenu.action-menu.header-menu .tActionRow,.data-table-container .tMenu.action-menu.item-menu .tActionRow{display:flex;color:var(--offWhite_ALWAYS)}.data-table-container .tMenu.action-menu.header-menu .tActionRow.menu-item-hidden,.data-table-container .tMenu.action-menu.item-menu .tActionRow.menu-item-hidden{display:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-vertical-scroll-viewport{background-color:var(--formBackground)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row{border:none;background-color:var(--formBackground);color:var(--text)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-invalid{background-color:var(--invalid)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-invalid.row-copied{background-color:var(--copiedRow)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-copied{background-color:var(--copiedRow)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-selected{background-color:var(--formBackground)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-selected.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd{background:var(--white)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-selected{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-selected.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row .dots{right:1.5625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-role-item .tCol{font-size:.8125rem;height:2.1875rem;line-height:2.1875rem;font-weight:600}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell.ag-cell-value.ziti-table-cell-error{outline:.125rem var(--red) solid;outline-offset:-.1875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell.ag-cell-value.ag-cell-inline-editing{width:100%;height:100%;padding-left:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell:focus:after{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-icon-pin{margin-top:.9375rem;transform:rotate(-45deg)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-cell-text{cursor:default}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-col-pin-button:hover .ag-icon-pin{animation-name:unpinColumn;animation-duration:.5s;animation-delay:.1s;animation-iteration-count:1;animation-fill-mode:forwards}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-col-pin-button:hover .ag-icon-pin{animation-name:pinColumn;animation-duration:.6s;animation-delay:.1s;animation-iteration-count:1;animation-fill-mode:forwards}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status{margin-left:2.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status .bubble{height:.6875rem;width:.6875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status .bubble .circular{margin-left:2.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-eye-slash{margin-top:.75rem;margin-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-pin{margin-top:.75rem}@keyframes pinColumn{0%{transform:rotate(0);margin-top:.75rem}15%{transform:rotate(-10deg);margin-top:.75rem}30%{transform:rotate(-20deg);margin-top:.75rem}45%{transform:rotate(-30deg);margin-top:.8125rem}60%{transform:rotate(-40deg);margin-top:.875rem}75%{transform:rotate(-45deg);margin-top:.9375rem}to{transform:rotate(-45deg);margin-top:1rem}}@keyframes unpinColumn{0%{transform:rotate(-45deg);margin-top:.9375rem}15%{transform:rotate(-45deg);margin-top:.875rem}30%{transform:rotate(-45deg);margin-top:.8125rem}45%{transform:rotate(-40deg);margin-top:.75rem}60%{transform:rotate(-30deg);margin-top:.6875rem}75%{transform:rotate(-20deg);margin-top:.625rem}90%{transform:rotate(-10deg);margin-top:.5625rem}to{transform:rotate(0);margin-top:.5rem}}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .selectHeader{background-image:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .menuHeader{background-image:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .ag-header-row:after{height:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-horizontal-left-spacer{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-horizontal-right-spacer{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize{margin-top:.125rem;border-left-color:#d4d9e2;border-right-color:#d4d9e2;border-left-width:.0625rem;border-right-width:.0625rem;border-left-style:solid;border-right-style:solid;width:.1875rem;height:.875rem;position:absolute;right:.125rem;top:1.1875rem;cursor:col-resize}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize:after{display:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-text{height:3rem;cursor:move;color:var(--text);line-height:3.4375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-menu{margin-top:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-menu{margin-left:-2.8125rem;z-index:99999999}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell{padding-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-input-field-input{height:100%;margin-right:0;width:100%;box-shadow:0 0 .3125rem 0 var(--primary);border:solid .125rem var(--primary);overflow:visible}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-checkbox-input-wrapper .ag-input-field-input{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-viewport{box-sizing:border-box;border-bottom:.25rem solid var(--primary);background-color:var(--formBackground);padding-left:.25rem;line-height:3.4375rem;position:sticky!important;top:0;z-index:10;transition:all .15s linear;opacity:.97}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container{cursor:default}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container.nf-can-sort{cursor:pointer}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header{background-color:var(--navigation);border-bottom:solid .0625rem;border-bottom-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-icon{color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-pin{font-weight:800;margin-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-menu{font-weight:800}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-eye-slash{font-weight:800;color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize{border-left-color:var(--stroke);border-right-color:var(--stroke);border-left-width:var(--inputBorderWidth);border-right-width:var(--inputBorderWidth);border-left-style:solid;border-right-style:solid;width:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize:hover{border-left-color:var(--icon);border-right-color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-floating-top-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-center-cols-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-floating-bottom-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-horizontal-scroll-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-virtual-list-viewport{background-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-theme-alpine .ag-row{background-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .tSelect{left:1.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-shadow{box-shadow:.5rem 0 .3125rem -.25rem #dddd;z-index:40}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-shadow{box-shadow:-.5rem 0 .3125rem -.25rem #dddd;z-index:40}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-row-column{border-bottom-style:solid;border-bottom-width:.25rem;border-bottom-color:var(--stroke)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .ag-header-row-column{border-bottom-style:solid;border-bottom-width:.25rem;border-bottom-color:var(--stroke)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .dots{right:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell{-webkit-user-select:text;user-select:text}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-viewport .ag-cell{padding-left:1.25rem;text-align:left;line-height:3.0625rem!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .ag-row{border-left:.25rem solid transparent}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .ag-row-hover{border-left:.25rem solid var(--primary)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .tSelect{margin-left:-.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button{margin-top:.3125rem;opacity:0;transition:opacity .2s;height:2.5rem;cursor:pointer}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button.nf-ag-col-pinned,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button.nf-ag-col-pinned,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button.nf-ag-col-pinned{opacity:1}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-filter{color:var(--ag-alpine-active-color, var(--primary))}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button .ag-icon-filter{font-weight:700;margin-top:.8125rem;margin-right:0rem;margin-left:-.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button{position:absolute;margin-top:.625rem!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button{margin-right:1.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-pin-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-filter-button{position:relative;display:block;opacity:1}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-hide-button{margin-right:0rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .tSelectHeader{top:1.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell{padding-left:0rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-sort-descending-icon{margin-top:.9375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .nf-ag-main-col .ag-cell-label-container{margin-left:-.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .nf-ag-main-col .ag-cell-label-container .ag-header-cell-text{padding-left:.1875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ziti-ag-grid .ag-root-wrapper .ag-row.row-child{background-color:#fff;border-bottom:solid var(--stroke) .0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-column-default{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-registration{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-registration .tcol{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-role-item,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-role-item{background-color:var(--shaded);border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-role-item.ag-row-hover,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-role-item.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-second,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-second{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-second.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-second.row-child-header{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-warn,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-warn{background-color:var(--copiedRow)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-header{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-role-item,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-role-item{background-color:var(--table);border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-role-item.ag-row-hover,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-role-item.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-second,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-second{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-second.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-second.row-child-header{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-warn,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-warn{background-color:var(--copiedRow)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-header{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child{border-top:solid var(--stroke) .0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second{border-top:transparent}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second .ag-cell{font-size:.6875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child .bubble{width:.5rem;height:.5625rem;margin-left:.3125rem;margin-bottom:.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child .ag-cell{font-size:.8125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status{margin-left:1.4375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status .circular{height:.75rem;margin-left:1.125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status>span{font-size:.8125rem;margin-left:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status{margin-left:1.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status .circular{margin-left:1.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status>span{font-size:.8125rem;margin-left:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-content{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-grow:1;flex-shrink:0;padding-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-label{padding-left:3.4375rem;margin-left:1.25rem;width:calc(20% + 1.25rem)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-label.step-content{padding-left:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .started-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .finished-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .duration-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .state-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .process-info-container app-resource-status .circular{margin-left:.8125rem;margin-top:-.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-left:-.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status .bubble{margin-left:.125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status .bubble .circular{left:0;top:1rem}.data-table-container ::ng-deep body{overflow-x:auto!important}.data-table-container ::ng-deep body .ag-theme-alpine.ag-dnd-ghost{height:2.1875rem!important;line-height:2.1875rem!important}.data-table-container ::ng-deep body .ag-header-row{box-sizing:border-box;border-bottom:.25rem solid var(--primary);background-color:var(--formBackground);padding-left:.25rem;line-height:3.4375rem;position:sticky!important;top:0;z-index:10;transition:all .15s linear;opacity:.97;color:var(--text)}.data-table-container ::ng-deep body .ag-header-cell-text{position:relative;float:left;color:var(--tableText);font-size:.875rem;font-weight:600;font-family:Open Sans;height:3.4375rem;transition:.5s;white-space:nowrap;color:var(--text)}.data-table-container ::ng-deep body .ag-header-cell-resize:after{display:none}.data-table-container ::ng-deep body .ag-header-cell-menu-button{height:1rem;width:1rem}.data-table-container ::ng-deep body .ag-icon{font-family:agGridAlpine;font-size:1rem;line-height:1rem;font-style:normal;font-weight:800;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.data-table-container ::ng-deep body .ag-icon-menu:before{content:\"\\f11b\"}.data-table-container ::ng-deep body .ag-icon-menu:hover{color:var(--primary)}.data-table-container ::ng-deep body .ag-icon-asc{margin-top:.4375rem;font-weight:800}.data-table-container ::ng-deep body .ag-icon-desc{margin-top:-.4375rem;font-weight:800}.data-table-container ::ng-deep body .tSelectHeader{left:1.3125rem;top:.625rem}.data-table-container ::ng-deep body .cellMenu{overflow:visible}.data-table-container ::ng-deep body .ag-theme-alpine{-webkit-font-smoothing:antialiased;color:var(--tableText)!important;color:var(--ag-foreground-color, var(--tableText))!important;font-family:Open Sans,sans-serif;font-size:.8125rem;line-height:normal}.data-table-container ::ng-deep body .ag-theme-alpine .ag-row{color:var(--tableText)!important;color:var(--ag-foreground-color, var(--tableText))!important}.data-table-container ::ng-deep body .ag-theme-alpine .ag-header-cell,.data-table-container ::ng-deep body .ag-theme-alpine .ag-header-group-cell{padding-left:.3125rem;padding-right:.9375rem}.os-icon{width:1.4375rem;height:1.4375rem;background-size:1.4375rem 1.4375rem;display:inline-flex;margin-right:.5rem;margin-top:.3125rem;margin-bottom:.3125rem}.os-icon.empty{background:transparent}.os-icon.apple{background-image:url(data:image/png;base64,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)}.os-icon.windows{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAApdSURBVHic7dsxbttYGEZRylCfZAfpvYys23uYxuvI7EDTTBdJRCRTj3z3HECdDf+N9V0I1OlyuSwAQMvb6AMAgNcTAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCzqMPAAC+3unj8/uyLD9vvQQAABzQ2sAvy/Lt3u8LAADYoWcHfo0AAIABth74NQIAADYweuDXCAAAeMDeB36NAACAK44+8GsEAABJsw/8GgEAwJTqA79GAABwSAb+OQIAgF0y8NsSAAAMYeDHEgAAbMLA75sAAOAhBv7YBAAAVxn4uQkAgCgD3yYAACZl4LlHAAAclIHnGQIAYKcMPFsSAACDGHhGEgAAGzHw7JkAAHiQgefIBADADQaemQkAIMvAUyYAgGkZeLhNAACHZeDhcQIA2C0DD9sRAMAwBh7GEQDAZgw87JcAAB5m4OG4BABwk4GHeQkACDPw0CUAoO336AOAMd5GHwAAvJ4AAIAgAQAAQZ4BgA2tPWR3+fX+fchhQJ4AgCd4ih44KgEAdxh4YFYCgDQDD1QJAKZm4AGuEwAcmoEHeIwAYNcMPMA2BABDGXiAMQQAmzLwAPskAHiKgQc4JgHAXQYeYE4CIM7AAzQJgMkZeACuEQAHZ+ABeIQA2DkDD8AWBMBgBh6AEQTAxgw8AHskAJ5k4AE4IgGwwsADMKN8ABh4AIqmDwADDwB/OnwAGHgA+Hu7DwADDwBfb3gAGHgAeL3NA8DAA8D+PB0ABh4Ajmc1AAw8AMznbOABoOe8LMvv0UcAAK/1NvoAAOD1BAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAoNPlchl9AwDwYj4BAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAg6Hz6+LyMPgKqLr/eTyP/vv9/6PIJAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQedlWX4sy/Lzzuvb688CALZ0vvx6/3dZln/+f/3h9PH5fREIADCV89oPCAQAmM9qAKwRCABwPE8HwBqBAAD7s3kArBEIAPB6wwNgjUAAgK+3+wBYIxAA4O8dPgDWCAQA+NP0AbBGIABQlA+ANQIBgBkJgCcJBACOSABsTCAAsEcCYDCBAMAIAmDnBAIAWxAABycQAHiEAJicQADgGgEQJxAAmgQAdwkEgDkJAJ4iEACOSQCwKYEAsE8CgKEEAsAYAoBdEwgA2xAAHJpAAHiMAGBqAgHgOgFAmkAAqgQA3CEQgFkJAHjCFwQCwBCny+Uy+gZgkNPHpzcAiHobfQAA8HoCAACCBAAABHkIENp+LL7FAEkeAgRu8jVHmJcAAB4mEOC4BACwGYEA+yUAgGEEAowjAIDdEgiwHQEAHJZAgMcJAGBaAgFuEwBAlkCgTAAA3CAQmJkAAHiQQODIBADARgQCeyYAAAYRCIwkAAB2SiCwJQEAcFACgWcIAIBJCQTuEQAAUQKhTQAAcJVAmJsAAOAhAuHYBAAAmxAI+yYAABhCIIwlAADYJYGwLQEAwCEJhOcIAACmJBDuEwAAJNUDQQAAwBWzB4IAAIAHHD0QBAAAbGDvgSAAAGCA0YEgAABgh7YOBAEAAAf0bCAIAACY0FogCAAACHobfQAA8HoCAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAEDQf5pXFokUyDSTAAAAAElFTkSuQmCC)}.os-icon.linux{background-image:url(data:image/png;base64,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)}.os-icon.android{background-image:url(data:image/png;base64,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)}.os-icon.other{background-image:url(data:image/png;base64,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)}::ng-deep .date-time-container.data-table-date-time{position:fixed;z-index:9999}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-inputtext{height:.0625rem;width:.0625rem;padding:0}::ng-deep .date-time-container.data-table-date-time .filter-button-container{height:3.125rem;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container.data-table-date-time .filter-button-container .toggleButton{padding-left:var(--paddingSmall);padding-right:var(--paddingSmall);text-align:center;background-color:var(--inputBorder);color:var(--tableText);width:unset;height:1.4375rem;line-height:1.4375rem;font-size:.875rem;font-weight:600;position:relative;float:left;cursor:pointer;border-radius:.25rem;margin-right:var(--marginSmall);transition:.3s}::ng-deep .date-time-container.data-table-date-time .filter-button-container .toggleButton:hover{filter:brightness(90%);transition:.3s}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-inputtext{border-top-left-radius:1.25rem;border-bottom-left-radius:1.25rem;text-indent:.3125rem}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-button-icon-only{border-top-right-radius:1.25rem;border-bottom-right-radius:1.25rem}::ng-deep .tag-selector-container.data-table-tag-selector{position:fixed;z-index:9999;width:21.875rem;height:-moz-fit-content;height:fit-content;background:var(--formBackground);display:flex;flex-direction:column;justify-content:flex-end;padding:.625rem;border-radius:var(--inputBorderRadius);box-shadow:var(--shadowLarge);margin-top:-1.25rem;border-color:var(--stroke);border-style:solid}::ng-deep .tag-selector-container.data-table-tag-selector .tag-selector-label{margin-bottom:.3125rem;margin-left:.125rem;font-weight:600;color:var(--menu)}::ng-deep .tag-selector-container.data-table-tag-selector .select2-search__field{height:2.1875rem}::ng-deep .tag-selector-container.data-table-tag-selector .nf-select2-dropdown{width:calc(100% - 1.25rem)!important}::ng-deep .tag-selector-container .icon-close{position:absolute;top:.5rem;right:.5rem;cursor:pointer;color:var(--icon);font-weight:600}::ng-deep .tag-selector-container .icon-close:hover{filter:brightness(50%)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i7.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i8.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i9.FilterBarComponent, selector: "lib-table-filter-bar", inputs: ["filterName", "filterColumn", "startCount", "endCount", "totalCount", "currentPage"] }, { kind: "component", type: i10.HiddenColumnsBarComponent, selector: "lib-table-hidden-columns-bar", inputs: ["hiddenColumns"], outputs: ["columnVisibilityChanged"] }, { kind: "component", type: i11.NoItemsComponent, selector: "lib-no-items", inputs: ["image", "typeName", "isEmpty", "hasAdd", "hiddenResults", "isLoading"], outputs: ["clickEmit", "refresh"] }, { kind: "component", type: i12.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }] }); }
|
|
832
|
-
}
|
|
833
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
834
|
-
type: Component,
|
|
835
|
-
args: [{ selector: 'lib-data-table', template: "<div #tableContainer class=\"data-table-container\" *ngIf=\"showTable;else nodata\">\n <lib-table-filter-bar\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [filterName]=\"filterName\"\n [filterColumn]=\"filterColumn\"\n ></lib-table-filter-bar>\n <lib-table-hidden-columns-bar\n *ngIf=\"gridRendered && showFilterBar\"\n [hiddenColumns]=\"hiddenColumns\"\n (columnVisibilityChanged)=\"columnVisibilityChanged($event)\"\n ></lib-table-hidden-columns-bar>\n <div (resize)=\"resizeGridColumnsDebounced($event)\" class=\"ziti-ag-grid\" id=\"ItemTable\">\n <ag-grid-angular\n #nfAgGrid\n [columnDefs]=\"mergedColumnDefinitions\"\n [components]=\"frameworkComponents\"\n [getDataPath]=\"svc.getDataPath\"\n [getRowId]=\"svc.getRowNodeId\"\n [gridOptions]=\"gridOptions\"\n [modules]=\"gridModules\"\n [rowData]=\"rowData\"\n [tooltipHideDelay]=\"20000\"\n [tooltipShowDelay]=\"0\"\n (gridReady)=\"onGridReady($event)\"\n class=\"ziti-ag-grid-table ag-theme-alpine rows\"\n id=\"ItemGrid\"\n >\n </ag-grid-angular>\n </div>\n <div\n [ngClass]=\"{ open: openHeaderMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderActionMenu\"\n >\n <div (click)=\"resetTableColumns()\" class=\"tActionRow\" id=\"ResetTableButton\">Restore Default Table</div>\n <div\n *ngFor=\"let headerAction of headerActions\"\n (click)=\"actionRequested.emit({ action: headerAction.action })\"\n class=\"tActionRow\"\n id=\"ResetTableButton\"\n >\n {{headerAction.name || headerAction.label}}\n </div>\n </div>\n <div\n [ngClass]=\"{ open: openMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu item-menu\"\n id=\"RowActionMenu\"\n #contextMenu\n >\n <div\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"actionRequested.emit({ action: menuItem.action, item: selectedItem })\"\n [ngClass]=\"{'menu-item-hidden': hideMenuItem(menuItem, selectedItem) }\"\n class=\"tActionRow\"\n id=\"TableActionButton_{{menuItem.action}}\"\n >\n {{menuItem.name || menuItem.label}}\n </div>\n </div>\n <div\n (clickOutside)=\"closeHeaderFilter($event)\"\n [ngClass]=\"{ open: showFilterOptions }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderFilterOptions\"\n >\n <div (click)=\"applyFilter($event, filter)\" *ngFor=\"let filter of filterOptions\" class=\"tActionRow\" [ngClass]=\"{'has-icon': filter.icon}\" [id]=\"filter.columnId\">\n <span *ngIf=\"filter.bubbleClass\" [ngClass]=\"filter.bubbleClass\" class=\"bubble\">\n <svg *ngIf=\"filter.showLoader\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle\n class=\"path\"\n cx=\"50\"\n cy=\"50\"\n fill=\"none\"\n r=\"20\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3\"\n ></circle>\n </svg>\n </span>\n <span *ngIf=\"filter.icon\" class=\"os-icon {{filter.icon}}\"></span>\n {{ filter.label }}\n </div>\n </div>\n</div>\n\n<div *ngIf=\"showDateTimePicker\" class=\"date-time-container data-table-date-time\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeDateTime($event)\">\n <p-calendar\n [(ngModel)]=\"dateValue\"\n (onSelect)=\"setDateRangeFilter('custom')\"\n dateFormat=\"mm/dd/yy\"\n selectionMode=\"range\"\n placeholder=\"Select Time Range\"\n #calendar\n >\n <ng-template pTemplate=\"header\">\n <div class=\"filter-button-container\">\n <div\n class=\"toggleButton\"\n [ngClass]=\"{selected: selectedRange === 'hour'}\"\n (click)=\"setDateRangeFilter('hour')\"\n >\n Last Hour\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('day')\"\n [ngClass]=\"{selected: selectedRange === 'day'}\"\n >\n Last Day\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('week')\"\n [ngClass]=\"{selected: selectedRange === 'week'}\"\n >\n Last Week\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('month')\"\n [ngClass]=\"{selected: selectedRange === 'month'}\"\n >\n Last Month\n </div>\n </div>\n </ng-template>\n </p-calendar>\n</div>\n\n<div *ngIf=\"showTagSelector\" class=\"tag-selector-container data-table-tag-selector\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeTagSelector($event)\">\n <div class=\"buttonBall icon-close\" (click)=\"closeTagSelector($event)\"></div>\n <div class=\"tag-selector-label\">\n <span>Select an Attribute:</span>\n </div>\n <lib-tag-selector\n [focusOnInit]=\"true\"\n [availableRoleAttributes]=\"roleAttributes\"\n [availableNamedAttributes]=\"namedAttributes\"\n [(selectedRoleAttributes)]=\"selectedRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedNamedAttributes\"\n (selectedNamedAttributesChange)=\"tagSelectionChanged($event, false)\"\n (selectedRoleAttributesChange)=\"tagSelectionChanged($event, true)\"\n ></lib-tag-selector>\n</div>\n<ng-template #nodata>\n <lib-no-items\n (clickEmit)=\"openCreate()\"\n [image]=\"noItemsImage\"\n [isEmpty]=\"!rowData || rowData.length === 0\"\n [typeName]=\"this.entityTypeLabel\"\n [hasAdd]=\"showNoItemsAdd\"\n ></lib-no-items>\n</ng-template>\n", styles: [".data-table-container{display:flex;position:relative;height:calc(100% - 5.625rem);width:100%;flex-direction:column}.data-table-container .ziti-ag-grid{position:relative;width:100%;height:100%;display:flex;clear:both;align-items:center;justify-content:center}.data-table-container .ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.data-table-container .tMenu.action-menu.header-menu,.data-table-container .tMenu.action-menu.item-menu{position:fixed;height:unset;width:12.5rem;transition-property:opacity}.data-table-container .tMenu.action-menu.header-menu .tActionRow,.data-table-container .tMenu.action-menu.item-menu .tActionRow{display:flex;color:var(--offWhite_ALWAYS)}.data-table-container .tMenu.action-menu.header-menu .tActionRow.menu-item-hidden,.data-table-container .tMenu.action-menu.item-menu .tActionRow.menu-item-hidden{display:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-vertical-scroll-viewport{background-color:var(--formBackground)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row{border:none;background-color:var(--formBackground);color:var(--text)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-invalid{background-color:var(--invalid)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-invalid.row-copied{background-color:var(--copiedRow)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-copied{background-color:var(--copiedRow)!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-selected{background-color:var(--formBackground)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-selected.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd{background:var(--white)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-selected{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-selected.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row .dots{right:1.5625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.row-role-item .tCol{font-size:.8125rem;height:2.1875rem;line-height:2.1875rem;font-weight:600}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell.ag-cell-value.ziti-table-cell-error{outline:.125rem var(--red) solid;outline-offset:-.1875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell.ag-cell-value.ag-cell-inline-editing{width:100%;height:100%;padding-left:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell:focus:after{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-icon-pin{margin-top:.9375rem;transform:rotate(-45deg)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-cell-text{cursor:default}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-col-pin-button:hover .ag-icon-pin{animation-name:unpinColumn;animation-duration:.5s;animation-delay:.1s;animation-iteration-count:1;animation-fill-mode:forwards}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-col-pin-button:hover .ag-icon-pin{animation-name:pinColumn;animation-duration:.6s;animation-delay:.1s;animation-iteration-count:1;animation-fill-mode:forwards}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status{margin-left:2.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status .bubble{height:.6875rem;width:.6875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row-level-1 app-table-cell-resource-status app-resource-status .bubble .circular{margin-left:2.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-eye-slash{margin-top:.75rem;margin-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-pin{margin-top:.75rem}@keyframes pinColumn{0%{transform:rotate(0);margin-top:.75rem}15%{transform:rotate(-10deg);margin-top:.75rem}30%{transform:rotate(-20deg);margin-top:.75rem}45%{transform:rotate(-30deg);margin-top:.8125rem}60%{transform:rotate(-40deg);margin-top:.875rem}75%{transform:rotate(-45deg);margin-top:.9375rem}to{transform:rotate(-45deg);margin-top:1rem}}@keyframes unpinColumn{0%{transform:rotate(-45deg);margin-top:.9375rem}15%{transform:rotate(-45deg);margin-top:.875rem}30%{transform:rotate(-45deg);margin-top:.8125rem}45%{transform:rotate(-40deg);margin-top:.75rem}60%{transform:rotate(-30deg);margin-top:.6875rem}75%{transform:rotate(-20deg);margin-top:.625rem}90%{transform:rotate(-10deg);margin-top:.5625rem}to{transform:rotate(0);margin-top:.5rem}}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .selectHeader{background-image:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .menuHeader{background-image:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .ag-header-row:after{height:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-horizontal-left-spacer{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-horizontal-right-spacer{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize{margin-top:.125rem;border-left-color:#d4d9e2;border-right-color:#d4d9e2;border-left-width:.0625rem;border-right-width:.0625rem;border-left-style:solid;border-right-style:solid;width:.1875rem;height:.875rem;position:absolute;right:.125rem;top:1.1875rem;cursor:col-resize}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize:after{display:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-text{height:3rem;cursor:move;color:var(--text);line-height:3.4375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-menu{margin-top:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-menu{margin-left:-2.8125rem;z-index:99999999}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell{padding-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-input-field-input{height:100%;margin-right:0;width:100%;box-shadow:0 0 .3125rem 0 var(--primary);border:solid .125rem var(--primary);overflow:visible}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-checkbox-input-wrapper .ag-input-field-input{border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-viewport{box-sizing:border-box;border-bottom:.25rem solid var(--primary);background-color:var(--formBackground);padding-left:.25rem;line-height:3.4375rem;position:sticky!important;top:0;z-index:10;transition:all .15s linear;opacity:.97}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container{cursor:default}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container.nf-can-sort{cursor:pointer}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header{background-color:var(--navigation);border-bottom:solid .0625rem;border-bottom-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-icon{color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-pin{font-weight:800;margin-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-menu{font-weight:800}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-icon-eye-slash{font-weight:800;color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize{border-left-color:var(--stroke);border-right-color:var(--stroke);border-left-width:var(--inputBorderWidth);border-right-width:var(--inputBorderWidth);border-left-style:solid;border-right-style:solid;width:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell-resize:hover{border-left-color:var(--icon);border-right-color:var(--icon)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-floating-top-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-center-cols-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-floating-bottom-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-horizontal-scroll-viewport,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-virtual-list-viewport{background-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-theme-alpine .ag-row{background-color:var(--navigation)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .tSelect{left:1.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-shadow{box-shadow:.5rem 0 .3125rem -.25rem #dddd;z-index:40}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-shadow{box-shadow:-.5rem 0 .3125rem -.25rem #dddd;z-index:40}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-header .ag-header-row-column{border-bottom-style:solid;border-bottom-width:.25rem;border-bottom-color:var(--stroke)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .ag-header-row-column{border-bottom-style:solid;border-bottom-width:.25rem;border-bottom-color:var(--stroke)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-right-header .dots{right:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell{-webkit-user-select:text;user-select:text}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-body-viewport .ag-cell{padding-left:1.25rem;text-align:left;line-height:3.0625rem!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .ag-row{border-left:.25rem solid transparent}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .ag-row-hover{border-left:.25rem solid var(--primary)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-pinned-left-cols-container .tSelect{margin-left:-.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button{margin-top:.3125rem;opacity:0;transition:opacity .2s;height:2.5rem;cursor:pointer}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button.nf-ag-col-pinned,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button.nf-ag-col-pinned,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button.nf-ag-col-pinned{opacity:1}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button:hover .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button:hover .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-eye-slash,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-pin,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button:hover .ag-icon-filter{color:var(--ag-alpine-active-color, var(--primary))}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button .ag-icon-filter,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-filter-button .ag-icon-filter{font-weight:700;margin-top:.8125rem;margin-right:0rem;margin-left:-.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-pin-button{position:absolute;margin-top:.625rem!important}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container .ag-header-col-hide-button{margin-right:1.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-hide-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-pin-button,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-filter-button{position:relative;display:block;opacity:1}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-cell-label-container:hover .ag-header-col-hide-button{margin-right:0rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .tSelectHeader{top:1.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-header-cell{padding-left:0rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-sort-descending-icon{margin-top:.9375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .nf-ag-main-col .ag-cell-label-container{margin-left:-.5rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .nf-ag-main-col .ag-cell-label-container .ag-header-cell-text{padding-left:.1875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ziti-ag-grid .ag-root-wrapper .ag-row.row-child{background-color:#fff;border-bottom:solid var(--stroke) .0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-column-default{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-registration{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-registration .tcol{width:100%}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-role-item,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-role-item{background-color:var(--shaded);border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-role-item.ag-row-hover,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-role-item.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-second,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-second{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-second.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-second.row-child-header{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-warn,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-warn{background-color:var(--copiedRow)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-odd.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-odd.row-child-header{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even{background-color:var(--shaded)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-role-item,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-role-item{background-color:var(--table);border:none}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-role-item.ag-row-hover,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-role-item.ag-row-hover{background-color:#2196f31a}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-second,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-second{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-second.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-second.row-child-header{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-warn,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-warn{background-color:var(--copiedRow)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-even.row-child.row-child-even.row-child-header,.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .ag-row.ag-row-odd.row-child.row-child-even.row-child-header{background-color:var(--table)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child{border-top:solid var(--stroke) .0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second{border-top:transparent}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second .ag-cell{font-size:.6875rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child .bubble{width:.5rem;height:.5625rem;margin-left:.3125rem;margin-bottom:.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child .ag-cell{font-size:.8125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status{margin-left:1.4375rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status .circular{height:.75rem;margin-left:1.125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child app-resource-status>span{font-size:.8125rem;margin-left:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status{margin-left:1.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status .circular{margin-left:1.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child.row-child-second app-resource-status>span{font-size:.8125rem;margin-left:.25rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-content{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-grow:1;flex-shrink:0;padding-right:.3125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-label{padding-left:3.4375rem;margin-left:1.25rem;width:calc(20% + 1.25rem)}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .step-label.step-content{padding-left:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .started-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .finished-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .duration-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .row-child-second .step-header-container .state-label{width:calc(20% + 1.25rem);overflow:hidden;flex-grow:1;flex-shrink:0}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper .process-info-container app-resource-status .circular{margin-left:.8125rem;margin-top:-.0625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-left:-.625rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status .bubble{margin-left:.125rem}.data-table-container ::ng-deep #ItemTable.ziti-ag-grid .ag-root-wrapper app-table-cell-resource-status .bubble .circular{left:0;top:1rem}.data-table-container ::ng-deep body{overflow-x:auto!important}.data-table-container ::ng-deep body .ag-theme-alpine.ag-dnd-ghost{height:2.1875rem!important;line-height:2.1875rem!important}.data-table-container ::ng-deep body .ag-header-row{box-sizing:border-box;border-bottom:.25rem solid var(--primary);background-color:var(--formBackground);padding-left:.25rem;line-height:3.4375rem;position:sticky!important;top:0;z-index:10;transition:all .15s linear;opacity:.97;color:var(--text)}.data-table-container ::ng-deep body .ag-header-cell-text{position:relative;float:left;color:var(--tableText);font-size:.875rem;font-weight:600;font-family:Open Sans;height:3.4375rem;transition:.5s;white-space:nowrap;color:var(--text)}.data-table-container ::ng-deep body .ag-header-cell-resize:after{display:none}.data-table-container ::ng-deep body .ag-header-cell-menu-button{height:1rem;width:1rem}.data-table-container ::ng-deep body .ag-icon{font-family:agGridAlpine;font-size:1rem;line-height:1rem;font-style:normal;font-weight:800;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.data-table-container ::ng-deep body .ag-icon-menu:before{content:\"\\f11b\"}.data-table-container ::ng-deep body .ag-icon-menu:hover{color:var(--primary)}.data-table-container ::ng-deep body .ag-icon-asc{margin-top:.4375rem;font-weight:800}.data-table-container ::ng-deep body .ag-icon-desc{margin-top:-.4375rem;font-weight:800}.data-table-container ::ng-deep body .tSelectHeader{left:1.3125rem;top:.625rem}.data-table-container ::ng-deep body .cellMenu{overflow:visible}.data-table-container ::ng-deep body .ag-theme-alpine{-webkit-font-smoothing:antialiased;color:var(--tableText)!important;color:var(--ag-foreground-color, var(--tableText))!important;font-family:Open Sans,sans-serif;font-size:.8125rem;line-height:normal}.data-table-container ::ng-deep body .ag-theme-alpine .ag-row{color:var(--tableText)!important;color:var(--ag-foreground-color, var(--tableText))!important}.data-table-container ::ng-deep body .ag-theme-alpine .ag-header-cell,.data-table-container ::ng-deep body .ag-theme-alpine .ag-header-group-cell{padding-left:.3125rem;padding-right:.9375rem}.os-icon{width:1.4375rem;height:1.4375rem;background-size:1.4375rem 1.4375rem;display:inline-flex;margin-right:.5rem;margin-top:.3125rem;margin-bottom:.3125rem}.os-icon.empty{background:transparent}.os-icon.apple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAEQNSURBVHja7d1nYFXHve/9Y4y7Y8fl5PjYJ73aOfZJANsYbGPs2LgjmiQkJCQECNF7EV0G0YvovSOqEL2JLopQ73Ic31Qnjp3EJe5xmTuzs+RgB7CAmbVmrf198Xnx3PvcJGjP+v9+e+21Zv5DCPEfAAB3/fz5dtdJP5IeleKlVGmetF0qll6XHudvBVP4IwCA2aD/oRQhDZNWS4XSG5Kogzb8DUEBAAB/BP5dUndpo/RaHYP+XBL4m4ICAADBD/wv683fGBQAALAj8H9gMPC/bDh/c1AAAMC70FcP6w2XSg0H/pdN5O8PCgAAuBv6P5ZGSGUuh/6Z5vJZgAIAAOZD/1ZpoFTuYeifaRWfCygAAGAu+B+S1kofWhL8tbL5fEABAAC9of919ZS9VGVZ6J/pAJ8VKAAAoCf475OWS+9bHPy18vjMQAEAgEsL/mbSQR+E/plK+OxAAQCAiwt+tdf+EZ8Ff60qPkNQAADgwoL/Cem4T4O/1q/4LEEBAIC6Bf9T0imfB3+t3/GZggIAAOcP/oel/IAEf61X+WxBAQCAswf/HVJmwIK/1t/4jEEBAIAvBv+V0lDp3YCGv/IOnzUoAADwxd/5Xwpw8Nf6iM8bFAAABP/z7b4vbQ+D4P8cnzsoAADCOfivlV6wcK9+N1zBGgAFAEA4hn9j6ddhGPzKZ9JlrANQAACEU/DXk1Klj/0S2I0iokSTyA46/zPfYy2AAgAgnML/dumQH0L/gbaxotvwMWJJ5gZRVFIiuqaO1vmf/xrrARQAAOES/s9Jf7E59JvHJoqB4yeJ9Vu3i4rKSvHiiy9+rn2fgTr/u37NmgAFAEDQg/8qaZatof9oh05izIzZYuf+A6KmpuYLoX+mZzt31/nfW8HaAAUAQJDD/06pzMbgj+k7SKzYuFlUVVefM/TP1Kx9gs7//jzWBygAAIIa/l3Uw242hX7jtrFiYPpkkXPkaJ1Cv5a6M9AwIkrn/5YDrBFQAAAELfjrS8tsCv6nOnUTMxYvE8WlpRcU/LUKi0t0/2/axloBBQBAkML/OmmPDaHfoGWkSBoyQmzcvvO8v+3XxeHc47r/92WyXkABABCU8P+GVGBD+KeMGCuOnjh5SaF/pu379uv+37iINQMKAIAghP8PpJe9Dv62PfqKbXv3awv+Wmu3bNX9vzWNdQMKAAC/h/990uteBv9jcUmhDXsu9Vb/uSxYnan7f3NX1g4oAAD8HP7PePmkv3qqP33OAlFeUWEk+GtNWbBY9//2p1k/oAAA8Gv4J3m1n796wK9vWro4lV9gNPhrjZqWofvfcDdrCBQAAH4M/1FebuCz9+BhV4K/VuehI3X/O25iHYECAMBv4T/fi+BvkdBVrN68xdXgr/VExy46/y3vso5AAQDgt/Cf4EX4q937ysrLPQn/ktKy0E8OGv89L7KWQAEA4Kfw7+l28D8Skygys7d5Evy11GuFmv9dbAMMCgAA34R/W+lTN8O/y7BRIr+oyNPwV2YvX6X737acNQUKAAA/hH8z6UO3gv+BtrFi/qq1ngd/rUHpk3X/G4ezrkABAGB7+N8tveXmoT0Hj+VaE/5KVK8Buv+dz7K2QAEAYHP4f0t6xa3wjx8wVBSVlFgV/mpnwSbtOuj+t36L9QUKAABbw/9mqdqt8E+dPF1UV1dbFf7KsZOndP9b32R9gQIAwNbwv0Y64Ubw39sqOrTPvm3BX2tNVrbuf/NR1hgoAABsDP/Lpa1uhH+zmITQMbu2hr8yfvZ83f/uWawzUAAA2FgA5rgR/r+I7yyOHD9hdfgr0b0H6v63J7HOQAEAYFv4t3Ij/J9MTBbHT+VZH/6FxSWiYUSU7n//vaw1UAAA2BT+t0l/MR3+z3bu7toJfpdqyboNuv/9n6jnK1hvoAAAsKkA7DEd/hHJvazY2a+ueoxK0/03yGetgQIAwKbwN77Hf7ue/ax7x/98qqqrRdOoON1/h4msN1AAANgS/ndK75sM/7Y9+omSsjLfhL+yZdceE3+LJ1hzoAAAsCH8r5SKjW7tm5jsq9v+tUZMnan7b/GRdC3rDhQAADYUgIlG3/NvnyCOnjjpu/BXnklKYQMgUAAABDL8m5k83rdxmxixK+eAL8P/iCwtBv4mo1l3oAAA8Dr8b5R+Zyr81bvzmdnbfBn+yrRFS038XR5i7YECAMDrArDG5K3/uSvX+Db81el/T+u//f+eet6CtQcKAAAvwz/aZPiPnTnHt+GvbNy+08TfZQtrDxQAAF6G/03SG6bCv0O/waFv0H4uAElDRpj420Sx/kABAOBlAZhkKvwfbt/RN1v8nsuxk6dEg5aRuv827/L6HygAALwM/9tNbfijQnP91u2+Dn9D7/4r61h/oAAA8LIALDD17V8Fp9/Dv6yiwsTWv0pL1h8oAAC8Cv8fSB+bCP823fuKqqoq3xcA9eaCgb/PW9JVrEFQAAB4VQAyTYR/k8gOvt3p78ue79rTRAFYwfoDBQCAV+H/f9JnJgrA0nUbAxH+m3bsMvVaZAvWICgAALwqALtMhFvi4OGBCH/12mLrlD4mwv9lqR5rEBQAAF6E/0Mmwv++1u1D++UHoQAszlxv6tt/X9YgKAAAvCoAx02E27hZ8wIR/uUVFeKxuCQT4f+OOm+BNQgKAAAvwv8ZE+HfIqGrqKisDEQBmDB3oalv/3NYg6AAAPAi/C+TykyE2zofn/J3ptOFheKBtrEmwl89cPlj1iEoAAC8KAAxJsK/y7BRgQh/ZeD4Saa+/e9lDYICAMCL8K/vPIGuNdjubxMjck/lBSL8c44cFQ0jokwVgKdYh6AAAPCiALQ1EWzpcxYE5rW/uP5DTIV/AWsQFAAAXhWAQ7qD7aHoeFFSVhaIAjBjyXJT4a88wRoEBQCAF+F/J9/+z23f4SOhPQwMhf9R1iAoAAC8KgCzdAdb08g4UVxSGoh3/p/r0sPkt/8HWYOgAADwIvyvc06f0xpsaRlzAvHtf1D6ZJPhv5s1CAoAAK8KQFfdwabeky8sLvZ9+K/JyjYZ/uq9/wasQVAAAHhVAEp1h9uoaRm+D/9T+QXioeiOJgvAetYfKAAAvAr/e0289692y/Nz+FdVV4sO/QabDP+3pdtZg6AAAPCqAEzTHW7DJk/3/bf//uMmmgx/pRfrDxQAAF6Fv9r3/w86g03tknfydL6vw3/c7Hmmw79QqscaBAUAgFcFoKnucEsYlOrr8J+/aq3p8P9Uasj6AwUAgJcFYLbugFu2fpNvw3/91u2ikbl9/mvNYu2BAgDAy/CvJ72qe+OfispKX4b/7gMHRWMzR/yeSf3ccgPrDxQAAF4WgOa6A04dk+vH8D928pR4JCbRjVv/j7D2QAEA4HUBWKg75Hbsy/Fd+B88lisei0syHf7KeNYdKAAAbHj6/zWdAfd0Uorvwn9XzgHTG/3UypPqs/ZAAQDgdQH4ue6Qmzhvoa/Cf9OOXW785q/8Xfoe6w4UAAA2FIDBOkOuQctIcSLvtG/Cf8XGzeLeVtFuhL8Sy5oDBQCALQXggM6Qix8w1DfhP3fF6lBhcSn8F7LeQAEAYEv4XyN9qDPo5q1cY33w19TUiLSMuW4Fv7Jdupw1BwoAAFsKQAvdYXfc8tv/BUXFobsULob/SVW0WG+gAACwqQBoPfzn2c7drQ7/Hftz3HrNr1aNdAtrDRQAALYVgAqdgZc6ZYa14Z+xdIVo5N7DfsofpW+zzkABAGBb+N+mO/Q2bt9pXfCXlpeL7iPT3Ax+5S3pHtYZKAAAbCwArXWG3n2t24vyigqrwj97917xVKdubof/h2zzCwoAAJsLwESdwddx4DBrgr+ktEwMSp/s5it+Z+7x3471BQoAAJsLwCGd4Tdt0VIrwj9zy1a3H/Q7Uy/WFigAAGwO/3rOtrTawu/A0WOeBn9+YZEXv/WfaQJrCxQAALYXgJ/qDD/1jdur4K+qqgo94e/SQT7nMpd1BQoAAD8UgESdAdh/3ERPdvNbsWGzeDIx2cvg/0waxJoCBQCAXwrAfJ1BONfl7X+37Noj2vbo62XwK+9LbVhPoAAA8FMBKNIZhjv3H3Al+PcdPiI6DRnhdfArr0n3s5ZAAQDgp/C/WvpY5/G/ZeXlRoM/S37jTxiUakPwK1XSd1hLoAAA8FsBuFtnIKqNdkz9xr9yU5YNt/rPpI5O/jrrCBQAAH4sAFp3AEwePkZr8BeVlIjZy1eJp7x9uO9slkpXsIZAAQDg1wIwVGcwps9ZcMmhX1FZKVZt3iK6po4W97p7YE9dn/RPZe2AAgDA7wVgqc6AXJOVfdG3+NVe/eoVwqZRcbaFfq0PpCjWDSgAAIJQAHJ1hmTuqbwLCv6cI0fF6OmzxC/iO9sa+rUKpDtZM6AAAAhKAfizrpBsEtmhTqF/PO+0mLJwiWiZ3Mv20Ff+IY2S6rNeQAHgjwAEJfxv0BmW0b0HnjXwTxcWiuUbNomB4yd5cRzvpaiUGrBWAAoAELQC0FBnYA6eMCUU+IXFJaGH+IZOnCqe69LDT4F/5jG+k6WrWCcABQAIYgForzM42/boJyK69Q5tBuTD0K/1stSU9QFQAIAgF4DhPg5qE+ZJ17E2AAoAEPQCMJvQD/m99DhrAqAAAOFSADaGefC/5WyEdA3rAaAAAOFUAI6GafB/KE2XbmEdABQAIBwLQE2YBb/axnc1p/cBFAAg3AvAG2EU/vukn/G5AxQAINzD/8owCf4i6Rd85gAFAMA/C8D/BDz4i6Vo6TI+b4ACAOBfBaBhAENf7eC3RXqYzxigAAA4ewF4OkDB/7bzVP93+WwBCgCA8xeAhAAEv9q2t4/0NT5TgAIAoG4FoK+PX+U7JLWU6vFZAhQAABdWAMb4LPhLpcHSt/j8AAoAgIsvADN9EPq/ktKkO/nMAAoAAD0FYIWlof9H54G+e/mcAAoAAP0FINui3/QLpXFSU37X//zzqcceBqAAADARMIc9DP2/SGulOOkbAf373iE9KiU7Jw6+IE2TFkirpCxpr3TM2a2wxjmW+G/SB2fsa6D+v1+S8qTdzlkGGdJoqacUIz2p7phI35duYn2DAgDgfAFV4mLgv+6E10gnqOoF5G94g9RIipXGSuudHQjf9fiuijrj4aA01SkId3JnBRQABDnQLnMGstri9i6psfSE1E5KkvpJA6QU5x34KOl5tU+8c+u5gfQT5//95WHw9/qNofD5m3PwTrrUOghP7Ttr4jlpoLTIOUb5VZ+9RaFKyQlpjtRJ+rk6D4LZAQoA/DKIr3C+zahgSXVuh6rfj990fkvWNSw/kX7rDPpVzu3bztLj0o+kqwPwt9RxEuCbzjfNSU7R+m5A1tkdzrf6xc6bCEE9L+Ej547FEqkbOymCAgBbhvDNTqikOw+sqd9IP7bowTX1u+wGaYhTDG712d2ST+tQgv7q/DuPOWVrvNRVauH83nwZgR84VdJkdZ6CVJ9ZBAoA3BjCl0tNnN9S8+oQUDZSD3Ftcx7QUreMb7b0b32l80DacOcnkSinxKgDgr4nfT3IT6DLf9vtzm/ji5yCI3DOOzzrpA7SLcwp8EeAzkH8becbpXoi+q2Ank5X6NwiV88jXMPn7sk6u0qKIPAv+WexnVIbnh2gAAAXO4y/4fx+XxOGQ/RD5/W7EdID3GI1fkdJPeC5LKDl0kt/dV5F/BlrjQIA1GUgN3He/f6IAfqFW6zqt/VW0rWsEy3rrLETTn9mfblCvU7am58IKADAl4fxdVIX5yAXhuX5vSdtcX5v/Trr54LW2f86Dyj+mnXk6fqdJX2HNUkBQHgP5B87h81w6/Xi/MN5l149H3Eja+qsa+w70jCpnPViFfWmzhrpHtYpBQDhNZTVO/LbNb+Tzzerf/6O3Zj1FXp+RG1/e5J14Qt7pEeYjRQABHsw3+i8VvYPhp5RZVKPcLsr4LyeuIb15VtqB8KmzEoKAII1mOs5t6lfZ8hxV8DA2mrp7MbIZx4MakOvHzM7KQDw/4Bu5vKBMgiDuwLOg6PqNv/LfLaBfUZAnYh4G3OUAgB/Pny1iUHGXQHN6+p/nA2T3uSzDAvqcKIxQThXgwKAcAj+q51DcT5gePnirkA3PwxX53jgTIvOeYC7XpTuZ8ZSAGDvkP4Fh6T40p+kvrZtQez8vq9OdMzlM4KzzfAEthimAMCuQf2fzk51DCl/e00apH5f93g9Xe/sGvf/+ExwFhVSA2YvBQDeDmp1XGwn6W8MpUD5i7N5ztc8OIynv7OHPJ+DdH+bGNG8QyfxbOfuIrJXf5E4eLjoMeoFMSh9shgo9RiVFvo/U/93z3XpIR6LSxIPtI0Nl4cE1bMBVzCLKQBwP/x/Ih1hSAfaG9Io01sOOwfyJDrHJIfF37axDOm2PfqJfi9MEDMWLxMrNmwWG7fvFLtyDojDucdFfmGRqKyqEi+++OJFqa6uFoXFJeLYyVNi36HDInv3XrFq8xYxYe4C0W34GPFUYrJo0DIyCH/LYuluZjIFAO6Ffx/nxDpCMjyorZrTpJsNrCV1wFF1UP92jSKiQt/Mu49Mk+G7UKzJyg6Fck1NzUWHuy6l5eVix74cMXv5qtDdhHY9+4nGbWL8+Hf+yLljdTnzmQIAc8F/s7TNr8O4WfsE8Uzn7iK69wCRNHSk6JuWLkZMnSkmzV8k5q5YLVZuyhKbduwS67duFys2bhYL16wTs5atFFMWLBbjZs0L/f+rbr32HjNexA8YKlokdBUN5YAPoyLwdyldx14CautXKS9Ifx91613djh8zY7ZYum6j2H/4yCV9i/eCKibqDoS6I6H+Ha1SevvpM1Dr6SfMagoA9Id/Uz/don08vrPomjpaTJy3MHRrtbC42MjArJID/sjxE6HSkCHLQurk6SJpyIhQ0WjUKjqoRUDt6Jh8Md+41Nnwzt7vvv87qFvoKiBVUKpb7FU+C/u6On4qT8xcslzE9hvsh8KrXj9OYWZTAKDvVaxUm9+/fig6XnQZNir0++aGbTtEflGRFYOzorIydIt1+uJlImXEWPELWUoCVgTUCXu/qOM6+r7zHr+vD4BSd5F6jR4nFmeuF6cLCwMZ+OejivSitetC15vlPxfM4icBCgAuLfxvkfbbeIHfK79dJ8tv+Oo3VT/dZj2VXxB6GGvUtAwR3XuguK91+yAUAXWy44/OsYZuk+b69YAe9Rt+TN9BoTtJew4csuK3e1uUV1SErj9VBix9oHCneqWUWU4BwMU95W/dPutRvQaEfq8vKikJxBAtk0N07ZatYsD4SeLRDp38XAJUwE+vfWPAOflxvLP1sK/+LU0j40T/cRND4VZSWkbY10HuqTwxUpbaplFxtn2epWr7aGY6BQB1D//HnSe/rbiIn0xMFuNnzxdHT5wM/CDde/CwSJ+zIPSKmE9f01Lv8M/2294Q6m+tHuxUD++pn24I9YsstOXlYo4s6GrfAos+3z+ycRAFAHUL/+62/N7/fNeeoYfrwnWYqt+YF6zODN2C5lVEM9SbHKpwHc87TYBrpt6oUQ/EWlJk1aFCLZnxFACcezOW2TYM5UdiEsXclWtCm5kwSP/pyImToafNm/v7ZwJrNuHpMzY99OQ+v+mbd/BYrug8dKQNn/2naqdJ5j0FAF8Mf/V77V4btj1Ny5gT2qCEwXnuHd4yt2wNPXjVKLz2ILhk6qFLdUeF9eWNrXv2hTYbsmAtzJfqM/spAIT/8+2+KVV5/fur2lzn5Ol8BuUFyCsoDG1S9HRSCgF/Dmpv/LEz54T2amDN2EFtMqSe6/F4bey17fRLCgDcDv/vSr/x8kJUv2+r16sYjJf+7Urd1vbpVq7aRXTrLZZv2MTPSJZSmyapzYUebt/Ry3WyTx1ARRZQAMIx/H8o/cGznfo6dhGrNmUxDDVTr62p5yfUWwThGPyqUKrNoFgL/lBcWho6h8DDNbODEwUpAOEW/ndJr3r1O796pU9tIsIANCvnyNHQ++wB3pL485+Q1NkOatdFPnf/vjHwuHc7ZWbxTAAFIFzC//+cvdxdv9DUMaRqX3EGnst7ueedFoMnTAnKroNf2KWv15hxoaLD5xyAu1dlZaENsTxaT+vYOpgCEPTwb+TFBi3qONSsXXsYch5TD1kOmzzd90VA/e9XhSaXMhlI6vAuj87NWKnOPiErKABBDP8m0ttu35pNnTKDndUsfHtAHW3stwcG1Ra9ai+E/MIiPscweJZFHdftwTpbJF1GZlAAghT+zaR33LyQ1L726nc9hpm91KmJo6fPCp1jb3Pwq42hJi9YzL78YUjt2+DBHas55AYFIEi3/d91+7f+wuISBpiPjnhVGzA1iexg3Y596oHRMh4YDWu7cg568ZPAaPKDAuD38FdnsL/m5m+z81auYWj59ZWsktJQEfD6GQH105G6/auOTuZzQe3dqg79Bru5Dj+TWpMjFAC/hv+t0ktu7ri2K+cAwyoAjp08FXqtzovwj5VDXp2IyOeAs22DrZ5dcfkAoXvIEwqA38L/WinPzc1XeDAreNRJjE916ubKGlL/PWuysvm74ystydzg5t4WaqfUW8kVCoCfTvXb7lb4p06eLqrYbjWwKquqxKT5i0K/x5tYPw9GxYsZi5eFtobl740LeVWwsXsPrx5ht0AKgF8KwEK3dvRbsm4DwyiM9hDoPjJN3yY+8hucKo88LIqLtXP/AfFQtGtnCcwjXygAtof/CDcuhoei40MXH0Mo/GzZtUc837XnJa0fdZTx4dzj/D1xyQ4ey3XzDYFkcoYCYGv4J7j1sN+Bo8cYPuF8klt1tZixZHloY54LPaGPHSFh4u7Us527u1EAPlDnqJA3FADbwr+F9LEbD2qxlz9qnS4sDH2b/6p10ywmIbShS01NDX83GFuLTyYmu1ECCjg4iAJgU/j/SPq76YXfOqUPT/rjrBatXXfWuwENI6LE0IlTQ/sL8HeCG6+vql0jXSgBI8keCoAN4X+1VObGu9lsw4rzOZF3WsQPGPr5mons1V/sO8T7/HCXWnMu7Gj5D+lnZBAFIPBP/KtbvBzmg7pQt/hnL18lFqzhdj+8fVDVhd0sy6UrySEKgFfh3950+KeMGBvafYuhAsBPVm3eEtpS2vCMTCeLKACB/N1f3c6tZHMWAD41d8Vq0wXgE+l+MokC4Pbv/qUmF3bbHn1FaXk5QwSAr6XPWWC6BLyoZjLZRAFwqwAsMLmgn+ncPXQ8LMMDQBAMmTjVdAkYQTZRANwI/2iTC1ntqKWe5mZoAAiK3QcOmn4oUJ0aeAcZRQEwGf4/NPm7/8PtO4pDx3IZGAAC81aKOsjKpZMD15JTFABf/u7/QNtYsSvnIEMDQCCoHUvVMeVunYrqaEJeUQB89bv/vbIdb965m6EBIBCWZG644HMqNCmU6pFZFACd4f+EyUU7f9VahgYA31NbTus8svoidSK3KAC6wv8q6VemFmu/FyYwOAD4njplUp1U6nH4K3+WbqAAEOA6CsBoUwu1VUpvtvgF4Gtqs7IRU2e6sevfhZhCASDALzX8v++cP619gTaNigudnMUAAeBXOUeOipbJvWwK/jMPC/oOBQCXUgD2mlicqilnZm9jgADwLXXolAsH/lyMXOlJ7gAQ4pcS/m1NLdCxM+cwQAD4lpphFgb/fulh8osCcKnhf730iolFGtd/CMe0AvAldTLpgPGTbAr9z6Rt0r1kFwVAVwGYZmKxqidk84uKGCQAfEc9sJycOtqW4P9UWifdTWZRAHSG/z3Sx7oXrNoKc8e+HAYJAN8pKS0THfoNtiX8M9Vx7OQVBUB3+F8mnTCxaKctWsogAeA7+YVFonVKHxuCP196gKyiAJgqAEkmFm7r7n1Cv50xTAD4Se6pPPFUYrLXwf9HKV59QSOnKACmwv8W6a+6F2/DiCix9+BhhgkA373j37xDJy+DX+3BMk66joyiAJguAItMLGK1QxbDBICfbNu7P7RZmYfhvzHcN/KhALgX/t818eDf4x27iLLycgYKAN9Qm5Td3ybGq+Av5l1+CkAgjvpdv3U7AwWAb6hjyRtFRHl1gE8SR/lSANwO/zukj3Qv6JSRYxkoAHzj4LFcr27775ZuJo8oAF4UgAwTB/3kFRQyVAD4QkFRsWiR0NWLzXxG8nQ/BcCr8P+G9L7uhT135RqGCgDf7PAX3XuA2+H/F+lxcogC4GUBmKR7YUf3Hshe/wB8o9focW6H/ynpf8ggCoCX4X+z9I7OhX1vq2hx4OgxhgoAXxg/e77b4T9LuoIMogB4XQDG6l7cY2bMZqgA8IVl6ze6Gfzqy1YU2UMBsCH8b5De1LnAH2gbKwqLSxgsAKy3fd9+cV/r9m6Ff5X0E7KHAmBLARjGt38A4ejYyVOiWfsEt8J/HVv5UgBsCv9rnSdQtS3yxvLbv3qNhuECwGbFpaXiuS493Ar/RbziRwGwrQD0173QR07LYLgAsJp6Oyl+wFC3wn8F4U8BsC38r5L+pHOhqz2zTxey6Q8Au81cstyt8F/Llr4UABsLQHfdiz11ygyGCwCr5Z7KC/1U6dIpfpeTNxQAGwvAL3UudvUUbV5+AQMGgNVcuvWfLdUnaygANob/fboX/NCJUxkuAKy2YE2mG+G/U7qSrKEA2FoAZuv+9n/ydD4DBoC11KFkD0bFmw7/fer5KnKGAmBr+NeXXte56AdPmMKAAWC15NTRpsP/oHQNOUMBsLkAPKNz0TdqFS2O551mwACw1qpNWabD/xib/FAA/FAA1utc+APGT2LAALBWUUmJaB6baDL8X5FuIV8oALaH/9ek93Uu/iPHTzBkAFirb1q6yfD/VHqEfKEA+KEAJOhc/FG9BjBgAFhr4/adpm/9jyVbKAB+KQAHdS7+OStWM2QAWKmsvFw80bGL6d/92eiHAuCL8L/DuV2l7dU/9dsagwaAjUZPn2Uy/P8mfZNwpQD4pQAM0nkBJA8fw5ABYKXC4mLxgNntflsSrBQAPxWAcp0XwJqsbAYNACu9MGuuyfCfTahSAPwU/vfovAAebt9RVFVVMWgAWKektEw0jYozFf6l7PRHAfBbAZjMvv8AwsGk+YtMhf+70k8IVAqAn8K/nrNRhbYLYVfOAQYNAPue/K+oEM3aJ5gqAImEKQXAbwXgMZ0XwTNJKQwaAFaasXiZqfDPIUgpAH4sAEt1XggT5y1k0ACwTkVlpXgsLslE+H8mNSBIKQB+LAB/1HUhNGgZycE/AKw0d8VqU9/+MwlRCoAfw/9/dV4Isf0GM2gAWKequlq0SOhqIvw/kr5HiFIA/FgABui8GBasyWTYALDOorXrTX37zyBAKQB+LQD7dF0I97eJESVlZQwbAFapqakRz3TubiL835ZuJUApAH4M/6ulD3RdDImDhzNsAFhnxcbNpr79jyA8KQB+LQBP6LwY1OYaDBsAtuk4cJiJ8P+TdC3hSQHwawGYpvOC2LEvh2EDwLJDf0pEo4goEwUgmeCkAPi5AFTouhgat4lh738A1pm/aq2J8H9Rqk9wUgD8Gv636bwg4voPYdgACJfb/60JTQqAnwtAhM4LIn3OAoYNAMtu/xebuP3/SwKTAuD3AjBB50WRvXsvAwdAONz+H05gUgD8XgAO67og7mvdPrTHNgMHQMBv/6s9/79NYFIA/H787zu6LoqYvoMYNgDC4fb/EcKSAuD3AnC3zovihVlzGTgAwuH2fyfCkgLg9wLQWedFsXnnbgYOgKDf/n9fuoGwpAD4vQAs1nVRNGoVLcoqKhg4AIJ++58jfykAgSgA5bouishe/Rk4AKwyb+UaE7f/nyQoKQB+D//rpU91XRRjZsxm4ACwSvyAobrD/1XpcoKSAuD3AtBY54Wxfut2Bg4Aa6hXktVPk5oLwFRCkgIQhAKQqOuiaBgRJUpKyxg6AKyx+8BBE7f/7yEkKQBBKACTdV0UrVJ6M3AABP33/zICkgIQlAKwQ9eF0WfseAYOAKsMSp+suwBMJCApAEEpAC/rujAmzV/EwAFglXY9++kuAK0ISApAEML/ap1vAKzJymbgALBGdXW1uL9NjO4CcDsBSQEIQgG4R+eFcSj3OEMHgDVyjhzVHf5/IBwpAEEpAFE6dwCskm2boQPAFosz1+suAJsJRwpAUArAGF0XxrOduzNwAFgldcoM3QVgEOFIAQhKAdig68JITh3NwAFgFXU0ueYC8BDhSAEISgE4revCSMuYw8ABYI2amhrRJLKDzvD/RLqWcKQABKUAvKLr4liSuYGhA8AaR06c1P3tv4RgpAAEJfzrOY1Wy8WRvXsvQweANVZs3Ky7ACwgGCkAQSkA/63z4lBtm6EDwBbqZFLNBSCRYKQABKUANNJ5cZRVVDB0AFij+8g03QXgLoKRAhCUAvC8rgujaVQcAweAVToOHKYz/D+QLiMYKQBBKQApui6O57r0YOAAsErbHlrPAHiFUKQABKkAjNN1caimzcABYJOnOnXTWQDKCUUKQJAKwDJdF0fftHQGDgCrPNy+o84CcIRQpAAEqQDsYxMgAEHVKCJKZwHYQihSAIJUAMp0XRyzl69i4ACwRml5ue43AJYQihSAIBWA3+i6OFZuymLoALDGibzTugvAZEKRAhCkAvBXXRfHhm07GDoArJFz5KjuAjCMUKQABKkAfKTr4ti2dx9DB4A11NbkmgtAMqFIAQhK+F+p8+LYd+gwQweANdZkZesuAO0IRQpAUArALZwDACCoFq5Zp7sAPEYoUgCCUgC+o/PiyCsoZOgAsMaMxct0F4CfE4oUgKAUgLt1XhzqlRuGDgBbjJs1T3cB+DahSAEISgFoouvCaNAyUtTU1DB0AFhjxNSZugvALYQiBSAoBaCFrgujcdtYBg4Aq4ydOUd3AbiDUKQABKUAtNV1YTwSk8jAAWCVCXMX6i4APyAUKQBBKQAddV0Yj3fswsABYJXpi0IPAX6m0T2EIgWAAvDlAhDfmYEDwCpzVqzWfQegMaFIAQhKAYjXdWE8FpfEwAFglUVr1+suAI8SihSAoBSAOAoAgKBasXGz7gLwLKFIAaAAfEnzDp0YOACssi57m+4CEEUoUgCCUgA6aCsAsbwFAMAuW3bt0V0A+hGKFICgFIBYXRdGs5gEBg4Aqxw6lqu7AMwkFCkAFIAvF4D2FAAAdimrqNBdALIJRQpAUApAjK4L46HojgwcANZ5KDpeZwEoJhQpAEEpAO31FYB4hg0A60R0662zAPyNUKQABKUAROu6MJpGxTFsAFgnaehI3T8DXE8wUgAoAGe4t1U0wwaAdYZMnPqZ5u2Af0owUgCCUABa6mzGFZWVDBwAVpm8YDF7AYACcJYC0FznhZFfWMTAAWCVZes36i4AUwhGCkAQCkBDnRfGkRMnGTgArLLv0GHdBeAwwUgBCEIB+JHOC2PPwUMMHABWqayqEo1aRessAH+XLiMcKQB+LwC36SwAWbv2MHAA2PcqYHIv3XcBfkI4UgD8XgCu1XlRrMnKZtgAsE6fsem6C0AHwpECEIQS8LGui2Jx5nqGDQDrzFi8THcByCAcKQBBKABv6LooMpatZNgAsI6BUwHLCEcKQBAKwG91XRQT5y1k2ACwTlFJie4CoNxBQFIA/F4AynVdEKOnz2LYALDS4x276C4AnQlICoDfC8BxXRdEvxcmMGgAWKn3mPG6C8AWApIC4PcCsFvXBdFx4DAGDQArLVq7XncBUPsBXEFIUgD8XABW6bognuvSg0EDwEqn8gtMPAfQnJCkAPi5AEzgSGAA4UB9SeFcAFAA/lUAeuq8IMrKyxk0AKyUOnm67gLwe6keQUkB8GsBiNB5QRzOPc6gAWClddnbTPwM8ARBSQHwawG4l/MAAISD0vJy3QcDKZkEJQXArwXgdp0XA9sBA7BZTN9BugvAB9KNhCUFwI8F4HLpE10Xw6T5ixgyAKyVsXSFiZ8BkglLCoBfS8Arui6EIROnMmQAWOt0YaFoGBGluwDkEZYUAL8WgDxdF0KXYaMYMgCsFtd/iIm7AHcTmBQAPxaALF0XQZvufRkwAKw2f9VaEwVgJYFJAfBjAZilbTOgSDYDAmA3dTrgvfrfBviH9E1CkwLgtwIwROeFkJdfwJABYLWkoSNN3AWYQWhSAPxWAGLZCwBAOFm6bqOJAvCOdBPBSQHwUwG4T+dFMHv5KgYMAKupbcvVT5YGSsAIgpMC4KcCcIPOC2DopGkMGADWGzF1pokC8Jp0DeFJAfBTCfiTrgsgfsBQhgsA6+WeyhMNWkZyFwBhXwAO6Vr8j8UlMVwA+ELX1NEmCsC7apt1ApQC4JcCME/nBVDKscAAfCB7914TBYB9ASgAvioAvXUu/j0HDjFcAPhCRHIvEwXgM3XaKiFKAfBDAXhC5+JfkrmBwQLAFxasyTR1F+A4IUoB8EMB+JbOhZ+WMYfBAsAXKiorxSMxiaZKQDRBSgGwvQBcJr2na9Enp45msADwjZlLlpsqAOoNq5sJUwqA7SWgWNeifzIxmaECwFd3AR6P72yqBGQSphQA2wtAps5FX1hcwmAB4BuGTgms1ZZApQDYXABG6VzwG7fvZKgA8I2q6mrxdFKKqQLwF+kbhCoFwNYCEKlzwU+Yu5ChAsBXlq3fZPIuQDahSgGwtQD8WOdi7zJsFAMFgK/U1NSY2hegVhzBSgGw9U2At3Ut9Ec7dGKgAPCdddnbTBYAtU3wTwlXCoCNJeCwzsV+Kr+AgQLAd5KGjjRZAl6SbiRgKQC2FYApOhf6mqxshgkA3zl+Kk80bhNjsgTsUHddCVkKQGAfBGRHQAB+NWXBYpMFQBlNyFIAbCoA39O5wDsOHMYgAeDb1wKf79rTZAFQBwY9Q9BSAGwqAX/TtcAfjIpnkADwrW1794sGLSNNloC3pLsJWwqALQVgv84FfvTESQYJAN/qP26i6Z8CXpW+T+BSAGwoAOk6F/ey9RsZIgB8S21r3jw20XQJ+I10B6FLAfC6ALTWubAHT5jCEAHga5t27DL9U4BSJd1C8FIAvCwA39K5qJ/t3J0BAsD3Rk7LMF0AlHzpa4QvBcDLEvCazkV9urCQAQLA1yqrqkTrlD5ulIAj0vUEMAXAqwKwS+eCXr5hEwMEgO8dzj0uGreNdetOwK2EMAXAiwIwVudiHpQ+meEBIBDmr1rrRgFQaqRvEsQUALcLwGM6F/IzPAcAIEBSRox1qwT8Xp3UShhTANwsANdIH+lcyHkFPAcAIBhKyspM7xJ4pr9IjQhkCoCbJeCY3v0AeA4AQLAODGoWk+BWCfi71JJQpgD48jmAgTwHACBgduzLEfe1bu9WCVBnB4yT6hHOFADTBaC51ucAklIYGAACZ+m6jW4VgFp7pZsJaAqAyQJwtfSh1ucA8gsYGAAC54VZc90uAWrr4J8T0hQAkyXgCOcCAMD51dTUuPlmQK33pUSCmgJgqgCM1vocwPhJDAsAgVRRWSniBwx1uwQo26X/JrApALoLQDOdC7VFQlcGBYDAKquoEDF9B3lRAt6Q4gltCoDOAnCV9IHOhXrg6DEGBYBA7xEQ2bO/FyVA2SndTnhTAHSVgIM6F+iUBYsZEgACrbik1K2Dg87mTSmJ1wUpADoKwEidizO690AGBIDAKywudnO3wLMpVq9zE+QUgEspAA/qXJQNI6JCFwYDAkDQ5RcWiWc7d/eyBNQ+JMh5AhSAiyoAV0rv6VyQSzI3MBwAhMmdgBIR1WuA1yXgY2k2RwxTAC6mBOzWuRi7j0xjMAAIG+UVFaLLsFFelwDlLWmCdBvZRgGoawHornMRNo2ME1VVVQwGAGG1WdDgCVNsKAHC2eV1MT8NUADqUgC+pXsBZu3czVAAEHYmzltoSwmoPWAoW2pC1lEAzlcCynQuvOFTZjAMAISlRWvXiUYRUTYVAeWU1FX6OplHAfhyARinc7E9lZjMIAAQtrbs2iMeiUm0rQTU/jywUXpWqk8BgCoAjXUvtEO5xxkEAMLWqfwCEd17gI0loNZr0kypIQUgvAtAPWcxaFtcUxcuYQgACGvqgejUKTNsLgFnHkE8VXpAuowCEH4lYLnOBaUOzWAAAMCLYsWGzeKBtrF+KALKK9Is6V4KQPgUgDa6dwU8nneaix8ApIPHcm3YOfBCHKQAhE8B+Jr0kc4FlMrbAADwOXWk8LDJ00WDlpF+KABlFIDwKgH7dS4gdcurqKSECx8AzrBt737xdFKK9T8FUADCqwD00r2IJsxdyAUPAF9SUVkpRk7LCP1camkB+JACEF4F4Lu6F5F6F1YtdC54APh3u3IOiOe69LC1BFxPAQivElClexHNXbGaCx0AznM3YNyseeL+NjG2FYDvUADCqwBM1L2InurULXRYBhc6AJzbydP5os/YdJseEmxIAQivAnCXc4iE1oW0alMWFzgA1MG+Q4dFXP8hNhSAFhSA8CsBO3UvpLY9+nFhA8AFWL91u9fPB8RSAMKvADxiYjFl797LRQ0AF6C6ulrMX7VWtEjo6kUBSKIAhGcJKNC9mBIHD+eCBoCLLALLN2wSrVJ6uxX+n0j/TQEIzwIQpXtBqQdbco4c5WIGgEuwcftO0aHfYNMFYBf7AIRvAbjcOSFK66LqM3Y8FzAAaNpDIDl1tKm3BiIoAOFdAnrrXlSNWkWHXnXh4gWAS3f8VJ6J3QT/JNWnAIR3AbhOekN3CRg6cSoXLgBoMGLqTBPf/scFPd8I+bqVgPG6F9d9rduLU/kFXLwAcAlKy8tF08g43eH/WZB3AKQAXFgBuE0dCqG7BKgjMbmAAeDiZSxbaeLb/95wyDYCvu4lYImJuwB5BYVcxABwEdT26k8lJpsoAG0oADizANxpYnvg4VNmcCEDwEXI3LLVRPj/WbqCAoAvl4AduhebOvnqdCF3AQDgQnUwc1bAhHDJNIL9wgrAwyY2m1BPsHIxA0Dd7T98xET4q7u836MA4FwlIF/3omvcJkbkFxZxUQNAHfVLm2CiAOSEU54R6hdeANqZuAswaloGFzUA1IH6wqQeojYwi9tRAPBV2wP/UvtdgLaxoqComIsbAL7C+NnzTYT/a+Hy8B8F4NJKQJyJuwCjp8/i4gaA8yirqBDNYhLY+Y8C4OldgJd0L8AH2saKwmLuAgDAuUxbtNRE+KuN3m6jAKCuJaCjibsAY2bM5iIHgLMol9/+H4lJNFEAloZjjhHmF18A6ksv616ITdp1EIXFJVzsAPAl0xcvM/Xq310UAFxoCUg0cRdg7Mw5XOwA8KVv/81jjXz73x2uGUaQX/pdgF+b2Bcgj5MCAeBzM8x8+1cepQDgYktAkolFOTB9Mhc9AEgVlZWieYdOJsK/OJzzixC/9AJwhfQb3QuzUUSUOJx7nIsfQNibuWS5qW//sRQAXGoJ6GJicSYPH8PFDyDsv/0/aubb/+/Vz7gUAOi4C/A7EyVgV84BhgCAsJWxdIWpb/8Dwj27CHB9JSDZxCKN7TeYIQAgbL/9PxaXZCL835ZuoAAQ3roKwJXOLSXti3X91u0MAwBhZ/KCxaa+/U8ltygAuktAionF2jK5l6ipqWEgAAgbeQWFoY3RDMzUD6TbySwKgO4CcJX0BxMlYHHmeoYCgLDRNy3d1Lf/GeQVBcBUCehuYtE+3rFL6PcwBgOAoNuVc1A0aBlpIvzflb5BVlEATL4R8LKJEqB2wmI4AAgy9XNnZK/+pr79TyCnKACmS0CUicX7cPuOoqS0jCEBILCWrNtgKvzVk/83k1EUANMF4DKpwMQiTsvgoCAAwVRWXm7qtT9lDPlEAXCrBDQ3sYg5KAhAUKVlzDUV/m9IN5JNFAA3S8BuDgoCgK+WeypP3Ne6vakCMIxMogC4XQDukT7loCAAOL9uw8eYCv/XpevIJAqAFyVgpYlF3Y2DggAERPbuvabCX+lPFlEAvCoA35I+NLGw1UXD8ADg99f+IpJ7mQr/P0nXkEUUAC9LwBQTi/v5rj1FVXU1QwSAb81dsdrkt/8UMogC4HUBuEl6k82BAOBfiktKQ/ubGAr/KulyMogCYEMJGGxikTeJ7CBOFxYyTAD4TuqUGSa//T9J9lAAbCkAV5s6Lrj3mPEMEwC+cuhYrmjUKtpU+O8hdygAtpWABFNtd9vefQwVAL6RMCjVVPh/It1F5lAAbCsA9aQKE4tePUVbzQOBAHxgXfY2k7f+55I3FABbS8DTphZ+xtIVDBcAVquqqhJPJ6WYCv+3pFvJGgqAzSXgsInF3zQqTuQXFjFkAFhryoLFJr/9DyRjKAC2F4D7TF0AfdPSGTIArHTwWK7J/f5flq4kYygAfigBG01cBA1aRood+3IYNgDsuvVfXS3adO9r8tt/a7KFAuCXAvBd6QMTF0KrlN6h7TUZOgBsMX7OfJPhf5RcoQD4rQSMNHVBzF6+iqEDwAp7Dh4y+c7/P6S7yRQKgN8KwFXSr0xcFA9GxYuComKGDwBPVVRWiue69DD57T+NPKEA+LUEtDB1YfQfN5EBBMBTo6ZlmAz/ah78owD4vQRsNvVA4K6cAwwhAJ5QO5SqOWQo/D+VmpAhFAC/F4BvSu+auEjUU7c8EAjAbWXl5eLJxGST3/5nkR8UAE4L/ArqvG0GEgA3DZ4wxWT4/1a6nuygAASlAFzh/J6l/WJ5KLqjKCzmgUAA7ti4fafJ8OeoXwpAIEtAc1MXTPeRaQwmAMYVl5SKx+KSTIb/KvKCAhDUErDW1IWzfMMmBhQAo3qNGWcy/F+XbiErKABBLQC3SW+b+SkgXuTlFzCkABixevMW07f+o8kJCkDQS0AfUxdQ4uDhDCoA2qmTSJu1TzAZ/tvJBwpAOBSAy6VSUxfS/FVrGVgAtOoybJTJ8Fd3Rf+HfKAAhEsJaCJ9ZuJiatKugzh28hRDC4AWizPXm771341coACEWwlYZuqCiuk7iA2CAFyy43mnRdPIOKMn/UmXkQkUgHArAP8pvWHqwpq2aCkDDMBFq6yqEm179DMZ/urI9B+RBxSAcC0B3UxdXPe1bi8OHstlkAG4KAPTJ5u+9T+UHKAAhHMBqCflm7rA1FkBVdXVDDMAF2ThmnWmw79Yqk8OUADCvQQ0ck6+MnKhjZ89n4EGoM72HjwcuoNoMPw/ln7O/KcA4J8lYJ6pi61RRJTYc+AQgw3AVyosLhEtErqa/vY/kblPAcC/CsANzglYRi6457r0EBWVlQw4AOek3hxSm4kZDv8q6WrmPgUAXywBD5v8KWDE1JkMOQDnNG72PNPh/570U+Y9BQBnLwGTTV18DVpGiuzdexl0AP7N+q3bQzPCcAHoxJynAODcBeBKqczUBah+2ystL2fgAfic2jn0wah40+G/mhlPAcBXl4C7pQ9NXYgDxk9i6AEIKa+oEBHdepsO/xel65nvFADUrQQMNHlBqtt9DD8AfcaONx3+are/e5jrFABc2AZBR0xdlM07dAod78kABMLX7OWrTIe/0pWZTgHAhZeAbzvHZBq5MGP7DRbV7BIIhKWd+w+Ie1tFmw7/dcxyCgAuvgR0NHmBjpyWwTAEwkx+UZF4LC7JdPj/Svoac5wCgEsrAVkmL9QVGzczFIEwoTYEi+490HT4f8hWvxQA6CkAt0qvmrpYH2gby6mBQJjs9Nd9ZJobv/v3YHZTAKCvBDxt8oJ9pnN3UVJWxpAEAmz09FluhP8mZjYFAPpLwHyTF25y6miGJBBQc1esdiP8/590I/OaAgD9BeA66SWTF/CUBYsZlkAAt/ltGBFlOvw/UkebM6spADBXAu6XPjF1EashkbVzN0MTCIi9Bw+HnvNx4dt/H2Y0BQDmS0CayQv5oeiO4nDucYYn4HPH806HNv1yIfyzmc0UALhTAOpLBSYvaHVoEDsFAv5VXFoqnu/a043w/610E7OZAgD3SsCPpfdNXthte/QTZRUVDFPAZ6qqqkRc/yFuhP877PNPAYA3JaCn6Qu889CRbBcM+O6An3Q3wv9T6VlmMQUA3hSAy6Rdpi/0wROmMFQBnxg3e54b4a/0Yw5TAOBtCbhJetn0xc7rgYD9Fq5Z51b4L2T+UgBgRwm4W3rX5AXfoGWkWLZ+I0MWsNTKTVluvOuvHFAPIjN7KQCwpwREmr7w1dGh2bv3MmwBy2RmbxONzB/tq7wofZ2ZSwGAfSVgsukB0CSyg9ixP4ehC1hi045d4r7W7d0I/79KP2DWUgBgZwG4XMoxXgLadRDb9+1n+AIeU3fkGreJcSP81Ta/DzNnKQCwuwTcIv3G9EBQW4tu3bOPIWyxyqoqceT4CbF5526xavMWsThzvZizYrWYunCJGD97vhg1LSP0hod6Zazb8DGix6gXxMD0yWLU9FliwtyFImPpCrFo7XqxJis7tD30ngOHQv95RSUl/H0toO7EqTLu0kN/CcxXCgD8UQJ+ZnqTIKWxLAE8E+CtU/kFYsuuPWLBmkwxbtY80XvMeBHde6B4LC4p9OCmqc9e/ecnDRkhXpg1V6yW5SL3VB6fh4v2HDwkmkbFuRX+E5mrFAD4qwTEujEc1O3HLBlADGXzVMiqb/JpGXNEwqBU0Swmwa0AqJMHo+JFh36DxYipM8WSzA3iwNFjoqamhs9Os5wjR0Pndbj0uW5R+40wUykA8F8JmO7GkLhflgD1IBLDWR+1BfPG7TvFmBmzRfyAoXLgx1sV9nX1aIdOoUKgTqTjc7106pCuR2IS3fr8iqRrmaUUAPizANSTstwYFuopZBVYDOmLU1FZGfo5Rd3Gb99nYOiVSz8G/vk827l76NmCYydP8ZlfhEPHckM/vbj0eb0i3c4cpQDA3yXgainXrRKwaO06hnUdnS4sFLOXrwp9w7/fnSe5raCeTYjuPSD0by8sLmYt1MG+Q4dFs/au/eTzlnqOiPlJAUBwtguudmvAq1u+HCB07of2MpatFDF9Bxl9SM8v1OY16mHCVZuyeF7gHNQrt00jXXvg7z3pQeYmBQDBKgHfkv7o1mDvOHAYr4s5TuSdFjMWLwt96yX0z02dXa/eKGDNfHGTH/W2jUufgXrX/0nmJQUAwSwB90hvuzXQn+rUTRw8lhuWg/u4DH31vn27nv0I/QvUOqWPWJe9LezDX+2/4NIOf8onUlvmJAUAwS4BjzpN35XBorYOzgyTYa5+9li7ZatIHDyc0NdA3TFRrxKGY/irTZsauXOwj/KZ1In5SAFAeJSA9s5F79pDX5PmLwrssC4oKhbpcxaIX8R3JrgNHEClzrdXuxqGS/irhyNdLpB9mYsUAIRXCRjo9jDvNWZcoAZ5lfzGP23RUjcf0Apbz3XpIXbsC/4hVKoou/y3HcM8pAAgPEvAeLcHeWSv/uLk6XzfD+qd+w+Ilsm9CGeXXx9UZxcE8dVB9QbE8Ckz3P6bzmAOUgAQ3iVgrNuD/OH2HX27aVBJaZkYMnEqv/F7SO2BP33xMlEVkLtJ6t/Rc/QLbv8dl7HFLwUAUCVghBff5tSud35693vlpqzQ1raEsB3UWybqSXk/h39peXloIyiX/3ab1NHhzD4KAFBbAoZ4McTV8MvLL7B6SKtjj2P7DSZ0LaUOIPLjWQNqJ8jW3fu4/ffaJV3JzKMAAF8uAf29GODqRMGxM+eI4pJS63Zgi+s/hJD1CbX5lF8OpVqxYbMXpzlmEf4UAOB8JaCXl8fJTlmwWJRXVHj6MJY6lEeFCaHq3x0FF65ZZ+UbJ+oB2KShI734u6zmtj8FAKhLCejm5j4BZztCVp15r849d2swqxPq1PvmLRK6EqIB0Tw2UUyYu8CK0wfVg37q/X61MZYHf4sF6mRQZhsFAKhrCUiSPrXh/W+1yY46B133UFbbFM9atjJ0/G4YP9Wvit67XhY+N0Qk9woVPHWqnpvBn19YFFq/zb17eHQq84wCAFxMCXjGzbMDvkqrlN4idcqMUGir1wiPnDgZ2oynrrv17co5IOasWC26j0wTj8QkBjnU1b7uVdI+aa0003nTQ93ZaSs1k34q/ZdU3/msL5NudA6Nult6SHpWipW6S6nSJGmpdFp6369/nyc6dhGpk6eLLbv2GDm1Un3bVz8j9U1Ld3Mvfzb5AQUA2kvAndKvrD1ONiIqdNte/Wbff9xE0S9tQmjHwZSRY0O/tapvfk3adQhy2Kuz249Js527No2kq11YF5dLd0kx0mSp0I93EdQteXVgU5+x6aFd+NRrhYeO5V7QHgPqmZU9Bw6JKQuXiIRBqW6e3nc+A5lf4I8AHcP+JimH35U9p75171ff7KQI6buWrZM7nLsMu6UP/fy3VsXymaQU0WXYKDEofXJoB8KhE6eKoZOmhaSMGCva9ujrxZP8dflJpxtzCxQA6P7Gl0EIu0o9g1EgTXBOcbzKR+vleinOuTPAZ+neTz9xzCtQAGBqsHd28zjhMPRb56lt9Vv9zQFZMw8676B/wudrjLomWzOjQAGAGwP9NYauNupvOUdqEuT92eW/7TvSPBveLgngT0NPMZtAAYBbw1w9LV7C8L1o6u2KFVKLcNugRf57GzhvErAO9Kyjh5lJoADA7UF+rXOwCIO4bj50boW3ceNJfcvXTj0pWXqDdXHRXldlilkECgC8GuTq/fGRQd9IRsO3tH7qPXvWzL+tn/909hZg/VyY30k/Yg2BAgAbBnkr6R0G81mPXr2dNfKV6+deKY/1Uic10jdZN6AAwKYhrnaQe4kBHfIb6WnWxQXfTeoovcr6OSe1x8ItrBdQAGDjEL9KGi69F6YD+h/SRPV8BOvhotfQDdIU529J6P/rHf+hQX5LBBQABOstgawwO1Rns9oel89f2xr6sbSH8G/3ijqbgTUBCgD8NsSfkH4Z8OBXRecePm+ja2hvmD4omC3dyjoABQB+HeBXOrcv3whY8Kvh/H98xq7eEZgTJg+bqtL8JJ87KAAIygC/RkqU8n08mN9xXlv7GZ+pp88I9LH5lMpLXF+DVWnmswYFAEEd4o2cIPXLw4LHpU7qkBs+P6veGnhG2heAnwdU8M/klVFQABBOQ/zrUl/pRQuH8q+lSerWM5+V9evoJ9Is5zPzU/D/URqirgM+R1AAEM5D/GdSL2mj9CcPhvEHzsNmfQl9X6+jH0gpzjMab1kY+h87dy3UcclX8JmBAgD8+yD/vpTg/FTwkqHNerZJL6hNe9QzCvzdA7eG6junLI6RTjjh69X+ELudn5Fu5rMBBQC4sGH+X9Kzzm5xvaURzoYxi6T1zjvjJ6VK6ffOk9S50hZpgZQmdXOOM76Bv2lYrqEbpQjnWOIy5yhdE4H/lnM3abT0OOsNFAAAsO9Bwm9KjzqnE05zCuNB522VaukP0pvO3YO3nLtRuc7+D/OlsVIPqZ3UTPohO/bBBv8fjxuaElSltesAAAAASUVORK5CYII=)}.os-icon.windows{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAApdSURBVHic7dsxbttYGEZRylCfZAfpvYys23uYxuvI7EDTTBdJRCRTj3z3HECdDf+N9V0I1OlyuSwAQMvb6AMAgNcTAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCzqMPAAC+3unj8/uyLD9vvQQAABzQ2sAvy/Lt3u8LAADYoWcHfo0AAIABth74NQIAADYweuDXCAAAeMDeB36NAACAK44+8GsEAABJsw/8GgEAwJTqA79GAABwSAb+OQIAgF0y8NsSAAAMYeDHEgAAbMLA75sAAOAhBv7YBAAAVxn4uQkAgCgD3yYAACZl4LlHAAAclIHnGQIAYKcMPFsSAACDGHhGEgAAGzHw7JkAAHiQgefIBADADQaemQkAIMvAUyYAgGkZeLhNAACHZeDhcQIA2C0DD9sRAMAwBh7GEQDAZgw87JcAAB5m4OG4BABwk4GHeQkACDPw0CUAoO336AOAMd5GHwAAvJ4AAIAgAQAAQZ4BgA2tPWR3+fX+fchhQJ4AgCd4ih44KgEAdxh4YFYCgDQDD1QJAKZm4AGuEwAcmoEHeIwAYNcMPMA2BABDGXiAMQQAmzLwAPskAHiKgQc4JgHAXQYeYE4CIM7AAzQJgMkZeACuEQAHZ+ABeIQA2DkDD8AWBMBgBh6AEQTAxgw8AHskAJ5k4AE4IgGwwsADMKN8ABh4AIqmDwADDwB/OnwAGHgA+Hu7DwADDwBfb3gAGHgAeL3NA8DAA8D+PB0ABh4Ajmc1AAw8AMznbOABoOe8LMvv0UcAAK/1NvoAAOD1BAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAoNPlchl9AwDwYj4BAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAg6Hz6+LyMPgKqLr/eTyP/vv9/6PIJAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQedlWX4sy/Lzzuvb688CALZ0vvx6/3dZln/+f/3h9PH5fREIADCV89oPCAQAmM9qAKwRCABwPE8HwBqBAAD7s3kArBEIAPB6wwNgjUAAgK+3+wBYIxAA4O8dPgDWCAQA+NP0AbBGIABQlA+ANQIBgBkJgCcJBACOSABsTCAAsEcCYDCBAMAIAmDnBAIAWxAABycQAHiEAJicQADgGgEQJxAAmgQAdwkEgDkJAJ4iEACOSQCwKYEAsE8CgKEEAsAYAoBdEwgA2xAAHJpAAHiMAGBqAgHgOgFAmkAAqgQA3CEQgFkJAHjCFwQCwBCny+Uy+gZgkNPHpzcAiHobfQAA8HoCAACCBAAABHkIENp+LL7FAEkeAgRu8jVHmJcAAB4mEOC4BACwGYEA+yUAgGEEAowjAIDdEgiwHQEAHJZAgMcJAGBaAgFuEwBAlkCgTAAA3CAQmJkAAHiQQODIBADARgQCeyYAAAYRCIwkAAB2SiCwJQEAcFACgWcIAIBJCQTuEQAAUQKhTQAAcJVAmJsAAOAhAuHYBAAAmxAI+yYAABhCIIwlAADYJYGwLQEAwCEJhOcIAACmJBDuEwAAJNUDQQAAwBWzB4IAAIAHHD0QBAAAbGDvgSAAAGCA0YEgAABgh7YOBAEAAAf0bCAIAACY0FogCAAACHobfQAA8HoCAACCBAAABAkAAAgSAAAQJAAAIEgAAECQAACAIAEAAEECAACCBAAABAkAAAgSAAAQJAAAIEgAAEDQf5pXFokUyDSTAAAAAElFTkSuQmCC)}.os-icon.linux{background-image:url(data:image/png;base64,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)}.os-icon.android{background-image:url(data:image/png;base64,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)}.os-icon.other{background-image:url(data:image/png;base64,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)}::ng-deep .date-time-container.data-table-date-time{position:fixed;z-index:9999}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-inputtext{height:.0625rem;width:.0625rem;padding:0}::ng-deep .date-time-container.data-table-date-time .filter-button-container{height:3.125rem;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container.data-table-date-time .filter-button-container .toggleButton{padding-left:var(--paddingSmall);padding-right:var(--paddingSmall);text-align:center;background-color:var(--inputBorder);color:var(--tableText);width:unset;height:1.4375rem;line-height:1.4375rem;font-size:.875rem;font-weight:600;position:relative;float:left;cursor:pointer;border-radius:.25rem;margin-right:var(--marginSmall);transition:.3s}::ng-deep .date-time-container.data-table-date-time .filter-button-container .toggleButton:hover{filter:brightness(90%);transition:.3s}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-inputtext{border-top-left-radius:1.25rem;border-bottom-left-radius:1.25rem;text-indent:.3125rem}::ng-deep .date-time-container.data-table-date-time .p-calendar .p-button-icon-only{border-top-right-radius:1.25rem;border-bottom-right-radius:1.25rem}::ng-deep .tag-selector-container.data-table-tag-selector{position:fixed;z-index:9999;width:21.875rem;height:-moz-fit-content;height:fit-content;background:var(--formBackground);display:flex;flex-direction:column;justify-content:flex-end;padding:.625rem;border-radius:var(--inputBorderRadius);box-shadow:var(--shadowLarge);margin-top:-1.25rem;border-color:var(--stroke);border-style:solid}::ng-deep .tag-selector-container.data-table-tag-selector .tag-selector-label{margin-bottom:.3125rem;margin-left:.125rem;font-weight:600;color:var(--menu)}::ng-deep .tag-selector-container.data-table-tag-selector .select2-search__field{height:2.1875rem}::ng-deep .tag-selector-container.data-table-tag-selector .nf-select2-dropdown{width:calc(100% - 1.25rem)!important}::ng-deep .tag-selector-container .icon-close{position:absolute;top:.5rem;right:.5rem;cursor:pointer;color:var(--icon);font-weight:600}::ng-deep .tag-selector-container .icon-close:hover{filter:brightness(50%)}\n"] }]
|
|
836
|
-
}], ctorParameters: function () { return [{ type: i1.DataTableService }, { type: i2.DataTableFilterService }]; }, propDecorators: { rowData: [{
|
|
837
|
-
type: Input
|
|
838
|
-
}], expandRowData: [{
|
|
839
|
-
type: Input
|
|
840
|
-
}], collapseRowData: [{
|
|
841
|
-
type: Input
|
|
842
|
-
}], rowValidation: [{
|
|
843
|
-
type: Input
|
|
844
|
-
}], isTimeSearchAvailable: [{
|
|
845
|
-
type: Input
|
|
846
|
-
}], isLoading: [{
|
|
847
|
-
type: Input
|
|
848
|
-
}], tableId: [{
|
|
849
|
-
type: Input
|
|
850
|
-
}], options: [{
|
|
851
|
-
type: Input
|
|
852
|
-
}], validateService: [{
|
|
853
|
-
type: Input
|
|
854
|
-
}], rowsToggled: [{
|
|
855
|
-
type: Input
|
|
856
|
-
}], tableRefreshCount: [{
|
|
857
|
-
type: Input
|
|
858
|
-
}], view: [{
|
|
859
|
-
type: Input
|
|
860
|
-
}], serverSideDataSource: [{
|
|
861
|
-
type: Input
|
|
862
|
-
}], allowDownload: [{
|
|
863
|
-
type: Input
|
|
864
|
-
}], startCount: [{
|
|
865
|
-
type: Input
|
|
866
|
-
}], endCount: [{
|
|
867
|
-
type: Input
|
|
868
|
-
}], totalCount: [{
|
|
869
|
-
type: Input
|
|
870
|
-
}], emptyMsg: [{
|
|
871
|
-
type: Input
|
|
872
|
-
}], filterApplied: [{
|
|
873
|
-
type: Input
|
|
874
|
-
}], menuItems: [{
|
|
875
|
-
type: Input
|
|
876
|
-
}], headerActions: [{
|
|
877
|
-
type: Input
|
|
878
|
-
}], noItemsClass: [{
|
|
879
|
-
type: Input
|
|
880
|
-
}], entityTypeName: [{
|
|
881
|
-
type: Input
|
|
882
|
-
}], showNoItemsAdd: [{
|
|
883
|
-
type: Input
|
|
884
|
-
}], currentPage: [{
|
|
885
|
-
type: Input
|
|
886
|
-
}], noItemsImage: [{
|
|
887
|
-
type: Input
|
|
888
|
-
}], rowHeight: [{
|
|
889
|
-
type: Input
|
|
890
|
-
}], filterName: [{
|
|
891
|
-
type: Input
|
|
892
|
-
}], filterColumn: [{
|
|
893
|
-
type: Input
|
|
894
|
-
}], actionRequested: [{
|
|
895
|
-
type: Output
|
|
896
|
-
}], gridReady: [{
|
|
897
|
-
type: Output
|
|
898
|
-
}], dragStart: [{
|
|
899
|
-
type: Output
|
|
900
|
-
}], dragLeave: [{
|
|
901
|
-
type: Output
|
|
902
|
-
}], pageChanged: [{
|
|
903
|
-
type: Output
|
|
904
|
-
}], calendar: [{
|
|
905
|
-
type: ViewChild,
|
|
906
|
-
args: ['calendar', { static: false }]
|
|
907
|
-
}], contextMenu: [{
|
|
908
|
-
type: ViewChild,
|
|
909
|
-
args: ['contextMenu']
|
|
910
|
-
}], tableContainer: [{
|
|
911
|
-
type: ViewChild,
|
|
912
|
-
args: ['tableContainer']
|
|
913
|
-
}], columnDefinitions: [{
|
|
914
|
-
type: Input
|
|
915
|
-
}], refreshCount: [{
|
|
916
|
-
type: Input
|
|
917
|
-
}] } });
|
|
918
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixpQ0FBaUM7QUFDakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sc0VBQXNFLENBQUM7QUFDakgsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFFNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPbEMsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixJQUFhLE9BQU8sQ0FBRSxFQUFVO1FBQzlCLElBQUksQ0FBQyxHQUFHLENB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QWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFzSG1DLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0ssY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBcUJkLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFTTyxZQUFZO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIEltcG9ydCB0aGUgcmVzaXplZCBldmVudCBtb2RlbFxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcblxuaW1wb3J0IHtUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnR9IGZyb20gXCIuL2NvbHVtbi1oZWFkZXJzL3RhYmxlLWNvbHVtbi1kZWZhdWx0L3RhYmxlLWNvbHVtbi1kZWZhdWx0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZUNvbHVtblNlbGVjdENvbXBvbmVudH0gZnJvbSBcIi4vY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLXNlbGVjdC90YWJsZS1jb2x1bW4tc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZUNvbHVtbk1lbnVDb21wb25lbnR9IGZyb20gXCIuL2NvbHVtbi1oZWFkZXJzL3RhYmxlLWNvbHVtbi1tZW51L3RhYmxlLWNvbHVtbi1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZUNlbGxTZWxlY3RDb21wb25lbnR9IGZyb20gXCIuL2NlbGxzL3RhYmxlLWNlbGwtc2VsZWN0L3RhYmxlLWNlbGwtc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZUNlbGxNZW51Q29tcG9uZW50fSBmcm9tIFwiLi9jZWxscy90YWJsZS1jZWxsLW1lbnUvdGFibGUtY2VsbC1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEYXRhVGFibGVTZXJ2aWNlfSBmcm9tIFwiLi9kYXRhLXRhYmxlLnNlcnZpY2VcIjtcbmltcG9ydCB7VGFibGVDZWxsVG9rZW5Db21wb25lbnR9IGZyb20gXCIuL2NlbGxzL3RhYmxlLWNlbGwtdG9rZW4vdGFibGUtY2VsbC10b2tlbi5jb21wb25lbnRcIjtcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZSwgRmlsdGVyT2JqfSBmcm9tIFwiLi9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICBASW5wdXQoKSByb3dEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGV4cGFuZFJvd0RhdGE6IGFueTtcbiAgQElucHV0KCkgY29sbGFwc2VSb3dEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIHJvd1ZhbGlkYXRpb246IGFueTtcbiAgLy8gQElucHV0KCkgY29sdW1uRmlsdGVyczogYW55O1xuICBASW5wdXQoKSBpc1RpbWVTZWFyY2hBdmFpbGFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTG9hZGluZzogYW55O1xuICBASW5wdXQoKSBzZXQgdGFibGVJZCggaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3ZjLnRhYmxlSWQgPSBpZDtcbiAgICB0aGlzLnVwZGF0ZUVudGl0eVR5cGVMYWJlbCgpXG4gIH1cbiAgQElucHV0KCkgb3B0aW9ucyA9IHtub1NlbGVjdDogZmFsc2UsIG5vTWVudTogZmFsc2V9O1xuICBASW5wdXQoKSB2YWxpZGF0ZVNlcnZpY2U6IGFueTtcbiAgQElucHV0KCkgcm93c1RvZ2dsZWQ6IGFueTtcbiAgQElucHV0KCkgdGFibGVSZWZyZXNoQ291bnQ6IGFueTtcbiAgQElucHV0KCkgc2V0IHZpZXcodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZpZXcgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBzZXJ2ZXJTaWRlRGF0YVNvdXJjZTogYW55O1xuICBASW5wdXQoKSBhbGxvd0Rvd25sb2FkOiBib29sZWFuO1xuICAvLyBASW5wdXQoKSBmaWx0ZXJzOiBhbnk7XG4gIEBJbnB1dCgpIHN0YXJ0Q291bnQ6IGFueTtcbiAgQElucHV0KCkgZW5kQ291bnQ6IGFueTtcbiAgQElucHV0KCkgdG90YWxDb3VudDogYW55O1xuICBASW5wdXQoKSBlbXB0eU1zZzogYW55O1xuICBASW5wdXQoKSBmaWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lbnVJdGVtczogYW55ID0gW107XG4gIEBJbnB1dCgpIGhlYWRlckFjdGlvbnM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBub0l0ZW1zQ2xhc3M6IGFueSA9ICdiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIvYXNzZXRzL3N2Z3MvTm9fQ2xpZW50cy5zdmdcIiknO1xuICBASW5wdXQoKSBlbnRpdHlUeXBlTmFtZSA9ICdJZGVudGl0aWVzJztcbiAgQElucHV0KCkgc2hvd05vSXRlbXNBZGQgPSB0cnVlO1xuICBASW5wdXQoKSBjdXJyZW50UGFnZSA9IDE7XG4gIEBJbnB1dCgpIG5vSXRlbXNJbWFnZSA9ICdub2RhdGEnO1xuICBASW5wdXQoKSByb3dIZWlnaHQgPSB0aGlzLnJlbVRvUHgoMy4xMjUpO1xuICBASW5wdXQoKSBmaWx0ZXJOYW1lID0gJ25hbWUnO1xuICBASW5wdXQoKSBmaWx0ZXJDb2x1bW4gPSAnbmFtZSc7XG4gIEBPdXRwdXQoKSBhY3Rpb25SZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBzdHJpbmc7IGl0ZW0/OiBhbnkgfT4oKTtcbiAgLy8gQE91dHB1dCgpIGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBncmlkUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkcmFnTGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBfdmlldyA9ICdsaXN0JztcbiAgZnJhbWV3b3JrQ29tcG9uZW50cztcbiAgZ3JpZE1vZHVsZXM7XG4gIGdyaWRPcHRpb25zO1xuICB2aXNpYmxlQ29sdW1ucztcbiAgaGlkZGVuQ29sdW1ucztcbiAgdmlzaWJsZUNvbHVtbklkcztcbiAgaGlkZGVuQ29sdW1uSWRzO1xuICBtZXJnZWRDb2x1bW5EZWZpbml0aW9ucztcbiAgb3Blbk1lbnU7XG4gIG9wZW5IZWFkZXJNZW51O1xuICBmaWx0ZXJPcHRpb25zOiBhbnkgPSBbXTtcbiAgc2hvd0ZpbHRlck9wdGlvbnM7XG4gIHNob3dEYXRlVGltZVBpY2tlcjtcbiAgc2hvd1RhZ1NlbGVjdG9yO1xuICBhcHBlbmRBdHRyaWJ1dGVIYXNoID0gdHJ1ZTtcbiAgYXR0cmlidXRlc0NvbHVtbiA9ICcnO1xuICBkYXRlVGltZUNvbHVtbiA9ICcnO1xuICBkYXRlVGltZUZpbHRlckxhYmVsID0gJyc7XG4gIHNlbGVjdGVkUmFuZ2UgPSAnJztcbiAgZGF0ZVZhbHVlO1xuICBtZW51TGVmdDtcbiAgbWVudVRvcDtcbiAgZ3JpZFJlbmRlcmVkO1xuICByZXNpemVIYW5kbGVySW5pdCA9IGZhbHNlO1xuICByZXNpemVHcmlkQ29sdW1uc0RlYm91bmNlZDtcbiAgc2VsZWN0ZWRJdGVtOiBhbnkgPSB7XG4gICAgYWN0aW9uTGlzdDogW10sXG4gIH07XG4gIGVudGl0eVR5cGVMYWJlbCA9ICcnXG4gIGNvbHVtbkZpbHRlcnM6YW55ID0ge307XG4gIHJvbGVBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICBuYW1lZEF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICAvLyBhcHBsaWVkRmlsdGVycyA9IFtdO1xuICBhdXRvR3JvdXBDb2x1bW5EZWY7XG4gIGN1cnJlbnRIZWFkZXJDb21wb25lbnRQYXJhbXM6IGFueSA9IHt9O1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwdWJsaWMgbWVudUNvbHVtbkRlZmluaXRpb24gPSB7XG4gICAgY29sSWQ6ICd6aXRpLWFnLW1lbnUnLFxuICAgIGZpZWxkOiAneml0aS1hZy1tZW51JyxcbiAgICByZXNpemFibGU6IGZhbHNlLFxuICAgIHdpZHRoOiB0aGlzLnJlbVRvUHgoMy4xMjUpLFxuICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICBsb2NrUG9zaXRpb246IHRydWUsXG4gICAgc3VwcHJlc3NNb3ZhYmxlOiB0cnVlLFxuICAgIGhlYWRlckNsYXNzOiAnbWVudUhlYWRlcicsXG4gICAgY2VsbENsYXNzOiAndENvbCBjZWxsTWVudScsXG4gICAgY2VsbFJlbmRlcmVyOiAnY2VsbE1lbnVDb21wb25lbnQnLFxuICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgb3Blbk1lbnU6ICgkZXZlbnQsIGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy5vcGVuQWN0aW9uTWVudSgkZXZlbnQsIGl0ZW0pO1xuICAgICAgfSxcbiAgICAgIGNsb3NlTWVudTogKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IHRydWUsXG4gICAgcGlubmVkOiAncmlnaHQnLFxuICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5NZW51Q29tcG9uZW50LFxuICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczoge1xuICAgICAgb3BlbkhlYWRlck1lbnU6ICgkZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuSGVhZGVyQWN0aW9uTWVudSgkZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIGNsb3NlTWVudTogKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG4gIHByaXZhdGUgX2luaXRpYWxDb2x1bW5EZWZzO1xuICBwcml2YXRlIF9yZWZyZXNoQ2VsbHNEZWJvdW5jZWQ7XG4gIHByaXZhdGUgX29uQ29sdW1uc1Jlc2l6ZWREZWJvdW5jZWQ7XG4gIHByaXZhdGUgX3NhdmVDb2x1bW5TdGF0ZURlYm91bmNlZDtcblxuICBwcml2YXRlIHNlbGVjdENvbHVtbkRlZmluaXRpb24gPSB7XG4gICAgY29sSWQ6ICd6aXRpLWFnLXNlbGVjdGVkJyxcbiAgICBmaWVsZDogJ3ppdGktYWctc2VsZWN0ZWQnLFxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiB0cnVlLFxuICAgIGxvY2tQb3NpdGlvbjogdHJ1ZSxcbiAgICBzdXBwcmVzc01vdmFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICBwaW5uZWQ6ICdsZWZ0JyxcbiAgICB3aWR0aDogdGhpcy5yZW1Ub1B4KDMuNzUpLFxuICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICBoZWFkZXJDbGFzczogJ3NlbGVjdEhlYWRlcicsXG4gICAgY2VsbENsYXNzOiAndENvbCcsXG4gICAgY2VsbFJlbmRlcmVyOiAnY2VsbFNlbGVjdENvbXBvbmVudCcsXG4gICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICB0b2dnbGVJdGVtOiAoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnppdGlBbGxUb2dnbGVkID0gXy5ldmVyeSh0aGlzLnJvd0RhdGEsIHtzZWxlY3RlZDogdHJ1ZX0pO1xuICAgICAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoQ2VsbHMoe2ZvcmNlOiB0cnVlfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvblJlcXVlc3RlZC5lbWl0KHthY3Rpb246ICd0b2dnbGVJdGVtJywgaXRlbTogaXRlbX0pO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5TZWxlY3RDb21wb25lbnQsXG4gICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB7XG4gICAgICB0b2dnbGVBbGw6IChzZWxlY3RlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3ZjLmdyaWRPYmopIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXy5mb3JFYWNoKHRoaXMucm93RGF0YSwgKHJvdykgPT4ge1xuICAgICAgICAgIHJvdy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25SZXF1ZXN0ZWQuZW1pdCh7YWN0aW9uOiAndG9nZ2xlQWxsJ30pO1xuICAgICAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoQ2VsbHMoe2ZvcmNlOiB0cnVlfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRleHRNZW51JykgY29udGV4dE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlQ29udGFpbmVyJykgdGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN2YzogRGF0YVRhYmxlU2VydmljZSwgcHJpdmF0ZSB0YWJsZUZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UpIHtcbiAgICB0aGlzLnJlc2l6ZUdyaWRDb2x1bW5zRGVib3VuY2VkID0gXy5kZWJvdW5jZSh0aGlzLnN2Yy5yZXNpemVHcmlkQ29sdW1ucy5iaW5kKHRoaXMuc3ZjKSwgMjAsIHtsZWFkaW5nOiB0cnVlfSk7XG4gICAgdGhpcy5fcmVmcmVzaENlbGxzRGVib3VuY2VkID0gXy5kZWJvdW5jZSh0aGlzLnN2Yy5yZWZyZXNoQ2VsbHMuYmluZCh0aGlzLnN2YyksIDUwKTtcbiAgICB0aGlzLl9vbkNvbHVtbnNSZXNpemVkRGVib3VuY2VkID0gXy5kZWJvdW5jZSh0aGlzLnN2Yy5vbkNvbHVtbnNSZXNpemVkLmJpbmQodGhpcy5zdmMpLCA0MDApO1xuICAgIHRoaXMuX3NhdmVDb2x1bW5TdGF0ZURlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5zdmMuc2F2ZUNvbHVtblN0YXRlLmJpbmQodGhpcy5zdmMpLCA0MDApO1xuICB9XG5cbiAgaGlkZU1lbnVJdGVtKG1lbnVJdGVtLCBzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24obWVudUl0ZW0uaGlkZGVuKSkge1xuICAgICAgICAgIHJldHVybiBtZW51SXRlbS5oaWRkZW4oc2VsZWN0ZWRJdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc0Jvb2xlYW4obWVudUl0ZW0uaGlkZGVuKSkge1xuICAgICAgICAgIHJldHVybiBtZW51SXRlbS5oaWRkZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAhc2VsZWN0ZWRJdGVtLmFjdGlvbkxpc3QuaW5jbHVkZXMobWVudUl0ZW0uYWN0aW9uKTtcbiAgICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbHVtbkRlZmluaXRpb25zO1xuXG4gIEBJbnB1dCgpIHNldCBjb2x1bW5EZWZpbml0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fY29sdW1uRGVmaW5pdGlvbnMgPSB2YWx1ZTtcblxuICB9XG5cbiAgZ2V0IHNob3dGaWx0ZXJCYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXcgIT09ICd1cGxvYWQnICYmIHRoaXMuX3ZpZXcgIT09ICdwcm9jZXNzJztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByZWZyZXNoQ291bnQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5zdmMuZ3JpZE9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZHJhd1Jvd3MoKTtcbiAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hDZWxscyh7Zm9yY2U6IHRydWV9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzaG93VGFibGUoKSB7XG4gICAgY29uc3QgX3Nob3dUYWJsZSA9IHRoaXMuaXNMb2FkaW5nIHx8IHRoaXMuZmlsdGVyQXBwbGllZCB8fCB0aGlzLnJvd0RhdGE/Lmxlbmd0aCA+IDA7XG4gICAgaWYgKF9zaG93VGFibGUgJiYgIXRoaXMucmVzaXplSGFuZGxlckluaXQpIHtcbiAgICAgIHRoaXMuX2luaXRHcmlkUmVzaXplSGFuZGxlcigpO1xuICAgIH1cbiAgICByZXR1cm4gX3Nob3dUYWJsZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50cyA9IHtcbiAgICAgIGNlbGxTZWxlY3RDb21wb25lbnQ6IFRhYmxlQ2VsbFNlbGVjdENvbXBvbmVudCxcbiAgICAgIGNlbGxNZW51Q29tcG9uZW50OiBUYWJsZUNlbGxNZW51Q29tcG9uZW50LFxuICAgICAgY2VsbFRva2VuQ29tcG9uZW50OiBUYWJsZUNlbGxUb2tlbkNvbXBvbmVudCxcbiAgICAgIGhlYWRlckNlbGxTZWxlY3RDb21wb25lbnQ6IFRhYmxlQ29sdW1uU2VsZWN0Q29tcG9uZW50LFxuICAgICAgaGVhZGVySGVhZGVyTWVudUNvbXBvbmVudDogVGFibGVDb2x1bW5NZW51Q29tcG9uZW50LFxuICAgICAgaGVhZGVyRGVmYXVsdENvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgIH07XG5cbiAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZiA9IHtcbiAgICAgIGZpZWxkOiAncHJvY2Vzc1RyZWUnLFxuICAgICAgaGVhZGVyTmFtZTogJ1Byb2Nlc3MgTmFtZScsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdjZWxsUmVzb3VyY2VTdGF0dXNDb21wb25lbnQnLFxuICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7cmVzb3VyY2VUeXBlOiAncHJvY2Vzcy1leGVjdXRpb24nfSxcbiAgICAgIGhlYWRlckNvbXBvbmVudEZyYW1ld29yazogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5fY29sdW1uRGVmaW5pdGlvbnMpIHtcbiAgICAgIHRoaXMuX2FkZENvbHVtbkV2ZW50cygpO1xuICAgICAgdGhpcy5fYWRkRGVmYXVsdENvbHVtbkRlZnMoKTtcbiAgICAgIHRoaXMuX3N0b3JlSW5pdGlhbENvbHVtbkRlZnMoKTtcbiAgICAgIHRoaXMuX3NldENvbHVtbldpZHRocygpO1xuICAgICAgdGhpcy5fc2V0Q29sdW1uT3JkZXJBbmRWaXNpYmlsaXR5KCk7XG4gICAgICB0aGlzLl9pbml0Q29sdW1uVmlzaWJpbGl0eSgpO1xuICAgICAgdGhpcy5faW5pdEdyaWRPcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3ZjLmdyaWRPYmogJiYgY2hhbmdlcy5yb3dEYXRhKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoQ2VsbHNEZWJvdW5jZWQoY2hhbmdlcy5yb3dEYXRhKTtcbiAgICB9XG4gIH1cblxuICBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZChldmVudCkge1xuICAgIHRoaXMuc2V0Q29sdW1uVmlzaWJpbGl0eUNvbHVtbihldmVudD8uY29sdW1uLCBldmVudD8udmlzaWJsZSk7XG4gIH1cblxuICBvcGVuQWN0aW9uTWVudShldmVudCwgaXRlbSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB0aGlzLm9wZW5NZW51ID0gdHJ1ZTtcbiAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuY29udGV4dE1lbnU/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCB8fCAxMjA7XG4gICAgICBjb25zdCB3aW5kb3dPZmZzZXQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5jbGllbnRZO1xuICAgICAgY29uc3QgbWVudU9mZnNldCA9IHdpbmRvd09mZnNldCA8PSBoZWlnaHQgPyBoZWlnaHQgLSB3aW5kb3dPZmZzZXQgOiAwO1xuICAgICAgdGhpcy5tZW51TGVmdCA9IGV2ZW50LmNsaWVudFggLSAxMDA7XG4gICAgICB0aGlzLm1lbnVUb3AgPSBldmVudC5jbGllbnRZICsgNSAtIG1lbnVPZmZzZXQ7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgb25HcmlkUmVhZHkocGFyYW1zKSB7XG4gICAgdGhpcy5ncmlkUmVhZHkuZW1pdChwYXJhbXMpO1xuICB9XG5cbiAgcmVzZXRUYWJsZUNvbHVtbnMoKSB7XG4gICAgaWYgKCF0aGlzLnN2Yy5ncmlkT2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMgPSBfLmNsb25lRGVlcCh0aGlzLl9pbml0aWFsQ29sdW1uRGVmcyk7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkuc2V0Q29sdW1uRGVmcyh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zKTtcbiAgICB0aGlzLnN2Yy5yZXNldENvb2tpZUNvbmZpZygpO1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlc2V0Q29sdW1uU3RhdGUoKTtcbiAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUhpZGRlbkNvbHVtbnMoKTtcbiAgICAgIHRoaXMuc3ZjLnJlc2l6ZUdyaWRDb2x1bW5zKCk7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuSGVhZGVyQWN0aW9uTWVudShldmVudCk6IHZvaWQge1xuICAgIHRoaXMubWVudUxlZnQgPSBldmVudC5jbGllbnRYIC0gMTUwO1xuICAgIHRoaXMubWVudVRvcCA9IGV2ZW50LmNsaWVudFkgKyA1O1xuICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgdGhpcy5vcGVuSGVhZGVyTWVudSA9IHRydWU7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHtcbiAgICAgIGFjdGlvbkxpc3Q6IFtdLFxuICAgIH07XG4gICAgdGhpcy5vcGVuTWVudSA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkhlYWRlck1lbnUgPSBmYWxzZTtcbiAgfVxuXG4gIG9wZW5IZWFkZXJGaWx0ZXIoZXZlbnQsIG9wdGlvbnMsIHR5cGUsIGNvbHVtbklkLCBmaWx0ZXJMYWJlbCwgaGVhZGVyQ29tcG9uZW50UGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1lbnVMZWZ0ID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLm1lbnVUb3AgPSBldmVudC5jbGllbnRZICsgMTA7XG4gICAgaWYgKHR5cGUgPT09ICdEQVRFVElNRScpIHtcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb2x1bW4gPSBjb2x1bW5JZDtcbiAgICAgIHRoaXMuZGF0ZVRpbWVGaWx0ZXJMYWJlbCA9IGZpbHRlckxhYmVsIHx8ICdEYXRlOiAnO1xuICAgICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0RhdGVUaW1lUGlja2VyID0gdHJ1ZTtcbiAgICAgIH0sIDEwKTtcbiAgICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZSgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdBVFRSSUJVVEUnKSB7XG4gICAgICB0aGlzLmFwcGVuZEF0dHJpYnV0ZUhhc2ggPSBoZWFkZXJDb21wb25lbnRQYXJhbXMuYXBwZW5kQXR0cmlidXRlSGFzaCAhPT0gZmFsc2U7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXNDb2x1bW4gPSBjb2x1bW5JZDtcbiAgICAgIHRoaXMucm9sZUF0dHJpYnV0ZXMgPSBoZWFkZXJDb21wb25lbnRQYXJhbXM/LmdldFJvbGVBdHRyaWJ1dGVzKCk7XG4gICAgICB0aGlzLm5hbWVkQXR0cmlidXRlcyA9IGhlYWRlckNvbXBvbmVudFBhcmFtcz8uZ2V0TmFtZWRBdHRyaWJ1dGVzKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMgPSBoZWFkZXJDb21wb25lbnRQYXJhbXMuZ2V0U2VsZWN0ZWRSb2xlQXR0cmlidXRlcygpO1xuICAgICAgdGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcyA9IGhlYWRlckNvbXBvbmVudFBhcmFtcy5nZXRTZWxlY3RlZE5hbWVkQXR0cmlidXRlcygpO1xuICAgICAgdGhpcy5kYXRlVGltZUZpbHRlckxhYmVsID0gZmlsdGVyTGFiZWw7XG4gICAgICB0aGlzLmN1cnJlbnRIZWFkZXJDb21wb25lbnRQYXJhbXMgPSBoZWFkZXJDb21wb25lbnRQYXJhbXM7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93VGFnU2VsZWN0b3IgPSB0cnVlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlck9wdGlvbnMgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0ZVJhbmdlRmlsdGVyKHJhbmdlKSB7XG4gICAgbGV0IHN0YXJ0RGF0ZTtcbiAgICBsZXQgbGFiZWw7XG4gICAgbGV0IGVuZERhdGUgPSBtb21lbnQoKTtcbiAgICBsZXQgY2xvc2VDYWxlbmRhciA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZFJhbmdlID0gcmFuZ2U7XG4gICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdob3VycycpO1xuICAgICAgICBsYWJlbCA9ICdMYXN0IEhvdXInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDI0LCAnaG91cnMnKTtcbiAgICAgICAgbGFiZWwgPSAnTGFzdCBEYXknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCg3LCAnZGF5cycpO1xuICAgICAgICBsYWJlbCA9ICdMYXN0IFdlZWsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ21vbnRoJyk7XG4gICAgICAgIGxhYmVsID0gJ0xhc3QgTW9udGgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICAgIGlmICghdGhpcy5kYXRlVmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KHRoaXMuZGF0ZVZhbHVlWzBdKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZVZhbHVlWzFdICE9PSB1bmRlZmluZWQgJiYgdGhpcy5kYXRlVmFsdWVbMV0gIT09IG51bGwpIHtcbiAgICAgICAgICBlbmREYXRlID0gbW9tZW50KHRoaXMuZGF0ZVZhbHVlWzFdKTtcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCA9ICdDdXN0b20nO1xuICAgICAgICBjbG9zZUNhbGVuZGFyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoMjQsICdob3VycycpO1xuICAgICAgICBsYWJlbCA9ICdMYXN0IERheSc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBzdGFydERhdGVSYW5nZSA9IGVuY29kZVVSSUNvbXBvbmVudChzdGFydERhdGUudG9JU09TdHJpbmcoKSk7XG4gICAgY29uc3QgZW5kRGF0ZVJhbmdlID0gZW5jb2RlVVJJQ29tcG9uZW50KGVuZERhdGUudG9JU09TdHJpbmcoKSk7XG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJzW3RoaXMuZGF0ZVRpbWVDb2x1bW5dID0gW3N0YXJ0RGF0ZVJhbmdlLCBlbmREYXRlUmFuZ2VdO1xuXG4gICAgaWYgKGNsb3NlQ2FsZW5kYXIpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlKCk7XG4gICAgfVxuICAgIGlmIChyYW5nZSAhPT0gJ2N1c3RvbScpIHtcbiAgICAgIHRoaXMuZGF0ZVZhbHVlID0gW3N0YXJ0RGF0ZS50b0RhdGUoKSwgZW5kRGF0ZS50b0RhdGUoKV07XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlck9iajogRmlsdGVyT2JqID0ge1xuICAgICAgY29sdW1uSWQ6IHRoaXMuZGF0ZVRpbWVDb2x1bW4sXG4gICAgICB2YWx1ZTogW3N0YXJ0RGF0ZVJhbmdlLCBlbmREYXRlUmFuZ2VdLFxuICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgZmlsdGVyTmFtZTogdGhpcy5kYXRlVGltZUZpbHRlckxhYmVsLFxuICAgICAgdHlwZTogJ0RBVEVUSU1FJ1xuICAgIH07XG5cbiAgICB0aGlzLnRhYmxlRmlsdGVyU2VydmljZS51cGRhdGVGaWx0ZXIoZmlsdGVyT2JqKTtcbiAgfVxuXG4gIHRhZ1NlbGVjdGlvbkNoYW5nZWQoZXZlbnQsIGlzUm9sZSkge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgIGlmIChpc1JvbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMgPSBbXy5sYXN0KHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICBsYWJlbCArPSAnLCAnO1xuICAgICAgICAgIHZhbHVlICs9ICcsICc7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwgKz0gKCh0aGlzLmFwcGVuZEF0dHJpYnV0ZUhhc2ggPyAnIycgOiAnJykgKyBhdHRyKTtcbiAgICAgICAgdmFsdWUgKz0gKCh0aGlzLmFwcGVuZEF0dHJpYnV0ZUhhc2ggPyAnJTIzJyA6ICcnKSArIGF0dHIpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgICAgY29uc3QgYXR0cklkTWFwID0gdGhpcy5jdXJyZW50SGVhZGVyQ29tcG9uZW50UGFyYW1zLmdldE5hbWVkQXR0cmlidXRlc01hcCgpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzID0gW18ubGFzdCh0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV07XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICBsYWJlbCArPSAnLCAnO1xuICAgICAgICAgIHZhbHVlICs9ICcsICc7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwgKz0gJ0AnICsgYXR0cjtcbiAgICAgICAgdmFsdWUgKz0gJyU0MCcgKyBhdHRySWRNYXBbYXR0cl07XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyT2JqOiBGaWx0ZXJPYmogPSB7XG4gICAgICBjb2x1bW5JZDogdGhpcy5hdHRyaWJ1dGVzQ29sdW1uLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgZmlsdGVyTmFtZTogdGhpcy5kYXRlVGltZUZpbHRlckxhYmVsLFxuICAgICAgdHlwZTogJ0FUVFJJQlVURSdcbiAgICB9O1xuICAgIHRoaXMuY3VycmVudEhlYWRlckNvbXBvbmVudFBhcmFtcy5zZXRTZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyk7XG4gICAgdGhpcy5jdXJyZW50SGVhZGVyQ29tcG9uZW50UGFyYW1zLnNldFNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMpO1xuICAgIHRoaXMudGFibGVGaWx0ZXJTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXJPYmopO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXIoZXZlbnQsIGZpbHRlcikge1xuICAgIHRoaXMudGFibGVGaWx0ZXJTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXIpO1xuICAgIHRoaXMuY2xvc2VIZWFkZXJGaWx0ZXIoZXZlbnQpO1xuICB9XG5cbiAgY2xvc2VIZWFkZXJGaWx0ZXIoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJPcHRpb25zID0gZmFsc2U7XG4gIH1cblxuICBjbG9zZURhdGVUaW1lKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGF0ZVRpbWVQaWNrZXIgPSBmYWxzZTtcbiAgfVxuXG4gIGNsb3NlVGFnU2VsZWN0b3IoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dUYWdTZWxlY3RvciA9IGZhbHNlO1xuICB9XG5cbiAgb3BlbkNyZWF0ZSgpIHtcbiAgICB0aGlzLmFjdGlvblJlcXVlc3RlZC5lbWl0KHthY3Rpb246ICdjcmVhdGUnfSk7XG4gIH1cblxuICBhbnlTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gXy5zb21lKHRoaXMucm93RGF0YSwge3NlbGVjdGVkOiB0cnVlfSk7XG4gIH1cblxuICBzaG93RG93bmxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dEb3dubG9hZCAmJiB0aGlzLl92aWV3ICE9PSAncHJvY2Vzcyc7XG4gIH1cblxuICBfaW5pdEdyaWRSZXNpemVIYW5kbGVyKCkge1xuICAgIGlmICghdGhpcy50YWJsZUNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgIHRoaXMucmVzaXplR3JpZENvbHVtbnNEZWJvdW5jZWQoKTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZXNpemVIYW5kbGVySW5pdCA9IHRydWU7XG4gIH1cblxuICBfaW5pdEdyaWRPcHRpb25zKCkge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICByb3dDbGFzczogJ3ppdGktdGFibGUtcm93JyxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICBpbW11dGFibGVEYXRhOiB0cnVlLFxuICAgICAgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHN1cHByZXNzSG9yaXpvbnRhbFNjcm9sbDogZmFsc2UsXG4gICAgICBzdG9wRWRpdGluZ1doZW5HcmlkTG9zZXNGb2N1czogdHJ1ZSxcbiAgICAgIHN1cHByZXNzUHJvcGVydHlOYW1lc0NoZWNrOiB0cnVlLFxuICAgICAgYW5pbWF0ZVJvd3M6IHRydWUsXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgZmlsdGVyOiBmYWxzZSwgLy8gc2V0IGZpbHRlcmluZyBvbiBmb3IgYWxsIGNvbHVtbnNcbiAgICAgIH0sXG4gICAgICBvblJvd0RyYWdNb3ZlOiAocGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXJ0LmVtaXQocGFyYW1zKTtcbiAgICAgIH0sXG4gICAgICBvblJvd0RyYWdMZWF2ZTogKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGlzLmRyYWdMZWF2ZS5lbWl0KHBhcmFtcyk7XG4gICAgICB9LFxuICAgICAgb25Sb3dEcmFnRW5kOiAoKSA9PiB7XG4gICAgICAgICQoJy5hdHRyaWJ1dGUtaXRlbScpLnNob3coKTtcbiAgICAgICAgJCgnLmRyYWctaG92ZXInKS5yZW1vdmVDbGFzcygnZHJhZy1ob3ZlcicpO1xuICAgICAgICAkKCcjQ29sdW1uVmlzaWJpbGl0eUhlYWRlcicpLnRyaWdnZXIoJ2NsaWNrJyk7XG4gICAgICAgICQoJy5uZXctYXR0cmlidXRlLXRhcmdldCcpLmhpZGUoKTtcbiAgICAgIH0sXG4gICAgICByb3dDbGFzc1J1bGVzOiB7XG4gICAgICAgIC8vIHJvdyBzdHlsZSBmdW5jdGlvblxuICAgICAgICAncm93LWludmFsaWQnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIF8uZ2V0KHBhcmFtcywgJ2RhdGEuaW52YWxpZCcpO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNvcGllZCc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gXy5nZXQocGFyYW1zLCAnZGF0YS5jb3BpZWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC1zdWItcHJvY2Vzcyc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyAmJlxuICAgICAgICAgICAgICAhXy5nZXQocGFyYW1zLCAnZGF0YS5pc1Jvb3QnKSAmJlxuICAgICAgICAgICAgICAhXy5pc0VtcHR5KF8uZ2V0KHBhcmFtcywgJ2RhdGEuc3VicHJvY2Vzc0lkJykpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZCc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgfHwgcGFyYW1zLmFwaS52aWV3ID09PSAndXNlci1yb2xlcycpICYmXG4gICAgICAgICAgICAgICFfLmdldChwYXJhbXMsICdkYXRhLmlzUm9vdCcpICYmXG4gICAgICAgICAgICAgICFfLmlzRW1wdHkoXy5nZXQocGFyYW1zLCAnZGF0YS5wYXJlbnRJZCcpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtc2Vjb25kJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnICYmXG4gICAgICAgICAgICAgICFfLmdldChwYXJhbXMsICdkYXRhLmlzUm9vdCcpICYmXG4gICAgICAgICAgICAgIF8uZ2V0KHBhcmFtcywgJ2RhdGEuaXNQYXJhbGxlbCcpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC1ldmVuJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyB8fCBwYXJhbXMuYXBpLnZpZXcgPT09ICd1c2VyLXJvbGVzJykgJiZcbiAgICAgICAgICAgICAgXy5nZXQocGFyYW1zLCAnZGF0YS5wYXJlbnRJbmRleCcpICUgMiA+IDBcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLW9kZCc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgfHwgcGFyYW1zLmFwaS52aWV3ID09PSAndXNlci1yb2xlcycpICYmXG4gICAgICAgICAgICAgIF8uZ2V0KHBhcmFtcywgJ2RhdGEucGFyZW50SW5kZXgnKSAlIDIgPT09IDBcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLXdhcm4nOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnICYmIF8uZ2V0KHBhcmFtcywgJ2RhdGEuc3RhdGUnKSA9PT0gJ1dBUk5JTkcnO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLWhlYWRlcic6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gcGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgJiYgXy5nZXQocGFyYW1zLCAnZGF0YS5yb3dUeXBlJykgPT09ICdzdGVwLWhlYWRlcic7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctcm9sZS1pdGVtJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiBfLmdldChwYXJhbXMsICdkYXRhLnJvbGVJdGVtJyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZ2V0Um93SGVpZ2h0OiAocGFyYW1zKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbVRvUHgoMy4xMjUpO1xuICAgICAgfSxcbiAgICAgIG9uQ2VsbEVkaXRpbmdTdG9wcGVkOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlU2VydmljZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZCA9IF8uZ2V0KGV2ZW50T2JqLCAnY29sRGVmLmZpZWxkJywgJycpO1xuICAgICAgICBpZiAoXy5pbmNsdWRlcyhmaWVsZC50b0xvd2VyQ2FzZSgpLCAnYXR0cmlidXRlJykpIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWwgPSBldmVudE9iai5uZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgIF8uc2V0KGV2ZW50T2JqLCBgZGF0YS4ke2ZpZWxkfWAsIG5ld1ZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgXy5zZXQoZXZlbnRPYmosIGBkYXRhLiR7ZmllbGR9YCwgZXZlbnRPYmoubmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlVGFibGUoZXZlbnRPYmopO1xuICAgICAgfSxcbiAgICAgIGdldFJvd05vZGVJZDogKGRhdGEpID0+IGRhdGEubmFtZSxcbiAgICAgIG9uQm9keVNjcm9sbDogKHNjcm9sbGVyKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhbmRsZVRhYmxlU2Nyb2xsKHNjcm9sbGVyKTtcbiAgICAgIH0sXG4gICAgICBvbkdyaWRSZWFkeTogKGdyaWQpID0+IHtcbiAgICAgICAgZ3JpZC5hcGkueml0aUFsbFRvZ2dsZWQgPSBmYWxzZTtcbiAgICAgICAgZ3JpZC5hcGkueml0aUhpZGVDb2x1bW4gPSB0aGlzLnNldENvbHVtblZpc2liaWxpdHlDb2x1bW4uYmluZCh0aGlzKTtcbiAgICAgICAgZ3JpZC5hcGkudmFsaWRhdGVUYWJsZSA9IHRoaXMuX3ZhbGlkYXRlVGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgZ3JpZC5hcGkudmlldyA9IHRoaXMuX3ZpZXc7XG4gICAgICAgIGdyaWQuYXBpLnppdGlSb3dEYXRhID0gdGhpcy5yb3dEYXRhO1xuICAgICAgICBncmlkLmFwaS5vcGVuSGVhZGVyRmlsdGVyID0gdGhpcy5vcGVuSGVhZGVyRmlsdGVyLmJpbmQodGhpcyk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICBncmlkLmFwaS5yb3dzVG9nZ2xlZCA9IHRoaXMucm93c1RvZ2dsZWQgPyB0aGlzLnJvd3NUb2dnbGVkLmJpbmQodGhpcykgOiAoKSA9PiB7fTtcbiAgICAgICAgaWYgKHRoaXMuc2VydmVyU2lkZURhdGFTb3VyY2UpIHtcbiAgICAgICAgICBncmlkLmFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZSh0aGlzLnNlcnZlclNpZGVEYXRhU291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqID0gZ3JpZDtcbiAgICAgICAgXy5kZWZlcih0aGlzLl9hcHBseUNvbHVtblN0YXRlLmJpbmQodGhpcykpO1xuICAgICAgfSxcbiAgICAgIG9uQ29sdW1uVmlzaWJsZTogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIGlmICghZXZlbnRPYmouY29sdW1uKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uVmlzaWJpbGl0eShldmVudE9iai5jb2x1bW4uY29sRGVmLmNvbElkLCBldmVudE9iai52aXNpYmxlKTtcbiAgICAgICAgaWYgKGV2ZW50T2JqLnZpc2libGUpIHtcbiAgICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5tb3ZlQ29sdW1ucyhcbiAgICAgICAgICAgICAgW2V2ZW50T2JqLmNvbHVtbi5jb2xEZWYuY29sSWRdLFxuICAgICAgICAgICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLmxlbmd0aCAtIDFcbiAgICAgICAgICApO1xuICAgICAgICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkuZW5zdXJlQ29sdW1uVmlzaWJsZShldmVudE9iai5jb2x1bW4uY29sRGVmLmNvbElkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVHcmlkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLnN2Yy5zYXZlQ29sdW1uU3RhdGUoKTtcbiAgICAgIH0sXG4gICAgICBvbkZpcnN0RGF0YVJlbmRlcmVkOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgdGhpcy5zdmMucmVzaXplR3JpZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5ncmlkUmVuZGVyZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIG9uQ29sdW1uUGlubmVkOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgaWYgKCFldmVudE9iai5jb2x1bW4pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sSWQgPSBldmVudE9iai5jb2x1bW4uY29sRGVmLmNvbElkO1xuICAgICAgICBjb25zdCBwaW5uZWQgPSBldmVudE9iai5waW5uZWQgPT09ICdsZWZ0JztcbiAgICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyA9IF8ubWFwKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xJZCkge1xuICAgICAgICAgICAgY29sRGVmLmxvY2tQb3NpdGlvbiA9IHBpbm5lZDtcbiAgICAgICAgICAgIGNvbERlZi5zdXBwcmVzc01vdmFibGUgPSBwaW5uZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb2xEZWY7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl91cGRhdGVHcmlkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLnN2Yy5yZXNpemVHcmlkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLnN2Yy5zYXZlQ29sdW1uU3RhdGUoKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbHVtblJlc2l6ZWQ6IChldmVudE9iaikgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmNvbHVtbiB8fCBldmVudE9iai5zb3VyY2UgPT09ICdzaXplQ29sdW1uc1RvRml0Jykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbkNvbHVtbnNSZXNpemVkRGVib3VuY2VkKGV2ZW50T2JqLmNvbHVtbik7XG4gICAgICB9LFxuICAgICAgb25Db2x1bW5Nb3ZlZDogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIHRoaXMuX3NhdmVDb2x1bW5TdGF0ZURlYm91bmNlZCgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgX3ZhbGlkYXRlVGFibGUoZXZlbnRPYmopIHtcbiAgICB0aGlzLnJvd0RhdGFbZXZlbnRPYmoucm93SW5kZXhdID0gZXZlbnRPYmouZGF0YTtcbiAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTZXJ2aWNlKHRoaXMucm93RGF0YSk7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaENlbGxzKHtmb3JjZTogdHJ1ZX0pO1xuICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB9LCA1MCk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgX2FwcGx5Q29sdW1uU3RhdGUoKSB7XG4gICAgY29uc3QgdGFibGVTdGF0ZUNvb2tpZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGB6aXRpXyR7dGhpcy5zdmMudGFibGVJZH1fdGFibGVfc3RhdGVgKTtcbiAgICBjb25zdCB0YWJsZVN0YXRlID0gSlNPTi5wYXJzZSh0YWJsZVN0YXRlQ29va2llKTtcbiAgICBpZiAodGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkuYXBwbHlDb2x1bW5TdGF0ZSh7c3RhdGU6IHRhYmxlU3RhdGV9KTtcbiAgICAgIHRoaXMuX3VwZGF0ZUhpZGRlbkNvbHVtbnMoKTtcbiAgICB9XG4gIH1cblxuICBfYWRkQ29sdW1uRXZlbnRzKCkge1xuICAgIHRoaXMuX2NvbHVtbkRlZmluaXRpb25zID0gXy5tYXAodGhpcy5fY29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgIGNvbERlZi5waW5Db2x1bW4gPSB0aGlzLnN2Yy5waW5Db2x1bW4uYmluZCh0aGlzLnN2Yyk7XG4gICAgICBjb2xEZWYuY2VsbENsYXNzID0gdGhpcy5fZ2V0Q2VsbFN0eWxlLmJpbmQodGhpcyk7XG4gICAgICByZXR1cm4gY29sRGVmO1xuICAgIH0pO1xuICB9XG5cbiAgX2dldENlbGxTdHlsZShwYXJhbXMpIHtcbiAgICBpZiAoIXRoaXMucm93VmFsaWRhdGlvbiB8fCB0aGlzLnJvd1ZhbGlkYXRpb24ubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHRoaXMucm93VmFsaWRhdGlvbltwYXJhbXMubm9kZS5yb3dJbmRleF07XG4gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0IHx8ICF2YWxpZGF0aW9uUmVzdWx0LmVycm9ycykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZCA9IF8uZ2V0KHBhcmFtcywgJ2NvbERlZi5maWVsZCcsICcnKTtcbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcnNbZmllbGRdKSB7XG4gICAgICByZXR1cm4gJ3ppdGktdGFibGUtY2VsbC1lcnJvcic7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuICB1cGRhdGVDb2x1bW5WaXNpYmlsaXR5KGNvbElkLCB2aXNpYmxlKSB7XG4gICAgdGhpcy5fY29sdW1uRGVmaW5pdGlvbnMgPSBfLm1hcCh0aGlzLl9jb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sSWQpIHtcbiAgICAgICAgY29sRGVmLmhpZGUgPSAhdmlzaWJsZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2xEZWY7XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCBjb2xEZWYgb2YgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucykge1xuICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sSWQpIHtcbiAgICAgICAgY29sRGVmLmhpZGUgPSAhdmlzaWJsZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlSGlkZGVuQ29sdW1ucygpO1xuICAgIHRoaXMuc3ZjLnJlc2l6ZUdyaWRDb2x1bW5zKCk7XG4gIH1cblxuICB1cGRhdGVFbnRpdHlUeXBlTGFiZWwoKSB7XG4gICAgc3dpdGNoKHRoaXMuc3ZjLnRhYmxlSWQpIHtcbiAgICAgIGNhc2UgJ2FwaS1zZXNzaW9ucyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0FQSSBTZXNzaW9ucyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXV0aC1wb2xpY2llcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0F1dGggUG9saWNpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlcnRpZmljYXRlLWF1dGhvcml0aWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dC1qd3Qtc2lnbmVycyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0V4dGVybmFsIEpXVCBTaWduZXJzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpZGVudGl0aWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnSWRlbnRpdGllcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncG9zdHVyZS1jaGVja3MnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdQb3N0dXJlIENoZWNrcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRnZS1yb3V0ZXJzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnRWRnZSBSb3V0ZXJzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZXJ2aWNlcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1NlcnZpY2VzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb25maWd1cmF0aW9ucyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0NvbmZpZ3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbmZpZy10eXBlcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0NvbmZpZyBUeXBlcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VydmljZS1wb2xpY2llcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1NlcnZpY2UgUG9saWNpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkZ2Utcm91dGVyLXBvbGljaWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnRWRnZSBSb3V0ZXIgUG9saWNpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdTZXJ2aWNlIEVkZ2UgUm91dGVyIFBvbGljaWVzJztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Nlc3Npb25zJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnU2Vzc2lvbnMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Rlcm1pbmF0b3JzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnVGVybWluYXRvcnMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RyYW5zaXQtcm91dGVycyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1RyYW5zaXQgUm91dGVycyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbHVtblZpc2liaWxpdHlDb2x1bW4oY29sdW1uLCB2aXNpYmxlKSB7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkuc2V0Q29sdW1uc1Zpc2libGUoW2NvbHVtbi5jb2xJZF0sIHZpc2libGUpO1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hIZWFkZXIoKTtcbiAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW4uY29sSWQsIHZpc2libGUpO1xuICAgIH0pO1xuICB9XG5cbiAgX3VwZGF0ZUhpZGRlbkNvbHVtbnMoKSB7XG4gICAgY29uc3QgZ3JpZENvbHVtbkRlZnMgPSB0aGlzLnN2Yy5ncmlkT2JqPy5hcGk/LmNvbHVtbk1vZGVsPy5ncmlkQ29sdW1ucztcbiAgICBjb25zdCB2aXNpYmxlR3JpZENvbHVtbnMgPSBncmlkQ29sdW1uRGVmcy5maWx0ZXIoKGNvbCkgPT4gY29sLnZpc2libGUpO1xuICAgIGNvbnN0IGhpZGRlbkdyaWRDb2x1bW5zID0gZ3JpZENvbHVtbkRlZnMuZmlsdGVyKChjb2wpID0+ICFjb2wudmlzaWJsZSk7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IF8ubWFwKHZpc2libGVHcmlkQ29sdW1ucywgJ2NvbERlZicpO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbklkcyA9IF8ubWFwKHRoaXMudmlzaWJsZUNvbHVtbnMsICdmaWVsZCcpO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IF8ubWFwKGhpZGRlbkdyaWRDb2x1bW5zLCAnY29sRGVmJyk7XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5JZHMgPSBfLm1hcCh0aGlzLmhpZGRlbkNvbHVtbnMsICdmaWVsZCcpO1xuICB9XG5cbiAgYWRkSGVhZGVyTWVudShjb2x1bW5EZWZzID0gW10pIHtcbiAgICBjb2x1bW5EZWZzLmZvckVhY2goKGNvbHVtbkRlZikgPT4ge1xuICAgICAgaWYgKGNvbHVtbkRlZi51c2VIZWFkZXJNZW51KSB7XG4gICAgICAgIGNvbHVtbkRlZi5oZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgb3BlbkhlYWRlck1lbnU6ICgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkhlYWRlckFjdGlvbk1lbnUoJGV2ZW50KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsb3NlTWVudTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfYWRkRGVmYXVsdENvbHVtbkRlZnMoKSB7XG4gICAgdGhpcy5hZGRIZWFkZXJNZW51KHRoaXMuX2NvbHVtbkRlZmluaXRpb25zKTtcbiAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zID0gXy5jbG9uZURlZXAodGhpcy5fY29sdW1uRGVmaW5pdGlvbnMpO1xuICAgIGlmICh0aGlzLl92aWV3ID09PSAncHJvY2VzcycpIHtcbiAgICAgIGNvbnN0IGNlbGxQYXJhbXMgPSBfLmNsb25lRGVlcCh0aGlzLm1lbnVDb2x1bW5EZWZpbml0aW9uLmNlbGxSZW5kZXJlclBhcmFtcyk7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zW3RoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMubGVuZ3RoIC0gMV0uY2VsbFJlbmRlcmVyUGFyYW1zID0gXy5tZXJnZShcbiAgICAgICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zW3RoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMubGVuZ3RoIC0gMV0uY2VsbFJlbmRlcmVyUGFyYW1zLFxuICAgICAgICAgIGNlbGxQYXJhbXNcbiAgICAgICk7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zW3RoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMubGVuZ3RoIC0gMV0uaGVhZGVyQ29tcG9uZW50UGFyYW1zID1cbiAgICAgICAgICB0aGlzLm1lbnVDb2x1bW5EZWZpbml0aW9uLmhlYWRlckNvbXBvbmVudFBhcmFtcztcbiAgICB9IGVsc2UgaWYgKCAodGhpcy5vcHRpb25zLm5vU2VsZWN0ICYmIHRoaXMub3B0aW9ucy5ub01lbnUpKSB7XG4gICAgICAvLyBEb24ndCBhZGQgYW55IGFkZGl0aW9uYWwgY29sdW1uc1xuICAgIH0gZWxzZSBpZiAoICh0aGlzLm9wdGlvbnMubm9TZWxlY3QgJiYgIXRoaXMub3B0aW9ucy5ub01lbnUpKSB7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLnB1c2godGhpcy5tZW51Q29sdW1uRGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIGlmICggIXRoaXMub3B0aW9ucy5ub1NlbGVjdCAmJiB0aGlzLm9wdGlvbnMubm9NZW51KSB7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLnB1c2godGhpcy5zZWxlY3RDb2x1bW5EZWZpbml0aW9uKTtcbiAgICB9ICBlbHNlIGlmICh0aGlzLl92aWV3ICE9PSAndXBsb2FkJykge1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5zcGxpY2UoMCwgMCwgdGhpcy5zZWxlY3RDb2x1bW5EZWZpbml0aW9uKTtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMucHVzaCh0aGlzLm1lbnVDb2x1bW5EZWZpbml0aW9uKTtcbiAgICB9XG4gIH1cblxuICBfc3RvcmVJbml0aWFsQ29sdW1uRGVmcygpIHtcbiAgICB0aGlzLl9pbml0aWFsQ29sdW1uRGVmcyA9IF8uY2xvbmVEZWVwKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMpO1xuICB9XG5cbiAgX2luaXRDb2x1bW5WaXNpYmlsaXR5KCkge1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLl9jb2x1bW5EZWZpbml0aW9ucy5maWx0ZXIoKGNvbCkgPT4gIWNvbC5oaWRlKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSB0aGlzLl9jb2x1bW5EZWZpbml0aW9ucy5maWx0ZXIoKGNvbCkgPT4gY29sLmhpZGUpO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbklkcyA9IF8ubWFwKHRoaXMudmlzaWJsZUNvbHVtbnMsICdmaWVsZCcpO1xuICB9XG5cbiAgX3VwZGF0ZUdyaWRDb2x1bW5zKCkge1xuICAgIHRoaXMuX3NldENvbHVtbldpZHRocygpO1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnNldENvbHVtbkRlZnModGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyk7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaEhlYWRlcigpO1xuICB9XG5cbiAgX3NldENvbHVtbldpZHRocygpIHtcbiAgICBpZiAodGhpcy5fdmlldyA9PT0gJ3VwbG9hZCcgfHwgdGhpcy5fdmlldyA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbFdpZHRoc0Nvb2tpZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGB6aXRpXyR7dGhpcy5zdmMudGFibGVJZH1fY29sdW1uX3dpZHRoc2ApO1xuICAgIGlmICghXy5pc0VtcHR5KGNvbFdpZHRoc0Nvb2tpZSkpIHtcbiAgICAgIGNvbnN0IGNvbFdpZHRocyA9IEpTT04ucGFyc2UoY29sV2lkdGhzQ29va2llKTtcbiAgICAgIF8uZm9yRWFjaChjb2xXaWR0aHMsIChjb2xXaWR0aCwgY29sSWQpID0+IHtcbiAgICAgICAgXy5mb3JFYWNoKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xJZCkge1xuICAgICAgICAgICAgY29sRGVmLndpZHRoID0gY29sV2lkdGg7XG4gICAgICAgICAgICBjb2xEZWYuc3VwcHJlc3NTaXplVG9GaXQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfc2V0Q29sdW1uT3JkZXJBbmRWaXNpYmlsaXR5KCkge1xuICAgIGlmICh0aGlzLl92aWV3ID09PSAndXBsb2FkJyB8fCB0aGlzLl92aWV3ID09PSAncHJvY2VzcycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFibGVTdGF0ZUNvb2tpZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGB6aXRpXyR7dGhpcy5zdmMudGFibGVJZH1fdGFibGVfc3RhdGVgKTtcbiAgICBpZiAoIV8uaXNFbXB0eSh0YWJsZVN0YXRlQ29va2llKSB8fCB0eXBlb2YgdGFibGVTdGF0ZUNvb2tpZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGNvbFN0YXRlcyA9IEpTT04ucGFyc2UodGFibGVTdGF0ZUNvb2tpZSk7XG4gICAgICBjb25zdCBjb2x1bW5JbmRleGVzID0gW107XG4gICAgICBfLmZvckVhY2goY29sU3RhdGVzLCAoY29sU3RhdGUpID0+IHtcbiAgICAgICAgXy5mb3JFYWNoKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xTdGF0ZS5jb2xJZCkge1xuICAgICAgICAgICAgY29sdW1uSW5kZXhlcy5wdXNoKGNvbERlZik7XG4gICAgICAgICAgICBjb2xEZWYuaGlkZSA9IGNvbFN0YXRlLmhpZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgXy5mb3JFYWNoKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgICAgbGV0IGNvbEZvdW5kID0gZmFsc2U7XG4gICAgICAgIF8uZm9yRWFjaChjb2x1bW5JbmRleGVzLCAoY29sSW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xJbmRleC5jb2xJZCkge1xuICAgICAgICAgICAgY29sRm91bmQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghY29sRm91bmQpIHtcbiAgICAgICAgICBjb2x1bW5JbmRleGVzLnB1c2goY29sRGVmKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zID0gY29sdW1uSW5kZXhlcztcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlVGFibGVTY3JvbGwoc2Nyb2xsZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9ICQoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInKS53aWR0aCgpO1xuICAgIGNvbnN0IHZpZXdXaWR0aCA9ICQoJy5hZy1jZW50ZXItY29scy12aWV3cG9ydCcpLndpZHRoKCk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZVdpZHRoID0gc2Nyb2xsV2lkdGggLSB2aWV3V2lkdGg7XG4gICAgaWYgKHNjcm9sbGVyLmxlZnQgPiAwKSB7XG4gICAgICAkKCcuYWctcGlubmVkLWxlZnQtY29scy1jb250YWluZXInKS5hZGRDbGFzcygnYWctcGlubmVkLWxlZnQtc2hhZG93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICQoJy5hZy1waW5uZWQtbGVmdC1jb2xzLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdhZy1waW5uZWQtbGVmdC1zaGFkb3cnKTtcbiAgICB9XG4gICAgaWYgKHNjcm9sbGVyLmxlZnQgPCBzY3JvbGxhYmxlV2lkdGggLSAyKSB7XG4gICAgICAkKCcuYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyJykuYWRkQ2xhc3MoJ2FnLXBpbm5lZC1yaWdodC1zaGFkb3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJCgnLmFnLXBpbm5lZC1yaWdodC1jb2xzLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdhZy1waW5uZWQtcmlnaHQtc2hhZG93Jyk7XG4gICAgfVxuICB9XG5cbiAgcmVtVG9QeChyZW1WYWx1ZSkge1xuICAgIGNvbnN0IHJvb3RGb250U2l6ZTogYW55ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtcbiAgICByZXR1cm4gcmVtVmFsdWUgKiByb290Rm9udFNpemU7XG4gIH07XG59XG4iLCI8ZGl2ICN0YWJsZUNvbnRhaW5lciBjbGFzcz1cImRhdGEtdGFibGUtY29udGFpbmVyXCIgKm5nSWY9XCJzaG93VGFibGU7ZWxzZSBub2RhdGFcIj5cbiAgICA8bGliLXRhYmxlLWZpbHRlci1iYXJcbiAgICAgICAgICAgIFtzdGFydENvdW50XT1cInN0YXJ0Q291bnRcIlxuICAgICAgICAgICAgW2VuZENvdW50XT1cImVuZENvdW50XCJcbiAgICAgICAgICAgIFt0b3RhbENvdW50XT1cInRvdGFsQ291bnRcIlxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgICAgIFtmaWx0ZXJOYW1lXT1cImZpbHRlck5hbWVcIlxuICAgICAgICAgICAgW2ZpbHRlckNvbHVtbl09XCJmaWx0ZXJDb2x1bW5cIlxuICAgID48L2xpYi10YWJsZS1maWx0ZXItYmFyPlxuICAgIDxsaWItdGFibGUtaGlkZGVuLWNvbHVtbnMtYmFyXG4gICAgICAgICAgICAqbmdJZj1cImdyaWRSZW5kZXJlZCAmJiBzaG93RmlsdGVyQmFyXCJcbiAgICAgICAgICAgIFtoaWRkZW5Db2x1bW5zXT1cImhpZGRlbkNvbHVtbnNcIlxuICAgICAgICAgICAgKGNvbHVtblZpc2liaWxpdHlDaGFuZ2VkKT1cImNvbHVtblZpc2liaWxpdHlDaGFuZ2VkKCRldmVudClcIlxuICAgID48L2xpYi10YWJsZS1oaWRkZW4tY29sdW1ucy1iYXI+XG4gICAgPGRpdiAocmVzaXplKT1cInJlc2l6ZUdyaWRDb2x1bW5zRGVib3VuY2VkKCRldmVudClcIiBjbGFzcz1cInppdGktYWctZ3JpZFwiIGlkPVwiSXRlbVRhYmxlXCI+XG4gICAgICAgIDxhZy1ncmlkLWFuZ3VsYXJcbiAgICAgICAgICAgICNuZkFnR3JpZFxuICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwibWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgW2NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gICAgICAgICAgICBbZ2V0RGF0YVBhdGhdPVwic3ZjLmdldERhdGFQYXRoXCJcbiAgICAgICAgICAgIFtnZXRSb3dJZF09XCJzdmMuZ2V0Um93Tm9kZUlkXCJcbiAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXG4gICAgICAgICAgICBbbW9kdWxlc109XCJncmlkTW9kdWxlc1wiXG4gICAgICAgICAgICBbcm93RGF0YV09XCJyb3dEYXRhXCJcbiAgICAgICAgICAgIFt0b29sdGlwSGlkZURlbGF5XT1cIjIwMDAwXCJcbiAgICAgICAgICAgIFt0b29sdGlwU2hvd0RlbGF5XT1cIjBcIlxuICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwieml0aS1hZy1ncmlkLXRhYmxlIGFnLXRoZW1lLWFscGluZSByb3dzXCJcbiAgICAgICAgICAgIGlkPVwiSXRlbUdyaWRcIlxuICAgICAgICA+XG4gICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb3Blbjogb3BlbkhlYWRlck1lbnUgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lbnVMZWZ0ICsgJ3B4JywgdG9wOiBtZW51VG9wICsgJ3B4JyB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidE1lbnUgYWN0aW9uLW1lbnUgaGVhZGVyLW1lbnVcIlxuICAgICAgICAgICAgaWQ9XCJIZWFkZXJBY3Rpb25NZW51XCJcbiAgICA+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInJlc2V0VGFibGVDb2x1bW5zKClcIiBjbGFzcz1cInRBY3Rpb25Sb3dcIiBpZD1cIlJlc2V0VGFibGVCdXR0b25cIj5SZXN0b3JlIERlZmF1bHQgVGFibGU8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhlYWRlckFjdGlvbiBvZiBoZWFkZXJBY3Rpb25zXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25SZXF1ZXN0ZWQuZW1pdCh7IGFjdGlvbjogaGVhZGVyQWN0aW9uLmFjdGlvbiB9KVwiXG4gICAgICAgICAgICBjbGFzcz1cInRBY3Rpb25Sb3dcIlxuICAgICAgICAgICAgaWQ9XCJSZXNldFRhYmxlQnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3toZWFkZXJBY3Rpb24ubmFtZSB8fCBoZWFkZXJBY3Rpb24ubGFiZWx9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9wZW46IG9wZW5NZW51IH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBtZW51TGVmdCArICdweCcsIHRvcDogbWVudVRvcCArICdweCcgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInRNZW51IGFjdGlvbi1tZW51IGl0ZW0tbWVudVwiXG4gICAgICAgICAgICBpZD1cIlJvd0FjdGlvbk1lbnVcIlxuICAgICAgICAgICAgI2NvbnRleHRNZW51XG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1lbnVJdGVtIG9mIG1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvblJlcXVlc3RlZC5lbWl0KHsgYWN0aW9uOiBtZW51SXRlbS5hY3Rpb24sIGl0ZW06IHNlbGVjdGVkSXRlbSB9KVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtZW51LWl0ZW0taGlkZGVuJzogaGlkZU1lbnVJdGVtKG1lbnVJdGVtLCBzZWxlY3RlZEl0ZW0pIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidEFjdGlvblJvd1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJUYWJsZUFjdGlvbkJ1dHRvbl97e21lbnVJdGVtLmFjdGlvbn19XCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3ttZW51SXRlbS5uYW1lIHx8IG1lbnVJdGVtLmxhYmVsfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZUhlYWRlckZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb3Blbjogc2hvd0ZpbHRlck9wdGlvbnMgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lbnVMZWZ0ICsgJ3B4JywgdG9wOiBtZW51VG9wICsgJ3B4JyB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidE1lbnUgYWN0aW9uLW1lbnUgaGVhZGVyLW1lbnVcIlxuICAgICAgICAgICAgaWQ9XCJIZWFkZXJGaWx0ZXJPcHRpb25zXCJcbiAgICA+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImFwcGx5RmlsdGVyKCRldmVudCwgZmlsdGVyKVwiICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyT3B0aW9uc1wiIGNsYXNzPVwidEFjdGlvblJvd1wiIFtuZ0NsYXNzXT1cInsnaGFzLWljb24nOiBmaWx0ZXIuaWNvbn1cIiBbaWRdPVwiZmlsdGVyLmNvbHVtbklkXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlci5idWJibGVDbGFzc1wiIFtuZ0NsYXNzXT1cImZpbHRlci5idWJibGVDbGFzc1wiIGNsYXNzPVwiYnViYmxlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZpbHRlci5zaG93TG9hZGVyXCIgY2xhc3M9XCJjaXJjdWxhclwiIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeT1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcj1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXIuaWNvblwiIGNsYXNzPVwib3MtaWNvbiB7e2ZpbHRlci5pY29ufX1cIj48L3NwYW4+XG4gICAgICAgICAgICB7eyBmaWx0ZXIubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInNob3dEYXRlVGltZVBpY2tlclwiIGNsYXNzPVwiZGF0ZS10aW1lLWNvbnRhaW5lciBkYXRhLXRhYmxlLWRhdGUtdGltZVwiIFtuZ1N0eWxlXT1cInsgbGVmdDogbWVudUxlZnQgKyAncHgnLCB0b3A6IG1lbnVUb3AgKyAncHgnIH1cIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRGF0ZVRpbWUoJGV2ZW50KVwiPlxuICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVWYWx1ZVwiXG4gICAgICAgICAgICAob25TZWxlY3QpPVwic2V0RGF0ZVJhbmdlRmlsdGVyKCdjdXN0b20nKVwiXG4gICAgICAgICAgICBkYXRlRm9ybWF0PVwibW0vZGQveXlcIlxuICAgICAgICAgICAgc2VsZWN0aW9uTW9kZT1cInJhbmdlXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFRpbWUgUmFuZ2VcIlxuICAgICAgICAgICAgI2NhbGVuZGFyXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHNlbGVjdGVkUmFuZ2UgPT09ICdob3VyJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERhdGVSYW5nZUZpbHRlcignaG91cicpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIExhc3QgSG91clxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXRlUmFuZ2VGaWx0ZXIoJ2RheScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogc2VsZWN0ZWRSYW5nZSA9PT0gJ2RheSd9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIExhc3QgRGF5XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERhdGVSYW5nZUZpbHRlcignd2VlaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogc2VsZWN0ZWRSYW5nZSA9PT0gJ3dlZWsnfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBMYXN0IFdlZWtcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGF0ZVJhbmdlRmlsdGVyKCdtb250aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogc2VsZWN0ZWRSYW5nZSA9PT0gJ21vbnRoJ31cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgTGFzdCBNb250aFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLWNhbGVuZGFyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJzaG93VGFnU2VsZWN0b3JcIiBjbGFzcz1cInRhZy1zZWxlY3Rvci1jb250YWluZXIgZGF0YS10YWJsZS10YWctc2VsZWN0b3JcIiBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lbnVMZWZ0ICsgJ3B4JywgdG9wOiBtZW51VG9wICsgJ3B4JyB9XCIgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVRhZ1NlbGVjdG9yKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uQmFsbCBpY29uLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVGFnU2VsZWN0b3IoJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0YWctc2VsZWN0b3ItbGFiZWxcIj5cbiAgICAgICAgPHNwYW4+U2VsZWN0IGFuIEF0dHJpYnV0ZTo8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGxpYi10YWctc2VsZWN0b3JcbiAgICAgICAgW2ZvY3VzT25Jbml0XT1cInRydWVcIlxuICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwicm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICBbYXZhaWxhYmxlTmFtZWRBdHRyaWJ1dGVzXT1cIm5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwic2VsZWN0ZWRSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgIFsoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzQ2hhbmdlKT1cInRhZ1NlbGVjdGlvbkNoYW5nZWQoJGV2ZW50LCBmYWxzZSlcIlxuICAgICAgICAoc2VsZWN0ZWRSb2xlQXR0cmlidXRlc0NoYW5nZSk9XCJ0YWdTZWxlY3Rpb25DaGFuZ2VkKCRldmVudCwgdHJ1ZSlcIlxuICAgID48L2xpYi10YWctc2VsZWN0b3I+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9kYXRhPlxuICAgIDxsaWItbm8taXRlbXNcbiAgICAgICAgKGNsaWNrRW1pdCk9XCJvcGVuQ3JlYXRlKClcIlxuICAgICAgICBbaW1hZ2VdPVwibm9JdGVtc0ltYWdlXCJcbiAgICAgICAgW2lzRW1wdHldPVwiIXJvd0RhdGEgfHwgcm93RGF0YS5sZW5ndGggPT09IDBcIlxuICAgICAgICBbdHlwZU5hbWVdPVwidGhpcy5lbnRpdHlUeXBlTGFiZWxcIlxuICAgICAgICBbaGFzQWRkXT1cInNob3dOb0l0ZW1zQWRkXCJcbiAgICA+PC9saWItbm8taXRlbXM+XG48L25nLXRlbXBsYXRlPlxuIl19
|