@fundamental-ngx/core 0.42.0-rc.8 → 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.component.d.ts +5 -4
- package/alert/alert.module.d.ts +2 -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.component.mjs +7 -19
- package/esm2020/alert/alert.module.mjs +5 -4
- 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 +48 -58
- 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 +48 -58
- 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 +7 -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.8.tgz +0 -0
- package/message-strip/public_api.d.ts +0 -2
package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs
CHANGED
|
@@ -8,9 +8,9 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "@fundamental-ngx/cdk/utils";
|
|
9
9
|
export class ResizableCardLayoutComponent {
|
|
10
10
|
/** @hidden */
|
|
11
|
-
constructor(_cd,
|
|
11
|
+
constructor(_cd, elementRef, _rtlService) {
|
|
12
12
|
this._cd = _cd;
|
|
13
|
-
this.
|
|
13
|
+
this.elementRef = elementRef;
|
|
14
14
|
this._rtlService = _rtlService;
|
|
15
15
|
/** Emits when card resize is reached to one new step in horizontal or vertical direction */
|
|
16
16
|
this.stepChange = new EventEmitter();
|
|
@@ -120,10 +120,6 @@ export class ResizableCardLayoutComponent {
|
|
|
120
120
|
this.resized.emit(event);
|
|
121
121
|
}
|
|
122
122
|
/** @hidden */
|
|
123
|
-
elementRef() {
|
|
124
|
-
return this._elementRef;
|
|
125
|
-
}
|
|
126
|
-
/** @hidden */
|
|
127
123
|
updateLayout() {
|
|
128
124
|
this.resizeCardItems?.forEach((card) => {
|
|
129
125
|
card?.verifyUpdateCardWidth(this.layoutSize);
|
|
@@ -530,4 +526,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
530
526
|
type: HostListener,
|
|
531
527
|
args: ['window:resize']
|
|
532
528
|
}] } });
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILG9CQUFvQixFQUNwQixHQUFHLEVBRUgsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDekIsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVl4RCxNQUFNLE9BQU8sNEJBQTRCO0lBa0VyQyxjQUFjO0lBQ2QsWUFDcUIsR0FBc0IsRUFDdEIsV0FBdUIsRUFDWCxXQUF1QjtRQUZuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtR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QyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUVGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7O3lIQTFsQlEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdWFBOEJwQiwwQkFBMEIsNkJDekUvQyxnUEFTQTsyRkRrQ2EsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNJLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBd0VoQyxRQUFROzRDQW5FYixZQUFZO3NCQURYLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxNQUFNO2dCQUtQLFFBQVE7c0JBRFAsTUFBTTtnQkFLUCxPQUFPO3NCQUROLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxlQUFlO3VCQUFDLDBCQUEwQjtnQkFvRjNDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY25DLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIGhvcml6b250YWxSZXNpemVTdGVwLFxuICAgIGdhcCxcbiAgICBSZXNpemVkRXZlbnQsXG4gICAgUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcsXG4gICAgdmVydGljYWxSZXNpemVTdGVwLFxuICAgIGhvcml6b250YWxSZXNpemVPZmZzZXRcbn0gZnJvbSAnLi9yZXNpemFibGUtY2FyZC1pdGVtL3Jlc2l6YWJsZS1jYXJkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCB0eXBlIExheW91dFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuZXhwb3J0IHR5cGUgUmVzaXphYmxlQ2FyZExheW91dENvbmZpZyA9IEFycmF5PFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnPjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yZXNpemFibGUtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAncmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIE9iamVjdCBmb3Igc2V0dGluZyBlYWNoIGNhcmQgcHJvcGVydHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGxheW91dENvbmZpZzogUmVzaXphYmxlQ2FyZExheW91dENvbmZpZztcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIHJlYWNoZWQgdG8gb25lIG5ldyBzdGVwIGluIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uICovXG4gICAgQE91dHB1dCgpXG4gICAgc3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemluZzogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIGNvbXBsZXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc2l6ZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGhlaWdodCBpcyByZWR1Y2VkIHRvIHNob3cgb25seSBoZWFkZXIgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pSGVhZGVyUmVhY2hlZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIG1pbmltdW0gaGVpZ2h0IG9mIGNhcmQgY29udGVudCBhcmVhIGlzIHJlYWNoZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pQ29udGVudFJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6YWJsZUNhcmRMYXlvdXRDb25maWc+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KVxuICAgIHJlc2l6ZUNhcmRJdGVtczogUXVlcnlMaXN0PFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiB3aWR0aCBmb3IgbGF5b3V0ICovXG4gICAgbGF5b3V0V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBoZWlnaHQgZm9yIGxheW91dCAqL1xuICAgIGxheW91dEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIGNvbHVtbnMgaW4gbGF5b3V0LiBjb25zaWRlcmluZyAxIGNvbHVtbiB3aWR0aCAyMHJlbSAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIExheW91dCBwYWRkaW5nLiB3aWxsIGJlIGFkZGVkIHRvIGZpcnN0IGNhcmQgcGFkZGluZyBpbiBldmVyeSByb3cgKi9cbiAgICBwcml2YXRlIF9wYWRkaW5nTGVmdDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIGhlaWdodCBvZiBlYWNoIGNvbHVtbiBvbiBjYXJkIGFycmFuZ2VtZW50ICovXG4gICAgcHJpdmF0ZSBfY29sdW1uc0hlaWdodDogQXJyYXk8bnVtYmVyPjtcblxuICAgIC8qKiBAaGlkZGVuIEF2YWlsYWJsZSBzY3JlZW4gbGF5b3V0ICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0OiBMYXlvdXRTaXplO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIHNvcnRlZCBjYXJkIGJlZm9yZSBwbGFjaW5nIGluIGxheW91dCAqL1xuICAgIHByaXZhdGUgX3NvcnRlZENhcmRzOiBBcnJheTxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0U2hpZnRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXJlY3Rpb25Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQgPSBuZXcgQXJyYXkodGhpcy5fY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQuZmlsbCgwKTtcbiAgICAgICAgLy8gaW5pdGlhbGlzZSB2YWx1ZSAwXG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9SdGwoKTtcblxuICAgICAgICAvLyBkZXRlY3QgaW5pdGlhbCB3aW5kb3cgc2l6ZSBhbmQgc2V0IGxheW91dFxuICAgICAgICB0aGlzLl9jcmVhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFNldHVwKCk7XG4gICAgICAgIC8vIGxpc3RlbiBmb3IgcXVlcnktbGlzdCBjaGFuZ2VcbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXM/LmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgIGNhcmQ/LnZlcmlmeVVwZGF0ZUNhcmRXaWR0aCh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLnJlc2l6ZUNhcmRJdGVtcz8udG9BcnJheSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMucmVzaXplQ2FyZEl0ZW1zPy50b0FycmF5KCkpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eVNldHVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIGtleWJvYXJkIGFjY2Vzc2liaWxpdHkgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIExheW91dCBzaXplLiBBdmFpbGFibGUgb3B0aW9ucyBhcmUgJ3NtJywgJ21kJywgJ2xnJyBhbmQgJ3hsJyAqL1xuICAgIHNldCBsYXlvdXRTaXplKGxheW91dFNpemU6IExheW91dFNpemUpIHtcbiAgICAgICAgdGhpcy5fbGF5b3V0ID0gbGF5b3V0U2l6ZTtcbiAgICB9XG4gICAgZ2V0IGxheW91dFNpemUoKTogTGF5b3V0U2l6ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXJyYW5nZXMgY2FyZHMgaW4gbGF5b3V0IGJhc2VkIG9uIHJhbmssIHdpZHRoIGFuZCBoZWlnaHQgb2YgY2FyZFxuICAgICAqIEBwYXJhbSBjYXJkczogQXJyYXkgb2YgUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKi9cbiAgICBhcnJhbmdlQ2FyZHMoY2FyZHM6IEFycmF5PFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0ID0gbmV3IEFycmF5KHRoaXMuX2NvbHVtbnMpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0LmZpbGwoMCk7XG4gICAgICAgIC8vIHNvcnQgYmFzZWQgb24gdGhlIGNhcmQgcmFua1xuICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcyA9IGNhcmRzPy5zb3J0KHRoaXMuX3NvcnRDYXJkcyk7XG5cbiAgICAgICAgdGhpcy5fc29ydGVkQ2FyZHM/LmZvckVhY2goKGNhcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkUG9zaXRpb25WYWx1ZXMoY2FyZCwgaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1uc0hlaWdodChjYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGF5b3V0SGVpZ2h0ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgdGhpcy5fY29sdW1uc0hlaWdodCkgKyB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG5cbiAgICAgICAgdGhpcy5fZW1pdExheW91dENoYW5nZSgpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHNoaWZ0aW5nIG9mIGNhcmRzIHdpdGggYW5pbWF0aW9uLCB3aGlsZSBjYXJkIGlzIHN0aWxsIHJlc2l6aW5nLlxuICAgICAqIEBwYXJhbSBldmVudDogUmVzaXplZEV2ZW50XG4gICAgICovXG4gICAgY2FyZFJlc2l6aW5nKGV2ZW50OiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemluZy5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5faGFuZGxlSG9yaXpvbnRhbFJlc2l6ZShldmVudCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZVZlcnRpY2FsUmVzaXplKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFycmFuZ2VtZW50IG9mIGNhcmRzIGluIGxheW91dFxuICAgICAqIEBwYXJhbSBldmVudDogUmVzaXplZEV2ZW50XG4gICAgICovXG4gICAgY2FyZFJlc2l6ZUNvbXBsZXRlKGV2ZW50OiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLnJlc2l6ZUNhcmRJdGVtcy50b0FycmF5KCkpO1xuICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8UmVzaXphYmxlQ2FyZExheW91dENvbXBvbmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXM/LmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgIGNhcmQ/LnZlcmlmeVVwZGF0ZUNhcmRXaWR0aCh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIHRvIGdldCBzY3JlZW4gd2lkdGhcbiAgICAgKiBAcmV0dXJucyBXaW5kb3cgd2lkdGggaW4gcHhcbiAgICAgKi9cbiAgICBnZXRXaWR0aEF2YWlsYWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU3Vic2NyaWJlIHRvIGV2ZW50cyBmcm9tIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHJlc2l6aW5nIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgocmVzaXplQ2FyZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRDb25maWcgJiYgdGhpcy5sYXlvdXRDb25maWcubGVuZ3RoID49IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLmNvbmZpZyA9IHRoaXMubGF5b3V0Q29uZmlnW2luZGV4XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXppbmdcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSZXNpemVkRXZlbnQpID0+IHRoaXMuY2FyZFJlc2l6aW5nKGV2ZW50KSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgcmVzaXplIGNvbXBsZXRlIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXplZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4gdGhpcy5jYXJkUmVzaXplQ29tcGxldGUoZXZlbnQpKTtcblxuICAgICAgICAgICAgLy8gbGlzdGVuIGZvciBtaW5pLWhlYWRlciBoZWlnaHQgZXZlbnQgb2YgY2FyZCBpdGVtXG4gICAgICAgICAgICByZXNpemVDYXJkSXRlbS5taW5pSGVhZGVyUmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUhlYWRlclJlYWNoZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgbWluaS1jb250ZW50IGhlaWdodCBldmVudCBvZiBjYXJkIGl0ZW1cbiAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLm1pbmlDb250ZW50UmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5yZXNpemVDYXJkSXRlbXMpLndpdGhXcmFwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gY3JlYXRlIGxheW91dCBiYXNlZCBvbiBsYXlvdXQgc2l6ZSAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2NyZWVuV2lkdGggPSB0aGlzLmdldFdpZHRoQXZhaWxhYmxlKCk7XG4gICAgICAgIGNvbnN0IHByZXZMYXlvdXRTaXplID0gdGhpcy5sYXlvdXRTaXplO1xuXG4gICAgICAgIGlmIChzY3JlZW5XaWR0aCA+IDAgJiYgc2NyZWVuV2lkdGggPD0gNjU2ICYmIHByZXZMYXlvdXRTaXplICE9PSAnc20nKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dFNpemUgPSAnc20nO1xuICAgICAgICAgICAgdGhpcy5fc2V0TGF5b3V0Q29sdW1ucyh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY3JlZW5XaWR0aCA+IDY1NiAmJiBzY3JlZW5XaWR0aCA8PSA5NzUgJiYgcHJldkxheW91dFNpemUgIT09ICdtZCcpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdtZCc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gOTc1ICYmIHNjcmVlbldpZHRoIDw9IDEzNTkgJiYgcHJldkxheW91dFNpemUgIT09ICdsZycpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdsZyc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gMTM1OSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ3hsJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ3hsJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0IGxheW91dENoYW5nZSBldmVudCB3aXRoIHVwZGF0ZWQgY2FyZCBkaW1lbnNpb25zICovXG4gICAgcHJpdmF0ZSBfZW1pdExheW91dENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGF0ZXN0Q2FyZENvbmZpZzogUmVzaXphYmxlQ2FyZExheW91dENvbmZpZyA9IFtdO1xuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgoY2FyZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FyZENvbmZpZzogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcgPSB7fTtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZFdpZHRoQ29sU3BhbiA9IGNhcmQuY2FyZFdpZHRoQ29sU3BhbjtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZEhlaWdodFJvd1NwYW4gPSBjYXJkLmNhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5yYW5rID0gY2FyZC5yYW5rO1xuICAgICAgICAgICAgY2FyZENvbmZpZy50aXRsZSA9IGNhcmQudGl0bGU7XG4gICAgICAgICAgICBjYXJkQ29uZmlnLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gPSBjYXJkLmNhcmRNaW5pQ29udGVudFJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLmNhcmRNaW5pSGVhZGVyUm93U3BhbiA9IGNhcmQuY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5yZXNpemFibGUgPSBjYXJkLnJlc2l6YWJsZTtcbiAgICAgICAgICAgIGxhdGVzdENhcmRDb25maWcucHVzaChjYXJkQ29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQobGF0ZXN0Q2FyZENvbmZpZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBTZXRzIG51bWJlciBvZiBjb2x1bW4gaW4gbGF5b3V0LCBiYXNlZCBvbiBMYXlvdXRTaXplIHBhc3NlZFxuICAgICAqIEBwYXJhbSBsYXlvdXRTaXplOiBBdmFpbGFibGUgb3B0aW9ucyBhcmUgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJ1xuICAgICAqL1xuICAgIHByaXZhdGUgX3NldExheW91dENvbHVtbnMobGF5b3V0U2l6ZTogTGF5b3V0U2l6ZSk6IHZvaWQge1xuICAgICAgICBsZXQgbGF5b3V0V2lkdGhEZWZhdWx0OiBudW1iZXI7XG5cbiAgICAgICAgc3dpdGNoIChsYXlvdXRTaXplKSB7XG4gICAgICAgICAgICBjYXNlICdzbSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDE7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA4O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSAyO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ID0gMTY7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQgKyBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDM7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSAxNjtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDIgKiBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd4bCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA0ODtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDMgKiBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSA0O1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ID0gNDg7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQgKyAzICogZ2FwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBNZXRob2QgdG8gaGFuZGxlIGNhcmQgdmVydGljYWwgcmVzaXplIGFuZCB0cmlnZ2VyIHRoZSBsYXlvdXQgY2hhbmdlXG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9oYW5kbGVWZXJ0aWNhbFJlc2l6ZShldmVudDogUmVzaXplZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRIZWlnaHRSb3dTcGFuICE9PSBldmVudC5jYXJkLnByZXZpb3VzQ2FyZEhlaWdodFJvd1NwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMuX3NvcnRlZENhcmRzKTtcbiAgICAgICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBoYW5kbGUgY2FyZCBob3Jpem9udGFsIHJlc2l6ZSBhbmQgdHJpZ2dlciB0aGUgbGF5b3V0IGNoYW5nZVxuICAgICAqIEBwYXJhbSBldmVudCA6IFJlc2l6ZWRFdmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUhvcml6b250YWxSZXNpemUoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyB3aGVuIGluY3JlYXNpbmcgd2lkdGggaGl0IHRoZSBvZmZzZXQsIHNob3cgZXh0ZW5kZWQgYm9yZGVyIGFuZCBzdGFydCBwdXNoaW5nIGRvd24gYm9yZGVyIGNhcmRzXG4gICAgICAgIC8vIHdoZW4gd2lkdGggaXMgZGVjcmVhc2luZyAsIHNob3cgZXh0ZW5kZWQgYm9yZGVyIHRpbGwgaXQgcmVhY2hlcyB0byBvZmZzZXQuXG4gICAgICAgIGNvbnN0IGNhcmRXaWR0aENoYW5nZSA9IGV2ZW50LmNhcmRXaWR0aCAtIGV2ZW50LnByZXZDYXJkV2lkdGg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZXNpemluZ0l0ZW1JbmRleCA9IHRoaXMuX3NvcnRlZENhcmRzPy5maW5kSW5kZXgoKHgpID0+IHgucmFuayA9PT0gZXZlbnQuY2FyZC5yYW5rKTtcblxuICAgICAgICBpZiAoZXZlbnQuY2FyZFdpZHRoID4gZXZlbnQucHJldkNhcmRXaWR0aCkge1xuICAgICAgICAgICAgLy8gd2hlbiBpbmNyZWFzaW5nIHNpemVcbiAgICAgICAgICAgIC8vIGNhcmQgd2lkdGggaW5jcmVhc2luZyBjdXJyZW50bHlcbiAgICAgICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gMSAmJiBjYXJkV2lkdGhDaGFuZ2UgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICsgZ2FwICYmICF0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gaW5kZXggb2YgdGhpcyBjYXJkLCB0aGVuIGdldCBuZXh0IGNhcmQuIGV4Y2hhbmdlIHJhbmtzXG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydGVkQ2FyZHMuZm9yRWFjaCgoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gY3VycmVudFJlc2l6aW5nSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgc29tZSBjYXJkcyBvbiBzYW1lIGhlaWdodC4gbWFrZSB0aGUgY3VycmVudCBjYXJkIHJhbmsgaGlnaGVyIHRoYW4gdGhlc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbmV4dCBpbmRleCB3aGVyZSBpdCB3aWxsIGZpdC4gdW50aWwgYW55IGNhcmQgaGFzIGxlc3MgY29sdW1uIHNwYW4gdGhhbiB0b3RhbCBjb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBvbmx5IGluIG5leHQgdG9wLCBvbmUgY2FyZCBpcyB0YWtpbmcgZnVsbCBjb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC5zdGFydGluZ0NvbHVtblBvc2l0aW9uICsgY2FyZC5jYXJkV2lkdGhDb2xTcGFuID09PSB0aGlzLl9jb2x1bW5zICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC5jYXJkV2lkdGhDb2xTcGFuICE9PSB0aGlzLl9jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgY2FyZHMgd2l0aCB0b3AgPiBjdXJyZW50IHRvcCAsIGJ1dCBtaW5pbXVtIG9mIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjaGFuZ2UgcmFuayB3aXRoIHRoZXNlIGNhcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlQ2FyZERvd24oaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICBjYXJkV2lkdGhDaGFuZ2UgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICsgZ2FwICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBkZWNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIC8vIG1vdmUgdXAgdGhlIGNhcmRzLCBpZiBpdCB3YXMgc2hpZnRlZCB3aGlsZSBpbmNyZWFzaW5nIHRoZSB3aWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuX3NvcnRlZENhcmRzLmZvckVhY2goKGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhcmQucmFuayA9IGNhcmQucHJldlJhbmsgPyBjYXJkLnByZXZSYW5rIDogY2FyZC5yYW5rO1xuICAgICAgICAgICAgICAgICAgICBjYXJkLnByZXZSYW5rID0gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNhcmRXaWR0aCA8IGV2ZW50LnByZXZDYXJkV2lkdGgpIHtcbiAgICAgICAgICAgIC8vIHdoZW4gZGVjcmVhc2luZyBzaXplXG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FyZC5jYXJkU3RhdGUgPT09IC0xICYmIC1jYXJkV2lkdGhDaGFuZ2UgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICYmICF0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBkZWNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMuX3NvcnRlZENhcmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChldmVudC5jYXJkLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2FyZC5jYXJkU3RhdGUgPT09IDEgJiYgLWNhcmRXaWR0aENoYW5nZSA8IGhvcml6b250YWxSZXNpemVPZmZzZXQgJiYgdGhpcy5fbGF5b3V0U2hpZnRlZCkge1xuICAgICAgICAgICAgICAgIC8vIGNhcmQgd2lkdGggaW5jcmVhc2luZyBjdXJyZW50bHlcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBNZXRob2QgdG8gbW92ZSBjYXJkIGRvd24sIHdoZW4gYW5vdGhlciBjYXJkIHdpZHRoIGlzIGluY3JlYXNpbmdcbiAgICAgKiBNZXRob2QgdG8gbG9vcCB0aWxsIHRoaXMuX2NvbHVtbnMgLTEgcG9zaXRpb25zIGFuZCBleGNoYW5nZSB0aGUgcmFua1xuICAgICAqIEBwYXJhbSBjdXJyZW50Q2FyZEluZGV4OiBJbmRleCBvZiBjdXJyZW50IGNhcmRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlQ2FyZERvd24oY3VycmVudENhcmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIHRha2luZyB3aWR0aCBvZiBhZGphY2VudCBjYXJkIGNvbC1zcGFuIGludG8gYWNjb3VudFxuXG4gICAgICAgIC8vIGVnOiA0IGNvbHVtbnMgLSAyIGNvbChhZGphY2VudCBjYXJkKSA9IDIgcG9zaXRpb25zIGNhbiBleGNoYW5nZSByYW5rc1xuICAgICAgICBjb25zdCBjdXJyZW50Q2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQgPSB0aGlzLl9zb3J0ZWRDYXJkc1tjdXJyZW50Q2FyZEluZGV4XTtcbiAgICAgICAgbGV0IGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50O1xuXG4gICAgICAgIC8vIHVub2NjdXBpZWRQb3NpdGlvbnMgcG9zaXRpb25zIGxlZnQgYWZ0ZXIgY3VycmVudENhcmQgb2NjdXBpZXMgaW4gbmV4dCByb3cuXG4gICAgICAgIGxldCB1bm9jY3VwaWVkUG9zaXRpb25zID0gdGhpcy5fY29sdW1ucyAtIGN1cnJlbnRDYXJkLmNhcmRXaWR0aENvbFNwYW47XG5cbiAgICAgICAgY3VycmVudENhcmQucHJldlJhbmsgPSBjdXJyZW50Q2FyZC5yYW5rO1xuXG4gICAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICAgIHdoaWxlICh1bm9jY3VwaWVkUG9zaXRpb25zID4gMCkge1xuICAgICAgICAgICAgLy8gY29tcGFyZSBmcm9tIG5leHQgY2FyZFxuICAgICAgICAgICAgY2FyZCA9IHRoaXMuX3NvcnRlZENhcmRzW2luZGV4ICsgY3VycmVudENhcmRJbmRleF07XG4gICAgICAgICAgICBpZiAoY2FyZCAmJiB1bm9jY3VwaWVkUG9zaXRpb25zID49IGNhcmQuY2FyZFdpZHRoQ29sU3Bhbikge1xuICAgICAgICAgICAgICAgIGNhcmQucHJldlJhbmsgPSBjYXJkLnJhbms7XG4gICAgICAgICAgICAgICAgY2FyZC5yYW5rIC09IDE7XG4gICAgICAgICAgICAgICAgY3VycmVudENhcmQucmFuayA9IGNhcmQucHJldlJhbms7XG4gICAgICAgICAgICAgICAgdW5vY2N1cGllZFBvc2l0aW9ucyAtPSBjYXJkLmNhcmRXaWR0aENvbFNwYW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVub2NjdXBpZWRQb3NpdGlvbnMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gdXBkYXRlcyBhcnJheSB3aXRoIG5ldyBjb2x1bW4gaGVpZ2h0c1xuICAgICAqIEBwYXJhbSBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbnNIZWlnaHQoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uc1N0YXJ0ID1cbiAgICAgICAgICAgIGNhcmRbdGhpcy5fZGlyZWN0aW9uUG9zaXRpb25dICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IE1hdGguZmxvb3IoY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0hIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApXG4gICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgIC8vIEdldCB3aWR0aCBvZiBjdXJyZW50IGNhcmQgcmVzaXppbmcgYW5kIGFzc2lnbiB3aWR0aCBoZXJlIGZvciB0aGF0IGNhcmRcbiAgICAgICAgY29uc3QgY2FyZEJhc2VDb2xTcGFuID0gTWF0aC5mbG9vcihjYXJkLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcblxuICAgICAgICAvLyB0aWxsIHdoaWNoIGNvbHVtbnMgY2FyZCBzcGFuc1xuICAgICAgICBjb25zdCBjb2x1bW5zU3BhbiA9XG4gICAgICAgICAgICBjYXJkLmNhcmRXaWR0aCAtIGNhcmRCYXNlQ29sU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwIC0gY2FyZEJhc2VDb2xTcGFuICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldFxuICAgICAgICAgICAgICAgID8gY2FyZEJhc2VDb2xTcGFuICsgMVxuICAgICAgICAgICAgICAgIDogY2FyZEJhc2VDb2xTcGFuO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkhlaWdodCA9IGNhcmQuY2FyZEhlaWdodCArIGNhcmQudG9wO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc1NwYW47IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fY29sdW1uc0hlaWdodFtpICsgY29sdW1uc1N0YXJ0XSA9IGNvbHVtbkhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW5zU3RhcnQgPT09IGNvbHVtbnNTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0W2NvbHVtbnNTdGFydF0gPSBjb2x1bW5IZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFRyeSB0byBzZXQgY2FyZCBhdCBhdmFpbGFibGUgaGVpZ2h0c1xuICAgICAqIEBwYXJhbSBjYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gaW5kZXggOiBpbmRleCB2YWx1ZSBvZiBjYXJkIGluIGFycmF5IG9mIFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZFBvc2l0aW9uVmFsdWVzKGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gPSAwICsgdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICBjYXJkLnRvcCA9IDA7XG4gICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5pcXVlSGVpZ2h0cyA9IHRoaXMuX2dldFNvcnRlZFVuaXF1ZUhlaWdodHMoKTtcbiAgICAgICAgbGV0IGNhcmRQb3NpdGlvbmVkID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bmlxdWVIZWlnaHRzLmxlbmd0aCAmJiAhY2FyZFBvc2l0aW9uZWQ7IGkrKykge1xuICAgICAgICAgICAgY2FyZFBvc2l0aW9uZWQgPSB0aGlzLl9pc1Bvc2l0aW9uU2V0U3VjY2Vzcyh1bmlxdWVIZWlnaHRzW2ldLCBjYXJkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gdHJ5IHRvIHNldCBjYXJkIGF0IGdpdmVuIGhlaWdodC5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IDogaGVpZ2h0IGF0IHdoaWNoIGNhcmQgaXMgZ2V0dGluZyBwb3NpdGlvbmVkLlxuICAgICAqIEBwYXJhbSBjYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcmV0dXJucyBJdCByZXR1cm5zIHRydWUgd2hlbiBjYXJkIHBvc2l0aW9uIGlkIGZvdW5kIG90aGVyd2lzZSBpdCByZXR1cm5zIGZhbHNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzUG9zaXRpb25TZXRTdWNjZXNzKGhlaWdodDogbnVtYmVyLCBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb2x1bW5Qb3NpdGlvbnM6IG51bWJlcltdID0gW107XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uSGVpZ2h0IG9mIHRoaXMuX2NvbHVtbnNIZWlnaHQpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICBpZiAoY29sdW1uSGVpZ2h0ID09PSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5Qb3NpdGlvbnMucHVzaChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgZm9yIGVhY2ggY2FyZCBwb3NpdGlvbiwgc3RhcnRpbmcgZnJvbSBsZWZ0bW9zdFxuICAgICAgICBsZXQgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIGxldCBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgLy8gdHJ5IHRvIGZpdCBhcyBsZWZ0IChvciByaWdodCBpZiBSdGwpIGFzIHBvc3NpYmxlIGZyb20gdGhlIGNvbHVtbiBwb3NpdGlvblxuICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gdGhpcy5fZml0Q2FyZENvbHVtblBvc2l0aW9uKGNhcmQsIGNvbHVtblBvc2l0aW9ucywgaGVpZ2h0KTtcbiAgICAgICAgaWYgKHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gIT09IC0xKSB7XG4gICAgICAgICAgICBpc0ZpdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gPVxuICAgICAgICAgICAgICAgIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gKiBob3Jpem9udGFsUmVzaXplU3RlcCArXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgK1xuICAgICAgICAgICAgICAgIChzdGFydGluZ0NvbHVtblBvc2l0aW9uID4gMCA/IGdhcCAqIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gOiAwKTtcbiAgICAgICAgICAgIGNhcmQudG9wID0gaGVpZ2h0ICsgKGhlaWdodCA+IDAgPyB2ZXJ0aWNhbFJlc2l6ZVN0ZXAgOiAwKTtcbiAgICAgICAgICAgIGNhcmQuc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IHN0YXJ0aW5nQ29sdW1uUG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRml0dGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFRyeSB0byBzdGFydCBjYXJkIHBvc2l0aW9uIGZyb20gbGVmdCBtb3N0IGZpdCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gY2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHBhcmFtIGNvbHVtblBvc2l0aW9ucyA6IEFycmF5IG9mIGF2YWlsYWJsZSBwb3NpdGlvbnMgZm9yIGNhcmRzLlxuICAgICAqIEBwYXJhbSBoZWlnaHQgOiBoZWlnaHQgYXQgd2hpY2ggZml4aW5nIHRoZSBjYXJkXG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIHN0YXJ0aW5nIGNvbHVtbiBwb3NpdGlvbiB3aGVyZSBjYXJkIHdpbGwgZml0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpdENhcmRDb2x1bW5Qb3NpdGlvbihcbiAgICAgICAgY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIGNvbHVtblBvc2l0aW9uczogQXJyYXk8bnVtYmVyPixcbiAgICAgICAgaGVpZ2h0OiBudW1iZXJcbiAgICApOiBudW1iZXIge1xuICAgICAgICAvLyBjaGVjayBmb3IgZWFjaCBjYXJkIHBvc2l0aW9uLCBzdGFydGluZyBmcm9tIGxlZnRtb3N0XG4gICAgICAgIGxldCBpc0ZpdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSAtMTtcblxuICAgICAgICAvLyBzdGFydCBmcm9tIHByZXZpb3VzIGluZGV4ZXNcbiAgICAgICAgY29uc3QgY2FyZEJhc2VDb2xTcGFuID0gTWF0aC5mbG9vcihjYXJkLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZENvbFNwYW4gPVxuICAgICAgICAgICAgY2FyZC5jYXJkV2lkdGggLSBjYXJkQmFzZUNvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCAtIGNhcmRCYXNlQ29sU3BhbiAqIGdhcCA+IGhvcml6b250YWxSZXNpemVPZmZzZXRcbiAgICAgICAgICAgICAgICA/IGNhcmRCYXNlQ29sU3BhbiArIDFcbiAgICAgICAgICAgICAgICA6IGNhcmRCYXNlQ29sU3BhbjtcbiAgICAgICAgLy8gdHJ5IHRvIHNldCB0b3dhcmRzIGxlZnQgZnJvbSBhdmFpbGFibGUgY2FyZCBwb3NpdGlvblxuICAgICAgICAvLyBlZy4gWzEsIDIsIDMsIDRdIGNvbHVtbnNQb3NpdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW5Qb3NpdGlvbiBvZiBjb2x1bW5Qb3NpdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChpc0ZpdHRpbmcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3RhcnRpbmdQb3NpdGlvbiB2YWx1ZXMgd2lsbCBiZSAxLCAyLCAzLCA0XG4gICAgICAgICAgICAvLyB0cnkgdG8gZml0IGFzIGxlZnQgYXMgcG9zc2libGVcbiAgICAgICAgICAgIGxldCBzdGFydGluZ1Bvc2l0aW9uID0gY29sdW1uUG9zaXRpb24gLSAoY2FyZENvbFNwYW4gLSAxKTtcbiAgICAgICAgICAgIHN0YXJ0aW5nUG9zaXRpb24gPSBzdGFydGluZ1Bvc2l0aW9uID4gMCA/IHN0YXJ0aW5nUG9zaXRpb24gOiAxO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0aW5nUG9zaXRpb247IGluZGV4IDw9IGNvbHVtblBvc2l0aW9uICYmICFpc0ZpdHRpbmc7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzcGFuID0gMDsgc3BhbiA8IGNhcmRDb2xTcGFuOyBzcGFuKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnNIZWlnaHRbaW5kZXggKyBzcGFuIC0gMV0gPD0gaGVpZ2h0ICYmIGNhcmRDb2xTcGFuICsgaW5kZXggLSAxIDw9IHRoaXMuX2NvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRml0dGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gaW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiByZXR1cm5zIHNvcnRlZCB1bmlxdWUgaGVpZ2h0IG9mIGNvbHVtbnMgKi9cbiAgICBwcml2YXRlIF9nZXRTb3J0ZWRVbmlxdWVIZWlnaHRzKCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgdGVtcEFycmF5ID0gdGhpcy5fY29sdW1uc0hlaWdodC5zbGljZSgpO1xuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zSGVpZ2h0QXJyYXkgPSB0ZW1wQXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUhlaWdodHM6IG51bWJlcltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzb3J0ZWRIZWlnaHQgb2Ygc29ydGVkQ29sdW1uc0hlaWdodEFycmF5KSB7XG4gICAgICAgICAgICBpZiAodW5pcXVlSGVpZ2h0cy5pbmRleE9mKHNvcnRlZEhlaWdodCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdW5pcXVlSGVpZ2h0cy5wdXNoKHNvcnRlZEhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZXIoZmlyc3Q6IG51bWJlciwgc2Vjb25kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmlxdWVIZWlnaHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQ29tcGFyYXRvciB0byBzb3J0IGNhcmQgYmFzZWQgb24gcmFuay5cbiAgICAgKiBAcGFyYW0gZmlyc3RDYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gc2Vjb25kQ2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIGRpZmZlcmVuY2UgYmV0d2VlbiBmaXJzdCBjYXJkIHJhbmsgYW5kIG90aGVyIGNhcmQgcmFuay5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0Q2FyZHMoZmlyc3RDYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgc2Vjb25kQ2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmlyc3RDYXJkLnJhbmsgLSBzZWNvbmRDYXJkLnJhbms7XG4gICAgfVxuXG4gICAgLyoqIGdldCB2YWx1ZSBmb3IgcnRsICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaERpcmVjdGlvbiA9IChpc1J0bCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyZWN0aW9uUG9zaXRpb24gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVmcmVzaERpcmVjdGlvbih0aGlzLl9pc1J0bCk7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZShyZWZyZXNoRGlyZWN0aW9uKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2xheW91dFxuICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0XCJcbiAgICBbY2xhc3NdPVwiJ2ZkLXJlc2l6YWJsZS1jYXJkLWxheW91dC0tJyArIGxheW91dFNpemVcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJsYXlvdXRXaWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJsYXlvdXRIZWlnaHRcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILG9CQUFvQixFQUNwQixHQUFHLEVBRUgsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDekIsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVl4RCxNQUFNLE9BQU8sNEJBQTRCO0lBa0VyQyxjQUFjO0lBQ2QsWUFDcUIsR0FBc0IsRUFDdkIsVUFBc0IsRUFDVCxXQUF1QjtRQUZuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FB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LEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RixDQUFDOzt5SEFybEJRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHVhQThCcEIsMEJBQTBCLDZCQ3pFL0MsZ1BBU0E7MkZEa0NhLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQXdFaEMsUUFBUTs0Q0FuRWIsWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxRQUFRO3NCQURQLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtQLGVBQWU7c0JBRGQsZUFBZTt1QkFBQywwQkFBMEI7Z0JBb0YzQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWNuQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBob3Jpem9udGFsUmVzaXplU3RlcCxcbiAgICBnYXAsXG4gICAgUmVzaXplZEV2ZW50LFxuICAgIFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50LFxuICAgIFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnLFxuICAgIHZlcnRpY2FsUmVzaXplU3RlcCxcbiAgICBob3Jpem9udGFsUmVzaXplT2Zmc2V0XG59IGZyb20gJy4vcmVzaXphYmxlLWNhcmQtaXRlbS9yZXNpemFibGUtY2FyZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBMYXlvdXRTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcbmV4cG9ydCB0eXBlIFJlc2l6YWJsZUNhcmRMYXlvdXRDb25maWcgPSBBcnJheTxSZXNpemFibGVDYXJkSXRlbUNvbmZpZz47XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Jlc2l6YWJsZS1jYXJkLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVDYXJkTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBPYmplY3QgZm9yIHNldHRpbmcgZWFjaCBjYXJkIHByb3BlcnR5ICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXRDb25maWc6IFJlc2l6YWJsZUNhcmRMYXlvdXRDb25maWc7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIHJlc2l6ZSBpcyByZWFjaGVkIHRvIG9uZSBuZXcgc3RlcCBpbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN0ZXBDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGlzIHN0aWxsIHJlc2l6aW5nICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVzaXppbmc6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIHJlc2l6ZSBpcyBjb21wbGV0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2FyZCBoZWlnaHQgaXMgcmVkdWNlZCB0byBzaG93IG9ubHkgaGVhZGVyICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUhlYWRlclJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBtaW5pbXVtIGhlaWdodCBvZiBjYXJkIGNvbnRlbnQgYXJlYSBpcyByZWFjaGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUNvbnRlbnRSZWFjaGVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gbGF5b3V0IGNoYW5nZXMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsYXlvdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXphYmxlQ2FyZExheW91dENvbmZpZz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudClcbiAgICByZXNpemVDYXJkSXRlbXM6IFF1ZXJ5TGlzdDxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogd2lkdGggZm9yIGxheW91dCAqL1xuICAgIGxheW91dFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogaGVpZ2h0IGZvciBsYXlvdXQgKi9cbiAgICBsYXlvdXRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIE51bWJlciBvZiBjb2x1bW5zIGluIGxheW91dC4gY29uc2lkZXJpbmcgMSBjb2x1bW4gd2lkdGggMjByZW0gKi9cbiAgICBwcml2YXRlIF9jb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBMYXlvdXQgcGFkZGluZy4gd2lsbCBiZSBhZGRlZCB0byBmaXJzdCBjYXJkIHBhZGRpbmcgaW4gZXZlcnkgcm93ICovXG4gICAgcHJpdmF0ZSBfcGFkZGluZ0xlZnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIFN0b3JlcyBoZWlnaHQgb2YgZWFjaCBjb2x1bW4gb24gY2FyZCBhcnJhbmdlbWVudCAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnNIZWlnaHQ6IEFycmF5PG51bWJlcj47XG5cbiAgICAvKiogQGhpZGRlbiBBdmFpbGFibGUgc2NyZWVuIGxheW91dCAqL1xuICAgIHByaXZhdGUgX2xheW91dDogTGF5b3V0U2l6ZTtcblxuICAgIC8qKiBAaGlkZGVuIFN0b3JlcyBzb3J0ZWQgY2FyZCBiZWZvcmUgcGxhY2luZyBpbiBsYXlvdXQgKi9cbiAgICBwcml2YXRlIF9zb3J0ZWRDYXJkczogQXJyYXk8UmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8UmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xheW91dFNoaWZ0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGlyZWN0aW9uUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc0hlaWdodCA9IG5ldyBBcnJheSh0aGlzLl9jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5fY29sdW1uc0hlaWdodC5maWxsKDApO1xuICAgICAgICAvLyBpbml0aWFsaXNlIHZhbHVlIDBcblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuXG4gICAgICAgIC8vIGRldGVjdCBpbml0aWFsIHdpbmRvdyBzaXplIGFuZCBzZXQgbGF5b3V0XG4gICAgICAgIHRoaXMuX2NyZWF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWFsU2V0dXAoKTtcbiAgICAgICAgLy8gbGlzdGVuIGZvciBxdWVyeS1saXN0IGNoYW5nZVxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgoY2FyZCkgPT4ge1xuICAgICAgICAgICAgY2FyZD8udmVyaWZ5VXBkYXRlQ2FyZFdpZHRoKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVzaXplQ2FyZEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMucmVzaXplQ2FyZEl0ZW1zPy50b0FycmF5KCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5U2V0dXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcj8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMga2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICghdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jcmVhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogTGF5b3V0IHNpemUuIEF2YWlsYWJsZSBvcHRpb25zIGFyZSAnc20nLCAnbWQnLCAnbGcnIGFuZCAneGwnICovXG4gICAgc2V0IGxheW91dFNpemUobGF5b3V0U2l6ZTogTGF5b3V0U2l6ZSkge1xuICAgICAgICB0aGlzLl9sYXlvdXQgPSBsYXlvdXRTaXplO1xuICAgIH1cbiAgICBnZXQgbGF5b3V0U2l6ZSgpOiBMYXlvdXRTaXplIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcnJhbmdlcyBjYXJkcyBpbiBsYXlvdXQgYmFzZWQgb24gcmFuaywgd2lkdGggYW5kIGhlaWdodCBvZiBjYXJkXG4gICAgICogQHBhcmFtIGNhcmRzOiBBcnJheSBvZiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqL1xuICAgIGFycmFuZ2VDYXJkcyhjYXJkczogQXJyYXk8UmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQgPSBuZXcgQXJyYXkodGhpcy5fY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQuZmlsbCgwKTtcbiAgICAgICAgLy8gc29ydCBiYXNlZCBvbiB0aGUgY2FyZCByYW5rXG4gICAgICAgIHRoaXMuX3NvcnRlZENhcmRzID0gY2FyZHM/LnNvcnQodGhpcy5fc29ydENhcmRzKTtcblxuICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcz8uZm9yRWFjaCgoY2FyZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRQb3NpdGlvblZhbHVlcyhjYXJkLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zSGVpZ2h0KGNhcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRIZWlnaHQgPSBNYXRoLm1heC5hcHBseShudWxsLCB0aGlzLl9jb2x1bW5zSGVpZ2h0KSArIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLl9lbWl0TGF5b3V0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgc2hpZnRpbmcgb2YgY2FyZHMgd2l0aCBhbmltYXRpb24sIHdoaWxlIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcuXG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXppbmcoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLl9oYW5kbGVIb3Jpem9udGFsUmVzaXplKGV2ZW50KTtcbiAgICAgICAgdGhpcy5faGFuZGxlVmVydGljYWxSZXNpemUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYXJyYW5nZW1lbnQgb2YgY2FyZHMgaW4gbGF5b3V0XG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXplQ29tcGxldGUoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMucmVzaXplQ2FyZEl0ZW1zLnRvQXJyYXkoKSk7XG4gICAgICAgIHRoaXMucmVzaXplZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXM/LmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgIGNhcmQ/LnZlcmlmeVVwZGF0ZUNhcmRXaWR0aCh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIHRvIGdldCBzY3JlZW4gd2lkdGhcbiAgICAgKiBAcmV0dXJucyBXaW5kb3cgd2lkdGggaW4gcHhcbiAgICAgKi9cbiAgICBnZXRXaWR0aEF2YWlsYWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU3Vic2NyaWJlIHRvIGV2ZW50cyBmcm9tIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHJlc2l6aW5nIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgocmVzaXplQ2FyZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRDb25maWcgJiYgdGhpcy5sYXlvdXRDb25maWcubGVuZ3RoID49IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLmNvbmZpZyA9IHRoaXMubGF5b3V0Q29uZmlnW2luZGV4XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXppbmdcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSZXNpemVkRXZlbnQpID0+IHRoaXMuY2FyZFJlc2l6aW5nKGV2ZW50KSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgcmVzaXplIGNvbXBsZXRlIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXplZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4gdGhpcy5jYXJkUmVzaXplQ29tcGxldGUoZXZlbnQpKTtcblxuICAgICAgICAgICAgLy8gbGlzdGVuIGZvciBtaW5pLWhlYWRlciBoZWlnaHQgZXZlbnQgb2YgY2FyZCBpdGVtXG4gICAgICAgICAgICByZXNpemVDYXJkSXRlbS5taW5pSGVhZGVyUmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUhlYWRlclJlYWNoZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgbWluaS1jb250ZW50IGhlaWdodCBldmVudCBvZiBjYXJkIGl0ZW1cbiAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLm1pbmlDb250ZW50UmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5yZXNpemVDYXJkSXRlbXMpLndpdGhXcmFwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gY3JlYXRlIGxheW91dCBiYXNlZCBvbiBsYXlvdXQgc2l6ZSAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2NyZWVuV2lkdGggPSB0aGlzLmdldFdpZHRoQXZhaWxhYmxlKCk7XG4gICAgICAgIGNvbnN0IHByZXZMYXlvdXRTaXplID0gdGhpcy5sYXlvdXRTaXplO1xuXG4gICAgICAgIGlmIChzY3JlZW5XaWR0aCA+IDAgJiYgc2NyZWVuV2lkdGggPD0gNjU2ICYmIHByZXZMYXlvdXRTaXplICE9PSAnc20nKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dFNpemUgPSAnc20nO1xuICAgICAgICAgICAgdGhpcy5fc2V0TGF5b3V0Q29sdW1ucyh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY3JlZW5XaWR0aCA+IDY1NiAmJiBzY3JlZW5XaWR0aCA8PSA5NzUgJiYgcHJldkxheW91dFNpemUgIT09ICdtZCcpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdtZCc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gOTc1ICYmIHNjcmVlbldpZHRoIDw9IDEzNTkgJiYgcHJldkxheW91dFNpemUgIT09ICdsZycpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdsZyc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gMTM1OSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ3hsJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ3hsJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0IGxheW91dENoYW5nZSBldmVudCB3aXRoIHVwZGF0ZWQgY2FyZCBkaW1lbnNpb25zICovXG4gICAgcHJpdmF0ZSBfZW1pdExheW91dENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGF0ZXN0Q2FyZENvbmZpZzogUmVzaXphYmxlQ2FyZExheW91dENvbmZpZyA9IFtdO1xuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgoY2FyZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FyZENvbmZpZzogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcgPSB7fTtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZFdpZHRoQ29sU3BhbiA9IGNhcmQuY2FyZFdpZHRoQ29sU3BhbjtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZEhlaWdodFJvd1NwYW4gPSBjYXJkLmNhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5yYW5rID0gY2FyZC5yYW5rO1xuICAgICAgICAgICAgY2FyZENvbmZpZy50aXRsZSA9IGNhcmQudGl0bGU7XG4gICAgICAgICAgICBjYXJkQ29uZmlnLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gPSBjYXJkLmNhcmRNaW5pQ29udGVudFJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLmNhcmRNaW5pSGVhZGVyUm93U3BhbiA9IGNhcmQuY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5yZXNpemFibGUgPSBjYXJkLnJlc2l6YWJsZTtcbiAgICAgICAgICAgIGxhdGVzdENhcmRDb25maWcucHVzaChjYXJkQ29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQobGF0ZXN0Q2FyZENvbmZpZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBTZXRzIG51bWJlciBvZiBjb2x1bW4gaW4gbGF5b3V0LCBiYXNlZCBvbiBMYXlvdXRTaXplIHBhc3NlZFxuICAgICAqIEBwYXJhbSBsYXlvdXRTaXplOiBBdmFpbGFibGUgb3B0aW9ucyBhcmUgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJ1xuICAgICAqL1xuICAgIHByaXZhdGUgX3NldExheW91dENvbHVtbnMobGF5b3V0U2l6ZTogTGF5b3V0U2l6ZSk6IHZvaWQge1xuICAgICAgICBsZXQgbGF5b3V0V2lkdGhEZWZhdWx0OiBudW1iZXI7XG5cbiAgICAgICAgc3dpdGNoIChsYXlvdXRTaXplKSB7XG4gICAgICAgICAgICBjYXNlICdzbSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDE7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA4O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSAyO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ID0gMTY7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQgKyBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDM7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSAxNjtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDIgKiBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd4bCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA0ODtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDMgKiBnYXA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSA0O1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ID0gNDg7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQgKyAzICogZ2FwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBNZXRob2QgdG8gaGFuZGxlIGNhcmQgdmVydGljYWwgcmVzaXplIGFuZCB0cmlnZ2VyIHRoZSBsYXlvdXQgY2hhbmdlXG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9oYW5kbGVWZXJ0aWNhbFJlc2l6ZShldmVudDogUmVzaXplZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRIZWlnaHRSb3dTcGFuICE9PSBldmVudC5jYXJkLnByZXZpb3VzQ2FyZEhlaWdodFJvd1NwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMuX3NvcnRlZENhcmRzKTtcbiAgICAgICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBoYW5kbGUgY2FyZCBob3Jpem9udGFsIHJlc2l6ZSBhbmQgdHJpZ2dlciB0aGUgbGF5b3V0IGNoYW5nZVxuICAgICAqIEBwYXJhbSBldmVudCA6IFJlc2l6ZWRFdmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUhvcml6b250YWxSZXNpemUoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyB3aGVuIGluY3JlYXNpbmcgd2lkdGggaGl0IHRoZSBvZmZzZXQsIHNob3cgZXh0ZW5kZWQgYm9yZGVyIGFuZCBzdGFydCBwdXNoaW5nIGRvd24gYm9yZGVyIGNhcmRzXG4gICAgICAgIC8vIHdoZW4gd2lkdGggaXMgZGVjcmVhc2luZyAsIHNob3cgZXh0ZW5kZWQgYm9yZGVyIHRpbGwgaXQgcmVhY2hlcyB0byBvZmZzZXQuXG4gICAgICAgIGNvbnN0IGNhcmRXaWR0aENoYW5nZSA9IGV2ZW50LmNhcmRXaWR0aCAtIGV2ZW50LnByZXZDYXJkV2lkdGg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZXNpemluZ0l0ZW1JbmRleCA9IHRoaXMuX3NvcnRlZENhcmRzPy5maW5kSW5kZXgoKHgpID0+IHgucmFuayA9PT0gZXZlbnQuY2FyZC5yYW5rKTtcblxuICAgICAgICBpZiAoZXZlbnQuY2FyZFdpZHRoID4gZXZlbnQucHJldkNhcmRXaWR0aCkge1xuICAgICAgICAgICAgLy8gd2hlbiBpbmNyZWFzaW5nIHNpemVcbiAgICAgICAgICAgIC8vIGNhcmQgd2lkdGggaW5jcmVhc2luZyBjdXJyZW50bHlcbiAgICAgICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gMSAmJiBjYXJkV2lkdGhDaGFuZ2UgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICsgZ2FwICYmICF0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gaW5kZXggb2YgdGhpcyBjYXJkLCB0aGVuIGdldCBuZXh0IGNhcmQuIGV4Y2hhbmdlIHJhbmtzXG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydGVkQ2FyZHMuZm9yRWFjaCgoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gY3VycmVudFJlc2l6aW5nSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgc29tZSBjYXJkcyBvbiBzYW1lIGhlaWdodC4gbWFrZSB0aGUgY3VycmVudCBjYXJkIHJhbmsgaGlnaGVyIHRoYW4gdGhlc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbmV4dCBpbmRleCB3aGVyZSBpdCB3aWxsIGZpdC4gdW50aWwgYW55IGNhcmQgaGFzIGxlc3MgY29sdW1uIHNwYW4gdGhhbiB0b3RhbCBjb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBvbmx5IGluIG5leHQgdG9wLCBvbmUgY2FyZCBpcyB0YWtpbmcgZnVsbCBjb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC5zdGFydGluZ0NvbHVtblBvc2l0aW9uICsgY2FyZC5jYXJkV2lkdGhDb2xTcGFuID09PSB0aGlzLl9jb2x1bW5zICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC5jYXJkV2lkdGhDb2xTcGFuICE9PSB0aGlzLl9jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgY2FyZHMgd2l0aCB0b3AgPiBjdXJyZW50IHRvcCAsIGJ1dCBtaW5pbXVtIG9mIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjaGFuZ2UgcmFuayB3aXRoIHRoZXNlIGNhcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlQ2FyZERvd24oaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICBjYXJkV2lkdGhDaGFuZ2UgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICsgZ2FwICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBkZWNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIC8vIG1vdmUgdXAgdGhlIGNhcmRzLCBpZiBpdCB3YXMgc2hpZnRlZCB3aGlsZSBpbmNyZWFzaW5nIHRoZSB3aWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuX3NvcnRlZENhcmRzLmZvckVhY2goKGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhcmQucmFuayA9IGNhcmQucHJldlJhbmsgPyBjYXJkLnByZXZSYW5rIDogY2FyZC5yYW5rO1xuICAgICAgICAgICAgICAgICAgICBjYXJkLnByZXZSYW5rID0gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNhcmRXaWR0aCA8IGV2ZW50LnByZXZDYXJkV2lkdGgpIHtcbiAgICAgICAgICAgIC8vIHdoZW4gZGVjcmVhc2luZyBzaXplXG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FyZC5jYXJkU3RhdGUgPT09IC0xICYmIC1jYXJkV2lkdGhDaGFuZ2UgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0ICYmICF0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBkZWNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMuX3NvcnRlZENhcmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChldmVudC5jYXJkLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2FyZC5jYXJkU3RhdGUgPT09IDEgJiYgLWNhcmRXaWR0aENoYW5nZSA8IGhvcml6b250YWxSZXNpemVPZmZzZXQgJiYgdGhpcy5fbGF5b3V0U2hpZnRlZCkge1xuICAgICAgICAgICAgICAgIC8vIGNhcmQgd2lkdGggaW5jcmVhc2luZyBjdXJyZW50bHlcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBNZXRob2QgdG8gbW92ZSBjYXJkIGRvd24sIHdoZW4gYW5vdGhlciBjYXJkIHdpZHRoIGlzIGluY3JlYXNpbmdcbiAgICAgKiBNZXRob2QgdG8gbG9vcCB0aWxsIHRoaXMuX2NvbHVtbnMgLTEgcG9zaXRpb25zIGFuZCBleGNoYW5nZSB0aGUgcmFua1xuICAgICAqIEBwYXJhbSBjdXJyZW50Q2FyZEluZGV4OiBJbmRleCBvZiBjdXJyZW50IGNhcmRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlQ2FyZERvd24oY3VycmVudENhcmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIHRha2luZyB3aWR0aCBvZiBhZGphY2VudCBjYXJkIGNvbC1zcGFuIGludG8gYWNjb3VudFxuXG4gICAgICAgIC8vIGVnOiA0IGNvbHVtbnMgLSAyIGNvbChhZGphY2VudCBjYXJkKSA9IDIgcG9zaXRpb25zIGNhbiBleGNoYW5nZSByYW5rc1xuICAgICAgICBjb25zdCBjdXJyZW50Q2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQgPSB0aGlzLl9zb3J0ZWRDYXJkc1tjdXJyZW50Q2FyZEluZGV4XTtcbiAgICAgICAgbGV0IGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50O1xuXG4gICAgICAgIC8vIHVub2NjdXBpZWRQb3NpdGlvbnMgcG9zaXRpb25zIGxlZnQgYWZ0ZXIgY3VycmVudENhcmQgb2NjdXBpZXMgaW4gbmV4dCByb3cuXG4gICAgICAgIGxldCB1bm9jY3VwaWVkUG9zaXRpb25zID0gdGhpcy5fY29sdW1ucyAtIGN1cnJlbnRDYXJkLmNhcmRXaWR0aENvbFNwYW47XG5cbiAgICAgICAgY3VycmVudENhcmQucHJldlJhbmsgPSBjdXJyZW50Q2FyZC5yYW5rO1xuXG4gICAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICAgIHdoaWxlICh1bm9jY3VwaWVkUG9zaXRpb25zID4gMCkge1xuICAgICAgICAgICAgLy8gY29tcGFyZSBmcm9tIG5leHQgY2FyZFxuICAgICAgICAgICAgY2FyZCA9IHRoaXMuX3NvcnRlZENhcmRzW2luZGV4ICsgY3VycmVudENhcmRJbmRleF07XG4gICAgICAgICAgICBpZiAoY2FyZCAmJiB1bm9jY3VwaWVkUG9zaXRpb25zID49IGNhcmQuY2FyZFdpZHRoQ29sU3Bhbikge1xuICAgICAgICAgICAgICAgIGNhcmQucHJldlJhbmsgPSBjYXJkLnJhbms7XG4gICAgICAgICAgICAgICAgY2FyZC5yYW5rIC09IDE7XG4gICAgICAgICAgICAgICAgY3VycmVudENhcmQucmFuayA9IGNhcmQucHJldlJhbms7XG4gICAgICAgICAgICAgICAgdW5vY2N1cGllZFBvc2l0aW9ucyAtPSBjYXJkLmNhcmRXaWR0aENvbFNwYW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVub2NjdXBpZWRQb3NpdGlvbnMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gdXBkYXRlcyBhcnJheSB3aXRoIG5ldyBjb2x1bW4gaGVpZ2h0c1xuICAgICAqIEBwYXJhbSBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbnNIZWlnaHQoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uc1N0YXJ0ID1cbiAgICAgICAgICAgIGNhcmRbdGhpcy5fZGlyZWN0aW9uUG9zaXRpb25dICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IE1hdGguZmxvb3IoY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0hIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApXG4gICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgIC8vIEdldCB3aWR0aCBvZiBjdXJyZW50IGNhcmQgcmVzaXppbmcgYW5kIGFzc2lnbiB3aWR0aCBoZXJlIGZvciB0aGF0IGNhcmRcbiAgICAgICAgY29uc3QgY2FyZEJhc2VDb2xTcGFuID0gTWF0aC5mbG9vcihjYXJkLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcblxuICAgICAgICAvLyB0aWxsIHdoaWNoIGNvbHVtbnMgY2FyZCBzcGFuc1xuICAgICAgICBjb25zdCBjb2x1bW5zU3BhbiA9XG4gICAgICAgICAgICBjYXJkLmNhcmRXaWR0aCAtIGNhcmRCYXNlQ29sU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwIC0gY2FyZEJhc2VDb2xTcGFuICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldFxuICAgICAgICAgICAgICAgID8gY2FyZEJhc2VDb2xTcGFuICsgMVxuICAgICAgICAgICAgICAgIDogY2FyZEJhc2VDb2xTcGFuO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkhlaWdodCA9IGNhcmQuY2FyZEhlaWdodCArIGNhcmQudG9wO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc1NwYW47IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fY29sdW1uc0hlaWdodFtpICsgY29sdW1uc1N0YXJ0XSA9IGNvbHVtbkhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW5zU3RhcnQgPT09IGNvbHVtbnNTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0W2NvbHVtbnNTdGFydF0gPSBjb2x1bW5IZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFRyeSB0byBzZXQgY2FyZCBhdCBhdmFpbGFibGUgaGVpZ2h0c1xuICAgICAqIEBwYXJhbSBjYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gaW5kZXggOiBpbmRleCB2YWx1ZSBvZiBjYXJkIGluIGFycmF5IG9mIFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZFBvc2l0aW9uVmFsdWVzKGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gPSAwICsgdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICBjYXJkLnRvcCA9IDA7XG4gICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5pcXVlSGVpZ2h0cyA9IHRoaXMuX2dldFNvcnRlZFVuaXF1ZUhlaWdodHMoKTtcbiAgICAgICAgbGV0IGNhcmRQb3NpdGlvbmVkID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bmlxdWVIZWlnaHRzLmxlbmd0aCAmJiAhY2FyZFBvc2l0aW9uZWQ7IGkrKykge1xuICAgICAgICAgICAgY2FyZFBvc2l0aW9uZWQgPSB0aGlzLl9pc1Bvc2l0aW9uU2V0U3VjY2Vzcyh1bmlxdWVIZWlnaHRzW2ldLCBjYXJkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gdHJ5IHRvIHNldCBjYXJkIGF0IGdpdmVuIGhlaWdodC5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IDogaGVpZ2h0IGF0IHdoaWNoIGNhcmQgaXMgZ2V0dGluZyBwb3NpdGlvbmVkLlxuICAgICAqIEBwYXJhbSBjYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcmV0dXJucyBJdCByZXR1cm5zIHRydWUgd2hlbiBjYXJkIHBvc2l0aW9uIGlkIGZvdW5kIG90aGVyd2lzZSBpdCByZXR1cm5zIGZhbHNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzUG9zaXRpb25TZXRTdWNjZXNzKGhlaWdodDogbnVtYmVyLCBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb2x1bW5Qb3NpdGlvbnM6IG51bWJlcltdID0gW107XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uSGVpZ2h0IG9mIHRoaXMuX2NvbHVtbnNIZWlnaHQpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICBpZiAoY29sdW1uSGVpZ2h0ID09PSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5Qb3NpdGlvbnMucHVzaChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgZm9yIGVhY2ggY2FyZCBwb3NpdGlvbiwgc3RhcnRpbmcgZnJvbSBsZWZ0bW9zdFxuICAgICAgICBsZXQgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIGxldCBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgLy8gdHJ5IHRvIGZpdCBhcyBsZWZ0IChvciByaWdodCBpZiBSdGwpIGFzIHBvc3NpYmxlIGZyb20gdGhlIGNvbHVtbiBwb3NpdGlvblxuICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gdGhpcy5fZml0Q2FyZENvbHVtblBvc2l0aW9uKGNhcmQsIGNvbHVtblBvc2l0aW9ucywgaGVpZ2h0KTtcbiAgICAgICAgaWYgKHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gIT09IC0xKSB7XG4gICAgICAgICAgICBpc0ZpdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gPVxuICAgICAgICAgICAgICAgIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gKiBob3Jpem9udGFsUmVzaXplU3RlcCArXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgK1xuICAgICAgICAgICAgICAgIChzdGFydGluZ0NvbHVtblBvc2l0aW9uID4gMCA/IGdhcCAqIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gOiAwKTtcbiAgICAgICAgICAgIGNhcmQudG9wID0gaGVpZ2h0ICsgKGhlaWdodCA+IDAgPyB2ZXJ0aWNhbFJlc2l6ZVN0ZXAgOiAwKTtcbiAgICAgICAgICAgIGNhcmQuc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IHN0YXJ0aW5nQ29sdW1uUG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRml0dGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFRyeSB0byBzdGFydCBjYXJkIHBvc2l0aW9uIGZyb20gbGVmdCBtb3N0IGZpdCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gY2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHBhcmFtIGNvbHVtblBvc2l0aW9ucyA6IEFycmF5IG9mIGF2YWlsYWJsZSBwb3NpdGlvbnMgZm9yIGNhcmRzLlxuICAgICAqIEBwYXJhbSBoZWlnaHQgOiBoZWlnaHQgYXQgd2hpY2ggZml4aW5nIHRoZSBjYXJkXG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIHN0YXJ0aW5nIGNvbHVtbiBwb3NpdGlvbiB3aGVyZSBjYXJkIHdpbGwgZml0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpdENhcmRDb2x1bW5Qb3NpdGlvbihcbiAgICAgICAgY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIGNvbHVtblBvc2l0aW9uczogQXJyYXk8bnVtYmVyPixcbiAgICAgICAgaGVpZ2h0OiBudW1iZXJcbiAgICApOiBudW1iZXIge1xuICAgICAgICAvLyBjaGVjayBmb3IgZWFjaCBjYXJkIHBvc2l0aW9uLCBzdGFydGluZyBmcm9tIGxlZnRtb3N0XG4gICAgICAgIGxldCBpc0ZpdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSAtMTtcblxuICAgICAgICAvLyBzdGFydCBmcm9tIHByZXZpb3VzIGluZGV4ZXNcbiAgICAgICAgY29uc3QgY2FyZEJhc2VDb2xTcGFuID0gTWF0aC5mbG9vcihjYXJkLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZENvbFNwYW4gPVxuICAgICAgICAgICAgY2FyZC5jYXJkV2lkdGggLSBjYXJkQmFzZUNvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCAtIGNhcmRCYXNlQ29sU3BhbiAqIGdhcCA+IGhvcml6b250YWxSZXNpemVPZmZzZXRcbiAgICAgICAgICAgICAgICA/IGNhcmRCYXNlQ29sU3BhbiArIDFcbiAgICAgICAgICAgICAgICA6IGNhcmRCYXNlQ29sU3BhbjtcbiAgICAgICAgLy8gdHJ5IHRvIHNldCB0b3dhcmRzIGxlZnQgZnJvbSBhdmFpbGFibGUgY2FyZCBwb3NpdGlvblxuICAgICAgICAvLyBlZy4gWzEsIDIsIDMsIDRdIGNvbHVtbnNQb3NpdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW5Qb3NpdGlvbiBvZiBjb2x1bW5Qb3NpdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChpc0ZpdHRpbmcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3RhcnRpbmdQb3NpdGlvbiB2YWx1ZXMgd2lsbCBiZSAxLCAyLCAzLCA0XG4gICAgICAgICAgICAvLyB0cnkgdG8gZml0IGFzIGxlZnQgYXMgcG9zc2libGVcbiAgICAgICAgICAgIGxldCBzdGFydGluZ1Bvc2l0aW9uID0gY29sdW1uUG9zaXRpb24gLSAoY2FyZENvbFNwYW4gLSAxKTtcbiAgICAgICAgICAgIHN0YXJ0aW5nUG9zaXRpb24gPSBzdGFydGluZ1Bvc2l0aW9uID4gMCA/IHN0YXJ0aW5nUG9zaXRpb24gOiAxO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0aW5nUG9zaXRpb247IGluZGV4IDw9IGNvbHVtblBvc2l0aW9uICYmICFpc0ZpdHRpbmc7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzcGFuID0gMDsgc3BhbiA8IGNhcmRDb2xTcGFuOyBzcGFuKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnNIZWlnaHRbaW5kZXggKyBzcGFuIC0gMV0gPD0gaGVpZ2h0ICYmIGNhcmRDb2xTcGFuICsgaW5kZXggLSAxIDw9IHRoaXMuX2NvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRml0dGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gaW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiByZXR1cm5zIHNvcnRlZCB1bmlxdWUgaGVpZ2h0IG9mIGNvbHVtbnMgKi9cbiAgICBwcml2YXRlIF9nZXRTb3J0ZWRVbmlxdWVIZWlnaHRzKCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgdGVtcEFycmF5ID0gdGhpcy5fY29sdW1uc0hlaWdodC5zbGljZSgpO1xuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zSGVpZ2h0QXJyYXkgPSB0ZW1wQXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUhlaWdodHM6IG51bWJlcltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzb3J0ZWRIZWlnaHQgb2Ygc29ydGVkQ29sdW1uc0hlaWdodEFycmF5KSB7XG4gICAgICAgICAgICBpZiAodW5pcXVlSGVpZ2h0cy5pbmRleE9mKHNvcnRlZEhlaWdodCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdW5pcXVlSGVpZ2h0cy5wdXNoKHNvcnRlZEhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZXIoZmlyc3Q6IG51bWJlciwgc2Vjb25kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmlxdWVIZWlnaHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQ29tcGFyYXRvciB0byBzb3J0IGNhcmQgYmFzZWQgb24gcmFuay5cbiAgICAgKiBAcGFyYW0gZmlyc3RDYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gc2Vjb25kQ2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIGRpZmZlcmVuY2UgYmV0d2VlbiBmaXJzdCBjYXJkIHJhbmsgYW5kIG90aGVyIGNhcmQgcmFuay5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0Q2FyZHMoZmlyc3RDYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgc2Vjb25kQ2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmlyc3RDYXJkLnJhbmsgLSBzZWNvbmRDYXJkLnJhbms7XG4gICAgfVxuXG4gICAgLyoqIGdldCB2YWx1ZSBmb3IgcnRsICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaERpcmVjdGlvbiA9IChpc1J0bCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyZWN0aW9uUG9zaXRpb24gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVmcmVzaERpcmVjdGlvbih0aGlzLl9pc1J0bCk7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZShyZWZyZXNoRGlyZWN0aW9uKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2xheW91dFxuICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0XCJcbiAgICBbY2xhc3NdPVwiJ2ZkLXJlc2l6YWJsZS1jYXJkLWxheW91dC0tJyArIGxheW91dFNpemVcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJsYXlvdXRXaWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJsYXlvdXRIZWlnaHRcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -93,7 +93,7 @@ export class SegmentedButtonComponent {
|
|
|
93
93
|
}
|
|
94
94
|
/** @hidden */
|
|
95
95
|
_listenToTriggerEvents(buttonComponent) {
|
|
96
|
-
const htmlElement = buttonComponent.elementRef
|
|
96
|
+
const htmlElement = buttonComponent.elementRef.nativeElement;
|
|
97
97
|
const refresh$ = merge(this._onDestroy$, this._onRefresh$);
|
|
98
98
|
const triggerEvents$ = merge(fromEvent(htmlElement, 'click'), fromEvent(htmlElement, 'keydown').pipe(filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])), tap((event) => {
|
|
99
99
|
event.preventDefault();
|
|
@@ -175,13 +175,13 @@ export class SegmentedButtonComponent {
|
|
|
175
175
|
}
|
|
176
176
|
this._buttons.forEach((button) => (button.disabled = disable));
|
|
177
177
|
if (disable) {
|
|
178
|
-
this._buttons.forEach((button) => button.elementRef
|
|
178
|
+
this._buttons.forEach((button) => button.elementRef.nativeElement.setAttribute('disabled', 'true'));
|
|
179
179
|
}
|
|
180
180
|
this._changeDetRef.markForCheck();
|
|
181
181
|
}
|
|
182
182
|
/** @hidden */
|
|
183
183
|
_getButtonValue(buttonComponent) {
|
|
184
|
-
const element = buttonComponent.elementRef
|
|
184
|
+
const element = buttonComponent.elementRef.nativeElement;
|
|
185
185
|
if (element instanceof HTMLButtonElement) {
|
|
186
186
|
return element.value;
|
|
187
187
|
}
|
|
@@ -238,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
238
238
|
type: HostListener,
|
|
239
239
|
args: ['click', ['$event']]
|
|
240
240
|
}] } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZWdtZW50ZWQtYnV0dG9uL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VnbWVudGVkLWJ1dHRvbi9zZWdtZW50ZWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUk3Qzs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyx3QkFBd0I7SUFnQ2pDLGNBQWM7SUFDZCxZQUNxQixhQUFnQyxFQUNoQyxXQUF1QixF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LEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSTtTQUNkO1FBQ0QsZ0JBQWdCO0tBQ25CLG1EQVlnQixtQkFBbUIsNkJDakV4Qyw2QkFDQTsyRkRzRGEsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDSSxxQkFBcUIsUUFHekI7d0JBQ0YsSUFBSSxFQUFFLE9BQU87cUJBQ2hCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELGdCQUFnQjtxQkFDbkI7Z0tBS0QsTUFBTTtzQkFETCxLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBS3hDLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBeUU1QixNQUFNO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBGRF9CVVRUT05fQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlLCBmcm9tRXZlbnQsIGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWRDbGFzcyA9ICdpcy1kaXNhYmxlZCc7XG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRlZEJ1dHRvblZhbHVlID0gc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgZ3JvdXBlZCBidXR0b25zLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZC1zZWdtZW50ZWQtYnV0dG9uIFsobmdNb2RlbCldPVwidmFsdWVcIj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cImZpcnN0XCI+QnV0dG9uPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiBmZC1idXR0b24gdmFsdWU9XCJzZWNvbmRcIj5CdXR0b248L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cInRoaXJkXCI+QnV0dG9uPC9idXR0b24+XG4gKiA8L2ZkLXNlZ21lbnRlZC1idXR0b24+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zZWdtZW50ZWQtYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2dyb3VwJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRCdXR0b25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VnbWVudGVkQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgc2VnbWVudGVkIGJ1dHRvbiBpcyBvbiB0b2dnbGUgbW9kZSwgd2hpY2ggYWxsb3dzIHRvIHRvZ2dsZSBtb3JlIHRoYW4gMSBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIHRvZ2dsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXNlZ21lbnRlZC1idXR0b24nKVxuICAgIF9mZFNlZ21lbnRlZEJ1dHRvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGRF9CVVRUT05fQ09NUE9ORU5UKVxuICAgIF9idXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHNlZ21lbnRlZCBidXR0b24gY2FuIGhhdmUgMiB0eXBlczpcbiAgICAgKiAtIHN0cmluZywgd2hlbiB0aGVyZSBpcyBubyB0b2dnbGUgbW9kZSBhbmQgb25seSAxIHZhbHVlIGNhbiBiZSBjaG9zZW4uXG4gICAgICogLSBhcnJheSBvZiBzdHJpbmdzLCB3aGVuIHRoZXJlIGlzIHRvZ2dsZSBtb2RlIGFuZCBtb3JlIHRoYW4gMSB2YWx1ZSBjYW4gYmUgY2hvc2VuLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gcXVlcnlMaXN0IGNoYW5nZXMgKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vblJlZnJlc2gkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWUpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvQnV0dG9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uUmVmcmVzaCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX3BpY2tCdXR0b25zQnlWYWx1ZXModmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGZuIFVzZXIgZGVmaW5lZCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlICpvbkNoYW5nZSogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25Ub3VjaCogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2V0cyB0aGUgdmFsdWUgb2YgdGhlICpkaXNhYmxlZCogcHJvcGVydHkgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl90b2dnbGVEaXNhYmxlQnV0dG9ucyhpc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9jbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9CdXR0b25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9idXR0b25zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgxKSwgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZUJ1dHRvbnModGhpcy5faXNEaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGlja0J1dHRvbnNCeVZhbHVlcyh0aGlzLl9jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9saXN0ZW5Ub1RyaWdnZXJFdmVudHMoYnV0dG9uKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVHJpZ2dlckV2ZW50cyhidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IGJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBjb25zdCByZWZyZXNoJCA9IG1lcmdlKHRoaXMuX29uRGVzdHJveSQsIHRoaXMuX29uUmVmcmVzaCQpO1xuXG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMkID0gbWVyZ2UoXG4gICAgICAgICAgICBmcm9tRXZlbnQoaHRtbEVsZW1lbnQsICdjbGljaycpLFxuICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGh0bWxFbGVtZW50LCAna2V5ZG93bicpLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSksXG4gICAgICAgICAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdHJpZ2dlckV2ZW50cyQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faGFuZGxlVHJpZ2dlck9uQnV0dG9uKGJ1dHRvbkNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlVHJpZ2dlck9uQnV0dG9uKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faXNCdXR0b25EaXNhYmxlZChidXR0b25Db21wb25lbnQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50KSAmJiAhdGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4gdGhpcy5fZGVzZWxlY3RCdXR0b24oYnV0dG9uKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0QnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGVCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9nZXRWYWx1ZXNCeVNlbGVjdGVkKCkpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9nZXRWYWx1ZXNCeVNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fZGVzZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9waWNrQnV0dG9uc0J5VmFsdWVzKHZhbHVlczogU2VnbWVudGVkQnV0dG9uVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9idXR0b25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbikpO1xuICAgICAgICB0aGlzLl9nZXRCdXR0b25zQnlWYWx1ZXModmFsdWVzKS5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b24pKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEJ1dHRvbnNCeVZhbHVlcyh2YWx1ZXM6IFNlZ21lbnRlZEJ1dHRvblZhbHVlKTogQnV0dG9uQ29tcG9uZW50W10ge1xuICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbnMuZmlsdGVyKChidXR0b24pID0+ICEhdmFsdWVzLmZpbmQoKHZhbHVlKSA9PiB0aGlzLl9nZXRCdXR0b25WYWx1ZShidXR0b24pID09PSB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbnMuZmlsdGVyKChidXR0b24pID0+IHRoaXMuX2dldEJ1dHRvblZhbHVlKGJ1dHRvbikgPT09IHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBidXR0b25Db21wb25lbnQudG9nZ2xlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXNlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBidXR0b25Db21wb25lbnQudG9nZ2xlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNCdXR0b25TZWxlY3RlZChidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0J1dHRvbkRpc2FibGVkKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBidXR0b25Db21wb25lbnQuX2Rpc2FibGVkIHx8IGJ1dHRvbkNvbXBvbmVudC5hcmlhRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVEaXNhYmxlQnV0dG9ucyhkaXNhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYnV0dG9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IChidXR0b24uZGlzYWJsZWQgPSBkaXNhYmxlKSk7XG4gICAgICAgIGlmIChkaXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4gYnV0dG9uLmVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAndHJ1ZScpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRCdXR0b25WYWx1ZShidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gYnV0dG9uQ29tcG9uZW50LmVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHZhbHVlcyBkZXBlbmRpbmcgb24gc2VsZWN0ZWQgc3RhdGUgb2YgYnV0dG9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlc0J5U2VsZWN0ZWQoKTogU2VnbWVudGVkQnV0dG9uVmFsdWUge1xuICAgICAgICBpZiAoIXRoaXMuX2J1dHRvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc0J1dHRvbnMgPSB0aGlzLl9idXR0b25zXG4gICAgICAgICAgICAuZmlsdGVyKChidXR0b24pID0+IHRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uKSlcbiAgICAgICAgICAgIC5tYXAoKGJ1dHRvbikgPT4gdGhpcy5fZ2V0QnV0dG9uVmFsdWUoYnV0dG9uKSk7XG4gICAgICAgIGlmICghdGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNCdXR0b25zLmxlbmd0aCA9PT0gMSA/IHJlc0J1dHRvbnNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc0J1dHRvbnM7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZWdtZW50ZWQtYnV0dG9uL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VnbWVudGVkLWJ1dHRvbi9zZWdtZW50ZWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUk3Qzs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyx3QkFBd0I7SUFnQ2pDLGNBQWM7SUFDZCxZQUNxQixhQUFnQyxFQUNoQyxXQUF1QixF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d0IsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSTtTQUNkO1FBQ0QsZ0JBQWdCO0tBQ25CLG1EQVlnQixtQkFBbUIsNkJDakV4Qyw2QkFDQTsyRkRzRGEsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDSSxxQkFBcUIsUUFHekI7d0JBQ0YsSUFBSSxFQUFFLE9BQU87cUJBQ2hCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELGdCQUFnQjtxQkFDbkI7Z0tBS0QsTUFBTTtzQkFETCxLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBS3hDLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBeUU1QixNQUFNO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBGRF9CVVRUT05fQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlLCBmcm9tRXZlbnQsIGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWRDbGFzcyA9ICdpcy1kaXNhYmxlZCc7XG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRlZEJ1dHRvblZhbHVlID0gc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgZ3JvdXBlZCBidXR0b25zLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZC1zZWdtZW50ZWQtYnV0dG9uIFsobmdNb2RlbCldPVwidmFsdWVcIj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cImZpcnN0XCI+QnV0dG9uPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiBmZC1idXR0b24gdmFsdWU9XCJzZWNvbmRcIj5CdXR0b248L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cInRoaXJkXCI+QnV0dG9uPC9idXR0b24+XG4gKiA8L2ZkLXNlZ21lbnRlZC1idXR0b24+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zZWdtZW50ZWQtYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2dyb3VwJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRCdXR0b25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VnbWVudGVkQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgc2VnbWVudGVkIGJ1dHRvbiBpcyBvbiB0b2dnbGUgbW9kZSwgd2hpY2ggYWxsb3dzIHRvIHRvZ2dsZSBtb3JlIHRoYW4gMSBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIHRvZ2dsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXNlZ21lbnRlZC1idXR0b24nKVxuICAgIF9mZFNlZ21lbnRlZEJ1dHRvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGRF9CVVRUT05fQ09NUE9ORU5UKVxuICAgIF9idXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHNlZ21lbnRlZCBidXR0b24gY2FuIGhhdmUgMiB0eXBlczpcbiAgICAgKiAtIHN0cmluZywgd2hlbiB0aGVyZSBpcyBubyB0b2dnbGUgbW9kZSBhbmQgb25seSAxIHZhbHVlIGNhbiBiZSBjaG9zZW4uXG4gICAgICogLSBhcnJheSBvZiBzdHJpbmdzLCB3aGVuIHRoZXJlIGlzIHRvZ2dsZSBtb2RlIGFuZCBtb3JlIHRoYW4gMSB2YWx1ZSBjYW4gYmUgY2hvc2VuLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gcXVlcnlMaXN0IGNoYW5nZXMgKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vblJlZnJlc2gkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWUpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvQnV0dG9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uUmVmcmVzaCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX3BpY2tCdXR0b25zQnlWYWx1ZXModmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGZuIFVzZXIgZGVmaW5lZCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlICpvbkNoYW5nZSogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25Ub3VjaCogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2V0cyB0aGUgdmFsdWUgb2YgdGhlICpkaXNhYmxlZCogcHJvcGVydHkgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl90b2dnbGVEaXNhYmxlQnV0dG9ucyhpc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9jbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9CdXR0b25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9idXR0b25zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgxKSwgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZUJ1dHRvbnModGhpcy5faXNEaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGlja0J1dHRvbnNCeVZhbHVlcyh0aGlzLl9jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9saXN0ZW5Ub1RyaWdnZXJFdmVudHMoYnV0dG9uKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVHJpZ2dlckV2ZW50cyhidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IGJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgcmVmcmVzaCQgPSBtZXJnZSh0aGlzLl9vbkRlc3Ryb3kkLCB0aGlzLl9vblJlZnJlc2gkKTtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzJCA9IG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KGh0bWxFbGVtZW50LCAnY2xpY2snKSxcbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihodG1sRWxlbWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRyaWdnZXJFdmVudHMkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hhbmRsZVRyaWdnZXJPbkJ1dHRvbihidXR0b25Db21wb25lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVRyaWdnZXJPbkJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQnV0dG9uRGlzYWJsZWQoYnV0dG9uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0J1dHRvblNlbGVjdGVkKGJ1dHRvbkNvbXBvbmVudCkgJiYgIXRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbikpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlQnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fZ2V0VmFsdWVzQnlTZWxlY3RlZCgpKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fZ2V0VmFsdWVzQnlTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlQnV0dG9uKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0J1dHRvblNlbGVjdGVkKGJ1dHRvbkNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGlja0J1dHRvbnNCeVZhbHVlcyh2YWx1ZXM6IFNlZ21lbnRlZEJ1dHRvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYnV0dG9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9kZXNlbGVjdEJ1dHRvbihidXR0b24pKTtcbiAgICAgICAgdGhpcy5fZ2V0QnV0dG9uc0J5VmFsdWVzKHZhbHVlcykuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9zZWxlY3RCdXR0b24oYnV0dG9uKSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRCdXR0b25zQnlWYWx1ZXModmFsdWVzOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSk6IEJ1dHRvbkNvbXBvbmVudFtdIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9idXR0b25zLmZpbHRlcigoYnV0dG9uKSA9PiAhIXZhbHVlcy5maW5kKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0QnV0dG9uVmFsdWUoYnV0dG9uKSA9PT0gdmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9idXR0b25zLmZpbHRlcigoYnV0dG9uKSA9PiB0aGlzLl9nZXRCdXR0b25WYWx1ZShidXR0b24pID09PSB2YWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGJ1dHRvbkNvbXBvbmVudC50b2dnbGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNCdXR0b25EaXNhYmxlZChidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYnV0dG9uQ29tcG9uZW50Ll9kaXNhYmxlZCB8fCBidXR0b25Db21wb25lbnQuYXJpYURpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlRGlzYWJsZUJ1dHRvbnMoZGlzYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2J1dHRvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiAoYnV0dG9uLmRpc2FibGVkID0gZGlzYWJsZSkpO1xuICAgICAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IGJ1dHRvbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICd0cnVlJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEJ1dHRvblZhbHVlKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBidXR0b25Db21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHZhbHVlcyBkZXBlbmRpbmcgb24gc2VsZWN0ZWQgc3RhdGUgb2YgYnV0dG9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlc0J5U2VsZWN0ZWQoKTogU2VnbWVudGVkQnV0dG9uVmFsdWUge1xuICAgICAgICBpZiAoIXRoaXMuX2J1dHRvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc0J1dHRvbnMgPSB0aGlzLl9idXR0b25zXG4gICAgICAgICAgICAuZmlsdGVyKChidXR0b24pID0+IHRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uKSlcbiAgICAgICAgICAgIC5tYXAoKGJ1dHRvbikgPT4gdGhpcy5fZ2V0QnV0dG9uVmFsdWUoYnV0dG9uKSk7XG4gICAgICAgIGlmICghdGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNCdXR0b25zLmxlbmd0aCA9PT0gMSA/IHJlc0J1dHRvbnNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc0J1dHRvbnM7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|