ontimize-web-ngx 15.0.0-rc.0 → 15.0.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/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
- package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
- package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
- package/esm2020/lib/components/button/o-button.component.mjs +4 -4
- package/esm2020/lib/components/button/o-button.module.mjs +5 -5
- package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
- package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
- package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
- package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
- package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
- package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
- package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
- package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +13 -22
- package/esm2020/lib/components/form/o-form.component.mjs +4 -4
- package/esm2020/lib/components/form/o-form.module.mjs +5 -5
- package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
- package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
- package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
- package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
- package/esm2020/lib/components/grid/o-grid.component.mjs +11 -11
- package/esm2020/lib/components/grid/o-grid.module.mjs +9 -7
- package/esm2020/lib/components/grid/skeketon/o-grid-skeleton/o-grid-skeleton.component.mjs +26 -0
- package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.module.mjs +5 -5
- package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
- package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
- package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
- package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-range/o-daterange-input.directive.mjs +4 -4
- package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range/o-daterange-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
- package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +7 -7
- package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
- package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +4 -4
- package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +5 -5
- package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
- package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
- package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
- package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
- package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
- package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
- package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
- package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
- package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
- package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
- package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
- package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
- package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
- package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
- package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
- package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
- package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
- package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
- package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
- package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
- package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
- package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
- package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
- package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
- package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
- package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
- package/esm2020/lib/components/list/o-list.component.mjs +14 -15
- package/esm2020/lib/components/list/o-list.module.mjs +12 -8
- package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
- package/esm2020/lib/components/list/skeleton/o-list-skeleton/o-list-skeleton.component.mjs +26 -0
- package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
- package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/o-service-base-component.class.mjs +10 -10
- package/esm2020/lib/components/o-service-component.class.mjs +17 -11
- package/esm2020/lib/components/o-skeleton.component.mjs +21 -0
- package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +2 -2
- package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton/o-table-skeleton.component.mjs +26 -0
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +4 -4
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
- package/esm2020/lib/components/table/o-table.component.mjs +37 -38
- package/esm2020/lib/components/table/o-table.module.mjs +14 -7
- package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree-dao.service.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.module.mjs +5 -5
- package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
- package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
- package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
- package/esm2020/lib/config/o-modules.mjs +5 -5
- package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
- package/esm2020/lib/directives/locker.directive.mjs +4 -4
- package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
- package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +6 -8
- package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
- package/esm2020/lib/ontimize-web-ngx.module.mjs +5 -5
- package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
- package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
- package/esm2020/lib/services/app-menu.service.mjs +4 -4
- package/esm2020/lib/services/appearance.service.mjs +4 -4
- package/esm2020/lib/services/auth-guard.service.mjs +4 -4
- package/esm2020/lib/services/auth.service.mjs +4 -4
- package/esm2020/lib/services/currency.service.mjs +4 -4
- package/esm2020/lib/services/dialog.service.mjs +4 -4
- package/esm2020/lib/services/icon.service.mjs +4 -4
- package/esm2020/lib/services/local-storage.service.mjs +4 -4
- package/esm2020/lib/services/login-storage.service.mjs +4 -4
- package/esm2020/lib/services/moment.service.mjs +4 -4
- package/esm2020/lib/services/navigation.service.mjs +4 -4
- package/esm2020/lib/services/number.service.mjs +4 -4
- package/esm2020/lib/services/o-auth.service.mjs +4 -4
- package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
- package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
- package/esm2020/lib/services/o-user-info.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
- package/esm2020/lib/services/parser/o-service-response.parser.mjs +4 -4
- package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -5
- package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions.service.mjs +4 -4
- package/esm2020/lib/services/remote-config.service.mjs +5 -5
- package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
- package/esm2020/lib/services/snackbar.service.mjs +4 -4
- package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
- package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-tree-component-state.service.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
- package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
- package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
- package/esm2020/lib/shared/shared.module.mjs +5 -5
- package/esm2020/lib/util/util.mjs +11 -8
- package/fesm2015/ontimize-web-ngx.mjs +1251 -1166
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +1250 -1166
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/grid/o-grid.module.d.ts +8 -6
- package/lib/components/grid/skeketon/o-grid-skeleton/o-grid-skeleton.component.d.ts +11 -0
- package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
- package/lib/components/list/o-list.module.d.ts +8 -6
- package/lib/components/list/skeleton/o-list-skeleton/o-list-skeleton.component.d.ts +11 -0
- package/lib/components/o-service-component.class.d.ts +2 -1
- package/lib/components/o-skeleton.component.d.ts +14 -0
- package/lib/components/table/extensions/skeleton/o-table-skeleton/o-table-skeleton.component.d.ts +11 -0
- package/lib/components/table/o-table.component.d.ts +3 -1
- package/lib/components/table/o-table.module.d.ts +14 -12
- package/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.d.ts +2 -3
- package/lib/util/util.d.ts +1 -1
- package/package.json +3 -2
- package/theme.scss +89 -73
- package/theming/ontimize-style.scss +18 -0
|
@@ -27,6 +27,8 @@ import { OTableRowDirective } from './extensions/row/o-table-row.directive';
|
|
|
27
27
|
import { OTableRowExpandableComponent } from './extensions/row/table-row-expandable/o-table-row-expandable.component';
|
|
28
28
|
import { OMatSortModule } from './extensions/sort/o-mat-sort-module';
|
|
29
29
|
import { OTableComponent } from './o-table.component';
|
|
30
|
+
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
31
|
+
import { OTableSkeletonComponent } from './extensions/skeleton/o-table-skeleton/o-table-skeleton.component';
|
|
30
32
|
import * as i0 from "@angular/core";
|
|
31
33
|
import * as i1 from "./column/cell-renderer/action/o-table-cell-renderer-action.component";
|
|
32
34
|
import * as i2 from "./column/cell-renderer/date/o-table-cell-renderer-date.component";
|
|
@@ -71,19 +73,21 @@ import * as i40 from "./extensions/footer/paginator/o-table-paginator.component"
|
|
|
71
73
|
import * as i41 from "./extensions/footer/aggregate/o-table-column-aggregate.component";
|
|
72
74
|
export class OTableModule {
|
|
73
75
|
}
|
|
74
|
-
OTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
75
|
-
OTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
76
|
+
OTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
77
|
+
OTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: OTableModule, declarations: [OTableComponent,
|
|
76
78
|
OTableColumnComponent,
|
|
77
79
|
OTableColumnCalculatedComponent,
|
|
78
80
|
OTableContextMenuComponent,
|
|
79
81
|
OTableRowDirective,
|
|
80
82
|
OTableExpandedFooterDirective,
|
|
81
83
|
OTableExportButtonComponent,
|
|
82
|
-
OTableRowClassPipe, i1.OTableCellRendererActionComponent, i2.OTableCellRendererDateComponent, i3.OTableCellRendererBooleanComponent, i4.OTableCellRendererImageComponent, i5.OTableCellRendererIntegerComponent, i6.OTableCellRendererRealComponent, i7.OTableCellRendererCurrencyComponent, i8.OTableCellRendererPercentageComponent, i9.OTableCellRendererServiceComponent, i10.OTableCellRendererTranslateComponent, i11.OTableCellRendererTimeComponent, i12.OTableCellEditorBooleanComponent, i13.OTableCellEditorDateComponent, i14.OTableCellEditorIntegerComponent, i15.OTableCellEditorRealComponent, i16.OTableCellEditorTextComponent, i17.OTableCellEditorEmailComponent, i18.OTableCellEditorTimeComponent, i19.OTableApplyConfigurationDialogComponent, i20.OTableExportDialogComponent, i21.OTableStoreConfigurationDialogComponent, i22.OTableVisibleColumnsDialogComponent, i23.OTableFilterByColumnDataDialogComponent, i24.OTableGroupByColumnsDialogComponent, i25.OTableButtonComponent, i26.OTableButtonsComponent, i27.OTableColumnResizerComponent, i28.OTableColumnsFilterComponent, i29.OTableMenuComponent, i30.OTableOptionComponent, i31.OTableInsertableRowComponent, i32.OTableQuickfilterComponent, i33.OTableColumnsFilterColumnComponent, i34.OTableHeaderColumnFilterIconComponent, i35.OTableHeaderComponent, i36.OTableColumnsGroupingComponent, i37.OTableColumnsGroupingColumnComponent, i38.OTableColumnSelectAllDirective, i39.OTableHeaderSelectAllComponent, i40.OTablePaginatorComponent, i41.OTableColumnAggregateComponent, OTableRowExpandableComponent
|
|
84
|
+
OTableRowClassPipe, i1.OTableCellRendererActionComponent, i2.OTableCellRendererDateComponent, i3.OTableCellRendererBooleanComponent, i4.OTableCellRendererImageComponent, i5.OTableCellRendererIntegerComponent, i6.OTableCellRendererRealComponent, i7.OTableCellRendererCurrencyComponent, i8.OTableCellRendererPercentageComponent, i9.OTableCellRendererServiceComponent, i10.OTableCellRendererTranslateComponent, i11.OTableCellRendererTimeComponent, i12.OTableCellEditorBooleanComponent, i13.OTableCellEditorDateComponent, i14.OTableCellEditorIntegerComponent, i15.OTableCellEditorRealComponent, i16.OTableCellEditorTextComponent, i17.OTableCellEditorEmailComponent, i18.OTableCellEditorTimeComponent, i19.OTableApplyConfigurationDialogComponent, i20.OTableExportDialogComponent, i21.OTableStoreConfigurationDialogComponent, i22.OTableVisibleColumnsDialogComponent, i23.OTableFilterByColumnDataDialogComponent, i24.OTableGroupByColumnsDialogComponent, i25.OTableButtonComponent, i26.OTableButtonsComponent, i27.OTableColumnResizerComponent, i28.OTableColumnsFilterComponent, i29.OTableMenuComponent, i30.OTableOptionComponent, i31.OTableInsertableRowComponent, i32.OTableQuickfilterComponent, i33.OTableColumnsFilterColumnComponent, i34.OTableHeaderColumnFilterIconComponent, i35.OTableHeaderComponent, i36.OTableColumnsGroupingComponent, i37.OTableColumnsGroupingColumnComponent, i38.OTableColumnSelectAllDirective, i39.OTableHeaderSelectAllComponent, i40.OTablePaginatorComponent, i41.OTableColumnAggregateComponent, OTableRowExpandableComponent,
|
|
85
|
+
OTableSkeletonComponent], imports: [CommonModule,
|
|
83
86
|
OSharedModule,
|
|
84
87
|
CdkTableModule,
|
|
85
88
|
DragDropModule,
|
|
86
89
|
PortalModule,
|
|
90
|
+
NgxSkeletonLoaderModule,
|
|
87
91
|
OContextMenuModule,
|
|
88
92
|
ObserversModule,
|
|
89
93
|
OMatSortModule,
|
|
@@ -99,7 +103,7 @@ OTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
|
99
103
|
OMatSortModule,
|
|
100
104
|
OTableExportButtonComponent,
|
|
101
105
|
OTableRowClassPipe, i25.OTableButtonComponent, i26.OTableButtonsComponent, i27.OTableColumnResizerComponent, i36.OTableColumnsGroupingComponent, i37.OTableColumnsGroupingColumnComponent, i28.OTableColumnsFilterComponent, i29.OTableMenuComponent, i30.OTableOptionComponent, i31.OTableInsertableRowComponent, i32.OTableQuickfilterComponent, i33.OTableColumnsFilterColumnComponent, i35.OTableHeaderComponent, i38.OTableColumnSelectAllDirective, i1.OTableCellRendererActionComponent, i2.OTableCellRendererDateComponent, i3.OTableCellRendererBooleanComponent, i4.OTableCellRendererImageComponent, i5.OTableCellRendererIntegerComponent, i6.OTableCellRendererRealComponent, i7.OTableCellRendererCurrencyComponent, i8.OTableCellRendererPercentageComponent, i9.OTableCellRendererServiceComponent, i10.OTableCellRendererTranslateComponent, i11.OTableCellRendererTimeComponent, i12.OTableCellEditorBooleanComponent, i13.OTableCellEditorDateComponent, i14.OTableCellEditorIntegerComponent, i15.OTableCellEditorRealComponent, i16.OTableCellEditorTextComponent, i17.OTableCellEditorEmailComponent, i18.OTableCellEditorTimeComponent, i40.OTablePaginatorComponent, i41.OTableColumnAggregateComponent, OTableRowExpandableComponent] });
|
|
102
|
-
OTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
106
|
+
OTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableModule, providers: [
|
|
103
107
|
OTableExportButtonService,
|
|
104
108
|
{ provide: MatPaginatorIntl, useClass: OTableMatPaginatorIntl }
|
|
105
109
|
], imports: [CommonModule,
|
|
@@ -107,6 +111,7 @@ OTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
|
107
111
|
CdkTableModule,
|
|
108
112
|
DragDropModule,
|
|
109
113
|
PortalModule,
|
|
114
|
+
NgxSkeletonLoaderModule,
|
|
110
115
|
OContextMenuModule,
|
|
111
116
|
ObserversModule,
|
|
112
117
|
OMatSortModule,
|
|
@@ -114,7 +119,7 @@ OTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
|
114
119
|
ODualListSelectorModule,
|
|
115
120
|
ODataToolbarModule, CdkTableModule,
|
|
116
121
|
OMatSortModule] });
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableModule, decorators: [{
|
|
118
123
|
type: NgModule,
|
|
119
124
|
args: [{
|
|
120
125
|
declarations: [
|
|
@@ -131,7 +136,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
131
136
|
...O_TABLE_DIALOGS,
|
|
132
137
|
...O_TABLE_HEADER_COMPONENTS,
|
|
133
138
|
...O_TABLE_FOOTER_COMPONENTS,
|
|
134
|
-
OTableRowExpandableComponent
|
|
139
|
+
OTableRowExpandableComponent,
|
|
140
|
+
OTableSkeletonComponent
|
|
135
141
|
],
|
|
136
142
|
imports: [
|
|
137
143
|
CommonModule,
|
|
@@ -139,6 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
139
145
|
CdkTableModule,
|
|
140
146
|
DragDropModule,
|
|
141
147
|
PortalModule,
|
|
148
|
+
NgxSkeletonLoaderModule,
|
|
142
149
|
OContextMenuModule,
|
|
143
150
|
ObserversModule,
|
|
144
151
|
OMatSortModule,
|
|
@@ -169,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
169
176
|
]
|
|
170
177
|
}]
|
|
171
178
|
}] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9vLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFB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QkFDZCwyQkFBMkI7d0JBQzNCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsK0JBQStCO3dCQUMvQiwwQkFBMEI7d0JBQzFCLGtCQUFrQjt3QkFDbEIsNkJBQTZCO3dCQUM3QixjQUFjO3dCQUNkLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQixHQUFHLGtDQUFrQzt3QkFDckMsR0FBRyxzQkFBc0I7d0JBQ3pCLEdBQUcsb0JBQW9CO3dCQUN2QixHQUFHLHlCQUF5Qjt3QkFDNUIsNEJBQTRCO3FCQUM3QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3dCQUN6QixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7cUJBQ2hFO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE9ic2VydmVyc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgQ2RrVGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JJbnRsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE5neE1hdGVyaWFsVGltZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1tYXRlcmlhbC10aW1lcGlja2VyJztcblxuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBPU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51TW9kdWxlIH0gZnJvbSAnLi4vY29udGV4dG1lbnUvby1jb250ZXh0LW1lbnUubW9kdWxlJztcbmltcG9ydCB7IE9EdWFsTGlzdFNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi4vZHVhbC1saXN0LXNlbGVjdG9yL28tZHVhbC1saXN0LXNlbGVjdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBPRGF0YVRvb2xiYXJNb2R1bGUgfSBmcm9tICcuLi9vLWRhdGEtdG9vbGJhci9vLWRhdGEtdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uQ2FsY3VsYXRlZENvbXBvbmVudCB9IGZyb20gJy4vY29sdW1uL2NhbGN1bGF0ZWQvby10YWJsZS1jb2x1bW4tY2FsY3VsYXRlZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT19UQUJMRV9DRUxMX0VESVRPUlMgfSBmcm9tICcuL2NvbHVtbi9jZWxsLWVkaXRvci9jZWxsLWVkaXRvcic7XG5pbXBvcnQgeyBPX1RBQkxFX0NFTExfUkVOREVSRVJTIH0gZnJvbSAnLi9jb2x1bW4vY2VsbC1yZW5kZXJlci9jZWxsLXJlbmRlcmVyJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaW9ucy9jb250ZXh0bWVudS9vLXRhYmxlLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT19UQUJMRV9ESUFMT0dTIH0gZnJvbSAnLi9leHRlbnNpb25zL2RpYWxvZy9vLXRhYmxlLWRpYWxvZy1jb21wb25lbnRzJztcbmltcG9ydCB7IE9UYWJsZUV4cG9ydEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaW9ucy9leHBvcnQtYnV0dG9uL28tdGFibGUtZXhwb3J0LWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9leHBvcnQtYnV0dG9uL28tdGFibGUtZXhwb3J0LWJ1dHRvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9UYWJsZUV4cGFuZGVkRm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9leHRlbnNpb25zL2Zvb3Rlci9leHBhbmRlZC9vLXRhYmxlLWV4cGFuZGVkLWZvb3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT19UQUJMRV9GT09URVJfQ09NUE9ORU5UUyB9IGZyb20gJy4vZXh0ZW5zaW9ucy9mb290ZXIvby10YWJsZS1mb290ZXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPVGFibGVNYXRQYWdpbmF0b3JJbnRsIH0gZnJvbSAnLi9leHRlbnNpb25zL2Zvb3Rlci9wYWdpbmF0b3Ivby10YWJsZS1tYXQtcGFnaW5hdG9yLWludGwnO1xuaW1wb3J0IHsgT19UQUJMRV9IRUFERVJfQ09NUE9ORU5UUywgT19UQUJMRV9IRUFERVJfQ09NUE9ORU5UU19FWFBPUlRFRCB9IGZyb20gJy4vZXh0ZW5zaW9ucy9oZWFkZXIvby10YWJsZS1oZWFkZXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPVGFibGVSb3dDbGFzc1BpcGUgfSBmcm9tICcuL2V4dGVuc2lvbnMvcGlwZXMvby10YWJsZS1yb3ctY2xhc3MucGlwZSc7XG5pbXBvcnQgeyBPVGFibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2V4dGVuc2lvbnMvcm93L28tdGFibGUtcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPVGFibGVSb3dFeHBhbmRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9leHRlbnNpb25zL3Jvdy90YWJsZS1yb3ctZXhwYW5kYWJsZS9vLXRhYmxlLXJvdy1leHBhbmRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPTWF0U29ydE1vZHVsZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9zb3J0L28tbWF0LXNvcnQtbW9kdWxlJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcbmltcG9ydCB7IE9UYWJsZVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBPVGFibGVDb21wb25lbnQsXG4gICAgT1RhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIE9UYWJsZUNvbHVtbkNhbGN1bGF0ZWRDb21wb25lbnQsXG4gICAgT1RhYmxlQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgT1RhYmxlUm93RGlyZWN0aXZlLFxuICAgIE9UYWJsZUV4cGFuZGVkRm9vdGVyRGlyZWN0aXZlLFxuICAgIE9UYWJsZUV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgICBPVGFibGVSb3dDbGFzc1BpcGUsXG4gICAgLi4uT19UQUJMRV9DRUxMX1JFTkRFUkVSUyxcbiAgICAuLi5PX1RBQkxFX0NFTExfRURJVE9SUyxcbiAgICAuLi5PX1RBQkxFX0RJQUxPR1MsXG4gICAgLi4uT19UQUJMRV9IRUFERVJfQ09NUE9ORU5UUyxcbiAgICAuLi5PX1RBQkxFX0ZPT1RFUl9DT01QT05FTlRTLFxuICAgIE9UYWJsZVJvd0V4cGFuZGFibGVDb21wb25lbnQsXG4gICAgT1RhYmxlU2tlbGV0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBPU2hhcmVkTW9kdWxlLFxuICAgIENka1RhYmxlTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSxcbiAgICBPQ29udGV4dE1lbnVNb2R1bGUsXG4gICAgT2JzZXJ2ZXJzTW9kdWxlLFxuICAgIE9NYXRTb3J0TW9kdWxlLFxuICAgIE5neE1hdGVyaWFsVGltZXBpY2tlck1vZHVsZSxcbiAgICBPRHVhbExpc3RTZWxlY3Rvck1vZHVsZSxcbiAgICBPRGF0YVRvb2xiYXJNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE9UYWJsZUNvbXBvbmVudCxcbiAgICBPVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgQ2RrVGFibGVNb2R1bGUsXG4gICAgT1RhYmxlQ29sdW1uQ2FsY3VsYXRlZENvbXBvbmVudCxcbiAgICBPVGFibGVDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgICBPVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgT1RhYmxlRXhwYW5kZWRGb290ZXJEaXJlY3RpdmUsXG4gICAgT01hdFNvcnRNb2R1bGUsXG4gICAgT1RhYmxlRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICAgIE9UYWJsZVJvd0NsYXNzUGlwZSxcbiAgICAuLi5PX1RBQkxFX0hFQURFUl9DT01QT05FTlRTX0VYUE9SVEVELFxuICAgIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlMsXG4gICAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlMsXG4gICAgLi4uT19UQUJMRV9GT09URVJfQ09NUE9ORU5UUyxcbiAgICBPVGFibGVSb3dFeHBhbmRhYmxlQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIE9UYWJsZUV4cG9ydEJ1dHRvblNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBNYXRQYWdpbmF0b3JJbnRsLCB1c2VDbGFzczogT1RhYmxlTWF0UGFnaW5hdG9ySW50bCB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlTW9kdWxlIHsgfVxuIl19
|
|
@@ -16,9 +16,9 @@ export class OTreeMenuComponent {
|
|
|
16
16
|
this.onSelectCheckboxChange.emit(event.checked);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
OTreeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
20
|
-
OTreeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
19
|
+
OTreeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
OTreeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTreeMenuComponent, selector: "o-tree-menu", inputs: { selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"] }, outputs: { onSelectCheckboxChange: "onSelectCheckboxChange" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n <mat-checkbox (change)=\"toggleShowCheckbox($event)\" [(ngModel)]=\"selectAllCheckboxVisible\">\n {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n </mat-checkbox>\n </span>\n</mat-menu>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeMenuComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
23
|
args: [{ selector: 'o-tree-menu', changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
|
|
24
24
|
'selectAllCheckbox: select-all-checkbox',
|
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
30
30
|
type: ViewChild,
|
|
31
31
|
args: ['menu', { static: true }]
|
|
32
32
|
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS9oZWFkZXIvdHJlZS1tZW51L28tdHJlZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvaGVhZGVyL3RyZWUtbWVudS9vLXRyZWUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFnQkUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUUxQiwyQkFBc0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQU0zRTtJQUpDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7O2dIQVhVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLHFZQ2pCL0IsOFVBT0E7NEZEVWEsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTSxVQUN2Qzt3QkFDTix3Q0FBd0M7d0JBQ3hDLHVEQUF1RDtxQkFDeEQsV0FDUTt3QkFDUCx3QkFBd0I7cUJBQ3pCOzhCQUlELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdHJlZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdHJlZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogW1xuICAgICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG4gICAgJ3NlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlJyxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICdvblNlbGVjdENoZWNrYm94Q2hhbmdlJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9UcmVlTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtYXRNZW51OiBNYXRNZW51O1xuXG4gIHNlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBvblNlbGVjdENoZWNrYm94Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdG9nZ2xlU2hvd0NoZWNrYm94KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMub25TZWxlY3RDaGVja2JveENoYW5nZS5lbWl0KGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbn1cblxuXG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeC1wb3NpdGlvbj1cImJlZm9yZVwiIGNsYXNzPVwiby10cmVlLW1lbnUgby1tYXQtbWVudVwiPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwic2VsZWN0QWxsQ2hlY2tib3hcIj5cbiAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwidG9nZ2xlU2hvd0NoZWNrYm94KCRldmVudClcIiAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGVcIj5cbiAgICAgIHt7ICdUUkVFLkJVVFRPTlMuU0VMRUNUJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9zcGFuPlxuPC9tYXQtbWVudT5cbiJdfQ==
|
|
@@ -35,9 +35,9 @@ export class OTreeDao {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
OTreeDao.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
39
|
-
OTreeDao.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
38
|
+
OTreeDao.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeDao, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
OTreeDao.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeDao });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeDao, decorators: [{
|
|
41
41
|
type: Injectable
|
|
42
42
|
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLWRhby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS9vLXRyZWUtZGFvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFFBQVE7SUFEckI7UUFFWSxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFHN0MsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFHakQsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRXJDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7S0E0QjdDO0lBaENDLElBQUksSUFBSSxLQUFZLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBTW5ELFlBQVksQ0FBQyxJQUFnQjtRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsR0FBWTtRQUMvQixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7WUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDOztzR0FyQ1UsUUFBUTswR0FBUixRQUFROzRGQUFSLFFBQVE7a0JBRHBCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9UcmVlRmxhdE5vZGUgfSBmcm9tICcuL28tdHJlZS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT1RyZWVEYW8ge1xuICBwcm90ZWN0ZWQgX2lzTG9hZGluZ1Jlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmdUaW1lcjtcbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBkYXRhIGhhcyBiZWVuIG1vZGlmaWVkLiAqL1xuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICBzcWxUeXBlc0NoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0Pih7fSk7XG4gIGdldCBkYXRhKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTsgfVxuXG4gIHJvb3RMZXZlbE5vZGVzOiBPVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgLyoqIE1hcCBmcm9tIGZsYXQgbm9kZSB0byBuZXN0ZWQgbm9kZS4gVGhpcyBoZWxwcyB1cyBmaW5kaW5nIHRoZSBuZXN0ZWQgbm9kZSB0byBiZSBtb2RpZmllZCAqL1xuICBmbGF0Tm9kZU1hcCA9IG5ldyBNYXA8T1RyZWVGbGF0Tm9kZSwgYW55PigpO1xuXG4gIHNldERhdGFBcnJheShkYXRhOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XG4gICAgcmV0dXJuIG9mKGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlzTG9hZGluZ1Jlc3VsdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHM7XG4gIH1cblxuICBzZXQgaXNMb2FkaW5nUmVzdWx0cyh2YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLmNsZWFuVGltZXIoKTtcbiAgICAgIHRoaXMubG9hZGluZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHMgPSB2YWw7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuVGltZXIoKTtcbiAgICAgIHRoaXMuX2lzTG9hZGluZ1Jlc3VsdHMgPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFuVGltZXIoKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZ1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZXIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -471,8 +471,8 @@ export class OTreeComponent extends AbstractOServiceComponent {
|
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
|
-
OTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
475
|
-
OTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTreeComponent, selector: "o-tree", inputs: { oattr: ["attr", "oattr"], service: "service", entity: "entity", columns: "columns", keys: "keys", parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], insertButton: ["insert-button", "insertButton"], refreshButton: ["refresh-button", "refreshButton"], deleteButton: ["delete-button", "deleteButton"], visibleColumns: ["visible-columns", "visibleColumns"], selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], separator: "separator", parentColumn: ["parent-column", "parentColumn"], sortColumn: ["sort-column", "sortColumn"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"], filterCaseSensitive: ["filter-case-sensitive", "filterCaseSensitive"], quickFilter: ["quick-filter", "quickFilter"], quickFilterPlaceholder: ["quick-filter-placeholder", "quickFilterPlaceholder"], quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], detailMode: ["detail-mode", "detailMode"], detailFormRoute: ["detail-form-route", "detailFormRoute"], showButtonsText: ["show-buttons-text", "showButtonsText"], rootTitle: ["root-title", "rootTitle"], recursive: "recursive", route: "route" }, outputs: { onNodeSelected: "onNodeSelected", onNodeExpanded: "onNodeExpanded", onNodeCollapsed: "onNodeCollapsed", onLoadNextLevel: "onLoadNextLevel", onDataLoaded: "onDataLoaded" }, host: { properties: { "class.o-tree": "true" } }, providers: [OTreeDao], queries: [{ propertyName: "leafNodeTemplate", first: true, predicate: ["leafNodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "parentNodeTemplate", first: true, predicate: ["parentNodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "nodeTemplate", first: true, predicate: ["nodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "treeNode", first: true, predicate: i0.forwardRef(function () { return OTreeNodeComponent; }) }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" fxFlex>\n\n <div *ngIf=\"hasControls()\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n <div class=\"buttons\">\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n\n <button *ngIf=\"insertButton\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'INSERT' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"refreshButton\" type=\"button\" mat-stroked-button aria-label=\"Refresh\" (click)=\"reloadData()\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n\n </ng-container>\n\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton\" type=\"button\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button *ngIf=\"refreshButton\" type=\"button\" mat-icon-button aria-label=\"Refresh\" (click)=\"reloadData()\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n\n <ng-content select=\"[o-tree-button]\"></ng-content>\n </div>\n <div fxFlex>\n <span fxLayoutAlign=\"center center\" class=\"title\">{{ title | oTranslate }}</span>\n </div>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" appearance=\"outline\" float-label=\"never\" show-menu=\"no\">\n </o-search-input>\n <button type=\"button\" *ngIf=\"showTreeMenuButton\" mat-icon-button class=\"o-tree-menu-button\" [matMenuTriggerFor]=\"treeMenu.matMenu\"\n (click)=\"$event.stopPropagation()\">\n <mat-icon svgIcon=\"ontimize:more_vert\"></mat-icon>\n </button>\n <o-tree-menu #treeMenu [select-all-checkbox]=\"selectAllCheckbox\" [select-all-checkbox-visible]=\"selectAllCheckboxVisible\"\n (onSelectCheckboxChange)=\"onSelectCheckboxChange($event)\"></o-tree-menu>\n\n </div>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" (click)=\"leafNodeClicked($event,node)\" matTreeNodeToggle matTreeNodePadding>\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n\n <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\">\n <div class=\"node-wrapper\">\n <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\" [checked]=\"checklistSelection.isSelected(node)\"\n (click)=\"checkboxClicked($event)\" (change)=\"todoLeafItemSelectionToggle(node)\">\n </mat-checkbox>\n <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #simpleLeafNodeTpl>\n <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </ng-template>\n\n </mat-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" (click)=\"parentNodeClicked($event, node)\" matTreeNodePadding>\n <button mat-icon-button [attr.aria-label]=\"'toggle ' + node.label\" matTreeNodeToggle (click)=\"onClickToggleButton($event, node)\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\">\n <div class=\"node-wrapper\">\n <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\" (click)=\"checkboxClicked($event)\"\n (change)=\"todoItemSelectionToggle(node)\" [checked]=\"descendantsAllSelected(node)\" [indeterminate]=\"descendantsPartiallySelected(node)\">\n </mat-checkbox>\n <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #simpleParentNodeTpl>\n <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </ng-template>\n </mat-tree-node>\n </mat-tree>\n</div>\n\n<ng-template let-node #leafNodeFulltemplate>\n <ng-container *ngIf=\"leafNodeTemplate; else defaultLeafNodeTpl\" [ngTemplateOutlet]=\"leafNodeTemplate\"\n [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n </ng-container>\n\n <ng-template #defaultLeafNodeTpl>\n {{node.label}}\n </ng-template>\n</ng-template>\n\n<ng-template let-node #parentNodeFulltemplate>\n <ng-container *ngIf=\"parentNodeTemplate; else defaultParentNodeTpl\" [ngTemplateOutlet]=\"parentNodeTemplate\"\n [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n </ng-container>\n\n <ng-template #defaultParentNodeTpl>\n <span>{{node.label}}</span>\n <mat-progress-bar *ngIf=\"node.isLoading\" mode=\"indeterminate\" fxFlex></mat-progress-bar>\n </ng-template>\n</ng-template>\n", styles: [".o-tree .mat-mdc-progress-bar{margin-left:30px}.o-tree .node-wrapper{align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i9.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i9.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i9.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i9.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i10.OTreeMenuComponent, selector: "o-tree-menu", inputs: ["select-all-checkbox", "select-all-checkbox-visible"], outputs: ["onSelectCheckboxChange"] }, { kind: "pipe", type: i11.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
474
|
+
OTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
475
|
+
OTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTreeComponent, selector: "o-tree", inputs: { oattr: ["attr", "oattr"], service: "service", entity: "entity", columns: "columns", keys: "keys", parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], insertButton: ["insert-button", "insertButton"], refreshButton: ["refresh-button", "refreshButton"], deleteButton: ["delete-button", "deleteButton"], visibleColumns: ["visible-columns", "visibleColumns"], selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], separator: "separator", parentColumn: ["parent-column", "parentColumn"], sortColumn: ["sort-column", "sortColumn"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"], filterCaseSensitive: ["filter-case-sensitive", "filterCaseSensitive"], quickFilter: ["quick-filter", "quickFilter"], quickFilterPlaceholder: ["quick-filter-placeholder", "quickFilterPlaceholder"], quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], detailMode: ["detail-mode", "detailMode"], detailFormRoute: ["detail-form-route", "detailFormRoute"], showButtonsText: ["show-buttons-text", "showButtonsText"], rootTitle: ["root-title", "rootTitle"], recursive: "recursive", route: "route" }, outputs: { onNodeSelected: "onNodeSelected", onNodeExpanded: "onNodeExpanded", onNodeCollapsed: "onNodeCollapsed", onLoadNextLevel: "onLoadNextLevel", onDataLoaded: "onDataLoaded" }, host: { properties: { "class.o-tree": "true" } }, providers: [OTreeDao], queries: [{ propertyName: "leafNodeTemplate", first: true, predicate: ["leafNodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "parentNodeTemplate", first: true, predicate: ["parentNodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "nodeTemplate", first: true, predicate: ["nodeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "treeNode", first: true, predicate: i0.forwardRef(function () { return OTreeNodeComponent; }) }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" fxFlex>\n\n <div *ngIf=\"hasControls()\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n <div class=\"buttons\">\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n\n <button *ngIf=\"insertButton\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'INSERT' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"refreshButton\" type=\"button\" mat-stroked-button aria-label=\"Refresh\" (click)=\"reloadData()\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n\n </ng-container>\n\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton\" type=\"button\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button *ngIf=\"refreshButton\" type=\"button\" mat-icon-button aria-label=\"Refresh\" (click)=\"reloadData()\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n\n <ng-content select=\"[o-tree-button]\"></ng-content>\n </div>\n <div fxFlex>\n <span fxLayoutAlign=\"center center\" class=\"title\">{{ title | oTranslate }}</span>\n </div>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" appearance=\"outline\" float-label=\"never\" show-menu=\"no\">\n </o-search-input>\n <button type=\"button\" *ngIf=\"showTreeMenuButton\" mat-icon-button class=\"o-tree-menu-button\" [matMenuTriggerFor]=\"treeMenu.matMenu\"\n (click)=\"$event.stopPropagation()\">\n <mat-icon svgIcon=\"ontimize:more_vert\"></mat-icon>\n </button>\n <o-tree-menu #treeMenu [select-all-checkbox]=\"selectAllCheckbox\" [select-all-checkbox-visible]=\"selectAllCheckboxVisible\"\n (onSelectCheckboxChange)=\"onSelectCheckboxChange($event)\"></o-tree-menu>\n\n </div>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" (click)=\"leafNodeClicked($event,node)\" matTreeNodeToggle matTreeNodePadding>\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n\n <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\">\n <div class=\"node-wrapper\">\n <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\" [checked]=\"checklistSelection.isSelected(node)\"\n (click)=\"checkboxClicked($event)\" (change)=\"todoLeafItemSelectionToggle(node)\">\n </mat-checkbox>\n <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #simpleLeafNodeTpl>\n <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </ng-template>\n\n </mat-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" (click)=\"parentNodeClicked($event, node)\" matTreeNodePadding>\n <button mat-icon-button [attr.aria-label]=\"'toggle ' + node.label\" matTreeNodeToggle (click)=\"onClickToggleButton($event, node)\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\">\n <div class=\"node-wrapper\">\n <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\" (click)=\"checkboxClicked($event)\"\n (change)=\"todoItemSelectionToggle(node)\" [checked]=\"descendantsAllSelected(node)\" [indeterminate]=\"descendantsPartiallySelected(node)\">\n </mat-checkbox>\n <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #simpleParentNodeTpl>\n <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n </ng-container>\n </ng-template>\n </mat-tree-node>\n </mat-tree>\n</div>\n\n<ng-template let-node #leafNodeFulltemplate>\n <ng-container *ngIf=\"leafNodeTemplate; else defaultLeafNodeTpl\" [ngTemplateOutlet]=\"leafNodeTemplate\"\n [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n </ng-container>\n\n <ng-template #defaultLeafNodeTpl>\n {{node.label}}\n </ng-template>\n</ng-template>\n\n<ng-template let-node #parentNodeFulltemplate>\n <ng-container *ngIf=\"parentNodeTemplate; else defaultParentNodeTpl\" [ngTemplateOutlet]=\"parentNodeTemplate\"\n [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n </ng-container>\n\n <ng-template #defaultParentNodeTpl>\n <span>{{node.label}}</span>\n <mat-progress-bar *ngIf=\"node.isLoading\" mode=\"indeterminate\" fxFlex></mat-progress-bar>\n </ng-template>\n</ng-template>\n", styles: [".o-tree .mat-mdc-progress-bar{margin-left:30px}.o-tree .node-wrapper{align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i9.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i9.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i9.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i9.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i10.OTreeMenuComponent, selector: "o-tree-menu", inputs: ["select-all-checkbox", "select-all-checkbox-visible"], outputs: ["onSelectCheckboxChange"] }, { kind: "pipe", type: i11.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
476
476
|
__decorate([
|
|
477
477
|
BooleanInputConverter(),
|
|
478
478
|
__metadata("design:type", Boolean)
|
|
@@ -497,7 +497,7 @@ __decorate([
|
|
|
497
497
|
BooleanInputConverter(),
|
|
498
498
|
__metadata("design:type", Boolean)
|
|
499
499
|
], OTreeComponent.prototype, "recursive", void 0);
|
|
500
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeComponent, decorators: [{
|
|
501
501
|
type: Component,
|
|
502
502
|
args: [{ selector: 'o-tree', inputs: DEFAULT_INPUTS_O_TREE, outputs: DEFAULT_OUTPUTS_O_TREE, encapsulation: ViewEncapsulation.None, host: {
|
|
503
503
|
'[class.o-tree]': 'true'
|
|
@@ -520,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
520
520
|
type: ContentChild,
|
|
521
521
|
args: [forwardRef(() => OTreeNodeComponent), { descendants: false }]
|
|
522
522
|
}] } });
|
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFP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OzBCQStIbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzRDQWpFdEQsYUFBYSxNQUViLFlBQVksTUFFWixlQUFlLE1BT2Ysd0JBQXdCLE1BRXhCLGlCQUFpQixNQUVqQixTQUFTLE1Bb0JULGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUl0RSxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3BFLFlBQVk7c0JBRGYsWUFBWTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBU2xFLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPVHJlZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tdHJlZS1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBTZXJ2aWNlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3NlcnZpY2UudXRpbHMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vby1zZXJ2aWNlLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPVHJlZURhbyB9IGZyb20gJy4vby10cmVlLWRhby5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmVlRGF0YVNvdXJjZSB9IGZyb20gJy4vby10cmVlLmRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgT1RyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE9UcmVlRmxhdE5vZGUgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXIsXG4gIHJvb3ROb2RlPzogYm9vbGVhbixcbiAgZXhwYW5kYWJsZTogYm9vbGVhbixcbiAgdHJlZU5vZGU/OiBPVHJlZU5vZGVDb21wb25lbnQsXG4gIGRhdGE6IGFueTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgcm91dGU/OiBzdHJpbmdcblxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UUkVFID0gW1xuICAvLyBhdHRyIFtzdHJpbmddOiBsaXN0IGlkZW50aWZpZXIuIEl0IGlzIG1hbmRhdG9yeSBpZiBkYXRhIGFyZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBkYXRhIGF0dHJpYnV0ZS4gRGVmYXVsdDogZW50aXR5IChpZiBzZXQpLlxuICAnb2F0dHI6IGF0dHInLFxuXG4gIC8vIHNlcnZpY2UgW3N0cmluZ106IEpFRSBzZXJ2aWNlIHBhdGguIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnc2VydmljZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBjb2x1bW5zIFtzdHJpbmddOiBjb2x1bW5zIG9mIHRoZSBlbnRpdHksIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnY29sdW1ucycsXG5cbiAgLy8ga2V5cyBbc3RyaW5nXTogZW50aXR5IGtleXMsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAna2V5cycsXG5cbiAgLy8gcGFyZW50LWtleXMgW3N0cmluZ106IHBhcmVudCBrZXlzIHRvIGZpbHRlciwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdwYXJlbnRLZXlzOiBwYXJlbnQta2V5cycsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gaW5zZXJ0LWJ1dHRvbiBbbm98eWVzXTogc2hvdyBpbnNlcnQgYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdpbnNlcnRCdXR0b246IGluc2VydC1idXR0b24nLFxuXG4gIC8vIHJlZnJlc2gtYnV0dG9uIFtub3x5ZXNdOiBzaG93IHJlZnJlc2ggYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdyZWZyZXNoQnV0dG9uOiByZWZyZXNoLWJ1dHRvbicsXG5cbiAgLy8gZGVsZXRlLWJ1dHRvbiBbbm98eWVzXTogc2hvdyBkZWxldGUgYnV0dG9uIHdoZW4gdXNlciBzZWxlY3QgaXRlbXMuIERlZmF1bHQ6IHllcy5cbiAgJ2RlbGV0ZUJ1dHRvbjogZGVsZXRlLWJ1dHRvbicsXG5cbiAgLy8gRU5EIE9GIERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9DT01QT05FTlRcbiAgJ3Zpc2libGVDb2x1bW5zOiB2aXNpYmxlLWNvbHVtbnMnLFxuICAnc2VsZWN0QWxsQ2hlY2tib3g6IHNlbGVjdC1hbGwtY2hlY2tib3gnLFxuICAnc2VwYXJhdG9yJyxcbiAgJ3BhcmVudENvbHVtbjogcGFyZW50LWNvbHVtbicsXG4gICdzb3J0Q29sdW1uOiBzb3J0LWNvbHVtbicsXG4gIC8vIHNlbGVjdC1hbGwtY2hlY2tib3gtdmlzaWJsZSBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHNlbGVjdGlvbiBjaGVjayBib3hlcy5EZWZhdWx0OiBuby5cbiAgJ3NlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlJyxcbiAgLy8gZmlsdGVyIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHdoZXRoZXIgZmlsdGVyIGlzIGNhc2Ugc2Vuc2l0aXZlLiBEZWZhdWx0OiBuby5cbiAgJ2ZpbHRlckNhc2VTZW5zaXRpdmU6IGZpbHRlci1jYXNlLXNlbnNpdGl2ZScsXG4gIC8vIHF1aWNrLWZpbHRlciBbbm98eWVzXTogc2hvdyBxdWljayBmaWx0ZXIuIERlZmF1bHQ6IHllcy5cbiAgJ3F1aWNrRmlsdGVyOiBxdWljay1maWx0ZXInLFxuICAvLyBxdWljay1maWx0ZXItcGxhY2Vob2xkZXI6IHF1aWNrIGZpbHRlciBwbGFjZWhvbGRlclxuICAncXVpY2tGaWx0ZXJQbGFjZWhvbGRlcjogcXVpY2stZmlsdGVyLXBsYWNlaG9sZGVyJyxcbiAgLy8gcXVpY2stZmlsdGVyLWNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGZpbHRlciwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWlja0ZpbHRlckNvbHVtbnM6IHF1aWNrLWZpbHRlci1jb2x1bW5zJyxcbiAgLy8gZGV0YWlsLW1vZGUgW25vbmV8Y2xpY2t8ZG91YmxlY2xpY2tdOiB3YXkgdG8gb3BlbiB0aGUgZGV0YWlsIGZvcm0gb2YgYSByb3cuIERlZmF1bHQ6ICdjbGljaycuXG4gICdkZXRhaWxNb2RlOiBkZXRhaWwtbW9kZScsXG4gIC8vIGRldGFpbC1mb3JtLXJvdXRlIFtzdHJpbmddOiByb3V0ZSBvZiBkZXRhaWwgZm9ybS4gRGVmYXVsdDogJ2RldGFpbCcuXG4gICdkZXRhaWxGb3JtUm91dGU6IGRldGFpbC1mb3JtLXJvdXRlJyxcbiAgLy8gc2hvdy1idXR0b25zLXRleHQgW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyB0ZXh0IG9mIGhlYWRlciBidXR0b25zLiBEZWZhdWx0OiB5ZXMuXG4gICdzaG93QnV0dG9uc1RleHQ6IHNob3ctYnV0dG9ucy10ZXh0JyxcbiAgJ3Jvb3RUaXRsZTogcm9vdC10aXRsZScsXG4gICdyZWN1cnNpdmUnLFxuICAncm91dGUnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVFJFRSA9IFsnb25Ob2RlU2VsZWN0ZWQnLCAnb25Ob2RlRXhwYW5kZWQnLCAnb25Ob2RlQ29sbGFwc2VkJywgJ29uTG9hZE5leHRMZXZlbCcsICdvbkRhdGFMb2FkZWQnXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdHJlZS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVFJFRSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVFJFRSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10cmVlXSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtPVHJlZURhb11cbn0pXG5leHBvcnQgY2xhc3MgT1RyZWVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50PE9UcmVlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBnZXRMZXZlbCA9IChub2RlOiBPVHJlZUZsYXROb2RlKSA9PiBub2RlLmxldmVsO1xuXG4gIGlzRXhwYW5kYWJsZSA9IChub2RlOiBPVHJlZUZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgZ2V0Q2hpbGRyZW4gPSAobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGFueSA9PiB7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWN1cnNpdmVDaGlsZHJlbk5vZGUobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyZWVOb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHJlZU5vZGVDaGlsZHJlbihub2RlOiBPVHJlZUZsYXROb2RlKTogYW55IHtcbiAgICBpZiAobm9kZS5sZXZlbCA9PT0gMCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnJvb3RUaXRsZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3ROb2RlcztcbiAgICB9IGVsc2UgaWYgKG5vZGUudHJlZU5vZGUpIHtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChub2RlLnRyZWVOb2RlLnJvb3RUaXRsZSkgJiYgIVV0aWwuaXNEZWZpbmVkKG5vZGUucm9vdE5vZGUpKSB7XG4gICAgICAgIGxldCByb290Tm9kZTogT1RyZWVGbGF0Tm9kZSA9IHtcbiAgICAgICAgICBpZDogdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoICsgMSwgcm9vdE5vZGU6IHRydWUsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG5vZGUudHJlZU5vZGUucm9vdFRpdGxlKSwgbGV2ZWw6IG5vZGUubGV2ZWwgKyAxLCBleHBhbmRhYmxlOiB0cnVlLCBkYXRhOiBub2RlLmRhdGEsIGlzTG9hZGluZzogZmFsc2UsIHRyZWVOb2RlOiBub2RlLnRyZWVOb2RlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5zZXQocm9vdE5vZGUsIG5vZGUpO1xuICAgICAgICByZXR1cm4gW3Jvb3ROb2RlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBub2RlLnRyZWVOb2RlLmNoaWxkUXVlcnlEYXRhKG5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZHJlTm9kZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtW3RoaXMucGFyZW50S2V5c10gPT09IG5vZGVbdGhpcy5rZXlzXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVjdXJzaXZlQ2hpbGRyZW5Ob2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIGlmIChub2RlLmxldmVsID09PSAwICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucm9vdFRpdGxlKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZFF1ZXJ5RGF0YShub2RlKTtcbiAgICB9XG5cbiAgfVxuICBnZXRDb21wb25lbnRGaWx0ZXIoZXhpc3RpbmdGaWx0ZXI6IGFueSA9IHt9KTogYW55IHtcbiAgICBsZXQgZmlsdGVyID0gZXhpc3RpbmdGaWx0ZXI7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlICYmIHRoaXMucGFyZW50Q29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcmVudEl0ZW1FeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkZyb21PYmplY3QoZmlsdGVyKTtcbiAgICAgIGNvbnN0IHBhcmVudE5vdE51bGxFeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbklzTnVsbCh0aGlzLnBhcmVudENvbHVtbik7XG4gICAgICBjb25zdCBmaWx0ZXJFeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkQ29tcGxleEV4cHJlc3Npb24ocGFyZW50SXRlbUV4cHIsIHBhcmVudE5vdE51bGxFeHByLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfQU5EKTtcbiAgICAgIGZpbHRlciA9IHt9O1xuICAgICAgZmlsdGVyW0ZpbHRlckV4cHJlc3Npb25VdGlscy5GSUxURVJfRVhQUkVTU0lPTl9LRVldID0gZmlsdGVyRXhwcjtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmdldENvbXBvbmVudEZpbHRlcihmaWx0ZXIpO1xuICB9XG5cbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZURhdGE6IE9UcmVlRmxhdE5vZGUpID0+IF9ub2RlRGF0YS5leHBhbmRhYmxlO1xuXG4gIGhhc05vQ29udGVudCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogT1RyZWVGbGF0Tm9kZSkgPT4gX25vZGVEYXRhLmxhYmVsID09PSAnJztcblxuXG4gIGRhdGFTb3VyY2U6IE9UcmVlRGF0YVNvdXJjZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHZpc2libGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlcGFyYXRvcjogc3RyaW5nID0gQ29kZXMuSFlQSEVOX1NFUEFSQVRPUjtcbiAgcGFyZW50Q29sdW1uOiBzdHJpbmc7XG4gIHNvcnRDb2x1bW46IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfcXVpY2tGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG4gIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuXG4gIGNoaWxkcmVOb2RlczogT1RyZWVGbGF0Tm9kZVtdID0gW107XG4gIG5vZGVzQXJyYXk6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBhbmNlc3RvcnM6IGFueVtdID0gW107XG4gIGNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxPVHJlZUZsYXROb2RlPih0cnVlLCBbXSwgdHJ1ZSwgKHNtMSwgc20yKSA9PiBzbTEuaWQgPT09IHNtMi5pZCk7XG5cbiAgb25Ob2RlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbk5vZGVFeHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTG9hZE5leHRMZXZlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJvb3RUaXRsZTogc3RyaW5nO1xuICByb290Tm9kZXM6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBkYW9UcmVlOiBPVHJlZURhbztcblxuICBAQ29udGVudENoaWxkKCdsZWFmTm9kZVRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBsZWFmTm9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3BhcmVudE5vZGVUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcGFyZW50Tm9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHRyZWVGbGF0dGVuZXI6IGFueTtcbiAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxPVHJlZUZsYXROb2RlLCBPVHJlZUZsYXROb2RlPjtcblxuICBAQ29udGVudENoaWxkKCdub2RlVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBub2RlVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5sZWFmTm9kZVRlbXBsYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLnBhcmVudE5vZGVUZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBPVHJlZU5vZGVDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICB0cmVlTm9kZSE6IE9UcmVlTm9kZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgdmlzaWJsZUNvbHVtbnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGVuYWJsZWREZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwdWJsaWMgcm91dGU6IHN0cmluZztcbiAgZ2V0IHNob3dUcmVlTWVudUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0aWNPcHQgPSB0aGlzLnNlbGVjdEFsbENoZWNrYm94O1xuICAgIHJldHVybiBzdGF0aWNPcHQ7XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudFxuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWxSZWYsIGZvcm0pO1xuICAgIHRoaXMuZGFvVHJlZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmVlRGFvKVxuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRyZWVDb250cm9sKCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUGFyYW1zKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gKHRoaXMuZW5hYmxlZERlbGV0ZUJ1dHRvbiA9ICF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhbygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVEYW8oKSB7XG5cbiAgICBpZiAodGhpcy5zdGF0aWNEYXRhKSB7XG4gICAgICB0aGlzLnF1ZXJ5T25CaW5kID0gZmFsc2U7XG4gICAgICB0aGlzLnF1ZXJ5T25Jbml0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNldERhdGFBcnJheSh0aGlzLnN0YXRpY0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplUGFyYW1zKCk6IHZvaWQge1xuICAgIC8vIElmIHZpc2libGUtY29sdW1ucyBpcyBub3QgcHJlc2VudCB0aGVuIHZpc2libGUtY29sdW1ucyBpcyBhbGwgY29sdW1uc1xuICAgIGlmICghdGhpcy52aXNpYmxlQ29sdW1ucykge1xuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB9XG5cbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMgPSB0aGlzLnZpc2libGVDb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy52aXNpYmxlQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLCB0cnVlKTtcbiAgICB0aGlzLnNldERhdGFzb3VyY2UoKTtcbiAgICB0aGlzLmFmdGVyVmlld0luaXQoKTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJUcmVlTm9kZShvVHJlZU5vZGU6IE9UcmVlTm9kZUNvbXBvbmVudCkge1xuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKVxuICB9XG5cbiAgY2hlY2tib3hDbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgbGVhZk5vZGVDbGlja2VkKGV2ZW50OiBFdmVudCwgbm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMubm9kZUNsaWNrZWQobm9kZSwgZXZlbnQpO1xuICB9XG5cbiAgcGFyZW50Tm9kZUNsaWNrZWQoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5ub2RlQ2xpY2tlZChub2RlLCBldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbm9kZUNsaWNrZWQobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5kZXRhaWxNb2RlICE9PSBDb2Rlcy5ERVRBSUxfTU9ERV9OT05FICYmICF0aGlzLmlzUm9vdE5vZGUobm9kZSkpIHtcbiAgICAgIC8qXG4gICAgICBTZSBwb2RyaWEgbWVqb3JhciBsbGFtYW5kbyB0aGlzLnZpZXdEZXRhaWwobm9kZS5kYXRhKTtcbiAgICAgIHNpIGFsbWFjZW5hbW9zIGVsIG5vZG8sIGFjdHVhbG1lbnRlIHNlIGVzdGEgYWxtYWNlbmFuZG8gc2kgZXhpc3RlIHVuIHRyZWUtbm9kZSBoaWpvXG4gICAgICAqL1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvVmlld0RldGFpbChub2RlKTtcbiAgICB9XG4gIH1cblxuICBpc1Jvb3ROb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQobm9kZS5yb290Tm9kZSkgJiYgbm9kZS5yb290Tm9kZTtcbiAgfVxuXG4gIG9uQ2xpY2tUb2dnbGVCdXR0b24oZXZlbnQ6IEV2ZW50LCBub2RlKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSkge1xuICAgICAgdGhpcy5vbk5vZGVFeHBhbmRlZC5lbWl0KG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uTm9kZUNvbGxhcHNlZC5lbWl0KG5vZGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgKiBUb2dnbGUgdGhlIG5vZGUsIHJlbW92ZSBmcm9tIGRpc3BsYXkgbGlzdFxuICAqL1xuICB0b2dnbGVOb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUsIGV4cGFuZDogYm9vbGVhbikge1xuICAgIG5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAoZXhwYW5kICYmIG5vZGUuZXhwYW5kYWJsZSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgaWYgKFV0aWwuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUobm9kZSwgY2hpbGRyZW4sIGV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZUFzeW5jVHJlZShjaGlsZHJlbiwgbm9kZSwgZXhwYW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUobm9kZSwgW10sIGV4cGFuZCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFzeW5jVHJlZShjaGlsZHJlbjogYW55LCBub2RlOiBPVHJlZUZsYXROb2RlLCBleHBhbmQ6IGJvb2xlYW4pIHtcbiAgICBjaGlsZHJlbi5zdWJzY3JpYmUoKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgIGRhdGEgPSBVdGlsLmlzQXJyYXkoYXJyRGF0YSkgPyBhcnJEYXRhIDogW107XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBkYXRhLCBleHBhbmQpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICBub2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKSkge1xuICAgICAgICB0aGlzLnF1ZXJ5RmFsbGJhY2tGdW5jdGlvbihlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyLm9wZW5FcnJvckRpYWxvZyhlcnIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKiBUb2dnbGUgYSBsZWFmIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBDaGVjayBhbGwgdGhlIHBhcmVudHMgdG8gc2VlIGlmIHRoZXkgY2hhbmdlZCAqL1xuICB0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMudG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZSk7XG4gIH1cblxuICAvKiogVG9nZ2xlIHRoZSB0by1kbyBpdGVtIHNlbGVjdGlvbi4gU2VsZWN0L2Rlc2VsZWN0IGFsbCB0aGUgZGVzY2VuZGFudHMgbm9kZSAqL1xuICB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xuXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSlcbiAgICAgID8gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KC4uLmRlc2NlbmRhbnRzKVxuICAgICAgOiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCguLi5kZXNjZW5kYW50cyk7XG5cbiAgICAvLyBGb3JjZSB1cGRhdGUgZm9yIHRoZSBwYXJlbnRcbiAgICBkZXNjZW5kYW50cy5ldmVyeSgoY2hpbGQpID0+IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICB0aGlzLm9uTm9kZVNlbGVjdGVkLmVtaXQobm9kZS5kYXRhKTtcblxuXG4gIH1cblxuXG4gIC8qKiBXaGV0aGVyIGFsbCB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIG5vZGUgYXJlIHNlbGVjdGVkLiAqL1xuICBkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcbiAgICBsZXQgZGVzY0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcblxuICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSAmJiBkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlc2NBbGxTZWxlY3RlZCA9IGRlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxuICAgICAgICApO1xuICAgICAgICBkZXNjQWxsU2VsZWN0ZWQgPyB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSkgOiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcbiAgICAgICAgcmV0dXJuIGRlc2NBbGxTZWxlY3RlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXG4gIGRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcbiAgICBpZiAobm9kZS5leHBhbmRhYmxlKSB7XG4gICAgICBpZiAoZGVzY2VuZGFudHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQgPSBkZXNjZW5kYW50cy5zb21lKChjaGlsZCkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0ICYmICF0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSk7XG5cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIHNldFRyZWVDb250cm9sKCkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50cmVlQ29udHJvbCkpIHtcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPE9UcmVlRmxhdE5vZGU+KHRoaXMuZ2V0TGV2ZWwsIHRoaXMuaXNFeHBhbmRhYmxlKTtcbiAgICB9XG4gIH1cbiAgLyoqICovXG5cbiAgcHJvdGVjdGVkIHNldERhdGFzb3VyY2UoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgT1RyZWVEYXRhU291cmNlKHRoaXMsIHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuaW5qZWN0b3IpO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZXMobm9kZTogT1RyZWVGbGF0Tm9kZSwgaW5kZXg6IG51bWJlciwgdHJlZTogT1RyZWVGbGF0Tm9kZVtdKTogT1RyZWVGbGF0Tm9kZVtdIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQobm9kZSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBjb25zdCBleGlzdGluZ05vZGUgPSB0cmVlLmZpbmRJbmRleCh4ID0+IHhbJ2lkJ10gPT09IHBhcmVudE5vZGVbJ2lkJ10pID4gLTE7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocGFyZW50Tm9kZSkpIHtcbiAgICAgICAgaWYgKCFleGlzdGluZ05vZGUpIHtcbiAgICAgICAgICAvL2lmIG5vdCBleGlzdCBub2RlIGluIHRyZWUgdGhlbiwgYWRkIHBhcmVudCBiZWZvcmUgbm9kZVxuICAgICAgICAgIHRyZWUuc3BsaWNlKGluZGV4LCAwLCBwYXJlbnROb2RlKVxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFBhcmVudE5vZGVzKHBhcmVudE5vZGUsIGluZGV4LCB0cmVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvL2lmIG5vdCBleGlzdCBub2RlIGluIHRyZWUgdGhlbiwgYWRkIHBhcmVudCBiZWZvcmUgbm9kZVxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFBhcmVudE5vZGVzKHBhcmVudE5vZGUsIGluZGV4LCB0cmVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckRhdGEodmFsdWU/OiBzdHJpbmcsIGxvYWRNb3JlPzogYm9vbGVhbik6IHZvaWQge1xuXG4gICAgbGV0IGZpbHRlcmVkVHJlZURhdGEgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGZvciAobGV0IFtuZXN0ZWROb2RlXSBvZiB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXApIHtcbiAgICAgICAgaWYgKG5lc3RlZE5vZGUubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJlZFRyZWVEYXRhLnB1c2gobmVzdGVkTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICB3aGlsZSAoaW5kZXggPCBmaWx0ZXJlZFRyZWVEYXRhLmxlbmd0aCkge1xuICAgICAgICBsZXQgbm9kZSA9IGZpbHRlcmVkVHJlZURhdGFbaW5kZXhdO1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlcyA9IHRoaXMuZ2V0UGFyZW50Tm9kZXMobm9kZSwgaW5kZXgsIGZpbHRlcmVkVHJlZURhdGEpO1xuICAgICAgICBpZiAoIVV0aWwuaXNBcnJheUVtcHR5KHBhcmVudE5vZGVzKSkge1xuICAgICAgICAgIGZpbHRlcmVkVHJlZURhdGEgPSBwYXJlbnROb2RlcztcbiAgICAgICAgfVxuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBmaWx0ZXJlZFRyZWVEYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJlZFRyZWVEYXRhID0gdGhpcy5kYXRhUmVzcG9uc2VBcnJheTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KGZpbHRlcmVkVHJlZURhdGEpO1xuICAgIH1cblxuXG4gICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBsZXQgcm9vdE5vZGVzID0gZmlsdGVyZWRUcmVlRGF0YS5maWx0ZXIobm9kZSA9PiBub2RlLmxldmVsID09IDApO1xuICAgICAgdGhpcy5leHBhbmROb2Rlc1dpdGhOb2Rlcyhyb290Tm9kZXMpO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiBFeHBhbmRzIG5vZGVzIHdpdGggbm9kZXNcbiAgICogQHBhcmFtIHRyZWVEYXRhXG4gICAqL1xuICBleHBhbmROb2Rlc1dpdGhOb2Rlcyh0cmVlRGF0YTogT1RyZWVGbGF0Tm9kZVtdKSB7XG4gICAgdHJlZURhdGEuZmlsdGVyKG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgICAgaWYgKGRlc2NlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gICAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaXRoTm9kZXMoZGVzY2VuZGFudHMpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICAqIEdldHMgZGF0YSB0cmVlXG4gICAgKiBAcmV0dXJuc1xuICAgICovXG4gIGdldERhdGFBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYW9UcmVlLmRhdGE7XG4gIH1cblxuICBzZXREYXRhQXJyYXkoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmNsZWFyKCk7XG4gICAgdGhpcy5kYW9UcmVlLnNldERhdGFBcnJheShkYXRhKTtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIHRoaXMuY2hpbGRyZU5vZGVzID0gZGF0YS5maWx0ZXIoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dICE9IG51bGxcbiAgICAgICk7XG4gICAgICB0aGlzLnJvb3ROb2RlcyA9IGRhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiAhVXRpbC5pc0RlZmluZWQoaXRlbVt0aGlzLnBhcmVudENvbHVtbl0pIHx8IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dID09PSBudWxsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucm9vdE5vZGVzID0gZGF0YTtcblxuICAgIGxldCBsZXZlbCA9IDA7XG4gICAgbGV0IHJvb3ROb2RlOiBPVHJlZUZsYXROb2RlO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnJvb3RUaXRsZSkpIHtcbiAgICAgIGxldmVsID0gKzE7XG4gICAgICByb290Tm9kZSA9IHsgaWQ6IDAsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMucm9vdFRpdGxlKSwgcm9vdE5vZGU6IHRydWUsIGxldmVsOiAwLCBleHBhbmRhYmxlOiB0cnVlLCBkYXRhOiB7fSwgaXNMb2FkaW5nOiBmYWxzZSB9O1xuICAgICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLnNldChyb290Tm9kZSwgbnVsbCk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFtyb290Tm9kZV07XG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChyb290Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5yb290Tm9kZXMubWFwKG5vZGUgPT4gdGhpcy50cmFuc2Zvcm1lcihub2RlLCBsZXZlbCkpO1xuICAgIH1cblxuICB9XG5cbiAgdHJhbnNmb3JtZXIgPSAobm9kZTogYW55LCBsZXZlbDogbnVtYmVyLCBwYXJlbnROb2RlPzogYW55KSA9PiB7XG5cbiAgICBjb25zdCBub2RlQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVOb2Rlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dID09PSBub2RlW3RoaXMua2V5c10pO1xuICAgIGNvbnN0IGZsYXROb2RlOiBPVHJlZUZsYXROb2RlID1cbiAgICB7XG4gICAgICAnaWQnOiB0aGlzLmdldE5vZGVJZChub2RlLCBwYXJlbnROb2RlKSxcbiAgICAgICdsYWJlbCc6IHRoaXMuZ2V0SXRlbVRleHQobm9kZSksXG4gICAgICAnbGV2ZWwnOiBsZXZlbCxcbiAgICAgIHRyZWVOb2RlOiB0aGlzLnRyZWVOb2RlLFxuICAgICAgJ2V4cGFuZGFibGUnOiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRyZWVOb2RlKSB8fCAhIW5vZGVDaGlsZHJlbj8ubGVuZ3RoIHx8IHRoaXMucmVjdXJzaXZlLFxuICAgICAgJ2RhdGEnOiBub2RlLFxuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuICAgICAgJ3JvdXRlJzogdGhpcy5yb3V0ZVxuICAgIH07XG5cbiAgICB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBwYXJlbnROb2RlKTtcblxuICAgIC8vcmVjdXJzaXZlXG4gICAgbm9kZUNoaWxkcmVuLmZvckVhY2gobm9kZSA9PiB0aGlzLnRyYW5zZm9ybWVyKG5vZGUsIGxldmVsICsgMSkpO1xuICAgIHJldHVybiBmbGF0Tm9kZTtcblxuXG4gIH1cblxuICBvblNlbGVjdENoZWNrYm94Q2hhbmdlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IHZpc2libGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydChhcnJheTogT1RyZWVGbGF0Tm9kZVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydENvbHVtbiAhPSBudWxsKSB7XG4gICAgICBhcnJheS5zb3J0KChhLCBiKSA9PlxuICAgICAgICBhLmRhdGFbdGhpcy5zb3J0Q29sdW1uXS5sb2NhbGVDb21wYXJlKGIuZGF0YVt0aGlzLnNvcnRDb2x1bW5dKVxuICAgICAgKTtcbiAgICAgIGFycmF5XG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSlcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMuc29ydCh0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1UZXh0KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnNBcnJheVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBpdGVtW2NvbF0gIT0gbnVsbCAmJiBgJHtpdGVtW2NvbF19YC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pXG4gICAgICAuam9pbih0aGlzLnNlcGFyYXRvcik7XG4gIH1cblxuICBnZXRJdGVtS2V5KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMua2V5c0FycmF5Lm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pLmpvaW4oJzsnKTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5UXVpY2tGaWx0ZXJDb2x1bW5zKFxuICAgIGl0ZW06IGFueSxcbiAgICBxdWlja2ZpbHRlcjogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNhc2VTZW5zaXRpdmUgPSB0aGlzLmlzRmlsdGVyQ2FzZVNlbnNpdGl2ZSgpO1xuICAgIGNvbnN0IHJlZ0V4cFN0ciA9IG5ldyBSZWdFeHAoXG4gICAgICBVdGlsLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXIoXG4gICAgICAgIFV0aWwubm9ybWFsaXplU3RyaW5nKHF1aWNrZmlsdGVyLCAhY2FzZVNlbnNpdGl2ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmdldFF1aWNrRmlsdGVyQ29sdW1ucygpLnNvbWUoKGNvbCkgPT5cbiAgICAgIHJlZ0V4cFN0ci50ZXN0KFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0uZGF0YVtjb2xdICsgJycsICFjYXNlU2Vuc2l0aXZlKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBzdXBlci5pbnNlcnREZXRhaWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROb2RlSWQoaXRlbTogYW55LCBwYXJlbnROb2RlOiBhbnkpIHtcbiAgICAvKiogcmV2aXNhcmxvOmlndWFsIGNvbiBpZCBpbmNyZW1lbnRhbCBlcmEgbWFzIGZhY2lsIGUgaWd1YWwgZGUgZWZpY2llbnRlICovXG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWQgKz0gaXRlbVtrZXldO1xuICAgIH0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnBhcmVudEtleXMpICYmIFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBpZCArPSBwYXJlbnROb2RlLmlkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmtleXMgKyAnOicgKyBpZDtcbiAgfVxuXG5cbiAgcHVibGljIGNoaWxkUXVlcnlEYXRhKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZT4gfCBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBxdWVyeU1ldGhvZE5hbWUgPSB0aGlzLnF1ZXJ5TWV0aG9kO1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSB8fCAhKHF1ZXJ5TWV0aG9kTmFtZSBpbiB0aGlzLmRhdGFTZXJ2aWNlKSB8fCAhdGhpcy5lbnRpdHkpIHtcbiAgICAgIHJldHVybiBvZih7IGRhdGE6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnRJdGVtID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRm9ybSh0aGlzLl9wS2V5c0VxdWl2LCB0aGlzLmZvcm0pO1xuICAgIGxldCBmaWx0ZXJcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIGZpbHRlciA9IHBhcmVudEl0ZW0gPz8ge307XG4gICAgICBmaWx0ZXJbdGhpcy5wYXJlbnRDb2x1bW5dID0gbm9kZS5kYXRhW3RoaXMua2V5c0FycmF5WzBdXVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIgPSBTZXJ2aWNlVXRpbHMuZ2V0RmlsdGVyVXNpbmdQYXJlbnRLZXlzKG5vZGUuZGF0YSwgbm9kZS50cmVlTm9kZS5fcEtleXNFcXVpdik7XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5QXJndW1lbnRzID0gW2ZpbHRlciwgdGhpcy5jb2xBcnJheSwgdGhpcy5lbnRpdHldO1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2VbcXVlcnlNZXRob2ROYW1lXSguLi5xdWVyeUFyZ3VtZW50cykgYXMgT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U+O1xuICB9XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRlVG9WaWV3RGV0YWlsKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobm9kZS5yb3V0ZSkpIHtcbiAgICAgIGxldCByb3V0ZSA9IHVuZGVmaW5lZDtcblxuICAgICAgbGV0IG5vZGVSb3V0ZSA9IG5vZGUucm91dGU7XG4gICAgICBsZXQgcm91dGVBcnJheSA9IG5vZGVSb3V0ZS5zcGxpdChDb2Rlcy5ST1VURV9TRVBBUkFUT1IpO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJvdXRlQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKHJvdXRlQXJyYXlbaV0uc3RhcnRzV2l0aChDb2Rlcy5ST1VURV9WQVJJQUJMRV9DSEFSKSkge1xuICAgICAgICAgIHJvdXRlQXJyYXlbaV0gPSBub2RlLmRhdGFbcm91dGVBcnJheVtpXS5zdWJzdHJpbmcoMSldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByb3V0ZSA9IHJvdXRlQXJyYXkuam9pbihDb2Rlcy5ST1VURV9TRVBBUkFUT1IpO1xuXG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGUpKSB7XG4gICAgICAgIGNvbnN0IGV4dHJhcyA9IHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdFJvdXRlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIGV4dHJhcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4PlxuXG4gIDxkaXYgKm5nSWY9XCJoYXNDb250cm9scygpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dCdXR0b25zVGV4dDtlbHNlIHNob3dCdXR0b25zV2l0aG91dFRleHRcIj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdJTlNFUlQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlZnJlc2hCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnUkVGUkVTSCcgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0RFTEVURScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluc2VydEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkluc2VydFwiIChjbGljayk9XCJhZGQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YWRkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlZnJlc2hCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLXRyZWUtYnV0dG9uXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZ4RmxleD5cbiAgICAgIDxzcGFuIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8by1zZWFyY2gtaW5wdXQgKm5nSWY9XCJxdWlja0ZpbHRlclwiIFtmaWx0ZXItY2FzZS1zZW5zaXRpdmVdPVwiZmlsdGVyQ2FzZVNlbnNpdGl2ZVwiIFtzaG93LWNhc2Utc2Vuc2l0aXZlLWNoZWNrYm94XT1cInNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKVwiXG4gICAgICBbY29sdW1uc109XCJxdWlja0ZpbHRlckNvbHVtbnNcIiBbcGxhY2Vob2xkZXJdPVwicXVpY2tGaWx0ZXJQbGFjZWhvbGRlclwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgZmxvYXQtbGFiZWw9XCJuZXZlclwiIHNob3ctbWVudT1cIm5vXCI+XG4gICAgPC9vLXNlYXJjaC1pbnB1dD5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dUcmVlTWVudUJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm8tdHJlZS1tZW51LWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0cmVlTWVudS5tYXRNZW51XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6bW9yZV92ZXJ0XCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8by10cmVlLW1lbnUgI3RyZWVNZW51IFtzZWxlY3QtYWxsLWNoZWNrYm94XT1cInNlbGVjdEFsbENoZWNrYm94XCIgW3NlbGVjdC1hbGwtY2hlY2tib3gtdmlzaWJsZV09XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGVcIlxuICAgICAgKG9uU2VsZWN0Q2hlY2tib3hDaGFuZ2UpPVwib25TZWxlY3RDaGVja2JveENoYW5nZSgkZXZlbnQpXCI+PC9vLXRyZWUtbWVudT5cblxuICA8L2Rpdj5cblxuICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiAoY2xpY2spPVwibGVhZk5vZGVDbGlja2VkKCRldmVudCxub2RlKVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZz5cbiAgICAgIDwhLS0gdXNlIGEgZGlzYWJsZWQgYnV0dG9uIHRvIHByb3ZpZGUgcGFkZGluZyBmb3IgdHJlZSBsZWFmIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQ+PC9idXR0b24+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlTGVhZk5vZGVUcGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtd3JhcHBlclwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlTGVhZk5vZGVUcGxcIiBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tib3hDbGlja2VkKCRldmVudClcIiAoY2hhbmdlKT1cInRvZG9MZWFmSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVhZk5vZGVGdWxsdGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVMZWFmTm9kZVRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWFmTm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGRcIiAoY2xpY2spPVwicGFyZW50Tm9kZUNsaWNrZWQoJGV2ZW50LCBub2RlKVwiIG1hdFRyZWVOb2RlUGFkZGluZz5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3RvZ2dsZSAnICsgbm9kZS5sYWJlbFwiIG1hdFRyZWVOb2RlVG9nZ2xlIChjbGljayk9XCJvbkNsaWNrVG9nZ2xlQnV0dG9uKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxuICAgICAgICAgIHt7dHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCd9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlUGFyZW50Tm9kZVRwbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS13cmFwcGVyXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCIgKGNsaWNrKT1cImNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZSlcIiBbY2hlY2tlZF09XCJkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpXCIgW2luZGV0ZXJtaW5hdGVdPVwiZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlUGFyZW50Tm9kZVRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwYXJlbnROb2RlRnVsbHRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZX1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgPC9tYXQtdHJlZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgbGV0LW5vZGUgI2xlYWZOb2RlRnVsbHRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGVhZk5vZGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TGVhZk5vZGVUcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWFmTm9kZVRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlLmRhdGF9XCI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExlYWZOb2RlVHBsPlxuICAgIHt7bm9kZS5sYWJlbH19XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW5vZGUgI3BhcmVudE5vZGVGdWxsdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnROb2RlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFBhcmVudE5vZGVUcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJwYXJlbnROb2RlVGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGUuZGF0YX1cIj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFyZW50Tm9kZVRwbD5cbiAgICA8c3Bhbj57e25vZGUubGFiZWx9fTwvc3Bhbj5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cIm5vZGUuaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBmeEZsZXg+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFP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OzBCQStIbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzRDQWpFdEQsYUFBYSxNQUViLFlBQVksTUFFWixlQUFlLE1BT2Ysd0JBQXdCLE1BRXhCLGlCQUFpQixNQUVqQixTQUFTLE1Bb0JULGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUl0RSxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3BFLFlBQVk7c0JBRGYsWUFBWTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBU2xFLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPVHJlZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tdHJlZS1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBTZXJ2aWNlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3NlcnZpY2UudXRpbHMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vby1zZXJ2aWNlLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPVHJlZURhbyB9IGZyb20gJy4vby10cmVlLWRhby5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmVlRGF0YVNvdXJjZSB9IGZyb20gJy4vby10cmVlLmRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgT1RyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE9UcmVlRmxhdE5vZGUgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXIsXG4gIHJvb3ROb2RlPzogYm9vbGVhbixcbiAgZXhwYW5kYWJsZTogYm9vbGVhbixcbiAgdHJlZU5vZGU/OiBPVHJlZU5vZGVDb21wb25lbnQsXG4gIGRhdGE6IGFueTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgcm91dGU/OiBzdHJpbmdcblxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UUkVFID0gW1xuICAvLyBhdHRyIFtzdHJpbmddOiBsaXN0IGlkZW50aWZpZXIuIEl0IGlzIG1hbmRhdG9yeSBpZiBkYXRhIGFyZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBkYXRhIGF0dHJpYnV0ZS4gRGVmYXVsdDogZW50aXR5IChpZiBzZXQpLlxuICAnb2F0dHI6IGF0dHInLFxuXG4gIC8vIHNlcnZpY2UgW3N0cmluZ106IEpFRSBzZXJ2aWNlIHBhdGguIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnc2VydmljZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBjb2x1bW5zIFtzdHJpbmddOiBjb2x1bW5zIG9mIHRoZSBlbnRpdHksIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnY29sdW1ucycsXG5cbiAgLy8ga2V5cyBbc3RyaW5nXTogZW50aXR5IGtleXMsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAna2V5cycsXG5cbiAgLy8gcGFyZW50LWtleXMgW3N0cmluZ106IHBhcmVudCBrZXlzIHRvIGZpbHRlciwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdwYXJlbnRLZXlzOiBwYXJlbnQta2V5cycsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gaW5zZXJ0LWJ1dHRvbiBbbm98eWVzXTogc2hvdyBpbnNlcnQgYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdpbnNlcnRCdXR0b246IGluc2VydC1idXR0b24nLFxuXG4gIC8vIHJlZnJlc2gtYnV0dG9uIFtub3x5ZXNdOiBzaG93IHJlZnJlc2ggYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdyZWZyZXNoQnV0dG9uOiByZWZyZXNoLWJ1dHRvbicsXG5cbiAgLy8gZGVsZXRlLWJ1dHRvbiBbbm98eWVzXTogc2hvdyBkZWxldGUgYnV0dG9uIHdoZW4gdXNlciBzZWxlY3QgaXRlbXMuIERlZmF1bHQ6IHllcy5cbiAgJ2RlbGV0ZUJ1dHRvbjogZGVsZXRlLWJ1dHRvbicsXG5cbiAgLy8gRU5EIE9GIERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9DT01QT05FTlRcbiAgJ3Zpc2libGVDb2x1bW5zOiB2aXNpYmxlLWNvbHVtbnMnLFxuICAnc2VsZWN0QWxsQ2hlY2tib3g6IHNlbGVjdC1hbGwtY2hlY2tib3gnLFxuICAnc2VwYXJhdG9yJyxcbiAgJ3BhcmVudENvbHVtbjogcGFyZW50LWNvbHVtbicsXG4gICdzb3J0Q29sdW1uOiBzb3J0LWNvbHVtbicsXG4gIC8vIHNlbGVjdC1hbGwtY2hlY2tib3gtdmlzaWJsZSBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHNlbGVjdGlvbiBjaGVjayBib3hlcy5EZWZhdWx0OiBuby5cbiAgJ3NlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlJyxcbiAgLy8gZmlsdGVyIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHdoZXRoZXIgZmlsdGVyIGlzIGNhc2Ugc2Vuc2l0aXZlLiBEZWZhdWx0OiBuby5cbiAgJ2ZpbHRlckNhc2VTZW5zaXRpdmU6IGZpbHRlci1jYXNlLXNlbnNpdGl2ZScsXG4gIC8vIHF1aWNrLWZpbHRlciBbbm98eWVzXTogc2hvdyBxdWljayBmaWx0ZXIuIERlZmF1bHQ6IHllcy5cbiAgJ3F1aWNrRmlsdGVyOiBxdWljay1maWx0ZXInLFxuICAvLyBxdWljay1maWx0ZXItcGxhY2Vob2xkZXI6IHF1aWNrIGZpbHRlciBwbGFjZWhvbGRlclxuICAncXVpY2tGaWx0ZXJQbGFjZWhvbGRlcjogcXVpY2stZmlsdGVyLXBsYWNlaG9sZGVyJyxcbiAgLy8gcXVpY2stZmlsdGVyLWNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGZpbHRlciwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWlja0ZpbHRlckNvbHVtbnM6IHF1aWNrLWZpbHRlci1jb2x1bW5zJyxcbiAgLy8gZGV0YWlsLW1vZGUgW25vbmV8Y2xpY2t8ZG91YmxlY2xpY2tdOiB3YXkgdG8gb3BlbiB0aGUgZGV0YWlsIGZvcm0gb2YgYSByb3cuIERlZmF1bHQ6ICdjbGljaycuXG4gICdkZXRhaWxNb2RlOiBkZXRhaWwtbW9kZScsXG4gIC8vIGRldGFpbC1mb3JtLXJvdXRlIFtzdHJpbmddOiByb3V0ZSBvZiBkZXRhaWwgZm9ybS4gRGVmYXVsdDogJ2RldGFpbCcuXG4gICdkZXRhaWxGb3JtUm91dGU6IGRldGFpbC1mb3JtLXJvdXRlJyxcbiAgLy8gc2hvdy1idXR0b25zLXRleHQgW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyB0ZXh0IG9mIGhlYWRlciBidXR0b25zLiBEZWZhdWx0OiB5ZXMuXG4gICdzaG93QnV0dG9uc1RleHQ6IHNob3ctYnV0dG9ucy10ZXh0JyxcbiAgJ3Jvb3RUaXRsZTogcm9vdC10aXRsZScsXG4gICdyZWN1cnNpdmUnLFxuICAncm91dGUnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVFJFRSA9IFsnb25Ob2RlU2VsZWN0ZWQnLCAnb25Ob2RlRXhwYW5kZWQnLCAnb25Ob2RlQ29sbGFwc2VkJywgJ29uTG9hZE5leHRMZXZlbCcsICdvbkRhdGFMb2FkZWQnXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdHJlZS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVFJFRSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVFJFRSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10cmVlXSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtPVHJlZURhb11cbn0pXG5leHBvcnQgY2xhc3MgT1RyZWVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50PE9UcmVlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBnZXRMZXZlbCA9IChub2RlOiBPVHJlZUZsYXROb2RlKSA9PiBub2RlLmxldmVsO1xuXG4gIGlzRXhwYW5kYWJsZSA9IChub2RlOiBPVHJlZUZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgZ2V0Q2hpbGRyZW4gPSAobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGFueSA9PiB7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWN1cnNpdmVDaGlsZHJlbk5vZGUobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyZWVOb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHJlZU5vZGVDaGlsZHJlbihub2RlOiBPVHJlZUZsYXROb2RlKTogYW55IHtcbiAgICBpZiAobm9kZS5sZXZlbCA9PT0gMCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnJvb3RUaXRsZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3ROb2RlcztcbiAgICB9IGVsc2UgaWYgKG5vZGUudHJlZU5vZGUpIHtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChub2RlLnRyZWVOb2RlLnJvb3RUaXRsZSkgJiYgIVV0aWwuaXNEZWZpbmVkKG5vZGUucm9vdE5vZGUpKSB7XG4gICAgICAgIGxldCByb290Tm9kZTogT1RyZWVGbGF0Tm9kZSA9IHtcbiAgICAgICAgICBpZDogdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoICsgMSwgcm9vdE5vZGU6IHRydWUsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG5vZGUudHJlZU5vZGUucm9vdFRpdGxlKSwgbGV2ZWw6IG5vZGUubGV2ZWwgKyAxLCBleHBhbmRhYmxlOiB0cnVlLCBkYXRhOiBub2RlLmRhdGEsIGlzTG9hZGluZzogZmFsc2UsIHRyZWVOb2RlOiBub2RlLnRyZWVOb2RlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5zZXQocm9vdE5vZGUsIG5vZGUpO1xuICAgICAgICByZXR1cm4gW3Jvb3ROb2RlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBub2RlLnRyZWVOb2RlLmNoaWxkUXVlcnlEYXRhKG5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZHJlTm9kZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtW3RoaXMucGFyZW50S2V5c10gPT09IG5vZGVbdGhpcy5rZXlzXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVjdXJzaXZlQ2hpbGRyZW5Ob2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIGlmIChub2RlLmxldmVsID09PSAwICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucm9vdFRpdGxlKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZFF1ZXJ5RGF0YShub2RlKTtcbiAgICB9XG5cbiAgfVxuICBnZXRDb21wb25lbnRGaWx0ZXIoZXhpc3RpbmdGaWx0ZXI6IGFueSA9IHt9KTogYW55IHtcbiAgICBsZXQgZmlsdGVyID0gZXhpc3RpbmdGaWx0ZXI7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlICYmIHRoaXMucGFyZW50Q29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcmVudEl0ZW1FeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkZyb21PYmplY3QoZmlsdGVyKTtcbiAgICAgIGNvbnN0IHBhcmVudE5vdE51bGxFeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbklzTnVsbCh0aGlzLnBhcmVudENvbHVtbik7XG4gICAgICBjb25zdCBmaWx0ZXJFeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkQ29tcGxleEV4cHJlc3Npb24ocGFyZW50SXRlbUV4cHIsIHBhcmVudE5vdE51bGxFeHByLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfQU5EKTtcbiAgICAgIGZpbHRlciA9IHt9O1xuICAgICAgZmlsdGVyW0ZpbHRlckV4cHJlc3Npb25VdGlscy5GSUxURVJfRVhQUkVTU0lPTl9LRVldID0gZmlsdGVyRXhwcjtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmdldENvbXBvbmVudEZpbHRlcihmaWx0ZXIpO1xuICB9XG5cbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZURhdGE6IE9UcmVlRmxhdE5vZGUpID0+IF9ub2RlRGF0YS5leHBhbmRhYmxlO1xuXG4gIGhhc05vQ29udGVudCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogT1RyZWVGbGF0Tm9kZSkgPT4gX25vZGVEYXRhLmxhYmVsID09PSAnJztcblxuXG4gIGRhdGFTb3VyY2U6IE9UcmVlRGF0YVNvdXJjZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHZpc2libGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlcGFyYXRvcjogc3RyaW5nID0gQ29kZXMuSFlQSEVOX1NFUEFSQVRPUjtcbiAgcGFyZW50Q29sdW1uOiBzdHJpbmc7XG4gIHNvcnRDb2x1bW46IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfcXVpY2tGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG4gIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuXG4gIGNoaWxkcmVOb2RlczogT1RyZWVGbGF0Tm9kZVtdID0gW107XG4gIG5vZGVzQXJyYXk6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBhbmNlc3RvcnM6IGFueVtdID0gW107XG4gIGNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxPVHJlZUZsYXROb2RlPih0cnVlLCBbXSwgdHJ1ZSwgKHNtMSwgc20yKSA9PiBzbTEuaWQgPT09IHNtMi5pZCk7XG5cbiAgb25Ob2RlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbk5vZGVFeHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTG9hZE5leHRMZXZlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJvb3RUaXRsZTogc3RyaW5nO1xuICByb290Tm9kZXM6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBkYW9UcmVlOiBPVHJlZURhbztcblxuICBAQ29udGVudENoaWxkKCdsZWFmTm9kZVRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBsZWFmTm9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3BhcmVudE5vZGVUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcGFyZW50Tm9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHRyZWVGbGF0dGVuZXI6IGFueTtcbiAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxPVHJlZUZsYXROb2RlLCBPVHJlZUZsYXROb2RlPjtcblxuICBAQ29udGVudENoaWxkKCdub2RlVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBub2RlVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5sZWFmTm9kZVRlbXBsYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLnBhcmVudE5vZGVUZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBPVHJlZU5vZGVDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICB0cmVlTm9kZSE6IE9UcmVlTm9kZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgdmlzaWJsZUNvbHVtbnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGVuYWJsZWREZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwdWJsaWMgcm91dGU6IHN0cmluZztcbiAgZ2V0IHNob3dUcmVlTWVudUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0aWNPcHQgPSB0aGlzLnNlbGVjdEFsbENoZWNrYm94O1xuICAgIHJldHVybiBzdGF0aWNPcHQ7XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudFxuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWxSZWYsIGZvcm0pO1xuICAgIHRoaXMuZGFvVHJlZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmVlRGFvKVxuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRyZWVDb250cm9sKCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUGFyYW1zKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gKHRoaXMuZW5hYmxlZERlbGV0ZUJ1dHRvbiA9ICF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhbygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVEYW8oKSB7XG5cbiAgICBpZiAodGhpcy5zdGF0aWNEYXRhKSB7XG4gICAgICB0aGlzLnF1ZXJ5T25CaW5kID0gZmFsc2U7XG4gICAgICB0aGlzLnF1ZXJ5T25Jbml0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNldERhdGFBcnJheSh0aGlzLnN0YXRpY0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplUGFyYW1zKCk6IHZvaWQge1xuICAgIC8vIElmIHZpc2libGUtY29sdW1ucyBpcyBub3QgcHJlc2VudCB0aGVuIHZpc2libGUtY29sdW1ucyBpcyBhbGwgY29sdW1uc1xuICAgIGlmICghdGhpcy52aXNpYmxlQ29sdW1ucykge1xuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB9XG5cbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMgPSB0aGlzLnZpc2libGVDb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy52aXNpYmxlQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLCB0cnVlKTtcbiAgICB0aGlzLnNldERhdGFzb3VyY2UoKTtcbiAgICB0aGlzLmFmdGVyVmlld0luaXQoKTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJUcmVlTm9kZShvVHJlZU5vZGU6IE9UcmVlTm9kZUNvbXBvbmVudCkge1xuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKVxuICB9XG5cbiAgY2hlY2tib3hDbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgbGVhZk5vZGVDbGlja2VkKGV2ZW50OiBFdmVudCwgbm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMubm9kZUNsaWNrZWQobm9kZSwgZXZlbnQpO1xuICB9XG5cbiAgcGFyZW50Tm9kZUNsaWNrZWQoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5ub2RlQ2xpY2tlZChub2RlLCBldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbm9kZUNsaWNrZWQobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5kZXRhaWxNb2RlICE9PSBDb2Rlcy5ERVRBSUxfTU9ERV9OT05FICYmICF0aGlzLmlzUm9vdE5vZGUobm9kZSkpIHtcbiAgICAgIC8qXG4gICAgICBTZSBwb2RyaWEgbWVqb3JhciBsbGFtYW5kbyB0aGlzLnZpZXdEZXRhaWwobm9kZS5kYXRhKTtcbiAgICAgIHNpIGFsbWFjZW5hbW9zIGVsIG5vZG8sIGFjdHVhbG1lbnRlIHNlIGVzdGEgYWxtYWNlbmFuZG8gc2kgZXhpc3RlIHVuIHRyZWUtbm9kZSBoaWpvXG4gICAgICAqL1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvVmlld0RldGFpbChub2RlKTtcbiAgICB9XG4gIH1cblxuICBpc1Jvb3ROb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQobm9kZS5yb290Tm9kZSkgJiYgbm9kZS5yb290Tm9kZTtcbiAgfVxuXG4gIG9uQ2xpY2tUb2dnbGVCdXR0b24oZXZlbnQ6IEV2ZW50LCBub2RlKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSkge1xuICAgICAgdGhpcy5vbk5vZGVFeHBhbmRlZC5lbWl0KG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uTm9kZUNvbGxhcHNlZC5lbWl0KG5vZGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgKiBUb2dnbGUgdGhlIG5vZGUsIHJlbW92ZSBmcm9tIGRpc3BsYXkgbGlzdFxuICAqL1xuICB0b2dnbGVOb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUsIGV4cGFuZDogYm9vbGVhbikge1xuICAgIG5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAoZXhwYW5kICYmIG5vZGUuZXhwYW5kYWJsZSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgaWYgKFV0aWwuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUobm9kZSwgY2hpbGRyZW4sIGV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZUFzeW5jVHJlZShjaGlsZHJlbiwgbm9kZSwgZXhwYW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUobm9kZSwgW10sIGV4cGFuZCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFzeW5jVHJlZShjaGlsZHJlbjogYW55LCBub2RlOiBPVHJlZUZsYXROb2RlLCBleHBhbmQ6IGJvb2xlYW4pIHtcbiAgICBjaGlsZHJlbi5zdWJzY3JpYmUoKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgIGRhdGEgPSBVdGlsLmlzQXJyYXkoYXJyRGF0YSkgPyBhcnJEYXRhIDogW107XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBkYXRhLCBleHBhbmQpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICBub2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKSkge1xuICAgICAgICB0aGlzLnF1ZXJ5RmFsbGJhY2tGdW5jdGlvbihlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyLm9wZW5FcnJvckRpYWxvZyhlcnIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKiBUb2dnbGUgYSBsZWFmIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBDaGVjayBhbGwgdGhlIHBhcmVudHMgdG8gc2VlIGlmIHRoZXkgY2hhbmdlZCAqL1xuICB0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMudG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZSk7XG4gIH1cblxuICAvKiogVG9nZ2xlIHRoZSB0by1kbyBpdGVtIHNlbGVjdGlvbi4gU2VsZWN0L2Rlc2VsZWN0IGFsbCB0aGUgZGVzY2VuZGFudHMgbm9kZSAqL1xuICB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xuXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSlcbiAgICAgID8gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KC4uLmRlc2NlbmRhbnRzKVxuICAgICAgOiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCguLi5kZXNjZW5kYW50cyk7XG5cbiAgICAvLyBGb3JjZSB1cGRhdGUgZm9yIHRoZSBwYXJlbnRcbiAgICBkZXNjZW5kYW50cy5ldmVyeSgoY2hpbGQpID0+IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICB0aGlzLm9uTm9kZVNlbGVjdGVkLmVtaXQobm9kZS5kYXRhKTtcblxuXG4gIH1cblxuXG4gIC8qKiBXaGV0aGVyIGFsbCB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIG5vZGUgYXJlIHNlbGVjdGVkLiAqL1xuICBkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcbiAgICBsZXQgZGVzY0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcblxuICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSAmJiBkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlc2NBbGxTZWxlY3RlZCA9IGRlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxuICAgICAgICApO1xuICAgICAgICBkZXNjQWxsU2VsZWN0ZWQgPyB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSkgOiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcbiAgICAgICAgcmV0dXJuIGRlc2NBbGxTZWxlY3RlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXG4gIGRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcbiAgICBpZiAobm9kZS5leHBhbmRhYmxlKSB7XG4gICAgICBpZiAoZGVzY2VuZGFudHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQgPSBkZXNjZW5kYW50cy5zb21lKChjaGlsZCkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0ICYmICF0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSk7XG5cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIHNldFRyZWVDb250cm9sKCkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50cmVlQ29udHJvbCkpIHtcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPE9UcmVlRmxhdE5vZGU+KHRoaXMuZ2V0TGV2ZWwsIHRoaXMuaXNFeHBhbmRhYmxlKTtcbiAgICB9XG4gIH1cbiAgLyoqICovXG5cbiAgcHJvdGVjdGVkIHNldERhdGFzb3VyY2UoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgT1RyZWVEYXRhU291cmNlKHRoaXMsIHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuaW5qZWN0b3IpO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZXMobm9kZTogT1RyZWVGbGF0Tm9kZSwgaW5kZXg6IG51bWJlciwgdHJlZTogT1RyZWVGbGF0Tm9kZVtdKTogT1RyZWVGbGF0Tm9kZVtdIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQobm9kZSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBjb25zdCBleGlzdGluZ05vZGUgPSB0cmVlLmZpbmRJbmRleCh4ID0+IHhbJ2lkJ10gPT09IHBhcmVudE5vZGVbJ2lkJ10pID4gLTE7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocGFyZW50Tm9kZSkpIHtcbiAgICAgICAgaWYgKCFleGlzdGluZ05vZGUpIHtcbiAgICAgICAgICAvL2lmIG5vdCBleGlzdCBub2RlIGluIHRyZWUgdGhlbiwgYWRkIHBhcmVudCBiZWZvcmUgbm9kZVxuICAgICAgICAgIHRyZWUuc3BsaWNlKGluZGV4LCAwLCBwYXJlbnROb2RlKVxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFBhcmVudE5vZGVzKHBhcmVudE5vZGUsIGluZGV4LCB0cmVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvL2lmIG5vdCBleGlzdCBub2RlIGluIHRyZWUgdGhlbiwgYWRkIHBhcmVudCBiZWZvcmUgbm9kZVxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFBhcmVudE5vZGVzKHBhcmVudE5vZGUsIGluZGV4LCB0cmVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckRhdGEodmFsdWU/OiBzdHJpbmcsIGxvYWRNb3JlPzogYm9vbGVhbik6IHZvaWQge1xuXG4gICAgbGV0IGZpbHRlcmVkVHJlZURhdGEgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGZvciAobGV0IFtuZXN0ZWROb2RlXSBvZiB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXApIHtcbiAgICAgICAgaWYgKG5lc3RlZE5vZGUubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJlZFRyZWVEYXRhLnB1c2gobmVzdGVkTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICB3aGlsZSAoaW5kZXggPCBmaWx0ZXJlZFRyZWVEYXRhLmxlbmd0aCkge1xuICAgICAgICBsZXQgbm9kZSA9IGZpbHRlcmVkVHJlZURhdGFbaW5kZXhdO1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlcyA9IHRoaXMuZ2V0UGFyZW50Tm9kZXMobm9kZSwgaW5kZXgsIGZpbHRlcmVkVHJlZURhdGEpO1xuICAgICAgICBpZiAoIVV0aWwuaXNBcnJheUVtcHR5KHBhcmVudE5vZGVzKSkge1xuICAgICAgICAgIGZpbHRlcmVkVHJlZURhdGEgPSBwYXJlbnROb2RlcztcbiAgICAgICAgfVxuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBmaWx0ZXJlZFRyZWVEYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJlZFRyZWVEYXRhID0gdGhpcy5kYXRhUmVzcG9uc2VBcnJheTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KGZpbHRlcmVkVHJlZURhdGEpO1xuICAgIH1cblxuXG4gICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBsZXQgcm9vdE5vZGVzID0gZmlsdGVyZWRUcmVlRGF0YS5maWx0ZXIobm9kZSA9PiBub2RlLmxldmVsID09IDApO1xuICAgICAgdGhpcy5leHBhbmROb2Rlc1dpdGhOb2Rlcyhyb290Tm9kZXMpO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiBFeHBhbmRzIG5vZGVzIHdpdGggbm9kZXNcbiAgICogQHBhcmFtIHRyZWVEYXRhXG4gICAqL1xuICBleHBhbmROb2Rlc1dpdGhOb2Rlcyh0cmVlRGF0YTogT1RyZWVGbGF0Tm9kZVtdKSB7XG4gICAgdHJlZURhdGEuZmlsdGVyKG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgICAgaWYgKGRlc2NlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gICAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaXRoTm9kZXMoZGVzY2VuZGFudHMpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICAqIEdldHMgZGF0YSB0cmVlXG4gICAgKiBAcmV0dXJuc1xuICAgICovXG4gIGdldERhdGFBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYW9UcmVlLmRhdGE7XG4gIH1cblxuICBzZXREYXRhQXJyYXkoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmNsZWFyKCk7XG4gICAgdGhpcy5kYW9UcmVlLnNldERhdGFBcnJheShkYXRhKTtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIHRoaXMuY2hpbGRyZU5vZGVzID0gZGF0YS5maWx0ZXIoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dICE9IG51bGxcbiAgICAgICk7XG4gICAgICB0aGlzLnJvb3ROb2RlcyA9IGRhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiAhVXRpbC5pc0RlZmluZWQoaXRlbVt0aGlzLnBhcmVudENvbHVtbl0pIHx8IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dID09PSBudWxsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucm9vdE5vZGVzID0gZGF0YTtcblxuICAgIGxldCBsZXZlbCA9IDA7XG4gICAgbGV0IHJvb3ROb2RlOiBPVHJlZUZsYXROb2RlO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnJvb3RUaXRsZSkpIHtcbiAgICAgIGxldmVsID0gKzE7XG4gICAgICByb290Tm9kZSA9IHsgaWQ6IDAsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMucm9vdFRpdGxlKSwgcm9vdE5vZGU6IHRydWUsIGxldmVsOiAwLCBleHBhbmRhYmxlOiB0cnVlLCBkYXRhOiB7fSwgaXNMb2FkaW5nOiBmYWxzZSB9O1xuICAgICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLnNldChyb290Tm9kZSwgbnVsbCk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFtyb290Tm9kZV07XG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChyb290Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5yb290Tm9kZXMubWFwKG5vZGUgPT4gdGhpcy50cmFuc2Zvcm1lcihub2RlLCBsZXZlbCkpO1xuICAgIH1cblxuICB9XG5cbiAgdHJhbnNmb3JtZXIgPSAobm9kZTogYW55LCBsZXZlbDogbnVtYmVyLCBwYXJlbnROb2RlPzogYW55KSA9PiB7XG5cbiAgICBjb25zdCBub2RlQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVOb2Rlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dID09PSBub2RlW3RoaXMua2V5c10pO1xuICAgIGNvbnN0IGZsYXROb2RlOiBPVHJlZUZsYXROb2RlID1cbiAgICB7XG4gICAgICAnaWQnOiB0aGlzLmdldE5vZGVJZChub2RlLCBwYXJlbnROb2RlKSxcbiAgICAgICdsYWJlbCc6IHRoaXMuZ2V0SXRlbVRleHQobm9kZSksXG4gICAgICAnbGV2ZWwnOiBsZXZlbCxcbiAgICAgIHRyZWVOb2RlOiB0aGlzLnRyZWVOb2RlLFxuICAgICAgJ2V4cGFuZGFibGUnOiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRyZWVOb2RlKSB8fCAhIW5vZGVDaGlsZHJlbj8ubGVuZ3RoIHx8IHRoaXMucmVjdXJzaXZlLFxuICAgICAgJ2RhdGEnOiBub2RlLFxuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuICAgICAgJ3JvdXRlJzogdGhpcy5yb3V0ZVxuICAgIH07XG5cbiAgICB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBwYXJlbnROb2RlKTtcblxuICAgIC8vcmVjdXJzaXZlXG4gICAgbm9kZUNoaWxkcmVuLmZvckVhY2gobm9kZSA9PiB0aGlzLnRyYW5zZm9ybWVyKG5vZGUsIGxldmVsICsgMSkpO1xuICAgIHJldHVybiBmbGF0Tm9kZTtcblxuXG4gIH1cblxuICBvblNlbGVjdENoZWNrYm94Q2hhbmdlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IHZpc2libGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydChhcnJheTogT1RyZWVGbGF0Tm9kZVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydENvbHVtbiAhPSBudWxsKSB7XG4gICAgICBhcnJheS5zb3J0KChhLCBiKSA9PlxuICAgICAgICBhLmRhdGFbdGhpcy5zb3J0Q29sdW1uXS5sb2NhbGVDb21wYXJlKGIuZGF0YVt0aGlzLnNvcnRDb2x1bW5dKVxuICAgICAgKTtcbiAgICAgIGFycmF5XG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSlcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMuc29ydCh0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1UZXh0KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnNBcnJheVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBpdGVtW2NvbF0gIT0gbnVsbCAmJiBgJHtpdGVtW2NvbF19YC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pXG4gICAgICAuam9pbih0aGlzLnNlcGFyYXRvcik7XG4gIH1cblxuICBnZXRJdGVtS2V5KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMua2V5c0FycmF5Lm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pLmpvaW4oJzsnKTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5UXVpY2tGaWx0ZXJDb2x1bW5zKFxuICAgIGl0ZW06IGFueSxcbiAgICBxdWlja2ZpbHRlcjogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNhc2VTZW5zaXRpdmUgPSB0aGlzLmlzRmlsdGVyQ2FzZVNlbnNpdGl2ZSgpO1xuICAgIGNvbnN0IHJlZ0V4cFN0ciA9IG5ldyBSZWdFeHAoXG4gICAgICBVdGlsLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXIoXG4gICAgICAgIFV0aWwubm9ybWFsaXplU3RyaW5nKHF1aWNrZmlsdGVyLCAhY2FzZVNlbnNpdGl2ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmdldFF1aWNrRmlsdGVyQ29sdW1ucygpLnNvbWUoKGNvbCkgPT5cbiAgICAgIHJlZ0V4cFN0ci50ZXN0KFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0uZGF0YVtjb2xdICsgJycsICFjYXNlU2Vuc2l0aXZlKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBzdXBlci5pbnNlcnREZXRhaWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROb2RlSWQoaXRlbTogYW55LCBwYXJlbnROb2RlOiBhbnkpIHtcbiAgICAvKiogcmV2aXNhcmxvOmlndWFsIGNvbiBpZCBpbmNyZW1lbnRhbCBlcmEgbWFzIGZhY2lsIGUgaWd1YWwgZGUgZWZpY2llbnRlICovXG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWQgKz0gaXRlbVtrZXldO1xuICAgIH0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnBhcmVudEtleXMpICYmIFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBpZCArPSBwYXJlbnROb2RlLmlkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmtleXMgKyAnOicgKyBpZDtcbiAgfVxuXG5cbiAgcHVibGljIGNoaWxkUXVlcnlEYXRhKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZT4gfCBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBxdWVyeU1ldGhvZE5hbWUgPSB0aGlzLnF1ZXJ5TWV0aG9kO1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSB8fCAhKHF1ZXJ5TWV0aG9kTmFtZSBpbiB0aGlzLmRhdGFTZXJ2aWNlKSB8fCAhdGhpcy5lbnRpdHkpIHtcbiAgICAgIHJldHVybiBvZih7IGRhdGE6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnRJdGVtID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRm9ybSh0aGlzLl9wS2V5c0VxdWl2LCB0aGlzLmZvcm0pO1xuICAgIGxldCBmaWx0ZXJcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIGZpbHRlciA9IHBhcmVudEl0ZW0gPz8ge307XG4gICAgICBmaWx0ZXJbdGhpcy5wYXJlbnRDb2x1bW5dID0gbm9kZS5kYXRhW3RoaXMua2V5c0FycmF5WzBdXVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIgPSBTZXJ2aWNlVXRpbHMuZ2V0RmlsdGVyVXNpbmdQYXJlbnRLZXlzKG5vZGUuZGF0YSwgbm9kZS50cmVlTm9kZS5fcEtleXNFcXVpdik7XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5QXJndW1lbnRzID0gW2ZpbHRlciwgdGhpcy5jb2xBcnJheSwgdGhpcy5lbnRpdHldO1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2VbcXVlcnlNZXRob2ROYW1lXSguLi5xdWVyeUFyZ3VtZW50cykgYXMgT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U+O1xuICB9XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRlVG9WaWV3RGV0YWlsKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobm9kZS5yb3V0ZSkpIHtcbiAgICAgIGxldCByb3V0ZSA9IHVuZGVmaW5lZDtcblxuICAgICAgbGV0IG5vZGVSb3V0ZSA9IG5vZGUucm91dGU7XG4gICAgICBsZXQgcm91dGVBcnJheSA9IG5vZGVSb3V0ZS5zcGxpdChDb2Rlcy5ST1VURV9TRVBBUkFUT1IpO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJvdXRlQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKHJvdXRlQXJyYXlbaV0uc3RhcnRzV2l0aChDb2Rlcy5ST1VURV9WQVJJQUJMRV9DSEFSKSkge1xuICAgICAgICAgIHJvdXRlQXJyYXlbaV0gPSBub2RlLmRhdGFbcm91dGVBcnJheVtpXS5zdWJzdHJpbmcoMSldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByb3V0ZSA9IHJvdXRlQXJyYXkuam9pbihDb2Rlcy5ST1VURV9TRVBBUkFUT1IpO1xuXG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGUpKSB7XG4gICAgICAgIGNvbnN0IGV4dHJhcyA9IHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdFJvdXRlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIGV4dHJhcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4PlxuXG4gIDxkaXYgKm5nSWY9XCJoYXNDb250cm9scygpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dCdXR0b25zVGV4dDtlbHNlIHNob3dCdXR0b25zV2l0aG91dFRleHRcIj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdJTlNFUlQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlZnJlc2hCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnUkVGUkVTSCcgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0RFTEVURScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluc2VydEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkluc2VydFwiIChjbGljayk9XCJhZGQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YWRkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlZnJlc2hCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLXRyZWUtYnV0dG9uXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZ4RmxleD5cbiAgICAgIDxzcGFuIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8by1zZWFyY2gtaW5wdXQgKm5nSWY9XCJxdWlja0ZpbHRlclwiIFtmaWx0ZXItY2FzZS1zZW5zaXRpdmVdPVwiZmlsdGVyQ2FzZVNlbnNpdGl2ZVwiIFtzaG93LWNhc2Utc2Vuc2l0aXZlLWNoZWNrYm94XT1cInNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKVwiXG4gICAgICBbY29sdW1uc109XCJxdWlja0ZpbHRlckNvbHVtbnNcIiBbcGxhY2Vob2xkZXJdPVwicXVpY2tGaWx0ZXJQbGFjZWhvbGRlclwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgZmxvYXQtbGFiZWw9XCJuZXZlclwiIHNob3ctbWVudT1cIm5vXCI+XG4gICAgPC9vLXNlYXJjaC1pbnB1dD5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dUcmVlTWVudUJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm8tdHJlZS1tZW51LWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0cmVlTWVudS5tYXRNZW51XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6bW9yZV92ZXJ0XCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8by10cmVlLW1lbnUgI3RyZWVNZW51IFtzZWxlY3QtYWxsLWNoZWNrYm94XT1cInNlbGVjdEFsbENoZWNrYm94XCIgW3NlbGVjdC1hbGwtY2hlY2tib3gtdmlzaWJsZV09XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGVcIlxuICAgICAgKG9uU2VsZWN0Q2hlY2tib3hDaGFuZ2UpPVwib25TZWxlY3RDaGVja2JveENoYW5nZSgkZXZlbnQpXCI+PC9vLXRyZWUtbWVudT5cblxuICA8L2Rpdj5cblxuICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiAoY2xpY2spPVwibGVhZk5vZGVDbGlja2VkKCRldmVudCxub2RlKVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZz5cbiAgICAgIDwhLS0gdXNlIGEgZGlzYWJsZWQgYnV0dG9uIHRvIHByb3ZpZGUgcGFkZGluZyBmb3IgdHJlZSBsZWFmIC0tPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQ+PC9idXR0b24+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlTGVhZk5vZGVUcGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtd3JhcHBlclwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlTGVhZk5vZGVUcGxcIiBbY2hlY2tlZF09XCJjaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tib3hDbGlja2VkKCRldmVudClcIiAoY2hhbmdlKT1cInRvZG9MZWFmSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVhZk5vZGVGdWxsdGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVMZWFmTm9kZVRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWFmTm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGRcIiAoY2xpY2spPVwicGFyZW50Tm9kZUNsaWNrZWQoJGV2ZW50LCBub2RlKVwiIG1hdFRyZWVOb2RlUGFkZGluZz5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3RvZ2dsZSAnICsgbm9kZS5sYWJlbFwiIG1hdFRyZWVOb2RlVG9nZ2xlIChjbGljayk9XCJvbkNsaWNrVG9nZ2xlQnV0dG9uKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxuICAgICAgICAgIHt7dHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCd9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGU7IGVsc2Ugc2ltcGxlUGFyZW50Tm9kZVRwbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS13cmFwcGVyXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCIgKGNsaWNrKT1cImNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZSlcIiBbY2hlY2tlZF09XCJkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpXCIgW2luZGV0ZXJtaW5hdGVdPVwiZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlUGFyZW50Tm9kZVRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwYXJlbnROb2RlRnVsbHRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZX1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgPC9tYXQtdHJlZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgbGV0LW5vZGUgI2xlYWZOb2RlRnVsbHRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGVhZk5vZGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TGVhZk5vZGVUcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWFmTm9kZVRlbXBsYXRlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlLmRhdGF9XCI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExlYWZOb2RlVHBsPlxuICAgIHt7bm9kZS5sYWJlbH19XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW5vZGUgI3BhcmVudE5vZGVGdWxsdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnROb2RlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFBhcmVudE5vZGVUcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJwYXJlbnROb2RlVGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGUuZGF0YX1cIj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFyZW50Tm9kZVRwbD5cbiAgICA8c3Bhbj57e25vZGUubGFiZWx9fTwvc3Bhbj5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cIm5vZGUuaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBmeEZsZXg+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|