@fundamental-ngx/core 0.42.0-rc.9 → 0.42.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/alert/alert.module.d.ts +1 -1
- package/avatar/avatar.component.d.ts +2 -4
- package/avatar-group/directives/avatar-group-focusable-avatar.directive.d.ts +2 -6
- package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +2 -4
- package/bar/bar.component.d.ts +2 -4
- package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +2 -4
- package/button/button.component.d.ts +2 -6
- package/card/card-content.component.d.ts +2 -4
- package/card/card-counter.directive.d.ts +2 -4
- package/card/card-header.component.d.ts +2 -4
- package/card/card-loader.component.d.ts +2 -4
- package/card/card-second-subtitle.directive.d.ts +2 -4
- package/card/card-subtitle.directive.d.ts +2 -4
- package/card/card-title.directive.d.ts +2 -4
- package/card/card.component.d.ts +3 -5
- package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -4
- package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -4
- package/card/kpi/card-kpi-analytics.directive.d.ts +2 -4
- package/card/kpi/card-kpi-header.component.d.ts +2 -4
- package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -4
- package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -4
- package/card/kpi/card-kpi-value.directive.d.ts +2 -4
- package/combobox/combobox.module.d.ts +2 -1
- package/dialog/base/dialog-base.class.d.ts +2 -2
- package/dialog/dialog-body/dialog-body.component.d.ts +2 -4
- package/dialog/dialog-container/dialog-container.component.d.ts +0 -2
- package/dialog/dialog-service/dialog.service.d.ts +4 -0
- package/dialog/dialog.component.d.ts +0 -2
- package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +4 -6
- package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +2 -4
- package/dynamic-side-content/dynamic-side-content.component.d.ts +3 -5
- package/esm2020/alert/alert.module.mjs +5 -5
- package/esm2020/avatar/avatar.component.mjs +6 -10
- package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +4 -12
- package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +2 -2
- package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -7
- package/esm2020/bar/bar.component.mjs +3 -7
- package/esm2020/breadcrumb/breadcrumb-item.component.mjs +2 -2
- package/esm2020/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -8
- package/esm2020/button/button.component.mjs +3 -9
- package/esm2020/card/card-content.component.mjs +3 -7
- package/esm2020/card/card-counter.directive.mjs +3 -7
- package/esm2020/card/card-header.component.mjs +4 -8
- package/esm2020/card/card-loader.component.mjs +3 -7
- package/esm2020/card/card-second-subtitle.directive.mjs +3 -7
- package/esm2020/card/card-subtitle.directive.mjs +3 -7
- package/esm2020/card/card-title.directive.mjs +3 -7
- package/esm2020/card/card.component.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -7
- package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -7
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +5 -5
- package/esm2020/combobox/combobox.component.mjs +5 -4
- package/esm2020/combobox/combobox.module.mjs +8 -4
- package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
- package/esm2020/datetime-picker/datetime-picker.component.mjs +7 -4
- package/esm2020/dialog/base/dialog-base.class.mjs +4 -4
- package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -7
- package/esm2020/dialog/dialog-container/dialog-container.component.mjs +1 -5
- package/esm2020/dialog/dialog-service/dialog.service.mjs +10 -2
- package/esm2020/dialog/dialog.component.mjs +3 -7
- package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +4 -8
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +5 -9
- package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -7
- package/esm2020/facets/content/facet-content.component.mjs +4 -8
- package/esm2020/facets/facet/facet.component.mjs +13 -19
- package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -7
- package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -7
- package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -7
- package/esm2020/form/form-control/form-control.component.mjs +3 -7
- package/esm2020/form/form-group/form-group.component.mjs +3 -7
- package/esm2020/form/form-message/form-message.component.mjs +3 -7
- package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
- package/esm2020/icon/icon.component.mjs +3 -7
- package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -7
- package/esm2020/info-label/info-label.component.mjs +3 -7
- package/esm2020/inline-help/inline-help.directive.mjs +26 -15
- package/esm2020/input-group/input-group-directives.mjs +6 -14
- package/esm2020/input-group/input-group.component.mjs +2 -2
- package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -7
- package/esm2020/layout-grid/layout-grid.component.mjs +3 -7
- package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -7
- package/esm2020/link/link.component.mjs +9 -13
- package/esm2020/list/directives/list-icon.directive.mjs +3 -7
- package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -7
- package/esm2020/list/list-message.directive.mjs +3 -7
- package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +2 -2
- package/esm2020/message-box/message-box-container/message-box-container.component.mjs +1 -5
- package/esm2020/message-box/message-box.component.mjs +1 -5
- package/esm2020/message-page/message-page.component.mjs +3 -7
- package/esm2020/message-strip/alert/default-config.mjs +11 -0
- package/esm2020/message-strip/alert/index.mjs +6 -0
- package/esm2020/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +68 -0
- package/esm2020/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +57 -0
- package/esm2020/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.mjs +65 -0
- package/esm2020/message-strip/alert/message-strip-alert.position.mjs +2 -0
- package/esm2020/message-strip/alert/message-strip-alert.ref.mjs +3 -0
- package/esm2020/message-strip/alert/message-strip-alert.service.mjs +195 -0
- package/esm2020/message-strip/alert/message-strip-configuration-type.mjs +2 -0
- package/esm2020/message-strip/alert/open-message-strip-alert.config.mjs +2 -0
- package/esm2020/message-strip/alert/tokens.mjs +14 -0
- package/esm2020/message-strip/auto-dismiss-message-strip.directive.mjs +98 -0
- package/esm2020/message-strip/fundamental-ngx-core-message-strip.mjs +2 -2
- package/esm2020/message-strip/index.mjs +6 -0
- package/esm2020/message-strip/message-strip-type.mjs +2 -0
- package/esm2020/message-strip/message-strip.component.mjs +16 -20
- package/esm2020/message-strip/message-strip.module.mjs +6 -9
- package/esm2020/multi-combobox/multi-combobox.component.mjs +6 -6
- package/esm2020/multi-input/multi-input.component.mjs +33 -19
- package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -7
- package/esm2020/notification/notification-group/notification-group.component.mjs +3 -7
- package/esm2020/notification/notification-utils/notification-group-base.mjs +2 -2
- package/esm2020/object-marker/object-marker.component.mjs +3 -7
- package/esm2020/object-number/object-number.component.mjs +3 -7
- package/esm2020/object-status/object-status.component.mjs +3 -7
- package/esm2020/panel/panel.component.mjs +3 -7
- package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
- package/esm2020/radio/radio-button/radio-button.component.mjs +2 -2
- package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -7
- package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +4 -8
- package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -7
- package/esm2020/segmented-button/segmented-button.component.mjs +4 -4
- package/esm2020/select/select.component.mjs +3 -3
- package/esm2020/slider/slider.component.mjs +3 -7
- package/esm2020/status-indicator/status-indicator.component.mjs +4 -8
- package/esm2020/table/directives/table-cell.directive.mjs +31 -26
- package/esm2020/table/directives/table-icon.directive.mjs +3 -9
- package/esm2020/table/directives/table-row.directive.mjs +34 -19
- package/esm2020/table/table-wrapper.component.mjs +2 -2
- package/esm2020/table/table.component.mjs +1 -1
- package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -7
- package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -9
- package/esm2020/tabs/tab-utils/tab-directives.mjs +3 -9
- package/esm2020/tile/directives/numeric-content.directives.mjs +14 -34
- package/esm2020/tile/directives/tile.directives.mjs +9 -21
- package/esm2020/tile/tile.component.mjs +2 -2
- package/esm2020/token/token-input.directive.mjs +3 -7
- package/esm2020/token/tokenizer.component.mjs +20 -22
- package/esm2020/toolbar/toolbar.component.mjs +2 -2
- package/esm2020/tree/components/tree-item/tree-item.component.mjs +1 -1
- package/esm2020/tree/models/base-tree-item.class.mjs +2 -6
- package/esm2020/tree/tree.component.mjs +3 -7
- package/esm2020/upload-collection/upload-collection-item.directive.mjs +2 -2
- package/esm2020/wizard/wizard.component.mjs +2 -2
- package/facets/content/facet-content.component.d.ts +2 -4
- package/facets/facet/facet.component.d.ts +2 -6
- package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -4
- package/feed-list-item/components/item/feed-list-item.component.d.ts +2 -4
- package/feed-list-item/components/list/feed-list.component.d.ts +2 -4
- package/fesm2015/fundamental-ngx-core-alert.mjs +4 -4
- package/fesm2015/fundamental-ngx-core-alert.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-avatar-group.mjs +6 -18
- package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -9
- package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-bar.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +3 -7
- package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-button.mjs +2 -8
- package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-card.mjs +31 -91
- package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +4 -4
- package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-combobox.mjs +10 -5
- package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-content-density.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +6 -3
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +16 -21
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -15
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-facets.mjs +15 -25
- package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-feed-input.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +4 -12
- package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-form.mjs +6 -18
- package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-icon.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-info-label.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-inline-help.mjs +24 -13
- package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs +6 -14
- package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-layout-grid.mjs +4 -12
- package/fesm2015/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-link.mjs +8 -12
- package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-list.mjs +6 -18
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-box.mjs +0 -8
- package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-page.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-strip.mjs +488 -28
- package/fesm2015/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +5 -5
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +33 -17
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-notification.mjs +5 -13
- package/fesm2015/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-object-marker.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-object-number.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-object-status.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-panel.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-product-switch.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-radio.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
- package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs +3 -3
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs +2 -6
- package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-status-indicator.mjs +3 -7
- package/fesm2015/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-table.mjs +64 -48
- package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tabs.mjs +6 -22
- package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tile.mjs +22 -54
- package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-token.mjs +22 -28
- package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-toolbar.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tree.mjs +3 -11
- package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-alert.mjs +4 -4
- package/fesm2020/fundamental-ngx-core-alert.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-avatar-group.mjs +6 -18
- package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -9
- package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-bar.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +3 -7
- package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-button.mjs +2 -8
- package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-card.mjs +31 -91
- package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +4 -4
- package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-combobox.mjs +10 -5
- package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-content-density.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +6 -3
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +16 -21
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -15
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-facets.mjs +15 -25
- package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-feed-input.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +4 -12
- package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-form.mjs +6 -18
- package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-icon.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-info-label.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-inline-help.mjs +24 -13
- package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs +6 -14
- package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-layout-grid.mjs +4 -12
- package/fesm2020/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-link.mjs +8 -12
- package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-list.mjs +6 -18
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-box.mjs +0 -8
- package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-page.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-strip.mjs +493 -28
- package/fesm2020/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +5 -5
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +31 -17
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-notification.mjs +5 -13
- package/fesm2020/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-object-marker.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-object-number.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-object-status.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-panel.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-product-switch.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-radio.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
- package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs +3 -3
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs +2 -6
- package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-status-indicator.mjs +3 -7
- package/fesm2020/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-table.mjs +64 -48
- package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tabs.mjs +6 -22
- package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tile.mjs +22 -54
- package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-token.mjs +21 -27
- package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-toolbar.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tree.mjs +3 -11
- package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/form/form-control/form-control.component.d.ts +2 -4
- package/form/form-group/form-group.component.d.ts +2 -4
- package/form/form-message/form-message.component.d.ts +2 -4
- package/fundamental-ngx-core-v0.42.0.tgz +0 -0
- package/icon/icon.component.d.ts +2 -4
- package/illustrated-message/illustrated-message.component.d.ts +2 -4
- package/info-label/info-label.component.d.ts +2 -4
- package/inline-help/inline-help.directive.d.ts +9 -3
- package/input-group/input-group-directives.d.ts +5 -9
- package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -4
- package/layout-grid/layout-grid.component.d.ts +2 -4
- package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +4 -6
- package/link/link.component.d.ts +2 -4
- package/list/directives/list-icon.directive.d.ts +4 -5
- package/list/directives/list-navigation-item-text.directive.d.ts +2 -4
- package/list/list-message.directive.d.ts +2 -4
- package/message-box/message-box-container/message-box-container.component.d.ts +0 -2
- package/message-box/message-box.component.d.ts +0 -2
- package/message-page/message-page.component.d.ts +2 -4
- package/message-strip/alert/default-config.d.ts +5 -0
- package/message-strip/alert/index.d.ts +9 -0
- package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +52 -0
- package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +28 -0
- package/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.d.ts +36 -0
- package/message-strip/alert/message-strip-alert.position.d.ts +3 -0
- package/message-strip/alert/message-strip-alert.ref.d.ts +14 -0
- package/message-strip/alert/message-strip-alert.service.d.ts +52 -0
- package/message-strip/alert/message-strip-configuration-type.d.ts +15 -0
- package/message-strip/alert/open-message-strip-alert.config.d.ts +22 -0
- package/message-strip/alert/tokens.d.ts +20 -0
- package/message-strip/auto-dismiss-message-strip.directive.d.ts +35 -0
- package/message-strip/index.d.ts +5 -5
- package/message-strip/message-strip-type.d.ts +2 -0
- package/message-strip/message-strip.component.d.ts +6 -9
- package/message-strip/message-strip.module.d.ts +2 -4
- package/multi-combobox/multi-combobox.component.d.ts +1 -1
- package/multi-input/multi-input.component.d.ts +10 -6
- package/notification/directives/notification-indicator.directive.d.ts +2 -4
- package/notification/notification-group/notification-group.component.d.ts +2 -4
- package/object-marker/object-marker.component.d.ts +2 -4
- package/object-number/object-number.component.d.ts +2 -4
- package/object-status/object-status.component.d.ts +2 -4
- package/package.json +3 -3
- package/panel/panel.component.d.ts +2 -4
- package/radio/radio-button/radio-button.component.d.ts +1 -1
- package/rating-indicator/components/rating-indicator.component.d.ts +2 -4
- package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +2 -4
- package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -4
- package/schematics/add-dependencies/index.js +4 -4
- package/slider/slider.component.d.ts +2 -4
- package/status-indicator/status-indicator.component.d.ts +2 -4
- package/table/directives/table-cell.directive.d.ts +6 -12
- package/table/directives/table-icon.directive.d.ts +2 -6
- package/table/directives/table-row.directive.d.ts +10 -10
- package/tabs/tab-item/tab-item.directive.d.ts +2 -4
- package/tabs/tab-nav/tab-nav.component.d.ts +4 -8
- package/tabs/tab-utils/tab-directives.d.ts +2 -6
- package/tile/directives/numeric-content.directives.d.ts +10 -20
- package/tile/directives/tile.directives.d.ts +6 -12
- package/tile/tile.component.d.ts +1 -1
- package/token/token-input.directive.d.ts +2 -4
- package/token/tokenizer.component.d.ts +2 -4
- package/toolbar/toolbar.component.d.ts +1 -1
- package/tree/models/base-tree-item.class.d.ts +1 -3
- package/tree/tree.component.d.ts +1 -3
- package/esm2020/message-strip/public_api.mjs +0 -3
- package/fundamental-ngx-core-v0.42.0-rc.9.tgz +0 -0
- package/message-strip/public_api.d.ts +0 -2
|
@@ -154,7 +154,7 @@ export class ContentDensityObserver extends BehaviorSubject {
|
|
|
154
154
|
}
|
|
155
155
|
/** @hidden */
|
|
156
156
|
consume(...consumers) {
|
|
157
|
-
this._elements.concat(...consumers.map((c) => c.elementRef
|
|
157
|
+
this._elements.concat(...consumers.map((c) => c.elementRef));
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* Completes the stream and closes all internal subscriptions.
|
|
@@ -173,7 +173,7 @@ export class ContentDensityObserver extends BehaviorSubject {
|
|
|
173
173
|
}
|
|
174
174
|
/** @hidden */
|
|
175
175
|
removeConsumer(consumer) {
|
|
176
|
-
this._elements.splice(this._elements.indexOf(consumer.elementRef
|
|
176
|
+
this._elements.splice(this._elements.indexOf(consumer.elementRef), 1);
|
|
177
177
|
}
|
|
178
178
|
/** @hidden */
|
|
179
179
|
_applyClass() {
|
|
@@ -203,4 +203,4 @@ ContentDensityObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
|
|
|
203
203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ContentDensityObserver, decorators: [{
|
|
204
204
|
type: Injectable
|
|
205
205
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.ContentDensityObserverSettings }]; } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7OztBQUU1RyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBUSxFQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdkgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFrQixFQUFFLHFCQUEwQyxFQUFjLEVBQUUsQ0FDM0YsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFPLEVBQUU7SUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3BCLElBQUksSUFBSSxDQUFDO1FBQ1QsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsc0NBQXNDO2dCQUN0QyxLQUFLLElBQUksSUFBSSxDQUFDO2FBQ2pCO2lCQUFNO2dCQUNILElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckI7U0FDSjtRQUNELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxDQUFDO0FBRVAsTUFBTSx3QkFBd0IsR0FBRyxDQUM3QixRQUFrQixFQUNsQixhQUF1RCxFQUNyQyxFQUFFO0lBQ3BCLElBQUksT0FBTyxhQUFhLENBQUMscUJBQXFCLEtBQUssUUFBUSxFQUFFO1FBQ3pELE9BQU8sYUFBYSxDQUFDLHFCQUEyQyxDQUFDO0tBQ3BFO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsRUFBRTtRQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sYUFBYSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ2xFO0lBQ0QsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUMxQixRQUFrQixFQUNsQixhQUE4QyxFQUM1QixFQUFFO0lBQ3BCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxxQkFBcUIsQ0FBQztJQUNsSCxJQUFJLFlBQVksRUFBRTtRQUNkLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUU7UUFDdEMsR0FBRyxvQ0FBb0M7UUFDdkMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7S0FDM0IsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGVBQW1DO0lBZTNFLGNBQWM7SUFDZCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxjQUFjO0lBQ2QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsY0FBYztJQUNkLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQXVDRCxjQUFjO0lBQ2QsWUFBb0IsU0FBbUIsRUFBVSxlQUFnRDtRQUM3RixLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFEekMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQztRQWpFakcsY0FBYztRQUNHLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkUsY0FBYztRQUNHLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoRSxjQUFjO1FBQ0csa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUdyRSxjQUFjO1FBQ0wsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsY0FBYztRQUNMLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hELGNBQWM7UUFDTCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFjMUQsY0FBYztRQUNOLGlDQUE0QixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRTtZQUN2RSxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCxjQUFjO1FBQ04sNkJBQXdCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixFQUFFO1lBQ2pFLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVILGNBQWM7UUFDTixrQ0FBNkIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLEVBQUU7WUFDbkUsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCxjQUFjO1FBQ04sY0FBUyxHQUFxQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNHLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ04sZ0JBQVcsR0FBMkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLGNBQWM7UUFDTixjQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdkMsY0FBYztRQUNOLG1CQUFjLEdBQUc7WUFDckIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUF1QixFQUFFLENBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSTtZQUM1RyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQXVCLEVBQUUsQ0FDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJO1lBQ3hHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBdUIsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrREFBa0Q7U0FDbEksQ0FBQztRQU1FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3hDLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztpQkFDcEQ7WUFDTCxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNWLEdBQUcsb0NBQW9DO1lBQ3ZDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUNyRCxHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztTQUM3QixDQUFDO1FBRUYsaUJBQWlCLENBQUM7WUFDZCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsd0JBQXdCLElBQUksU0FBUztZQUNuRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsNEJBQTRCLElBQUksU0FBUztZQUNyRSwyQkFBMkIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQjtnQkFDaEUsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxZQUFZLEVBQUUsSUFBSSxTQUFTO2dCQUNqRSxDQUFDLENBQUMsU0FBUztTQUNsQixDQUFDO2FBQ0csSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUN4RTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QixJQUFJO29CQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7d0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQ1AsMkJBQTJCLE9BQU8scURBQXFELENBQzFGLENBQUM7cUJBQ0w7b0JBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQ3pDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE9BQU8sbUJBQW1CLENBQUMsQ0FBQztpQkFDbEY7YUFDSjtZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxFQUNGLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzVCO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU8sQ0FBQyxHQUFHLFNBQXlDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDTSxRQUFRO1FBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYyxDQUFDLFFBQXNDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxjQUFjO0lBQ04sV0FBVztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtZQUN6QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUV4QyxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUzRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3R0FBd0c7WUFDeEcsSUFBSSx5QkFBeUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzlELE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDhDQUE4QztJQUN0QyxZQUFZLENBQUMsT0FBMkI7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDM0UsQ0FBQzs7bUhBaExRLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBGYWN0b3J5U2Fuc1Byb3ZpZGVyLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdEZsYWdzLCBJbmplY3RvciwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJUYXJnZXQgfSBmcm9tICcuLi9jb250ZW50LWRlbnNpdHkudHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q2hhbmdlc1NvdXJjZSQgfSBmcm9tICcuLi9oZWxwZXJzL2dldC1jaGFuZ2VzLXNvdXJjZS5wcm92aWRlcic7XG5pbXBvcnQgeyBHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwtY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSB9IGZyb20gJy4uL3Rva2Vucy9jb250ZW50LWRlbnNpdHktZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQtZGVuc2l0eS5tb2RlJztcbmltcG9ydCB7IGRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyB9IGZyb20gJy4uL3ZhcmlhYmxlcy9kZWZhdWx0LWNvbnRlbnQtZGVuc2l0eS1jb25zdW1lci1jb25maWcnO1xuXG5jb25zdCBpc0ZhY3RvcnlQcm92aWRlciA9IChvYmo6IGFueSk6IG9iaiBpcyBGYWN0b3J5U2Fuc1Byb3ZpZGVyID0+ICEhKG9iaiAmJiAob2JqIGFzIEZhY3RvcnlTYW5zUHJvdmlkZXIpLnVzZUZhY3RvcnkpO1xuXG5jb25zdCBnZXREZXBzID0gKGluamVjdG9yOiBJbmplY3RvciwgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBGYWN0b3J5U2Fuc1Byb3ZpZGVyKTogQXJyYXk8YW55PiA9PlxuICAgIChkZWZhdWx0Q29udGVudERlbnNpdHkuZGVwcyB8fCBbXSkubWFwKChkZXApOiBhbnkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXApKSB7XG4gICAgICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgICAgIGxldCBmbGFncyA9IEluamVjdEZsYWdzLkRlZmF1bHQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGVwLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBkZXBbaW5kZXhdWydfX05HX0RJX0ZMQUdfXyddO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmxhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gZmxhZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gZGVwW2luZGV4XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KHR5cGUsIHVuZGVmaW5lZCwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZGVwLCB1bmRlZmluZWQsIEluamVjdEZsYWdzLkRlZmF1bHQpO1xuICAgIH0pO1xuXG5jb25zdCBnZXREZWZhdWx0Q29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb246IFJlcXVpcmVkPENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncz5cbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5IGFzIENvbnRlbnREZW5zaXR5TW9kZTtcbiAgICB9XG4gICAgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5KSkge1xuICAgICAgICBjb25zdCBkZXBzID0gZ2V0RGVwcyhpbmplY3RvciwgY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpO1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkudXNlRmFjdG9yeSguLi5kZXBzKTtcbiAgICB9XG4gICAgcmV0dXJuIGluamVjdG9yLmdldChjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufTtcblxuY29uc3QgaW5pdGlhbENvbnRlbnREZW5zaXR5ID0gKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb25maWd1cmF0aW9uPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzXG4pOiBDb250ZW50RGVuc2l0eU1vZGUgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VWYWx1ZSA9IGluamVjdG9yLmdldChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIG51bGwsIEluamVjdEZsYWdzLk9wdGlvbmFsKT8uY3VycmVudENvbnRlbnREZW5zaXR5O1xuICAgIGlmIChzZXJ2aWNlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHRDb250ZW50RGVuc2l0eShpbmplY3Rvciwge1xuICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgIC4uLihjb25maWd1cmF0aW9uIHx8IHt9KVxuICAgIH0pO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgZXh0ZW5kcyBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbXBhY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvenkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbmRlbnNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNvbmZpZzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb21wYWN0JCA9IHRoaXMuX2lzQ29tcGFjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvenkkID0gdGhpcy5faXNDb3p5JC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ29uZGVuc2VkJCA9IHRoaXMuX2lzQ29uZGVuc2VkJC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvbXBhY3QkLnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvenkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvenkkLnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0NvbmRlbnNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29uZGVuc2VkJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA9IGluamVjdChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlEaXJlY3RpdmUgPSBpbmplY3QoQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyID0gaW5qZWN0KENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIHNraXBTZWxmOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIgfCBudWxsID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPGFueT4gfCBudWxsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50cyA9IFt0aGlzLl9lbGVtZW50UmVmXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWx0ZXJuYXRpdmVUbyA9IHtcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEIDogQ29udGVudERlbnNpdHlNb2RlLkNPWlksXG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSAvLyBObyBhbHRlcm5hdGl2ZSBoZXJlLCBldmVyeW9uZSBzaG91bGQgc3VwcG9ydCBpdFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfcHJvdmlkZWRDb25maWc/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoaW5pdGlhbENvbnRlbnREZW5zaXR5KF9pbmplY3RvciwgX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgY29uc3QgZGVzdHJveVN1YiA9IHRoaXMuX2Rlc3Ryb3kkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlc3Ryb3lTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZXN0cm95ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzLFxuICAgICAgICAgICAgLi4uKHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LmNvbmZpZyA/PyB7fSksXG4gICAgICAgICAgICAuLi4oX3Byb3ZpZGVkQ29uZmlnIHx8IHt9KVxuICAgICAgICB9O1xuXG4gICAgICAgIGdldENoYW5nZXNTb3VyY2UkKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5RGlyZWN0aXZlOiB0aGlzLl9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYXJlbnRDb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuY29uZmlnLnJlc3RyaWN0Q2hpbGRDb250ZW50RGVuc2l0eVxuICAgICAgICAgICAgICAgID8gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8uYXNPYnNlcnZhYmxlKCkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5IGNoYW5nZWQgdG8gJHtkZW5zaXR5fWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQoZGVuc2l0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZC4gRmFpbGluZyBiYWNrIHRvIGFsdGVybmF0aXZlIG9uZS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGl2ZVRvW2RlbnNpdHldKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZW5zaXR5O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dChkZW5zaXR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb21wYWN0JC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvenkkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPWlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdW1lKC4uLmNvbnN1bWVyczogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmNvbmNhdCguLi5jb25zdW1lcnMubWFwKChjKSA9PiBjLmVsZW1lbnRSZWYoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyB0aGUgc3RyZWFtIGFuZCBjbG9zZXMgYWxsIGludGVybmFsIHN1YnNjcmlwdGlvbnMuXG4gICAgICovXG4gICAgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvenkkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29tcGFjdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLnNwbGljZSh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGNvbnN1bWVyLmVsZW1lbnRSZWYoKSksIDEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXBwbHlDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZz8ubW9kaWZpZXJzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gdGhpcy5jb25maWcubW9kaWZpZXJzO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRlbnREZW5zaXR5RXF1YWwgPSB0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy52YWx1ZSA9PT0gdGhpcy52YWx1ZTtcblxuICAgICAgICB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKG1vZGlmaWVycykuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXI/LnJlbW92ZUNsYXNzKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gU2ltcGx5IHJlbW92ZSBhbGwgbW9kaWZpZXJzIGZyb20gY3VycmVudCBlbGVtZW50LiBDb250ZW50IGRlbnNpdHkgc3RhdGUgaXMgY292ZXJlZCBieSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChwYXJlbnRDb250ZW50RGVuc2l0eUVxdWFsICYmICF0aGlzLmNvbmZpZy5hbHdheXNBZGRNb2RpZmllcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyPy5hZGRDbGFzcyhlbGVtZW50Py5uYXRpdmVFbGVtZW50LCBtb2RpZmllcnNbdGhpcy52YWx1ZV0hKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoZSBnaXZlbiBkZW5zaXR5IGlzIHN1cHBvcnRlZCAqL1xuICAgIHByaXZhdGUgX2lzU3VwcG9ydGVkKGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuc3VwcG9ydGVkQ29udGVudERlbnNpdHk/LmluY2x1ZGVzKGRlbnNpdHkpID8/IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7OztBQUU1RyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBUSxFQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdkgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFrQixFQUFFLHFCQUEwQyxFQUFjLEVBQUUsQ0FDM0YsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFD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Q3pCLE9BQU87U0FDVjtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRXhDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUVILHdHQUF3RztZQUN4RyxJQUFJLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDOUQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsOENBQThDO0lBQ3RDLFlBQVksQ0FBQyxPQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMzRSxDQUFDOzttSEFoTFEsc0JBQXNCO3VIQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEZhY3RvcnlTYW5zUHJvdmlkZXIsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0RmxhZ3MsIEluamVjdG9yLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb250ZW50LWRlbnNpdHktb2JzZXJ2ZXIuc2V0dGluZ3MnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCB9IGZyb20gJy4uL2NvbnRlbnQtZGVuc2l0eS50eXBlcyc7XG5pbXBvcnQgeyBnZXRDaGFuZ2VzU291cmNlJCB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWNoYW5nZXMtc291cmNlLnByb3ZpZGVyJztcbmltcG9ydCB7IEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC1jb250ZW50LWRlbnNpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFIH0gZnJvbSAnLi4vdG9rZW5zL2NvbnRlbnQtZGVuc2l0eS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuaW1wb3J0IHsgZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzIH0gZnJvbSAnLi4vdmFyaWFibGVzL2RlZmF1bHQtY29udGVudC1kZW5zaXR5LWNvbnN1bWVyLWNvbmZpZyc7XG5cbmNvbnN0IGlzRmFjdG9yeVByb3ZpZGVyID0gKG9iajogYW55KTogb2JqIGlzIEZhY3RvcnlTYW5zUHJvdmlkZXIgPT4gISEob2JqICYmIChvYmogYXMgRmFjdG9yeVNhbnNQcm92aWRlcikudXNlRmFjdG9yeSk7XG5cbmNvbnN0IGdldERlcHMgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBkZWZhdWx0Q29udGVudERlbnNpdHk6IEZhY3RvcnlTYW5zUHJvdmlkZXIpOiBBcnJheTxhbnk+ID0+XG4gICAgKGRlZmF1bHRDb250ZW50RGVuc2l0eS5kZXBzIHx8IFtdKS5tYXAoKGRlcCk6IGFueSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlO1xuICAgICAgICAgICAgbGV0IGZsYWdzID0gSW5qZWN0RmxhZ3MuRGVmYXVsdDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkZXAubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IGRlcFtpbmRleF1bJ19fTkdfRElfRkxBR19fJ107XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbGFnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBmbGFnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBkZXBbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQodHlwZSwgdW5kZWZpbmVkLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluamVjdG9yLmdldChkZXAsIHVuZGVmaW5lZCwgSW5qZWN0RmxhZ3MuRGVmYXVsdCk7XG4gICAgfSk7XG5cbmNvbnN0IGdldERlZmF1bHRDb250ZW50RGVuc2l0eSA9IChcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgY29uZmlndXJhdGlvbjogUmVxdWlyZWQ8Q29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzPlxuKTogQ29udGVudERlbnNpdHlNb2RlID0+IHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkgYXMgQ29udGVudERlbnNpdHlNb2RlO1xuICAgIH1cbiAgICBpZiAoaXNGYWN0b3J5UHJvdmlkZXIoY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpKSB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBnZXREZXBzKGluamVjdG9yLCBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSk7XG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eS51c2VGYWN0b3J5KC4uLmRlcHMpO1xuICAgIH1cbiAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59O1xuXG5jb25zdCBpbml0aWFsQ29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb24/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3Ncbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgY29uc3Qgc2VydmljZVZhbHVlID0gaW5qZWN0b3IuZ2V0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwgbnVsbCwgSW5qZWN0RmxhZ3MuT3B0aW9uYWwpPy5jdXJyZW50Q29udGVudERlbnNpdHk7XG4gICAgaWYgKHNlcnZpY2VWYWx1ZSkge1xuICAgICAgICByZXR1cm4gc2VydmljZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGVmYXVsdENvbnRlbnREZW5zaXR5KGluamVjdG9yLCB7XG4gICAgICAgIC4uLmRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyxcbiAgICAgICAgLi4uKGNvbmZpZ3VyYXRpb24gfHwge30pXG4gICAgfSk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudERlbnNpdHlPYnNlcnZlciBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxDb250ZW50RGVuc2l0eU1vZGU+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29tcGFjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ296eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29uZGVuc2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY29uZmlnOiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvbXBhY3QkID0gdGhpcy5faXNDb21wYWN0JC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ296eSQgPSB0aGlzLl9pc0NvenkkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb25kZW5zZWQkID0gdGhpcy5faXNDb25kZW5zZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGFjdCQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ296eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ296eSQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29uZGVuc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25kZW5zZWQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gaW5qZWN0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA9IGluamVjdChDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiB8IG51bGwgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveWVkU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PiB8IG51bGwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRzID0gW3RoaXMuX2VsZW1lbnRSZWZdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbHRlcm5hdGl2ZVRvID0ge1xuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEKSA/IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRURdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCA6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZIC8vIE5vIGFsdGVybmF0aXZlIGhlcmUsIGV2ZXJ5b25lIHNob3VsZCBzdXBwb3J0IGl0XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIF9wcm92aWRlZENvbmZpZz86IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncykge1xuICAgICAgICBzdXBlcihpbml0aWFsQ29udGVudERlbnNpdHkoX2luamVjdG9yLCBfcHJvdmlkZWRDb25maWcpKTtcblxuICAgICAgICBjb25zdCBkZXN0cm95U3ViID0gdGhpcy5fZGVzdHJveSQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVzdHJveVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlc3Ryb3llZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgICAgICAuLi4odGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8uY29uZmlnID8/IHt9KSxcbiAgICAgICAgICAgIC4uLihfcHJvdmlkZWRDb25maWcgfHwge30pXG4gICAgICAgIH07XG5cbiAgICAgICAgZ2V0Q2hhbmdlc1NvdXJjZSQoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgY29udGVudERlbnNpdHlEaXJlY3RpdmU6IHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5U2VydmljZTogdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhcmVudENvbnRlbnREZW5zaXR5U2VydmljZTogdGhpcy5jb25maWcucmVzdHJpY3RDaGlsZENvbnRlbnREZW5zaXR5XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy5hc09ic2VydmFibGUoKSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChkZW5zaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgY2hhbmdlZCB0byAke2RlbnNpdHl9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZChkZW5zaXR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQ29udGVudERlbnNpdHlPYnNlcnZlcjogJHtkZW5zaXR5fSBpcyBub3Qgc3VwcG9ydGVkLiBGYWlsaW5nIGJhY2sgdG8gYWx0ZXJuYXRpdmUgb25lLmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FsdGVybmF0aXZlVG9bZGVuc2l0eV0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgJHtkZW5zaXR5fSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbnNpdHk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkZW5zaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGRlbnNpdHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvbXBhY3QkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ296eSQubmV4dChkZW5zaXR5ID09PSBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb25kZW5zZWQkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN1bWUoLi4uY29uc3VtZXJzOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMuY29uY2F0KC4uLmNvbnN1bWVycy5tYXAoKGMpID0+IGMuZWxlbWVudFJlZikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyB0aGUgc3RyZWFtIGFuZCBjbG9zZXMgYWxsIGludGVybmFsIHN1YnNjcmlwdGlvbnMuXG4gICAgICovXG4gICAgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvenkkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29tcGFjdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLnNwbGljZSh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGNvbnN1bWVyLmVsZW1lbnRSZWYpLCAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGx5Q2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWc/Lm1vZGlmaWVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IHRoaXMuY29uZmlnLm1vZGlmaWVycztcblxuICAgICAgICBjb25zdCBwYXJlbnRDb250ZW50RGVuc2l0eUVxdWFsID0gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8udmFsdWUgPT09IHRoaXMudmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhtb2RpZmllcnMpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyPy5yZW1vdmVDbGFzcyhlbGVtZW50Py5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFNpbXBseSByZW1vdmUgYWxsIG1vZGlmaWVycyBmcm9tIGN1cnJlbnQgZWxlbWVudC4gQ29udGVudCBkZW5zaXR5IHN0YXRlIGlzIGNvdmVyZWQgYnkgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAocGFyZW50Q29udGVudERlbnNpdHlFcXVhbCAmJiAhdGhpcy5jb25maWcuYWx3YXlzQWRkTW9kaWZpZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcj8uYWRkQ2xhc3MoZWxlbWVudD8ubmF0aXZlRWxlbWVudCwgbW9kaWZpZXJzW3RoaXMudmFsdWVdISk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZGVuc2l0eSBpcyBzdXBwb3J0ZWQgKi9cbiAgICBwcml2YXRlIF9pc1N1cHBvcnRlZChkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnN1cHBvcnRlZENvbnRlbnREZW5zaXR5Py5pbmNsdWRlcyhkZW5zaXR5KSA/PyBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -357,7 +357,10 @@ export class DatetimePickerComponent {
|
|
|
357
357
|
submit() {
|
|
358
358
|
// marking date & time as not null, errors will be caught below
|
|
359
359
|
const currentDate = this._tempDate;
|
|
360
|
-
|
|
360
|
+
let currentTime = this._tempTime;
|
|
361
|
+
if (!currentTime) {
|
|
362
|
+
currentTime = this._dateTimeAdapter.today();
|
|
363
|
+
}
|
|
361
364
|
try {
|
|
362
365
|
this.date = this._dateTimeAdapter.setTime(currentDate, this._dateTimeAdapter.getHours(currentTime), this._dateTimeAdapter.getMinutes(currentTime), this._dateTimeAdapter.getSeconds(currentTime));
|
|
363
366
|
}
|
|
@@ -519,7 +522,7 @@ DatetimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
519
522
|
registerFormItemControl(DatetimePickerComponent),
|
|
520
523
|
PopoverFormMessageService,
|
|
521
524
|
PopoverService
|
|
522
|
-
], viewQueries: [{ propertyName: "_calendarComponent", first: true, predicate: CalendarComponent, descendants: true }, { propertyName: "_inputGroupElement", first: true, predicate: ["inputGroupComponent"], descendants: true, read: ElementRef }, { propertyName: "_inputElement", first: true, predicate: InputGroupInputDirective, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n [iconTitle]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"datetimeInputLabel || ('coreDatetimePicker.datetimeInputLabel' | fdTranslate)\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-datetime__wrapper\">\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"displayTypeDateLabel || ('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"displayTypeTimeLabel || ('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n [ariaLabel]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\"\n [ariaLabel]=\"\n cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\n \"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n", styles: [".fd-datetime{display:block}.fd-datetime__wrapper{max-height:80vh;max-width:80vw}.fd-datetime__container{display:flex;align-items:center;justify-content:center;margin:0 16px}.fd-datetime__separator{background-color:#d3d3d3;width:1px;margin:42px 28px;align-self:stretch}.fd-datetime fd-time{width:auto}.fd-datetime__display-type-switcher{margin-top:1rem;display:none;width:100%;justify-content:center}@media (max-width: 960px){.fd-datetime__display-type-switcher{display:flex}.fd-datetime__wrapper{min-width:min(20rem,90vw)}.fd-datetime__container>*:not(.fd-datetime__active-display-type){display:none}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i4.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i4.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i5.CalendarComponent, selector: "fd-calendar", inputs: ["selectedDate", "markWeekends", "showWeekNumbers", "mobileLandscape", "mobilePortrait", "selectedRangeDate", "activeView", "startingDayOfWeek", "calType", "id", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "rangeHoverEffect", "previousButtonDisableFunction", "nextButtonDisableFunction", "escapeFocusFunction", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["activeViewChange", "selectedDateChange", "selectedRangeDateChange", "isValidDateChange", "closeCalendar", "closeClicked"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TimeComponent, selector: "fd-time", inputs: ["meridian", "validate", "keepTwoDigits", "disabled", "displaySeconds", "displayMinutes", "displayHours", "tablet", "elementsAtOnce", "time", "spinnerButtons"] }, { kind: "component", type: i8.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i8.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: i9.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i10.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i10.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i10.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i11.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "component", type: i2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
525
|
+
], viewQueries: [{ propertyName: "_calendarComponent", first: true, predicate: CalendarComponent, descendants: true }, { propertyName: "_inputGroupElement", first: true, predicate: ["inputGroupComponent"], descendants: true, read: ElementRef }, { propertyName: "_inputElement", first: true, predicate: InputGroupInputDirective, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n [iconTitle]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"datetimeInputLabel || ('coreDatetimePicker.datetimeInputLabel' | fdTranslate)\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-datetime__wrapper\">\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"displayTypeDateLabel || ('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"displayTypeTimeLabel || ('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [disabled]=\"!_tempDate\"\n [label]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n [ariaLabel]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\"\n [ariaLabel]=\"\n cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\n \"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n", styles: [".fd-datetime{display:block}.fd-datetime__wrapper{max-height:80vh;max-width:80vw}.fd-datetime__container{display:flex;align-items:center;justify-content:center;margin:0 16px}.fd-datetime__separator{background-color:#d3d3d3;width:1px;margin:42px 28px;align-self:stretch}.fd-datetime fd-time{width:auto}.fd-datetime__display-type-switcher{margin-top:1rem;display:none;width:100%;justify-content:center}@media (max-width: 960px){.fd-datetime__display-type-switcher{display:flex}.fd-datetime__wrapper{min-width:min(20rem,90vw)}.fd-datetime__container>*:not(.fd-datetime__active-display-type){display:none}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i4.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i4.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i5.CalendarComponent, selector: "fd-calendar", inputs: ["selectedDate", "markWeekends", "showWeekNumbers", "mobileLandscape", "mobilePortrait", "selectedRangeDate", "activeView", "startingDayOfWeek", "calType", "id", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "rangeHoverEffect", "previousButtonDisableFunction", "nextButtonDisableFunction", "escapeFocusFunction", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["activeViewChange", "selectedDateChange", "selectedRangeDateChange", "isValidDateChange", "closeCalendar", "closeClicked"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TimeComponent, selector: "fd-time", inputs: ["meridian", "validate", "keepTwoDigits", "disabled", "displaySeconds", "displayMinutes", "displayHours", "tablet", "elementsAtOnce", "time", "spinnerButtons"] }, { kind: "component", type: i8.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i8.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: i9.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i10.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i10.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i10.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i11.SegmentedButtonComponent, selector: "fd-segmented-button", inputs: ["toggle"] }, { kind: "component", type: i2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
523
526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DatetimePickerComponent, decorators: [{
|
|
524
527
|
type: Component,
|
|
525
528
|
args: [{ selector: 'fd-datetime-picker', providers: [
|
|
@@ -536,7 +539,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
536
539
|
registerFormItemControl(DatetimePickerComponent),
|
|
537
540
|
PopoverFormMessageService,
|
|
538
541
|
PopoverService
|
|
539
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n [iconTitle]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"datetimeInputLabel || ('coreDatetimePicker.datetimeInputLabel' | fdTranslate)\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-datetime__wrapper\">\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"displayTypeDateLabel || ('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"displayTypeTimeLabel || ('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n [ariaLabel]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\"\n [ariaLabel]=\"\n cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\n \"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n", styles: [".fd-datetime{display:block}.fd-datetime__wrapper{max-height:80vh;max-width:80vw}.fd-datetime__container{display:flex;align-items:center;justify-content:center;margin:0 16px}.fd-datetime__separator{background-color:#d3d3d3;width:1px;margin:42px 28px;align-self:stretch}.fd-datetime fd-time{width:auto}.fd-datetime__display-type-switcher{margin-top:1rem;display:none;width:100%;justify-content:center}@media (max-width: 960px){.fd-datetime__display-type-switcher{display:flex}.fd-datetime__wrapper{min-width:min(20rem,90vw)}.fd-datetime__container>*:not(.fd-datetime__active-display-type){display:none}}\n"] }]
|
|
542
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"fd-datetime\">\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n >\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n [iconTitle]=\"\n displayDatetimeToggleLabel || ('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)\n \"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"datetimeInputLabel || ('coreDatetimePicker.datetimeInputLabel' | fdTranslate)\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n <div class=\"fd-datetime__wrapper\">\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <div class=\"fd-datetime__display-type-switcher\">\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"displayTypeDateLabel || ('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"displayTypeTimeLabel || ('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\">\n <fd-calendar\n [class.fd-datetime__active-display-type]=\"_displayType === 'date'\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n <div class=\"fd-datetime__separator\"></div>\n <fd-time\n *ngIf=\"isOpen\"\n [class.fd-datetime__active-display-type]=\"_displayType === 'time'\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n </div>\n <div fd-popover-body-footer *ngIf=\"showFooter\">\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [disabled]=\"!_tempDate\"\n [label]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n [ariaLabel]=\"okLabel || ('coreDatetimePicker.datetimeOkLabel' | fdTranslate)\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\"\n [ariaLabel]=\"\n cancelLabel || ('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)\n \"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n</div>\n", styles: [".fd-datetime{display:block}.fd-datetime__wrapper{max-height:80vh;max-width:80vw}.fd-datetime__container{display:flex;align-items:center;justify-content:center;margin:0 16px}.fd-datetime__separator{background-color:#d3d3d3;width:1px;margin:42px 28px;align-self:stretch}.fd-datetime fd-time{width:auto}.fd-datetime__display-type-switcher{margin-top:1rem;display:none;width:100%;justify-content:center}@media (max-width: 960px){.fd-datetime__display-type-switcher{display:flex}.fd-datetime__wrapper{min-width:min(20rem,90vw)}.fd-datetime__container>*:not(.fd-datetime__active-display-type){display:none}}\n"] }]
|
|
540
543
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatetimeAdapter, decorators: [{
|
|
541
544
|
type: Optional
|
|
542
545
|
}] }, { type: undefined, decorators: [{
|
|
@@ -644,4 +647,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
644
647
|
}], disableFunction: [{
|
|
645
648
|
type: Input
|
|
646
649
|
}] } });
|
|
647
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFnRCxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pILE9BQU8sRUFBbUIseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFB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dEQsYUFBYTtzQkFEWixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFzRHpELGVBQWU7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUGxhY2VtZW50LCBTcGVjaWFsRGF5UnVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgREFURV9USU1FX0ZPUk1BVFMsIERhdGV0aW1lQWRhcHRlciwgRGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50LCBDYWxlbmRhclllYXJHcmlkLCBEYXlzT2ZXZWVrLCBGZENhbGVuZGFyVmlldyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jYWxlbmRhcic7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIFBvcG92ZXJGb3JtTWVzc2FnZVNlcnZpY2UsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuXG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG4vKipcbiAqIFRoZSBkYXRldGltZSBwaWNrZXIgY29tcG9uZW50IGlzIGFuIG9waW5pb25hdGVkIGNvbXBvc2l0aW9uIG9mIHRoZSBmZC1wb3BvdmVyLFxuICogZmQtY2FsZW5kYXIgYW5kIGZkLXRpbWUgY29tcG9uZW50cyB0byBhY2NvbXBsaXNoIHRoZSBVSSBwYXR0ZXJuIGZvciBwaWNraW5nIGEgZGF0ZSBhbmQgdGltZS5cbiAqIFN1cHBvcnRzIEFuZ3VsYXIgRm9ybXMuXG4gKiBgYGBodG1sXG4gKiA8ZmQtZGF0ZS10aW1lLXBpY2tlciBbKG5nTW9kZWwpXT1cImRhdGVUaW1lXCI+PC9mZC1kYXRlLXRpbWUtcGlja2VyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZGF0ZXRpbWUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBQb3BvdmVyU2VydmljZVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRldGltZVBpY2tlckNvbXBvbmVudDxEPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgRm9ybUl0ZW1Db250cm9sXG57XG4gICAgLyoqIFBsYWNlaG9sZGVyIGZvciB0aGUgaW5uZXIgaW5wdXQgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiAgVGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3Zlci4gSXQgY2FuIGJlIG9uZSBvZjogdG9wLCB0b3Atc3RhcnQsIHRvcC1lbmQsIGJvdHRvbSxcbiAgICAgKiAgYm90dG9tLXN0YXJ0LCBib3R0b20tZW5kLCByaWdodCwgcmlnaHQtc3RhcnQsIHJpZ2h0LWVuZCwgbGVmdCwgbGVmdC1zdGFydCwgbGVmdC1lbmQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20tc3RhcnQnO1xuXG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhcHBlbmRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIElkIGF0dHJpYnV0ZSBmb3IgaW5wdXQgZWxlbWVudCBpbnNpZGUgRGF0ZVRpbWVQaWNrZXIgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICAvKiogSWYgaXQgaXMgbWFuZGF0b3J5IGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIG1lcmlkaWFuIChhbS9wbSkuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBtZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRpbWUgY29tcG9uZW50IHNob3dzIHNlY29uZHMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKiBhcmlhLWxhYmVsbGVkYnkgZm9yIGVsZW1lbnQgZGVzY3JpYmluZyBkYXRlLXBpY2tlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFRleHQgZGlzcGxheWVkIGluIG1lc3NhZ2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgbWVzc2FnZSBib3guXG4gICAgICogIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRyaWdnZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUcmlnZ2Vyczogc3RyaW5nW10gPSBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRpbWUgY29tcG9uZW50IHNob3dzIG1pbnV0ZXMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TWludXRlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRpbWUgY29tcG9uZW50IHNob3dzIGhvdXJzLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGZvcm1hdCBvcHRpb25cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gcGVyZm9ybSB2aXN1YWwgdmFsaWRhdGlvbiBvbiB0aGUgcGlja2VyIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlVmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAvKiogQ3VycmVudCBzZWxlY3RlZCBkYXRlLiBUd28td2F5IGJpbmRpbmcgaXMgc3VwcG9ydGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGF0ZTogTnVsbGFibGU8RD47XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBvcGVuLiBUd28td2F5IGJpbmRpbmcgaXMgc3VwcG9ydGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNPcGVuID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIGRpc2FibGVGdW5jdGlvbiBmb3IgdGhlIGNhbGVuZGFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRpbmdEYXlPZldlZWs6IERheXNPZldlZWsgPSAxO1xuXG4gICAgLyoqIEFjdHVhbGx5IHNob3duIGFjdGl2ZSB2aWV3IG9uZSBvZiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgaW4gY2FsZW5kYXIgY29tcG9uZW50Ki9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3ID0gJ2RheSc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIEFyaWEgbGFiZWwgZm9yIHRoZSBkYXRldGltZSBwaWNrZXIgaW5wdXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkYXRldGltZUlucHV0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQXJpYSBsYWJlbCBmb3IgdGhlIGJ1dHRvbiB0byBzaG93L2hpZGUgdGhlIGNhbGVuZGFyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheURhdGV0aW1lVG9nZ2xlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSBcIkRhdGVcIiBidXR0b24gaW4gZGlzcGxheSB0eXBlIHN3aXRjaGVyIGluIG1vYmlsZSBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5VHlwZURhdGVMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBMYWJlbCBmb3IgdGhlIFwiVGltZVwiIGJ1dHRvbiBpbiBkaXNwbGF5IHR5cGUgc3dpdGNoZXIgaW4gbW9iaWxlIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlUeXBlVGltZUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciBhIG51bGwgaW5wdXQgaXMgY29uc2lkZXJlZCB2YWxpZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93TnVsbCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBASW5wdXQgd2hlbiBzZXQgdG8gdHJ1ZSB0aW1lIGNvbXBvbmVudCB3aWxsIHVzZSAyIGRpZ2l0cyBmb3IgZWFjaCBudW1iZXIuXG4gICAgICogRm9yIGV4YW1wbGUgOSB3aWxsIGJlY29tZSAwOVxuICAgICAqIGJ1dCAxMiB3aWxsIGJlIGtlcHQgYXMgMTIuXG4gICAgICogT25seSB1c2VzIGJ5IHRpbWUgY29tcG9uZW50IGFuZCBkb2VzIG5vdCBjaGFuZ2UgaW5wdXQgZm9ybWF0XG4gICAgICovXG4gICAgQElucHV0KCkga2VlcFR3b0RpZ2l0c1RpbWUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIEFsc28gdGhpcyBpcyBhcHBsaWVkIHRvIG1lc3NhZ2UuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZVR5cGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogRm9ybVN0YXRlcyB7XG4gICAgICAgIGlmICh0aGlzLnVzZVZhbGlkYXRpb24gJiYgdGhpcy5pc0ludmFsaWREYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0YXRlOiBGb3JtU3RhdGVzID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJ1dHRvbkZvY3VzYWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWFsIGRheXMgbWFyaywgaXQgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhcnJheSBvZiBvYmplY3Qgd2l0aFxuICAgICAqIFNwZWNpYWwgZGF5IG51bWJlciwgbGlzdCAxLTIwIFtjbGFzczpgZmQtY2FsZW5kYXJfX3NwZWNpYWwtZGF5LS17e251bWJlcn19YF0gaXMgYXZhaWxhYmxlIHRoZXJlOlxuICAgICAqIGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9mdW5kYW1lbnRhbC1zdHlsZXMvY29tcG9uZW50cy9jYWxlbmRhci5odG1sIGNhbGVuZGFyIHNwZWNpYWwgZGF5cyBzZWN0aW9uXG4gICAgICogUnVsZSBhY2NlcHRzIG1ldGhvZCB3aXRoIEZkRGF0ZSBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuIGV4OlxuICAgICAqIGBydWxlOiAoZmREYXRlOiBGZERhdGUpID0+IGZkRGF0ZS5nZXREYXkoKSA9PT0gMWAsIHdoaWNoIHdpbGwgbWFyayBhbGwgc3VuZGF5cyBhcyBzcGVjaWFsIGRheS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNwZWNpYWxEYXlzUnVsZXM6IFNwZWNpYWxEYXlSdWxlPEQ+W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgeWVhciBncmlkLFxuICAgICAqIFJvdywgQ29sdW1ucyBhbmQgbWV0aG9kIHRvIGRpc3BsYXkgeWVhciBjYW4gYmUgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHllYXJHcmlkOiBDYWxlbmRhclllYXJHcmlkID0ge1xuICAgICAgICByb3dzOiA0LFxuICAgICAgICBjb2xzOiA1XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgYWdncmVnYXRlZCB5ZWFyIGdyaWQsXG4gICAgICogUm93LCBDb2x1bW5zIGFuZCBtZXRob2QgdG8gZGlzcGxheSB5ZWFyIGNhbiBiZSBtb2RpZmllZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWdncmVnYXRlZFllYXJHcmlkOiBDYWxlbmRhclllYXJHcmlkID0ge1xuICAgICAgICByb3dzOiA0LFxuICAgICAgICBjb2xzOiAzXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byBtYXJrIHN1bmRheS9zYXR1cmRheSB3aXRoIGBmZC1jYWxlbmRhcl9faXRlbS0td2Vla2VuZGAgY2xhc3NcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1hcmtXZWVrZW5kcyA9IHRydWU7XG5cbiAgICAvKiogQElucHV0IFdoZXRoZXIgdG8gc2hvdyBzcGlubmVyIGJ1dHRvbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNwaW5uZXJCdXR0b25zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byBzaG93IHdlZWsgbnVtYmVycyBuZXh0IHRvIGRheXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dXZWVrTnVtYmVycyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgZGF0ZXRpbWUgcGlja2VyIGZvb3RlciB3aXRoIE9LL2NhbmNlbCBidXR0b25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Zvb3RlciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHJlY2FsY3VsYXRlIHZhbHVlIGZyb20gdGhlIGlucHV0IGFzIHVzZXIgdHlwZXMgb3Igb24gYmx1ci5cbiAgICAgKiBCeSBkZWZhdWx0LCB1cGRhdGVzIHRoZSB2YWx1ZSBhcyB1c2VyIHR5cGVzLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcHJvY2Vzc0lucHV0T25CbHVyKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0lucHV0T25CbHVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICAgIH1cblxuICAgIGdldCBwcm9jZXNzSW5wdXRPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzSW5wdXRPbkJsdXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV2ZW50IHBhZ2Ugc2Nyb2xsaW5nIHdoZW4gZm9jdXNpbmcgZGF0ZSBwaWNrZXIgaW5wdXQgZmllbGQgYWZ0ZXIgY2FsZW5kYXIgaGFzIGJlZW4gY2xvc2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJldmVudFNjcm9sbE9uRm9jdXMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCBhbmQgYXJpYS1sYWJlbCBvZiB0aGUgRGF0ZVRpbWVQaWNrZXIgJ09LJyBidXR0b24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBva0xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgYW5kIGFyaWEtbGFiZWwgb2YgdGhlIERhdGVUaW1lUGlja2VyICdDYW5jZWwnIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbmNlbExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcm9jZXNzSW5wdXRPbkJsdXIgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBpc09wZW4gcHJvcGVydHkgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIGV2ZXJ5IHRpbWUgY2FsZW5kYXIgYWN0aXZlIHZpZXcgaXMgY2hhbmdlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBhY3RpdmVWaWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGRhdGUgY2hhbmdlcy4gVGhpcyBjYW4gYmUgYSB0aW1lIG9yIGRheSBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgZGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZGF5IGNoYW5nZXMgZnJvbSB0aGUgY2FsZW5kYXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2FsZW5kYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEPiA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRpbWUgY2hhbmdlcyBmcm9tIHRoZSB0aW1lIGNvbXBvbmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RD4gPSBuZXcgRXZlbnRFbWl0dGVyPEQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHBvcG92ZXIgY2xvc2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0ZXBpY2tlciBjaGFuZ2VzIGl0J3MgXCJ0b3VjaGVkXCIgc3RhdGUuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgdG91Y2hlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEluZGljYXRlcyB3aGVuIGRhdGV0aW1lIGlucHV0IGlzIGluIGludmFsaWQgc3RhdGUuICovXG4gICAgZ2V0IGlzSW52YWxpZERhdGVJbnB1dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZERhdGVJbnB1dCAmJiB0aGlzLl90b3VjaGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZmVyZW5jZSB0byB0aGUgaW5uZXIgY2FsZW5kYXIgY29tcG9uZW50LiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJDb21wb25lbnQpXG4gICAgX2NhbGVuZGFyQ29tcG9uZW50OiBDYWxlbmRhckNvbXBvbmVudDxEPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRHcm91cENvbXBvbmVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9pbnB1dEdyb3VwRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRGF0ZSBvZiB0aGUgaW5wdXQgZmllbGQuIEludGVybmFsIHVzZS5cbiAgICAgKiBGb3IgcHJvZ3JhbW1hdGljIHNlbGVjdGlvbiwgdXNlIHR3by13YXkgYmluZGluZyBvbiB0aGUgZGF0ZSBpbnB1dC5cbiAgICAgKi9cbiAgICBfaW5wdXRGaWVsZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNJbnZhbGlkRGF0ZUlucHV0ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBUaGUgdGVtcG9yYXJ5IFRpbWUgb2JqZWN0IGZvciB1c2UgYmVmb3JlICdPSycgaXMgcHJlc3NlZC4gSW50ZXJuYWwgdXNlLiAqL1xuICAgIF90ZW1wVGltZTogTnVsbGFibGU8RD47XG5cbiAgICAvKiogQGhpZGRlbiBUaGUgdGVtcG9yYXJ5IENhbGVuZGFyRGF5IG9iamVjdCBmb3IgdXNlIGJlZm9yZSAnT0snIGlzIHByZXNzZWQuIEludGVybmFsIHVzZS4gKi9cbiAgICBfdGVtcERhdGU6IE51bGxhYmxlPEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gd2hldGhlciB0byBkaXNwbGF5IGRhdGUgb3IgdGltZSBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIF9kaXNwbGF5VHlwZTogJ2RhdGUnIHwgJ3RpbWUnID0gJ2RhdGUnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG91Y2hlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBEIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGlzYWJsZSBjZXJ0YWluIGRhdGVzIGluIHRoZSBjYWxlbmRhci5cbiAgICAgKiBAcGFyYW0gZmREYXRlIEZkRGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZUZ1bmN0aW9uOiAodmFsdWU6IEQpID0+IGJvb2xlYW4gPSAoKSA9PiBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvLyBVc2UgQE9wdGlvbmFsIHRvIGF2b2lkIGFuZ3VsYXIgaW5qZWN0aW9uIGVycm9yIG1lc3NhZ2UgYW5kIHRocm93IG91ciBvd24gd2hpY2ggaXMgbW9yZSBwcmVjaXNlIG9uZVxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHMsXG4gICAgICAgIHByaXZhdGUgX3BvcG92ZXJGb3JtTWVzc2FnZTogUG9wb3ZlckZvcm1NZXNzYWdlU2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGVUaW1lQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKCdEYXRlVGltZUFkYXB0ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGVUaW1lRm9ybWF0cykge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKCdEQVRFX1RJTUVfRk9STUFUUycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtb2RlbCB2YWx1ZVxuICAgICAgICB0aGlzLmRhdGUgPSBfZGF0ZVRpbWVBZGFwdGVyLm5vdygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5kYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUZW1wRGF0ZVRpbWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ2Rpc3BsYXlIb3VycycsICdkaXNwbGF5TWludXRlcycsICdkaXNwbGF5U2Vjb25kcycsICdtZXJpZGlhbiddLnNvbWUoKGlucHV0KSA9PiBpbnB1dCBpbiBjaGFuZ2VzKSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRlbXBEYXRlVGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLl9pbnB1dEZpZWxkRGF0ZSAhPT0gJycpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRJbnB1dCh0aGlzLmRhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fSW5pdGlhbGlzZVZhcmlhYmxlc0luTWVzc2FnZVNlcnZpY2UoKTtcbiAgICAgICAgLy8gdXBkYXRlIGJpbmRpbmdzIGFmdGVyIHJlbmRlcmluZ1xuICAgICAgICAvLyBpcyBuZWVkZWQgdG8gcHJlcGVybHkgcmVmbGVjdCBlcnJvciBzdGF0ZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBWYWxpZGF0b3IgSW50ZXJmYWNlLCBhZGRzIHZhbGlkYXRpb24gc3VwcG9ydCBmb3IgZm9ybXNcbiAgICAgKi9cbiAgICB2YWxpZGF0ZSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudE1vZGVsVmFsaWQoKSAmJiAhdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0XG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgZGF0ZVZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgcG9wb3Zlci4gKi9cbiAgICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBoYW5kbGVzIGNhbGVuZGFyIGFjdGl2ZSB2aWV3IGNoYW5nZSBhbmQgdGhyb3dzIGV2ZW50LlxuICAgICAqL1xuICAgIGhhbmRsZUNhbGVuZGFyQWN0aXZlVmlld0NoYW5nZShhY3RpdmVWaWV3OiBGZENhbGVuZGFyVmlldyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2UuZW1pdChhY3RpdmVWaWV3KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgaGFuZGxlcyBibHVyIGV2ZW50cyBvbiBkYXRldGltZSBwaWNrZXIgaW5wdXQgKi9cbiAgICBoYW5kbGVPblRvdWNoZWQoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RvdWNoZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnRvdWNoZWQubmV4dCgpO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoKDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldCkudmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbiAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fb25PcGVuU3RhdGVDaGFuZ2VkKHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIgYW5kIHJlZnJlc2ggbW9kZWwgKi9cbiAgICBjbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9vbk9wZW5TdGF0ZUNoYW5nZWQodGhpcy5pc09wZW4pO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVPblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0SW52YWxpZERhdGVJbnB1dEhhbmRsZXIoaXNJbnZhbGlkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZERhdGVJbnB1dCA9IGlzSW52YWxpZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChzZWxlY3RlZDogYW55KSA9PiB7IHZvaWQgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgdGhhdCBhbGxvd3MgdG8gdXNlIFsobmdNb2RlbCldIG9yIGZvcm1zXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZShzZWxlY3RlZDogTnVsbGFibGU8RD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5fcGFyc2VEYXRlKHNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gIXRoaXMuX2lzTW9kZWxWYWxpZCh0aGlzLmRhdGUpO1xuICAgICAgICBpZiAodGhpcy5pc0N1cnJlbnRNb2RlbFZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRlbXBEYXRlVGltZSgpO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEN1cnJlbnRseURpc3BsYXllZENhbGVuZGFyRGF0ZSh0aGlzLmRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldElucHV0KHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHRyaWdnZXJlZCBieSBldmVudHMgZnJvbSBjYWxlbmRhciBjb21wb25lbnQsIHdoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgZGF0ZSBjaGFuZ2VkLlxuICAgICAqIElmIGludmFsaWQgdGltZSBtb2RlbCBpcyBkZXRlY3RlZCwgaXQgdGFrZXMgdGltZSBtb2RlbCBkYXRhIGZyb20gVGltZUNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBoYW5kbGVEYXRlQ2hhbmdlKGRhdGU6IEQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcERhdGUgPSBkYXRlO1xuICAgICAgICBpZiAoIXRoaXMuc2hvd0Zvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgZXZlbnRzIGZyb20gdGltZSBjb21wb25lbnQsIHdoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgdGltZSBjaGFuZ2VkXG4gICAgICovXG4gICAgaGFuZGxlVGltZUNoYW5nZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RlbXBUaW1lID0gdGltZTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dGb290ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gJ09LJyBidXR0b24gaXMgcHJlc3NlZC5cbiAgICAgKi9cbiAgICBzdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIG1hcmtpbmcgZGF0ZSAmIHRpbWUgYXMgbm90IG51bGwsIGVycm9ycyB3aWxsIGJlIGNhdWdodCBiZWxvd1xuICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMuX3RlbXBEYXRlITtcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSB0aGlzLl90ZW1wVGltZSE7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5zZXRUaW1lKFxuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRIb3VycyhjdXJyZW50VGltZSksXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1pbnV0ZXMoY3VycmVudFRpbWUpLFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRTZWNvbmRzKGN1cnJlbnRUaW1lKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB0aGlzLmRhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZERhdGVJbnB1dCA9ICF0aGlzLmlzQ3VycmVudE1vZGVsVmFsaWQoKTtcblxuICAgICAgICB0aGlzLl9zZXRJbnB1dCh0aGlzLmRhdGUpO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93Rm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuICdDYW5jZWwnIGJ1dHRvbiBpcyBwcmVzc2VkLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcERhdGUgPSB0aGlzLmRhdGU7XG4gICAgICAgIHRoaXMuX3RlbXBUaW1lID0gdGhpcy5kYXRlO1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMb29rcyBsaWtlIG5vIG9uZSB1c2VzIGl0LiBTaG91bGQgYmUgcmVtb3ZlZD9cbiAgICAgKi9cbiAgICBmb2N1c0Fycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignIycgKyB0aGlzLl9jYWxlbmRhckNvbXBvbmVudC5pZCArICctbGVmdC1hcnJvdycpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5fY2FsZW5kYXJDb21wb25lbnQuaWQgKyAnLWxlZnQtYXJyb3cnKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRyYW5zZm9ybWluZyBzdHJpbmcgdG8gZGF0ZXRpbWUsIGRlcGVuZGluZyBvbiB0eXBlIG9yXG4gICAgICogdmFsaWRhdGlvbiB0aGUgcmVzdWx0cyBhcmUgZGlmZmVyZW50LiBJdCBhbHNvIGNoYW5nZXMgdG8gc3RhdGUgb2YgX2lzSW52YWxpZERhdGVJbnB1dC5cbiAgICAgKi9cbiAgICBoYW5kbGVJbnB1dENoYW5nZShpbnB1dFN0cjogc3RyaW5nLCBpc1R5cGVFdmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoKGlzVHlwZUV2ZW50ICYmIHRoaXMucHJvY2Vzc0lucHV0T25CbHVyKSB8fCAoIWlzVHlwZUV2ZW50ICYmICF0aGlzLnByb2Nlc3NJbnB1dE9uQmx1cikpIHtcbiAgICAgICAgICAgIC8vIGlmIHByb2Nlc3NJbnB1dE9uQmx1ciA9PT0gdHJ1ZSwgaWdub3JlIHR5cGUgZXZlbnRcbiAgICAgICAgICAgIC8vIGlmIHByb2Nlc3NJbnB1dE9uQmx1ciA9PT0gZmFsc2UsIGlnbm9yZSBibHVyL2VudGVyIGV2ZW50XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXRGaWVsZERhdGUgPSBpbnB1dFN0ciA/PyAnJztcbiAgICAgICAgaWYgKCFpbnB1dFN0cikge1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gIXRoaXMuYWxsb3dOdWxsO1xuICAgICAgICAgICAgdGhpcy5kYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5fcGFyc2VEYXRlKGlucHV0U3RyKTtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gIXRoaXMuX2lzTW9kZWxWYWxpZCh0aGlzLmRhdGUpO1xuXG4gICAgICAgIGlmICghdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUZW1wRGF0ZVRpbWUoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hDdXJyZW50bHlEaXNwbGF5ZWRDYWxlbmRhckRhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk9wZW5TdGF0ZUNoYW5nZWQoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTtcbiAgICAgICAgLy8gZm9jdXMgaW5wdXQgY29udHJvbCBldmVyeSB0aW1lIHBvcHVwIGlzIGNsb3NlZFxuICAgICAgICBpZiAoIWlzT3BlbiAmJiB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0aGlzLnByZXZlbnRTY3JvbGxPbkZvY3VzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyBjYWxlbmRhciBjZWxsIG9uIG9wZW5pbmdcbiAgICAgICAgaWYgKGlzT3BlbiAmJiB0aGlzLl9jYWxlbmRhckNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJDb21wb25lbnQuaW5pdGlhbEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gaWYgbW9kZWwgc2VsZWN0ZWQgZGF0ZS9kYXRlcyBoYXZlIHByb3Blcmx5IHR5cGVzIGFuZCBhcmUgdmFsaWQgKi9cbiAgICBpc0N1cnJlbnRNb2RlbFZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RlbFZhbGlkKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGlmIEZkRGF0ZVRpbWUgcGFzc2VkIGFzIGFyZyBoYXMgcHJvcGVybHkgdHlwZXMgYW5kIGlzIHZhbGlkICovXG4gICAgcHJpdmF0ZSBfaXNNb2RlbFZhbGlkKGRhdGU6IE51bGxhYmxlPEQ+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoZGF0ZSA9PT0gbnVsbCAmJiB0aGlzLmFsbG93TnVsbCkgfHwgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJbnB1dChkYXRlVGltZTogTnVsbGFibGU8RD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5wdXRGaWVsZERhdGUgPSBkYXRlVGltZSA/IHRoaXMuX2Zvcm1hdERhdGVUaW1lKGRhdGVUaW1lKSA6ICcnO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaEN1cnJlbnRseURpc3BsYXllZENhbGVuZGFyRGF0ZShkYXRlOiBOdWxsYWJsZTxEPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsZW5kYXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyQ29tcG9uZW50LnNldEN1cnJlbnRseURpc3BsYXllZChkYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGb3JtYXQgZGF0ZSB0aW1lIGVudGl0eS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9mb3JtYXREYXRlVGltZShkYXRlVGltZTogRCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGU6IHN0cmluZyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoXG4gICAgICAgICAgICBkYXRlVGltZSxcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LmRhdGVUaW1lSW5wdXRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGUgfHwgJyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9Jbml0aWFsaXNlVmFyaWFibGVzSW5NZXNzYWdlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmluaXQodGhpcy5faW5wdXRHcm91cEVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IHRoaXMuX21lc3NhZ2UgPz8gJyc7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRoaXMuX21lc3NhZ2VUcmlnZ2VycztcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2VUeXBlID0gdGhpcy5fc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJzZURhdGUoZGF0ZTogdW5rbm93bik6IEQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5wYXJzZShkYXRlLCB0aGlzLl9kYXRlVGltZUZvcm1hdHMucGFyc2UuZGF0ZUlucHV0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFRlbXBEYXRlVGltZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcERhdGUgPSB0aGlzLmRhdGU7XG4gICAgICAgIHRoaXMuX3RlbXBUaW1lID0gdGhpcy5kYXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVGltZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LmRhdGVUaW1lSW5wdXQ7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtZXJpZGlhbiBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9tZXJpZGlhbiA9XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuICE9IG51bGwgPyB0aGlzLm1lcmlkaWFuIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzRGF5UGVyaW9kKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBzZWNvbmRzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlTZWNvbmRzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVNlY29uZHMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5kaXNwbGF5U2Vjb25kc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgbWludXRlcyBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9kaXNwbGF5TWludXRlcyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNaW51dGVzICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IHRoaXMuZGlzcGxheU1pbnV0ZXNcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc01pbnV0ZXMoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IGhvdXJzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlIb3VycyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlIb3VycyAhPSBudWxsID8gdGhpcy5kaXNwbGF5SG91cnMgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3Vycyhmb3JtYXQpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1kYXRldGltZVwiPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIFsoaXNPcGVuKV09XCJpc09wZW5cIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9vbk9wZW5TdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cImZhbHNlXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJwbGFjZW1lbnRcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICAgICAgICAgICNpbnB1dEdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJkYXRlLXRpbWVcIlxuICAgICAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RGF0ZXRpbWVUb2dnbGVMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kaXNwbGF5RGF0ZXRpbWVUb2dnbGVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlEYXRldGltZVRvZ2dsZUxhYmVsIHx8ICgnY29yZURhdGV0aW1lUGlja2VyLmRpc3BsYXlEYXRldGltZVRvZ2dsZUxhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJ0b2dnbGVQb3BvdmVyKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRhdGV0aW1lSW5wdXRMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZUlucHV0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfaW5wdXRGaWVsZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHlcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZkLWZvcm0tbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhaXNPcGVuXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIGlkPVwiZmQtZm9ybS1tZXNzYWdlXCIgW2VtYmVkZGVkXT1cInRydWVcIiAqbmdJZj1cIl9tZXNzYWdlXCIgW3R5cGVdPVwic3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgX21lc3NhZ2UgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX2Rpc3BsYXktdHlwZS1zd2l0Y2hlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtc2VnbWVudGVkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cIl9kaXNwbGF5VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJkaXNwbGF5VHlwZURhdGVMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kaXNwbGF5VHlwZURhdGVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImRpc3BsYXlUeXBlVGltZUxhYmVsIHx8ICgnY29yZURhdGV0aW1lUGlja2VyLmRpc3BsYXlUeXBlVGltZUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1zZWdtZW50ZWQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1kYXRldGltZV9fYWN0aXZlLWRpc3BsYXktdHlwZV09XCJfZGlzcGxheVR5cGUgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxUeXBlPVwic2luZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVWaWV3XT1cImFjdGl2ZVZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVGdW5jdGlvbl09XCJkaXNhYmxlRnVuY3Rpb24gfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWREYXRlXT1cIl90ZW1wRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXNjYXBlRm9jdXNGdW5jdGlvbl09XCJudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrV2Vla2VuZHNdPVwibWFya1dlZWtlbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcGVjaWFsRGF5c1J1bGVzXT1cInNwZWNpYWxEYXlzUnVsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJzaG93V2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FnZ3JlZ2F0ZWRZZWFyR3JpZF09XCJhZ2dyZWdhdGVkWWVhckdyaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3llYXJHcmlkXT1cInllYXJHcmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydGluZ0RheU9mV2Vla109XCJzdGFydGluZ0RheU9mV2Vla1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckFjdGl2ZVZpZXdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWREYXRlQ2hhbmdlKT1cImhhbmRsZURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNWYWxpZERhdGVDaGFuZ2UpPVwic2V0SW52YWxpZERhdGVJbnB1dEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX3NlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLWRhdGV0aW1lX19hY3RpdmUtZGlzcGxheS10eXBlXT1cIl9kaXNwbGF5VHlwZSA9PT0gJ3RpbWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2VlcFR3b0RpZ2l0c109XCJrZWVwVHdvRGlnaXRzVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfdGVtcFRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NwaW5uZXJCdXR0b25zXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttZXJpZGlhbl09XCJfbWVyaWRpYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlTZWNvbmRzXT1cIl9kaXNwbGF5U2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheU1pbnV0ZXNdPVwiX2Rpc3BsYXlNaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5SG91cnNdPVwiX2Rpc3BsYXlIb3Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC10aW1lPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3RlciAqbmdJZj1cInNob3dGb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwib2tMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZU9rTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwib2tMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZU9rTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfHwgKCdjb3JlRGF0ZXRpbWVQaWNrZXIuZGF0ZXRpbWVDYW5jZWxMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZUNhbmNlbExhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvZGl2PlxuIl19
|
|
650
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFnRCxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pILE9BQU8sRUFBbUIseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFB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QUMsaUJBQWlCO2dCQUs1QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUt0RCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXNEekQsZUFBZTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQbGFjZW1lbnQsIFNwZWNpYWxEYXlSdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFUUywgRGF0ZXRpbWVBZGFwdGVyLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQsIENhbGVuZGFyWWVhckdyaWQsIERheXNPZldlZWssIEZkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NhbGVuZGFyJztcbmltcG9ydCB7IEZvcm1JdGVtQ29udHJvbCwgUG9wb3ZlckZvcm1NZXNzYWdlU2VydmljZSwgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbnB1dC1ncm91cCc7XG5cbmltcG9ydCB7IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbi8qKlxuICogVGhlIGRhdGV0aW1lIHBpY2tlciBjb21wb25lbnQgaXMgYW4gb3BpbmlvbmF0ZWQgY29tcG9zaXRpb24gb2YgdGhlIGZkLXBvcG92ZXIsXG4gKiBmZC1jYWxlbmRhciBhbmQgZmQtdGltZSBjb21wb25lbnRzIHRvIGFjY29tcGxpc2ggdGhlIFVJIHBhdHRlcm4gZm9yIHBpY2tpbmcgYSBkYXRlIGFuZCB0aW1lLlxuICogU3VwcG9ydHMgQW5ndWxhciBGb3Jtcy5cbiAqIGBgYGh0bWxcbiAqIDxmZC1kYXRlLXRpbWUtcGlja2VyIFsobmdNb2RlbCldPVwiZGF0ZVRpbWVcIj48L2ZkLWRhdGUtdGltZS1waWNrZXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1kYXRldGltZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRldGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGV0aW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgIFBvcG92ZXJGb3JtTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIFBvcG92ZXJTZXJ2aWNlXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdGV0aW1lUGlja2VyQ29tcG9uZW50PEQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBpbm5lciBpbnB1dCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKlxuICAgICAqICBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLiBJdCBjYW4gYmUgb25lIG9mOiB0b3AsIHRvcC1zdGFydCwgdG9wLWVuZCwgYm90dG9tLFxuICAgICAqICBib3R0b20tc3RhcnQsIGJvdHRvbS1lbmQsIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGFwcGVuZGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG86IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBpbnB1dCBlbGVtZW50IGluc2lkZSBEYXRlVGltZVBpY2tlciBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0SWQ6IHN0cmluZztcblxuICAgIC8qKiBJZiBpdCBpcyBtYW5kYXRvcnkgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0aW1lIGNvbXBvbmVudCBzaG91bGQgYmUgbWVyaWRpYW4gKGFtL3BtKS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1lcmlkaWFuOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGltZSBjb21wb25lbnQgc2hvd3Mgc2Vjb25kcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgLyoqIGFyaWEtbGFiZWxsZWRieSBmb3IgZWxlbWVudCBkZXNjcmliaW5nIGRhdGUtcGlja2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogVGV4dCBkaXNwbGF5ZWQgaW4gbWVzc2FnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRyaWdnZXIgZXZlbnRzIHRoYXQgd2lsbCBvcGVuL2Nsb3NlIHRoZSBtZXNzYWdlIGJveC5cbiAgICAgKiAgQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWVzc2FnZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlVHJpZ2dlcnMgPSB0cmlnZ2VycztcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLnRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZVRyaWdnZXJzOiBzdHJpbmdbXSA9IFsnZm9jdXNpbicsICdmb2N1c291dCddO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGltZSBjb21wb25lbnQgc2hvd3MgbWludXRlcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGltZSBjb21wb25lbnQgc2hvd3MgaG91cnMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5SG91cnM6IGJvb2xlYW47XG5cbiAgICAvKiogV2hldGhlciB0byBwZXJmb3JtIHZpc3VhbCB2YWxpZGF0aW9uIG9uIHRoZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB1c2VWYWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKiBDdXJyZW50IHNlbGVjdGVkIGRhdGUuIFR3by13YXkgYmluZGluZyBpcyBzdXBwb3J0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBkYXRlOiBOdWxsYWJsZTxEPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4uIFR3by13YXkgYmluZGluZyBpcyBzdXBwb3J0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgZGlzYWJsZUZ1bmN0aW9uIGZvciB0aGUgY2FsZW5kYXIuICovXG4gICAgQElucHV0KClcbiAgICBzdGFydGluZ0RheU9mV2VlazogRGF5c09mV2VlayA9IDE7XG5cbiAgICAvKiogQWN0dWFsbHkgc2hvd24gYWN0aXZlIHZpZXcgb25lIG9mICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyBpbiBjYWxlbmRhciBjb21wb25lbnQqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQXJpYSBsYWJlbCBmb3IgdGhlIGRhdGV0aW1lIHBpY2tlciBpbnB1dC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRhdGV0aW1lSW5wdXRMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBBcmlhIGxhYmVsIGZvciB0aGUgYnV0dG9uIHRvIHNob3cvaGlkZSB0aGUgY2FsZW5kYXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RGF0ZXRpbWVUb2dnbGVMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBMYWJlbCBmb3IgdGhlIFwiRGF0ZVwiIGJ1dHRvbiBpbiBkaXNwbGF5IHR5cGUgc3dpdGNoZXIgaW4gbW9iaWxlIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlUeXBlRGF0ZUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciB0aGUgXCJUaW1lXCIgYnV0dG9uIGluIGRpc3BsYXkgdHlwZSBzd2l0Y2hlciBpbiBtb2JpbGUgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVR5cGVUaW1lTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIGEgbnVsbCBpbnB1dCBpcyBjb25zaWRlcmVkIHZhbGlkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOdWxsID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCB3aGVuIHNldCB0byB0cnVlIHRpbWUgY29tcG9uZW50IHdpbGwgdXNlIDIgZGlnaXRzIGZvciBlYWNoIG51bWJlci5cbiAgICAgKiBGb3IgZXhhbXBsZSA5IHdpbGwgYmVjb21lIDA5XG4gICAgICogYnV0IDEyIHdpbGwgYmUga2VwdCBhcyAxMi5cbiAgICAgKiBPbmx5IHVzZXMgYnkgdGltZSBjb21wb25lbnQgYW5kIGRvZXMgbm90IGNoYW5nZSBpbnB1dCBmb3JtYXRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBrZWVwVHdvRGlnaXRzVGltZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiAgQWxzbyB0aGlzIGlzIGFwcGxpZWQgdG8gbWVzc2FnZS5cbiAgICAgKiAgQ2FuIGJlIGBzdWNjZXNzYCwgYGVycm9yYCwgYHdhcm5pbmdgLCBgaW5mb3JtYXRpb25gIG9yIGJsYW5rIGZvciBkZWZhdWx0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHN0YXRlOiBGb3JtU3RhdGVzKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5tZXNzYWdlVHlwZSA9IHN0YXRlO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKHRoaXMudXNlVmFsaWRhdGlvbiAmJiB0aGlzLmlzSW52YWxpZERhdGVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RhdGU6IEZvcm1TdGF0ZXMgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEFkZE9uIEJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgZGF5cyBtYXJrLCBpdCBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGFycmF5IG9mIG9iamVjdCB3aXRoXG4gICAgICogU3BlY2lhbCBkYXkgbnVtYmVyLCBsaXN0IDEtMjAgW2NsYXNzOmBmZC1jYWxlbmRhcl9fc3BlY2lhbC1kYXktLXt7bnVtYmVyfX1gXSBpcyBhdmFpbGFibGUgdGhlcmU6XG4gICAgICogaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2Z1bmRhbWVudGFsLXN0eWxlcy9jb21wb25lbnRzL2NhbGVuZGFyLmh0bWwgY2FsZW5kYXIgc3BlY2lhbCBkYXlzIHNlY3Rpb25cbiAgICAgKiBSdWxlIGFjY2VwdHMgbWV0aG9kIHdpdGggRmREYXRlIG9iamVjdCBhcyBhIHBhcmFtZXRlci4gZXg6XG4gICAgICogYHJ1bGU6IChmZERhdGU6IEZkRGF0ZSkgPT4gZmREYXRlLmdldERheSgpID09PSAxYCwgd2hpY2ggd2lsbCBtYXJrIGFsbCBzdW5kYXlzIGFzIHNwZWNpYWwgZGF5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3BlY2lhbERheXNSdWxlczogU3BlY2lhbERheVJ1bGU8RD5bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSB5ZWFyIGdyaWQsXG4gICAgICogUm93LCBDb2x1bW5zIGFuZCBtZXRob2QgdG8gZGlzcGxheSB5ZWFyIGNhbiBiZSBtb2RpZmllZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQgPSB7XG4gICAgICAgIHJvd3M6IDQsXG4gICAgICAgIGNvbHM6IDVcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSBhZ2dyZWdhdGVkIHllYXIgZ3JpZCxcbiAgICAgKiBSb3csIENvbHVtbnMgYW5kIG1ldGhvZCB0byBkaXNwbGF5IHllYXIgY2FuIGJlIG1vZGlmaWVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhZ2dyZWdhdGVkWWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQgPSB7XG4gICAgICAgIHJvd3M6IDQsXG4gICAgICAgIGNvbHM6IDNcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIG1hcmsgc3VuZGF5L3NhdHVyZGF5IHdpdGggYGZkLWNhbGVuZGFyX19pdGVtLS13ZWVrZW5kYCBjbGFzc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWFya1dlZWtlbmRzID0gdHJ1ZTtcblxuICAgIC8qKiBASW5wdXQgV2hldGhlciB0byBzaG93IHNwaW5uZXIgYnV0dG9ucyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3Bpbm5lckJ1dHRvbnMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIHNob3cgd2VlayBudW1iZXJzIG5leHQgdG8gZGF5c1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1dlZWtOdW1iZXJzID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBkYXRldGltZSBwaWNrZXIgZm9vdGVyIHdpdGggT0svY2FuY2VsIGJ1dHRvbnMuICovXG4gICAgQElucHV0KClcbiAgICBzaG93Rm9vdGVyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcmVjYWxjdWxhdGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgYXMgdXNlciB0eXBlcyBvciBvbiBibHVyLlxuICAgICAqIEJ5IGRlZmF1bHQsIHVwZGF0ZXMgdGhlIHZhbHVlIGFzIHVzZXIgdHlwZXMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBwcm9jZXNzSW5wdXRPbkJsdXIodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9wcm9jZXNzSW5wdXRPbkJsdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgZ2V0IHByb2Nlc3NJbnB1dE9uQmx1cigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NJbnB1dE9uQmx1cjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXZlbnQgcGFnZSBzY3JvbGxpbmcgd2hlbiBmb2N1c2luZyBkYXRlIHBpY2tlciBpbnB1dCBmaWVsZCBhZnRlciBjYWxlbmRhciBoYXMgYmVlbiBjbG9zZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcmV2ZW50U2Nyb2xsT25Gb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBUZXh0IGFuZCBhcmlhLWxhYmVsIG9mIHRoZSBEYXRlVGltZVBpY2tlciAnT0snIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG9rTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCBhbmQgYXJpYS1sYWJlbCBvZiB0aGUgRGF0ZVRpbWVQaWNrZXIgJ0NhbmNlbCcgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2FuY2VsTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2Nlc3NJbnB1dE9uQmx1ciA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIGlzT3BlbiBwcm9wZXJ0eSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gZXZlcnkgdGltZSBjYWxlbmRhciBhY3RpdmUgdmlldyBpcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZGF0ZSBjaGFuZ2VzLiBUaGlzIGNhbiBiZSBhIHRpbWUgb3IgZGF5IGNoYW5nZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RD4gPSBuZXcgRXZlbnRFbWl0dGVyPEQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkYXkgY2hhbmdlcyBmcm9tIHRoZSBjYWxlbmRhci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBjYWxlbmRhckNoYW5nZTogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdGltZSBjaGFuZ2VzIGZyb20gdGhlIHRpbWUgY29tcG9uZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHRpbWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEPiA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gcG9wb3ZlciBjbG9zZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25DbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRlcGlja2VyIGNoYW5nZXMgaXQncyBcInRvdWNoZWRcIiBzdGF0ZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB0b3VjaGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gZGF0ZXRpbWUgaW5wdXQgaXMgaW4gaW52YWxpZCBzdGF0ZS4gKi9cbiAgICBnZXQgaXNJbnZhbGlkRGF0ZUlucHV0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ICYmIHRoaXMuX3RvdWNoZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIHRoZSBpbm5lciBjYWxlbmRhciBjb21wb25lbnQuICovXG4gICAgQFZpZXdDaGlsZChDYWxlbmRhckNvbXBvbmVudClcbiAgICBfY2FsZW5kYXJDb21wb25lbnQ6IENhbGVuZGFyQ29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwQ29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0R3JvdXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBEYXRlIG9mIHRoZSBpbnB1dCBmaWVsZC4gSW50ZXJuYWwgdXNlLlxuICAgICAqIEZvciBwcm9ncmFtbWF0aWMgc2VsZWN0aW9uLCB1c2UgdHdvLXdheSBiaW5kaW5nIG9uIHRoZSBkYXRlIGlucHV0LlxuICAgICAqL1xuICAgIF9pbnB1dEZpZWxkRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc0ludmFsaWREYXRlSW5wdXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFRoZSB0ZW1wb3JhcnkgVGltZSBvYmplY3QgZm9yIHVzZSBiZWZvcmUgJ09LJyBpcyBwcmVzc2VkLiBJbnRlcm5hbCB1c2UuICovXG4gICAgX3RlbXBUaW1lOiBOdWxsYWJsZTxEPjtcblxuICAgIC8qKiBAaGlkZGVuIFRoZSB0ZW1wb3JhcnkgQ2FsZW5kYXJEYXkgb2JqZWN0IGZvciB1c2UgYmVmb3JlICdPSycgaXMgcHJlc3NlZC4gSW50ZXJuYWwgdXNlLiAqL1xuICAgIF90ZW1wRGF0ZTogTnVsbGFibGU8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheU1pbnV0ZXM6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5SG91cnM6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiB3aGV0aGVyIHRvIGRpc3BsYXkgZGF0ZSBvciB0aW1lIGluIG1vYmlsZSBtb2RlICovXG4gICAgX2Rpc3BsYXlUeXBlOiAnZGF0ZScgfCAndGltZScgPSAnZGF0ZSc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b3VjaGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IEQgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdXNlZCB0byBkaXNhYmxlIGNlcnRhaW4gZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLlxuICAgICAqIEBwYXJhbSBmZERhdGUgRmREYXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlRnVuY3Rpb246ICh2YWx1ZTogRCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIC8vIFVzZSBAT3B0aW9uYWwgdG8gYXZvaWQgYW5ndWxhciBpbmplY3Rpb24gZXJyb3IgbWVzc2FnZSBhbmQgdGhyb3cgb3VyIG93biB3aGljaCBpcyBtb3JlIHByZWNpc2Ugb25lXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEVfVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlVGltZUZvcm1hdHM6IERhdGVUaW1lRm9ybWF0cyxcbiAgICAgICAgcHJpdmF0ZSBfcG9wb3ZlckZvcm1NZXNzYWdlOiBQb3BvdmVyRm9ybU1lc3NhZ2VTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RBVEVfVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZWZhdWx0IG1vZGVsIHZhbHVlXG4gICAgICAgIHRoaXMuZGF0ZSA9IF9kYXRlVGltZUFkYXB0ZXIubm93KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRlbXBEYXRlVGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFsnZGlzcGxheUhvdXJzJywgJ2Rpc3BsYXlNaW51dGVzJywgJ2Rpc3BsYXlTZWNvbmRzJywgJ21lcmlkaWFuJ10uc29tZSgoaW5wdXQpID0+IGlucHV0IGluIGNoYW5nZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVUaW1lT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGVtcERhdGVUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVUaW1lT3B0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX2lucHV0RmllbGREYXRlICE9PSAnJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldElucHV0KHRoaXMuZGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9Jbml0aWFsaXNlVmFyaWFibGVzSW5NZXNzYWdlU2VydmljZSgpO1xuICAgICAgICAvLyB1cGRhdGUgYmluZGluZ3MgYWZ0ZXIgcmVuZGVyaW5nXG4gICAgICAgIC8vIGlzIG5lZWRlZCB0byBwcmVwZXJseSByZWZsZWN0IGVycm9yIHN0YXRlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIFZhbGlkYXRvciBJbnRlcmZhY2UsIGFkZHMgdmFsaWRhdGlvbiBzdXBwb3J0IGZvciBmb3Jtc1xuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50TW9kZWxWYWxpZCgpICYmICF0aGlzLl9pc0ludmFsaWREYXRlSW5wdXRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRlVmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwb3BvdmVyLiAqL1xuICAgIHRvZ2dsZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGhhbmRsZXMgY2FsZW5kYXIgYWN0aXZlIHZpZXcgY2hhbmdlIGFuZCB0aHJvd3MgZXZlbnQuXG4gICAgICovXG4gICAgaGFuZGxlQ2FsZW5kYXJBY3RpdmVWaWV3Q2hhbmdlKGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KGFjdGl2ZVZpZXcpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBoYW5kbGVzIGJsdXIgZXZlbnRzIG9uIGRhdGV0aW1lIHBpY2tlciBpbnB1dCAqL1xuICAgIGhhbmRsZU9uVG91Y2hlZChldmVudD86IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG91Y2hlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMudG91Y2hlZC5uZXh0KCk7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZSgoPEhUTUxJbnB1dEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS52YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBwb3BvdmVyLiAqL1xuICAgIG9wZW5Qb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9vbk9wZW5TdGF0ZUNoYW5nZWQodGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3ZlciBhbmQgcmVmcmVzaCBtb2RlbCAqL1xuICAgIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX29uT3BlblN0YXRlQ2hhbmdlZCh0aGlzLmlzT3Blbik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRJbnZhbGlkRGF0ZUlucHV0SGFuZGxlcihpc0ludmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gaXNJbnZhbGlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHNlbGVjdGVkOiBhbnkpID0+IHsgdm9pZCB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBwcm92aWRlcyBzdXBwb3J0IGZvciBDb250cm9sVmFsdWVBY2Nlc3NvciB0aGF0IGFsbG93cyB0byB1c2UgWyhuZ01vZGVsKV0gb3IgZm9ybXNcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHNlbGVjdGVkOiBOdWxsYWJsZTxEPik6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLl9wYXJzZURhdGUoc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLl9pc0ludmFsaWREYXRlSW5wdXQgPSAhdGhpcy5faXNNb2RlbFZhbGlkKHRoaXMuZGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VycmVudE1vZGVsVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGVtcERhdGVUaW1lKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoQ3VycmVudGx5RGlzcGxheWVkQ2FsZW5kYXJEYXRlKHRoaXMuZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0SW5wdXQodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdHJpZ2dlcmVkIGJ5IGV2ZW50cyBmcm9tIGNhbGVuZGFyIGNvbXBvbmVudCwgd2hlbiB0aGVyZSBpcyBzZWxlY3RlZCBkYXRlIGNoYW5nZWQuXG4gICAgICogSWYgaW52YWxpZCB0aW1lIG1vZGVsIGlzIGRldGVjdGVkLCBpdCB0YWtlcyB0aW1lIG1vZGVsIGRhdGEgZnJvbSBUaW1lQ29tcG9uZW50LlxuICAgICAqL1xuICAgIGhhbmRsZURhdGVDaGFuZ2UoZGF0ZTogRCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZW1wRGF0ZSA9IGRhdGU7XG4gICAgICAgIGlmICghdGhpcy5zaG93Rm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHRyaWdnZXJlZCBieSBldmVudHMgZnJvbSB0aW1lIGNvbXBvbmVudCwgd2hlbiB0aGVyZSBpcyBzZWxlY3RlZCB0aW1lIGNoYW5nZWRcbiAgICAgKi9cbiAgICBoYW5kbGVUaW1lQ2hhbmdlKHRpbWU6IEQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcFRpbWUgPSB0aW1lO1xuICAgICAgICBpZiAoIXRoaXMuc2hvd0Zvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiAnT0snIGJ1dHRvbiBpcyBwcmVzc2VkLlxuICAgICAqL1xuICAgIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gbWFya2luZyBkYXRlICYgdGltZSBhcyBub3QgbnVsbCwgZXJyb3JzIHdpbGwgYmUgY2F1Z2h0IGJlbG93XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5fdGVtcERhdGUhO1xuICAgICAgICBsZXQgY3VycmVudFRpbWUgPSB0aGlzLl90ZW1wVGltZTtcblxuICAgICAgICBpZiAoIWN1cnJlbnRUaW1lKSB7XG4gICAgICAgICAgICBjdXJyZW50VGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci50b2RheSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5zZXRUaW1lKFxuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRIb3VycyhjdXJyZW50VGltZSksXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1pbnV0ZXMoY3VycmVudFRpbWUpLFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRTZWNvbmRzKGN1cnJlbnRUaW1lKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB0aGlzLmRhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZERhdGVJbnB1dCA9ICF0aGlzLmlzQ3VycmVudE1vZGVsVmFsaWQoKTtcblxuICAgICAgICB0aGlzLl9zZXRJbnB1dCh0aGlzLmRhdGUpO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93Rm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuICdDYW5jZWwnIGJ1dHRvbiBpcyBwcmVzc2VkLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcERhdGUgPSB0aGlzLmRhdGU7XG4gICAgICAgIHRoaXMuX3RlbXBUaW1lID0gdGhpcy5kYXRlO1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMb29rcyBsaWtlIG5vIG9uZSB1c2VzIGl0LiBTaG91bGQgYmUgcmVtb3ZlZD9cbiAgICAgKi9cbiAgICBmb2N1c0Fycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignIycgKyB0aGlzLl9jYWxlbmRhckNvbXBvbmVudC5pZCArICctbGVmdC1hcnJvdycpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5fY2FsZW5kYXJDb21wb25lbnQuaWQgKyAnLWxlZnQtYXJyb3cnKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRyYW5zZm9ybWluZyBzdHJpbmcgdG8gZGF0ZXRpbWUsIGRlcGVuZGluZyBvbiB0eXBlIG9yXG4gICAgICogdmFsaWRhdGlvbiB0aGUgcmVzdWx0cyBhcmUgZGlmZmVyZW50LiBJdCBhbHNvIGNoYW5nZXMgdG8gc3RhdGUgb2YgX2lzSW52YWxpZERhdGVJbnB1dC5cbiAgICAgKi9cbiAgICBoYW5kbGVJbnB1dENoYW5nZShpbnB1dFN0cjogc3RyaW5nLCBpc1R5cGVFdmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoKGlzVHlwZUV2ZW50ICYmIHRoaXMucHJvY2Vzc0lucHV0T25CbHVyKSB8fCAoIWlzVHlwZUV2ZW50ICYmICF0aGlzLnByb2Nlc3NJbnB1dE9uQmx1cikpIHtcbiAgICAgICAgICAgIC8vIGlmIHByb2Nlc3NJbnB1dE9uQmx1ciA9PT0gdHJ1ZSwgaWdub3JlIHR5cGUgZXZlbnRcbiAgICAgICAgICAgIC8vIGlmIHByb2Nlc3NJbnB1dE9uQmx1ciA9PT0gZmFsc2UsIGlnbm9yZSBibHVyL2VudGVyIGV2ZW50XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXRGaWVsZERhdGUgPSBpbnB1dFN0ciA/PyAnJztcbiAgICAgICAgaWYgKCFpbnB1dFN0cikge1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gIXRoaXMuYWxsb3dOdWxsO1xuICAgICAgICAgICAgdGhpcy5kYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5fcGFyc2VEYXRlKGlucHV0U3RyKTtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0ID0gIXRoaXMuX2lzTW9kZWxWYWxpZCh0aGlzLmRhdGUpO1xuXG4gICAgICAgIGlmICghdGhpcy5faXNJbnZhbGlkRGF0ZUlucHV0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUZW1wRGF0ZVRpbWUoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hDdXJyZW50bHlEaXNwbGF5ZWRDYWxlbmRhckRhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk9wZW5TdGF0ZUNoYW5nZWQoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTtcbiAgICAgICAgLy8gZm9jdXMgaW5wdXQgY29udHJvbCBldmVyeSB0aW1lIHBvcHVwIGlzIGNsb3NlZFxuICAgICAgICBpZiAoIWlzT3BlbiAmJiB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0aGlzLnByZXZlbnRTY3JvbGxPbkZvY3VzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyBjYWxlbmRhciBjZWxsIG9uIG9wZW5pbmdcbiAgICAgICAgaWYgKGlzT3BlbiAmJiB0aGlzLl9jYWxlbmRhckNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJDb21wb25lbnQuaW5pdGlhbEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gaWYgbW9kZWwgc2VsZWN0ZWQgZGF0ZS9kYXRlcyBoYXZlIHByb3Blcmx5IHR5cGVzIGFuZCBhcmUgdmFsaWQgKi9cbiAgICBpc0N1cnJlbnRNb2RlbFZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RlbFZhbGlkKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGlmIEZkRGF0ZVRpbWUgcGFzc2VkIGFzIGFyZyBoYXMgcHJvcGVybHkgdHlwZXMgYW5kIGlzIHZhbGlkICovXG4gICAgcHJpdmF0ZSBfaXNNb2RlbFZhbGlkKGRhdGU6IE51bGxhYmxlPEQ+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoZGF0ZSA9PT0gbnVsbCAmJiB0aGlzLmFsbG93TnVsbCkgfHwgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJbnB1dChkYXRlVGltZTogTnVsbGFibGU8RD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5wdXRGaWVsZERhdGUgPSBkYXRlVGltZSA/IHRoaXMuX2Zvcm1hdERhdGVUaW1lKGRhdGVUaW1lKSA6ICcnO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaEN1cnJlbnRseURpc3BsYXllZENhbGVuZGFyRGF0ZShkYXRlOiBOdWxsYWJsZTxEPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsZW5kYXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyQ29tcG9uZW50LnNldEN1cnJlbnRseURpc3BsYXllZChkYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGb3JtYXQgZGF0ZSB0aW1lIGVudGl0eS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9mb3JtYXREYXRlVGltZShkYXRlVGltZTogRCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGU6IHN0cmluZyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoXG4gICAgICAgICAgICBkYXRlVGltZSxcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LmRhdGVUaW1lSW5wdXRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGUgfHwgJyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9Jbml0aWFsaXNlVmFyaWFibGVzSW5NZXNzYWdlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmluaXQodGhpcy5faW5wdXRHcm91cEVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IHRoaXMuX21lc3NhZ2UgPz8gJyc7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRoaXMuX21lc3NhZ2VUcmlnZ2VycztcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2VUeXBlID0gdGhpcy5fc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJzZURhdGUoZGF0ZTogdW5rbm93bik6IEQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5wYXJzZShkYXRlLCB0aGlzLl9kYXRlVGltZUZvcm1hdHMucGFyc2UuZGF0ZUlucHV0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFRlbXBEYXRlVGltZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVtcERhdGUgPSB0aGlzLmRhdGU7XG4gICAgICAgIHRoaXMuX3RlbXBUaW1lID0gdGhpcy5kYXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVGltZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5LmRhdGVUaW1lSW5wdXQ7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtZXJpZGlhbiBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9tZXJpZGlhbiA9XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuICE9IG51bGwgPyB0aGlzLm1lcmlkaWFuIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzRGF5UGVyaW9kKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBzZWNvbmRzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlTZWNvbmRzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVNlY29uZHMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5kaXNwbGF5U2Vjb25kc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgbWludXRlcyBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9kaXNwbGF5TWludXRlcyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNaW51dGVzICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IHRoaXMuZGlzcGxheU1pbnV0ZXNcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc01pbnV0ZXMoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IGhvdXJzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlIb3VycyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlIb3VycyAhPSBudWxsID8gdGhpcy5kaXNwbGF5SG91cnMgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3Vycyhmb3JtYXQpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1kYXRldGltZVwiPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIFsoaXNPcGVuKV09XCJpc09wZW5cIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9vbk9wZW5TdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cImZhbHNlXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJwbGFjZW1lbnRcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICAgICAgICAgICNpbnB1dEdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJkYXRlLXRpbWVcIlxuICAgICAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RGF0ZXRpbWVUb2dnbGVMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kaXNwbGF5RGF0ZXRpbWVUb2dnbGVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlEYXRldGltZVRvZ2dsZUxhYmVsIHx8ICgnY29yZURhdGV0aW1lUGlja2VyLmRpc3BsYXlEYXRldGltZVRvZ2dsZUxhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJ0b2dnbGVQb3BvdmVyKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRhdGV0aW1lSW5wdXRMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZUlucHV0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfaW5wdXRGaWVsZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHlcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZkLWZvcm0tbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhaXNPcGVuXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIGlkPVwiZmQtZm9ybS1tZXNzYWdlXCIgW2VtYmVkZGVkXT1cInRydWVcIiAqbmdJZj1cIl9tZXNzYWdlXCIgW3R5cGVdPVwic3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgX21lc3NhZ2UgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX2Rpc3BsYXktdHlwZS1zd2l0Y2hlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtc2VnbWVudGVkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cIl9kaXNwbGF5VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJkaXNwbGF5VHlwZURhdGVMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kaXNwbGF5VHlwZURhdGVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImRpc3BsYXlUeXBlVGltZUxhYmVsIHx8ICgnY29yZURhdGV0aW1lUGlja2VyLmRpc3BsYXlUeXBlVGltZUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1zZWdtZW50ZWQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1kYXRldGltZV9fYWN0aXZlLWRpc3BsYXktdHlwZV09XCJfZGlzcGxheVR5cGUgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxUeXBlPVwic2luZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVWaWV3XT1cImFjdGl2ZVZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVGdW5jdGlvbl09XCJkaXNhYmxlRnVuY3Rpb24gfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWREYXRlXT1cIl90ZW1wRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXNjYXBlRm9jdXNGdW5jdGlvbl09XCJudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrV2Vla2VuZHNdPVwibWFya1dlZWtlbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcGVjaWFsRGF5c1J1bGVzXT1cInNwZWNpYWxEYXlzUnVsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJzaG93V2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FnZ3JlZ2F0ZWRZZWFyR3JpZF09XCJhZ2dyZWdhdGVkWWVhckdyaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3llYXJHcmlkXT1cInllYXJHcmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydGluZ0RheU9mV2Vla109XCJzdGFydGluZ0RheU9mV2Vla1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckFjdGl2ZVZpZXdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWREYXRlQ2hhbmdlKT1cImhhbmRsZURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNWYWxpZERhdGVDaGFuZ2UpPVwic2V0SW52YWxpZERhdGVJbnB1dEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtZGF0ZXRpbWVfX3NlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLWRhdGV0aW1lX19hY3RpdmUtZGlzcGxheS10eXBlXT1cIl9kaXNwbGF5VHlwZSA9PT0gJ3RpbWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2VlcFR3b0RpZ2l0c109XCJrZWVwVHdvRGlnaXRzVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfdGVtcFRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NwaW5uZXJCdXR0b25zXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttZXJpZGlhbl09XCJfbWVyaWRpYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlTZWNvbmRzXT1cIl9kaXNwbGF5U2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheU1pbnV0ZXNdPVwiX2Rpc3BsYXlNaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5SG91cnNdPVwiX2Rpc3BsYXlIb3Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC10aW1lPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3RlciAqbmdJZj1cInNob3dGb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV90ZW1wRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwib2tMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZU9rTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwib2tMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZU9rTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfHwgKCdjb3JlRGF0ZXRpbWVQaWNrZXIuZGF0ZXRpbWVDYW5jZWxMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxMYWJlbCB8fCAoJ2NvcmVEYXRldGltZVBpY2tlci5kYXRldGltZUNhbmNlbExhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvZGl2PlxuIl19
|