@seniorsistemas/angular-components 19.0.5 → 19.0.6
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/accordion/lib/accordion/accordion.component.d.ts +25 -0
- package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
- package/alert/lib/alert/alert.component.d.ts +40 -0
- package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
- package/badge/lib/badge/badge.component.d.ts +20 -0
- package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
- package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
- package/button/lib/button/button.component.d.ts +101 -0
- package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
- package/card/lib/card/card.component.d.ts +18 -0
- package/chat/lib/chat/chat.component.d.ts +20 -2
- package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
- package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
- package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
- package/chips/lib/chips/chips/chips.component.d.ts +41 -0
- package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
- package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
- package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
- package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
- package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
- package/currency/lib/currency.service.d.ts +15 -2
- package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
- package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
- package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
- package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
- package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
- package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
- package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
- package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
- package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
- package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
- package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
- package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
- package/dynamic-form/public-api.d.ts +1 -0
- package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
- package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
- package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
- package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
- package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
- package/esm2022/button/lib/button/button.component.mjs +102 -1
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
- package/esm2022/card/lib/card/card.component.mjs +21 -6
- package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
- package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
- package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
- package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
- package/esm2022/currency/lib/currency.service.mjs +21 -8
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
- package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
- package/esm2022/dynamic-form/public-api.mjs +2 -2
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
- package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
- package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
- package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
- package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
- package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
- package/esm2022/kanban/lib/kanban/kanban.component.mjs +34 -16
- package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
- package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
- package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
- package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
- package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
- package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
- package/esm2022/numeric/lib/numeric.service.mjs +21 -1
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
- package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
- package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
- package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
- package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
- package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
- package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
- package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
- package/esm2022/select/lib/select/select.component.mjs +35 -1
- package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
- package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
- package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
- package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
- package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
- package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
- package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
- package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
- package/esm2022/template/lib/template/template.directive.mjs +14 -2
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
- package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
- package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
- package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
- package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
- package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
- package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
- package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
- package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +28 -10
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
- package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
- package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
- package/gantt/lib/gantt/gantt.component.d.ts +31 -0
- package/global-search/lib/global-search/global-search.component.d.ts +29 -0
- package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
- package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
- package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
- package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
- package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
- package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
- package/insights/lib/insights/insights.component.d.ts +22 -0
- package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
- package/kanban/lib/kanban/kanban.component.d.ts +25 -5
- package/label-value/lib/label-value/label-value.component.d.ts +13 -0
- package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
- package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
- package/locale/lib/locale/locale.service.d.ts +7 -0
- package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
- package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
- package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
- package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
- package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
- package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
- package/numeric/lib/numeric.pipe.d.ts +15 -0
- package/numeric/lib/numeric.service.d.ts +20 -0
- package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
- package/object-card/lib/object-card/object-card.component.d.ts +23 -0
- package/optional-fields/editor/editor-field.d.ts +19 -0
- package/package.json +12 -12
- package/paginator/lib/paginator/paginator.component.d.ts +19 -0
- package/panel/lib/panel/panel.component.d.ts +24 -3
- package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
- package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
- package/picklist/lib/picklist/picklist.component.d.ts +29 -0
- package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
- package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
- package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
- package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
- package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
- package/select/lib/select/select.component.d.ts +34 -0
- package/select-button/lib/select-button/select-button.component.d.ts +34 -0
- package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
- package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
- package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
- package/slider/lib/slider/slider.component.d.ts +72 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
- package/split-button/lib/split-button/split-button.component.d.ts +22 -0
- package/star-rating/star-rating/star-rating.component.d.ts +16 -0
- package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
- package/stepper/lib/stepper/stepper.component.d.ts +19 -0
- package/structure/lib/structure/footer.component.d.ts +10 -0
- package/switch/lib/switch/switch.component.d.ts +20 -0
- package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
- package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
- package/tabs/lib/tabs/tabs.component.d.ts +28 -0
- package/template/lib/template/template.directive.d.ts +12 -0
- package/text-area/lib/text-area/text-area.component.d.ts +27 -0
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
- package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
- package/tile/lib/tile/tile.component.d.ts +25 -0
- package/timeline/lib/timeline/timeline.component.d.ts +24 -0
- package/toast/lib/toast/toast.component.d.ts +22 -2
- package/token-list/lib/token-list/token-list.component.d.ts +21 -0
- package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
- package/topbar/lib/topbar/topbar.component.d.ts +17 -0
- package/tree/lib/tree/tree.component.d.ts +27 -0
- package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { HelpPopoverComponent } from './help-popover/help-popover.component';
|
|
5
|
-
import { getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement } from '@seniorsistemas/angular-components/utils';
|
|
5
|
+
import { getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement, } from '@seniorsistemas/angular-components/utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* @description Diretiva que exibe um popover de ajuda ao clicar no elemento hospedeiro.
|
|
9
|
+
* O popover suporta conteúdo como texto simples ou `TemplateRef`, além de botão de fechar,
|
|
10
|
+
* ícone, cabeçalho, rodapé e posição configurável. Pode ser acionado programaticamente.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```html
|
|
14
|
+
* <button [sHelpPopover]="'Informe aqui o seu CPF'" popoverPosition="right">?</button>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @category Overlay
|
|
18
|
+
*/
|
|
7
19
|
export class HelpPopoverDirective {
|
|
8
|
-
MUTATION_OBSERVER_CONFIG = {
|
|
20
|
+
MUTATION_OBSERVER_CONFIG = {
|
|
21
|
+
attributes: true,
|
|
22
|
+
childList: true,
|
|
23
|
+
subtree: true,
|
|
24
|
+
};
|
|
9
25
|
OBSERVER_CALLBACK = () => {
|
|
10
26
|
if (!this.componentRef) {
|
|
11
27
|
return;
|
|
@@ -15,22 +31,60 @@ export class HelpPopoverDirective {
|
|
|
15
31
|
RESIZE_OBSERVER = () => {
|
|
16
32
|
this.onResize$.next();
|
|
17
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* @description Conteúdo do popover. Aceita uma `string` com texto simples ou um `TemplateRef`
|
|
36
|
+
* para renderizar conteúdo Angular customizado dentro do popover.
|
|
37
|
+
*/
|
|
18
38
|
sHelpPopover = null;
|
|
39
|
+
/**
|
|
40
|
+
* @description Quando `true`, exibe o botão de fechar (X) no cabeçalho do popover.
|
|
41
|
+
*
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
19
44
|
closeButton = true;
|
|
45
|
+
/**
|
|
46
|
+
* @description Classe de ícone exibida no cabeçalho do popover (ex: classe de Font Awesome).
|
|
47
|
+
*/
|
|
20
48
|
popoverIcon = '';
|
|
49
|
+
/**
|
|
50
|
+
* @description Texto exibido no cabeçalho do popover.
|
|
51
|
+
*/
|
|
21
52
|
popoverHeader = '';
|
|
53
|
+
/**
|
|
54
|
+
* @description Texto exibido no rodapé do popover.
|
|
55
|
+
*/
|
|
22
56
|
popoverFooter = '';
|
|
57
|
+
/**
|
|
58
|
+
* @description Texto do botão de ação exibido no rodapé do popover.
|
|
59
|
+
* Ao clicar, emite o evento `buttonClicked`.
|
|
60
|
+
*/
|
|
23
61
|
popoverButtonText = '';
|
|
62
|
+
/**
|
|
63
|
+
* @description Alinhamento da seta indicadora em relação ao lado do popover.
|
|
64
|
+
* Valores aceitos: `'beginning'` (padrão), `'middle'`, `'end'`.
|
|
65
|
+
*
|
|
66
|
+
* @default 'beginning'
|
|
67
|
+
*/
|
|
24
68
|
popoverArrowPosition = 'beginning';
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
69
|
+
/**
|
|
70
|
+
* @description Posição do popover em relação ao elemento hospedeiro.
|
|
71
|
+
* Valores aceitos: `'top'`, `'bottom'` (padrão), `'left'`, `'right'`.
|
|
72
|
+
* O componente tenta reposicionar automaticamente caso não haja espaço.
|
|
73
|
+
*
|
|
74
|
+
* @default 'bottom'
|
|
75
|
+
*/
|
|
29
76
|
set popoverPosition(value) {
|
|
30
77
|
this._popoverPosition = value;
|
|
31
78
|
this.internalPosition = value;
|
|
32
79
|
}
|
|
80
|
+
get popoverPosition() {
|
|
81
|
+
return this._popoverPosition;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @description Emitido quando o usuário clica no botão de ação do rodapé do popover.
|
|
85
|
+
*/
|
|
33
86
|
buttonClicked = new EventEmitter();
|
|
87
|
+
_popoverPosition = 'bottom';
|
|
34
88
|
onDestroy$ = new Subject();
|
|
35
89
|
componentRef = null;
|
|
36
90
|
mutationObserverPopoverElement = null;
|
|
@@ -185,7 +239,7 @@ export class HelpPopoverDirective {
|
|
|
185
239
|
_horizontalLeft = popoverElementPosition.right - popoverWidth;
|
|
186
240
|
}
|
|
187
241
|
else if (this.popoverArrowPosition === 'middle') {
|
|
188
|
-
_horizontalLeft =
|
|
242
|
+
_horizontalLeft = popoverElementPosition.left + popoverElementPosition.elementWidth / 2 - popoverWidth / 2;
|
|
189
243
|
}
|
|
190
244
|
return _horizontalLeft;
|
|
191
245
|
}
|
|
@@ -202,7 +256,9 @@ export class HelpPopoverDirective {
|
|
|
202
256
|
top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;
|
|
203
257
|
}
|
|
204
258
|
else if (this.popoverArrowPosition === 'end') {
|
|
205
|
-
const distanceArrowFromEnd =
|
|
259
|
+
const distanceArrowFromEnd = popoverContentPosition.top +
|
|
260
|
+
popoverContentPosition.elementHeight -
|
|
261
|
+
(arrowElementPosition.top + arrowElementPosition.elementHeight);
|
|
206
262
|
top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;
|
|
207
263
|
}
|
|
208
264
|
return top;
|
|
@@ -217,21 +273,21 @@ export class HelpPopoverDirective {
|
|
|
217
273
|
return this.componentRef?.instance;
|
|
218
274
|
}
|
|
219
275
|
/**
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
276
|
+
* Given the current position of the popover and the available space around
|
|
277
|
+
* the trigger element, this function will return the position that the popover
|
|
278
|
+
* will be set at.
|
|
279
|
+
*
|
|
280
|
+
* If the popover will fit at the given position, it will return the same
|
|
281
|
+
* position.
|
|
282
|
+
*
|
|
283
|
+
* If the popover will not fit at the given position, it will return the position
|
|
284
|
+
* that has the most available space (top or bottom).
|
|
285
|
+
*
|
|
286
|
+
* If there is no position with available space, it will return the given
|
|
287
|
+
* position.
|
|
288
|
+
*
|
|
289
|
+
* @returns The position that the popover will be set at.
|
|
290
|
+
*/
|
|
235
291
|
get validPosition() {
|
|
236
292
|
const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } = this.getLeftoverContentAvailableForPopover();
|
|
237
293
|
const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);
|
|
@@ -268,7 +324,7 @@ export class HelpPopoverDirective {
|
|
|
268
324
|
{
|
|
269
325
|
position: 'top',
|
|
270
326
|
freeDistance: remainingSpaceTop,
|
|
271
|
-
}
|
|
327
|
+
},
|
|
272
328
|
].filter((x) => x.freeDistance > 0);
|
|
273
329
|
if (freePositions.length === 0) {
|
|
274
330
|
return this.popoverPosition;
|
|
@@ -287,7 +343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
287
343
|
type: Directive,
|
|
288
344
|
args: [{
|
|
289
345
|
selector: '[sHelpPopover]',
|
|
290
|
-
exportAs: 'sHelpPopover'
|
|
346
|
+
exportAs: 'sHelpPopover',
|
|
291
347
|
}]
|
|
292
348
|
}], propDecorators: { sHelpPopover: [{
|
|
293
349
|
type: Input
|
|
@@ -311,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
311
367
|
type: HostListener,
|
|
312
368
|
args: ['click']
|
|
313
369
|
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1wb3BvdmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9oZWxwLXBvcG92ZXIvc3JjL2xpYi9oZWxwLXBvcG92ZXIvaGVscC1wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTdFLE9BQU8sRUFBNEMsa0NBQWtDLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFPak0sTUFBTSxPQUFPLG9CQUFvQjtJQUNkLHdCQUF3QixHQUF5QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdEcsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDLENBQUE7SUFDZ0IsZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQTtJQUNRLFlBQVksR0FBcUMsSUFBSSxDQUFDO0lBQ3RELFdBQVcsR0FB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YSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO3dHQTNTVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztpQkFDekI7OEJBWVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBTUssZUFBZTtzQkFEekIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQW9DUCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSGVscFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL2hlbHAtcG9wb3Zlci9oZWxwLXBvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEhlbHBQb3BvdmVyQXJyb3dQb3NpdGlvbiwgSGVscFBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4vbW9kZWxzL2hlbHAtcG9wb3Zlci5tb2RlbHMnO1xuaW1wb3J0IHsgRWxlbWVudExlZnRvdmVyUG9zaXRpb24sIEVsZW1lbnRQb3NpdGlvbiwgZ2V0RWxlbWVudExlZnRvdmVyQ29udGVudEF2YWlsYWJsZSwgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbywgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzSGVscFBvcG92ZXJdJyxcbiAgZXhwb3J0QXM6ICdzSGVscFBvcG92ZXInXG59KVxuZXhwb3J0IGNsYXNzIEhlbHBQb3BvdmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IE1VVEFUSU9OX09CU0VSVkVSX0NPTkZJRzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9O1xuICBwcml2YXRlIHJlYWRvbmx5IE9CU0VSVkVSX0NBTExCQUNLID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBseVBvc2l0aW9uSW50b0VsZW1lbnQoKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IFJFU0laRV9PQlNFUlZFUiA9ICgpID0+IHtcbiAgICB0aGlzLm9uUmVzaXplJC5uZXh0KCk7XG4gIH1cbiAgQElucHV0KCkgc0hlbHBQb3BvdmVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KCkgcG9wb3Zlckljb24gPSAnJztcbiAgQElucHV0KCkgcG9wb3ZlckhlYWRlciA9ICcnO1xuICBASW5wdXQoKSBwb3BvdmVyRm9vdGVyID0gJyc7XG4gIEBJbnB1dCgpIHBvcG92ZXJCdXR0b25UZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHBvcG92ZXJBcnJvd1Bvc2l0aW9uOiBIZWxwUG9wb3ZlckFycm93UG9zaXRpb24gPSAnYmVnaW5uaW5nJztcbiAgcHJpdmF0ZSBfcG9wb3ZlclBvc2l0aW9uOiBIZWxwUG9wb3ZlclBvc2l0aW9uID0gJ2JvdHRvbSc7XG4gIHB1YmxpYyBnZXQgcG9wb3ZlclBvc2l0aW9uKCk6IEhlbHBQb3BvdmVyUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9wb3BvdmVyUG9zaXRpb247XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwb3BvdmVyUG9zaXRpb24odmFsdWU6IEhlbHBQb3BvdmVyUG9zaXRpb24pIHtcbiAgICB0aGlzLl9wb3BvdmVyUG9zaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLmludGVybmFsUG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEhlbHBQb3BvdmVyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclBvcG92ZXJFbGVtZW50OiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclBvcG92ZXJDb250ZW50OiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaW50ZXJuYWxQb3NpdGlvbjogSGVscFBvcG92ZXJQb3NpdGlvbiA9ICdib3R0b20nO1xuICBwcml2YXRlIG9uUmVzaXplJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgbWFudWFsVHJpZ2dlciA9IGZhbHNlO1xuICBwcml2YXRlIGxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbEVsZW1lbnRBcmVhID0gdGhpcy5nZXRQb3BvdmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudChldmVudCwgdG90YWxFbGVtZW50QXJlYSkpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJFbGVtZW50ID0gcG9wb3ZlckVsZW1lbnRPYnNlcnZlcjtcbiAgICBwb3BvdmVyRWxlbWVudE9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuTVVUQVRJT05fT0JTRVJWRVJfQ09ORklHKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5SRVNJWkVfT0JTRVJWRVIpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxlbmQnLCB0aGlzLk9CU0VSVkVSX0NBTExCQUNLKTtcbiAgICB0aGlzLm9uUmVzaXplJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spXG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMubWFudWFsVHJpZ2dlciA9IHRydWU7XG4gICAgdGhpcy5fY3JlYXRlQ29tcG9uZW50KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGRvQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubWFudWFsVHJpZ2dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jcmVhdGVDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyRWxlbWVudC5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLlJFU0laRV9PQlNFUlZFUik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbGVuZCcsIHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ29tcG9uZW50KCkge1xuICAgIGlmICghdGhpcy5zSGVscFBvcG92ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChIZWxwUG9wb3ZlckNvbXBvbmVudCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSBjb21wb25lbnRSZWY7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJDb250ZW50KSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyQ29udGVudC5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJDb250ZW50ID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5PQlNFUlZFUl9DQUxMQkFDSyk7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyUG9wb3ZlckNvbnRlbnQub2JzZXJ2ZShlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wb3BvdmVyLWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudCwgdGhpcy5NVVRBVElPTl9PQlNFUlZFUl9DT05GSUcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmxpc3RlbmVyKTtcbiAgICB9KVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb21wb25lbnQucG9wb3ZlckNvbnRlbnQgPSB0aGlzLnNIZWxwUG9wb3ZlcjtcbiAgICBjb21wb25lbnQuY2xvc2VCdXR0b24gPSB0aGlzLmNsb3NlQnV0dG9uO1xuICAgIGNvbXBvbmVudC5pY29uID0gdGhpcy5wb3BvdmVySWNvbjtcbiAgICBjb21wb25lbnQuaGVhZGVyID0gdGhpcy5wb3BvdmVySGVhZGVyO1xuICAgIGNvbXBvbmVudC5mb290ZXIgPSB0aGlzLnBvcG92ZXJGb290ZXI7XG4gICAgY29tcG9uZW50LmJ1dHRvbiA9IHRoaXMucG9wb3ZlckJ1dHRvblRleHQ7XG4gICAgY29tcG9uZW50LnBvc2l0aW9uID0gdGhpcy5pbnRlcm5hbFBvc2l0aW9uO1xuICAgIGNvbXBvbmVudC5hcnJvd1Bvc2l0aW9uID0gdGhpcy5wb3BvdmVyQXJyb3dQb3NpdGlvbjtcbiAgICBjb21wb25lbnQuYnV0dG9uQ2xpY2tlZCA9IHRoaXMuYnV0dG9uQ2xpY2tlZDtcbiAgICBjb21wb25lbnQuY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9KVxuICAgIHRoaXMuYXBwbHlQb3NpdGlvbkludG9FbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3koKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmxpc3RlbmVyKTtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmludGVybmFsUG9zaXRpb24gPSB0aGlzLnBvcG92ZXJQb3NpdGlvbjtcblxuICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyQ29udGVudCkge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyUG9wb3ZlckNvbnRlbnQuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQb3NpdGlvbkludG9FbGVtZW50KCkge1xuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50UG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb25JbmZvKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMudmFsaWRQb3NpdGlvbjtcbiAgICB0aGlzLmludGVybmFsUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRJbnN0YW5jZS5wb3NpdGlvbiA9IHRoaXMuaW50ZXJuYWxQb3NpdGlvbjtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5pbnRlcm5hbFBvc2l0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLmFwcGx5UG9wb3ZlclBvc2l0aW9uQm90dG9tKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3RvcCc6IHtcbiAgICAgICAgICB0aGlzLmFwcGx5UG9wb3ZlclBvc2l0aW9uVG9wKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2xlZnQnOiB7XG4gICAgICAgICAgdGhpcy5hcHBseVBvcG92ZXJQb3NpdGlvbkxlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncmlnaHQnOiB7XG4gICAgICAgICAgdGhpcy5hcHBseVBvcG92ZXJQb3NpdGlvblJpZ2h0KHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRJbnN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcbiAgICB9KVxuXG4gIH1cblxuICBwcml2YXRlIGFwcGx5UG9wb3ZlclBvc2l0aW9uQm90dG9tKHBvcG92ZXJFbGVtZW50UG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikge1xuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50ID0gdGhpcy5nZXRQb3BvdmVyRWxlbWVudDtcbiAgICBjb25zdCBsZWZ0UG9wb3ZlciA9IHRoaXMuZ2V0SG9yaXpvbnRhbExlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbilcbiAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2xlZnRQb3BvdmVyfXB4YDtcbiAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS50b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4ICsgJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLmVsZW1lbnRIZWlnaHR9cHgpYFxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVBvcG92ZXJQb3NpdGlvblRvcChwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgY29uc3QgbGVmdFBvcG92ZXIgPSB0aGlzLmdldEhvcml6b250YWxMZWZ0KHBvcG92ZXJFbGVtZW50UG9zaXRpb24pXG4gICAgY29uc3QgcG9wb3ZlckhlaWdodCA9IHBvcG92ZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2xlZnRQb3BvdmVyfXB4YDtcbiAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS50b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4IC0gJHtwb3BvdmVySGVpZ2h0fXB4KWA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UG9wb3ZlclBvc2l0aW9uTGVmdChwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgY29uc3QgcG9wb3ZlcldpZHRoID0gcG9wb3ZlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24ucmlnaHR9cHggLSAke3BvcG92ZXJXaWR0aCArIHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRofXB4KWA7XG4gICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy5nZXRWZXJ0aWNhbFRvcChwb3BvdmVyRWxlbWVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQb3BvdmVyUG9zaXRpb25SaWdodChwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24ucmlnaHR9cHgpYDtcbiAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLmdldFZlcnRpY2FsVG9wKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIb3Jpem9udGFsTGVmdChwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgY29uc3QgcG9wb3ZlcldpZHRoID0gcG9wb3ZlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgbGV0IF9ob3Jpem9udGFsTGVmdCA9IHBvcG92ZXJFbGVtZW50UG9zaXRpb24ubGVmdDtcbiAgICBpZiAodGhpcy5wb3BvdmVyQXJyb3dQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIF9ob3Jpem9udGFsTGVmdCA9IHBvcG92ZXJFbGVtZW50UG9zaXRpb24ucmlnaHQgLSBwb3BvdmVyV2lkdGg7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBvcG92ZXJBcnJvd1Bvc2l0aW9uID09PSAnbWlkZGxlJykge1xuICAgICAgX2hvcml6b250YWxMZWZ0ID0gKHBvcG92ZXJFbGVtZW50UG9zaXRpb24ubGVmdCArIHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRoIC8gMikgLSAocG9wb3ZlcldpZHRoIC8gMik7XG4gICAgfVxuICAgIHJldHVybiBfaG9yaXpvbnRhbExlZnQ7XG4gIH1cblxuICBwcml2YXRlIGdldFZlcnRpY2FsVG9wKHBvcG92ZXJFbGVtZW50UG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikge1xuICAgIGNvbnN0IGFycm93RWxlbWVudCA9IHRoaXMucG9wb3ZlckNvbXBvbmVudEluc3RhbmNlLmFycm93RWxlbWVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBhcnJvd0VsZW1lbnRQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbkluZm8oYXJyb3dFbGVtZW50KTtcbiAgICBjb25zdCBwb3BvdmVyQ29udGVudFBvc2l0aW9uID0gZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyh0aGlzLmdldFBvcG92ZXJFbGVtZW50KTtcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgY29uc3QgcG9wb3ZlckhlaWdodCA9IHBvcG92ZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBsZXQgdG9wID0gYGNhbGMoJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLnRvcH1weCAtICR7cG9wb3ZlckhlaWdodCAvIDJ9cHggKyAke3BvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCAvIDJ9cHgpYDtcblxuICAgIGNvbnN0IGFycm93TWlkZGxlID0gYXJyb3dFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCAvIDI7XG4gICAgaWYgKHRoaXMucG9wb3ZlckFycm93UG9zaXRpb24gPT09ICdiZWdpbm5pbmcnKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZUFycm93RnJvbVN0YXJ0ID0gYXJyb3dFbGVtZW50UG9zaXRpb24udG9wIC0gcG9wb3ZlckNvbnRlbnRQb3NpdGlvbi50b3A7XG4gICAgICB0b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4ICsgJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLmVsZW1lbnRIZWlnaHQgLyAyfXB4IC0gJHtkaXN0YW5jZUFycm93RnJvbVN0YXJ0ICsgYXJyb3dNaWRkbGV9cHgpYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9wb3ZlckFycm93UG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZUFycm93RnJvbUVuZCA9IChwb3BvdmVyQ29udGVudFBvc2l0aW9uLnRvcCArIHBvcG92ZXJDb250ZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCkgLSAoYXJyb3dFbGVtZW50UG9zaXRpb24udG9wICsgYXJyb3dFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCk7XG4gICAgICB0b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4IC0gJHtwb3BvdmVyQ29udGVudFBvc2l0aW9uLmVsZW1lbnRIZWlnaHR9cHggKyAke3BvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCAvIDJ9cHggKyAke2Rpc3RhbmNlQXJyb3dGcm9tRW5kICsgYXJyb3dNaWRkbGV9cHgpYDtcbiAgICB9XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlRm9yUG9wb3ZlcigpOiBFbGVtZW50TGVmdG92ZXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIGdldEVsZW1lbnRMZWZ0b3ZlckNvbnRlbnRBdmFpbGFibGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZ2V0UG9wb3ZlckVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZj8ubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHBvcG92ZXJDb21wb25lbnRJbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlIGFzIEhlbHBQb3BvdmVyQ29tcG9uZW50O1xuICB9XG5cbiAgLyoqXG4gKiBHaXZlbiB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBhbmQgdGhlIGF2YWlsYWJsZSBzcGFjZSBhcm91bmRcbiAqIHRoZSB0cmlnZ2VyIGVsZW1lbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHBvc2l0aW9uIHRoYXQgdGhlIHBvcG92ZXJcbiAqIHdpbGwgYmUgc2V0IGF0LlxuICpcbiAqIElmIHRoZSBwb3BvdmVyIHdpbGwgZml0IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwgaXQgd2lsbCByZXR1cm4gdGhlIHNhbWVcbiAqIHBvc2l0aW9uLlxuICpcbiAqIElmIHRoZSBwb3BvdmVyIHdpbGwgbm90IGZpdCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24sIGl0IHdpbGwgcmV0dXJuIHRoZSBwb3NpdGlvblxuICogdGhhdCBoYXMgdGhlIG1vc3QgYXZhaWxhYmxlIHNwYWNlICh0b3Agb3IgYm90dG9tKS5cbiAqXG4gKiBJZiB0aGVyZSBpcyBubyBwb3NpdGlvbiB3aXRoIGF2YWlsYWJsZSBzcGFjZSwgaXQgd2lsbCByZXR1cm4gdGhlIGdpdmVuXG4gKiBwb3NpdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcG9zaXRpb24gdGhhdCB0aGUgcG9wb3ZlciB3aWxsIGJlIHNldCBhdC5cbiAqL1xuICBwcml2YXRlIGdldCB2YWxpZFBvc2l0aW9uKCk6IEhlbHBQb3BvdmVyUG9zaXRpb24ge1xuICAgIGNvbnN0IHsgZnJlZURpc3RhbmNlVG9Cb3R0b20sIGZyZWVEaXN0YW5jZVRvVG9wLCBmcmVlRGlzdGFuY2VUb0xlZnQsIGZyZWVEaXN0YW5jZVRvUmlnaHQgfSA9IHRoaXMuZ2V0TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlRm9yUG9wb3ZlcigpO1xuXG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbkluZm8odGhpcy5nZXRQb3BvdmVyRWxlbWVudCk7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRXaWR0aCA9IHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRoO1xuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50SGVpZ2h0ID0gcG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0O1xuXG4gICAgY29uc3QgcmVtYWluaW5nU3BhY2VCb3R0b20gPSBmcmVlRGlzdGFuY2VUb0JvdHRvbSAtIHBvcG92ZXJFbGVtZW50SGVpZ2h0O1xuICAgIGNvbnN0IHJlbWFpbmluZ1NwYWNlVG9wID0gZnJlZURpc3RhbmNlVG9Ub3AgLSBwb3BvdmVyRWxlbWVudEhlaWdodDtcbiAgICBjb25zdCByZW1haW5pbmdTcGFjZUxlZnQgPSBmcmVlRGlzdGFuY2VUb0xlZnQgLSBwb3BvdmVyRWxlbWVudFdpZHRoO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NwYWNlUmlnaHQgPSBmcmVlRGlzdGFuY2VUb1JpZ2h0IC0gcG9wb3ZlckVsZW1lbnRXaWR0aDtcblxuICAgIGNvbnN0IGNhblNldEF0Qm90dG9tID0gcmVtYWluaW5nU3BhY2VCb3R0b20gPiAwO1xuICAgIGNvbnN0IGNhblNldEF0VG9wID0gcmVtYWluaW5nU3BhY2VUb3AgPiAwO1xuICAgIGNvbnN0IGNhblNldEF0TGVmdCA9IHJlbWFpbmluZ1NwYWNlTGVmdCA+IDA7XG4gICAgY29uc3QgY2FuU2V0QXRSaWdodCA9IHJlbWFpbmluZ1NwYWNlUmlnaHQgPiAwO1xuXG4gICAgbGV0IHZhbGlkUG9zaXRpb246IEhlbHBQb3BvdmVyUG9zaXRpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGNhblNldEF0Qm90dG9tICYmIHRoaXMucG9wb3ZlclBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgdmFsaWRQb3NpdGlvbiA9ICdib3R0b20nO1xuICAgIH0gZWxzZSBpZiAoY2FuU2V0QXRUb3AgJiYgdGhpcy5wb3BvdmVyUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICB2YWxpZFBvc2l0aW9uID0gJ3RvcCc7XG4gICAgfSBlbHNlIGlmIChjYW5TZXRBdExlZnQgJiYgdGhpcy5wb3BvdmVyUG9zaXRpb24gPT09ICdsZWZ0Jykge1xuICAgICAgdmFsaWRQb3NpdGlvbiA9ICdsZWZ0JztcbiAgICB9IGVsc2UgaWYgKGNhblNldEF0UmlnaHQgJiYgdGhpcy5wb3BvdmVyUG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHZhbGlkUG9zaXRpb24gPSAncmlnaHQnO1xuICAgIH1cblxuICAgIGNvbnN0IG5lZWRVc2VPdGhlclBvc2l0aW9uID0gIXZhbGlkUG9zaXRpb247XG4gICAgaWYgKG5lZWRVc2VPdGhlclBvc2l0aW9uKSB7XG4gICAgICBjb25zdCBmcmVlUG9zaXRpb25zOiB7IHBvc2l0aW9uOiBIZWxwUG9wb3ZlclBvc2l0aW9uLCBmcmVlRGlzdGFuY2U6IG51bWJlciB9W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScgYXMgSGVscFBvcG92ZXJQb3NpdGlvbixcbiAgICAgICAgICBmcmVlRGlzdGFuY2U6IHJlbWFpbmluZ1NwYWNlQm90dG9tLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246ICd0b3AnIGFzIEhlbHBQb3BvdmVyUG9zaXRpb24sXG4gICAgICAgICAgZnJlZURpc3RhbmNlOiByZW1haW5pbmdTcGFjZVRvcCxcbiAgICAgICAgfVxuICAgICAgXS5maWx0ZXIoKHgpID0+IHguZnJlZURpc3RhbmNlID4gMCk7XG5cbiAgICAgIGlmIChmcmVlUG9zaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3BvdmVyUG9zaXRpb247XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtV2l0aE1heEZyZWVEaXN0YW5jZSA9IGZyZWVQb3NpdGlvbnMuc29ydCgoYSwgYikgPT4gYi5mcmVlRGlzdGFuY2UgLSBhLmZyZWVEaXN0YW5jZSlbMF07XG4gICAgICByZXR1cm4gaXRlbVdpdGhNYXhGcmVlRGlzdGFuY2UucG9zaXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBvcG92ZXJQb3NpdGlvbjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1wb3BvdmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9oZWxwLXBvcG92ZXIvc3JjL2xpYi9oZWxwLXBvcG92ZXIvaGVscC1wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFN0UsT0FBTyxFQUdILGtDQUFrQyxFQUNsQyxzQkFBc0IsRUFDdEIsK0JBQStCLEdBQ2xDLE1BQU0sMENBQTBDLENBQUM7O0FBRWxEOzs7Ozs7Ozs7OztHQVdHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjtJQUNaLHdCQUF3QixHQUF5QjtRQUM5RCxVQUFVLEVBQUUsSUFBSTtRQUNoQixTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFDZSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUMsQ0FBQztJQUNlLGVBQWUsR0FBRyxHQUFHLEVBQUU7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDTSxZQUFZLEdBQXFDLElBQUksQ0FBQztJQUUvRDs7OztPQUlHO0lBQ00sV0FBVyxHQUFHLElBQUksQ0FBQztJQUU1Qjs7T0FFRztJQUNNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFMUI7O09BRUc7SUFDTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRTVCOztPQUVHO0lBQ00sYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUU1Qjs7O09BR0c7SUFDTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFFaEM7Ozs7O09BS0c7SUFDTSxvQkFBb0IsR0FBNkIsV0FBVyxDQUFDO0lBRXRFOzs7Ozs7T0FNRztJQUNILElBQ1csZUFBZSxDQUFDLEtBQTBCO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNPLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRTNDLGdCQUFnQixHQUF3QixRQUFRLENBQUM7SUFFakQsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDakMsWUFBWSxHQUE4QyxJQUFJLENBQUM7SUFDL0QsOEJBQThCLEdBQTRCLElBQUksQ0FBQztJQUMvRCw4QkFBOEIsR0FBNEIsSUFBSSxDQUFDO0lBQy9ELGdCQUFnQixHQUF3QixRQUFRLENBQUM7SUFDakQsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixRQUFRLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDeEUsSUFBSSwrQkFBK0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ2UsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsT0FBTyxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNKLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsc0JBQXNCLENBQUM7UUFDN0Qsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsOEJBQThCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckQsQ0FBQztRQUNELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsOEJBQThCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBZ0MsQ0FBQztRQUN0RCxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUN2QyxPQUFPLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixFQUN4RCxJQUFJLENBQUMsd0JBQXdCLENBQ2hDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDeEMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN6QyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbEMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMxQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMzQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNwRCxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDN0MsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLE9BQU87UUFDWCxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUU3QyxJQUFJLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QjtRQUM1QixNQUFNLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixRQUFRLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ1osSUFBSSxDQUFDLDBCQUEwQixDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1YsQ0FBQztnQkFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ1QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3JELE1BQU07Z0JBQ1YsQ0FBQztnQkFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ1YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3RELE1BQU07Z0JBQ1YsQ0FBQztnQkFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ1gsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3ZELE1BQU07Z0JBQ1YsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxzQkFBdUM7UUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25FLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDO1FBQy9DLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFFBQVEsc0JBQXNCLENBQUMsR0FBRyxRQUFRLHNCQUFzQixDQUFDLGFBQWEsS0FBSyxDQUFDO0lBQ25ILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxzQkFBdUM7UUFDbkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNwRSxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxXQUFXLElBQUksQ0FBQztRQUMvQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLHNCQUFzQixDQUFDLEdBQUcsUUFBUSxhQUFhLEtBQUssQ0FBQztJQUM1RixDQUFDO0lBRU8sd0JBQXdCLENBQUMsc0JBQXVDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDbEUsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsc0JBQXNCLENBQUMsS0FBSyxRQUFRLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLEtBQUssQ0FBQztRQUNoSSxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLHlCQUF5QixDQUFDLHNCQUF1QztRQUNyRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDOUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsc0JBQXNCLENBQUMsS0FBSyxLQUFLLENBQUM7UUFDdEUsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxzQkFBdUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNsRSxJQUFJLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEMsZUFBZSxHQUFHLHNCQUFzQixDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRU8sY0FBYyxDQUFDLHNCQUF1QztRQUMxRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLGFBQTRCLENBQUM7UUFDOUYsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxNQUFNLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDcEUsSUFBSSxHQUFHLEdBQUcsUUFBUSxzQkFBc0IsQ0FBQyxHQUFHLFFBQVEsYUFBYSxHQUFHLENBQUMsUUFBUSxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFM0gsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxNQUFNLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUM7WUFDckYsR0FBRyxHQUFHLFFBQVEsc0JBQXNCLENBQUMsR0FBRyxRQUFRLHNCQUFzQixDQUFDLGFBQWEsR0FBRyxDQUFDLFFBQVEsc0JBQXNCLEdBQUcsV0FBVyxLQUFLLENBQUM7UUFDOUksQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdDLE1BQU0sb0JBQW9CLEdBQ3RCLHNCQUFzQixDQUFDLEdBQUc7Z0JBQzFCLHNCQUFzQixDQUFDLGFBQWE7Z0JBQ3BDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BFLEdBQUcsR0FBRyxRQUFRLHNCQUFzQixDQUFDLEdBQUcsUUFBUSxzQkFBc0IsQ0FBQyxhQUFhLFFBQVEsc0JBQXNCLENBQUMsYUFBYSxHQUFHLENBQUMsUUFBUSxvQkFBb0IsR0FBRyxXQUFXLEtBQUssQ0FBQztRQUN4TCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8scUNBQXFDO1FBQ3pDLE9BQU8sa0NBQWtDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBWSxpQkFBaUI7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUE0QixDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFZLHdCQUF3QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBZ0MsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsSUFBWSxhQUFhO1FBQ3JCLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxHQUN0RixJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUVqRCxNQUFNLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxDQUFDO1FBQ2hFLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUMsYUFBYSxDQUFDO1FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDekUsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztRQUNuRSxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFdEUsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBRTlDLElBQUksYUFBYSxHQUFvQyxTQUFTLENBQUM7UUFDL0QsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZELGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekQsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzRCxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN2QixNQUFNLGFBQWEsR0FBOEQ7Z0JBQzdFO29CQUNJLFFBQVEsRUFBRSxRQUErQjtvQkFDekMsWUFBWSxFQUFFLG9CQUFvQjtpQkFDckM7Z0JBQ0Q7b0JBQ0ksUUFBUSxFQUFFLEtBQTRCO29CQUN0QyxZQUFZLEVBQUUsaUJBQWlCO2lCQUNsQzthQUNKLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2hDLENBQUM7WUFDRCxNQUFNLHVCQUF1QixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQzt3R0F0V1Esb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzhCQXFCWSxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFVSyxlQUFlO3NCQUR6QixLQUFLO2dCQWFJLGFBQWE7c0JBQXRCLE1BQU07Z0JBc0NQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEhlbHBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWxwLXBvcG92ZXIvaGVscC1wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWxwUG9wb3ZlckFycm93UG9zaXRpb24sIEhlbHBQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuL21vZGVscy9oZWxwLXBvcG92ZXIubW9kZWxzJztcbmltcG9ydCB7XG4gICAgRWxlbWVudExlZnRvdmVyUG9zaXRpb24sXG4gICAgRWxlbWVudFBvc2l0aW9uLFxuICAgIGdldEVsZW1lbnRMZWZ0b3ZlckNvbnRlbnRBdmFpbGFibGUsXG4gICAgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyxcbiAgICBpc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50LFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlyZXRpdmEgcXVlIGV4aWJlIHVtIHBvcG92ZXIgZGUgYWp1ZGEgYW8gY2xpY2FyIG5vIGVsZW1lbnRvIGhvc3BlZGVpcm8uXG4gKiBPIHBvcG92ZXIgc3Vwb3J0YSBjb250ZcO6ZG8gY29tbyB0ZXh0byBzaW1wbGVzIG91IGBUZW1wbGF0ZVJlZmAsIGFsw6ltIGRlIGJvdMOjbyBkZSBmZWNoYXIsXG4gKiDDrWNvbmUsIGNhYmXDp2FsaG8sIHJvZGFww6kgZSBwb3Npw6fDo28gY29uZmlndXLDoXZlbC4gUG9kZSBzZXIgYWNpb25hZG8gcHJvZ3JhbWF0aWNhbWVudGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NIZWxwUG9wb3Zlcl09XCInSW5mb3JtZSBhcXVpIG8gc2V1IENQRidcIiBwb3BvdmVyUG9zaXRpb249XCJyaWdodFwiPj88L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBPdmVybGF5XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NIZWxwUG9wb3Zlcl0nLFxuICAgIGV4cG9ydEFzOiAnc0hlbHBQb3BvdmVyJyxcbn0pXG5leHBvcnQgY2xhc3MgSGVscFBvcG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNVVRBVElPTl9PQlNFUlZFUl9DT05GSUc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE9CU0VSVkVSX0NBTExCQUNLID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uSW50b0VsZW1lbnQoKTtcbiAgICB9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgUkVTSVpFX09CU0VSVkVSID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm9uUmVzaXplJC5uZXh0KCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250ZcO6ZG8gZG8gcG9wb3Zlci4gQWNlaXRhIHVtYSBgc3RyaW5nYCBjb20gdGV4dG8gc2ltcGxlcyBvdSB1bSBgVGVtcGxhdGVSZWZgXG4gICAgICogcGFyYSByZW5kZXJpemFyIGNvbnRlw7pkbyBBbmd1bGFyIGN1c3RvbWl6YWRvIGRlbnRybyBkbyBwb3BvdmVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNIZWxwUG9wb3Zlcjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIGV4aWJlIG8gYm90w6NvIGRlIGZlY2hhciAoWCkgbm8gY2FiZcOnYWxobyBkbyBwb3BvdmVyLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNsb3NlQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZGUgw61jb25lIGV4aWJpZGEgbm8gY2FiZcOnYWxobyBkbyBwb3BvdmVyIChleDogY2xhc3NlIGRlIEZvbnQgQXdlc29tZSkuXG4gICAgICovXG4gICAgQElucHV0KCkgcG9wb3Zlckljb24gPSAnJztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIG5vIGNhYmXDp2FsaG8gZG8gcG9wb3Zlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwb3BvdmVySGVhZGVyID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZXhpYmlkbyBubyByb2RhcMOpIGRvIHBvcG92ZXIuXG4gICAgICovXG4gICAgQElucHV0KCkgcG9wb3ZlckZvb3RlciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIGRvIGJvdMOjbyBkZSBhw6fDo28gZXhpYmlkbyBubyByb2RhcMOpIGRvIHBvcG92ZXIuXG4gICAgICogQW8gY2xpY2FyLCBlbWl0ZSBvIGV2ZW50byBgYnV0dG9uQ2xpY2tlZGAuXG4gICAgICovXG4gICAgQElucHV0KCkgcG9wb3ZlckJ1dHRvblRleHQgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbGluaGFtZW50byBkYSBzZXRhIGluZGljYWRvcmEgZW0gcmVsYcOnw6NvIGFvIGxhZG8gZG8gcG9wb3Zlci5cbiAgICAgKiBWYWxvcmVzIGFjZWl0b3M6IGAnYmVnaW5uaW5nJ2AgKHBhZHLDo28pLCBgJ21pZGRsZSdgLCBgJ2VuZCdgLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ2JlZ2lubmluZydcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwb3BvdmVyQXJyb3dQb3NpdGlvbjogSGVscFBvcG92ZXJBcnJvd1Bvc2l0aW9uID0gJ2JlZ2lubmluZyc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUG9zacOnw6NvIGRvIHBvcG92ZXIgZW0gcmVsYcOnw6NvIGFvIGVsZW1lbnRvIGhvc3BlZGVpcm8uXG4gICAgICogVmFsb3JlcyBhY2VpdG9zOiBgJ3RvcCdgLCBgJ2JvdHRvbSdgIChwYWRyw6NvKSwgYCdsZWZ0J2AsIGAncmlnaHQnYC5cbiAgICAgKiBPIGNvbXBvbmVudGUgdGVudGEgcmVwb3NpY2lvbmFyIGF1dG9tYXRpY2FtZW50ZSBjYXNvIG7Do28gaGFqYSBlc3Bhw6dvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ2JvdHRvbSdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcG9wb3ZlclBvc2l0aW9uKHZhbHVlOiBIZWxwUG9wb3ZlclBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJQb3NpdGlvbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLmludGVybmFsUG9zaXRpb24gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvcG92ZXJQb3NpdGlvbigpOiBIZWxwUG9wb3ZlclBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJQb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBubyBib3TDo28gZGUgYcOnw6NvIGRvIHJvZGFww6kgZG8gcG9wb3Zlci5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX3BvcG92ZXJQb3NpdGlvbjogSGVscFBvcG92ZXJQb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gICAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEhlbHBQb3BvdmVyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclBvcG92ZXJFbGVtZW50OiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyUG9wb3ZlckNvbnRlbnQ6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGludGVybmFsUG9zaXRpb246IEhlbHBQb3BvdmVyUG9zaXRpb24gPSAnYm90dG9tJztcbiAgICBwcml2YXRlIG9uUmVzaXplJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBtYW51YWxUcmlnZ2VyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBsaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdG90YWxFbGVtZW50QXJlYSA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChpc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50KGV2ZW50LCB0b3RhbEVsZW1lbnRBcmVhKSkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50T2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLk9CU0VSVkVSX0NBTExCQUNLKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyUG9wb3ZlckVsZW1lbnQgPSBwb3BvdmVyRWxlbWVudE9ic2VydmVyO1xuICAgICAgICBwb3BvdmVyRWxlbWVudE9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuTVVUQVRJT05fT0JTRVJWRVJfQ09ORklHKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuUkVTSVpFX09CU0VSVkVSKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbGVuZCcsIHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICAgICAgICB0aGlzLm9uUmVzaXplJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMubWFudWFsVHJpZ2dlciA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBkb0NsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5tYW51YWxUcmlnZ2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlQ29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyRWxlbWVudC5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuUkVTSVpFX09CU0VSVkVSKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbGVuZCcsIHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUNvbXBvbmVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNIZWxwUG9wb3Zlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChIZWxwUG9wb3ZlckNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyUG9wb3ZlckNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJDb250ZW50LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyQ29udGVudCA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuT0JTRVJWRVJfQ0FMTEJBQ0spO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRQb3BvdmVyRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyUG9wb3ZlckNvbnRlbnQub2JzZXJ2ZShcbiAgICAgICAgICAgIGVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBvcG92ZXItY29udGVudCcpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgdGhpcy5NVVRBVElPTl9PQlNFUlZFUl9DT05GSUcsXG4gICAgICAgICk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5saXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgIGNvbXBvbmVudC5wb3BvdmVyQ29udGVudCA9IHRoaXMuc0hlbHBQb3BvdmVyO1xuICAgICAgICBjb21wb25lbnQuY2xvc2VCdXR0b24gPSB0aGlzLmNsb3NlQnV0dG9uO1xuICAgICAgICBjb21wb25lbnQuaWNvbiA9IHRoaXMucG9wb3Zlckljb247XG4gICAgICAgIGNvbXBvbmVudC5oZWFkZXIgPSB0aGlzLnBvcG92ZXJIZWFkZXI7XG4gICAgICAgIGNvbXBvbmVudC5mb290ZXIgPSB0aGlzLnBvcG92ZXJGb290ZXI7XG4gICAgICAgIGNvbXBvbmVudC5idXR0b24gPSB0aGlzLnBvcG92ZXJCdXR0b25UZXh0O1xuICAgICAgICBjb21wb25lbnQucG9zaXRpb24gPSB0aGlzLmludGVybmFsUG9zaXRpb247XG4gICAgICAgIGNvbXBvbmVudC5hcnJvd1Bvc2l0aW9uID0gdGhpcy5wb3BvdmVyQXJyb3dQb3NpdGlvbjtcbiAgICAgICAgY29tcG9uZW50LmJ1dHRvbkNsaWNrZWQgPSB0aGlzLmJ1dHRvbkNsaWNrZWQ7XG4gICAgICAgIGNvbXBvbmVudC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uSW50b0VsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3koKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5saXN0ZW5lcik7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5wb3BvdmVyUG9zaXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlclBvcG92ZXJDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJQb3BvdmVyQ29udGVudC5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5UG9zaXRpb25JbnRvRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW1lbnRQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbkluZm8odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMudmFsaWRQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbXBvbmVudEluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5pbnRlcm5hbFBvc2l0aW9uO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5pbnRlcm5hbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UG9wb3ZlclBvc2l0aW9uQm90dG9tKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UG9wb3ZlclBvc2l0aW9uVG9wKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnbGVmdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvcG92ZXJQb3NpdGlvbkxlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvcG92ZXJQb3NpdGlvblJpZ2h0KHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDb21wb25lbnRJbnN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVBvcG92ZXJQb3NpdGlvbkJvdHRvbShwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW1lbnQgPSB0aGlzLmdldFBvcG92ZXJFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0UG9wb3ZlciA9IHRoaXMuZ2V0SG9yaXpvbnRhbExlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbik7XG4gICAgICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2xlZnRQb3BvdmVyfXB4YDtcbiAgICAgICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUudG9wID0gYGNhbGMoJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLnRvcH1weCArICR7cG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0fXB4KWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVBvcG92ZXJQb3NpdGlvblRvcChwb3BvdmVyRWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW1lbnQgPSB0aGlzLmdldFBvcG92ZXJFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0UG9wb3ZlciA9IHRoaXMuZ2V0SG9yaXpvbnRhbExlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJIZWlnaHQgPSBwb3BvdmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2xlZnRQb3BvdmVyfXB4YDtcbiAgICAgICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUudG9wID0gYGNhbGMoJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLnRvcH1weCAtICR7cG9wb3ZlckhlaWdodH1weClgO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlQb3BvdmVyUG9zaXRpb25MZWZ0KHBvcG92ZXJFbGVtZW50UG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IHBvcG92ZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24ucmlnaHR9cHggLSAke3BvcG92ZXJXaWR0aCArIHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRofXB4KWA7XG4gICAgICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLnRvcCA9IHRoaXMuZ2V0VmVydGljYWxUb3AocG9wb3ZlckVsZW1lbnRQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVBvcG92ZXJQb3NpdGlvblJpZ2h0KHBvcG92ZXJFbGVtZW50UG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgICAgIHBvcG92ZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgcG9wb3ZlckVsZW1lbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7cG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5yaWdodH1weClgO1xuICAgICAgICBwb3BvdmVyRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLmdldFZlcnRpY2FsVG9wKHBvcG92ZXJFbGVtZW50UG9zaXRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9yaXpvbnRhbExlZnQocG9wb3ZlckVsZW1lbnRQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50ID0gdGhpcy5nZXRQb3BvdmVyRWxlbWVudDtcbiAgICAgICAgY29uc3QgcG9wb3ZlcldpZHRoID0gcG9wb3ZlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGxldCBfaG9yaXpvbnRhbExlZnQgPSBwb3BvdmVyRWxlbWVudFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJBcnJvd1Bvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgICAgICAgX2hvcml6b250YWxMZWZ0ID0gcG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5yaWdodCAtIHBvcG92ZXJXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBvcG92ZXJBcnJvd1Bvc2l0aW9uID09PSAnbWlkZGxlJykge1xuICAgICAgICAgICAgX2hvcml6b250YWxMZWZ0ID0gcG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgcG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5lbGVtZW50V2lkdGggLyAyIC0gcG9wb3ZlcldpZHRoIC8gMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX2hvcml6b250YWxMZWZ0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmVydGljYWxUb3AocG9wb3ZlckVsZW1lbnRQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFycm93RWxlbWVudCA9IHRoaXMucG9wb3ZlckNvbXBvbmVudEluc3RhbmNlLmFycm93RWxlbWVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgYXJyb3dFbGVtZW50UG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb25JbmZvKGFycm93RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJDb250ZW50UG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb25JbmZvKHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudCA9IHRoaXMuZ2V0UG9wb3ZlckVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJIZWlnaHQgPSBwb3BvdmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGxldCB0b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4IC0gJHtwb3BvdmVySGVpZ2h0IC8gMn1weCArICR7cG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0IC8gMn1weClgO1xuXG4gICAgICAgIGNvbnN0IGFycm93TWlkZGxlID0gYXJyb3dFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCAvIDI7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJBcnJvd1Bvc2l0aW9uID09PSAnYmVnaW5uaW5nJykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VBcnJvd0Zyb21TdGFydCA9IGFycm93RWxlbWVudFBvc2l0aW9uLnRvcCAtIHBvcG92ZXJDb250ZW50UG9zaXRpb24udG9wO1xuICAgICAgICAgICAgdG9wID0gYGNhbGMoJHtwb3BvdmVyRWxlbWVudFBvc2l0aW9uLnRvcH1weCArICR7cG9wb3ZlckVsZW1lbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0IC8gMn1weCAtICR7ZGlzdGFuY2VBcnJvd0Zyb21TdGFydCArIGFycm93TWlkZGxlfXB4KWA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wb3BvdmVyQXJyb3dQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlQXJyb3dGcm9tRW5kID1cbiAgICAgICAgICAgICAgICBwb3BvdmVyQ29udGVudFBvc2l0aW9uLnRvcCArXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNvbnRlbnRQb3NpdGlvbi5lbGVtZW50SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAoYXJyb3dFbGVtZW50UG9zaXRpb24udG9wICsgYXJyb3dFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCk7XG4gICAgICAgICAgICB0b3AgPSBgY2FsYygke3BvcG92ZXJFbGVtZW50UG9zaXRpb24udG9wfXB4IC0gJHtwb3BvdmVyQ29udGVudFBvc2l0aW9uLmVsZW1lbnRIZWlnaHR9cHggKyAke3BvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodCAvIDJ9cHggKyAke2Rpc3RhbmNlQXJyb3dGcm9tRW5kICsgYXJyb3dNaWRkbGV9cHgpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9wO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlRm9yUG9wb3ZlcigpOiBFbGVtZW50TGVmdG92ZXJQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBnZXRQb3BvdmVyRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZj8ubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBwb3BvdmVyQ29tcG9uZW50SW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgYXMgSGVscFBvcG92ZXJDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgYW5kIHRoZSBhdmFpbGFibGUgc3BhY2UgYXJvdW5kXG4gICAgICogdGhlIHRyaWdnZXIgZWxlbWVudCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgcG9zaXRpb24gdGhhdCB0aGUgcG9wb3ZlclxuICAgICAqIHdpbGwgYmUgc2V0IGF0LlxuICAgICAqXG4gICAgICogSWYgdGhlIHBvcG92ZXIgd2lsbCBmaXQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLCBpdCB3aWxsIHJldHVybiB0aGUgc2FtZVxuICAgICAqIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogSWYgdGhlIHBvcG92ZXIgd2lsbCBub3QgZml0IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiwgaXQgd2lsbCByZXR1cm4gdGhlIHBvc2l0aW9uXG4gICAgICogdGhhdCBoYXMgdGhlIG1vc3QgYXZhaWxhYmxlIHNwYWNlICh0b3Agb3IgYm90dG9tKS5cbiAgICAgKlxuICAgICAqIElmIHRoZXJlIGlzIG5vIHBvc2l0aW9uIHdpdGggYXZhaWxhYmxlIHNwYWNlLCBpdCB3aWxsIHJldHVybiB0aGUgZ2l2ZW5cbiAgICAgKiBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBwb3NpdGlvbiB0aGF0IHRoZSBwb3BvdmVyIHdpbGwgYmUgc2V0IGF0LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0IHZhbGlkUG9zaXRpb24oKTogSGVscFBvcG92ZXJQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHsgZnJlZURpc3RhbmNlVG9Cb3R0b20sIGZyZWVEaXN0YW5jZVRvVG9wLCBmcmVlRGlzdGFuY2VUb0xlZnQsIGZyZWVEaXN0YW5jZVRvUmlnaHQgfSA9XG4gICAgICAgICAgICB0aGlzLmdldExlZnRvdmVyQ29udGVudEF2YWlsYWJsZUZvclBvcG92ZXIoKTtcblxuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudFBvc2l0aW9uID0gZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyh0aGlzLmdldFBvcG92ZXJFbGVtZW50KTtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVsZW1lbnRXaWR0aCA9IHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudFdpZHRoO1xuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudEhlaWdodCA9IHBvcG92ZXJFbGVtZW50UG9zaXRpb24uZWxlbWVudEhlaWdodDtcblxuICAgICAgICBjb25zdCByZW1haW5pbmdTcGFjZUJvdHRvbSA9IGZyZWVEaXN0YW5jZVRvQm90dG9tIC0gcG9wb3ZlckVsZW1lbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ1NwYWNlVG9wID0gZnJlZURpc3RhbmNlVG9Ub3AgLSBwb3BvdmVyRWxlbWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nU3BhY2VMZWZ0ID0gZnJlZURpc3RhbmNlVG9MZWZ0IC0gcG9wb3ZlckVsZW1lbnRXaWR0aDtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nU3BhY2VSaWdodCA9IGZyZWVEaXN0YW5jZVRvUmlnaHQgLSBwb3BvdmVyRWxlbWVudFdpZHRoO1xuXG4gICAgICAgIGNvbnN0IGNhblNldEF0Qm90dG9tID0gcmVtYWluaW5nU3BhY2VCb3R0b20gPiAwO1xuICAgICAgICBjb25zdCBjYW5TZXRBdFRvcCA9IHJlbWFpbmluZ1NwYWNlVG9wID4gMDtcbiAgICAgICAgY29uc3QgY2FuU2V0QXRMZWZ0ID0gcmVtYWluaW5nU3BhY2VMZWZ0ID4gMDtcbiAgICAgICAgY29uc3QgY2FuU2V0QXRSaWdodCA9IHJlbWFpbmluZ1NwYWNlUmlnaHQgPiAwO1xuXG4gICAgICAgIGxldCB2YWxpZFBvc2l0aW9uOiBIZWxwUG9wb3ZlclBvc2l0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY2FuU2V0QXRCb3R0b20gJiYgdGhpcy5wb3BvdmVyUG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB2YWxpZFBvc2l0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FuU2V0QXRUb3AgJiYgdGhpcy5wb3BvdmVyUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICB2YWxpZFBvc2l0aW9uID0gJ3RvcCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FuU2V0QXRMZWZ0ICYmIHRoaXMucG9wb3ZlclBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb24gPSAnbGVmdCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FuU2V0QXRSaWdodCAmJiB0aGlzLnBvcG92ZXJQb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdmFsaWRQb3NpdGlvbiA9ICdyaWdodCc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZWVkVXNlT3RoZXJQb3NpdGlvbiA9ICF2YWxpZFBvc2l0aW9uO1xuICAgICAgICBpZiAobmVlZFVzZU90aGVyUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZyZWVQb3NpdGlvbnM6IHsgcG9zaXRpb246IEhlbHBQb3BvdmVyUG9zaXRpb247IGZyZWVEaXN0YW5jZTogbnVtYmVyIH1bXSA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyBhcyBIZWxwUG9wb3ZlclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBmcmVlRGlzdGFuY2U6IHJlbWFpbmluZ1NwYWNlQm90dG9tLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcgYXMgSGVscFBvcG92ZXJQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZnJlZURpc3RhbmNlOiByZW1haW5pbmdTcGFjZVRvcCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXS5maWx0ZXIoKHgpID0+IHguZnJlZURpc3RhbmNlID4gMCk7XG5cbiAgICAgICAgICAgIGlmIChmcmVlUG9zaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvcG92ZXJQb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1XaXRoTWF4RnJlZURpc3RhbmNlID0gZnJlZVBvc2l0aW9ucy5zb3J0KChhLCBiKSA9PiBiLmZyZWVEaXN0YW5jZSAtIGEuZnJlZURpc3RhbmNlKVswXTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtV2l0aE1heEZyZWVEaXN0YW5jZS5wb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvcG92ZXJQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ContentChild, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import Cropper from 'cropperjs';
|
|
3
3
|
import { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';
|
|
4
4
|
import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
|
|
@@ -8,30 +8,68 @@ import * as i1 from "@seniorsistemas/angular-components/button";
|
|
|
8
8
|
import * as i2 from "@seniorsistemas/angular-components/empty-state";
|
|
9
9
|
import * as i3 from "@seniorsistemas/angular-components/dialog";
|
|
10
10
|
import * as i4 from "@seniorsistemas/angular-components/template";
|
|
11
|
+
/**
|
|
12
|
+
* @description Componente de recorte de imagem que integra a biblioteca `cropperjs`.
|
|
13
|
+
* Exibe um dialog com uma área interativa para selecionar, recortar e remover imagens,
|
|
14
|
+
* suportando razão de aspecto configurável, formato circular e templates de cabeçalho/rodapé.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <s-image-cropper
|
|
19
|
+
* [(visible)]="dialogAberto"
|
|
20
|
+
* [imageSource]="urlDaImagem"
|
|
21
|
+
* [aspectRatio]="1"
|
|
22
|
+
* (croppedImage)="onCroppedImage($event)" />
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @category Inputs
|
|
26
|
+
*/
|
|
11
27
|
export class ImageCropperComponent {
|
|
12
28
|
activeDialog = inject(ActiveDialog, { optional: true });
|
|
13
29
|
static nextId = 0;
|
|
30
|
+
/** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
|
|
14
31
|
id = `s-image-cropper-${ImageCropperComponent.nextId++}`;
|
|
32
|
+
/** @description Controla a visibilidade do dialog de corte. @default false */
|
|
15
33
|
visible = false;
|
|
34
|
+
/** @description Título exibido no cabeçalho do dialog. @default 'Recortar imagem' */
|
|
16
35
|
header = 'Recortar imagem';
|
|
36
|
+
/** @description Rótulo do botão de confirmar o corte. @default 'Recortar' */
|
|
17
37
|
cropLabel = 'Recortar';
|
|
38
|
+
/** @description Rótulo do botão de trocar a imagem. @default 'Trocar' */
|
|
18
39
|
selectAnotherLabel = 'Trocar';
|
|
40
|
+
/** @description Rótulo do botão de remover a imagem. @default 'Remover' */
|
|
19
41
|
removeLabel = 'Remover';
|
|
42
|
+
/** @description Rótulo do botão de cancelar. @default 'Cancelar' */
|
|
20
43
|
cancelLabel = 'Cancelar';
|
|
44
|
+
/** @description Título do empty state quando nenhuma imagem foi selecionada. */
|
|
21
45
|
emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';
|
|
46
|
+
/** @description Rótulo do botão de ação do empty state. @default 'Escolher imagem' */
|
|
22
47
|
emptyStateActionLabel = 'Escolher imagem';
|
|
48
|
+
/** @description Classe do ícone exibido no empty state. @default 'fa fa-picture-o' */
|
|
23
49
|
emptyStateIconClass = 'fa fa-picture-o';
|
|
50
|
+
/** @description Razão de aspecto para o recorte (ex.: `1` para quadrado, `16/9`). @default NaN (livre) */
|
|
24
51
|
aspectRatio = NaN;
|
|
52
|
+
/** @description Quando `true`, exibe a área de recorte no formato circular. @default false */
|
|
25
53
|
rounded = false;
|
|
54
|
+
/** @description Exibe o botão para trocar a imagem selecionada. @default true */
|
|
26
55
|
allowSelectAnother = true;
|
|
56
|
+
/** @description Exibe o botão para remover a imagem. @default true */
|
|
27
57
|
allowRemove = true;
|
|
58
|
+
/** @description Exibe o botão para cancelar o recorte. @default true */
|
|
28
59
|
allowCancel = true;
|
|
60
|
+
/** @description URL ou base64 da imagem a ser carregada no cropper. */
|
|
29
61
|
imageSource;
|
|
62
|
+
/** @description Emitido quando o valor de `visible` muda, habilitando two-way binding com `[(visible)]`. */
|
|
30
63
|
visibleChange = new EventEmitter();
|
|
64
|
+
/** @description Emitido quando o usuário troca a imagem selecionada. */
|
|
31
65
|
changeImage = new EventEmitter();
|
|
66
|
+
/** @description Emitido com a imagem recortada em formato base64 string. */
|
|
32
67
|
croppedImage = new EventEmitter();
|
|
68
|
+
/** @description Emitido com o `HTMLCanvasElement` resultante do recorte. */
|
|
33
69
|
croppedCanvas = new EventEmitter();
|
|
70
|
+
/** @description Emitido quando o usuário confirma a remoção da imagem. */
|
|
34
71
|
removedImage = new EventEmitter();
|
|
72
|
+
/** @description Emitido quando o usuário cancela o recorte. */
|
|
35
73
|
cancel = new EventEmitter();
|
|
36
74
|
image = null;
|
|
37
75
|
headerSection = null;
|
|
@@ -50,7 +88,6 @@ export class ImageCropperComponent {
|
|
|
50
88
|
if (isNullOrUndefined(this.image)) {
|
|
51
89
|
return;
|
|
52
90
|
}
|
|
53
|
-
;
|
|
54
91
|
if (this.cropper) {
|
|
55
92
|
this.cropper.destroy();
|
|
56
93
|
}
|
|
@@ -176,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
176
213
|
type: ContentChild,
|
|
177
214
|
args: [FooterComponent, { static: true }]
|
|
178
215
|
}] } });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvaW1hZ2UtY3JvcHBlci9zcmMvbGliL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvaW1hZ2UtY3JvcHBlci9zcmMvbGliL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQVF6RSxNQUFNLE9BQU8scUJBQXFCO0lBQzlCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFHbEIsRUFBRSxHQUFHLG1CQUFtQixxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBR3pELE9BQU8sR0FBRyxLQUFLLENBQUM7SUFHaEIsTUFBTSxHQUFHLGlCQUFpQixDQUFDO0lBRzNCLFNBQVMsR0FBRyxVQUFVLENBQUM7SUFHdkIsa0JBQWtCLEdBQUcsUUFBUSxDQUFD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QUFPO3NCQURiLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTTtnQkFJQSxZQUFZO3NCQURsQixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsTUFBTTtnQkFLQSxNQUFNO3NCQUZaLE1BQU07Z0JBS0EsS0FBSztzQkFEWCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTdCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBDcm9wcGVyIGZyb20gJ2Nyb3BwZXJqcyc7XG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQsIEhlYWRlckNvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc3RydWN0dXJlJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XG5pbXBvcnQgeyBBY3RpdmVEaWFsb2cgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1pbWFnZS1jcm9wcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlQ3JvcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBhY3RpdmVEaWFsb2cgPSBpbmplY3QoQWN0aXZlRGlhbG9nLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtaW1hZ2UtY3JvcHBlci0ke0ltYWdlQ3JvcHBlckNvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyID0gJ1JlY29ydGFyIGltYWdlbSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjcm9wTGFiZWwgPSAnUmVjb3J0YXInO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0QW5vdGhlckxhYmVsID0gJ1Ryb2Nhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZW1vdmVMYWJlbCA9ICdSZW1vdmVyJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsID0gJ0NhbmNlbGFyJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5U3RhdGVUaXRsZSA9ICdTZWxlY2lvbmUgdW1hIGZvdG8sIGVtIHNlZ3VpZGEgdm9jw6ogcG9kZXLDoSBhanVzdMOhLWxhJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5U3RhdGVBY3Rpb25MYWJlbCA9ICdFc2NvbGhlciBpbWFnZW0nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW1wdHlTdGF0ZUljb25DbGFzcyA9ICdmYSBmYS1waWN0dXJlLW8nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXNwZWN0UmF0aW8gPSBOYU47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb3VuZGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd1NlbGVjdEFub3RoZXIgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dSZW1vdmUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dDYW5jZWwgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW1hZ2VTb3VyY2U/OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGFuZ2VJbWFnZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjcm9wcGVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjcm9wcGVkQ2FudmFzID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MQ2FudmFzRWxlbWVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBwdWJsaWMgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2UnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBpbWFnZTogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGhlYWRlclNlY3Rpb246IEhlYWRlckNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGZvb3RlclNlY3Rpb246IEZvb3RlckNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNyb3BwZXI6IENyb3BwZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VTb3VyY2UpIHRoaXMuaW5pdENyb3BwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snaW1hZ2VTb3VyY2UnXSAmJiBjaGFuZ2VzWydpbWFnZVNvdXJjZSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0Q3JvcHBlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q3JvcHBlcigpIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuaW1hZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuY3JvcHBlcikge1xuICAgICAgICAgICAgdGhpcy5jcm9wcGVyLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmltYWdlLm5hdGl2ZUVsZW1lbnQuc3JjID0gdGhpcy5pbWFnZVNvdXJjZSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuY3JvcHBlciA9IG5ldyBDcm9wcGVyKHRoaXMuaW1hZ2UubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgYXNwZWN0UmF0aW86IHRoaXMucm91bmRlZCA/IDEgOiB0aGlzLmFzcGVjdFJhdGlvLFxuICAgICAgICAgICAgZ3VpZGVzOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdNb2RlOiAnbW92ZScgYXMgQ3JvcHBlci5EcmFnTW9kZSxcbiAgICAgICAgICAgIG1pbkNyb3BCb3hIZWlnaHQ6IDIsXG4gICAgICAgICAgICBtaW5Dcm9wQm94V2lkdGg6IDIsXG4gICAgICAgICAgICB0b2dnbGVEcmFnTW9kZU9uRGJsY2xpY2s6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Um91bmRlZENhbnZhcyhzb3VyY2VDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KTogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoY29udGV4dCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IHdpZHRoID0gc291cmNlQ2FudmFzLndpZHRoO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBzb3VyY2VDYW52YXMuaGVpZ2h0O1xuXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uoc291cmNlQ2FudmFzLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24taW4nO1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LmFyYyh3aWR0aCAvIDIsIGhlaWdodCAvIDIsIE1hdGgubWluKHdpZHRoLCBoZWlnaHQpIC8gMiwgMCwgMiAqIE1hdGguUEksIHRydWUpO1xuICAgICAgICBjb250ZXh0LmZpbGwoKTtcblxuICAgICAgICByZXR1cm4gY2FudmFzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNyb3BJbWFnZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmltYWdlU291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLmNyb3BwZWRJbWFnZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmNyb3BwZWRDYW52YXMuZW1pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3JvcHBlckNhbnZhcyA9IHRoaXMuY3JvcHBlcj8uZ2V0Q3JvcHBlZENhbnZhcygpO1xuICAgICAgICAgICAgaWYgKGNyb3BwZXJDYW52YXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSB0aGlzLnJvdW5kZWQgPyB0aGlzLmdldFJvdW5kZWRDYW52YXMoY3JvcHBlckNhbnZhcykgOiBjcm9wcGVyQ2FudmFzO1xuICAgICAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcm9wcGVkQ2FudmFzLmVtaXQoY2FudmFzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcm9wcGVkSW1hZ2UuZW1pdChjYW52YXMudG9EYXRhVVJMKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZUltYWdlKCkge1xuICAgICAgICB0aGlzLmNoYW5nZUltYWdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVJbWFnZSgpIHtcbiAgICAgICAgdGhpcy5pbWFnZVNvdXJjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZW1vdmVkSW1hZ2UuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGFsVmlzaWJsZUNoYW5nZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdmlzaWJsZSkgdGhpcy5vbkNhbmNlbCgpO1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2aXNpYmxlKTtcbiAgICB9XG59XG4iLCI8ZGl2IFtpZF09XCJpZFwiPlxuICAgIEBsZXQgcm91bmRlZENsYXNzID0gcm91bmRlZCA/ICdzLWltYWdlLWNyb3BwZXItLXJvdW5kZWQnIDogJyc7XG4gICAgPHMtZGlhbG9nXG4gICAgICAgIHNpemU9XCJsZ1wiXG4gICAgICAgIFtjb250ZW50Q2xhc3NOYW1lXT1cIidzLWltYWdlLWNyb3BwZXIgJyArIHJvdW5kZWRDbGFzc1wiXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyU2VjdGlvbiA/ICcnIDogaGVhZGVyXCJcbiAgICAgICAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgICAgICAgKHZpc2libGVDaGFuZ2UpPVwib25Nb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50ISlcIlxuICAgICAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICAgIEBpZiAoaGVhZGVyU2VjdGlvbikge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInMtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFpbWFnZVNvdXJjZSkge1xuICAgICAgICAgICAgPHMtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWVtcHR5LXN0YXRlJ1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVUaXRsZVwiXG4gICAgICAgICAgICAgICAgW2ljb25DbGFzc109XCJlbXB0eVN0YXRlSWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICBbcHJpbWFyeUFjdGlvbkxhYmVsXT1cImVtcHR5U3RhdGVBY3Rpb25MYWJlbFwiXG4gICAgICAgICAgICAgICAgKHByaW1hcnlBY3Rpb24pPVwib25DaGFuZ2VJbWFnZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcy1lbXB0eS1zdGF0ZT5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbYXR0ci5kYXRhLWhpZGRlbl09XCIhaW1hZ2VTb3VyY2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jcm9wcGVyJ1wiXG4gICAgICAgICAgICAgICAgI2ltYWdlXG4gICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVNvdXJjZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiY3JvcHBlZCBpbWFnZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICAgICAgQGlmICghZm9vdGVyU2VjdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWxsb3dDYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctY2FuY2VsLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbWFnZVNvdXJjZSAmJiBhbGxvd1JlbW92ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLXJlbW92ZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInJlbW92ZUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmVJbWFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaW1hZ2VTb3VyY2UgJiYgYWxsb3dTZWxlY3RBbm90aGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctc2VsZWN0LWFub3RoZXItYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RBbm90aGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNoYW5nZUltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jcm9wLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjcm9wTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ3JvcEltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGZvb3RlclNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzLWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zLWRpYWxvZz5cbjwvZGl2PlxuIl19
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvaW1hZ2UtY3JvcHBlci9zcmMvbGliL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvaW1hZ2UtY3JvcHBlci9zcmMvbGliL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQUV6RTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBQzlCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFekIsc0dBQXNHO0lBRS9GLEVBQUUsR0FBRyxtQkFBbUIscUJBQXFCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUVoRSw4RUFBOEU7SUFFdkUsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUV2QixxRkFBcUY7SUFFOUUsTUFBTSxHQUFHLGlC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OytCQUNJLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJOzhCQVE5QixFQUFFO3NCQURSLEtBQUs7Z0JBS0MsT0FBTztzQkFEYixLQUFLO2dCQUtDLE1BQU07c0JBRFosS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQUtDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBS0MsV0FBVztzQkFEakIsS0FBSztnQkFLQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFLQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBS0MsV0FBVztzQkFEakIsS0FBSztnQkFLQyxPQUFPO3NCQURiLEtBQUs7Z0JBS0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQUtDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBS0MsV0FBVztzQkFEakIsS0FBSztnQkFLQyxXQUFXO3NCQURqQixLQUFLO2dCQUtDLGFBQWE7c0JBRG5CLE1BQU07Z0JBS0EsV0FBVztzQkFEakIsTUFBTTtnQkFLQSxZQUFZO3NCQURsQixNQUFNO2dCQUtBLGFBQWE7c0JBRG5CLE1BQU07Z0JBS0EsWUFBWTtzQkFEbEIsTUFBTTtnQkFNQSxNQUFNO3NCQUZaLE1BQU07Z0JBS0EsS0FBSztzQkFEWCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTdCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgQ3JvcHBlciBmcm9tICdjcm9wcGVyanMnO1xuaW1wb3J0IHsgRm9vdGVyQ29tcG9uZW50LCBIZWFkZXJDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgQWN0aXZlRGlhbG9nIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9kaWFsb2cnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIHJlY29ydGUgZGUgaW1hZ2VtIHF1ZSBpbnRlZ3JhIGEgYmlibGlvdGVjYSBgY3JvcHBlcmpzYC5cbiAqIEV4aWJlIHVtIGRpYWxvZyBjb20gdW1hIMOhcmVhIGludGVyYXRpdmEgcGFyYSBzZWxlY2lvbmFyLCByZWNvcnRhciBlIHJlbW92ZXIgaW1hZ2VucyxcbiAqIHN1cG9ydGFuZG8gcmF6w6NvIGRlIGFzcGVjdG8gY29uZmlndXLDoXZlbCwgZm9ybWF0byBjaXJjdWxhciBlIHRlbXBsYXRlcyBkZSBjYWJlw6dhbGhvL3JvZGFww6kuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLWltYWdlLWNyb3BwZXJcbiAqICAgWyh2aXNpYmxlKV09XCJkaWFsb2dBYmVydG9cIlxuICogICBbaW1hZ2VTb3VyY2VdPVwidXJsRGFJbWFnZW1cIlxuICogICBbYXNwZWN0UmF0aW9dPVwiMVwiXG4gKiAgIChjcm9wcGVkSW1hZ2UpPVwib25Dcm9wcGVkSW1hZ2UoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1pbWFnZS1jcm9wcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlQ3JvcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBhY3RpdmVEaWFsb2cgPSBpbmplY3QoQWN0aXZlRGlhbG9nLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciDDum5pY28gZG8gY29tcG9uZW50ZSBubyBET00uIEdlcmFkbyBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBpbmZvcm1hZG8uICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgcy1pbWFnZS1jcm9wcGVyLSR7SW1hZ2VDcm9wcGVyQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGEgdmlzaWJpbGlkYWRlIGRvIGRpYWxvZyBkZSBjb3J0ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFTDrXR1bG8gZXhpYmlkbyBubyBjYWJlw6dhbGhvIGRvIGRpYWxvZy4gQGRlZmF1bHQgJ1JlY29ydGFyIGltYWdlbScgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWFkZXIgPSAnUmVjb3J0YXIgaW1hZ2VtJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBkbyBib3TDo28gZGUgY29uZmlybWFyIG8gY29ydGUuIEBkZWZhdWx0ICdSZWNvcnRhcicgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjcm9wTGFiZWwgPSAnUmVjb3J0YXInO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGRvIGJvdMOjbyBkZSB0cm9jYXIgYSBpbWFnZW0uIEBkZWZhdWx0ICdUcm9jYXInICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0QW5vdGhlckxhYmVsID0gJ1Ryb2Nhcic7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFLDs3R1bG8gZG8gYm90w6NvIGRlIHJlbW92ZXIgYSBpbWFnZW0uIEBkZWZhdWx0ICdSZW1vdmVyJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsID0gJ1JlbW92ZXInO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGRvIGJvdMOjbyBkZSBjYW5jZWxhci4gQGRlZmF1bHQgJ0NhbmNlbGFyJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsID0gJ0NhbmNlbGFyJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVMOtdHVsbyBkbyBlbXB0eSBzdGF0ZSBxdWFuZG8gbmVuaHVtYSBpbWFnZW0gZm9pIHNlbGVjaW9uYWRhLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5U3RhdGVUaXRsZSA9ICdTZWxlY2lvbmUgdW1hIGZvdG8sIGVtIHNlZ3VpZGEgdm9jw6ogcG9kZXLDoSBhanVzdMOhLWxhJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBkbyBib3TDo28gZGUgYcOnw6NvIGRvIGVtcHR5IHN0YXRlLiBAZGVmYXVsdCAnRXNjb2xoZXIgaW1hZ2VtJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5U3RhdGVBY3Rpb25MYWJlbCA9ICdFc2NvbGhlciBpbWFnZW0nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZG8gw61jb25lIGV4aWJpZG8gbm8gZW1wdHkgc3RhdGUuIEBkZWZhdWx0ICdmYSBmYS1waWN0dXJlLW8nICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW1wdHlTdGF0ZUljb25DbGFzcyA9ICdmYSBmYS1waWN0dXJlLW8nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSYXrDo28gZGUgYXNwZWN0byBwYXJhIG8gcmVjb3J0ZSAoZXguOiBgMWAgcGFyYSBxdWFkcmFkbywgYDE2LzlgKS4gQGRlZmF1bHQgTmFOIChsaXZyZSkgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhc3BlY3RSYXRpbyA9IE5hTjtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgZXhpYmUgYSDDoXJlYSBkZSByZWNvcnRlIG5vIGZvcm1hdG8gY2lyY3VsYXIuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm91bmRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBvIGJvdMOjbyBwYXJhIHRyb2NhciBhIGltYWdlbSBzZWxlY2lvbmFkYS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93U2VsZWN0QW5vdGhlciA9IHRydWU7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIG8gYm90w6NvIHBhcmEgcmVtb3ZlciBhIGltYWdlbS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93UmVtb3ZlID0gdHJ1ZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgbyBib3TDo28gcGFyYSBjYW5jZWxhciBvIHJlY29ydGUuIEBkZWZhdWx0IHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0NhbmNlbCA9IHRydWU7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFVSTCBvdSBiYXNlNjQgZGEgaW1hZ2VtIGEgc2VyIGNhcnJlZ2FkYSBubyBjcm9wcGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGltYWdlU291cmNlPzogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHZhbG9yIGRlIGB2aXNpYmxlYCBtdWRhLCBoYWJpbGl0YW5kbyB0d28td2F5IGJpbmRpbmcgY29tIGBbKHZpc2libGUpXWAuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gdHJvY2EgYSBpbWFnZW0gc2VsZWNpb25hZGEuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNoYW5nZUltYWdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGNvbSBhIGltYWdlbSByZWNvcnRhZGEgZW0gZm9ybWF0byBiYXNlNjQgc3RyaW5nLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjcm9wcGVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBjb20gbyBgSFRNTENhbnZhc0VsZW1lbnRgIHJlc3VsdGFudGUgZG8gcmVjb3J0ZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY3JvcHBlZENhbnZhcyA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTENhbnZhc0VsZW1lbnQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY29uZmlybWEgYSByZW1vw6fDo28gZGEgaW1hZ2VtLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVkSW1hZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2FuY2VsYSBvIHJlY29ydGUuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgcHVibGljIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaW1hZ2U6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuICAgIEBDb250ZW50Q2hpbGQoSGVhZGVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBoZWFkZXJTZWN0aW9uOiBIZWFkZXJDb21wb25lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBmb290ZXJTZWN0aW9uOiBGb290ZXJDb21wb25lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBjcm9wcGVyOiBDcm9wcGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmltYWdlU291cmNlKSB0aGlzLmluaXRDcm9wcGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2ltYWdlU291cmNlJ10gJiYgY2hhbmdlc1snaW1hZ2VTb3VyY2UnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdENyb3BwZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENyb3BwZXIoKSB7XG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmltYWdlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNyb3BwZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3JvcHBlci5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbWFnZS5uYXRpdmVFbGVtZW50LnNyYyA9IHRoaXMuaW1hZ2VTb3VyY2UgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLmNyb3BwZXIgPSBuZXcgQ3JvcHBlcih0aGlzLmltYWdlLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLnJvdW5kZWQgPyAxIDogdGhpcy5hc3BlY3RSYXRpbyxcbiAgICAgICAgICAgIGd1aWRlczogZmFsc2UsXG4gICAgICAgICAgICBkcmFnTW9kZTogJ21vdmUnIGFzIENyb3BwZXIuRHJhZ01vZGUsXG4gICAgICAgICAgICBtaW5Dcm9wQm94SGVpZ2h0OiAyLFxuICAgICAgICAgICAgbWluQ3JvcEJveFdpZHRoOiAyLFxuICAgICAgICAgICAgdG9nZ2xlRHJhZ01vZGVPbkRibGNsaWNrOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJvdW5kZWRDYW52YXMoc291cmNlQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRleHQpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCB3aWR0aCA9IHNvdXJjZUNhbnZhcy53aWR0aDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gc291cmNlQ2FudmFzLmhlaWdodDtcblxuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgICBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKHNvdXJjZUNhbnZhcywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLWluJztcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29udGV4dC5hcmMod2lkdGggLyAyLCBoZWlnaHQgLyAyLCBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDIsIDAsIDIgKiBNYXRoLlBJLCB0cnVlKTtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG5cbiAgICAgICAgcmV0dXJuIGNhbnZhcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Dcm9wSW1hZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbWFnZVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5jcm9wcGVkSW1hZ2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5jcm9wcGVkQ2FudmFzLmVtaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNyb3BwZXJDYW52YXMgPSB0aGlzLmNyb3BwZXI/LmdldENyb3BwZWRDYW52YXMoKTtcbiAgICAgICAgICAgIGlmIChjcm9wcGVyQ2FudmFzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5yb3VuZGVkID8gdGhpcy5nZXRSb3VuZGVkQ2FudmFzKGNyb3BwZXJDYW52YXMpIDogY3JvcHBlckNhbnZhcztcbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JvcHBlZENhbnZhcy5lbWl0KGNhbnZhcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JvcHBlZEltYWdlLmVtaXQoY2FudmFzLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VJbWFnZSgpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlSW1hZ2UoKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VTb3VyY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucmVtb3ZlZEltYWdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RhbFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXZpc2libGUpIHRoaXMub25DYW5jZWwoKTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmlzaWJsZSk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IFtpZF09XCJpZFwiPlxuICAgIEBsZXQgcm91bmRlZENsYXNzID0gcm91bmRlZCA/ICdzLWltYWdlLWNyb3BwZXItLXJvdW5kZWQnIDogJyc7XG4gICAgPHMtZGlhbG9nXG4gICAgICAgIHNpemU9XCJsZ1wiXG4gICAgICAgIFtjb250ZW50Q2xhc3NOYW1lXT1cIidzLWltYWdlLWNyb3BwZXIgJyArIHJvdW5kZWRDbGFzc1wiXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyU2VjdGlvbiA/ICcnIDogaGVhZGVyXCJcbiAgICAgICAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgICAgICAgKHZpc2libGVDaGFuZ2UpPVwib25Nb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50ISlcIlxuICAgICAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICAgIEBpZiAoaGVhZGVyU2VjdGlvbikge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInMtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFpbWFnZVNvdXJjZSkge1xuICAgICAgICAgICAgPHMtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWVtcHR5LXN0YXRlJ1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVUaXRsZVwiXG4gICAgICAgICAgICAgICAgW2ljb25DbGFzc109XCJlbXB0eVN0YXRlSWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICBbcHJpbWFyeUFjdGlvbkxhYmVsXT1cImVtcHR5U3RhdGVBY3Rpb25MYWJlbFwiXG4gICAgICAgICAgICAgICAgKHByaW1hcnlBY3Rpb24pPVwib25DaGFuZ2VJbWFnZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcy1lbXB0eS1zdGF0ZT5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbYXR0ci5kYXRhLWhpZGRlbl09XCIhaW1hZ2VTb3VyY2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jcm9wcGVyJ1wiXG4gICAgICAgICAgICAgICAgI2ltYWdlXG4gICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVNvdXJjZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiY3JvcHBlZCBpbWFnZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICAgICAgQGlmICghZm9vdGVyU2VjdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWxsb3dDYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctY2FuY2VsLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbWFnZVNvdXJjZSAmJiBhbGxvd1JlbW92ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLXJlbW92ZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInJlbW92ZUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmVJbWFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaW1hZ2VTb3VyY2UgJiYgYWxsb3dTZWxlY3RBbm90aGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctc2VsZWN0LWFub3RoZXItYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RBbm90aGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNoYW5nZUltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jcm9wLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjcm9wTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ3JvcEltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGZvb3RlclNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzLWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zLWRpYWxvZz5cbjwvZGl2PlxuIl19
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { EventEmitter, Directive, HostListener, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @description Diretiva de scroll infinito que detecta quando o usuário chega
|
|
5
|
+
* ao final do elemento e emite o evento `scrolled`. Deve ser aplicada a um
|
|
6
|
+
* elemento com overflow e scroll habilitado.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```html
|
|
10
|
+
* <div sInfiniteScroll (scrolled)="carregarMais()" style="overflow-y: auto; height: 400px">
|
|
11
|
+
* <!-- itens -->
|
|
12
|
+
* </div>
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @category Data
|
|
16
|
+
*/
|
|
3
17
|
export class InfiniteScrollDirective {
|
|
4
18
|
el;
|
|
19
|
+
/** @description Emitido quando o usuário atinge o final do elemento com scroll. */
|
|
5
20
|
scrolled = new EventEmitter();
|
|
6
21
|
constructor(el) {
|
|
7
22
|
this.el = el;
|
|
8
23
|
}
|
|
9
24
|
scroll() {
|
|
10
|
-
if (this.el.nativeElement.scrollTop >
|
|
25
|
+
if (this.el.nativeElement.scrollTop >
|
|
26
|
+
this.el.nativeElement.scrollHeight - this.el.nativeElement.offsetHeight - 2) {
|
|
11
27
|
this.scrolled.emit();
|
|
12
28
|
}
|
|
13
29
|
}
|
|
@@ -25,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
25
41
|
type: HostListener,
|
|
26
42
|
args: ['scroll']
|
|
27
43
|
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9pbmZpbml0ZS1zY3JvbGwvc3JjL2xpYi9pbmZpbml0ZS1zY3JvbGwvaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQUtIO0lBSjdCLG1GQUFtRjtJQUU1RSxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUU3QyxZQUE2QixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFHLENBQUM7SUFHeEMsTUFBTTtRQUNULElBQ0ksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUztZQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsRUFDN0UsQ0FBQztZQUNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7d0dBZlEsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7K0VBSVUsUUFBUTtzQkFEZCxNQUFNO2dCQU1BLE1BQU07c0JBRFosWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIGRlIHNjcm9sbCBpbmZpbml0byBxdWUgZGV0ZWN0YSBxdWFuZG8gbyB1c3XDoXJpbyBjaGVnYVxuICogYW8gZmluYWwgZG8gZWxlbWVudG8gZSBlbWl0ZSBvIGV2ZW50byBgc2Nyb2xsZWRgLiBEZXZlIHNlciBhcGxpY2FkYSBhIHVtXG4gKiBlbGVtZW50byBjb20gb3ZlcmZsb3cgZSBzY3JvbGwgaGFiaWxpdGFkby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGRpdiBzSW5maW5pdGVTY3JvbGwgKHNjcm9sbGVkKT1cImNhcnJlZ2FyTWFpcygpXCIgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBoZWlnaHQ6IDQwMHB4XCI+XG4gKiAgIDwhLS0gaXRlbnMgLS0+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBEYXRhXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NJbmZpbml0ZVNjcm9sbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGF0aW5nZSBvIGZpbmFsIGRvIGVsZW1lbnRvIGNvbSBzY3JvbGwuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNjcm9sbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJylcbiAgICBwdWJsaWMgc2Nyb2xsKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID5cbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMlxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4iXX0=
|