ngx-tethys 18.0.8 → 18.1.0-next.1
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/CHANGELOG.md +19 -1
- package/action/action.component.d.ts +1 -2
- package/affix/affix.component.d.ts +2 -4
- package/alert/alert.component.d.ts +11 -19
- package/anchor/anchor-link.component.d.ts +2 -4
- package/anchor/anchor.component.d.ts +2 -7
- package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
- package/autocomplete/autocomplete.component.d.ts +1 -2
- package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
- package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
- package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
- package/avatar/avatar.component.d.ts +1 -3
- package/avatar/avatar.pipe.d.ts +0 -2
- package/back-top/back-top.component.d.ts +2 -4
- package/badge/badge.component.d.ts +2 -2
- package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
- package/breadcrumb/breadcrumb.component.d.ts +1 -2
- package/button/button.component.d.ts +1 -2
- package/calendar/calendar-header.component.d.ts +1 -2
- package/calendar/calendar.component.d.ts +1 -2
- package/carousel/carousel-item.directive.d.ts +1 -2
- package/carousel/carousel.component.d.ts +1 -4
- package/carousel/carousel.service.d.ts +1 -2
- package/cascader/cascader.component.d.ts +4 -4
- package/checkbox/checkbox.component.d.ts +0 -2
- package/collapse/collapse-item.component.d.ts +2 -4
- package/color-picker/color-picker-panel.component.d.ts +2 -3
- package/color-picker/color-picker.component.d.ts +2 -4
- package/color-picker/coordinates.directive.d.ts +1 -2
- package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
- package/color-picker/parts/hue/hue.component.d.ts +1 -2
- package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
- package/copy/copy.directive.d.ts +0 -2
- package/core/click-positioner.d.ts +0 -2
- package/core/scroll.d.ts +1 -2
- package/core/update-host-class.service.d.ts +1 -2
- package/date-picker/abstract-picker.component.d.ts +1 -1
- package/date-picker/abstract-picker.directive.d.ts +2 -3
- package/date-picker/base-picker.component.d.ts +2 -3
- package/date-picker/date-picker.component.d.ts +2 -2
- package/date-picker/date-picker.directive.d.ts +1 -3
- package/date-picker/date-picker.service.d.ts +2 -2
- package/date-picker/index.d.ts +26 -27
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
- package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
- package/date-picker/lib/date/date-header.component.d.ts +0 -3
- package/date-picker/lib/date/date-table-cell.component.d.ts +1 -1
- package/date-picker/lib/date/date-table.component.d.ts +1 -3
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
- package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
- package/date-picker/lib/month/month-header.component.d.ts +0 -3
- package/date-picker/lib/month/month-table.component.d.ts +1 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +1 -4
- package/date-picker/lib/popups/inner-popup.component.d.ts +0 -2
- package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
- package/date-picker/lib/year/year-header.component.d.ts +0 -1
- package/date-picker/month-picker.component.d.ts +2 -2
- package/date-picker/picker.component.d.ts +1 -3
- package/date-picker/picker.pipes.d.ts +0 -3
- package/date-picker/quarter-picker.component.d.ts +2 -2
- package/date-picker/range-picker.component.d.ts +2 -2
- package/date-picker/range-picker.directive.d.ts +2 -3
- package/date-picker/week-picker.component.d.ts +2 -2
- package/date-picker/year-picker.component.d.ts +2 -2
- package/date-range/date-range.component.d.ts +3 -11
- package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
- package/dialog/body/dialog-body.component.d.ts +0 -2
- package/dialog/confirm/confirm.component.d.ts +2 -3
- package/dialog/dialog-container.component.d.ts +4 -5
- package/dialog/dialog.service.d.ts +4 -4
- package/dialog/footer/dialog-footer.component.d.ts +2 -2
- package/dialog/header/dialog-header.component.d.ts +2 -6
- package/divider/divider.component.d.ts +8 -2
- package/dot/dot.component.d.ts +1 -2
- package/drag-drop/drag-content.directive.d.ts +2 -3
- package/drag-drop/drag-handle.directive.d.ts +2 -3
- package/drag-drop/drag.directive.d.ts +4 -5
- package/drag-drop/drop-container.directive.d.ts +6 -3
- package/dropdown/dropdown-active.directive.d.ts +3 -4
- package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
- package/dropdown/dropdown-submenu.component.d.ts +1 -3
- package/dropdown/dropdown.directive.d.ts +3 -5
- package/empty/empty.component.d.ts +6 -6
- package/esm2022/action/action.component.mjs +20 -21
- package/esm2022/affix/affix.component.mjs +11 -14
- package/esm2022/alert/alert.component.mjs +55 -81
- package/esm2022/anchor/anchor-link.component.mjs +23 -16
- package/esm2022/anchor/anchor.component.mjs +27 -24
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +25 -26
- package/esm2022/autocomplete/autocomplete.component.mjs +11 -11
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
- package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
- package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
- package/esm2022/avatar/avatar-list/avatar-list.component.mjs +4 -4
- package/esm2022/avatar/avatar.component.mjs +27 -28
- package/esm2022/avatar/avatar.pipe.mjs +6 -7
- package/esm2022/back-top/back-top.component.mjs +14 -18
- package/esm2022/badge/badge.component.mjs +8 -9
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
- package/esm2022/breadcrumb/breadcrumb.component.mjs +15 -17
- package/esm2022/button/button-icon.component.mjs +4 -4
- package/esm2022/button/button.component.mjs +15 -15
- package/esm2022/calendar/calendar-header.component.mjs +15 -15
- package/esm2022/calendar/calendar.component.mjs +14 -15
- package/esm2022/card/header.component.mjs +4 -4
- package/esm2022/carousel/carousel-item.directive.mjs +7 -6
- package/esm2022/carousel/carousel.component.mjs +13 -15
- package/esm2022/carousel/carousel.service.mjs +7 -9
- package/esm2022/cascader/cascader-li.component.mjs +4 -4
- package/esm2022/cascader/cascader-search-option.component.mjs +4 -4
- package/esm2022/cascader/cascader.component.mjs +15 -22
- package/esm2022/checkbox/checkbox.component.mjs +11 -13
- package/esm2022/collapse/collapse-item.component.mjs +21 -24
- package/esm2022/color-picker/color-picker-panel.component.mjs +14 -15
- package/esm2022/color-picker/color-picker.component.mjs +10 -11
- package/esm2022/color-picker/coordinates.directive.mjs +10 -10
- package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
- package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
- package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
- package/esm2022/comment/comment.component.mjs +4 -4
- package/esm2022/copy/copy.directive.mjs +8 -12
- package/esm2022/core/click-positioner.mjs +6 -7
- package/esm2022/core/scroll.mjs +7 -9
- package/esm2022/core/store/store.mjs +1 -1
- package/esm2022/core/update-host-class.service.mjs +6 -6
- package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
- package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
- package/esm2022/date-picker/base-picker.component.mjs +26 -26
- package/esm2022/date-picker/date-picker.component.mjs +10 -11
- package/esm2022/date-picker/date-picker.directive.mjs +6 -8
- package/esm2022/date-picker/date-picker.service.mjs +6 -10
- package/esm2022/date-picker/index.mjs +27 -28
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +7 -8
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
- package/esm2022/date-picker/lib/date/date-header.component.mjs +6 -12
- package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +4 -4
- package/esm2022/date-picker/lib/date/date-table.component.mjs +10 -12
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +16 -16
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +8 -11
- package/esm2022/date-picker/lib/decade/decade-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/month/month-header.component.mjs +6 -12
- package/esm2022/date-picker/lib/month/month-table.component.mjs +9 -10
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +14 -29
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +14 -20
- package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +9 -10
- package/esm2022/date-picker/lib/year/year-header.component.mjs +6 -12
- package/esm2022/date-picker/lib/year/year-table.component.mjs +4 -4
- package/esm2022/date-picker/month-picker.component.mjs +9 -11
- package/esm2022/date-picker/picker.component.mjs +24 -35
- package/esm2022/date-picker/picker.pipes.mjs +10 -11
- package/esm2022/date-picker/quarter-picker.component.mjs +9 -11
- package/esm2022/date-picker/range-picker.component.mjs +9 -11
- package/esm2022/date-picker/range-picker.directive.mjs +6 -8
- package/esm2022/date-picker/week-picker.component.mjs +9 -11
- package/esm2022/date-picker/year-picker.component.mjs +9 -11
- package/esm2022/date-range/date-range.component.mjs +17 -18
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +9 -13
- package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
- package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
- package/esm2022/dialog/dialog-container.component.mjs +13 -18
- package/esm2022/dialog/dialog.service.mjs +10 -17
- package/esm2022/dialog/footer/dialog-footer.component.mjs +10 -14
- package/esm2022/dialog/header/dialog-header.component.mjs +17 -22
- package/esm2022/divider/divider.component.mjs +21 -13
- package/esm2022/dot/dot.component.mjs +7 -7
- package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
- package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
- package/esm2022/drag-drop/drag.directive.mjs +13 -16
- package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
- package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
- package/esm2022/dropdown/dropdown-menu.component.mjs +11 -7
- package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
- package/esm2022/dropdown/dropdown.directive.mjs +12 -10
- package/esm2022/empty/empty.component.mjs +17 -20
- package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
- package/esm2022/form/form-group-error/form-group-error.component.mjs +12 -15
- package/esm2022/form/form-group-label.directive.mjs +9 -10
- package/esm2022/form/form-group.component.mjs +18 -22
- package/esm2022/form/form-submit.directive.mjs +6 -7
- package/esm2022/form/form-validator-loader.mjs +1 -1
- package/esm2022/form/form-validator.service.mjs +12 -13
- package/esm2022/form/form.directive.mjs +11 -16
- package/esm2022/form/from-group-footer/form-group-footer.component.mjs +13 -19
- package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
- package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
- package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
- package/esm2022/grid/thy-col.directive.mjs +9 -14
- package/esm2022/grid/thy-grid-item.component.mjs +8 -14
- package/esm2022/grid/thy-grid.component.mjs +7 -8
- package/esm2022/guider/guider-hint/guider-hint.component.mjs +4 -4
- package/esm2022/guider/guider.directive.mjs +8 -9
- package/esm2022/guider/guider.service.mjs +12 -19
- package/esm2022/icon/icon-registry.mjs +11 -16
- package/esm2022/icon/icon.component.mjs +8 -9
- package/esm2022/image/image-group.component.mjs +7 -7
- package/esm2022/image/image.directive.mjs +11 -12
- package/esm2022/image/image.service.mjs +8 -14
- package/esm2022/image/preview/image-preview.component.mjs +36 -41
- package/esm2022/input/input-count.component.mjs +7 -10
- package/esm2022/input/input-group.component.mjs +15 -16
- package/esm2022/input/input-search.component.mjs +9 -10
- package/esm2022/input/input.component.mjs +17 -17
- package/esm2022/input/input.directive.mjs +12 -17
- package/esm2022/input-number/input-number.component.mjs +6 -6
- package/esm2022/layout/header.component.mjs +4 -4
- package/esm2022/layout/sidebar-header.component.mjs +4 -4
- package/esm2022/layout/sidebar.component.mjs +125 -121
- package/esm2022/list/list-item-meta.component.mjs +4 -4
- package/esm2022/list/selection/selection-list.mjs +25 -25
- package/esm2022/loading/loading.component.mjs +10 -11
- package/esm2022/mention/mention.directive.mjs +9 -14
- package/esm2022/mention/suggestions/suggestions.component.mjs +11 -12
- package/esm2022/menu/group/menu-group.component.mjs +37 -38
- package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
- package/esm2022/menu/item/menu-item.component.mjs +8 -9
- package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
- package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
- package/esm2022/message/message-container.component.mjs +21 -15
- package/esm2022/message/message-queue.service.mjs +6 -8
- package/esm2022/message/message.component.mjs +9 -10
- package/esm2022/message/message.service.mjs +10 -11
- package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +4 -5
- package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
- package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
- package/esm2022/nav/nav-item.directive.mjs +8 -11
- package/esm2022/nav/nav.component.mjs +35 -38
- package/esm2022/nav/nav.pipe.mjs +6 -7
- package/esm2022/notify/notify-container.component.mjs +11 -14
- package/esm2022/notify/notify-queue.service.mjs +6 -8
- package/esm2022/notify/notify.component.mjs +10 -10
- package/esm2022/notify/notify.service.mjs +11 -12
- package/esm2022/pagination/pagination.component.mjs +41 -46
- package/esm2022/pagination/pagination.pipe.mjs +6 -7
- package/esm2022/popover/header/popover-header.component.mjs +15 -17
- package/esm2022/popover/popover-container.component.mjs +11 -13
- package/esm2022/popover/popover.directive.mjs +13 -12
- package/esm2022/popover/popover.service.mjs +14 -26
- package/esm2022/progress/progress-circle.component.mjs +4 -7
- package/esm2022/progress/progress-strip.component.mjs +10 -13
- package/esm2022/progress/progress.component.mjs +5 -8
- package/esm2022/property/property-item.component.mjs +13 -16
- package/esm2022/property-operation/property-operation.component.mjs +27 -28
- package/esm2022/radio/button/radio-button.component.mjs +9 -15
- package/esm2022/radio/group/radio-group.component.mjs +17 -17
- package/esm2022/radio/radio.component.mjs +12 -18
- package/esm2022/rate/rate.component.mjs +10 -10
- package/esm2022/resizable/resizable.directive.mjs +10 -12
- package/esm2022/resizable/resizable.service.mjs +7 -9
- package/esm2022/resizable/resize-handle.component.mjs +16 -14
- package/esm2022/resizable/resize-handles.component.mjs +12 -5
- package/esm2022/result/result.component.mjs +4 -4
- package/esm2022/segment/segment-item.component.mjs +15 -18
- package/esm2022/segment/segment.component.mjs +29 -30
- package/esm2022/select/custom-select/custom-select.component.mjs +19 -35
- package/esm2022/select/native-select/native-select.component.mjs +10 -11
- package/esm2022/shared/base-form-check.component.mjs +7 -8
- package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
- package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
- package/esm2022/shared/directives/thy-show.mjs +11 -11
- package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
- package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
- package/esm2022/shared/ng-transclude.directive.mjs +6 -5
- package/esm2022/shared/option/group/option-group.component.mjs +10 -10
- package/esm2022/shared/option/list-option/list-option.component.mjs +14 -22
- package/esm2022/shared/option/option.component.mjs +11 -22
- package/esm2022/shared/select/select-control/select-control.component.mjs +27 -27
- package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
- package/esm2022/skeleton/stylized/bullet-list.component.mjs +8 -9
- package/esm2022/skeleton/stylized/list.component.mjs +8 -9
- package/esm2022/skeleton/stylized/paragraph.component.mjs +8 -9
- package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
- package/esm2022/slide/slide-container.component.mjs +12 -16
- package/esm2022/slide/slide-header/slide-header.component.mjs +13 -14
- package/esm2022/slide/slide-ref.service.mjs +1 -1
- package/esm2022/slide/slide.service.mjs +8 -12
- package/esm2022/slider/slider.component.mjs +8 -8
- package/esm2022/space/space.component.mjs +16 -16
- package/esm2022/statistic/statistic.component.mjs +23 -23
- package/esm2022/stepper/step.component.mjs +6 -11
- package/esm2022/stepper/stepper-button.directive.mjs +10 -11
- package/esm2022/stepper/stepper.component.mjs +5 -5
- package/esm2022/strength/strength.component.mjs +11 -12
- package/esm2022/switch/switch.component.mjs +11 -11
- package/esm2022/table/table-column.component.mjs +58 -63
- package/esm2022/table/table-skeleton.component.mjs +35 -38
- package/esm2022/table/table.component.mjs +19 -29
- package/esm2022/tabs/tab-content.component.mjs +9 -9
- package/esm2022/tabs/tabs.component.mjs +22 -25
- package/esm2022/tag/tag.component.mjs +22 -22
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +12 -12
- package/esm2022/time-picker/time-picker-panel.component.mjs +31 -34
- package/esm2022/time-picker/time-picker.component.mjs +33 -43
- package/esm2022/timeline/timeline-item.component.mjs +15 -16
- package/esm2022/timeline/timeline.component.mjs +15 -16
- package/esm2022/tooltip/tooltip.component.mjs +17 -17
- package/esm2022/tooltip/tooltip.directive.mjs +11 -10
- package/esm2022/tooltip/tooltip.service.mjs +9 -13
- package/esm2022/transfer/transfer-list.component.mjs +9 -9
- package/esm2022/transfer/transfer.component.mjs +4 -4
- package/esm2022/tree/tree-node.component.mjs +16 -20
- package/esm2022/tree/tree.component.mjs +90 -96
- package/esm2022/tree-select/tree-select.component.mjs +28 -36
- package/esm2022/typography/bg-color.directive.mjs +9 -9
- package/esm2022/typography/text/text.component.mjs +3 -4
- package/esm2022/typography/text-color.directive.mjs +9 -9
- package/esm2022/upload/file-drop.directive.mjs +1 -1
- package/esm2022/upload/file-select-base.mjs +5 -6
- package/esm2022/upload/file-select.component.mjs +4 -3
- package/esm2022/upload/upload.service.mjs +6 -7
- package/esm2022/version.mjs +2 -2
- package/esm2022/vote/vote.component.mjs +4 -4
- package/esm2022/watermark/watermark.directive.mjs +12 -12
- package/fesm2022/ngx-tethys-action.mjs +20 -20
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +12 -14
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +54 -80
- package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +48 -35
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +25 -25
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +63 -75
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +32 -32
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +15 -18
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +8 -8
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +19 -21
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +16 -16
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +26 -26
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +3 -3
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +23 -24
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +19 -25
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +10 -11
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +20 -22
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +47 -45
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +3 -3
- package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +8 -12
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +14 -16
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +2872 -2924
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +24 -26
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +61 -77
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +20 -12
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +6 -6
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +49 -43
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +18 -18
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +74 -89
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +20 -29
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +20 -26
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +18 -22
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +60 -65
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +5 -5
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +53 -60
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +129 -124
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +27 -27
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +10 -10
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +19 -24
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +56 -57
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +47 -41
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +61 -72
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +31 -34
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +46 -51
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +51 -57
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +15 -24
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +27 -27
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +14 -14
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +33 -39
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +9 -9
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +43 -34
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +3 -3
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +41 -44
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +28 -44
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +135 -150
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +33 -47
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +33 -37
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +7 -7
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +16 -16
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +22 -22
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +17 -22
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +11 -11
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +10 -10
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +107 -124
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +29 -32
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +21 -21
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +70 -80
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +26 -26
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +35 -36
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +10 -10
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +29 -37
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +102 -110
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +18 -18
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +11 -12
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +3 -3
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +12 -12
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +1 -3
- package/form/form-group-error/form-group-error.component.d.ts +1 -3
- package/form/form-group-label.directive.d.ts +0 -2
- package/form/form-group.component.d.ts +1 -4
- package/form/form-submit.directive.d.ts +0 -2
- package/form/form-validator.service.d.ts +0 -2
- package/form/form.directive.d.ts +4 -4
- package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
- package/form/validator/unique-validator.directive.d.ts +1 -4
- package/fullscreen/fullscreen.component.d.ts +0 -2
- package/fullscreen/fullscreen.service.d.ts +0 -2
- package/grid/thy-col.directive.d.ts +1 -2
- package/grid/thy-grid-item.component.d.ts +2 -4
- package/grid/thy-grid.component.d.ts +1 -3
- package/guider/guider.directive.d.ts +1 -3
- package/guider/guider.service.d.ts +0 -7
- package/icon/icon-registry.d.ts +1 -3
- package/icon/icon.component.d.ts +1 -3
- package/image/image-group.component.d.ts +1 -2
- package/image/image.directive.d.ts +1 -3
- package/image/image.service.d.ts +2 -2
- package/image/preview/image-preview.component.d.ts +1 -4
- package/input/input-count.component.d.ts +3 -4
- package/input/input-group.component.d.ts +1 -3
- package/input/input-search.component.d.ts +2 -2
- package/input/input.component.d.ts +1 -2
- package/input/input.directive.d.ts +2 -3
- package/input-number/input-number.component.d.ts +2 -2
- package/layout/sidebar.component.d.ts +44 -13
- package/list/selection/selection-list.d.ts +1 -2
- package/loading/loading.component.d.ts +0 -2
- package/loading/styles/loading.scss +3 -1
- package/mention/mention.directive.d.ts +4 -5
- package/mention/suggestions/suggestions.component.d.ts +2 -3
- package/menu/group/menu-group.component.d.ts +30 -8
- package/menu/item/action/menu-item-action.component.d.ts +2 -3
- package/menu/item/menu-item.component.d.ts +1 -2
- package/message/abstract/abstract-message-container.component.d.ts +1 -2
- package/message/abstract/abstract-message.component.d.ts +2 -2
- package/message/message-container.component.d.ts +1 -3
- package/message/message-queue.service.d.ts +1 -2
- package/message/message.component.d.ts +1 -3
- package/message/message.service.d.ts +3 -5
- package/nav/icon-nav/icon-nav.component.d.ts +2 -2
- package/nav/nav-ink-bar.directive.d.ts +2 -4
- package/nav/nav-item.directive.d.ts +3 -4
- package/nav/nav.component.d.ts +1 -3
- package/nav/nav.pipe.d.ts +0 -2
- package/notify/notify-container.component.d.ts +1 -3
- package/notify/notify-queue.service.d.ts +1 -2
- package/notify/notify.component.d.ts +2 -3
- package/notify/notify.service.d.ts +1 -4
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +2 -4
- package/pagination/pagination.pipe.d.ts +0 -2
- package/popover/header/popover-header.component.d.ts +0 -3
- package/popover/popover-container.component.d.ts +3 -4
- package/popover/popover.directive.d.ts +2 -5
- package/popover/popover.service.d.ts +4 -6
- package/progress/progress-circle.component.d.ts +0 -1
- package/progress/progress-strip.component.d.ts +0 -1
- package/progress/progress.component.d.ts +0 -1
- package/property/property-item.component.d.ts +6 -9
- package/property-operation/property-operation.component.d.ts +1 -3
- package/radio/button/radio-button.component.d.ts +2 -5
- package/radio/group/radio-group.component.d.ts +1 -2
- package/radio/radio.component.d.ts +2 -3
- package/rate/rate.component.d.ts +2 -2
- package/resizable/resizable.directive.d.ts +2 -4
- package/resizable/resizable.service.d.ts +2 -2
- package/resizable/resize-handle.component.d.ts +2 -7
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +4 -5
- package/segment/segment.component.d.ts +2 -7
- package/select/custom-select/custom-select.component.d.ts +5 -5
- package/select/native-select/native-select.component.d.ts +1 -1
- package/shared/base-form-check.component.d.ts +1 -1
- package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
- package/shared/directives/thy-autofocus.directive.d.ts +0 -2
- package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
- package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
- package/shared/directives/thy-enter.directive.d.ts +1 -2
- package/shared/directives/thy-scroll.directive.d.ts +1 -2
- package/shared/directives/thy-show.d.ts +1 -2
- package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
- package/shared/directives/view-outlet.directive.d.ts +1 -2
- package/shared/ng-transclude.directive.d.ts +1 -1
- package/shared/option/group/option-group.component.d.ts +1 -2
- package/shared/option/list-option/list-option.component.d.ts +6 -7
- package/shared/option/option.component.d.ts +5 -5
- package/shared/select/select-control/select-control.component.d.ts +1 -2
- package/skeleton/skeleton-circle.component.d.ts +1 -4
- package/skeleton/skeleton-rectangle.component.d.ts +5 -5
- package/skeleton/stylized/bullet-list.component.d.ts +9 -1
- package/slide/drawer/drawer-container.directive.d.ts +1 -2
- package/slide/slide-container.component.d.ts +3 -4
- package/slide/slide-header/slide-header.component.d.ts +0 -2
- package/slide/slide.service.d.ts +3 -3
- package/slider/slider.component.d.ts +2 -2
- package/space/space.component.d.ts +1 -2
- package/statistic/statistic.component.d.ts +1 -2
- package/stepper/step.component.d.ts +1 -2
- package/stepper/stepper-button.directive.d.ts +0 -3
- package/strength/strength.component.d.ts +0 -1
- package/switch/switch.component.d.ts +1 -1
- package/table/table-column.component.d.ts +32 -8
- package/table/table-skeleton.component.d.ts +1 -3
- package/table/table.component.d.ts +3 -5
- package/tabs/tabs.component.d.ts +1 -3
- package/tag/tag.component.d.ts +7 -3
- package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
- package/time-picker/time-picker-panel.component.d.ts +1 -3
- package/time-picker/time-picker.component.d.ts +1 -2
- package/timeline/timeline-item.component.d.ts +1 -3
- package/timeline/timeline.component.d.ts +1 -3
- package/tooltip/tooltip.component.d.ts +1 -2
- package/tooltip/tooltip.directive.d.ts +6 -9
- package/tooltip/tooltip.service.d.ts +2 -4
- package/transfer/transfer-list.component.d.ts +1 -2
- package/tree/tree-node.component.d.ts +5 -21
- package/tree/tree.component.d.ts +1 -2
- package/tree-select/tree-select.component.d.ts +5 -6
- package/typography/bg-color.directive.d.ts +0 -2
- package/typography/text-color.directive.d.ts +1 -2
- package/upload/file-select-base.d.ts +2 -3
- package/upload/file-select.component.d.ts +1 -0
- package/upload/upload.service.d.ts +0 -2
- package/watermark/watermark.directive.d.ts +1 -2
|
@@ -6,7 +6,7 @@ import { startWith } from 'rxjs/operators';
|
|
|
6
6
|
import { useHostRenderer } from '@tethys/cdk/dom';
|
|
7
7
|
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
8
8
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
9
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, Input, NgZone, Output, QueryList, Renderer2 } from '@angular/core';
|
|
9
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, Input, NgZone, Output, QueryList, Renderer2, inject } from '@angular/core';
|
|
10
10
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
const listSizesMap = {
|
|
@@ -17,6 +17,27 @@ const listSizesMap = {
|
|
|
17
17
|
* @order 20
|
|
18
18
|
*/
|
|
19
19
|
export class ThySelectionList {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.renderer = inject(Renderer2);
|
|
22
|
+
this.elementRef = inject(ElementRef);
|
|
23
|
+
this.ngZone = inject(NgZone);
|
|
24
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
25
|
+
this._selectionChangesUnsubscribe$ = Subscription.EMPTY;
|
|
26
|
+
this.hostRenderer = useHostRenderer();
|
|
27
|
+
this.layout = 'list';
|
|
28
|
+
this._isList = true;
|
|
29
|
+
this._isSelectionList = true;
|
|
30
|
+
this.multiple = true;
|
|
31
|
+
this.isLayoutGrid = false;
|
|
32
|
+
this.spaceEnabled = true;
|
|
33
|
+
/**
|
|
34
|
+
* 每当选项的选定状态发生更改时,都会触发更改事件
|
|
35
|
+
* @type EventEmitter<ThySelectionListChange>
|
|
36
|
+
*/
|
|
37
|
+
this.thySelectionChange = new EventEmitter();
|
|
38
|
+
this._onTouched = () => { };
|
|
39
|
+
this._onChange = (_) => { };
|
|
40
|
+
}
|
|
20
41
|
/**
|
|
21
42
|
* 改变 grid item 的选择模式,使其支持多选
|
|
22
43
|
* @default true
|
|
@@ -181,27 +202,6 @@ export class ThySelectionList {
|
|
|
181
202
|
this.hostRenderer.addClass(listSizesMap[size]);
|
|
182
203
|
}
|
|
183
204
|
}
|
|
184
|
-
constructor(renderer, elementRef, ngZone, changeDetectorRef) {
|
|
185
|
-
this.renderer = renderer;
|
|
186
|
-
this.elementRef = elementRef;
|
|
187
|
-
this.ngZone = ngZone;
|
|
188
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
189
|
-
this._selectionChangesUnsubscribe$ = Subscription.EMPTY;
|
|
190
|
-
this.hostRenderer = useHostRenderer();
|
|
191
|
-
this.layout = 'list';
|
|
192
|
-
this._isList = true;
|
|
193
|
-
this._isSelectionList = true;
|
|
194
|
-
this.multiple = true;
|
|
195
|
-
this.isLayoutGrid = false;
|
|
196
|
-
this.spaceEnabled = true;
|
|
197
|
-
/**
|
|
198
|
-
* 每当选项的选定状态发生更改时,都会触发更改事件
|
|
199
|
-
* @type EventEmitter<ThySelectionListChange>
|
|
200
|
-
*/
|
|
201
|
-
this.thySelectionChange = new EventEmitter();
|
|
202
|
-
this._onTouched = () => { };
|
|
203
|
-
this._onChange = (_) => { };
|
|
204
|
-
}
|
|
205
205
|
ngOnInit() {
|
|
206
206
|
const bindKeyEventElement = this._getElementBySelector(this.thyBindKeyEventContainer);
|
|
207
207
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -317,7 +317,7 @@ export class ThySelectionList {
|
|
|
317
317
|
this._bindKeyEventUnsubscribe();
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThySelectionList, deps: [
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThySelectionList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
321
321
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThySelectionList, isStandalone: true, selector: "thy-selection-list,[thy-selection-list]", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyBindKeyEventContainer: "thyBindKeyEventContainer", thyScrollContainer: "thyScrollContainer", thyBeforeKeydown: "thyBeforeKeydown", thyUniqueKey: "thyUniqueKey", thyCompareWith: "thyCompareWith", thyLayout: "thyLayout", thyAutoActiveFirstItem: ["thyAutoActiveFirstItem", "thyAutoActiveFirstItem", coerceBooleanProperty], thySize: "thySize", thySpaceKeyEnabled: ["thySpaceKeyEnabled", "thySpaceKeyEnabled", coerceBooleanProperty] }, outputs: { thySelectionChange: "thySelectionChange" }, host: { properties: { "class.thy-list": "this._isList", "class.thy-selection-list": "this._isSelectionList", "class.thy-multiple-selection-list": "this.multiple", "class.thy-grid-list": "this.isLayoutGrid" } }, providers: [
|
|
322
322
|
{
|
|
323
323
|
provide: THY_LIST_OPTION_PARENT_COMPONENT,
|
|
@@ -349,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
349
349
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
350
350
|
standalone: true
|
|
351
351
|
}]
|
|
352
|
-
}],
|
|
352
|
+
}], propDecorators: { _isList: [{
|
|
353
353
|
type: HostBinding,
|
|
354
354
|
args: [`class.thy-list`]
|
|
355
355
|
}], _isSelectionList: [{
|
|
@@ -390,4 +390,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
390
390
|
}], thySelectionChange: [{
|
|
391
391
|
type: Output
|
|
392
392
|
}] } });
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlzdC9zZWxlY3Rpb24vc2VsZWN0aW9uLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBaUMsZ0NBQWdDLEVBQWlCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXpFLE1BQU0sWUFBWSxHQUFHO0lBQ2pCLEVBQUUsRUFBRSxhQUFhO0NBQ3BCLENBQUM7QUFFRjs7O0dBR0c7QUFrQkgsTUFBTSxPQUFPLGdCQUFnQjtJQStCekI7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBYztRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJ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QUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxXQUFXLGtCQUFrQjt5QkFDaEM7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7NEJBQy9DLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7NEpBbUJrQyxPQUFPO3NCQUFyQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFFWSxnQkFBZ0I7c0JBQXhELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUVXLFFBQVE7c0JBQXpELFdBQVc7dUJBQUMsbUNBQW1DO2dCQUVaLFlBQVk7c0JBQS9DLFdBQVc7dUJBQUMscUJBQXFCO2dCQUtxQixPQUFPO3NCQUE3RCxlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBT2pELFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFjbEMsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUTJDLHNCQUFzQjtzQkFBdEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFROUIsT0FBTztzQkFBbkIsS0FBSztnQkFTMkMsa0JBQWtCO3NCQUFsRSxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQVF4QixrQkFBa0I7c0JBQXBDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxUb1NlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgSVRoeUxpc3RPcHRpb25QYXJlbnRDb21wb25lbnQsIFRIWV9MSVNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULCBUaHlMaXN0TGF5b3V0LCBUaHlMaXN0T3B0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBkb20sIGhlbHBlcnMsIGtleWNvZGVzIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVGh5U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gJy4vc2VsZWN0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIFRoeUxpc3RTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnO1xuXG5jb25zdCBsaXN0U2l6ZXNNYXAgPSB7XG4gICAgc206ICd0aHktbGlzdC1zbSdcbn07XG5cbi8qKlxuICogQG5hbWUgdGh5LXNlbGVjdGlvbi1saXN0LFt0aHktc2VsZWN0aW9uLWxpc3RdXG4gKiBAb3JkZXIgMjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktc2VsZWN0aW9uLWxpc3QsW3RoeS1zZWxlY3Rpb24tbGlzdF0nLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIWV9MSVNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoeVNlbGVjdGlvbkxpc3RcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlTZWxlY3Rpb25MaXN0KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5U2VsZWN0aW9uTGlzdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBJVGh5TGlzdE9wdGlvblBhcmVudENvbXBvbmVudCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgX2tleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFRoeUxpc3RPcHRpb24+O1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlc1Vuc3Vic2NyaWJlJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIHByaXZhdGUgX2JpbmRLZXlFdmVudFVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xuXG4gICAgcHJpdmF0ZSBfbW9kZWxWYWx1ZXM6IGFueVtdO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbnMuICovXG4gICAgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT47XG5cbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGxheW91dDogVGh5TGlzdExheW91dCA9ICdsaXN0JztcblxuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LWxpc3RgKSBfaXNMaXN0ID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LXNlbGVjdGlvbi1saXN0YCkgX2lzU2VsZWN0aW9uTGlzdCA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1tdWx0aXBsZS1zZWxlY3Rpb24tbGlzdGApIG11bHRpcGxlID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LWdyaWQtbGlzdGApIGlzTGF5b3V0R3JpZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlMaXN0T3B0aW9uLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxUaHlMaXN0T3B0aW9uPjtcblxuICAgIC8qKlxuICAgICAqIOaUueWPmCBncmlkIGl0ZW0g55qE6YCJ5oup5qih5byP77yM5L2/5YW25pSv5oyB5aSa6YCJXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgc2V0IHRoeU11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0aGlzLm11bHRpcGxlO1xuICAgICAgICB0aGlzLm11bHRpcGxlID0gdmFsdWU7XG4gICAgICAgIGlmIChwcmV2aW91c1ZhbHVlICE9PSB0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDnu5HlrprplK7nm5jkuovku7bnmoTlrrnlmahcbiAgICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCB0aHktc2VsZWN0aW9uLWxpc3Qg57uE5Lu257uR5a6a55qE5YWD57SgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5QmluZEtleUV2ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlh7rnjrDmu5rliqjmnaHnmoTlrrnlmahcbiAgICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCB0aHktc2VsZWN0aW9uLWxpc3Qg57uE5Lu257uR5a6a55qE5YWD57SgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDplK7nm5jkuovku7bop6blj5EgQmVmb3JlIOiwg+eUqO+8jOWmguaenOi/lOWbniBmYWxzZSDliJnlgZzmraLnu6fnu63miafooYxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlCZWZvcmVLZXlkb3duOiAoZXZlbnQ/OiBLZXlib2FyZEV2ZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uIFZhbHVlIOWUr+S4gOeahCBLZXnvvIznlKjkuo7lrZjlgqjlk6rkupvpgInmi6nooqvpgInkuK3nmoTllK/kuIDlgLzvvIzlj6rmnIkgT3B0aW9uIOeahCB0aHlWYWx1ZSDmmK/lr7nosaHnmoTml7bmiY3lj6/ku6XkvKDlhaXor6XpgInpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlVbmlxdWVLZXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOavlOi+gzLkuKrpgInpobnnmoQgVmFsdWUg5piv5ZCm55u45ZCMXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q29tcGFyZVdpdGg6IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogZ3JpZCBpdGVtIOeahOWxleekuuagt+W8j1xuICAgICAqIEB0eXBlIGxpc3QgfCBncmlkXG4gICAgICogQGRlZmF1bHQgbGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlMYXlvdXQodmFsdWU6IFRoeUxpc3RMYXlvdXQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc0xheW91dEdyaWQgPSB2YWx1ZSA9PT0gJ2dyaWQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuiHquWKqOa/gOa0u+esrOS4gOmhuVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHNldCB0aHlBdXRvQWN0aXZlRmlyc3RJdGVtKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYXV0b0FjdGl2ZUZpcnN0SXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaUueWPmCBncmlkIGl0ZW0g55qE5aSn5bCP77yM5pSv5oyB6buY6K6k5Lul5Y+KIHNtIOS4pOenjeWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlTaXplKHZhbHVlOiBUaHlMaXN0U2l6ZSkge1xuICAgICAgICB0aGlzLl9zZXRMaXN0U2l6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGFjZUVuYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5oyJ5LiL56m65qC85YiH5o2i6IGa54Sm6YCJ6aG5XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgc2V0IHRoeVNwYWNlS2V5RW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNwYWNlRW5hYmxlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOavj+W9k+mAiemhueeahOmAieWumueKtuaAgeWPkeeUn+abtOaUueaXtu+8jOmDveS8muinpuWPkeabtOaUueS6i+S7tlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlTZWxlY3Rpb25MaXN0Q2hhbmdlPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlTZWxlY3Rpb25MaXN0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT4oKTtcblxuICAgIHByaXZhdGUgYXV0b0FjdGl2ZUZpcnN0SXRlbTogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKF86IGFueSkgPT4ge307XG5cbiAgICBwcml2YXRlIF9lbWl0Q2hhbmdlRXZlbnQob3B0aW9uOiBUaHlMaXN0T3B0aW9uLCBldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy50aHlTZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnRoeVZhbHVlLFxuICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKG9wdGlvbilcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW1pdE1vZGVsVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlVbmlxdWVLZXkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzLm1hcChzZWxlY3RlZFZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aHlWYWx1ZVt0aGlzLnRoeVVuaXF1ZUtleV0gPT09IHNlbGVjdGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbi50aHlWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb2RlbFZhbHVlcy5maW5kKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbdGhpcy50aHlVbmlxdWVLZXldID09PSBzZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX21vZGVsVmFsdWVzID0gc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICAgICAgICBsZXQgY2hhbmdlVmFsdWUgPSBzZWxlY3RlZFZhbHVlcztcbiAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiBzZWxlY3RlZFZhbHVlcyAmJiBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlVmFsdWUgPSBzZWxlY3RlZFZhbHVlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKGNoYW5nZVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3RvZ2dsZUZvY3VzZWRPcHRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU9wdGlvbih0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0sIGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZvY3VzS2V5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxUaHlMaXN0T3B0aW9uPih0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aFdyYXAoKVxuICAgICAgICAgICAgLy8gLndpdGhUeXBlQWhlYWQoKVxuICAgICAgICAgICAgLy8gQWxsb3cgZGlzYWJsZWQgaXRlbXMgdG8gYmUgZm9jdXNhYmxlLiBGb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zLCB0aGVyZSBtdXN0IGJlIGEgd2F5IGZvclxuICAgICAgICAgICAgLy8gc2NyZWVucmVhZGVyIHVzZXJzLCB0aGF0IGFsbG93cyByZWFkaW5nIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBvZiB0aGUgbGlzdC5cbiAgICAgICAgICAgIC5za2lwUHJlZGljYXRlKCgpID0+IGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odGhpcy5tdWx0aXBsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RWxlbWVudEJ5U2VsZWN0b3IoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gZG9tLmdldEhUTUxFbGVtZW50QnlTZWxlY3RvcihlbGVtZW50LCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbXBhcmVWYWx1ZSh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5Q29tcGFyZVdpdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVGbiA9IHRoaXMudGh5Q29tcGFyZVdpdGggYXMgKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XG4gICAgICAgICAgICByZXR1cm4gY29tcGFyZUZuKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRoeVVuaXF1ZUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlMSAmJiB2YWx1ZTFbdGhpcy50aHlVbmlxdWVLZXldID09PSB2YWx1ZTIgJiYgdmFsdWUyW3RoaXMudGh5VW5pcXVlS2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE9wdGlvblNlbGVjdGlvblZhbHVlKG9wdGlvbjogVGh5TGlzdE9wdGlvbikge1xuICAgICAgICBpZiAob3B0aW9uLnRoeVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlVbmlxdWVLZXkgPyBvcHRpb24udGh5VmFsdWVbdGhpcy50aHlVbmlxdWVLZXldIDogb3B0aW9uLnRoeVZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldFNlbGVjdGlvbkJ5VmFsdWVzKHZhbHVlczogYW55W10pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlVbmlxdWVLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdCh2YWx1ZVt0aGlzLnRoeVVuaXF1ZUtleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEFsbE9wdGlvbnNTZWxlY3RlZCh0b0lzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIGFueXRoaW5nIGNoYW5nZWQsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvXG4gICAgICAgIC8vIGVtaXQgdGhlIGNoYW5nZWQgZXZlbnQgd2hlbiBzb21ldGhpbmcgYWN0dWFsbHkgY2hhbmdlZC5cbiAgICAgICAgbGV0IGhhc0NoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJvbUlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uLnRoeVZhbHVlKTtcbiAgICAgICAgICAgIGlmIChmcm9tSXNTZWxlY3RlZCAhPT0gdG9Jc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUob3B0aW9uLnRoeVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRNb2RlbFZhbHVlQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcHRpb25CeVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVZhbHVlKG9wdGlvbi50aHlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRBY3RpdmVPcHRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb25CeVZhbHVlKHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS50aHlWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldExpc3RTaXplKHNpemU6IFRoeUxpc3RTaXplKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGxpc3RTaXplc01hcCkge1xuICAgICAgICAgICAgaWYgKGxpc3RTaXplc01hcC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIucmVtb3ZlQ2xhc3MobGlzdFNpemVzTWFwW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaXplKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci5hZGRDbGFzcyhsaXN0U2l6ZXNNYXBbc2l6ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBiaW5kS2V5RXZlbnRFbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudEJ5U2VsZWN0b3IodGhpcy50aHlCaW5kS2V5RXZlbnRDb250YWluZXIpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGJpbmRLZXlFdmVudEVsZW1lbnQsICdrZXlkb3duJywgdGhpcy5vbktleWRvd24uYmluZCh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhaGVscGVycy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG11bHRpcGxlIHNlbGVjdGlvbiBuZ01vZGVsIG11c3QgYmUgYW4gYXJyYXkuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgaGVscGVycy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNpbmdsZSBzZWxlY3Rpb24gbmdNb2RlbCBzaG91bGQgbm90IGJlIGFuIGFycmF5LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuICAgICAgICB0aGlzLl9tb2RlbFZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZXModmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy50aHlCZWZvcmVLZXlkb3duKSB7XG4gICAgICAgICAgICAvLyBzdG9wIGtleSBkb3duIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gdGhpcy50aHlCZWZvcmVLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghaXNDb250aW51ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICAgICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRm9jdXNJbmRleCA9IG1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuXG4gICAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBrZXljb2Rlcy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2Uga2V5Y29kZXMuRU5URVI6XG4gICAgICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IGtleWNvZGVzLlNQQUNFICYmICF0aGlzLnNwYWNlRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUZvY3VzZWRPcHRpb24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBwcmV2ZW50IHNwYWNlIGZyb20gc2Nyb2xsaW5nIHRoZSBwYWdlIHNpbmNlIHRoZSBsaXN0IGhhcyBmb2N1c1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoa2V5Q29kZSA9PT0ga2V5Y29kZXMuVVBfQVJST1cgfHwga2V5Q29kZSA9PT0ga2V5Y29kZXMuRE9XTl9BUlJPVykgJiZcbiAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCAhPT0gcHJldmlvdXNGb2N1c0luZGV4XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRm9jdXNlZE9wdGlvbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVPcHRpb24ob3B0aW9uOiBUaHlMaXN0T3B0aW9uLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChvcHRpb24gJiYgIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUodGhpcy5fZ2V0T3B0aW9uU2VsZWN0aW9uVmFsdWUob3B0aW9uKSk7XG4gICAgICAgICAgICAvLyBFbWl0IGEgY2hhbmdlIGV2ZW50IGJlY2F1c2UgdGhlIGZvY3VzZWQgb3B0aW9uIGNoYW5nZWQgaXRzIHN0YXRlIHRocm91Z2ggdXNlclxuICAgICAgICAgICAgLy8gaW50ZXJhY3Rpb24uXG4gICAgICAgICAgICB0aGlzLl9lbWl0TW9kZWxWYWx1ZUNoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KG9wdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlT3B0aW9uKG9wdGlvbjogVGh5TGlzdE9wdGlvbikge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0ob3B0aW9uKTsgLy8gLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleCh0aGlzLl9nZXRPcHRpb25JbmRleChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBzY3JvbGxJbnRvVmlldyhvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyRWxlbWVudCA9IGRvbS5nZXRIVE1MRWxlbWVudEJ5U2VsZWN0b3IodGhpcy50aHlTY3JvbGxDb250YWluZXIsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQob3B0aW9uLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgc2Nyb2xsQ29udGFpbmVyRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0aGlzLl9nZXRPcHRpb25TZWxlY3Rpb25WYWx1ZShvcHRpb24pKTtcbiAgICB9XG5cbiAgICBjbGVhckFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXRlcm1pbmVDbGVhckFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIGlmICghdGhpcy5fZ2V0QWN0aXZlT3B0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBY3RpdmVJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuICovXG4gICAgc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIERlc2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuICovXG4gICAgZGVzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMuX3NldEFsbE9wdGlvbnNTZWxlY3RlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplRm9jdXNLZXlNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRydWUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0SXRlbSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtIHx8IHRoaXMub3B0aW9ucy50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZXNVbnN1YnNjcmliZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2JpbmRLZXlFdmVudFVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlzdC9zZWxlY3Rpb24vc2VsZWN0aW9uLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBaUMsZ0NBQWdDLEVBQWlCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU16RSxNQUFNLFlBQVksR0FBRztJQUNqQixFQUFFLEVBQUUsYUFBYTtDQUNwQixDQUFDO0FBRUY7OztHQUdHO0FBa0JILE1BQU0sT0FBTyxnQkFBZ0I7SUFqQjdCO1FBa0JZLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBSTlDLGtDQUE2QixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFNbkQsaUJBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQU96QyxXQUFNLEdBQWtCLE1BQU0sQ0FBQztRQUVBLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFTCxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFZixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRTlCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBMEVqRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVM1Qjs7O1dBR0c7UUFDZ0IsdUJBQWtCLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBSWpILGVBQVUsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFbEMsY0FBUyxHQUF5QixDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBNlE1RDtJQW5XRzs7O09BR0c7SUFDSCxJQUNJLFdBQVcsQ0FBQyxLQUFjO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxhQUFhLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBK0JEOzs7O09BSUc7SUFDSCxJQUFhLFNBQVMsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssS0FBSyxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBaUQsc0JBQXNCLENBQUMsS0FBYztRQUNsRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFhLE9BQU8sQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFJRDs7T0FFRztJQUNILElBQWlELGtCQUFrQixDQUFDLEtBQWM7UUFDOUUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQWNPLGdCQUFnQixDQUFDLE1BQXFCLEVBQUUsS0FBWTtRQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3RCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLEtBQUs7WUFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7U0FDcEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixjQUFjLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQzlDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssYUFBYSxDQUFDO29CQUNoRSxDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQ25DLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssYUFBYSxDQUFDO3dCQUN0RCxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1lBQ25DLElBQUksV0FBVyxHQUFHLGNBQWMsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBQW9CO1FBQzdDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksMEJBQTBCLENBQWdCLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDekUsUUFBUSxFQUFFO1lBQ1gsbUJBQW1CO1lBQ25CLDJGQUEyRjtZQUMzRiw2RUFBNkU7YUFDNUUsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBTSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQTBDO1FBQ3BFLE9BQU8sR0FBRyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFXLEVBQUUsTUFBVztRQUMxQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBK0MsQ0FBQztZQUN2RSxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNCLE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLE1BQU0sS0FBSyxNQUFNLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxNQUFxQjtRQUNsRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BGLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFhO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsWUFBcUI7UUFDaEQsa0VBQWtFO1FBQ2xFLDBEQUEwRDtRQUMxRCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksY0FBYyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNsQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBVTtRQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFpQjtRQUNsQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQzdCLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWtCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1lBQzVFLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsc0JBQXNCO1lBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2QsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBRW5ELFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDZixJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNuRCxPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyx3RUFBd0U7Z0JBQ3hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsTUFBTTtZQUNWO2dCQUNJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQ0ksQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLFFBQVEsSUFBSSxPQUFPLEtBQUssUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRSxLQUFLLENBQUMsUUFBUTtZQUNkLE9BQU8sQ0FBQyxlQUFlLEtBQUssa0JBQWtCLEVBQ2hELENBQUM7WUFDQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBcUIsRUFBRSxLQUFhO1FBQzdDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLGdGQUFnRjtZQUNoRixlQUFlO1lBQ2YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFxQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsd0RBQXdEO0lBQ3ZHLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBcUI7UUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFxQjtRQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFNBQVM7UUFDTCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxXQUFXO1FBQ1AsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0WVEsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsaUlBd0NMLHFCQUFxQiw4U0FtRHJCLHFCQUFxQix3RkFpQnJCLHFCQUFxQiwwUkExSDlCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGdDQUFnQztnQkFDekMsV0FBVyxFQUFFLGdCQUFnQjthQUNoQztZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQy9DLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSixrREFzQ2dCLGFBQWEsZ0RBakRwQiwyQkFBMkI7OzJGQWU1QixnQkFBZ0I7a0JBakI1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5Q0FBeUM7b0JBQ25ELFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxXQUFXLGtCQUFrQjt5QkFDaEM7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7NEJBQy9DLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBd0JrQyxPQUFPO3NCQUFyQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFFWSxnQkFBZ0I7c0JBQXhELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUVXLFFBQVE7c0JBQXpELFdBQVc7dUJBQUMsbUNBQW1DO2dCQUVaLFlBQVk7c0JBQS9DLFdBQVc7dUJBQUMscUJBQXFCO2dCQUtxQixPQUFPO3NCQUE3RCxlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBT2pELFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFjbEMsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUTJDLHNCQUFzQjtzQkFBdEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFROUIsT0FBTztzQkFBbkIsS0FBSztnQkFTMkMsa0JBQWtCO3NCQUFsRSxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQVF4QixrQkFBa0I7c0JBQXBDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxUb1NlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgSVRoeUxpc3RPcHRpb25QYXJlbnRDb21wb25lbnQsIFRIWV9MSVNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULCBUaHlMaXN0TGF5b3V0LCBUaHlMaXN0T3B0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBkb20sIGhlbHBlcnMsIGtleWNvZGVzIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRoeVNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tICcuL3NlbGVjdGlvbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBUaHlMaXN0U2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJztcblxuY29uc3QgbGlzdFNpemVzTWFwID0ge1xuICAgIHNtOiAndGh5LWxpc3Qtc20nXG59O1xuXG4vKipcbiAqIEBuYW1lIHRoeS1zZWxlY3Rpb24tbGlzdCxbdGh5LXNlbGVjdGlvbi1saXN0XVxuICogQG9yZGVyIDIwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXNlbGVjdGlvbi1saXN0LFt0aHktc2VsZWN0aW9uLWxpc3RdJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSFlfTElTVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaHlTZWxlY3Rpb25MaXN0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5U2VsZWN0aW9uTGlzdCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeVNlbGVjdGlvbkxpc3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgSVRoeUxpc3RPcHRpb25QYXJlbnRDb21wb25lbnQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxUaHlMaXN0T3B0aW9uPjtcblxuICAgIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZXNVbnN1YnNjcmliZSQgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBwcml2YXRlIF9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZTogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgX21vZGVsVmFsdWVzOiBhbnlbXTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25zLiAqL1xuICAgIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xuXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBsYXlvdXQ6IFRoeUxpc3RMYXlvdXQgPSAnbGlzdCc7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1saXN0YCkgX2lzTGlzdCA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1zZWxlY3Rpb24tbGlzdGApIF9pc1NlbGVjdGlvbkxpc3QgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbXVsdGlwbGUtc2VsZWN0aW9uLWxpc3RgKSBtdWx0aXBsZSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1ncmlkLWxpc3RgKSBpc0xheW91dEdyaWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5TGlzdE9wdGlvbiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBvcHRpb25zOiBRdWVyeUxpc3Q8VGh5TGlzdE9wdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiDmlLnlj5ggZ3JpZCBpdGVtIOeahOmAieaLqeaooeW8j++8jOS9v+WFtuaUr+aMgeWkmumAiVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlNdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5tdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICBpZiAocHJldmlvdXNWYWx1ZSAhPT0gdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog57uR5a6a6ZSu55uY5LqL5Lu255qE5a655ZmoXG4gICAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgdGh5LXNlbGVjdGlvbi1saXN0IOe7hOS7tue7keWumueahOWFg+e0oFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUJpbmRLZXlFdmVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5Ye6546w5rua5Yqo5p2h55qE5a655ZmoXG4gICAgICogQHR5cGUgSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgdGh5LXNlbGVjdGlvbi1saXN0IOe7hOS7tue7keWumueahOWFg+e0oFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNjcm9sbENvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6ZSu55uY5LqL5Lu26Kem5Y+RIEJlZm9yZSDosIPnlKjvvIzlpoLmnpzov5Tlm54gZmFsc2Ug5YiZ5YGc5q2i57un57ut5omn6KGMXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5QmVmb3JlS2V5ZG93bjogKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbiBWYWx1ZSDllK/kuIDnmoQgS2V577yM55So5LqO5a2Y5YKo5ZOq5Lqb6YCJ5oup6KKr6YCJ5Lit55qE5ZSv5LiA5YC877yM5Y+q5pyJIE9wdGlvbiDnmoQgdGh5VmFsdWUg5piv5a+56LGh55qE5pe25omN5Y+v5Lul5Lyg5YWl6K+l6YCJ6aG5XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VW5pcXVlS2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDmr5TovoMy5Liq6YCJ6aG555qEIFZhbHVlIOaYr+WQpuebuOWQjFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIGdyaWQgaXRlbSDnmoTlsZXnpLrmoLflvI9cbiAgICAgKiBAdHlwZSBsaXN0IHwgZ3JpZFxuICAgICAqIEBkZWZhdWx0IGxpc3RcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5TGF5b3V0KHZhbHVlOiBUaHlMaXN0TGF5b3V0KSB7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNMYXlvdXRHcmlkID0gdmFsdWUgPT09ICdncmlkJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKboh6rliqjmv4DmtLvnrKzkuIDpoblcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSBzZXQgdGh5QXV0b0FjdGl2ZUZpcnN0SXRlbSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlLnlj5ggZ3JpZCBpdGVtIOeahOWkp+Wwj++8jOaUr+aMgem7mOiupOS7peWPiiBzbSDkuKTnp43lpKflsI9cbiAgICAgKiBAdHlwZSBzbSB8IG1kIHwgbGdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5U2l6ZSh2YWx1ZTogVGh5TGlzdFNpemUpIHtcbiAgICAgICAgdGhpcy5fc2V0TGlzdFNpemUodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3BhY2VFbmFibGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaMieS4i+epuuagvOWIh+aNouiBmueEpumAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHNldCB0aHlTcGFjZUtleUVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zcGFjZUVuYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmr4/lvZPpgInpobnnmoTpgInlrprnirbmgIHlj5HnlJ/mm7TmlLnml7bvvIzpg73kvJrop6blj5Hmm7TmlLnkuovku7ZcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVNlbGVjdGlvbkxpc3RDaGFuZ2U+KCk7XG5cbiAgICBwcml2YXRlIGF1dG9BY3RpdmVGaXJzdEl0ZW06IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50KG9wdGlvbjogVGh5TGlzdE9wdGlvbiwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi50aHlWYWx1ZSxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VtaXRNb2RlbFZhbHVlQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZFZhbHVlcy5tYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGh5VmFsdWVbdGhpcy50aHlVbmlxdWVLZXldID09PSBzZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24udGh5VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxWYWx1ZXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tb2RlbFZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzO1xuICAgICAgICAgICAgbGV0IGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgc2VsZWN0ZWRWYWx1ZXMgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF90b2dnbGVGb2N1c2VkT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVPcHRpb24odGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLCBldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxpemVGb2N1c0tleU1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8VGh5TGlzdE9wdGlvbj4odGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLndpdGhXcmFwKClcbiAgICAgICAgICAgIC8vIC53aXRoVHlwZUFoZWFkKClcbiAgICAgICAgICAgIC8vIEFsbG93IGRpc2FibGVkIGl0ZW1zIHRvIGJlIGZvY3VzYWJsZS4gRm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucywgdGhlcmUgbXVzdCBiZSBhIHdheSBmb3JcbiAgICAgICAgICAgIC8vIHNjcmVlbnJlYWRlciB1c2VycywgdGhhdCBhbGxvd3MgcmVhZGluZyB0aGUgZGlmZmVyZW50IG9wdGlvbnMgb2YgdGhlIGxpc3QuXG4gICAgICAgICAgICAuc2tpcFByZWRpY2F0ZSgoKSA9PiBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlwbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEVsZW1lbnRCeVNlbGVjdG9yKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvbS5nZXRIVE1MRWxlbWVudEJ5U2VsZWN0b3IoZWxlbWVudCwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb21wYXJlVmFsdWUodmFsdWUxOiBhbnksIHZhbHVlMjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbXBhcmVXaXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wYXJlRm4gPSB0aGlzLnRoeUNvbXBhcmVXaXRoIGFzIChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVGbih2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50aHlVbmlxdWVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTEgJiYgdmFsdWUxW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gdmFsdWUyICYmIHZhbHVlMlt0aGlzLnRoeVVuaXF1ZUtleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcHRpb25TZWxlY3Rpb25WYWx1ZShvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgaWYgKG9wdGlvbi50aHlWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5VW5pcXVlS2V5ID8gb3B0aW9uLnRoeVZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA6IG9wdGlvbi50aHlWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRTZWxlY3Rpb25CeVZhbHVlcyh2YWx1ZXM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWVbdGhpcy50aHlVbmlxdWVLZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRBbGxPcHRpb25zU2VsZWN0ZWQodG9Jc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBhbnl0aGluZyBjaGFuZ2VkLCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0b1xuICAgICAgICAvLyBlbWl0IHRoZSBjaGFuZ2VkIGV2ZW50IHdoZW4gc29tZXRoaW5nIGFjdHVhbGx5IGNoYW5nZWQuXG4gICAgICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21Jc1NlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoZnJvbUlzU2VsZWN0ZWQgIT09IHRvSXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0TW9kZWxWYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVWYWx1ZShvcHRpb24udGh5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QWN0aXZlT3B0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uQnlWYWx1ZSh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0udGh5VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRMaXN0U2l6ZShzaXplOiBUaHlMaXN0U2l6ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBsaXN0U2l6ZXNNYXApIHtcbiAgICAgICAgICAgIGlmIChsaXN0U2l6ZXNNYXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnJlbW92ZUNsYXNzKGxpc3RTaXplc01hcFtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MobGlzdFNpemVzTWFwW3NpemVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBiaW5kS2V5RXZlbnRFbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudEJ5U2VsZWN0b3IodGhpcy50aHlCaW5kS2V5RXZlbnRDb250YWluZXIpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGJpbmRLZXlFdmVudEVsZW1lbnQsICdrZXlkb3duJywgdGhpcy5vbktleWRvd24uYmluZCh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhaGVscGVycy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG11bHRpcGxlIHNlbGVjdGlvbiBuZ01vZGVsIG11c3QgYmUgYW4gYXJyYXkuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgaGVscGVycy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNpbmdsZSBzZWxlY3Rpb24gbmdNb2RlbCBzaG91bGQgbm90IGJlIGFuIGFycmF5LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuICAgICAgICB0aGlzLl9tb2RlbFZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZXModmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy50aHlCZWZvcmVLZXlkb3duKSB7XG4gICAgICAgICAgICAvLyBzdG9wIGtleSBkb3duIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gdGhpcy50aHlCZWZvcmVLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghaXNDb250aW51ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICAgICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRm9jdXNJbmRleCA9IG1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuXG4gICAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBrZXljb2Rlcy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2Uga2V5Y29kZXMuRU5URVI6XG4gICAgICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IGtleWNvZGVzLlNQQUNFICYmICF0aGlzLnNwYWNlRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUZvY3VzZWRPcHRpb24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBwcmV2ZW50IHNwYWNlIGZyb20gc2Nyb2xsaW5nIHRoZSBwYWdlIHNpbmNlIHRoZSBsaXN0IGhhcyBmb2N1c1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoa2V5Q29kZSA9PT0ga2V5Y29kZXMuVVBfQVJST1cgfHwga2V5Q29kZSA9PT0ga2V5Y29kZXMuRE9XTl9BUlJPVykgJiZcbiAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCAhPT0gcHJldmlvdXNGb2N1c0luZGV4XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRm9jdXNlZE9wdGlvbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVPcHRpb24ob3B0aW9uOiBUaHlMaXN0T3B0aW9uLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChvcHRpb24gJiYgIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUodGhpcy5fZ2V0T3B0aW9uU2VsZWN0aW9uVmFsdWUob3B0aW9uKSk7XG4gICAgICAgICAgICAvLyBFbWl0IGEgY2hhbmdlIGV2ZW50IGJlY2F1c2UgdGhlIGZvY3VzZWQgb3B0aW9uIGNoYW5nZWQgaXRzIHN0YXRlIHRocm91Z2ggdXNlclxuICAgICAgICAgICAgLy8gaW50ZXJhY3Rpb24uXG4gICAgICAgICAgICB0aGlzLl9lbWl0TW9kZWxWYWx1ZUNoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KG9wdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlT3B0aW9uKG9wdGlvbjogVGh5TGlzdE9wdGlvbikge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0ob3B0aW9uKTsgLy8gLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleCh0aGlzLl9nZXRPcHRpb25JbmRleChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBzY3JvbGxJbnRvVmlldyhvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyRWxlbWVudCA9IGRvbS5nZXRIVE1MRWxlbWVudEJ5U2VsZWN0b3IodGhpcy50aHlTY3JvbGxDb250YWluZXIsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQob3B0aW9uLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgc2Nyb2xsQ29udGFpbmVyRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0aGlzLl9nZXRPcHRpb25TZWxlY3Rpb25WYWx1ZShvcHRpb24pKTtcbiAgICB9XG5cbiAgICBjbGVhckFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXRlcm1pbmVDbGVhckFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIGlmICghdGhpcy5fZ2V0QWN0aXZlT3B0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBY3RpdmVJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuICovXG4gICAgc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIERlc2VsZWN0cyBhbGwgb2YgdGhlIG9wdGlvbnMuICovXG4gICAgZGVzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMuX3NldEFsbE9wdGlvbnNTZWxlY3RlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplRm9jdXNLZXlNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRydWUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0SXRlbSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtIHx8IHRoaXMub3B0aW9ucy50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkNoYW5nZXNVbnN1YnNjcmliZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2JpbmRLZXlFdmVudFVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Component, Input, HostBinding, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { NgIf } from '@angular/common';
|
|
1
|
+
import { Component, Input, HostBinding, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';
|
|
3
2
|
import { coerceBooleanProperty } from 'ngx-tethys/util';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
/**
|
|
@@ -8,6 +7,10 @@ import * as i0 from "@angular/core";
|
|
|
8
7
|
* @order 10
|
|
9
8
|
*/
|
|
10
9
|
export class ThyLoading {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
12
|
+
this.loadingClassName = true;
|
|
13
|
+
}
|
|
11
14
|
/**
|
|
12
15
|
* 数据是否加载完成
|
|
13
16
|
* @default false
|
|
@@ -30,17 +33,13 @@ export class ThyLoading {
|
|
|
30
33
|
this.isMask = value;
|
|
31
34
|
this.changeDetectorRef.markForCheck();
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.loadingClassName = true;
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyLoading, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThyLoading, isStandalone: true, selector: "thy-loading", inputs: { thyDone: ["thyDone", "thyDone", coerceBooleanProperty], thyTip: "thyTip", thyIsMask: ["thyIsMask", "thyIsMask", coerceBooleanProperty] }, host: { properties: { "class.thy-loading": "this.loadingClassName" } }, ngImport: i0, template: "<div [class.thy-loading-mask]=\"isMask && !isDone\">\n <div class=\"thy-loading-indicator\" *ngIf=\"!isDone\">\n <h4>\n <span [style.display]=\"tip ? 'inline' : 'none'\">{{ tip }}</span>\n <div class=\"thy-loading-ellipsis\">\n <span class=\"thy-spot\"></span>\n </div>\n </h4>\n </div>\n <ng-content *ngIf=\"isMask || isDone\"></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyLoading, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyLoading, isStandalone: true, selector: "thy-loading", inputs: { thyDone: ["thyDone", "thyDone", coerceBooleanProperty], thyTip: "thyTip", thyIsMask: ["thyIsMask", "thyIsMask", coerceBooleanProperty] }, host: { properties: { "class.thy-loading": "this.loadingClassName" } }, ngImport: i0, template: "<div [class.thy-loading-mask]=\"isMask && !isDone\">\n @if (!isDone) {\n <div class=\"thy-loading-indicator\">\n <h4>\n <span [style.display]=\"tip ? 'inline' : 'none'\">{{ tip }}</span>\n <div class=\"thy-loading-ellipsis\">\n <span class=\"thy-spot\"></span>\n </div>\n </h4>\n </div>\n }\n @if (isMask || isDone) {\n <ng-content></ng-content>\n }\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39
38
|
}
|
|
40
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyLoading, decorators: [{
|
|
41
40
|
type: Component,
|
|
42
|
-
args: [{ selector: 'thy-loading', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
43
|
-
}],
|
|
41
|
+
args: [{ selector: 'thy-loading', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [], template: "<div [class.thy-loading-mask]=\"isMask && !isDone\">\n @if (!isDone) {\n <div class=\"thy-loading-indicator\">\n <h4>\n <span [style.display]=\"tip ? 'inline' : 'none'\">{{ tip }}</span>\n <div class=\"thy-loading-ellipsis\">\n <span class=\"thy-spot\"></span>\n </div>\n </h4>\n </div>\n }\n @if (isMask || isDone) {\n <ng-content></ng-content>\n }\n</div>\n" }]
|
|
42
|
+
}], propDecorators: { thyDone: [{
|
|
44
43
|
type: Input,
|
|
45
44
|
args: [{ transform: coerceBooleanProperty }]
|
|
46
45
|
}], thyTip: [{
|
|
@@ -52,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
52
51
|
type: HostBinding,
|
|
53
52
|
args: ['class.thy-loading']
|
|
54
53
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFeEQ7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyxVQUFVO0lBUHZCO1FBUVksc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFvQ3BCLHFCQUFnQixHQUFHLElBQUksQ0FBQztLQUM3RDtJQTdCRzs7O09BR0c7SUFDSCxJQUNJLE9BQU8sQ0FBQyxLQUFjO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLE1BQU0sQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzhHQW5DUSxVQUFVO2tHQUFWLFVBQVUseUZBYUMscUJBQXFCLDJEQWtCckIscUJBQXFCLHFHQy9DN0MsOFpBZUE7OzJGRENhLFVBQVU7a0JBUHRCLFNBQVM7K0JBQ0ksYUFBYSxtQkFFTix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxFQUFFOzhCQWdCUCxPQUFPO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBVXZDLE1BQU07c0JBRFQsS0FBSztnQkFVRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTVQsZ0JBQWdCO3NCQUFqRCxXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG4vKipcbiAqIOWKoOi9vee7hOS7tu+8jOmhtemdouiwg+eUqOaOpeWPo+etieW+heivt+axguaXtu+8jOe7meeUqOaIt+eahOWPjemmiFxuICogQG5hbWUgdGh5LWxvYWRpbmdcbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1sb2FkaW5nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9hZGluZy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlMb2FkaW5nIHtcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHB1YmxpYyBpc0RvbmU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgdGlwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgaXNNYXNrOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5pWw5o2u5piv5ZCm5Yqg6L295a6M5oiQXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlEb25lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNEb25lID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5Yqg6L295o+Q56S65paH5qGIXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VGlwKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50aXAgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDliqDovb3ml7bmmK/lkKblkK/nlKjltYzlpZfpga7nvanmqKHlvI/vvIzkuI3kvKDmiJbkvKAgZmFsc2XvvIzmsqHmnInpga7nvanlsYLvvIzliqDovb3lrozmiJDlh7rnjrDlhoXlrrlcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlJc01hc2sodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc01hc2sgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1sb2FkaW5nJykgbG9hZGluZ0NsYXNzTmFtZSA9IHRydWU7XG59XG4iLCI8ZGl2IFtjbGFzcy50aHktbG9hZGluZy1tYXNrXT1cImlzTWFzayAmJiAhaXNEb25lXCI+XG4gIEBpZiAoIWlzRG9uZSkge1xuICAgIDxkaXYgY2xhc3M9XCJ0aHktbG9hZGluZy1pbmRpY2F0b3JcIj5cbiAgICAgIDxoND5cbiAgICAgICAgPHNwYW4gW3N0eWxlLmRpc3BsYXldPVwidGlwID8gJ2lubGluZScgOiAnbm9uZSdcIj57eyB0aXAgfX08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aHktbG9hZGluZy1lbGxpcHNpc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXNwb3RcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9oND5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKGlzTWFzayB8fCBpc0RvbmUpIHtcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIH1cbjwvZGl2PlxuIl19
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';
|
|
2
2
|
import { EMPTY, fromEvent, Subject } from 'rxjs';
|
|
3
3
|
import { switchMap, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { Directive, ElementRef, EventEmitter, Input,
|
|
4
|
+
import { Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';
|
|
5
5
|
import { NgControl } from '@angular/forms';
|
|
6
6
|
import { createMentionAdapter } from './adapter';
|
|
7
7
|
import { CaretPositioner } from './caret-positioner';
|
|
8
8
|
import { ThyMentionSuggestions } from './suggestions/suggestions.component';
|
|
9
9
|
import { isInputOrTextarea } from 'ngx-tethys/util';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "ngx-tethys/popover";
|
|
12
|
-
import * as i2 from "@angular/forms";
|
|
13
11
|
const SUGGESTION_BACKDROP_CLASS = 'thy-mention-suggestions-backdrop';
|
|
14
12
|
const POPOVER_DEFAULT_CONFIG = {
|
|
15
13
|
backdropClass: SUGGESTION_BACKDROP_CLASS,
|
|
@@ -50,10 +48,10 @@ export class ThyMentionDirective {
|
|
|
50
48
|
get isOpened() {
|
|
51
49
|
return !!this.openedSuggestionsRef;
|
|
52
50
|
}
|
|
53
|
-
constructor(
|
|
54
|
-
this.elementRef =
|
|
55
|
-
this.thyPopover =
|
|
56
|
-
this.ngControl =
|
|
51
|
+
constructor() {
|
|
52
|
+
this.elementRef = inject(ElementRef);
|
|
53
|
+
this.thyPopover = inject(ThyPopover);
|
|
54
|
+
this.ngControl = inject(NgControl, { optional: true, self: true });
|
|
57
55
|
this.adapter = null;
|
|
58
56
|
/**
|
|
59
57
|
* 选择后的回调函数
|
|
@@ -61,6 +59,7 @@ export class ThyMentionDirective {
|
|
|
61
59
|
this.select = new EventEmitter();
|
|
62
60
|
this.destroy$ = new Subject();
|
|
63
61
|
this.openedSuggestionsRef$ = new Subject();
|
|
62
|
+
const elementRef = this.elementRef;
|
|
64
63
|
this.adapter = createMentionAdapter(elementRef.nativeElement);
|
|
65
64
|
}
|
|
66
65
|
ngOnInit() {
|
|
@@ -139,7 +138,7 @@ export class ThyMentionDirective {
|
|
|
139
138
|
this.openedSuggestionsRef.close();
|
|
140
139
|
}
|
|
141
140
|
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionDirective, deps: [
|
|
141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
143
142
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: ThyMentionDirective, isStandalone: true, selector: "[thyMention]", inputs: { mentions: ["thyMention", "mentions"], popoverConfig: ["thyPopoverConfig", "popoverConfig"] }, outputs: { select: "thySelectSuggestion" }, ngImport: i0 }); }
|
|
144
143
|
}
|
|
145
144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionDirective, decorators: [{
|
|
@@ -148,11 +147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
148
147
|
selector: '[thyMention]',
|
|
149
148
|
standalone: true
|
|
150
149
|
}]
|
|
151
|
-
}], ctorParameters: () => [
|
|
152
|
-
type: Optional
|
|
153
|
-
}, {
|
|
154
|
-
type: Self
|
|
155
|
-
}] }], propDecorators: { mentions: [{
|
|
150
|
+
}], ctorParameters: () => [], propDecorators: { mentions: [{
|
|
156
151
|
type: Input,
|
|
157
152
|
args: ['thyMention']
|
|
158
153
|
}], popoverConfig: [{
|
|
@@ -162,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
162
157
|
type: Output,
|
|
163
158
|
args: ['thySelectSuggestion']
|
|
164
159
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWVudGlvbi9tZW50aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQXlELE1BQU0sV0FBVyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUVwRCxNQUFNLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBRXJFLE1BQU0sc0JBQXNCLEdBQUc7SUFDM0IsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxTQUFTLEVBQUUsWUFBWTtDQUMxQixDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBcUI7SUFDN0MsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsZUFBZTtJQUMxQixNQUFNLEVBQUUsQ0FBQyxJQUFZLEVBQUUsSUFBOEIsRUFBRSxFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMs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QUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDOzhHQW5KUSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFnRFEsUUFBUTs7MEJBQUksSUFBSTt5Q0FqQ0ksUUFBUTtzQkFBaEMsS0FBSzt1QkFBQyxZQUFZO2dCQWVRLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUtNLE1BQU07c0JBQXBDLE1BQU07dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlckNvbmZpZywgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFTVBUWSwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjcmVhdGVNZW50aW9uQWRhcHRlciwgTWF0Y2hlZE1lbnRpb24sIE1lbnRpb25BZGFwdGVyLCBNZW50aW9uSW5wdXRvckVsZW1lbnQgfSBmcm9tICcuL2FkYXB0ZXInO1xuaW1wb3J0IHsgQ2FyZXRQb3NpdGlvbmVyIH0gZnJvbSAnLi9jYXJldC1wb3NpdGlvbmVyJztcbmltcG9ydCB7IE1lbnRpb24sIE1lbnRpb25EZWZhdWx0RGF0YUl0ZW0sIE1lbnRpb25TdWdnZXN0aW9uU2VsZWN0RXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGh5TWVudGlvblN1Z2dlc3Rpb25zIH0gZnJvbSAnLi9zdWdnZXN0aW9ucy9zdWdnZXN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNJbnB1dE9yVGV4dGFyZWEgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5jb25zdCBTVUdHRVNUSU9OX0JBQ0tEUk9QX0NMQVNTID0gJ3RoeS1tZW50aW9uLXN1Z2dlc3Rpb25zLWJhY2tkcm9wJztcblxuY29uc3QgUE9QT1ZFUl9ERUZBVUxUX0NPTkZJRyA9IHtcbiAgICBiYWNrZHJvcENsYXNzOiBTVUdHRVNUSU9OX0JBQ0tEUk9QX0NMQVNTLFxuICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnXG59O1xuXG5jb25zdCBERUZBVUxUX01FTlRJT05fQ09ORklHOiBQYXJ0aWFsPE1lbnRpb24+ID0ge1xuICAgIGF1dG9DbG9zZTogdHJ1ZSxcbiAgICBlbXB0eVRleHQ6ICfml6DljLnphY3mlbDmja7vvIzmjInnqbrmoLzlrozmiJDovpPlhaUnLFxuICAgIHNlYXJjaDogKHRlcm06IHN0cmluZywgZGF0YTogTWVudGlvbkRlZmF1bHREYXRhSXRlbVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBkYXRhLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhaXRlbS5uYW1lIHx8IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbi8qKlxuICogQG5hbWUgdGh5TWVudGlvblxuICogQG9yZGVyIDEwXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoeU1lbnRpb25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeU1lbnRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBNZW50aW9uQWRhcHRlciA9IG51bGw7XG5cbiAgICBwdWJsaWMgb3BlbmVkU3VnZ2VzdGlvbnNSZWY6IFRoeVBvcG92ZXJSZWY8VGh5TWVudGlvblN1Z2dlc3Rpb25zPjtcblxuICAgIHByaXZhdGUgX21lbnRpb25zOiBNZW50aW9uPGFueT5bXTtcbiAgICBnZXQgbWVudGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW50aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmj5Dlj4rovpPlhaXphY3nva7lj4LmlbDvvIzlkIzml7bmlK/mjIHlpJrkuKrmj5Dlj4rop4TliJlcbiAgICAgKiBAdHlwZSBNZW50aW9uPGFueT5bXVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5TWVudGlvbicpIHNldCBtZW50aW9ucyh2YWx1ZTogTWVudGlvbjxhbnk+W10pIHtcbiAgICAgICAgdGhpcy5fbWVudGlvbnMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX21lbnRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLl9tZW50aW9ucyA9IHRoaXMuX21lbnRpb25zLm1hcChtZW50aW9uID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgIW1lbnRpb24udHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG1lbnRpb24gdHJpZ2dlciBpcyByZXF1aXJlZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9NRU5USU9OX0NPTkZJRywgbWVudGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBvcG92ZXIg5by55Ye65bGC5Y+C5pWw6YWN572uXG4gICAgICovXG4gICAgQElucHV0KCd0aHlQb3BvdmVyQ29uZmlnJykgcG9wb3ZlckNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZztcblxuICAgIC8qKlxuICAgICAqIOmAieaLqeWQjueahOWbnuiwg+WHveaVsFxuICAgICAqL1xuICAgIEBPdXRwdXQoJ3RoeVNlbGVjdFN1Z2dlc3Rpb24nKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnRpb25TdWdnZXN0aW9uU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBnZXQgaXNPcGVuZWQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIG9wZW5lZFN1Z2dlc3Rpb25zUmVmJCA9IG5ldyBTdWJqZWN0PFRoeVBvcG92ZXJSZWY8VGh5TWVudGlvblN1Z2dlc3Rpb25zPiB8IG51bGw+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2xcbiAgICApIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyID0gY3JlYXRlTWVudGlvbkFkYXB0ZXIoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIE1lbnRpb25JbnB1dG9yRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lucHV0JylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vbklucHV0KGV2ZW50KSk7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9uQ2xpY2soZXZlbnQpKTtcblxuICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG9wZW5lZFN1Z2dlc3Rpb25zUmVmID0+XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlLXN1YnNjcmliZSB0byBgc3VnZ2VzdGlvblNlbGVjdCRgIGV2ZXJ5IHRpbWUgdGhlIHN1Z2dlc3Rpb25zIGNvbXBvbmVudCBpcyByZS1jcmVhdGVkLFxuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHVuc3Vic2NyaWJlLCBpZiBpdCBnZXRzIGNsb3NlZC5cbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkU3VnZ2VzdGlvbnNSZWYgPyBvcGVuZWRTdWdnZXN0aW9uc1JlZi5jb21wb25lbnRJbnN0YW5jZS5zdWdnZXN0aW9uU2VsZWN0JCA6IEVNUFRZXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5hZGFwdGVyLmluc2VydE1lbnRpb24oZXZlbnQuaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW5wdXRPclRleHRhcmVhKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMubG9va3VwKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmxvb2t1cChldmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb29rdXAoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWQgPSB0aGlzLmFkYXB0ZXIubG9va3VwKGV2ZW50LCB0aGlzLm1lbnRpb25zKTtcbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblN1Z2dlc3Rpb25zKG1hdGNoZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5TdWdnZXN0aW9ucyhtYXRjaGVkOiBNYXRjaGVkTWVudGlvbikge1xuICAgICAgICBpZiAoIXRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IENhcmV0UG9zaXRpb25lci5nZXRDYXJldFBvc2l0aW9uKGlucHV0RWxlbWVudCwgbWF0Y2hlZC5xdWVyeS5zdGFydCk7XG4gICAgICAgICAgICBjb25zdCBmb250U2l6ZSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZvbnRTaXplLCAxMCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oXG4gICAgICAgICAgICAgICAgVGh5TWVudGlvblN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICBQT1BPVkVSX0RFRkFVTFRfQ09ORklHLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcG9zaXRpb24ubGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBwb3NpdGlvbi50b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGZvbnRTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZm9udFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW50aW9uOiBtYXRjaGVkLm1lbnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ29uZmlnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZiQubmV4dCh0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmLmNvbXBvbmVudEluc3RhbmNlLnNlYXJjaChtYXRjaGVkLnF1ZXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VTdWdnZXN0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWVudGlvbi9tZW50aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBeUQsTUFBTSxXQUFXLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVwRCxNQUFNLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBRXJFLE1BQU0sc0JBQXNCLEdBQUc7SUFDM0IsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxTQUFTLEVBQUUsWUFBWTtDQUMxQixDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBcUI7SUFDN0MsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsZUFBZTtJQUMxQixNQUFNLEVBQUUsQ0FBQyxJQUFZLEVBQUUsSUFBOEIsRUFBRSxFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixP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QUM7WUFFSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDOzhHQXJKUSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQW1CNEIsUUFBUTtzQkFBaEMsS0FBSzt1QkFBQyxZQUFZO2dCQWVRLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUtNLE1BQU07c0JBQXBDLE1BQU07dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlckNvbmZpZywgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFTVBUWSwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgY3JlYXRlTWVudGlvbkFkYXB0ZXIsIE1hdGNoZWRNZW50aW9uLCBNZW50aW9uQWRhcHRlciwgTWVudGlvbklucHV0b3JFbGVtZW50IH0gZnJvbSAnLi9hZGFwdGVyJztcbmltcG9ydCB7IENhcmV0UG9zaXRpb25lciB9IGZyb20gJy4vY2FyZXQtcG9zaXRpb25lcic7XG5pbXBvcnQgeyBNZW50aW9uLCBNZW50aW9uRGVmYXVsdERhdGFJdGVtLCBNZW50aW9uU3VnZ2VzdGlvblNlbGVjdEV2ZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoeU1lbnRpb25TdWdnZXN0aW9ucyB9IGZyb20gJy4vc3VnZ2VzdGlvbnMvc3VnZ2VzdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IGlzSW5wdXRPclRleHRhcmVhIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuY29uc3QgU1VHR0VTVElPTl9CQUNLRFJPUF9DTEFTUyA9ICd0aHktbWVudGlvbi1zdWdnZXN0aW9ucy1iYWNrZHJvcCc7XG5cbmNvbnN0IFBPUE9WRVJfREVGQVVMVF9DT05GSUcgPSB7XG4gICAgYmFja2Ryb3BDbGFzczogU1VHR0VTVElPTl9CQUNLRFJPUF9DTEFTUyxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0J1xufTtcblxuY29uc3QgREVGQVVMVF9NRU5USU9OX0NPTkZJRzogUGFydGlhbDxNZW50aW9uPiA9IHtcbiAgICBhdXRvQ2xvc2U6IHRydWUsXG4gICAgZW1wdHlUZXh0OiAn5peg5Yy56YWN5pWw5o2u77yM5oyJ56m65qC85a6M5oiQ6L6T5YWlJyxcbiAgICBzZWFyY2g6ICh0ZXJtOiBzdHJpbmcsIGRhdGE6IE1lbnRpb25EZWZhdWx0RGF0YUl0ZW1bXSkgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWl0ZW0ubmFtZSB8fCBpdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vKipcbiAqIEBuYW1lIHRoeU1lbnRpb25cbiAqIEBvcmRlciAxMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aHlNZW50aW9uXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlNZW50aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSB0aHlQb3BvdmVyID0gaW5qZWN0KFRoeVBvcG92ZXIpO1xuICAgIHByaXZhdGUgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KSE7XG5cbiAgICBwcml2YXRlIGFkYXB0ZXI6IE1lbnRpb25BZGFwdGVyID0gbnVsbDtcblxuICAgIHB1YmxpYyBvcGVuZWRTdWdnZXN0aW9uc1JlZjogVGh5UG9wb3ZlclJlZjxUaHlNZW50aW9uU3VnZ2VzdGlvbnM+O1xuXG4gICAgcHJpdmF0ZSBfbWVudGlvbnM6IE1lbnRpb248YW55PltdO1xuICAgIGdldCBtZW50aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaPkOWPiui+k+WFpemFjee9ruWPguaVsO+8jOWQjOaXtuaUr+aMgeWkmuS4quaPkOWPiuinhOWImVxuICAgICAqIEB0eXBlIE1lbnRpb248YW55PltdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlNZW50aW9uJykgc2V0IG1lbnRpb25zKHZhbHVlOiBNZW50aW9uPGFueT5bXSkge1xuICAgICAgICB0aGlzLl9tZW50aW9ucyA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fbWVudGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX21lbnRpb25zID0gdGhpcy5fbWVudGlvbnMubWFwKG1lbnRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAhbWVudGlvbi50cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbWVudGlvbiB0cmlnZ2VyIGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX01FTlRJT05fQ09ORklHLCBtZW50aW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUG9wb3ZlciDlvLnlh7rlsYLlj4LmlbDphY3nva5cbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVBvcG92ZXJDb25maWcnKSBwb3BvdmVyQ29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICog6YCJ5oup5ZCO55qE5Zue6LCD5Ye95pWwXG4gICAgICovXG4gICAgQE91dHB1dCgndGh5U2VsZWN0U3VnZ2VzdGlvbicpIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudGlvblN1Z2dlc3Rpb25TZWxlY3RFdmVudD4oKTtcblxuICAgIGdldCBpc09wZW5lZCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgb3BlbmVkU3VnZ2VzdGlvbnNSZWYkID0gbmV3IFN1YmplY3Q8VGh5UG9wb3ZlclJlZjxUaHlNZW50aW9uU3VnZ2VzdGlvbnM+IHwgbnVsbD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50UmVmID0gdGhpcy5lbGVtZW50UmVmO1xuXG4gICAgICAgIHRoaXMuYWRhcHRlciA9IGNyZWF0ZU1lbnRpb25BZGFwdGVyKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBNZW50aW9uSW5wdXRvckVsZW1lbnQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpbnB1dCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMub25JbnB1dChldmVudCkpO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vbkNsaWNrKGV2ZW50KSk7XG5cbiAgICAgICAgdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZiRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChvcGVuZWRTdWdnZXN0aW9uc1JlZiA9PlxuICAgICAgICAgICAgICAgICAgICAvLyBSZS1zdWJzY3JpYmUgdG8gYHN1Z2dlc3Rpb25TZWxlY3QkYCBldmVyeSB0aW1lIHRoZSBzdWdnZXN0aW9ucyBjb21wb25lbnQgaXMgcmUtY3JlYXRlZCxcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB1bnN1YnNjcmliZSwgaWYgaXQgZ2V0cyBjbG9zZWQuXG4gICAgICAgICAgICAgICAgICAgIG9wZW5lZFN1Z2dlc3Rpb25zUmVmID8gb3BlbmVkU3VnZ2VzdGlvbnNSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VnZ2VzdGlvblNlbGVjdCQgOiBFTVBUWVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuYWRhcHRlci5pbnNlcnRNZW50aW9uKGV2ZW50Lml0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChpc0lucHV0T3JUZXh0YXJlYSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmxvb2t1cChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5sb29rdXAoZXZlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9va3VwKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5hZGFwdGVyLmxvb2t1cChldmVudCwgdGhpcy5tZW50aW9ucyk7XG4gICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5TdWdnZXN0aW9ucyhtYXRjaGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuU3VnZ2VzdGlvbnMobWF0Y2hlZDogTWF0Y2hlZE1lbnRpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBDYXJldFBvc2l0aW9uZXIuZ2V0Q2FyZXRQb3NpdGlvbihpbnB1dEVsZW1lbnQsIG1hdGNoZWQucXVlcnkuc3RhcnQpO1xuICAgICAgICAgICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5mb250U2l6ZSwgMTApO1xuICAgICAgICAgICAgdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKFxuICAgICAgICAgICAgICAgIFRoeU1lbnRpb25TdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgUE9QT1ZFUl9ERUZBVUxUX0NPTkZJRyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHBvc2l0aW9uLmxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogcG9zaXRpb24udG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBmb250U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGZvbnRTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudGlvbjogbWF0Y2hlZC5tZW50aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbmZpZ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMub3BlbmVkU3VnZ2VzdGlvbnNSZWYkLm5leHQodGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZikge1xuICAgICAgICAgICAgdGhpcy5vcGVuZWRTdWdnZXN0aW9uc1JlZi5jb21wb25lbnRJbnN0YW5jZS5zZWFyY2gobWF0Y2hlZC5xdWVyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlU3VnZ2VzdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFN1Z2dlc3Rpb25zUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -2,20 +2,19 @@ import { ThySelectionList } from 'ngx-tethys/list';
|
|
|
2
2
|
import { ThyPopoverRef } from 'ngx-tethys/popover';
|
|
3
3
|
import { Observable, of, Subject } from 'rxjs';
|
|
4
4
|
import { catchError, debounceTime, switchMap, take } from 'rxjs/operators';
|
|
5
|
-
import { Component, ElementRef, HostBinding, NgZone } from '@angular/core';
|
|
5
|
+
import { Component, ElementRef, HostBinding, NgZone, inject } from '@angular/core';
|
|
6
6
|
import { ThyListOption } from 'ngx-tethys/shared';
|
|
7
7
|
import { ThyLoading } from 'ngx-tethys/loading';
|
|
8
|
-
import {
|
|
8
|
+
import { NgTemplateOutlet, SlicePipe } from '@angular/common';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "ngx-tethys/popover";
|
|
11
10
|
/**
|
|
12
11
|
* @private
|
|
13
12
|
*/
|
|
14
13
|
export class ThyMentionSuggestions {
|
|
15
|
-
constructor(
|
|
16
|
-
this.elementRef =
|
|
17
|
-
this.ngZone =
|
|
18
|
-
this.popoverRef =
|
|
14
|
+
constructor() {
|
|
15
|
+
this.elementRef = inject(ElementRef);
|
|
16
|
+
this.ngZone = inject(NgZone);
|
|
17
|
+
this.popoverRef = inject(ThyPopoverRef);
|
|
19
18
|
this.suggestionSelect$ = new Subject();
|
|
20
19
|
this.debounce = 150;
|
|
21
20
|
this.loadingDone = true;
|
|
@@ -68,14 +67,14 @@ export class ThyMentionSuggestions {
|
|
|
68
67
|
ngOnDestroy() {
|
|
69
68
|
this.search$.complete();
|
|
70
69
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionSuggestions, deps: [
|
|
72
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionSuggestions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyMentionSuggestions, isStandalone: true, selector: "thy-mention-suggestions", host: { properties: { "class.thy-mention-suggestions": "this.suggestionsClass" } }, ngImport: i0, template: "@if (mention.suggestionsTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"mention.suggestionsTemplateRef\" [ngTemplateOutletContext]=\"{ data: data }\"></ng-container>\n} @else {\n <thy-loading [thyDone]=\"loadingDone\"></thy-loading>\n @if (loadingDone) {\n @if (data?.length > 0) {\n <thy-selection-list\n thyBindKeyEventContainer=\"body\"\n thyMultiple=\"false\"\n thyAutoActiveFirstItem=\"true\"\n thySpaceKeyEnabled=\"false\"\n [thyScrollContainer]=\"elementRef\"\n (thySelectionChange)=\"selectionChange($event)\">\n @for (item of data | slice: 0 : mention.limit; track $index) {\n <thy-list-option [thyValue]=\"item\">\n @if (mention?.displayTemplateRef) {\n <ng-template *ngTemplateOutlet=\"mention?.displayTemplateRef; context: { $implicit: item }\"></ng-template>\n } @else {\n {{ item['name'] || '' }}\n }\n </thy-list-option>\n }\n </thy-selection-list>\n } @else {\n <div class=\"text-desc p-3\">\n {{ mention?.emptyText }}\n </div>\n }\n }\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }, { kind: "component", type: ThySelectionList, selector: "thy-selection-list,[thy-selection-list]", inputs: ["thyMultiple", "thyBindKeyEventContainer", "thyScrollContainer", "thyBeforeKeydown", "thyUniqueKey", "thyCompareWith", "thyLayout", "thyAutoActiveFirstItem", "thySize", "thySpaceKeyEnabled"], outputs: ["thySelectionChange"] }, { kind: "component", type: ThyListOption, selector: "thy-list-option,[thy-list-option]", inputs: ["id", "thyValue", "thyDisabled"] }, { kind: "pipe", type: SlicePipe, name: "slice" }] }); }
|
|
73
72
|
}
|
|
74
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyMentionSuggestions, decorators: [{
|
|
75
74
|
type: Component,
|
|
76
|
-
args: [{ selector: 'thy-mention-suggestions', standalone: true, imports: [
|
|
77
|
-
}], ctorParameters: () => [
|
|
75
|
+
args: [{ selector: 'thy-mention-suggestions', standalone: true, imports: [NgTemplateOutlet, ThyLoading, ThySelectionList, ThyListOption, SlicePipe], template: "@if (mention.suggestionsTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"mention.suggestionsTemplateRef\" [ngTemplateOutletContext]=\"{ data: data }\"></ng-container>\n} @else {\n <thy-loading [thyDone]=\"loadingDone\"></thy-loading>\n @if (loadingDone) {\n @if (data?.length > 0) {\n <thy-selection-list\n thyBindKeyEventContainer=\"body\"\n thyMultiple=\"false\"\n thyAutoActiveFirstItem=\"true\"\n thySpaceKeyEnabled=\"false\"\n [thyScrollContainer]=\"elementRef\"\n (thySelectionChange)=\"selectionChange($event)\">\n @for (item of data | slice: 0 : mention.limit; track $index) {\n <thy-list-option [thyValue]=\"item\">\n @if (mention?.displayTemplateRef) {\n <ng-template *ngTemplateOutlet=\"mention?.displayTemplateRef; context: { $implicit: item }\"></ng-template>\n } @else {\n {{ item['name'] || '' }}\n }\n </thy-list-option>\n }\n </thy-selection-list>\n } @else {\n <div class=\"text-desc p-3\">\n {{ mention?.emptyText }}\n </div>\n }\n }\n}\n" }]
|
|
76
|
+
}], ctorParameters: () => [], propDecorators: { suggestionsClass: [{
|
|
78
77
|
type: HostBinding,
|
|
79
78
|
args: ['class.thy-mention-suggestions']
|
|
80
79
|
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21lbnRpb24vc3VnZ2VzdGlvbnMvc3VnZ2VzdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL21lbnRpb24vc3VnZ2VzdGlvbnMvc3VnZ2VzdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl0RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBbUI5QjtRQWxCQSxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUNqRCxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxNQUFNLENBQXFCLGFBQWEsQ0FBQyxDQUFDO1FBTS9ELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFnQyxDQUFDO1FBRWhFLGFBQVEsR0FBRyxH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QWdCLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQzt3REFtQnJDLGdCQUFnQjtzQkFBN0QsV0FBVzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlTZWxlY3Rpb25MaXN0Q2hhbmdlLCBUaHlTZWxlY3Rpb25MaXN0IH0gZnJvbSAnbmd4LXRldGh5cy9saXN0JztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2Vla1F1ZXJ5UmVzdWx0IH0gZnJvbSAnLi4vYWRhcHRlci9hZGFwdGVyJztcbmltcG9ydCB7IE1lbnRpb24sIE1lbnRpb25EZWZhdWx0RGF0YUl0ZW0sIE1lbnRpb25TdWdnZXN0aW9uU2VsZWN0RXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoeUxpc3RPcHRpb24gfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBUaHlMb2FkaW5nIH0gZnJvbSAnbmd4LXRldGh5cy9sb2FkaW5nJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktbWVudGlvbi1zdWdnZXN0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1Z2dlc3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBUaHlMb2FkaW5nLCBUaHlTZWxlY3Rpb25MaXN0LCBUaHlMaXN0T3B0aW9uLCBTbGljZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeU1lbnRpb25TdWdnZXN0aW9uczxUSXRlbSA9IE1lbnRpb25EZWZhdWx0RGF0YUl0ZW0+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSBwb3BvdmVyUmVmID0gaW5qZWN0PFRoeVBvcG92ZXJSZWY8YW55Pj4oVGh5UG9wb3ZlclJlZik7XG5cbiAgICBkYXRhOiBUSXRlbVtdO1xuXG4gICAgbWVudGlvbjogTWVudGlvbjxUSXRlbT47XG5cbiAgICBzdWdnZXN0aW9uU2VsZWN0JCA9IG5ldyBTdWJqZWN0PE1lbnRpb25TdWdnZXN0aW9uU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBkZWJvdW5jZSA9IDE1MDtcblxuICAgIGxvYWRpbmdEb25lID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgc2VhcmNoJCA9IG5ldyBTdWJqZWN0PFNlZWtRdWVyeVJlc3VsdD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LW1lbnRpb24tc3VnZ2VzdGlvbnMnKSBzdWdnZXN0aW9uc0NsYXNzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNlYXJjaCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm1lbnRpb24uc2VhcmNoKHF1ZXJ5LnRlcm0sIHRoaXMubWVudGlvbi5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdEb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGRhdGEgYXMgT2JzZXJ2YWJsZTxUSXRlbVtdPikucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGRhdGEgYXMgVEl0ZW1bXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YSB8fCBbXTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWVudGlvbi5hdXRvQ2xvc2UgJiYgdGhpcy5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW50aW9uLnBvcG92ZXJDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLm1lbnRpb24ucG9wb3ZlckNsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaChxdWVyeTogU2Vla1F1ZXJ5UmVzdWx0KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoJC5uZXh0KHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBzZWxlY3QoaXRlbTogVEl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25TZWxlY3QkLm5leHQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZShldmVudDogVGh5U2VsZWN0aW9uTGlzdENoYW5nZTxUSXRlbT4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3QoZXZlbnQudmFsdWUsIGV2ZW50LmV2ZW50KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2gkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiQGlmIChtZW50aW9uLnN1Z2dlc3Rpb25zVGVtcGxhdGVSZWYpIHtcbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtZW50aW9uLnN1Z2dlc3Rpb25zVGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiBkYXRhIH1cIj48L25nLWNvbnRhaW5lcj5cbn0gQGVsc2Uge1xuICA8dGh5LWxvYWRpbmcgW3RoeURvbmVdPVwibG9hZGluZ0RvbmVcIj48L3RoeS1sb2FkaW5nPlxuICBAaWYgKGxvYWRpbmdEb25lKSB7XG4gICAgQGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICA8dGh5LXNlbGVjdGlvbi1saXN0XG4gICAgICAgIHRoeUJpbmRLZXlFdmVudENvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0aHlNdWx0aXBsZT1cImZhbHNlXCJcbiAgICAgICAgdGh5QXV0b0FjdGl2ZUZpcnN0SXRlbT1cInRydWVcIlxuICAgICAgICB0aHlTcGFjZUtleUVuYWJsZWQ9XCJmYWxzZVwiXG4gICAgICAgIFt0aHlTY3JvbGxDb250YWluZXJdPVwiZWxlbWVudFJlZlwiXG4gICAgICAgICh0aHlTZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBkYXRhIHwgc2xpY2U6IDAgOiBtZW50aW9uLmxpbWl0OyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8dGh5LWxpc3Qtb3B0aW9uIFt0aHlWYWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICBAaWYgKG1lbnRpb24/LmRpc3BsYXlUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW50aW9uPy5kaXNwbGF5VGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IGl0ZW1bJ25hbWUnXSB8fCAnJyB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGh5LWxpc3Qtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3RoeS1zZWxlY3Rpb24tbGlzdD5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRlc2MgcC0zXCI+XG4gICAgICAgIHt7IG1lbnRpb24/LmVtcHR5VGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG59XG4iXX0=
|