ngx-tethys 17.0.0 → 17.0.2
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 +26 -7
- package/action/action.component.d.ts +3 -0
- package/affix/affix.component.d.ts +2 -0
- package/alert/alert.component.d.ts +1 -0
- package/anchor/anchor.component.d.ts +3 -0
- package/arrow-switcher/arrow-switcher.component.d.ts +1 -0
- package/autocomplete/autocomplete.component.d.ts +2 -3
- package/autocomplete/autocomplete.trigger.directive.d.ts +3 -0
- package/avatar/avatar.component.d.ts +4 -0
- package/back-top/back-top.component.d.ts +1 -0
- package/badge/badge.component.d.ts +5 -0
- package/button/button-icon.component.d.ts +2 -0
- package/button/button.component.d.ts +2 -0
- package/card/card.component.d.ts +3 -0
- package/card/content.component.d.ts +2 -1
- package/carousel/carousel.component.d.ts +5 -0
- package/cascader/cascader-li.component.d.ts +9 -2
- package/cascader/cascader-search-option.component.d.ts +7 -2
- package/cascader/cascader.component.d.ts +23 -2
- package/cascader/styles/cascader.scss +1 -0
- package/cascader/types.d.ts +1 -0
- package/checkbox/checkbox.component.d.ts +1 -0
- package/collapse/collapse-item.component.d.ts +2 -0
- package/collapse/collapse.component.d.ts +1 -0
- package/color-picker/color-picker-panel.component.d.ts +1 -0
- package/color-picker/color-picker.component.d.ts +7 -1
- package/copy/copy.directive.d.ts +1 -0
- package/core/behaviors/decorators.d.ts +6 -0
- package/date-picker/abstract-picker.component.d.ts +8 -1
- package/date-picker/abstract-picker.directive.d.ts +4 -0
- package/date-picker/base-picker.component.d.ts +2 -0
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -0
- package/date-picker/lib/popups/inner-popup.component.d.ts +1 -0
- package/date-picker/picker.component.d.ts +1 -0
- package/date-range/date-range.component.d.ts +2 -0
- package/dialog/body/dialog-body.component.d.ts +2 -1
- package/dialog/footer/dialog-footer.component.d.ts +1 -0
- package/dialog/header/dialog-header.component.d.ts +1 -0
- package/divider/divider.component.d.ts +2 -0
- package/drag-drop/drag-handle.directive.d.ts +1 -0
- package/drag-drop/drag.directive.d.ts +1 -0
- package/drag-drop/drop-container.directive.d.ts +1 -0
- package/dropdown/dropdown-menu-item.directive.d.ts +3 -1
- package/dropdown/dropdown-menu.component.d.ts +1 -0
- package/dropdown/dropdown.directive.d.ts +3 -0
- package/empty/empty.component.d.ts +1 -0
- package/esm2022/action/action.component.mjs +9 -22
- package/esm2022/affix/affix.component.mjs +8 -15
- package/esm2022/alert/alert.component.mjs +5 -10
- package/esm2022/anchor/anchor.component.mjs +10 -20
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +5 -11
- package/esm2022/autocomplete/autocomplete.component.mjs +5 -23
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +9 -20
- package/esm2022/avatar/avatar.component.mjs +14 -30
- package/esm2022/back-top/back-top.component.mjs +6 -10
- package/esm2022/badge/badge.component.mjs +15 -37
- package/esm2022/button/button-icon.component.mjs +9 -20
- package/esm2022/button/button.component.mjs +7 -16
- package/esm2022/card/card.component.mjs +6 -20
- package/esm2022/card/content.component.mjs +5 -6
- package/esm2022/carousel/carousel.component.mjs +13 -30
- package/esm2022/cascader/cascader-li.component.mjs +16 -31
- package/esm2022/cascader/cascader-search-option.component.mjs +12 -21
- package/esm2022/cascader/cascader.component.mjs +32 -52
- package/esm2022/cascader/types.mjs +1 -1
- package/esm2022/checkbox/checkbox.component.mjs +7 -13
- package/esm2022/collapse/collapse-item.component.mjs +8 -15
- package/esm2022/collapse/collapse.component.mjs +5 -10
- package/esm2022/color-picker/color-picker-panel.component.mjs +5 -10
- package/esm2022/color-picker/color-picker.component.mjs +17 -37
- package/esm2022/copy/copy.directive.mjs +5 -10
- package/esm2022/core/behaviors/decorators.mjs +7 -44
- package/esm2022/date-picker/abstract-picker.component.mjs +21 -45
- package/esm2022/date-picker/abstract-picker.directive.mjs +11 -27
- package/esm2022/date-picker/base-picker.component.mjs +8 -15
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -10
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +4 -2
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +7 -6
- package/esm2022/date-picker/picker.component.mjs +6 -10
- package/esm2022/date-range/date-range.component.mjs +7 -15
- package/esm2022/dialog/body/dialog-body.component.mjs +6 -6
- package/esm2022/dialog/footer/dialog-footer.component.mjs +6 -13
- package/esm2022/dialog/header/dialog-header.component.mjs +6 -10
- package/esm2022/divider/divider.component.mjs +7 -15
- package/esm2022/drag-drop/drag-handle.directive.mjs +5 -13
- package/esm2022/drag-drop/drag.directive.mjs +5 -11
- package/esm2022/drag-drop/drop-container.directive.mjs +5 -10
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +9 -19
- package/esm2022/dropdown/dropdown-menu.component.mjs +6 -9
- package/esm2022/dropdown/dropdown.directive.mjs +8 -22
- package/esm2022/empty/empty.component.mjs +7 -13
- package/esm2022/flexible-text/flexible-text.component.mjs +4 -11
- package/esm2022/form/form-group-error/form-group-error.component.mjs +5 -10
- package/esm2022/form/form-group-label.directive.mjs +6 -6
- package/esm2022/form/form-group.component.mjs +13 -17
- package/esm2022/icon/icon.component.mjs +6 -20
- package/esm2022/image/image.directive.mjs +7 -15
- package/esm2022/input/input-search.component.mjs +6 -11
- package/esm2022/input/input.component.mjs +7 -15
- package/esm2022/input-number/input-number.component.mjs +12 -25
- package/esm2022/layout/header.component.mjs +9 -19
- package/esm2022/layout/sidebar-header.component.mjs +5 -10
- package/esm2022/layout/sidebar.component.mjs +22 -45
- package/esm2022/list/list.component.mjs +5 -11
- package/esm2022/list/selection/selection-list.mjs +13 -10
- package/esm2022/loading/loading.component.mjs +9 -20
- package/esm2022/menu/group/menu-group.component.mjs +12 -38
- package/esm2022/menu/item/action/menu-item-action.component.mjs +5 -10
- package/esm2022/menu/item/name/menu-item-name.component.mjs +5 -10
- package/esm2022/menu/menu.component.mjs +5 -10
- package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +6 -6
- package/esm2022/nav/nav-ink-bar.directive.mjs +7 -15
- package/esm2022/nav/nav-item.directive.mjs +10 -20
- package/esm2022/nav/nav.component.mjs +12 -25
- package/esm2022/pagination/pagination.component.mjs +18 -68
- package/esm2022/popover/popover.directive.mjs +12 -33
- package/esm2022/progress/progress-circle.component.mjs +9 -20
- package/esm2022/progress/progress-strip.component.mjs +5 -11
- package/esm2022/progress/progress.component.mjs +11 -23
- package/esm2022/property/properties.component.mjs +5 -10
- package/esm2022/property/property-item.component.mjs +8 -15
- package/esm2022/property-operation/property-operation.component.mjs +16 -37
- package/esm2022/radio/group/radio-group.component.mjs +6 -21
- package/esm2022/rate/rate-item.component.mjs +5 -10
- package/esm2022/rate/rate.component.mjs +16 -25
- package/esm2022/resizable/resizable.directive.mjs +24 -62
- package/esm2022/resizable/resize-handle.component.mjs +6 -10
- package/esm2022/resizable/resize-handles.component.mjs +5 -10
- package/esm2022/segment/segment-item.component.mjs +5 -10
- package/esm2022/segment/segment.component.mjs +7 -16
- package/esm2022/select/custom-select/custom-select.component.mjs +30 -65
- package/esm2022/select/native-select/native-select.component.mjs +6 -10
- package/esm2022/shared/base-form-check.component.mjs +10 -20
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -15
- package/esm2022/shared/directives/thy-scroll.directive.mjs +6 -13
- package/esm2022/shared/directives/thy-show.mjs +5 -11
- package/esm2022/shared/option/group/option-group.component.mjs +5 -10
- package/esm2022/shared/option/list-option/list-option.component.mjs +6 -13
- package/esm2022/shared/option/option.component.mjs +5 -11
- package/esm2022/shared/select/select-control/select-control.component.mjs +17 -44
- package/esm2022/skeleton/skeleton-circle.component.mjs +6 -9
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +6 -9
- package/esm2022/skeleton/skeleton.component.mjs +5 -10
- package/esm2022/skeleton/stylized/bullet-list.component.mjs +6 -9
- package/esm2022/skeleton/stylized/list.component.mjs +6 -9
- package/esm2022/skeleton/stylized/paragraph.component.mjs +6 -9
- package/esm2022/slide/slide-body/slide-body-section.component.mjs +6 -6
- package/esm2022/slider/slider.component.mjs +18 -35
- package/esm2022/space/space.component.mjs +6 -10
- package/esm2022/stepper/step-header.component.mjs +9 -20
- package/esm2022/stepper/stepper.component.mjs +7 -16
- package/esm2022/switch/switch.component.mjs +12 -17
- package/esm2022/table/table-column.component.mjs +9 -31
- package/esm2022/table/table-skeleton.component.mjs +8 -14
- package/esm2022/table/table.component.mjs +32 -83
- package/esm2022/tabs/tab.component.mjs +5 -10
- package/esm2022/tabs/tabs.component.mjs +8 -15
- package/esm2022/tag/tag.component.mjs +6 -10
- package/esm2022/time-picker/time-picker-panel.component.mjs +8 -15
- package/esm2022/time-picker/time-picker.component.mjs +20 -46
- package/esm2022/timeline/timeline.component.mjs +5 -10
- package/esm2022/tooltip/tooltip.directive.mjs +11 -34
- package/esm2022/tree/tree-node.component.mjs +17 -40
- package/esm2022/tree/tree.component.mjs +19 -47
- package/esm2022/tree-select/tree-select.component.mjs +18 -40
- package/esm2022/upload/file-select-base.mjs +7 -6
- package/esm2022/upload/file-select.component.mjs +11 -26
- package/esm2022/version.mjs +2 -2
- package/esm2022/vote/vote.component.mjs +11 -33
- package/esm2022/watermark/watermark.directive.mjs +6 -10
- package/fesm2022/ngx-tethys-action.mjs +9 -21
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +6 -14
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +4 -9
- package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +8 -19
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +4 -10
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +14 -39
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +14 -29
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +5 -9
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +14 -36
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +13 -30
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +8 -23
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +12 -29
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +55 -95
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +5 -12
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +10 -20
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +19 -42
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +4 -9
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +6 -43
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +48 -94
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +6 -14
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +13 -21
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +6 -14
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +10 -25
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +19 -42
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +5 -12
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +3 -10
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +19 -25
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +5 -19
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +7 -14
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +11 -24
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +10 -21
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +31 -64
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +16 -18
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +8 -19
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +20 -55
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +28 -55
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +17 -67
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +11 -32
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +20 -45
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +14 -36
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +10 -21
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +5 -19
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +18 -30
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +29 -73
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +10 -21
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +32 -70
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +49 -105
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +20 -38
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +6 -5
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +17 -34
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +5 -9
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +13 -31
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +11 -16
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +43 -120
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +10 -20
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +5 -9
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +24 -55
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +4 -9
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +10 -33
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +17 -39
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +33 -82
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +15 -28
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +10 -32
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +5 -9
- 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 -0
- package/form/form-group-error/form-group-error.component.d.ts +1 -0
- package/form/form-group-label.directive.d.ts +2 -1
- package/form/form-group.component.d.ts +5 -2
- package/icon/icon.component.d.ts +3 -0
- package/image/image.directive.d.ts +2 -0
- package/input/input-search.component.d.ts +1 -0
- package/input/input.component.d.ts +2 -0
- package/input-number/input-number.component.d.ts +4 -0
- package/layout/header.component.d.ts +5 -2
- package/layout/sidebar-header.component.d.ts +1 -0
- package/layout/sidebar.component.d.ts +14 -4
- package/list/list.component.d.ts +1 -0
- package/list/selection/selection-list.d.ts +4 -1
- package/loading/loading.component.d.ts +4 -2
- package/menu/group/menu-group.component.d.ts +6 -0
- package/menu/item/action/menu-item-action.component.d.ts +1 -0
- package/menu/item/name/menu-item-name.component.d.ts +1 -0
- package/menu/menu.component.d.ts +1 -0
- package/nav/icon-nav/icon-nav-link.directive.d.ts +2 -1
- package/nav/nav-ink-bar.directive.d.ts +2 -0
- package/nav/nav-item.directive.d.ts +3 -0
- package/nav/nav.component.d.ts +4 -0
- package/package.json +7 -7
- package/pagination/pagination.component.d.ts +11 -0
- package/popover/popover.directive.d.ts +5 -0
- package/progress/progress-circle.component.d.ts +3 -0
- package/progress/progress-strip.component.d.ts +1 -0
- package/progress/progress.component.d.ts +3 -0
- package/property/properties.component.d.ts +1 -0
- package/property/property-item.component.d.ts +2 -0
- package/property-operation/property-operation.component.d.ts +5 -0
- package/radio/group/radio-group.component.d.ts +2 -2
- package/rate/rate-item.component.d.ts +1 -0
- package/rate/rate.component.d.ts +5 -1
- package/resizable/resizable.directive.d.ts +10 -1
- package/resizable/resize-handle.component.d.ts +1 -0
- package/resizable/resize-handles.component.d.ts +1 -0
- package/resizable/styles/resizable.scss +1 -0
- package/schematics/dependencies.js +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +1 -0
- package/segment/segment.component.d.ts +2 -0
- package/select/custom-select/custom-select.component.d.ts +12 -1
- package/select/native-select/native-select.component.d.ts +1 -0
- package/shared/base-form-check.component.d.ts +2 -0
- package/shared/directives/thy-autofocus.directive.d.ts +3 -1
- package/shared/directives/thy-scroll.directive.d.ts +1 -0
- package/shared/directives/thy-show.d.ts +1 -0
- package/shared/option/group/option-group.component.d.ts +1 -0
- package/shared/option/list-option/list-option.component.d.ts +1 -0
- package/shared/option/option.component.d.ts +1 -0
- package/shared/option/styles/select-dropdown.scss +1 -0
- package/shared/select/select-control/select-control.component.d.ts +7 -0
- package/skeleton/skeleton-circle.component.d.ts +1 -0
- package/skeleton/skeleton-rectangle.component.d.ts +1 -0
- package/skeleton/skeleton.component.d.ts +1 -0
- package/skeleton/stylized/bullet-list.component.d.ts +1 -0
- package/skeleton/stylized/list.component.d.ts +1 -0
- package/skeleton/stylized/paragraph.component.d.ts +1 -0
- package/slide/slide-body/slide-body-section.component.d.ts +2 -1
- package/slider/slider.component.d.ts +6 -1
- package/space/space.component.d.ts +1 -0
- package/stepper/step-header.component.d.ts +3 -0
- package/stepper/stepper.component.d.ts +2 -0
- package/switch/switch.component.d.ts +3 -1
- package/table/table-column.component.d.ts +7 -2
- package/table/table-skeleton.component.d.ts +2 -0
- package/table/table.component.d.ts +14 -0
- package/tabs/tab.component.d.ts +1 -0
- package/tabs/tabs.component.d.ts +2 -0
- package/tag/tag.component.d.ts +1 -0
- package/time-picker/time-picker-panel.component.d.ts +2 -0
- package/time-picker/time-picker.component.d.ts +6 -2
- package/timeline/timeline.component.d.ts +1 -0
- package/tooltip/tooltip.directive.d.ts +5 -0
- package/tree/tree-node.component.d.ts +7 -0
- package/tree/tree.component.d.ts +8 -0
- package/tree-select/tree-select.component.d.ts +7 -0
- package/upload/file-select-base.d.ts +1 -0
- package/upload/file-select.component.d.ts +3 -0
- package/vote/vote.component.d.ts +4 -2
- package/watermark/watermark.directive.d.ts +1 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TabIndexDisabledControlValueAccessorMixin, getFlexiblePositions, InputBoolean, ThyClickDispatcher, EXPANDED_DROPDOWN_POSITIONS } from 'ngx-tethys/core';
|
|
1
|
+
import { TabIndexDisabledControlValueAccessorMixin, getFlexiblePositions, ThyClickDispatcher, EXPANDED_DROPDOWN_POSITIONS } from 'ngx-tethys/core';
|
|
3
2
|
import { elementMatchClosest, isArray, isObject, produce, warnDeprecation } from 'ngx-tethys/util';
|
|
4
3
|
import { of, Subject } from 'rxjs';
|
|
5
4
|
import { take, takeUntil } from 'rxjs/operators';
|
|
6
5
|
import { CdkConnectedOverlay, CdkOverlayOrigin, ViewportRuler } from '@angular/cdk/overlay';
|
|
7
6
|
import { isPlatformBrowser, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';
|
|
8
|
-
import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, NgZone, Output, PLATFORM_ID, TemplateRef, ViewChild } from '@angular/core';
|
|
7
|
+
import { booleanAttribute, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, NgZone, Output, PLATFORM_ID, TemplateRef, ViewChild } from '@angular/core';
|
|
9
8
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
10
9
|
import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
11
10
|
import { ThyEmpty } from 'ngx-tethys/empty';
|
|
@@ -410,7 +409,7 @@ export class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
410
409
|
}
|
|
411
410
|
}
|
|
412
411
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyTreeSelect, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }, { token: i1.ThyClickDispatcher }, { token: i2.ViewportRuler }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
413
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
412
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyTreeSelect, isStandalone: true, selector: "thy-tree-select", inputs: { thyTreeNodes: "thyTreeNodes", thyVirtualScroll: ["thyVirtualScroll", "thyVirtualScroll", booleanAttribute], thyPrimaryKey: "thyPrimaryKey", thyShowKey: "thyShowKey", thyChildCountKey: "thyChildCountKey", thyAllowClear: ["thyAllowClear", "thyAllowClear", booleanAttribute], thyMultiple: ["thyMultiple", "thyMultiple", booleanAttribute], thyDisable: ["thyDisable", "thyDisable", booleanAttribute], thyPlaceholder: "thyPlaceholder", thySize: "thySize", thyEmptyOptionsText: "thyEmptyOptionsText", thyHiddenNodeKey: "thyHiddenNodeKey", thyDisableNodeKey: "thyDisableNodeKey", thyAsyncNode: ["thyAsyncNode", "thyAsyncNode", booleanAttribute], thyShowWholeName: ["thyShowWholeName", "thyShowWholeName", booleanAttribute], thyShowSearch: ["thyShowSearch", "thyShowSearch", booleanAttribute], thyIconType: "thyIconType", thyHiddenNodeFn: "thyHiddenNodeFn", thyDisableNodeFn: "thyDisableNodeFn", thyGetNodeChildren: "thyGetNodeChildren" }, outputs: { thyExpandStatusChange: "thyExpandStatusChange" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)" }, properties: { "attr.tabindex": "tabIndex", "class.thy-select-custom": "this.treeSelectClass", "class.thy-select": "this.isTreeSelect", "class.menu-is-opened": "this.expandTreeSelectOptions", "class.thy-select-custom--multiple": "this.isMulti" } }, providers: [
|
|
414
413
|
{
|
|
415
414
|
provide: NG_VALUE_ACCESSOR,
|
|
416
415
|
useExisting: forwardRef(() => ThyTreeSelect),
|
|
@@ -418,34 +417,6 @@ export class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
418
417
|
}
|
|
419
418
|
], queries: [{ propertyName: "thyTreeSelectTriggerDisplayRef", first: true, predicate: ["thyTreeSelectTriggerDisplay"], descendants: true }, { propertyName: "treeNodeTemplateRef", first: true, predicate: ["treeNodeTemplate"], descendants: true }], viewQueries: [{ propertyName: "cdkOverlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, static: true }, { propertyName: "cdkConnectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, static: true }, { propertyName: "customDisplayTemplate", first: true, predicate: ["customDisplayTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n cdkOverlayOrigin\n thySelectControl\n (click)=\"openSelectPop()\"\n #origin=\"cdkOverlayOrigin\"\n [thyPanelOpened]=\"expandTreeSelectOptions\"\n [thySelectedOptions]=\"selectedValueObject\"\n [thyIsMultiple]=\"thyMultiple\"\n [thyAllowClear]=\"thyAllowClear\"\n [thySize]=\"thySize\"\n [thyPlaceholder]=\"placeholder\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyShowSearch]=\"thyShowSearch\"\n [thyDisabled]=\"thyDisable\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnClear)=\"clearSelectedValue($event)\"\n (thyOnRemove)=\"removeMultipleSelectedNode($event)\"\n (thyOnSearch)=\"searchValue($event)\">\n <ng-template #customDisplayTemplate let-node>\n <ng-container *ngIf=\"thyTreeSelectTriggerDisplayRef; else noneTemplate\">\n <ng-template [ngTemplateOutlet]=\"thyTreeSelectTriggerDisplayRef\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n </ng-container>\n <ng-template #noneTemplate>\n {{ node[thyShowKey] }}\n </ng-template>\n </ng-template>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayMinWidth]=\"cdkConnectOverlayWidth\"\n [cdkConnectedOverlayOpen]=\"expandTreeSelectOptions\"\n cdkConnectedOverlayTransformOriginOn=\".thy-tree-select-dropdown\"\n [cdkConnectedOverlayPositions]=\"expandedDropdownPositions\"\n (detach)=\"close()\">\n <thy-tree-select-nodes\n thyStopPropagation\n [thyVirtualScroll]=\"thyVirtualScroll\"\n [treeNodes]=\"thyVirtualScroll ? virtualTreeNodes : treeNodes\"\n [@scaleYMotion]=\"'enter'\">\n </thy-tree-select-nodes>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(() => CdkOverlayOrigin), selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i0.forwardRef(() => ThySelectControl), selector: "thy-select-control,[thySelectControl]", inputs: ["thyPanelOpened", "thyIsMultiple", "thyShowSearch", "thySelectedOptions", "thyDisabled", "customDisplayTemplate", "thyAllowClear", "thyPlaceholder", "thySize", "thyMaxTagCount", "thyBorderless", "thyPreset"], outputs: ["thyOnSearch", "thyOnRemove", "thyOnClear", "thyOnBlur"] }, { kind: "directive", type: i0.forwardRef(() => NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => CdkConnectedOverlay), selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: i0.forwardRef(() => ThyTreeSelectNodes), selector: "thy-tree-select-nodes", inputs: ["treeNodes", "thyVirtualScroll"] }, { kind: "directive", type: i0.forwardRef(() => ThyStopPropagationDirective), selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }], animations: [scaleYMotion] }); }
|
|
420
419
|
}
|
|
421
|
-
__decorate([
|
|
422
|
-
InputBoolean(),
|
|
423
|
-
__metadata("design:type", Boolean)
|
|
424
|
-
], ThyTreeSelect.prototype, "thyVirtualScroll", void 0);
|
|
425
|
-
__decorate([
|
|
426
|
-
InputBoolean(),
|
|
427
|
-
__metadata("design:type", Boolean)
|
|
428
|
-
], ThyTreeSelect.prototype, "thyAllowClear", void 0);
|
|
429
|
-
__decorate([
|
|
430
|
-
InputBoolean(),
|
|
431
|
-
__metadata("design:type", Object)
|
|
432
|
-
], ThyTreeSelect.prototype, "thyMultiple", void 0);
|
|
433
|
-
__decorate([
|
|
434
|
-
InputBoolean(),
|
|
435
|
-
__metadata("design:type", Object)
|
|
436
|
-
], ThyTreeSelect.prototype, "thyDisable", void 0);
|
|
437
|
-
__decorate([
|
|
438
|
-
InputBoolean(),
|
|
439
|
-
__metadata("design:type", Object)
|
|
440
|
-
], ThyTreeSelect.prototype, "thyAsyncNode", void 0);
|
|
441
|
-
__decorate([
|
|
442
|
-
InputBoolean(),
|
|
443
|
-
__metadata("design:type", Object)
|
|
444
|
-
], ThyTreeSelect.prototype, "thyShowWholeName", void 0);
|
|
445
|
-
__decorate([
|
|
446
|
-
InputBoolean(),
|
|
447
|
-
__metadata("design:type", Object)
|
|
448
|
-
], ThyTreeSelect.prototype, "thyShowSearch", void 0);
|
|
449
420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyTreeSelect, decorators: [{
|
|
450
421
|
type: Component,
|
|
451
422
|
args: [{ selector: 'thy-tree-select', providers: [
|
|
@@ -500,7 +471,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
500
471
|
}], thyTreeNodes: [{
|
|
501
472
|
type: Input
|
|
502
473
|
}], thyVirtualScroll: [{
|
|
503
|
-
type: Input
|
|
474
|
+
type: Input,
|
|
475
|
+
args: [{ transform: booleanAttribute }]
|
|
504
476
|
}], thyPrimaryKey: [{
|
|
505
477
|
type: Input
|
|
506
478
|
}], thyShowKey: [{
|
|
@@ -508,11 +480,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
508
480
|
}], thyChildCountKey: [{
|
|
509
481
|
type: Input
|
|
510
482
|
}], thyAllowClear: [{
|
|
511
|
-
type: Input
|
|
483
|
+
type: Input,
|
|
484
|
+
args: [{ transform: booleanAttribute }]
|
|
512
485
|
}], thyMultiple: [{
|
|
513
|
-
type: Input
|
|
486
|
+
type: Input,
|
|
487
|
+
args: [{ transform: booleanAttribute }]
|
|
514
488
|
}], thyDisable: [{
|
|
515
|
-
type: Input
|
|
489
|
+
type: Input,
|
|
490
|
+
args: [{ transform: booleanAttribute }]
|
|
516
491
|
}], thyPlaceholder: [{
|
|
517
492
|
type: Input
|
|
518
493
|
}], thySize: [{
|
|
@@ -524,11 +499,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
524
499
|
}], thyDisableNodeKey: [{
|
|
525
500
|
type: Input
|
|
526
501
|
}], thyAsyncNode: [{
|
|
527
|
-
type: Input
|
|
502
|
+
type: Input,
|
|
503
|
+
args: [{ transform: booleanAttribute }]
|
|
528
504
|
}], thyShowWholeName: [{
|
|
529
|
-
type: Input
|
|
505
|
+
type: Input,
|
|
506
|
+
args: [{ transform: booleanAttribute }]
|
|
530
507
|
}], thyShowSearch: [{
|
|
531
|
-
type: Input
|
|
508
|
+
type: Input,
|
|
509
|
+
args: [{ transform: booleanAttribute }]
|
|
532
510
|
}], thyIconType: [{
|
|
533
511
|
type: Input
|
|
534
512
|
}], thyHiddenNodeFn: [{
|
|
@@ -674,4 +652,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
674
652
|
}], thyVirtualScroll: [{
|
|
675
653
|
type: Input
|
|
676
654
|
}] } });
|
|
677
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHlDQUF5QyxFQUN6QyxvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQiwyQkFBMkIsRUFDOUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTBCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFDTixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2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cUIsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxJQUF1QjtRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQXZIUSxrQkFBa0I7a0dBQWxCLGtCQUFrQixtT0U1a0IvQix3a0ZBcURBLDRDRnVnQlEsSUFBSSw2RkFDSixLQUFLLG1IQUNMLGdCQUFnQixvSkFDaEIsd0JBQXdCLGlKQUN4Qix5QkFBeUIsc0lBQ3pCLGVBQWUsNkxBQ2YsUUFBUSw4VEFDUixPQUFPLG9GQUNQLE9BQU8sMkVBQ1AsT0FBTyxzTUFDUCxlQUFlOzsyRkFNVixrQkFBa0I7a0JBckI5QixTQUFTOytCQUNJLHVCQUF1QixjQUVyQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGVBQWU7d0JBQ2YsUUFBUTt3QkFDUixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxlQUFlO3FCQUNsQixRQUNLO3dCQUNGLGlCQUFpQixFQUFFLElBQUk7cUJBQzFCOytFQUdxQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBSVAsU0FBUztzQkFBckIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluLFxuICAgIGdldEZsZXhpYmxlUG9zaXRpb25zLFxuICAgIElucHV0Qm9vbGVhbixcbiAgICBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TXG59IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZSB9IGZyb20gJ25neC10ZXRoeXMvdHJlZSc7XG5pbXBvcnQgeyBlbGVtZW50TWF0Y2hDbG9zZXN0LCBpc0FycmF5LCBpc09iamVjdCwgcHJvZHVjZSwgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsIENka1ZpcnR1YWxGb3JPZiwgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBUaHlFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q29udHJvbCwgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5VHJlZVNlbGVjdE5vZGUsIFRoeVRyZWVTZWxlY3RUeXBlIH0gZnJvbSAnLi90cmVlLXNlbGVjdC5jbGFzcyc7XG5pbXBvcnQgeyBzY2FsZVlNb3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuXG50eXBlIElucHV0U2l6ZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAnJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclRyZWVEYXRhKHRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBzZWFyY2hLZXk6IHN0cmluZyA9ICduYW1lJykge1xuICAgIGNvbnN0IGZpbHRlck5vZGVzID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlLCByZXN1bHQ6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgaWYgKG5vZGVbc2VhcmNoS2V5XSAmJiBub2RlW3NlYXJjaEtleV0uaW5kZXhPZihzZWFyY2hUZXh0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IGZpbHRlck5vZGVzKGN1cnJlbnQsIHByZXZpb3VzKSwgW10gYXMgVGh5VHJlZVNlbGVjdE5vZGVbXSk7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHsgLi4ubm9kZSwgY2hpbGRyZW46IG5vZGVzLCBleHBhbmQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgdHJlZURhdGEgPSB0cmVlTm9kZXMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gZmlsdGVyTm9kZXMoY3VycmVudCwgcHJldmlvdXMpLCBbXSBhcyBUaHlUcmVlU2VsZWN0Tm9kZVtdKTtcbiAgICByZXR1cm4gdHJlZURhdGE7XG59XG5cbi8qKlxuICog5qCR6YCJ5oup57uE5Lu2XG4gKiBAbmFtZSB0aHktdHJlZS1zZWxlY3RcbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlU2VsZWN0KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgICAgICBUaHlTZWxlY3RDb250cm9sLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IFRoeVRyZWVTZWxlY3ROb2RlcyksXG4gICAgICAgIFRoeVN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoJGV2ZW50KSdcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtzY2FsZVlNb3Rpb25dXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVTZWxlY3QgZXh0ZW5kcyBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0LWN1c3RvbScpIHRyZWVTZWxlY3RDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1zZWxlY3QnKSBpc1RyZWVTZWxlY3QgPSB0cnVlO1xuXG4gICAgLy8g6I+c5Y2V5piv5ZCm5bGV5byAXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tZW51LWlzLW9wZW5lZCcpIGV4cGFuZFRyZWVTZWxlY3RPcHRpb25zID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1zZWxlY3QtY3VzdG9tLS1tdWx0aXBsZScpIGlzTXVsdGkgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0cmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW107XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRWYWx1ZTogYW55O1xuXG4gICAgcHVibGljIHNlbGVjdGVkTm9kZTogVGh5VHJlZVNlbGVjdE5vZGU7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuXG4gICAgcHVibGljIGZsYXR0ZW5UcmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHZpcnR1YWxUcmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyBjZGtDb25uZWN0T3ZlcmxheVdpZHRoID0gMDtcblxuICAgIHB1YmxpYyBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXTtcblxuICAgIHB1YmxpYyBleHBhbmRlZERyb3Bkb3duUG9zaXRpb25zID0gRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TO1xuXG4gICAgcHVibGljIGljb25zOiB7IGV4cGFuZDogc3RyaW5nOyBjb2xsYXBzZTogc3RyaW5nOyBnYXA/OiBudW1iZXIgfSA9IHtcbiAgICAgICAgZXhwYW5kOiAnYW5nbGUtZG93bicsXG4gICAgICAgIGNvbGxhcHNlOiAnYW5nbGUtcmlnaHQnLFxuICAgICAgICBnYXA6IDE1XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGxlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgdmFsdWVJc09iamVjdCA9IGZhbHNlO1xuXG4gICAgb3JpZ2luVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdO1xuXG4gICAgQENvbnRlbnRDaGlsZCgndGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5JylcbiAgICB0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXlSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAQ29udGVudENoaWxkKCd0cmVlTm9kZVRlbXBsYXRlJylcbiAgICB0cmVlTm9kZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luLCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtPdmVybGF5T3JpZ2luOiBDZGtPdmVybGF5T3JpZ2luO1xuXG4gICAgQFZpZXdDaGlsZChDZGtDb25uZWN0ZWRPdmVybGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtDb25uZWN0ZWRPdmVybGF5OiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuXG4gICAgQFZpZXdDaGlsZCgnY3VzdG9tRGlzcGxheVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY3VzdG9tRGlzcGxheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogdHJlZU5vZGVzIOaVsOaNrlxuICAgICAqIEB0eXBlIFRoeVRyZWVTZWxlY3ROb2RlW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUcmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgdGhpcy50cmVlTm9kZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vcmlnaW5UcmVlTm9kZXMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGxlZCkge1xuICAgICAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlvIDlkK/omZrmi5/mu5rliqhcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5VmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5ZSv5LiA5qCH6K+GXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UHJpbWFyeUtleSA9ICdfaWQnO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5pi+56S655qE5a2X5q61IGtleVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNob3dLZXkgPSAnbmFtZSc7XG5cbiAgICBASW5wdXQoKSB0aHlDaGlsZENvdW50S2V5ID0gJ2NoaWxkQ291bnQnO1xuXG4gICAgLyoqXG4gICAgICog5Y2V6YCJ5pe277yM5piv5ZCm5pi+56S65riF6Zmk5oyJ6ZKu77yM5b2T5Li6IHRydWUg5pe277yM5pi+56S65riF6Zmk5oyJ6ZKuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QWxsb3dDbGVhcjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5TXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqOagkemAieaLqeWZqO+8jOW9k+S4uiB0cnVlIOemgeeUqOagkemAieaLqeWZqFxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5RGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgZ2V0IHRoeURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlEaXNhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagkemAieaLqeahhum7mOiupOaWh+Wtl1xuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqeiKgueCuSc7XG5cbiAgICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaOp+WItuagkemAieaLqeeahOi+k+WFpeahhuWkp+Wwj1xuICAgICAqIEB0eXBlIHhzIHwgc20gfCBtZCB8IGRlZmF1bHQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IElucHV0U2l6ZTtcblxuICAgIC8qKlxuICAgICAqIOaUueWPmOepuumAiemhueeahOaDheWGteS4i+eahOaPkOekuuaWh+acrFxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUVtcHR5T3B0aW9uc1RleHQgPSAn5pqC5pe25rKh5pyJ5pWw5o2u5Y+v6YCJJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpumakOiXj+iKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeUhpZGRlbk5vZGVGblxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhpZGRlbk5vZGVLZXkgPSAnaGlkZGVuJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuemgeeUqOiKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeURpc2FibGVOb2RlRm5cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEaXNhYmxlTm9kZUtleSA9ICdkaXNhYmxlZCc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblvILmraXliqDovb3oioLngrnnmoTlrZDoioLngrko5pi+56S65Yqg6L2954q25oCBKe+8jOW9k+S4uiB0cnVlIOaXtu+8jOW8guatpeiOt+WPllxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXN5bmNOb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrlhajlkI1cbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVNob3dXaG9sZU5hbWUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuaQnOe0olxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5U2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5Zu+5qCH57G75Z6L77yM5pSv5oyBIGRlZmF1bHQgfCBlc3BlY2lhbO+8jOW3suW6n+W8g1xuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5SWNvblR5cGUodHlwZTogVGh5VHJlZVNlbGVjdFR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKCdUaGlzIHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0eXBlID09PSAnZXNwZWNpYWwnKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmljb25zID0geyBleHBhbmQ6ICdtaW51cy1zcXVhcmUnLCBjb2xsYXBzZTogJ3BsdXMtc3F1YXJlJywgZ2FwOiAyMCB9O1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5pY29ucyA9IHsgZXhwYW5kOiAnY2FyZXQtcmlnaHQtZG93bicsIGNvbGxhcHNlOiAnY2FyZXQtcmlnaHQnLCBnYXA6IDE1IH07XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbpmpDol4/oioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKSzkvJjlhYjnuqfkvY7kuo4gdGh5SGlkZGVuTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIaWRkZW5Ob2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbnpoHnlKjoioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+S9juS6jiB0aHlEaXNhYmxlTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpc2FibGVOb2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZDtcblxuICAgIC8qKlxuICAgICAqIOiOt+WPluiKgueCueeahOWtkOiKgueCue+8jOi/lOWbniBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPuOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG9mKFtdKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUdldE5vZGVDaGlsZHJlbjogKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gb2YoW10pO1xuXG4gICAgLyoqXG4gICAgICog5qCR6YCJ5oup57uE5Lu25bGV5byA5ZKM5oqY5Y+g54q25oCB5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUV4cGFuZFN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ2V0TmdNb2RlbFR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSAhdGhpcy5zZWxlY3RlZFZhbHVlWzBdIHx8IGlzT2JqZWN0KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSBpc09iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkRmxhdHRlblRyZWVOb2RlcygpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVHJlZU5vZGVzID0gdGhpcy5nZXRGbGF0dGVuVHJlZU5vZGVzKHRoaXMudHJlZU5vZGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZsYXR0ZW5UcmVlTm9kZXMocm9vdFRyZWVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gdGhpcy50cmVlTm9kZXMpIHtcbiAgICAgICAgY29uc3QgZm9yRWFjaFRyZWUgPSAodHJlZTogVGh5VHJlZVNlbGVjdE5vZGVbXSwgZm46IGFueSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW10pID0+IHtcbiAgICAgICAgICAgIHRyZWUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVHJlZShpdGVtLmNoaWxkcmVuLCBmbiwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmb3JFYWNoVHJlZShyb290VHJlZXMsIChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gISFub2RlLmV4cGFuZCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0TmdNb2RlbFR5cGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgdGh5Q2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKCdib3R0b20nLCA0KTtcbiAgICAgICAgdGhpcy5pc011bHRpID0gdGhpcy50aHlNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIDEuIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIC8vIDIuIOaJk+W8gOmAieaLqeahhuWQjuWmguaenOeCueWHu+W8ueahhuWGheWvvOiHtCBpbnB1dCDlpLHnhKbvvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoJGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJ3RoeS10cmVlLXNlbGVjdCcsICd0aHktdHJlZS1zZWxlY3Qtbm9kZXMnXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFZhbHVlT2JqZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IGZpbHRlclRyZWVEYXRhKHRoaXMub3JpZ2luVHJlZU5vZGVzLCBzZWFyY2hUZXh0LnRyaW0oKSwgdGhpcy50aHlTaG93S2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSB0aGlzLmNka092ZXJsYXlPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbk5vZGVzKFxuICAgICAgICBub2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICByZXN1bHROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICBwYXJlbnRQcmltYXJ5VmFsdWU6IHN0cmluZ1tdID0gW11cbiAgICApOiBUaHlUcmVlU2VsZWN0Tm9kZVtdIHtcbiAgICAgICAgcmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQobm9kZXMpO1xuICAgICAgICBsZXQgbm9kZXNMZWFmczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuICAgICAgICAobm9kZXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudFZhbHVlcyA9IHBhcmVudFByaW1hcnlWYWx1ZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBpdGVtLnBhcmVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUxlYWZzID0gdGhpcy5mbGF0dGVuTm9kZXMoaXRlbS5jaGlsZHJlbiwgcmVzdWx0Tm9kZXMsIFsuLi5wYXJlbnRQcmltYXJ5VmFsdWUsIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIG5vZGVzTGVhZnMgPSBbLi4ubm9kZXNMZWFmcywgLi4ubm9kZUxlYWZzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbLi4ubm9kZXMsIC4uLm5vZGVzTGVhZnNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRUcmVlTm9kZSh2YWx1ZTogc3RyaW5nKTogVGh5VHJlZVNlbGVjdE5vZGUge1xuICAgICAgICByZXR1cm4gKHRoaXMuZmxhdHRlblRyZWVOb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgLy8g5aSa6YCJ5pWw5o2u5Yid5aeL5YyWXG4gICAgICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0ICYmIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kVHJlZU5vZGUoaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDljZXpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkVmFsdWUpLmluZGV4T2YodGhpcy50aHlQcmltYXJ5S2V5KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy50aHlQcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdFBvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSAhdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucztcbiAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGFuZ2VTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVJc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoZXZlbnQ6IHsgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGU7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTm9kZShldmVudC5pdGVtLCBldmVudC4kZXZlbnRPcmlnaW4pO1xuICAgIH1cblxuICAgIC8vIHRoeU11bHRpcGxlID0gdHJ1ZSDml7bvvIznp7vpmaTmlbDmja7ml7bosIPnlKhcbiAgICByZW1vdmVTZWxlY3RlZE5vZGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5yZW1vdmUoKGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Tm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBwcm9kdWNlKHRoaXMuc2VsZWN0ZWROb2RlcykuYWRkKG5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50aHlHZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN1YnNjcmliZSkge1xuICAgICAgICAgICAgcmVzdWx0LnBpcGUoKS5zdWJzY3JpYmUoKGRhdGE6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKGRhdGEsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgWy4uLm5vZGUucGFyZW50VmFsdWVzLCBub2RlW3RoaXMudGh5UHJpbWFyeUtleV1dKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlck5vZGVzID0gbm9kZXMuZmlsdGVyKChpdGVtOiBUaHlUcmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmxhdHRlblRyZWVOb2Rlcy5maW5kKGhhc0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0l0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBbLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVzLCAuLi5vdGhlck5vZGVzXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgREVGQVVMVF9JVEVNX1NJWkUgPSA0MDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdC1ub2RlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LW5vZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RmxleGlibGVUZXh0XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0Tm9kZXMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzczogc3RyaW5nO1xuXG4gICAgbm9kZUxpc3Q6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCB0cmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgY29uc3QgdHJlZVNlbGVjdEhlaWdodCA9IHRoaXMuZGVmYXVsdEl0ZW1TaXplICogdmFsdWUubGVuZ3RoO1xuICAgICAgICAvLyDniLbnuqforr7nva7kuoZtYXgtaGVpZ2h0OjMwMCAmIHBhZGRpbmc6MTAgMDsg5pWF5q2k5aSE5pyA5aSa6K6+572uMjgw77yM5ZCm5YiZ5bCG5Ye6546w5rua5Yqo5p2hXG4gICAgICAgIHRoaXMudGh5VmlydHVhbEhlaWdodCA9IHRyZWVTZWxlY3RIZWlnaHQgPiAzMDAgPyAnMjgwcHgnIDogYCR7dHJlZVNlbGVjdEhlaWdodH1weGA7XG4gICAgICAgIHRoaXMubm9kZUxpc3QgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB0aHlWaXJ0dWFsU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcHJpbWFyeUtleSA9IHRoaXMucGFyZW50LnRoeVByaW1hcnlLZXk7XG5cbiAgICBwdWJsaWMgc2hvd0tleSA9IHRoaXMucGFyZW50LnRoeVNob3dLZXk7XG5cbiAgICBwdWJsaWMgaXNNdWx0aXBsZSA9IHRoaXMucGFyZW50LnRoeU11bHRpcGxlO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSB0aGlzLnBhcmVudC52YWx1ZUlzT2JqZWN0O1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWUgPSB0aGlzLnBhcmVudC5zZWxlY3RlZFZhbHVlO1xuXG4gICAgcHVibGljIGNoaWxkQ291bnRLZXkgPSB0aGlzLnBhcmVudC50aHlDaGlsZENvdW50S2V5O1xuXG4gICAgcHVibGljIHRyZWVOb2RlVGVtcGxhdGVSZWYgPSB0aGlzLnBhcmVudC50cmVlTm9kZVRlbXBsYXRlUmVmO1xuXG4gICAgcHVibGljIGRlZmF1bHRJdGVtU2l6ZSA9IERFRkFVTFRfSVRFTV9TSVpFO1xuXG4gICAgcHVibGljIHRoeVZpcnR1YWxIZWlnaHQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBUaHlUcmVlU2VsZWN0KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY2xhc3MgPSB0aGlzLmlzTXVsdGlwbGUgPyAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duIHRoeS10cmVlLXNlbGVjdC1kcm9wZG93bi1tdWx0aXBsZScgOiAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duJztcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzU2VsZWN0ZWQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZXMgfHwgW10pLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy5wcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlICYmIHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZVt0aGlzLnByaW1hcnlLZXldID09PSBub2RlW3RoaXMucHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzSGlkZGVuKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVt0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzRGlzYWJsZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlW3RoaXMucGFyZW50LnRoeURpc2FibGVOb2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlRm4obm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyZWVOb2RlSXNFeHBhbmQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgbGV0IGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSAhISh0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnBhcmVudFZhbHVlcy5pbmRleE9mKG5vZGVbdGhpcy5wcmltYXJ5S2V5XSkgPiAtMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVcbiAgICAgICAgICAgICAgICA/IHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZS5wYXJlbnRWYWx1ZXMuaW5kZXhPZihub2RlW3RoaXMucHJpbWFyeUtleV0pID4gLTFcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kID0gbm9kZS5leHBhbmQgfHwgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpIDwgMCAmJiBpc1NlbGVjdGVkTm9kZVBhcmVudCk7XG4gICAgICAgIG5vZGUuZXhwYW5kID0gaXNFeHBhbmQ7XG4gICAgICAgIHJldHVybiBpc0V4cGFuZDtcbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldE5vZGVDaGlsZHJlbihub2RlKTtcbiAgICB9XG5cbiAgICBzZWxlY3RUcmVlTm9kZShldmVudDogRXZlbnQsIG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50cmVlTm9kZUlzRGlzYWJsZShub2RlKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2VsZWN0Tm9kZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVFeHBhbmRUb2dnbGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpID4gLTEpIHtcbiAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gIW5vZGUuZXhwYW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZU5vZGVJc0V4cGFuZChub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmV4cGFuZCAmJiB0aGlzLnBhcmVudC50aHlBc3luY05vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9kZUNoaWxkcmVuKG5vZGUpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMucGFyZW50LnNldFBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLnRoeVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFiVHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIiwiPGRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gIHRoeVNlbGVjdENvbnRyb2xcbiAgKGNsaWNrKT1cIm9wZW5TZWxlY3RQb3AoKVwiXG4gICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgW3RoeVBhbmVsT3BlbmVkXT1cImV4cGFuZFRyZWVTZWxlY3RPcHRpb25zXCJcbiAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFZhbHVlT2JqZWN0XCJcbiAgW3RoeUlzTXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICBbdGh5QWxsb3dDbGVhcl09XCJ0aHlBbGxvd0NsZWFyXCJcbiAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gIFt0aHlQbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtjdXN0b21EaXNwbGF5VGVtcGxhdGVdPVwiY3VzdG9tRGlzcGxheVRlbXBsYXRlXCJcbiAgW3RoeVNob3dTZWFyY2hdPVwidGh5U2hvd1NlYXJjaFwiXG4gIFt0aHlEaXNhYmxlZF09XCJ0aHlEaXNhYmxlXCJcbiAgKHRoeU9uQmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0ZWRWYWx1ZSgkZXZlbnQpXCJcbiAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZU11bHRpcGxlU2VsZWN0ZWROb2RlKCRldmVudClcIlxuICAodGh5T25TZWFyY2gpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbURpc3BsYXlUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOyBlbHNlIG5vbmVUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vbmVUZW1wbGF0ZT5cbiAgICAgIHt7IG5vZGVbdGh5U2hvd0tleV0gfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJwb3NpdGlvbnNcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoXT1cImNka0Nvbm5lY3RPdmVybGF5V2lkdGhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnNcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiZXhwYW5kZWREcm9wZG93blBvc2l0aW9uc1wiXG4gIChkZXRhY2gpPVwiY2xvc2UoKVwiPlxuICA8dGh5LXRyZWUtc2VsZWN0LW5vZGVzXG4gICAgdGh5U3RvcFByb3BhZ2F0aW9uXG4gICAgW3RoeVZpcnR1YWxTY3JvbGxdPVwidGh5VmlydHVhbFNjcm9sbFwiXG4gICAgW3RyZWVOb2Rlc109XCJ0aHlWaXJ0dWFsU2Nyb2xsID8gdmlydHVhbFRyZWVOb2RlcyA6IHRyZWVOb2Rlc1wiXG4gICAgW0BzY2FsZVlNb3Rpb25dPVwiJ2VudGVyJ1wiPlxuICA8L3RoeS10cmVlLXNlbGVjdC1ub2Rlcz5cbjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbnNcIiAqbmdJZj1cIm5vZGVMaXN0Py5sZW5ndGggPiAwOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1ub2RlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZVNlbGVjdE5vZGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnQgKm5nSWY9XCJ0aHlWaXJ0dWFsU2Nyb2xsXCIgW2l0ZW1TaXplXT1cImRlZmF1bHRJdGVtU2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwidGh5VmlydHVhbEhlaWdodFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0OyB0cmFja0J5OiB0YWJUcmFja0J5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gIDx0aHktZW1wdHkgY2xhc3M9XCJ0aHktc2VsZWN0LWVtcHR5LWNvbnRlbnRcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJwYXJlbnQudGh5RW1wdHlPcHRpb25zVGV4dFwiPjwvdGh5LWVtcHR5PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmVlU2VsZWN0Tm9kZSBsZXQtbm9kZT5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ0aHktb3B0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRyZWVOb2RlSXNTZWxlY3RlZChub2RlKSB9XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cmVlTm9kZUlzRGlzYWJsZShub2RlKVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQucHgnOiAyMCAqIG5vZGUubGV2ZWwgKyBwYXJlbnQuaWNvbnMuZ2FwIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFRyZWVOb2RlKCRldmVudCwgbm9kZSlcIlxuICAgICAgKm5nSWY9XCIhdHJlZU5vZGVJc0hpZGRlbihub2RlKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uLWljb25cIlxuICAgICAgICBbY2xhc3MuaW52aXNpYmxlXT1cIiEobm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCAobm9kZVtjaGlsZENvdW50S2V5XSAmJiBub2RlW2NoaWxkQ291bnRLZXldID4gMCkpXCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGVFeHBhbmRUb2dnbGUoJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJub2RlLWV4cGFuZC1pY29uXCIgW3RoeUljb25OYW1lXT1cInRyZWVOb2RlSXNFeHBhbmQobm9kZSkgPyBwYXJlbnQuaWNvbnMuZXhwYW5kIDogcGFyZW50Lmljb25zLmNvbGxhcHNlXCI+PC90aHktaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbi10ZXh0XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwidHJlZU5vZGVUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0Tm9kZVRleHRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVOb2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRleHQ+XG4gICAgICAgICAgPHNwYW4gIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwibm9kZVtzaG93S2V5XVwiPnt7IG5vZGVbc2hvd0tleV0gfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgICA8dGh5LWljb24gY2xhc3M9XCJjaGVja2VkLWljb25cIiAqbmdJZj1cImlzTXVsdGlwbGVcIiB0aHlJY29uTmFtZT1cImNoZWNrXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsICYmIHRyZWVOb2RlSXNFeHBhbmQobm9kZSkgJiYgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGUuY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
655
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUNBQXlDLEVBQ3pDLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzlCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUEwQixhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckcsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FB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LFdBQVcsRUFBRSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhLEVBQUUsSUFBdUI7UUFDN0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs4R0F2SFEsa0JBQWtCO2tHQUFsQixrQkFBa0IsbU9FNWtCL0Isd2tGQXFEQSw0Q0Z1Z0JRLElBQUksNkZBQ0osS0FBSyxtSEFDTCxnQkFBZ0Isb0pBQ2hCLHdCQUF3QixpSkFDeEIseUJBQXlCLHNJQUN6QixlQUFlLDZMQUNmLFFBQVEsOFRBQ1IsT0FBTyxvRkFDUCxPQUFPLDJFQUNQLE9BQU8sc01BQ1AsZUFBZTs7MkZBTVYsa0JBQWtCO2tCQXJCOUIsU0FBUzsrQkFDSSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxnQkFBZ0I7d0JBQ2hCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsZUFBZTtxQkFDbEIsUUFDSzt3QkFDRixpQkFBaUIsRUFBRSxJQUFJO3FCQUMxQjsrRUFHcUIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUlQLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpbixcbiAgICBnZXRGbGV4aWJsZVBvc2l0aW9ucyxcbiAgICBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TXG59IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZSB9IGZyb20gJ25neC10ZXRoeXMvdHJlZSc7XG5pbXBvcnQgeyBlbGVtZW50TWF0Y2hDbG9zZXN0LCBpc0FycmF5LCBpc09iamVjdCwgcHJvZHVjZSwgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCwgQ2RrVmlydHVhbEZvck9mLCBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IFRoeUVtcHR5IH0gZnJvbSAnbmd4LXRldGh5cy9lbXB0eSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlTZWxlY3RDb250cm9sLCBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBUaHlUcmVlU2VsZWN0Tm9kZSwgVGh5VHJlZVNlbGVjdFR5cGUgfSBmcm9tICcuL3RyZWUtc2VsZWN0LmNsYXNzJztcbmltcG9ydCB7IHNjYWxlWU1vdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5cbnR5cGUgSW5wdXRTaXplID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICcnO1xuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyVHJlZURhdGEodHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdLCBzZWFyY2hUZXh0OiBzdHJpbmcsIHNlYXJjaEtleTogc3RyaW5nID0gJ25hbWUnKSB7XG4gICAgY29uc3QgZmlsdGVyTm9kZXMgPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIHJlc3VsdDogVGh5VHJlZVNlbGVjdE5vZGVbXSkgPT4ge1xuICAgICAgICBpZiAobm9kZVtzZWFyY2hLZXldICYmIG5vZGVbc2VhcmNoS2V5XS5pbmRleE9mKHNlYXJjaFRleHQpICE9PSAtMSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IG5vZGUuY2hpbGRyZW4ucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gZmlsdGVyTm9kZXMoY3VycmVudCwgcHJldmlvdXMpLCBbXSBhcyBUaHlUcmVlU2VsZWN0Tm9kZVtdKTtcbiAgICAgICAgICAgIGlmIChub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geyAuLi5ub2RlLCBjaGlsZHJlbjogbm9kZXMsIGV4cGFuZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBjb25zdCB0cmVlRGF0YSA9IHRyZWVOb2Rlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBmaWx0ZXJOb2RlcyhjdXJyZW50LCBwcmV2aW91cyksIFtdIGFzIFRoeVRyZWVTZWxlY3ROb2RlW10pO1xuICAgIHJldHVybiB0cmVlRGF0YTtcbn1cblxuLyoqXG4gKiDmoJHpgInmi6nnu4Tku7ZcbiAqIEBuYW1lIHRoeS10cmVlLXNlbGVjdFxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyZWUtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeVRyZWVTZWxlY3QpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIFRoeVNlbGVjdENvbnRyb2wsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIGZvcndhcmRSZWYoKCkgPT4gVGh5VHJlZVNlbGVjdE5vZGVzKSxcbiAgICAgICAgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigkZXZlbnQpJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW3NjYWxlWU1vdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgVGh5VHJlZVNlbGVjdCBleHRlbmRzIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1zZWxlY3QtY3VzdG9tJykgdHJlZVNlbGVjdENsYXNzID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXNlbGVjdCcpIGlzVHJlZVNlbGVjdCA9IHRydWU7XG5cbiAgICAvLyDoj5zljZXmmK/lkKblsZXlvIBcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1lbnUtaXMtb3BlbmVkJykgZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXNlbGVjdC1jdXN0b20tLW11bHRpcGxlJykgaXNNdWx0aSA9IGZhbHNlO1xuXG4gICAgcHVibGljIHRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlOiBhbnk7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWROb2RlOiBUaHlUcmVlU2VsZWN0Tm9kZTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZE5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICBwdWJsaWMgZmxhdHRlblRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuXG4gICAgdmlydHVhbFRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuXG4gICAgcHVibGljIGNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSAwO1xuXG4gICAgcHVibGljIHBvc2l0aW9uczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdO1xuXG4gICAgcHVibGljIGV4cGFuZGVkRHJvcGRvd25Qb3NpdGlvbnMgPSBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlM7XG5cbiAgICBwdWJsaWMgaWNvbnM6IHsgZXhwYW5kOiBzdHJpbmc7IGNvbGxhcHNlOiBzdHJpbmc7IGdhcD86IG51bWJlciB9ID0ge1xuICAgICAgICBleHBhbmQ6ICdhbmdsZS1kb3duJyxcbiAgICAgICAgY29sbGFwc2U6ICdhbmdsZS1yaWdodCcsXG4gICAgICAgIGdhcDogMTVcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsbGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHB1YmxpYyB2YWx1ZUlzT2JqZWN0ID0gZmFsc2U7XG5cbiAgICBvcmlnaW5UcmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW107XG5cbiAgICBAQ29udGVudENoaWxkKCd0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXknKVxuICAgIHRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3RyZWVOb2RlVGVtcGxhdGUnKVxuICAgIHRyZWVOb2RlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKENka092ZXJsYXlPcmlnaW4sIHsgc3RhdGljOiB0cnVlIH0pIGNka092ZXJsYXlPcmlnaW46IENka092ZXJsYXlPcmlnaW47XG5cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXksIHsgc3RhdGljOiB0cnVlIH0pIGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICBAVmlld0NoaWxkKCdjdXN0b21EaXNwbGF5VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjdXN0b21EaXNwbGF5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiB0cmVlTm9kZXMg5pWw5o2uXG4gICAgICogQHR5cGUgVGh5VHJlZVNlbGVjdE5vZGVbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVRyZWVOb2Rlcyh2YWx1ZTogVGh5VHJlZVNlbGVjdE5vZGVbXSkge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9yaWdpblRyZWVOb2RlcyA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSB0aGlzLmZsYXR0ZW5Ob2Rlcyh0aGlzLnRyZWVOb2RlcywgdGhpcy5mbGF0dGVuVHJlZU5vZGVzLCBbXSk7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOW8gOWQr+iZmuaLn+a7muWKqFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlWaXJ0dWFsU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmoJHoioLngrnnmoTllK/kuIDmoIfor4ZcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQcmltYXJ5S2V5ID0gJ19pZCc7XG5cbiAgICAvKipcbiAgICAgKiDmoJHoioLngrnnmoTmmL7npLrnmoTlrZfmrrUga2V5XG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2hvd0tleSA9ICduYW1lJztcblxuICAgIEBJbnB1dCgpIHRoeUNoaWxkQ291bnRLZXkgPSAnY2hpbGRDb3VudCc7XG5cbiAgICAvKipcbiAgICAgKiDljZXpgInml7bvvIzmmK/lkKbmmL7npLrmuIXpmaTmjInpkq7vvIzlvZPkuLogdHJ1ZSDml7bvvIzmmL7npLrmuIXpmaTmjInpkq5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlBbGxvd0NsZWFyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55So5qCR6YCJ5oup5Zmo77yM5b2T5Li6IHRydWUg56aB55So5qCR6YCJ5oup5ZmoXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlEaXNhYmxlID0gZmFsc2U7XG5cbiAgICBnZXQgdGh5RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeURpc2FibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qCR6YCJ5oup5qGG6buY6K6k5paH5a2XXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXIgPSAn6K+36YCJ5oup6IqC54K5JztcblxuICAgIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5UGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5o6n5Yi25qCR6YCJ5oup55qE6L6T5YWl5qGG5aSn5bCPXG4gICAgICogQHR5cGUgeHMgfCBzbSB8IG1kIHwgZGVmYXVsdCB8IGxnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2l6ZTogSW5wdXRTaXplO1xuXG4gICAgLyoqXG4gICAgICog5pS55Y+Y56m66YCJ6aG555qE5oOF5Ya15LiL55qE5o+Q56S65paH5pysXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RW1wdHlPcHRpb25zVGV4dCA9ICfmmoLml7bmsqHmnInmlbDmja7lj6/pgIknO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm6ZqQ6JeP6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCnvvIzkvJjlhYjnuqfpq5jkuo4gdGh5SGlkZGVuTm9kZUZuXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SGlkZGVuTm9kZUtleSA9ICdoaWRkZW4nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm56aB55So6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCnvvIzkvJjlhYjnuqfpq5jkuo4gdGh5RGlzYWJsZU5vZGVGblxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpc2FibGVOb2RlS2V5ID0gJ2Rpc2FibGVkJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8guatpeWKoOi9veiKgueCueeahOWtkOiKgueCuSjmmL7npLrliqDovb3nirbmgIEp77yM5b2T5Li6IHRydWUg5pe277yM5byC5q2l6I635Y+WXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlBc3luY05vZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuWFqOWQjVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdGh5U2hvd1dob2xlTmFtZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pCc57SiXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0aHlTaG93U2VhcmNoID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDlm77moIfnsbvlnovvvIzmlK/mjIEgZGVmYXVsdCB8IGVzcGVjaWFs77yM5bey5bqf5byDXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlJY29uVHlwZSh0eXBlOiBUaHlUcmVlU2VsZWN0VHlwZSkge1xuICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oJ1RoaXMgcGFyYW1ldGVyIGhhcyBiZWVuIGRlcHJlY2F0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHR5cGUgPT09ICdlc3BlY2lhbCcpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuaWNvbnMgPSB7IGV4cGFuZDogJ21pbnVzLXNxdWFyZScsIGNvbGxhcHNlOiAncGx1cy1zcXVhcmUnLCBnYXA6IDIwIH07XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmljb25zID0geyBleHBhbmQ6ICdjYXJldC1yaWdodC1kb3duJywgY29sbGFwc2U6ICdjYXJldC1yaWdodCcsIGdhcDogMTUgfTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpumakOiXj+iKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwpLOS8mOWFiOe6p+S9juS6jiB0aHlIaWRkZW5Ob2RlS2V544CCXG4gICAgICogQGRlZmF1bHQgKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBib29sZWFuID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBub2RlLmhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhpZGRlbk5vZGVGbjogKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBib29sZWFuID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBub2RlLmhpZGRlbjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuemgeeUqOiKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn5L2O5LqOIHRoeURpc2FibGVOb2RlS2V544CCXG4gICAgICogQGRlZmF1bHQgKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBib29sZWFuID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBub2RlLmRpc2FibGVkXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RGlzYWJsZU5vZGVGbjogKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBib29sZWFuID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBub2RlLmRpc2FibGVkO1xuXG4gICAgLyoqXG4gICAgICog6I635Y+W6IqC54K555qE5a2Q6IqC54K577yM6L+U5ZueIE9ic2VydmFibGU8VGh5VHJlZVNlbGVjdE5vZGU+44CCXG4gICAgICogQGRlZmF1bHQgKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gb2YoW10pXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5R2V0Tm9kZUNoaWxkcmVuOiAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IE9ic2VydmFibGU8VGh5VHJlZVNlbGVjdE5vZGU+ID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBvZihbXSk7XG5cbiAgICAvKipcbiAgICAgKiDmoJHpgInmi6nnu4Tku7blsZXlvIDlkozmipjlj6DnirbmgIHkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RXhwYW5kU3RhdHVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9nZXROZ01vZGVsVHlwZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVJc09iamVjdCA9ICF0aGlzLnNlbGVjdGVkVmFsdWVbMF0gfHwgaXNPYmplY3QodGhpcy5zZWxlY3RlZFZhbHVlWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVJc09iamVjdCA9IGlzT2JqZWN0KHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRGbGF0dGVuVHJlZU5vZGVzKCkge1xuICAgICAgICB0aGlzLnZpcnR1YWxUcmVlTm9kZXMgPSB0aGlzLmdldEZsYXR0ZW5UcmVlTm9kZXModGhpcy50cmVlTm9kZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmxhdHRlblRyZWVOb2Rlcyhyb290VHJlZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSB0aGlzLnRyZWVOb2Rlcykge1xuICAgICAgICBjb25zdCBmb3JFYWNoVHJlZSA9ICh0cmVlOiBUaHlUcmVlU2VsZWN0Tm9kZVtdLCBmbjogYW55LCByZXN1bHQ6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXSkgPT4ge1xuICAgICAgICAgICAgdHJlZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvckVhY2hUcmVlKGl0ZW0uY2hpbGRyZW4sIGZuLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZvckVhY2hUcmVlKHJvb3RUcmVlcywgKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiAhIW5vZGUuZXhwYW5kKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXROZ01vZGVsVHlwZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWROb2RlcygpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IHN0cmluZyxcbiAgICAgICAgcHJpdmF0ZSB0aHlDbGlja0Rpc3BhdGNoZXI6IFRoeUNsaWNrRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gZ2V0RmxleGlibGVQb3NpdGlvbnMoJ2JvdHRvbScsIDQpO1xuICAgICAgICB0aGlzLmlzTXVsdGkgPSB0aGlzLnRoeU11bHRpcGxlO1xuICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSB0aGlzLmZsYXR0ZW5Ob2Rlcyh0aGlzLnRyZWVOb2RlcywgdGhpcy5mbGF0dGVuVHJlZU5vZGVzLCBbXSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWROb2RlcygpO1xuICAgICAgICB0aGlzLmluaXRpYWxsZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnRoeVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGbGF0dGVuVHJlZU5vZGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy50aHlDbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAuY2xpY2tlZCgwKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWV3cG9ydFJ1bGVyXG4gICAgICAgICAgICAuY2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Gb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgaW5wdXRFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uQmx1cigkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgLy8gMS4gVGFiIOiBmueEpuWQjuiHquWKqOiBmueEpuWIsCBpbnB1dCDovpPlhaXmoYbvvIzmraTliIbmlK/kuIvnm7TmjqXov5Tlm57vvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgLy8gMi4g5omT5byA6YCJ5oup5qGG5ZCO5aaC5p6c54K55Ye75by55qGG5YaF5a+86Ie0IGlucHV0IOWkseeEpu+8jOaXoOmcgOinpuWPkSBvblRvdWNoZWRGblxuICAgICAgICBpZiAoZWxlbWVudE1hdGNoQ2xvc2VzdCgkZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsIFsndGh5LXRyZWUtc2VsZWN0JywgJ3RoeS10cmVlLXNlbGVjdC1ub2RlcyddKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkVmFsdWVPYmplY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeU11bHRpcGxlID8gdGhpcy5zZWxlY3RlZE5vZGVzIDogdGhpcy5zZWxlY3RlZE5vZGU7XG4gICAgfVxuXG4gICAgc2VhcmNoVmFsdWUoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudHJlZU5vZGVzID0gZmlsdGVyVHJlZURhdGEodGhpcy5vcmlnaW5UcmVlTm9kZXMsIHNlYXJjaFRleHQudHJpbSgpLCB0aGlzLnRoeVNob3dLZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQb3NpdGlvbigpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmbGF0dGVuTm9kZXMoXG4gICAgICAgIG5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW10sXG4gICAgICAgIHJlc3VsdE5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW10sXG4gICAgICAgIHBhcmVudFByaW1hcnlWYWx1ZTogc3RyaW5nW10gPSBbXVxuICAgICk6IFRoeVRyZWVTZWxlY3ROb2RlW10ge1xuICAgICAgICByZXN1bHROb2RlcyA9IHJlc3VsdE5vZGVzLmNvbmNhdChub2Rlcyk7XG4gICAgICAgIGxldCBub2Rlc0xlYWZzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG4gICAgICAgIChub2RlcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0ucGFyZW50VmFsdWVzID0gcGFyZW50UHJpbWFyeVZhbHVlO1xuICAgICAgICAgICAgaXRlbS5sZXZlbCA9IGl0ZW0ucGFyZW50VmFsdWVzLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGlzQXJyYXkoaXRlbS5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlTGVhZnMgPSB0aGlzLmZsYXR0ZW5Ob2RlcyhpdGVtLmNoaWxkcmVuLCByZXN1bHROb2RlcywgWy4uLnBhcmVudFByaW1hcnlWYWx1ZSwgaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldXSk7XG4gICAgICAgICAgICAgICAgbm9kZXNMZWFmcyA9IFsuLi5ub2Rlc0xlYWZzLCAuLi5ub2RlTGVhZnNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFsuLi5ub2RlcywgLi4ubm9kZXNMZWFmc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmluZFRyZWVOb2RlKHZhbHVlOiBzdHJpbmcpOiBUaHlUcmVlU2VsZWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiAodGhpcy5mbGF0dGVuVHJlZU5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZE5vZGVzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAvLyDlpJrpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSXNPYmplY3QgJiYgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZFZhbHVlWzBdKS5pbmRleE9mKHRoaXMudGh5UHJpbWFyeUtleSkgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtW3RoaXMudGh5UHJpbWFyeUtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZFRyZWVOb2RlKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWNlemAieaVsOaNruWIneWni+WMllxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSXNPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZFRyZWVOb2RlKHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZFRyZWVOb2RlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0UG9wKCkge1xuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZGtDb25uZWN0T3ZlcmxheVdpZHRoID0gdGhpcy5jZGtPdmVybGF5T3JpZ2luLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9ICF0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zO1xuICAgICAgICB0aGlzLnRoeUV4cGFuZFN0YXR1c0NoYW5nZS5lbWl0KHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRWYWx1ZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoYW5nZVNlbGVjdFZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnRoeU11bHRpcGxlID8gdGhpcy5zZWxlY3RlZE5vZGVzIDogdGhpcy5zZWxlY3RlZE5vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnRoeU11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZE5vZGVbdGhpcy50aHlQcmltYXJ5S2V5XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgaWYgKCF0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVNdWx0aXBsZVNlbGVjdGVkTm9kZShldmVudDogeyBpdGVtOiBUaHlUcmVlU2VsZWN0Tm9kZTsgJGV2ZW50T3JpZ2luOiBFdmVudCB9KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKGV2ZW50Lml0ZW0sIGV2ZW50LiRldmVudE9yaWdpbik7XG4gICAgfVxuXG4gICAgLy8gdGh5TXVsdGlwbGUgPSB0cnVlIOaXtu+8jOenu+mZpOaVsOaNruaXtuiwg+eUqFxuICAgIHJlbW92ZVNlbGVjdGVkTm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeURpc2FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gcHJvZHVjZSh0aGlzLnNlbGVjdGVkTm9kZXMpLnJlbW92ZSgoaXRlbTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3ROb2RlKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xuICAgICAgICAgICAgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3RoaXMudGh5UHJpbWFyeUtleV0gPT09IG5vZGVbdGhpcy50aHlQcmltYXJ5S2V5XTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZE5vZGUobm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5hZGQobm9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlU2VsZWN0VmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE5vZGVDaGlsZHJlbihub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRoeUdldE5vZGVDaGlsZHJlbihub2RlKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICByZXN1bHQucGlwZSgpLnN1YnNjcmliZSgoZGF0YTogVGh5VHJlZVNlbGVjdE5vZGVbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXMoZGF0YSwgdGhpcy5mbGF0dGVuVHJlZU5vZGVzLCBbLi4ubm9kZS5wYXJlbnRWYWx1ZXMsIG5vZGVbdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyTm9kZXMgPSBub2Rlcy5maWx0ZXIoKGl0ZW06IFRoeVRyZWVOb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5mbGF0dGVuVHJlZU5vZGVzLmZpbmQoaGFzSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzSXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBpdGVtW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IFsuLi50aGlzLmZsYXR0ZW5UcmVlTm9kZXMsIC4uLm90aGVyTm9kZXNdO1xuICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBkYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBERUZBVUxUX0lURU1fU0laRSA9IDQwO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyZWUtc2VsZWN0LW5vZGVzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1zZWxlY3Qtbm9kZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgICAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgICAgIFRoeUVtcHR5LFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ1N0eWxlLFxuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlGbGV4aWJsZVRleHRcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICctMSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVTZWxlY3ROb2RlcyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzOiBzdHJpbmc7XG5cbiAgICBub2RlTGlzdDogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgc2V0IHRyZWVOb2Rlcyh2YWx1ZTogVGh5VHJlZVNlbGVjdE5vZGVbXSkge1xuICAgICAgICBjb25zdCB0cmVlU2VsZWN0SGVpZ2h0ID0gdGhpcy5kZWZhdWx0SXRlbVNpemUgKiB2YWx1ZS5sZW5ndGg7XG4gICAgICAgIC8vIOeItue6p+iuvue9ruS6hm1heC1oZWlnaHQ6MzAwICYgcGFkZGluZzoxMCAwOyDmlYXmraTlpITmnIDlpJrorr7nva4yODDvvIzlkKbliJnlsIblh7rnjrDmu5rliqjmnaFcbiAgICAgICAgdGhpcy50aHlWaXJ0dWFsSGVpZ2h0ID0gdHJlZVNlbGVjdEhlaWdodCA+IDMwMCA/ICcyODBweCcgOiBgJHt0cmVlU2VsZWN0SGVpZ2h0fXB4YDtcbiAgICAgICAgdGhpcy5ub2RlTGlzdCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRoeVZpcnR1YWxTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBwcmltYXJ5S2V5ID0gdGhpcy5wYXJlbnQudGh5UHJpbWFyeUtleTtcblxuICAgIHB1YmxpYyBzaG93S2V5ID0gdGhpcy5wYXJlbnQudGh5U2hvd0tleTtcblxuICAgIHB1YmxpYyBpc011bHRpcGxlID0gdGhpcy5wYXJlbnQudGh5TXVsdGlwbGU7XG5cbiAgICBwdWJsaWMgdmFsdWVJc09iamVjdCA9IHRoaXMucGFyZW50LnZhbHVlSXNPYmplY3Q7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMucGFyZW50LnNlbGVjdGVkVmFsdWU7XG5cbiAgICBwdWJsaWMgY2hpbGRDb3VudEtleSA9IHRoaXMucGFyZW50LnRoeUNoaWxkQ291bnRLZXk7XG5cbiAgICBwdWJsaWMgdHJlZU5vZGVUZW1wbGF0ZVJlZiA9IHRoaXMucGFyZW50LnRyZWVOb2RlVGVtcGxhdGVSZWY7XG5cbiAgICBwdWJsaWMgZGVmYXVsdEl0ZW1TaXplID0gREVGQVVMVF9JVEVNX1NJWkU7XG5cbiAgICBwdWJsaWMgdGh5VmlydHVhbEhlaWdodDogc3RyaW5nID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJlbnQ6IFRoeVRyZWVTZWxlY3QpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jbGFzcyA9IHRoaXMuaXNNdWx0aXBsZSA/ICd0aHktdHJlZS1zZWxlY3QtZHJvcGRvd24gdGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duLW11bHRpcGxlJyA6ICd0aHktdHJlZS1zZWxlY3QtZHJvcGRvd24nO1xuICAgIH1cblxuICAgIHRyZWVOb2RlSXNTZWxlY3RlZChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnByaW1hcnlLZXldID09PSBub2RlW3RoaXMucHJpbWFyeUtleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGUgJiYgdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlW3RoaXMucHJpbWFyeUtleV0gPT09IG5vZGVbdGhpcy5wcmltYXJ5S2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRyZWVOb2RlSXNIaWRkZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlW3RoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVLZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlRm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlRm4obm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyZWVOb2RlSXNEaXNhYmxlKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVbdGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVLZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVGbihub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc0V4cGFuZChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBsZXQgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICBpc1NlbGVjdGVkTm9kZVBhcmVudCA9ICEhKHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZXMgfHwgW10pLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucGFyZW50VmFsdWVzLmluZGV4T2Yobm9kZVt0aGlzLnByaW1hcnlLZXldKSA+IC0xO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc1NlbGVjdGVkTm9kZVBhcmVudCA9IHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZVxuICAgICAgICAgICAgICAgID8gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlLnBhcmVudFZhbHVlcy5pbmRleE9mKG5vZGVbdGhpcy5wcmltYXJ5S2V5XSkgPiAtMVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNFeHBhbmQgPSBub2RlLmV4cGFuZCB8fCAoT2JqZWN0LmtleXMobm9kZSkuaW5kZXhPZignZXhwYW5kJykgPCAwICYmIGlzU2VsZWN0ZWROb2RlUGFyZW50KTtcbiAgICAgICAgbm9kZS5leHBhbmQgPSBpc0V4cGFuZDtcbiAgICAgICAgcmV0dXJuIGlzRXhwYW5kO1xuICAgIH1cblxuICAgIGdldE5vZGVDaGlsZHJlbihub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0Tm9kZUNoaWxkcmVuKG5vZGUpO1xuICAgIH1cblxuICAgIHNlbGVjdFRyZWVOb2RlKGV2ZW50OiBFdmVudCwgbm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVOb2RlSXNEaXNhYmxlKG5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5zZWxlY3ROb2RlKG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbm9kZUV4cGFuZFRvZ2dsZShldmVudDogRXZlbnQsIG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobm9kZSkuaW5kZXhPZignZXhwYW5kJykgPiAtMSkge1xuICAgICAgICAgICAgbm9kZS5leHBhbmQgPSAhbm9kZS5leHBhbmQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlTm9kZUlzRXhwYW5kKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5leHBhbmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5leHBhbmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuZXhwYW5kICYmIHRoaXMucGFyZW50LnRoeUFzeW5jTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5nZXROb2RlQ2hpbGRyZW4obm9kZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5wYXJlbnQuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMudGh5VmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuYnVpbGRGbGF0dGVuVHJlZU5vZGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0YWJUcmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG4iLCI8ZGl2XG4gIGNka092ZXJsYXlPcmlnaW5cbiAgdGh5U2VsZWN0Q29udHJvbFxuICAoY2xpY2spPVwib3BlblNlbGVjdFBvcCgpXCJcbiAgI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICBbdGh5UGFuZWxPcGVuZWRdPVwiZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnNcIlxuICBbdGh5U2VsZWN0ZWRPcHRpb25zXT1cInNlbGVjdGVkVmFsdWVPYmplY3RcIlxuICBbdGh5SXNNdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gIFt0aHlBbGxvd0NsZWFyXT1cInRoeUFsbG93Q2xlYXJcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeVBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2N1c3RvbURpc3BsYXlUZW1wbGF0ZV09XCJjdXN0b21EaXNwbGF5VGVtcGxhdGVcIlxuICBbdGh5U2hvd1NlYXJjaF09XCJ0aHlTaG93U2VhcmNoXCJcbiAgW3RoeURpc2FibGVkXT1cInRoeURpc2FibGVcIlxuICAodGh5T25CbHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgKHRoeU9uQ2xlYXIpPVwiY2xlYXJTZWxlY3RlZFZhbHVlKCRldmVudClcIlxuICAodGh5T25SZW1vdmUpPVwicmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoJGV2ZW50KVwiXG4gICh0aHlPblNlYXJjaCk9XCJzZWFyY2hWYWx1ZSgkZXZlbnQpXCI+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRGlzcGxheVRlbXBsYXRlIGxldC1ub2RlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXlSZWY7IGVsc2Ugbm9uZVRlbXBsYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9uZVRlbXBsYXRlPlxuICAgICAge3sgbm9kZVt0aHlTaG93S2V5XSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJmYWxzZVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cInBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPVwiY2RrQ29ubmVjdE92ZXJsYXlXaWR0aFwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJleHBhbmRUcmVlU2VsZWN0T3B0aW9uc1wiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktdHJlZS1zZWxlY3QtZHJvcGRvd25cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJleHBhbmRlZERyb3Bkb3duUG9zaXRpb25zXCJcbiAgKGRldGFjaCk9XCJjbG9zZSgpXCI+XG4gIDx0aHktdHJlZS1zZWxlY3Qtbm9kZXNcbiAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICBbdGh5VmlydHVhbFNjcm9sbF09XCJ0aHlWaXJ0dWFsU2Nyb2xsXCJcbiAgICBbdHJlZU5vZGVzXT1cInRoeVZpcnR1YWxTY3JvbGwgPyB2aXJ0dWFsVHJlZU5vZGVzIDogdHJlZU5vZGVzXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCInZW50ZXInXCI+XG4gIDwvdGh5LXRyZWUtc2VsZWN0LW5vZGVzPlxuPC9uZy10ZW1wbGF0ZT5cbiIsIjxkaXYgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uc1wiICpuZ0lmPVwibm9kZUxpc3Q/Lmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGxcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZUxpc3RcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICN2aWV3cG9ydCAqbmdJZj1cInRoeVZpcnR1YWxTY3JvbGxcIiBbaXRlbVNpemVdPVwiZGVmYXVsdEl0ZW1TaXplXCIgW3N0eWxlLmhlaWdodF09XCJ0aHlWaXJ0dWFsSGVpZ2h0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2Ygbm9kZUxpc3Q7IHRyYWNrQnk6IHRhYlRyYWNrQnlcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVTZWxlY3ROb2RlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlQbGFjZWhvbGRlcj5cbiAgPHRoeS1lbXB0eSBjbGFzcz1cInRoeS1zZWxlY3QtZW1wdHktY29udGVudFwiIHRoeVNpemU9XCJzbVwiIFt0aHlNZXNzYWdlXT1cInBhcmVudC50aHlFbXB0eU9wdGlvbnNUZXh0XCI+PC90aHktZW1wdHk+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyZWVTZWxlY3ROb2RlIGxldC1ub2RlPlxuICA8bmctY29udGFpbmVyPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInRoeS1vcHRpb24taXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdHJlZU5vZGVJc1NlbGVjdGVkKG5vZGUpIH1cIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRyZWVOb2RlSXNEaXNhYmxlKG5vZGUpXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgJ3BhZGRpbmctbGVmdC5weCc6IDIwICogbm9kZS5sZXZlbCArIHBhcmVudC5pY29ucy5nYXAgfVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0VHJlZU5vZGUoJGV2ZW50LCBub2RlKVwiXG4gICAgICAqbmdJZj1cIiF0cmVlTm9kZUlzSGlkZGVuKG5vZGUpXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1vcHRpb24taWNvblwiXG4gICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIShub2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IChub2RlW2NoaWxkQ291bnRLZXldICYmIG5vZGVbY2hpbGRDb3VudEtleV0gPiAwKSlcIlxuICAgICAgICAoY2xpY2spPVwibm9kZUV4cGFuZFRvZ2dsZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgIDx0aHktaWNvbiBjbGFzcz1cIm5vZGUtZXhwYW5kLWljb25cIiBbdGh5SWNvbk5hbWVdPVwidHJlZU5vZGVJc0V4cGFuZChub2RlKSA/IHBhcmVudC5pY29ucy5leHBhbmQgOiBwYXJlbnQuaWNvbnMuY29sbGFwc2VcIj48L3RoeS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uLXRleHRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgKm5nSWY9XCJ0cmVlTm9kZVRlbXBsYXRlUmVmOyBlbHNlIGRlZmF1bHROb2RlVGV4dFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZU5vZGVUZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHROb2RlVGV4dD5cbiAgICAgICAgICA8c3BhbiAgdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJub2RlW3Nob3dLZXldXCI+e3sgbm9kZVtzaG93S2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDx0aHktaWNvbiBjbGFzcz1cImNoZWNrZWQtaWNvblwiICpuZ0lmPVwiaXNNdWx0aXBsZVwiIHRoeUljb25OYW1lPVwiY2hlY2tcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGwgJiYgdHJlZU5vZGVJc0V4cGFuZChub2RlKSAmJiBub2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVTZWxlY3ROb2RlXCIgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZS5jaGlsZHJlblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Directive, ElementRef, Inject, Input, NgZone } from '@angular/core';
|
|
1
|
+
import { isNumber } from 'ngx-tethys/util';
|
|
2
|
+
import { Directive, ElementRef, Inject, Input, NgZone, numberAttribute } from '@angular/core';
|
|
3
3
|
import { THY_UPLOAD_DEFAULT_OPTIONS } from './upload.config';
|
|
4
4
|
import { mimeTypeConvert } from './util';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
*/
|
|
9
9
|
export class FileSelectBaseDirective {
|
|
10
10
|
set thySizeThreshold(value) {
|
|
11
|
-
const sizeThreshold =
|
|
11
|
+
const sizeThreshold = value;
|
|
12
12
|
if (isNumber(sizeThreshold)) {
|
|
13
13
|
this.sizeThreshold = sizeThreshold;
|
|
14
14
|
}
|
|
@@ -58,7 +58,7 @@ export class FileSelectBaseDirective {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FileSelectBaseDirective, deps: [{ token: i0.ElementRef }, { token: THY_UPLOAD_DEFAULT_OPTIONS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.3", type: FileSelectBaseDirective, inputs: { thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute], thySizeExceedsHandler: "thySizeExceedsHandler", thyAcceptType: "thyAcceptType" }, ngImport: i0 }); }
|
|
62
62
|
}
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FileSelectBaseDirective, decorators: [{
|
|
64
64
|
type: Directive
|
|
@@ -66,10 +66,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
66
66
|
type: Inject,
|
|
67
67
|
args: [THY_UPLOAD_DEFAULT_OPTIONS]
|
|
68
68
|
}] }, { type: i0.NgZone }], propDecorators: { thySizeThreshold: [{
|
|
69
|
-
type: Input
|
|
69
|
+
type: Input,
|
|
70
|
+
args: [{ transform: numberAttribute }]
|
|
70
71
|
}], thySizeExceedsHandler: [{
|
|
71
72
|
type: Input
|
|
72
73
|
}], thyAcceptType: [{
|
|
73
74
|
type: Input
|
|
74
75
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91cGxvYWQvZmlsZS1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsMEJBQTBCLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFFekM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBS2hDLElBQ0ksZ0JBQWdCLENBQUMsS0FBYTtRQUM5QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQWEscUJBQXFCLENBQUMsS0FBNEI7UUFDM0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksYUFBYSxDQUFDLEtBQTZCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUNXLFVBQXNCLEVBQ2MsYUFBOEIsRUFDbEUsTUFBZTtRQUZmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDYyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDbEUsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUV0QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVksRUFBRSxLQUFhO1FBQ3pDLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLGlCQUFpQixHQUFHO2dCQUN0QixLQUFLLEVBQUUsS0FBSztnQkFDWixZQUFZLEVBQUUsZ0JBQWdCO2dCQUM5QixXQUFXLEVBQUUsS0FBSztnQkFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ3BDLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVksRUFBRSxLQUFhLEVBQUUsWUFBOEM7UUFDbkYsSUFBSSxZQUFZLEdBQWtCLEtBQUssQ0FBQztRQUN4QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNmLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFdBQVcsRUFBRSxLQUFLO2FBQ3JCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOzhHQTlEUSx1QkFBdUIsNENBNkJwQiwwQkFBMEI7a0dBN0I3Qix1QkFBdUIsdUVBS1osZUFBZTs7MkZBTDFCLHVCQUF1QjtrQkFEbkMsU0FBUzs7MEJBOEJELE1BQU07MkJBQUMsMEJBQTBCOzhEQXZCbEMsZ0JBQWdCO3NCQURuQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFReEIscUJBQXFCO3NCQUFqQyxLQUFLO2dCQVVGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgTmdab25lLCBudW1iZXJBdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeUZpbGVTZWxlY3RFdmVudCwgVGh5U2l6ZUV4Y2VlZHNIYW5kbGVyIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBUSFlfVVBMT0FEX0RFRkFVTFRfT1BUSU9OUywgVGh5VXBsb2FkQ29uZmlnIH0gZnJvbSAnLi91cGxvYWQuY29uZmlnJztcbmltcG9ydCB7IG1pbWVUeXBlQ29udmVydCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgRmlsZVNlbGVjdEJhc2VEaXJlY3RpdmUge1xuICAgIGFjY2VwdFR5cGU6IHN0cmluZztcbiAgICBzaXplVGhyZXNob2xkOiBudW1iZXI7XG4gICAgc2l6ZUV4Y2VlZHNIYW5kbGVyOiBUaHlTaXplRXhjZWVkc0hhbmRsZXI7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlTaXplVGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgc2l6ZVRocmVzaG9sZCA9IHZhbHVlO1xuICAgICAgICBpZiAoaXNOdW1iZXIoc2l6ZVRocmVzaG9sZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZVRocmVzaG9sZCA9IHNpemVUaHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdGh5U2l6ZUV4Y2VlZHNIYW5kbGVyKHZhbHVlOiBUaHlTaXplRXhjZWVkc0hhbmRsZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNpemVFeGNlZWRzSGFuZGxlciA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oyH5a6a5paH5Lu25ZCO57yA57G75Z6L77yITUlNRV9NYXDvvInvvIzkvovlpoJcIi54bHMseGxzeFwi77yMXCJbXCIuZG9jXCIsXCIuZG9jeFwiXVwiXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5QWNjZXB0VHlwZSh2YWx1ZTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZykge1xuICAgICAgICB0aGlzLmFjY2VwdFR5cGUgPSBtaW1lVHlwZUNvbnZlcnQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChUSFlfVVBMT0FEX0RFRkFVTFRfT1BUSU9OUykgcHVibGljIGRlZmF1bHRDb25maWc6IFRoeVVwbG9hZENvbmZpZyxcbiAgICAgICAgcHVibGljIG5nWm9uZT86IE5nWm9uZVxuICAgICkge1xuICAgICAgICB0aGlzLnNpemVUaHJlc2hvbGQgPSBkZWZhdWx0Q29uZmlnLnNpemVUaHJlc2hvbGQ7XG4gICAgICAgIHRoaXMuc2l6ZUV4Y2VlZHNIYW5kbGVyID0gZGVmYXVsdENvbmZpZy5zaXplRXhjZWVkc0hhbmRsZXI7XG4gICAgICAgIHRoaXMuYWNjZXB0VHlwZSA9IG1pbWVUeXBlQ29udmVydChkZWZhdWx0Q29uZmlnLmFjY2VwdFR5cGUpO1xuICAgIH1cblxuICAgIGhhbmRsZVNpemVFeGNlZWRzKGV2ZW50OiBFdmVudCwgZmlsZXM6IEZpbGVbXSkge1xuICAgICAgICBsZXQgc2l6ZUV4Y2VlZHNGaWxlcyA9IGZpbGVzLmZpbHRlcihpdGVtID0+IGl0ZW0uc2l6ZSAvIDEwMjQgPiB0aGlzLnNpemVUaHJlc2hvbGQpO1xuICAgICAgICBpZiAoc2l6ZUV4Y2VlZHNGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzaXplRXhjZWVkQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgICAgZXhjZWVkc0ZpbGVzOiBzaXplRXhjZWVkc0ZpbGVzLFxuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBzaXplVGhyZXNob2xkOiB0aGlzLnNpemVUaHJlc2hvbGRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaXplRXhjZWVkc0hhbmRsZXIoc2l6ZUV4Y2VlZENvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlcztcbiAgICB9XG5cbiAgICBzZWxlY3RGaWxlcyhldmVudDogRXZlbnQsIGZpbGVzOiBGaWxlW10sIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPFRoeUZpbGVTZWxlY3RFdmVudD4pIHtcbiAgICAgICAgbGV0IHN1Y2Nlc3NGaWxlczogRmlsZVtdIHwgdm9pZCA9IGZpbGVzO1xuICAgICAgICBpZiAodGhpcy5zaXplVGhyZXNob2xkICYmIHRoaXMuc2l6ZVRocmVzaG9sZCA+IDApIHtcbiAgICAgICAgICAgIHN1Y2Nlc3NGaWxlcyA9IHRoaXMuaGFuZGxlU2l6ZUV4Y2VlZHMoZXZlbnQsIGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3VjY2Vzc0ZpbGVzKSB7XG4gICAgICAgICAgICBldmVudEVtaXR0ZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IHN1Y2Nlc3NGaWxlcyxcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { coerceBooleanProperty } from 'ngx-tethys/util';
|
|
3
1
|
import { fromEvent, Subject } from 'rxjs';
|
|
4
2
|
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { Component, ElementRef, EventEmitter, Inject, Input, NgZone, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { booleanAttribute, Component, ElementRef, EventEmitter, Inject, Input, NgZone, numberAttribute, Output, ViewChild } from '@angular/core';
|
|
6
4
|
import { FileSelectBaseDirective } from './file-select-base';
|
|
7
5
|
import { THY_UPLOAD_DEFAULT_OPTIONS } from './upload.config';
|
|
8
6
|
import { mimeTypeConvert } from './util';
|
|
9
|
-
import { InputBoolean, InputNumber } from 'ngx-tethys/core';
|
|
10
7
|
import * as i0 from "@angular/core";
|
|
11
8
|
/**
|
|
12
9
|
* 文件上传组件
|
|
@@ -19,7 +16,7 @@ export class ThyFileSelect extends FileSelectBaseDirective {
|
|
|
19
16
|
* @default false
|
|
20
17
|
*/
|
|
21
18
|
set thyMultiple(value) {
|
|
22
|
-
this.multiple =
|
|
19
|
+
this.multiple = value;
|
|
23
20
|
if (this.multiple) {
|
|
24
21
|
this.fileInput.nativeElement.setAttribute('multiple', '');
|
|
25
22
|
}
|
|
@@ -28,7 +25,7 @@ export class ThyFileSelect extends FileSelectBaseDirective {
|
|
|
28
25
|
}
|
|
29
26
|
}
|
|
30
27
|
set thyAcceptFolder(value) {
|
|
31
|
-
this.acceptFolder =
|
|
28
|
+
this.acceptFolder = value;
|
|
32
29
|
if (this.acceptFolder) {
|
|
33
30
|
this.fileInput.nativeElement.setAttribute('webkitdirectory', '');
|
|
34
31
|
}
|
|
@@ -75,23 +72,8 @@ export class ThyFileSelect extends FileSelectBaseDirective {
|
|
|
75
72
|
this.destroy$.next();
|
|
76
73
|
}
|
|
77
74
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, deps: [{ token: i0.ElementRef }, { token: THY_UPLOAD_DEFAULT_OPTIONS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyFileSelect, isStandalone: true, selector: "[thyFileSelect],thy-file-select", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", booleanAttribute], thyAcceptFolder: ["thyAcceptFolder", "thyAcceptFolder", booleanAttribute], thyAcceptType: "thyAcceptType", thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute] }, outputs: { thyOnFileSelect: "thyOnFileSelect" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }); }
|
|
79
76
|
}
|
|
80
|
-
__decorate([
|
|
81
|
-
InputBoolean(),
|
|
82
|
-
__metadata("design:type", Boolean),
|
|
83
|
-
__metadata("design:paramtypes", [Boolean])
|
|
84
|
-
], ThyFileSelect.prototype, "thyMultiple", null);
|
|
85
|
-
__decorate([
|
|
86
|
-
InputBoolean(),
|
|
87
|
-
__metadata("design:type", Boolean),
|
|
88
|
-
__metadata("design:paramtypes", [Boolean])
|
|
89
|
-
], ThyFileSelect.prototype, "thyAcceptFolder", null);
|
|
90
|
-
__decorate([
|
|
91
|
-
InputNumber(),
|
|
92
|
-
__metadata("design:type", Number),
|
|
93
|
-
__metadata("design:paramtypes", [Number])
|
|
94
|
-
], ThyFileSelect.prototype, "thySizeThreshold", null);
|
|
95
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, decorators: [{
|
|
96
78
|
type: Component,
|
|
97
79
|
args: [{ selector: '[thyFileSelect],thy-file-select', standalone: true, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }]
|
|
@@ -104,12 +86,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
104
86
|
type: ViewChild,
|
|
105
87
|
args: ['fileInput', { static: true }]
|
|
106
88
|
}], thyMultiple: [{
|
|
107
|
-
type: Input
|
|
89
|
+
type: Input,
|
|
90
|
+
args: [{ transform: booleanAttribute }]
|
|
108
91
|
}], thyAcceptFolder: [{
|
|
109
|
-
type: Input
|
|
92
|
+
type: Input,
|
|
93
|
+
args: [{ transform: booleanAttribute }]
|
|
110
94
|
}], thyAcceptType: [{
|
|
111
95
|
type: Input
|
|
112
96
|
}], thySizeThreshold: [{
|
|
113
|
-
type: Input
|
|
97
|
+
type: Input,
|
|
98
|
+
args: [{ transform: numberAttribute }]
|
|
114
99
|
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3VwbG9hZC9maWxlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdXBsb2FkL2ZpbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGVBQWUsRUFFZixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSwwQkFBMEIsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUV6Qzs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLGFBQWMsU0FBUSx1QkFBdUI7SUFZdEQ7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBYztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDTCxDQUFDO0lBRUQsSUFDSSxl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JztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmlsZVNlbGVjdEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2ZpbGUtc2VsZWN0LWJhc2UnO1xuaW1wb3J0IHsgVEhZX1VQTE9BRF9ERUZBVUxUX09QVElPTlMsIFRoeVVwbG9hZENvbmZpZyB9IGZyb20gJy4vdXBsb2FkLmNvbmZpZyc7XG5pbXBvcnQgeyBtaW1lVHlwZUNvbnZlcnQgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIOaWh+S7tuS4iuS8oOe7hOS7tlxuICogQG5hbWUgdGh5LWZpbGUtc2VsZWN0LFt0aHlGaWxlU2VsZWN0XVxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3RoeUZpbGVTZWxlY3RdLHRoeS1maWxlLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeUZpbGVTZWxlY3QgZXh0ZW5kcyBGaWxlU2VsZWN0QmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgYWNjZXB0Rm9sZGVyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5paH5Lu26YCJ5oup5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uRmlsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIOaWh+S7tuaYr+WQpuWkmumAiVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeU11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdtdWx0aXBsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeUFjY2VwdEZvbGRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFjY2VwdEZvbGRlciA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5hY2NlcHRGb2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd3ZWJraXRkaXJlY3RvcnknLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnd2Via2l0ZGlyZWN0b3J5Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmjIflrprmlofku7blkI7nvIDnsbvlnovvvIhNSU1FX01hcO+8ie+8jOS+i+WmglwiLnhscyx4bHN4XCLvvIxcIltcIi5kb2NcIixcIi5kb2N4XCJdXCJcbiAgICAgKiBAdHlwZSBBcnJheTxzdHJpbmc+IHwgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5QWNjZXB0VHlwZSh2YWx1ZTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZykge1xuICAgICAgICB0aGlzLmFjY2VwdFR5cGUgPSBtaW1lVHlwZUNvbnZlcnQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaWh+S7tuS4iuS8oOWkp+Wwj+mZkOWItu+8jOWNleS9jWBrYmDvvIxgMGDooajnpLrmsqHmnInku7vkvZXpmZDliLZcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlTaXplVGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zaXplVGhyZXNob2xkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQEluamVjdChUSFlfVVBMT0FEX0RFRkFVTFRfT1BUSU9OUykgcHVibGljIGRlZmF1bHRDb25maWc6IFRoeVVwbG9hZENvbmZpZywgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGVmYXVsdENvbmZpZyk7XG5cbiAgICAgICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBmcm9tRXZlbnQoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsZSgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcztcbiAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsZXMoJGV2ZW50LCBBcnJheS5mcm9tKGZpbGVzKSwgdGhpcy50aHlPbkZpbGVTZWxlY3QpO1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxpbnB1dFxuICBzdHlsZT1cIndpZHRoOiAwOyBoZWlnaHQ6IDBcIlxuICB0aHlTdG9wUHJvcGFnYXRpb249XCJ0cnVlXCJcbiAgW2hpZGRlbl09XCIndHJ1ZSdcIlxuICAjZmlsZUlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RGaWxlKCRldmVudClcIlxuICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0VHlwZVwiXG4vPlxuIl19
|
package/esm2022/version.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Version } from '@angular/core';
|
|
2
|
-
export const VERSION = new Version('17.0.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const VERSION = new Version('17.0.2');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxNy4wLjInKTtcbiJdfQ==
|