slick-components 4.4.13 → 4.4.16
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/css/slick-components.css +598 -365
- package/css/slick-components.min.css +1 -1
- package/esm2020/public-api.mjs +43 -0
- package/esm2020/slick-accordion/slick-accordion-item-header.component.mjs +14 -0
- package/esm2020/slick-accordion/slick-accordion-item.component.mjs +86 -0
- package/esm2020/slick-accordion/slick-accordion.component.mjs +75 -0
- package/esm2020/slick-accordion/slick-accordion.module.mjs +23 -0
- package/esm2020/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +375 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.module.mjs +24 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.module.mjs +19 -0
- package/esm2020/slick-calendar/slick-calendar.component.mjs +246 -0
- package/esm2020/slick-calendar/slick-calendar.module.mjs +19 -0
- package/esm2020/slick-card/slick-card-header.component.mjs +14 -0
- package/esm2020/slick-card/slick-card.component.mjs +42 -0
- package/esm2020/slick-card/slick-card.module.mjs +20 -0
- package/esm2020/slick-components.mjs +5 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -0
- package/esm2020/slick-container/slick-container-body.component.mjs +24 -0
- package/esm2020/slick-container/slick-container-footer.component.mjs +20 -0
- package/esm2020/slick-container/slick-container-header.component.mjs +20 -0
- package/esm2020/slick-container/slick-container.component.mjs +21 -0
- package/esm2020/slick-container/slick-container.module.mjs +25 -0
- package/esm2020/slick-context-menu/slick-context-menu-item.component.mjs +14 -0
- package/esm2020/slick-context-menu/slick-context-menu.component.mjs +48 -0
- package/esm2020/slick-context-menu/slick-context-menu.module.mjs +20 -0
- package/{esm2015/slick-currency-mask/slick-currency-mask-options.model.js → esm2020/slick-currency-mask/slick-currency-mask-options.model.mjs} +0 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.module.mjs +19 -0
- package/esm2020/slick-date-picker/slick-date-picker.component.mjs +278 -0
- package/esm2020/slick-date-picker/slick-date-picker.module.mjs +21 -0
- package/esm2020/slick-dialog/slick-dialog-footer.component.mjs +24 -0
- package/esm2020/slick-dialog/slick-dialog.component.mjs +294 -0
- package/esm2020/slick-dialog/slick-dialog.module.mjs +23 -0
- package/esm2020/slick-dialog/slick-dialog.service.mjs +68 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.directive.mjs +13 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.module.mjs +21 -0
- package/esm2020/slick-drag-drop/slick-draggable.directive.mjs +13 -0
- package/{esm2015/slick-drop-down/slick-drop-down-button.model.js → esm2020/slick-drop-down/slick-drop-down-button.model.mjs} +0 -0
- package/esm2020/slick-drop-down/slick-drop-down.component.mjs +479 -0
- package/esm2020/slick-drop-down/slick-drop-down.module.mjs +24 -0
- package/esm2020/slick-drop-down/slick-drop-down.service.mjs +55 -0
- package/esm2020/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list-item.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +215 -0
- package/esm2020/slick-drop-list/slick-drop-list.module.mjs +23 -0
- package/esm2020/slick-email-viewer/slick-email-viewer-dialog.component.mjs +81 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.module.mjs +26 -0
- package/{esm2015/slick-emailer/slick-emailer-address.model.js → esm2020/slick-emailer/slick-emailer-address.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
- package/esm2020/slick-emailer/slick-emailer.component.mjs +235 -0
- package/{esm2015/slick-emailer/slick-emailer.model.js → esm2020/slick-emailer/slick-emailer.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer.module.mjs +29 -0
- package/esm2020/slick-file-drop/slick-file-drop.component.mjs +156 -0
- package/esm2020/slick-file-drop/slick-file-drop.module.mjs +20 -0
- package/esm2020/slick-file-list/slick-file-list-item.component.mjs +173 -0
- package/esm2020/slick-file-list/slick-file-list.component.mjs +130 -0
- package/esm2020/slick-file-list/slick-file-list.module.mjs +23 -0
- package/{esm2015/slick-file-model/slick-file.model.js → esm2020/slick-file-model/slick-file.model.mjs} +0 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +75 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.module.mjs +19 -0
- package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
- package/esm2020/slick-google-map/slick-google-map.component.mjs +48 -0
- package/esm2020/slick-google-map/slick-google-map.module.mjs +22 -0
- package/esm2020/slick-grid/slick-grid-column-template.directive.mjs +19 -0
- package/{esm2015/slick-grid/slick-grid-column.model.js → esm2020/slick-grid/slick-grid-column.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-favorite.model.js → esm2020/slick-grid/slick-grid-favorite.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-request.model.js → esm2020/slick-grid/slick-grid-request.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-response.model.js → esm2020/slick-grid/slick-grid-response.model.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid-sanitize.pipe.mjs +20 -0
- package/esm2020/slick-grid/slick-grid.component.mjs +793 -0
- package/esm2020/slick-grid/slick-grid.module.mjs +43 -0
- package/{esm2015/slick-grid/slick-grid.options.js → esm2020/slick-grid/slick-grid.options.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid.service.mjs +66 -0
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +362 -0
- package/esm2020/slick-multi-select/slick-multi-select.module.mjs +20 -0
- package/esm2020/slick-multi-select/slick-multi-select.service.mjs +77 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.module.mjs +20 -0
- package/esm2020/slick-paging/slick-paging.component.mjs +185 -0
- package/esm2020/slick-paging/slick-paging.module.mjs +19 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
- package/{esm2015/slick-photo-gallery/slick-photo-gallery.model.js → esm2020/slick-photo-gallery/slick-photo-gallery.model.mjs} +0 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -0
- package/esm2020/slick-pick-list/slick-pick-list.component.mjs +84 -0
- package/esm2020/slick-pick-list/slick-pick-list.module.mjs +20 -0
- package/esm2020/slick-popover/slick-popover.component.mjs +204 -0
- package/esm2020/slick-popover/slick-popover.module.mjs +19 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.module.mjs +20 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.module.mjs +18 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
- package/{esm2015/slick-slider/slick-slider-tick.model.js → esm2020/slick-slider/slick-slider-tick.model.mjs} +0 -0
- package/esm2020/slick-slider/slick-slider.component.mjs +90 -0
- package/esm2020/slick-slider/slick-slider.module.mjs +20 -0
- package/esm2020/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-split-screen.component.mjs +159 -0
- package/esm2020/slick-split-screen/slick-split-screen.module.mjs +21 -0
- package/esm2020/slick-tabs/slick-tab-header.component.mjs +28 -0
- package/esm2020/slick-tabs/slick-tab.component.mjs +63 -0
- package/{esm2015/slick-tabs/slick-tab.model.js → esm2020/slick-tabs/slick-tab.model.mjs} +0 -0
- package/esm2020/slick-tabs/slick-tabs.component.mjs +107 -0
- package/esm2020/slick-tabs/slick-tabs.module.mjs +23 -0
- package/esm2020/slick-toast/slick-toast.module.mjs +18 -0
- package/esm2020/slick-toast/slick-toast.service.mjs +88 -0
- package/{esm2015/slick-tree-view/slick-tree-node.model.js → esm2020/slick-tree-view/slick-tree-node.model.mjs} +0 -0
- package/esm2020/slick-tree-view/slick-tree-view.component.mjs +293 -0
- package/esm2020/slick-tree-view/slick-tree-view.module.mjs +22 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.module.mjs +18 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +63 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -0
- package/esm2020/utils/slick-function-lock.service.mjs +55 -0
- package/esm2020/utils/slick-init.service.mjs +49 -0
- package/esm2020/utils/slick-log.service.mjs +23 -0
- package/esm2020/utils/slick-sleep.service.mjs +14 -0
- package/esm2020/utils/slick-utils.service.mjs +247 -0
- package/fesm2015/{slick-components.js → slick-components.mjs} +2779 -2070
- package/fesm2015/slick-components.mjs.map +1 -0
- package/fesm2020/slick-components.mjs +8467 -0
- package/fesm2020/slick-components.mjs.map +1 -0
- package/package.json +20 -8
- package/public-api.d.ts +8 -8
- package/slick-accordion/slick-accordion-item-header.component.d.ts +3 -0
- package/slick-accordion/slick-accordion-item.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.module.d.ts +8 -0
- package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.component.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.module.d.ts +8 -0
- package/slick-button-spinner/slick-button-spinner.component.d.ts +3 -0
- package/slick-button-spinner/slick-button-spinner.module.d.ts +6 -0
- package/slick-calendar/slick-calendar.component.d.ts +3 -0
- package/slick-calendar/slick-calendar.module.d.ts +6 -0
- package/slick-card/slick-card-header.component.d.ts +3 -0
- package/slick-card/slick-card.component.d.ts +3 -0
- package/slick-card/slick-card.module.d.ts +10 -0
- package/slick-components.d.ts +1 -22
- package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +3 -0
- package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +7 -0
- package/slick-container/slick-container-body.component.d.ts +3 -0
- package/slick-container/slick-container-footer.component.d.ts +3 -0
- package/slick-container/slick-container-header.component.d.ts +3 -0
- package/slick-container/slick-container.component.d.ts +3 -0
- package/slick-container/slick-container.module.d.ts +9 -0
- package/slick-context-menu/slick-context-menu-item.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.module.d.ts +7 -0
- package/slick-currency-mask/slick-currency-mask.directive.d.ts +3 -0
- package/slick-currency-mask/slick-currency-mask.module.d.ts +5 -0
- package/slick-date-picker/slick-date-picker.component.d.ts +3 -0
- package/slick-date-picker/slick-date-picker.module.d.ts +8 -0
- package/slick-dialog/slick-dialog-footer.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.module.d.ts +10 -1
- package/slick-dialog/slick-dialog.service.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.directive.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.module.d.ts +11 -0
- package/slick-drag-drop/slick-draggable.directive.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.component.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.module.d.ts +9 -0
- package/slick-drop-down/slick-drop-down.service.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-grab.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-item.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list.directive.d.ts +13 -7
- package/slick-drop-list/slick-drop-list.module.d.ts +14 -0
- package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.module.d.ts +10 -0
- package/slick-emailer/slick-emailer-dialog.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.module.d.ts +13 -0
- package/slick-file-drop/slick-file-drop.component.d.ts +3 -0
- package/slick-file-drop/slick-file-drop.module.d.ts +7 -0
- package/slick-file-list/slick-file-list-item.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.module.d.ts +10 -0
- package/slick-google-address-search/slick-google-address-search.directive.d.ts +3 -0
- package/slick-google-address-search/slick-google-address-search.module.d.ts +6 -0
- package/slick-google-map/slick-google-map-dialog.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.module.d.ts +8 -0
- package/slick-grid/slick-grid-column-template.directive.d.ts +3 -0
- package/slick-grid/slick-grid-sanitize.pipe.d.ts +3 -0
- package/slick-grid/slick-grid.component.d.ts +3 -0
- package/slick-grid/slick-grid.module.d.ts +16 -0
- package/slick-grid/slick-grid.service.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.component.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.module.d.ts +7 -0
- package/slick-multi-select/slick-multi-select.service.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.component.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.module.d.ts +7 -0
- package/slick-paging/slick-paging.component.d.ts +3 -0
- package/slick-paging/slick-paging.module.d.ts +6 -0
- package/slick-photo-gallery/slick-photo-gallery.component.d.ts +3 -0
- package/slick-photo-gallery/slick-photo-gallery.module.d.ts +6 -0
- package/slick-pick-list/slick-pick-list.component.d.ts +3 -0
- package/slick-pick-list/slick-pick-list.module.d.ts +7 -0
- package/slick-popover/slick-popover.component.d.ts +3 -0
- package/slick-popover/slick-popover.module.d.ts +6 -0
- package/slick-profile-picture/slick-profile-picture.component.d.ts +3 -0
- package/slick-profile-picture/slick-profile-picture.module.d.ts +7 -0
- package/slick-progress-bar/slick-progress-bar.module.d.ts +5 -0
- package/slick-progress-bar/slick-progress-bar.service.d.ts +3 -0
- package/slick-screen-blocker/slick-screen-blocker.module.d.ts +5 -0
- package/slick-screen-blocker/slick-screen-blocker.service.d.ts +3 -0
- package/slick-slider/slick-slider.component.d.ts +3 -0
- package/slick-slider/slick-slider.module.d.ts +6 -0
- package/slick-split-screen/slick-screen-split-left-content.component.d.ts +3 -0
- package/slick-split-screen/slick-screen-split-right-content.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.module.d.ts +8 -0
- package/slick-tabs/slick-tab-header.component.d.ts +3 -0
- package/slick-tabs/slick-tab.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.module.d.ts +10 -0
- package/slick-toast/slick-toast.module.d.ts +5 -0
- package/slick-toast/slick-toast.service.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.component.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.module.d.ts +8 -0
- package/slick-type-ahead/slick-type-ahead.directive.d.ts +3 -0
- package/slick-type-ahead/slick-type-ahead.module.d.ts +5 -0
- package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +3 -0
- package/slick-validation-indicator/slick-validation-indicator.module.d.ts +6 -0
- package/utils/slick-function-lock.service.d.ts +3 -0
- package/utils/slick-init.service.d.ts +3 -0
- package/utils/slick-log.service.d.ts +3 -0
- package/utils/slick-sleep.service.d.ts +3 -0
- package/utils/slick-utils.service.d.ts +5 -0
- package/bundles/slick-components.umd.js +0 -9777
- package/bundles/slick-components.umd.js.map +0 -1
- package/esm2015/public-api.js +0 -43
- package/esm2015/slick-accordion/slick-accordion-item-header.component.js +0 -10
- package/esm2015/slick-accordion/slick-accordion-item.component.js +0 -80
- package/esm2015/slick-accordion/slick-accordion.component.js +0 -77
- package/esm2015/slick-accordion/slick-accordion.module.js +0 -18
- package/esm2015/slick-auto-complete/slick-auto-complete-list-item-template.directive.js +0 -21
- package/esm2015/slick-auto-complete/slick-auto-complete.component.js +0 -352
- package/esm2015/slick-auto-complete/slick-auto-complete.module.js +0 -19
- package/esm2015/slick-button-spinner/slick-button-spinner.component.js +0 -186
- package/esm2015/slick-button-spinner/slick-button-spinner.module.js +0 -14
- package/esm2015/slick-calendar/slick-calendar.component.js +0 -233
- package/esm2015/slick-calendar/slick-calendar.module.js +0 -14
- package/esm2015/slick-card/slick-card-header.component.js +0 -10
- package/esm2015/slick-card/slick-card.component.js +0 -37
- package/esm2015/slick-card/slick-card.module.js +0 -14
- package/esm2015/slick-components.js +0 -27
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.component.js +0 -62
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.module.js +0 -15
- package/esm2015/slick-container/slick-container-body.component.js +0 -18
- package/esm2015/slick-container/slick-container-footer.component.js +0 -16
- package/esm2015/slick-container/slick-container-header.component.js +0 -16
- package/esm2015/slick-container/slick-container.component.js +0 -19
- package/esm2015/slick-container/slick-container.module.js +0 -20
- package/esm2015/slick-context-menu/slick-context-menu-item.component.js +0 -10
- package/esm2015/slick-context-menu/slick-context-menu.component.js +0 -43
- package/esm2015/slick-context-menu/slick-context-menu.module.js +0 -15
- package/esm2015/slick-currency-mask/slick-currency-mask.directive.js +0 -234
- package/esm2015/slick-currency-mask/slick-currency-mask.module.js +0 -14
- package/esm2015/slick-date-picker/slick-date-picker.component.js +0 -267
- package/esm2015/slick-date-picker/slick-date-picker.module.js +0 -16
- package/esm2015/slick-dialog/slick-dialog-footer.component.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.component.js +0 -282
- package/esm2015/slick-dialog/slick-dialog.module.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.service.js +0 -67
- package/esm2015/slick-drag-drop/slick-drag-drop.directive.js +0 -9
- package/esm2015/slick-drag-drop/slick-drag-drop.module.js +0 -14
- package/esm2015/slick-drag-drop/slick-draggable.directive.js +0 -9
- package/esm2015/slick-drop-down/slick-drop-down.component.js +0 -465
- package/esm2015/slick-drop-down/slick-drop-down.module.js +0 -19
- package/esm2015/slick-drop-down/slick-drop-down.service.js +0 -59
- package/esm2015/slick-drop-list/slick-drop-list-grab.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list-item.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list.directive.js +0 -162
- package/esm2015/slick-drop-list/slick-drop-list.module.js +0 -15
- package/esm2015/slick-email-viewer/slick-email-viewer-dialog.component.js +0 -61
- package/esm2015/slick-email-viewer/slick-email-viewer.component.js +0 -39
- package/esm2015/slick-email-viewer/slick-email-viewer.module.js +0 -21
- package/esm2015/slick-emailer/slick-emailer-dialog.component.js +0 -122
- package/esm2015/slick-emailer/slick-emailer.component.js +0 -226
- package/esm2015/slick-emailer/slick-emailer.module.js +0 -24
- package/esm2015/slick-file-drop/slick-file-drop.component.js +0 -144
- package/esm2015/slick-file-drop/slick-file-drop.module.js +0 -15
- package/esm2015/slick-file-list/slick-file-list-item.component.js +0 -156
- package/esm2015/slick-file-list/slick-file-list.component.js +0 -114
- package/esm2015/slick-file-list/slick-file-list.module.js +0 -18
- package/esm2015/slick-google-address-search/slick-google-address-search.directive.js +0 -75
- package/esm2015/slick-google-address-search/slick-google-address-search.module.js +0 -14
- package/esm2015/slick-google-map/slick-google-map-dialog.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.module.js +0 -17
- package/esm2015/slick-grid/slick-grid-column-template.directive.js +0 -19
- package/esm2015/slick-grid/slick-grid-sanitize.pipe.js +0 -20
- package/esm2015/slick-grid/slick-grid.component.js +0 -792
- package/esm2015/slick-grid/slick-grid.module.js +0 -38
- package/esm2015/slick-grid/slick-grid.service.js +0 -72
- package/esm2015/slick-multi-select/slick-multi-select.component.js +0 -356
- package/esm2015/slick-multi-select/slick-multi-select.module.js +0 -15
- package/esm2015/slick-multi-select/slick-multi-select.service.js +0 -74
- package/esm2015/slick-ordered-list/slick-ordered-list.component.js +0 -198
- package/esm2015/slick-ordered-list/slick-ordered-list.module.js +0 -15
- package/esm2015/slick-paging/slick-paging.component.js +0 -180
- package/esm2015/slick-paging/slick-paging.module.js +0 -14
- package/esm2015/slick-photo-gallery/slick-photo-gallery.component.js +0 -101
- package/esm2015/slick-photo-gallery/slick-photo-gallery.module.js +0 -16
- package/esm2015/slick-pick-list/slick-pick-list.component.js +0 -78
- package/esm2015/slick-pick-list/slick-pick-list.module.js +0 -15
- package/esm2015/slick-popover/slick-popover.component.js +0 -199
- package/esm2015/slick-popover/slick-popover.module.js +0 -14
- package/esm2015/slick-profile-picture/slick-profile-picture.component.js +0 -242
- package/esm2015/slick-profile-picture/slick-profile-picture.module.js +0 -15
- package/esm2015/slick-progress-bar/slick-progress-bar.module.js +0 -13
- package/esm2015/slick-progress-bar/slick-progress-bar.service.js +0 -50
- package/esm2015/slick-screen-blocker/slick-screen-blocker.module.js +0 -13
- package/esm2015/slick-screen-blocker/slick-screen-blocker.service.js +0 -80
- package/esm2015/slick-slider/slick-slider.component.js +0 -88
- package/esm2015/slick-slider/slick-slider.module.js +0 -15
- package/esm2015/slick-split-screen/slick-screen-split-left-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-screen-split-right-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-split-screen.component.js +0 -148
- package/esm2015/slick-split-screen/slick-split-screen.module.js +0 -16
- package/esm2015/slick-tabs/slick-tab-header.component.js +0 -25
- package/esm2015/slick-tabs/slick-tab.component.js +0 -67
- package/esm2015/slick-tabs/slick-tabs.component.js +0 -104
- package/esm2015/slick-tabs/slick-tabs.module.js +0 -17
- package/esm2015/slick-toast/slick-toast.module.js +0 -13
- package/esm2015/slick-toast/slick-toast.service.js +0 -91
- package/esm2015/slick-tree-view/slick-tree-view.component.js +0 -287
- package/esm2015/slick-tree-view/slick-tree-view.module.js +0 -17
- package/esm2015/slick-type-ahead/slick-type-ahead.directive.js +0 -155
- package/esm2015/slick-type-ahead/slick-type-ahead.module.js +0 -13
- package/esm2015/slick-validation-indicator/slick-validation-indicator.directive.js +0 -61
- package/esm2015/slick-validation-indicator/slick-validation-indicator.module.js +0 -14
- package/esm2015/utils/slick-function-lock.service.js +0 -54
- package/esm2015/utils/slick-init.service.js +0 -48
- package/esm2015/utils/slick-log.service.js +0 -27
- package/esm2015/utils/slick-sleep.service.js +0 -14
- package/esm2015/utils/slick-utils.service.js +0 -229
- package/fesm2015/slick-components.js.map +0 -1
- package/slick-components.metadata.json +0 -1
|
@@ -1,465 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef, ChangeDetectorRef } from "@angular/core";
|
|
3
|
-
import { SlickDropDownService } from "./slick-drop-down.service";
|
|
4
|
-
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
5
|
-
import { SlickSleepService } from "../utils/slick-sleep.service";
|
|
6
|
-
import { SlickUtilsService } from "../utils/slick-utils.service";
|
|
7
|
-
import { SlickInitService } from "../utils/slick-init.service";
|
|
8
|
-
import { SlickLogService } from "../utils/slick-log.service";
|
|
9
|
-
export var SlickDropDownSearchTypes;
|
|
10
|
-
(function (SlickDropDownSearchTypes) {
|
|
11
|
-
SlickDropDownSearchTypes[SlickDropDownSearchTypes["startsWith"] = 0] = "startsWith";
|
|
12
|
-
SlickDropDownSearchTypes[SlickDropDownSearchTypes["eachWord"] = 1] = "eachWord";
|
|
13
|
-
SlickDropDownSearchTypes[SlickDropDownSearchTypes["any"] = 2] = "any";
|
|
14
|
-
})(SlickDropDownSearchTypes || (SlickDropDownSearchTypes = {}));
|
|
15
|
-
export class SlickDropDownComponent {
|
|
16
|
-
constructor(slickDropDownService, changeDetector) {
|
|
17
|
-
this.slickDropDownService = slickDropDownService;
|
|
18
|
-
this.changeDetector = changeDetector;
|
|
19
|
-
this.placeholder = '';
|
|
20
|
-
this.idFieldName = "id";
|
|
21
|
-
this.textFieldName = "text";
|
|
22
|
-
this.compact = false;
|
|
23
|
-
this.disabled = false;
|
|
24
|
-
this.allowEmpty = true;
|
|
25
|
-
this.width = '100%';
|
|
26
|
-
this.listWidth = '100%';
|
|
27
|
-
this.height = '300px';
|
|
28
|
-
this.showLoadingMessage = false;
|
|
29
|
-
this.searchType = SlickDropDownSearchTypes.startsWith;
|
|
30
|
-
this.isMobile = false;
|
|
31
|
-
this.onExpand = new EventEmitter();
|
|
32
|
-
this.onSelect = new EventEmitter();
|
|
33
|
-
this.onChange = new EventEmitter();
|
|
34
|
-
// This is necessary so that the scroll and resize events can add and remove the event properly,
|
|
35
|
-
// as well as getting the correct ES6 function
|
|
36
|
-
this.fnReposition = () => this.reposition();
|
|
37
|
-
this.fnDocumentClick = (e) => this.documentClick(e);
|
|
38
|
-
this.expanded = false;
|
|
39
|
-
this.filterText = '';
|
|
40
|
-
this.isVisible = false;
|
|
41
|
-
this.isAndroid = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');
|
|
42
|
-
this.skipOnFocusEvent = false;
|
|
43
|
-
this.skipClickExpand = false;
|
|
44
|
-
this.propagateChange = (_) => { };
|
|
45
|
-
this.uuid = SlickUtilsService.newGuid();
|
|
46
|
-
}
|
|
47
|
-
ngOnInit() {
|
|
48
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
ngAfterViewInit() {
|
|
53
|
-
}
|
|
54
|
-
// this is the initial value set to the component
|
|
55
|
-
writeValue(obj) {
|
|
56
|
-
if (obj !== null && obj !== undefined)
|
|
57
|
-
this.selectedId = obj;
|
|
58
|
-
else
|
|
59
|
-
this.selectedId = null;
|
|
60
|
-
this.selectItem(this.selectedId, false);
|
|
61
|
-
this.collapse();
|
|
62
|
-
}
|
|
63
|
-
// registers 'fn' that will be fired when changes are made
|
|
64
|
-
// this is how we emit the changes back to the form
|
|
65
|
-
registerOnChange(fn) {
|
|
66
|
-
this.propagateChange = fn;
|
|
67
|
-
}
|
|
68
|
-
// not used, used for touch input
|
|
69
|
-
registerOnTouched() { }
|
|
70
|
-
ngOnChanges(changes) {
|
|
71
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
yield SlickSleepService.sleep();
|
|
73
|
-
if (changes.items) {
|
|
74
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
75
|
-
this.selectItem(this.selectedId, false);
|
|
76
|
-
if (this.selectedTextInputRef && document.activeElement === this.selectedTextInputRef.nativeElement)
|
|
77
|
-
this.expand();
|
|
78
|
-
}
|
|
79
|
-
if (changes.showLoadingMessage) {
|
|
80
|
-
yield SlickSleepService.sleep();
|
|
81
|
-
if (this.showLoadingMessage === true)
|
|
82
|
-
this.selectedText = "Loading...";
|
|
83
|
-
}
|
|
84
|
-
if (changes.getUrl) {
|
|
85
|
-
if (this.showLoadingMessage === true) {
|
|
86
|
-
this.selectedText = "Loading...";
|
|
87
|
-
}
|
|
88
|
-
let items = yield this.slickDropDownService.getItemsFromServer(this.getUrl);
|
|
89
|
-
this.selectedText = null;
|
|
90
|
-
this.items = items;
|
|
91
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
92
|
-
this.selectItem(this.selectedId, false);
|
|
93
|
-
if (document.activeElement === this.selectedTextInputRef.nativeElement)
|
|
94
|
-
this.expand();
|
|
95
|
-
}
|
|
96
|
-
if (changes.validationIndicator && changes.validationIndicator.firstChange) {
|
|
97
|
-
if (!this.validationIndicatorType)
|
|
98
|
-
this.validationIndicatorType = "error";
|
|
99
|
-
}
|
|
100
|
-
if (changes.allowEmpty)
|
|
101
|
-
this.allowEmpty = (this.allowEmpty.toString().toLowerCase() === 'false') ? false : true;
|
|
102
|
-
if (changes.isMobile)
|
|
103
|
-
this.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;
|
|
104
|
-
if (changes.disabled && changes.disabled.currentValue)
|
|
105
|
-
this.disabled = (changes.disabled.currentValue.toString().toLowerCase() !== 'false');
|
|
106
|
-
if (changes.compact && changes.compact.currentValue)
|
|
107
|
-
this.compact = (changes.compact.currentValue.toString().toLowerCase() !== 'false');
|
|
108
|
-
if (changes.searchType) {
|
|
109
|
-
if (changes.searchType.currentValue.toString().toLowerCase() === 'eachword')
|
|
110
|
-
this.searchType = SlickDropDownSearchTypes.eachWord;
|
|
111
|
-
else if (changes.searchType.currentValue.toString().toLowerCase() === 'any')
|
|
112
|
-
this.searchType = SlickDropDownSearchTypes.any;
|
|
113
|
-
else
|
|
114
|
-
this.searchType = SlickDropDownSearchTypes.startsWith;
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
ngOnDestroy() {
|
|
119
|
-
this.collapse();
|
|
120
|
-
document.removeEventListener("click", this.fnDocumentClick, true);
|
|
121
|
-
// it's okay if this fails. It was already removed
|
|
122
|
-
try {
|
|
123
|
-
document.body.removeChild(this.dropdownList.nativeElement);
|
|
124
|
-
}
|
|
125
|
-
catch (_a) { }
|
|
126
|
-
}
|
|
127
|
-
setFocus(showDropdownList = false) {
|
|
128
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
this.filterText = '';
|
|
130
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
131
|
-
this.skipOnFocusEvent = (showDropdownList === false);
|
|
132
|
-
yield SlickUtilsService.waitForElement("#slick-drop-down_" + this.uuid);
|
|
133
|
-
this.selectedTextInputRef.nativeElement.focus();
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
expand() {
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
if (this.disabled)
|
|
139
|
-
return;
|
|
140
|
-
this.isVisible = true;
|
|
141
|
-
this.changeDetector.detectChanges();
|
|
142
|
-
SlickUtilsService.attachElement(this.dropdownList.nativeElement, this.attachTo);
|
|
143
|
-
this.reposition();
|
|
144
|
-
yield SlickSleepService.sleep();
|
|
145
|
-
this.dropdownList.nativeElement.style.display = "inline-block";
|
|
146
|
-
const selectedItems = this.dropdownList.nativeElement.getElementsByClassName("active");
|
|
147
|
-
if (selectedItems && selectedItems.length > 0)
|
|
148
|
-
selectedItems[0].scrollIntoView({ block: 'nearest' });
|
|
149
|
-
this.expanded = true;
|
|
150
|
-
// This is necessary, otherwise `this` in the reposition function will be window
|
|
151
|
-
// and not the component.
|
|
152
|
-
// Since angular has no way to use the third parameter, I'm doing this in raw js
|
|
153
|
-
document.addEventListener("click", this.fnDocumentClick, true);
|
|
154
|
-
if (this.onExpand)
|
|
155
|
-
this.onExpand.emit();
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
collapse() {
|
|
159
|
-
if (this.expanded === false)
|
|
160
|
-
return;
|
|
161
|
-
this.expanded = false;
|
|
162
|
-
this.dropdownList.nativeElement.style.display = "none";
|
|
163
|
-
// Since angular has no way to use the third parameter, I'm doing this in raw js
|
|
164
|
-
document.removeEventListener("click", this.fnDocumentClick, true);
|
|
165
|
-
SlickUtilsService.removeElement(this.dropdownList.nativeElement);
|
|
166
|
-
this.isVisible = false;
|
|
167
|
-
this.skipOnFocusEvent = false;
|
|
168
|
-
}
|
|
169
|
-
reposition() {
|
|
170
|
-
const dropDownRect = this.containerDiv.nativeElement.getBoundingClientRect();
|
|
171
|
-
const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
|
|
172
|
-
const containerLeft = (this.attachTo === 'body') ? dropDownRect.left : (dropDownRect.left - parentRect.left);
|
|
173
|
-
const containerTop = (this.attachTo === 'body') ? dropDownRect.top : (dropDownRect.top - parentRect.top);
|
|
174
|
-
const containerHeight = this.containerDiv.nativeElement.offsetHeight;
|
|
175
|
-
const containerWidth = dropDownRect.width;
|
|
176
|
-
this.width = containerWidth;
|
|
177
|
-
if (this.listWidth === '100%')
|
|
178
|
-
this.listGroupWidth = this.width;
|
|
179
|
-
else if (this.listWidth === 'auto')
|
|
180
|
-
this.listGroupWidth = "auto";
|
|
181
|
-
else
|
|
182
|
-
this.listGroupWidth = this.listWidth;
|
|
183
|
-
this.top = (containerTop + containerHeight);
|
|
184
|
-
this.left = containerLeft;
|
|
185
|
-
}
|
|
186
|
-
documentClick(e) {
|
|
187
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
-
// Not entirely sure why, but iPhones call onFocus when clicking out of the dropdown
|
|
189
|
-
if (this.isMobile)
|
|
190
|
-
this.skipOnFocusEvent = true;
|
|
191
|
-
if (!this.expanded || !e.target)
|
|
192
|
-
return;
|
|
193
|
-
if (SlickUtilsService.checkParentIdExists(e.target, "slick-drop-down_" + this.uuid) === true)
|
|
194
|
-
return;
|
|
195
|
-
this.selectedTextInputRef.nativeElement.setSelectionRange(0, 0);
|
|
196
|
-
if (this.selectedIndex !== null && this.visibleItems.length > 0) {
|
|
197
|
-
let itemId = this.visibleItems[this.selectedIndex].id;
|
|
198
|
-
this.selectItem(itemId, true);
|
|
199
|
-
}
|
|
200
|
-
this.collapse();
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
selectItem(id, emitOnSelect) {
|
|
204
|
-
let item = this.slickDropDownService.getSelectedItem(this.visibleItems, id);
|
|
205
|
-
if (item) {
|
|
206
|
-
this.selectedItem = item;
|
|
207
|
-
this.selectedId = item.id;
|
|
208
|
-
this.selectedText = item.text;
|
|
209
|
-
this.selectedIndex = this.slickDropDownService.getItemIndex(this.visibleItems, this.selectedId);
|
|
210
|
-
if (this.onChange)
|
|
211
|
-
this.onChange.emit(this.selectedItem.item);
|
|
212
|
-
if (emitOnSelect === true && this.onSelect)
|
|
213
|
-
this.onSelect.emit(this.selectedItem.item);
|
|
214
|
-
this.propagateChange(this.selectedId);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.selectedItem = null;
|
|
218
|
-
this.selectedText = null;
|
|
219
|
-
this.selectedIndex = null;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
onFocus() {
|
|
223
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
224
|
-
if (this.skipOnFocusEvent === true) {
|
|
225
|
-
this.skipOnFocusEvent = false;
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
this.filterText = '';
|
|
229
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
230
|
-
this.selectItem(this.selectedId, false);
|
|
231
|
-
if (this.selectedIndex && this.selectedIndex >= 0) {
|
|
232
|
-
this.selectedItem = this.visibleItems[this.selectedIndex];
|
|
233
|
-
this.selectedTextInputRef.nativeElement.setSelectionRange(0, this.selectedItem.text.length);
|
|
234
|
-
}
|
|
235
|
-
// This is kind of hacky, but if onFocus is called by clicking the dropdown, the onDropdownClick event is called as well
|
|
236
|
-
// That function will expand or collapse, depending on the state. Since this expands, it thinks it needs to collapse.
|
|
237
|
-
// So fake it out and tell it NOT to collapse. BUT, if we came in from tabbing into the field, then it would mess up
|
|
238
|
-
// the click event. So only wait for 1/2 second.
|
|
239
|
-
this.skipClickExpand = true;
|
|
240
|
-
this.expand();
|
|
241
|
-
yield SlickSleepService.sleep(500);
|
|
242
|
-
this.skipClickExpand = false;
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
onKeyDown(e) {
|
|
246
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
247
|
-
if (this.isAndroid)
|
|
248
|
-
return;
|
|
249
|
-
// Tab/enter
|
|
250
|
-
if (e.which === 9 || e.which === 13) {
|
|
251
|
-
this.collapse();
|
|
252
|
-
if (this.selectedIndex === null || this.selectedIndex === undefined)
|
|
253
|
-
return;
|
|
254
|
-
this.selectedTextInputRef.nativeElement.setSelectionRange(0, 0);
|
|
255
|
-
let itemId = this.visibleItems[this.selectedIndex].id;
|
|
256
|
-
this.selectItem(itemId, true);
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
if (e.key && e.key.length > 1)
|
|
260
|
-
return true;
|
|
261
|
-
if (e.which === 46 || e.which === 8) {
|
|
262
|
-
e.preventDefault();
|
|
263
|
-
e.stopPropagation();
|
|
264
|
-
}
|
|
265
|
-
if (e.which >= 32 && e.which <= 126) {
|
|
266
|
-
e.preventDefault();
|
|
267
|
-
e.stopPropagation();
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
onKeyUp(e) {
|
|
272
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
273
|
-
e.preventDefault();
|
|
274
|
-
e.stopPropagation();
|
|
275
|
-
// If this is android, it won't pass us any key data so just read the entire input element
|
|
276
|
-
if (this.isAndroid === true) {
|
|
277
|
-
yield SlickSleepService.sleep();
|
|
278
|
-
this.filterText = this.selectedTextInputRef.nativeElement.value;
|
|
279
|
-
this.filterSearch();
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
// Esc
|
|
283
|
-
if (e.which === 27) {
|
|
284
|
-
this.collapse();
|
|
285
|
-
return false;
|
|
286
|
-
}
|
|
287
|
-
// del or backspace
|
|
288
|
-
if (e.which === 46 || e.which === 8 && !this.filterText) {
|
|
289
|
-
e.preventDefault();
|
|
290
|
-
e.stopPropagation();
|
|
291
|
-
if (this.allowEmpty === true) {
|
|
292
|
-
this.selectItem(null, true);
|
|
293
|
-
this.selectedId = null;
|
|
294
|
-
this.propagateChange(null);
|
|
295
|
-
if (this.onChange)
|
|
296
|
-
this.onChange.emit(null);
|
|
297
|
-
if (this.onSelect)
|
|
298
|
-
this.onSelect.emit(null);
|
|
299
|
-
}
|
|
300
|
-
return false;
|
|
301
|
-
}
|
|
302
|
-
if (e.which === 8 && this.filterText) {
|
|
303
|
-
this.filterText = this.filterText.substring(0, this.filterText.length - 1);
|
|
304
|
-
if (this.filterText.length === 0) {
|
|
305
|
-
this.selectedText = '';
|
|
306
|
-
this.selectedIndex = null;
|
|
307
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
308
|
-
}
|
|
309
|
-
else
|
|
310
|
-
this.filterSearch();
|
|
311
|
-
return false;
|
|
312
|
-
}
|
|
313
|
-
// Arrowup
|
|
314
|
-
if (e.which === 38) {
|
|
315
|
-
if (this.selectedIndex === null || this.selectedIndex === undefined)
|
|
316
|
-
this.selectedIndex = 0;
|
|
317
|
-
if (this.selectedIndex > 0)
|
|
318
|
-
this.selectedIndex--;
|
|
319
|
-
return false;
|
|
320
|
-
}
|
|
321
|
-
// Arrowdown
|
|
322
|
-
if (e.which === 40) {
|
|
323
|
-
if (this.selectedIndex === null || this.selectedIndex === undefined)
|
|
324
|
-
this.selectedIndex = -1;
|
|
325
|
-
if (!this.expanded || !this.visibleItems) {
|
|
326
|
-
this.expand();
|
|
327
|
-
return false;
|
|
328
|
-
}
|
|
329
|
-
if (this.selectedIndex < this.visibleItems.length - 1)
|
|
330
|
-
this.selectedIndex++;
|
|
331
|
-
return false;
|
|
332
|
-
}
|
|
333
|
-
// If F1 is pressed, key length will be 2
|
|
334
|
-
if (e.key.length > 1 || e.ctrlKey || e.altKey)
|
|
335
|
-
return false;
|
|
336
|
-
if (e.which >= 32 && e.which <= 126) {
|
|
337
|
-
this.filterText += e.key;
|
|
338
|
-
this.filterSearch();
|
|
339
|
-
}
|
|
340
|
-
return true;
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
//async onKeyPress(e: KeyboardEvent) {
|
|
344
|
-
// await SlickSleepService.sleep();
|
|
345
|
-
// if (((e.which >= 32 && e.which <= 126) || e.which === 8) && !e.ctrlKey && !e.altKey) {
|
|
346
|
-
// if (e.which === 8)
|
|
347
|
-
// this.filterText = this.filterText.substring(0, this.filterText.length - 1);
|
|
348
|
-
// else
|
|
349
|
-
// this.filterText += e.key;
|
|
350
|
-
// this.filterSearch();
|
|
351
|
-
// }
|
|
352
|
-
// return true;
|
|
353
|
-
//}
|
|
354
|
-
filterSearch() {
|
|
355
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
356
|
-
if (!this.expanded)
|
|
357
|
-
this.expand();
|
|
358
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
359
|
-
if (this.searchType === SlickDropDownSearchTypes.startsWith) {
|
|
360
|
-
this.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);
|
|
361
|
-
if (this.visibleItems.length > 0) {
|
|
362
|
-
this.selectedIndex = 0;
|
|
363
|
-
if (this.isAndroid === false) {
|
|
364
|
-
this.selectedText = this.visibleItems[0].text;
|
|
365
|
-
yield SlickSleepService.sleep();
|
|
366
|
-
this.selectedTextInputRef.nativeElement.setSelectionRange(this.filterText.length, this.selectedText.length);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
this.selectedText = this.filterText;
|
|
371
|
-
this.selectedIndex = null;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
else if (this.searchType === SlickDropDownSearchTypes.eachWord) {
|
|
375
|
-
this.visibleItems = this.visibleItems.filter(x => (" " + x.text.toLowerCase()).indexOf(" " + this.filterText.toLowerCase()) >= 0);
|
|
376
|
-
if (this.visibleItems.length > 0) {
|
|
377
|
-
this.selectedIndex = 0;
|
|
378
|
-
if (this.isAndroid === false) {
|
|
379
|
-
this.selectedText = this.visibleItems[0].text;
|
|
380
|
-
const selectedTextStart = (" " + this.visibleItems[0].text).toLowerCase().indexOf(" " + this.filterText.toLowerCase());
|
|
381
|
-
yield SlickSleepService.sleep();
|
|
382
|
-
this.selectedTextInputRef.nativeElement.setSelectionRange(selectedTextStart, selectedTextStart + this.filterText.length);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
this.selectedText = this.filterText;
|
|
387
|
-
this.selectedIndex = null;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
onDropdownClicked() {
|
|
393
|
-
this.filterText = '';
|
|
394
|
-
this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
|
|
395
|
-
this.selectItem(this.selectedId, false);
|
|
396
|
-
this.selectedTextInputRef.nativeElement.focus();
|
|
397
|
-
if (this.skipClickExpand === true) {
|
|
398
|
-
this.skipClickExpand = false;
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
if (this.expanded === false)
|
|
402
|
-
this.expand();
|
|
403
|
-
else
|
|
404
|
-
this.collapse();
|
|
405
|
-
}
|
|
406
|
-
onItemClick(item) {
|
|
407
|
-
this.selectItem(item.id, true);
|
|
408
|
-
this.collapse();
|
|
409
|
-
}
|
|
410
|
-
handleCustomButtonClick(callback, event) {
|
|
411
|
-
event.stopPropagation();
|
|
412
|
-
event.preventDefault();
|
|
413
|
-
if (callback) {
|
|
414
|
-
callback(event);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
SlickDropDownComponent.decorators = [
|
|
419
|
-
{ type: Component, args: [{
|
|
420
|
-
selector: 'slick-drop-down',
|
|
421
|
-
template: "<div #containerDiv id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [className]=\"'slick-drop-down ' + (cssClass || '')\" [class.open]=\"expanded\">\r\n\t<div *ngIf=\"compact === false\">\r\n <div *ngIf=\"!disabled\" class='input-group' style=\"cursor: pointer !important\" (click)=\"onDropdownClicked()\">\r\n <ng-container *ngIf=\"prependButtons && prependButtons.length > 0\">\r\n <div class=\"input-group-prepend\">\r\n <ng-container *ngFor=\"let btn of prependButtons\">\r\n <button type=\"button\" class=\"input-group-text btn btn-primary badge-primary\" [disabled]=\"btn.disabled\" (click)=\"handleCustomButtonClick(btn.onClick, $event)\" style=\"margin-right: 2px; border-right: none;\">\r\n <i class=\"fas {{ btn.faClass }}\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <input *ngIf=\"validationIndicatorType\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" #selectedTextInputRef class='form-control' style='background: white; cursor: pointer' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input *ngIf=\"!validationIndicatorType\" #selectedTextInputRef class='form-control' style='background: white; cursor: pointer' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <div tabindex=\"-1\" class=\"input-group-append\">\r\n <span class=\"input-group-text btn-primary badge-primary\"><i class='fas fa-chevron-down'></i></span>\r\n </div>\r\n <ng-container *ngIf=\"appendButtons && appendButtons.length > 0\">\r\n <div class=\"input-group-append\" style=\"margin-left: 0px;\">\r\n <ng-container *ngFor=\"let btn of appendButtons\">\r\n <button type=\"button\" class=\"input-group-text btn btn-primary badge-primary\" [disabled]=\"btn.disabled\" (click)=\"handleCustomButtonClick(btn.onClick, $event)\" style=\"margin-left: 1px; border-left: none;\">\r\n <i class=\"fas {{ btn.faClass }}\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\t\t<div *ngIf=\"disabled === true\" class='input-group'>\r\n\t\t\t<input #selectedTextInputRef style='cursor: default' [(ngModel)]=\"selectedText\" disabled=\"disabled\" readonly class='form-control' [placeholder]='placeholder' />\r\n\t\t\t<div tabindex=\"-1\" class=\"input-group-append disabled\">\r\n\t\t\t\t<span class=\"input-group-text text-muted\"><i class='fas fa-chevron-down'></i></span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div [className]=\"'slick-drop-down-compact ' + (cssClass || '')\" *ngIf=\"compact === true\">\r\n\t\t<div *ngIf=\"disabled === false\" style=\"cursor: pointer !important\" (click)=\"onDropdownClicked()\">\r\n\t\t\t<input #selectedTextInputRef class=\"text-body\" [attr.tabindex]=\"tabindex\" [(ngModel)]=\"selectedText\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus()\" ng-disabled='disabled' readonly [placeholder]='placeholder' />\r\n\t\t\t<div class=\"slick-drop-down-compact-arrow\" tabindex=\"-1\" style=\"position: relative; top: -1px;\"><i class='fas fa-chevron-down'></i></div>\r\n\t\t</div>\r\n\r\n\t\t<div *ngIf=\"disabled === true\" style=\"text-align: right;\">\r\n\t\t\t<div *ngIf='selectedText' style=\"text-align: right;\">{{selectedText}}</div>\r\n\t\t\t<div *ngIf=\"!selectedText\" style=\"text-align: right;\">{{placeholder}}</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n\t\t<li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n\t</ul>\r\n\r\n</div>",
|
|
422
|
-
providers: [SlickDropDownService, SlickLogService,
|
|
423
|
-
{
|
|
424
|
-
provide: NG_VALUE_ACCESSOR,
|
|
425
|
-
useExisting: forwardRef(() => SlickDropDownComponent),
|
|
426
|
-
multi: true,
|
|
427
|
-
}]
|
|
428
|
-
},] }
|
|
429
|
-
];
|
|
430
|
-
/** @nocollapse */
|
|
431
|
-
SlickDropDownComponent.ctorParameters = () => [
|
|
432
|
-
{ type: SlickDropDownService },
|
|
433
|
-
{ type: ChangeDetectorRef }
|
|
434
|
-
];
|
|
435
|
-
SlickDropDownComponent.propDecorators = {
|
|
436
|
-
placeholder: [{ type: Input }],
|
|
437
|
-
items: [{ type: Input }],
|
|
438
|
-
idFieldName: [{ type: Input }],
|
|
439
|
-
textFieldName: [{ type: Input }],
|
|
440
|
-
compact: [{ type: Input }],
|
|
441
|
-
disabled: [{ type: Input }],
|
|
442
|
-
allowEmpty: [{ type: Input }],
|
|
443
|
-
getUrl: [{ type: Input }],
|
|
444
|
-
width: [{ type: Input }],
|
|
445
|
-
listWidth: [{ type: Input }],
|
|
446
|
-
height: [{ type: Input }],
|
|
447
|
-
showLoadingMessage: [{ type: Input }],
|
|
448
|
-
showDebug: [{ type: Input }],
|
|
449
|
-
tabindex: [{ type: Input }],
|
|
450
|
-
validationIndicator: [{ type: Input }],
|
|
451
|
-
validationIndicatorType: [{ type: Input }],
|
|
452
|
-
attachTo: [{ type: Input }],
|
|
453
|
-
searchType: [{ type: Input }],
|
|
454
|
-
appendButtons: [{ type: Input }],
|
|
455
|
-
prependButtons: [{ type: Input }],
|
|
456
|
-
isMobile: [{ type: Input }],
|
|
457
|
-
cssClass: [{ type: Input }],
|
|
458
|
-
onExpand: [{ type: Output }],
|
|
459
|
-
onSelect: [{ type: Output }],
|
|
460
|
-
onChange: [{ type: Output }],
|
|
461
|
-
containerDiv: [{ type: ViewChild, args: ["containerDiv",] }],
|
|
462
|
-
dropdownList: [{ type: ViewChild, args: ["dropdownList",] }],
|
|
463
|
-
selectedTextInputRef: [{ type: ViewChild, args: ["selectedTextInputRef",] }]
|
|
464
|
-
};
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBK0MsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekwsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc3RCxNQUFNLENBQU4sSUFBWSx3QkFBc0Q7QUFBbEUsV0FBWSx3QkFBd0I7SUFBRyxtRkFBVSxDQUFBO0lBQUUsK0VBQVEsQ0FBQTtJQUFFLHFFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXRELHdCQUF3QixLQUF4Qix3QkFBd0IsUUFBOEI7QUFZbEUsTUFBTSxPQUFPLHNCQUFzQjtJQXFEbEMsWUFBb0Isb0JBQTBDLEVBQ3JELGNBQWlDO1FBRHRCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDckQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBckRqQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixrQkFBYSxHQUFXLE1BQU0sQ0FBQztRQUMvQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixVQUFLLEdBQVcsTUFBTSxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxNQUFNLENBQUM7UUFDM0IsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUN6Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFNcEMsZUFBVSxHQUE2Qix3QkFBd0IsQ0FBQyxVQUFVLENBQUM7UUFHM0UsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd6QixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEQsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU1oRSxnR0FBZ0c7UUFDaEcsOENBQThDO1FBQzlDLGlCQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFJL0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBS3hCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsY0FBUyxHQUFZLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUVsRixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFjekMsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVmpDLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVLLFFBQVE7O1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDbEYsQ0FBQztLQUFBO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFJRCxpREFBaUQ7SUFDMUMsVUFBVSxDQUFDLEdBQVE7UUFDekIsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDOztZQUV0QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsbURBQW1EO0lBQzVDLGdCQUFnQixDQUFDLEVBQU87UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlDQUFpQztJQUMxQixpQkFBaUIsS0FBSyxDQUFDO0lBRXhCLFdBQVcsQ0FBQyxPQUFzQjs7WUFDdkMsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWE7b0JBQ2xHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNmO1lBRUQsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUU7Z0JBQy9CLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUk7b0JBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2FBQ2xDO1lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNuQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2lCQUNqQztnQkFFRCxJQUFJLEtBQUssR0FBVSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ2xGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtnQkFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2hILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxRQUFRLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhO29CQUNyRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtZQUVELElBQUksT0FBTyxDQUFDLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCO29CQUNoQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDO2FBQ3hDO1lBRUQsSUFBSSxPQUFPLENBQUMsVUFBVTtnQkFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRXpGLElBQUksT0FBTyxDQUFDLFFBQVE7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUVwRixJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7WUFFdEYsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWTtnQkFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBRXBGLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVO29CQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQztxQkFDaEQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLO29CQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQzs7b0JBRS9DLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDO2FBQ3ZEO1FBQ0YsQ0FBQztLQUFBO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUsbURBQW1EO1FBQ25ELElBQUk7WUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsV0FBTSxHQUFHO0lBQ1YsQ0FBQztJQUVLLFFBQVEsQ0FBQyxtQkFBNEIsS0FBSzs7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxDQUFDLENBQUM7WUFFckQsTUFBTSxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckUsQ0FBQztLQUFBO0lBRWEsTUFBTTs7WUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDaEIsT0FBTztZQUVSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRXRCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFcEMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUUvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFbEIsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztZQUUvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQzlCLGFBQWEsQ0FBQyxDQUFDLENBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV0RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUdyQixnRkFBZ0Y7WUFDaEYseUJBQXlCO1lBQ3pCLGdGQUFnRjtZQUNoRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFL0QsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDO0tBQUE7SUFFTyxRQUFRO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUs7WUFDMUIsT0FBTztRQUVSLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3ZELGdGQUFnRjtRQUNoRixRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU8sVUFBVTtRQUNqQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdFLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUUxSCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0csTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpHLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUNyRSxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRTFDLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTTtZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQzs7WUFFN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVhLGFBQWEsQ0FBQyxDQUFhOztZQUN4QyxvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUM5QixPQUFPO1lBRVIsSUFBSSxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO2dCQUN4RyxPQUFPO1lBRVcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEYsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDOUI7WUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRU8sVUFBVSxDQUFDLEVBQVUsRUFBRSxZQUFxQjtRQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFNUUsSUFBSSxJQUFJLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVoRyxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0QzthQUNJO1lBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDMUI7SUFDRixDQUFDO0lBRUssT0FBTzs7WUFDWixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLE9BQU87YUFDUDtZQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hIO1lBRUQsd0hBQXdIO1lBQ3hILHNIQUFzSDtZQUN0SCxxSEFBcUg7WUFDckgsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7S0FBQTtJQUVLLFNBQVMsQ0FBQyxDQUFnQjs7WUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFDakIsT0FBTztZQUVSLFlBQVk7WUFDWixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRWhCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO29CQUNsRSxPQUFPO2dCQUVXLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUU5QixPQUFPLElBQUksQ0FBQzthQUNaO1lBRUQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBRWIsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDcEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDcEI7WUFFRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFO2dCQUNwQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUNwQjtRQUNGLENBQUM7S0FBQTtJQUVLLE9BQU8sQ0FBQyxDQUFnQjs7WUFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQiwwRkFBMEY7WUFDMUYsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtnQkFDNUIsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFaEMsSUFBSSxDQUFDLFVBQVUsR0FBc0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsT0FBTzthQUNQO1lBRUQsTUFBTTtZQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFaEIsT0FBTyxLQUFLLENBQUM7YUFDYjtZQUVELG1CQUFtQjtZQUNuQixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDeEQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBRXBCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFM0IsSUFBSSxJQUFJLENBQUMsUUFBUTt3QkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRTFCLElBQUksSUFBSSxDQUFDLFFBQVE7d0JBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxPQUFPLEtBQUssQ0FBQzthQUNiO1lBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ2hIOztvQkFFQSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDO2FBQ2I7WUFFRCxVQUFVO1lBQ1YsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVM7b0JBQ2xFLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO2dCQUV4QixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQztvQkFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUV0QixPQUFPLEtBQUssQ0FBQzthQUNiO1lBRUQsWUFBWTtZQUNaLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO29CQUNsRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUV6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxPQUFPLEtBQUssQ0FBQztpQkFDYjtnQkFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUV0QixPQUFPLEtBQUssQ0FBQzthQUNiO1lBRUQseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU07Z0JBQzVDLE9BQU8sS0FBSyxDQUFDO1lBRWQsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUV6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDcEI7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7S0FBQTtJQUVELHNDQUFzQztJQUN0QyxtQ0FBbUM7SUFFbkMseUZBQXlGO0lBQ3pGLHNCQUFzQjtJQUN0QixnRkFBZ0Y7SUFDaEYsUUFBUTtJQUNSLDhCQUE4QjtJQUM5Qix3QkFBd0I7SUFDeEIsSUFBSTtJQUVKLGVBQWU7SUFDZixHQUFHO0lBR1csWUFBWTs7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNoSCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssd0JBQXdCLENBQUMsVUFBVSxFQUFFO2dCQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNySCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQzlDLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNoSTtpQkFDRDtxQkFDSTtvQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2lCQUMxQjthQUNEO2lCQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTt3QkFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDOUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUN2SCxNQUFNLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFjLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDN0k7aUJBQ0Q7cUJBQ0k7b0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDMUI7YUFFRDtRQUNGLENBQUM7S0FBQTtJQUVELGlCQUFpQjtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVwRSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLE9BQU87U0FDUDtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLO1lBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7WUFFZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQWtCLEVBQUUsS0FBWTtRQUN2RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLElBQUksUUFBUSxFQUFFO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hCO0lBQ0YsQ0FBQzs7O1lBamdCRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0Isc2tKQUE2QztnQkFDN0MsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsZUFBZTtvQkFDaEQ7d0JBQ0MsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzt3QkFDckQsS0FBSyxFQUFFLElBQUk7cUJBQ1gsQ0FBQzthQUNIOzs7O1lBbkJRLG9CQUFvQjtZQURvRyxpQkFBaUI7OzswQkFzQmhKLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3lCQUNMLEtBQUs7cUJBQ0wsS0FBSztvQkFDTCxLQUFLO3dCQUNMLEtBQUs7cUJBQ0wsS0FBSztpQ0FDTCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSztrQ0FDTCxLQUFLO3NDQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBRUwsTUFBTTt1QkFDTixNQUFNO3VCQUNOLE1BQU07MkJBRU4sU0FBUyxTQUFDLGNBQWM7MkJBQ3hCLFNBQVMsU0FBQyxjQUFjO21DQUN4QixTQUFTLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Ryb3BEb3duU2VydmljZSB9IGZyb20gXCIuL3NsaWNrLWRyb3AtZG93bi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tJbml0U2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1pbml0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tMb2dTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElTbGlja0Ryb3BEb3duQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi9zbGljay1kcm9wLWRvd24tYnV0dG9uLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgZW51bSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgeyBzdGFydHNXaXRoLCBlYWNoV29yZCwgYW55IH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZHJvcC1kb3duJyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLWRyb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tEcm9wRG93blNlcnZpY2UsIFNsaWNrTG9nU2VydmljZSxcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWNrRHJvcERvd25Db21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtczogYW55W107XHJcblx0QElucHV0KCkgaWRGaWVsZE5hbWU6IHN0cmluZyA9IFwiaWRcIjtcclxuXHRASW5wdXQoKSB0ZXh0RmllbGROYW1lOiBzdHJpbmcgPSBcInRleHRcIjtcclxuXHRASW5wdXQoKSBjb21wYWN0OiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBnZXRVcmw6IHN0cmluZztcclxuXHRASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGxpc3RXaWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzMwMHB4JztcclxuXHRASW5wdXQoKSBzaG93TG9hZGluZ01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93RGVidWc6IGJvb2xlYW47XHJcblx0QElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcclxuXHRASW5wdXQoKSB2YWxpZGF0aW9uSW5kaWNhdG9yOiBib29sZWFuO1xyXG5cdEBJbnB1dCgpIHZhbGlkYXRpb25JbmRpY2F0b3JUeXBlOiBzdHJpbmc7XHJcblx0QElucHV0KCkgYXR0YWNoVG86IHN0cmluZztcclxuXHRASW5wdXQoKSBzZWFyY2hUeXBlOiBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRASW5wdXQoKSBhcHBlbmRCdXR0b25zOiBJU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsW107XHJcblx0QElucHV0KCkgcHJlcGVuZEJ1dHRvbnM6IElTbGlja0Ryb3BEb3duQnV0dG9uTW9kZWxbXTtcclxuXHRASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGNzc0NsYXNzOiBzdHJpbmc7XHJcblxyXG5cdEBPdXRwdXQoKSBvbkV4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwiY29udGFpbmVyRGl2XCIpIGNvbnRhaW5lckRpdjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiZHJvcGRvd25MaXN0XCIpIGRyb3Bkb3duTGlzdDogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwic2VsZWN0ZWRUZXh0SW5wdXRSZWZcIikgc2VsZWN0ZWRUZXh0SW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlIHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cyBjYW4gYWRkIGFuZCByZW1vdmUgdGhlIGV2ZW50IHByb3Blcmx5LFxyXG5cdC8vIGFzIHdlbGwgYXMgZ2V0dGluZyB0aGUgY29ycmVjdCBFUzYgZnVuY3Rpb25cclxuXHRmblJlcG9zaXRpb24gPSAoKSA9PiB0aGlzLnJlcG9zaXRpb24oKTtcclxuXHRmbkRvY3VtZW50Q2xpY2sgPSAoZSkgPT4gdGhpcy5kb2N1bWVudENsaWNrKGUpO1xyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRzZWxlY3RlZElkOiBzdHJpbmc7XHJcblx0c2VsZWN0ZWRUZXh0OiBzdHJpbmc7XHJcblx0ZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzZWxlY3RlZEl0ZW06IGFueTtcclxuXHRzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblx0ZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XHJcblx0dmlzaWJsZUl0ZW1zOiBhbnlbXTtcclxuXHRsZWZ0OiBudW1iZXI7XHJcblx0dG9wOiBudW1iZXI7XHJcblx0bGlzdEdyb3VwV2lkdGg6IHN0cmluZztcclxuXHRpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc0FuZHJvaWQ6IGJvb2xlYW4gPSAoKFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGxhdGZvcm0oKSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FuZHJvaWQnKTtcclxuXHJcblx0cHJpdmF0ZSBza2lwT25Gb2N1c0V2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBza2lwQ2xpY2tFeHBhbmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja0Ryb3BEb3duU2VydmljZTogU2xpY2tEcm9wRG93blNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF0dGFjaFRvID0gdGhpcy5hdHRhY2hUbyB8fCBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvIHx8ICdib2R5JztcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHR9XHJcblxyXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcblx0Ly8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxyXG5cdHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XHJcblx0XHRpZiAob2JqICE9PSBudWxsICYmIG9iaiAhPT0gdW5kZWZpbmVkKVxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSWQgPSBvYmo7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHQvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0YXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5pdGVtcykge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSWQsIGZhbHNlKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuc2hvd0xvYWRpbmdNZXNzYWdlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdGlmICh0aGlzLnNob3dMb2FkaW5nTWVzc2FnZSA9PT0gdHJ1ZSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmdldFVybCkge1xyXG5cdFx0XHRpZiAodGhpcy5zaG93TG9hZGluZ01lc3NhZ2UgPT09IHRydWUpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgaXRlbXM6IGFueVtdID0gYXdhaXQgdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRJdGVtc0Zyb21TZXJ2ZXIodGhpcy5nZXRVcmwpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5pdGVtcyA9IGl0ZW1zXHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0XHRpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMudmFsaWRhdGlvbkluZGljYXRvciAmJiBjaGFuZ2VzLnZhbGlkYXRpb25JbmRpY2F0b3IuZmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0aWYgKCF0aGlzLnZhbGlkYXRpb25JbmRpY2F0b3JUeXBlKVxyXG5cdFx0XHRcdHRoaXMudmFsaWRhdGlvbkluZGljYXRvclR5cGUgPSBcImVycm9yXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuYWxsb3dFbXB0eSlcclxuXHRcdFx0dGhpcy5hbGxvd0VtcHR5ID0gKHRoaXMuYWxsb3dFbXB0eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmlzTW9iaWxlKVxyXG5cdFx0XHR0aGlzLmlzTW9iaWxlID0gKHRoaXMuaXNNb2JpbGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmRpc2FibGVkICYmIGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmRpc2FibGVkID0gKGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJyk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuY29tcGFjdCAmJiBjaGFuZ2VzLmNvbXBhY3QuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmNvbXBhY3QgPSAoY2hhbmdlcy5jb21wYWN0LmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZWFjaHdvcmQnKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZDtcclxuXHRcdFx0ZWxzZSBpZiAoY2hhbmdlcy5zZWFyY2hUeXBlLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdhbnknKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5hbnk7XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldEZvY3VzKHNob3dEcm9wZG93bkxpc3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNraXBPbkZvY3VzRXZlbnQgPSAoc2hvd0Ryb3Bkb3duTGlzdCA9PT0gZmFsc2UpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrVXRpbHNTZXJ2aWNlLndhaXRGb3JFbGVtZW50KFwiI3NsaWNrLWRyb3AtZG93bl9cIiArIHRoaXMudXVpZCk7XHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHRTbGlja1V0aWxzU2VydmljZS5hdHRhY2hFbGVtZW50KHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXR0YWNoVG8pXHJcblxyXG5cdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFjdGl2ZVwiKTtcclxuXHRcdGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMClcclxuXHRcdFx0KDxIVE1MRWxlbWVudD5zZWxlY3RlZEl0ZW1zWzBdKS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XHJcblxyXG5cdFx0dGhpcy5leHBhbmRlZCA9IHRydWU7XHJcblxyXG5cclxuXHRcdC8vIFRoaXMgaXMgbmVjZXNzYXJ5LCBvdGhlcndpc2UgYHRoaXNgIGluIHRoZSByZXBvc2l0aW9uIGZ1bmN0aW9uIHdpbGwgYmUgd2luZG93XHJcblx0XHQvLyBhbmQgbm90IHRoZSBjb21wb25lbnQuXHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkV4cGFuZClcclxuXHRcdFx0dGhpcy5vbkV4cGFuZC5lbWl0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvbGxhcHNlKCkge1xyXG5cdFx0aWYgKHRoaXMuZXhwYW5kZWQgPT09IGZhbHNlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHRcdFNsaWNrVXRpbHNTZXJ2aWNlLnJlbW92ZUVsZW1lbnQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCk7XHJcblxyXG5cdFx0dGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuXHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZXBvc2l0aW9uKCkge1xyXG5cdFx0Y29uc3QgZHJvcERvd25SZWN0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IHBhcmVudFJlY3QgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IG51bGwgOiBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IodGhpcy5hdHRhY2hUbykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVyTGVmdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gZHJvcERvd25SZWN0LmxlZnQgOiAoZHJvcERvd25SZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQpO1xyXG5cdFx0Y29uc3QgY29udGFpbmVyVG9wID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBkcm9wRG93blJlY3QudG9wIDogKGRyb3BEb3duUmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblx0XHRjb25zdCBjb250YWluZXJXaWR0aCA9IGRyb3BEb3duUmVjdC53aWR0aDtcclxuXHJcblx0XHR0aGlzLndpZHRoID0gY29udGFpbmVyV2lkdGg7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMud2lkdGg7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHRcdHRoaXMudG9wID0gKGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodCk7XHJcblx0XHR0aGlzLmxlZnQgPSBjb250YWluZXJMZWZ0O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdC8vIE5vdCBlbnRpcmVseSBzdXJlIHdoeSwgYnV0IGlQaG9uZXMgY2FsbCBvbkZvY3VzIHdoZW4gY2xpY2tpbmcgb3V0IG9mIHRoZSBkcm9wZG93blxyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUpXHJcblx0XHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IHRydWU7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICFlLnRhcmdldClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1kcm9wLWRvd25fXCIgKyB0aGlzLnV1aWQpID09PSB0cnVlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsICYmIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bGV0IGl0ZW1JZCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtSWQsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2VsZWN0SXRlbShpZDogc3RyaW5nLCBlbWl0T25TZWxlY3Q6IGJvb2xlYW4pIHtcclxuXHRcdGxldCBpdGVtID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRTZWxlY3RlZEl0ZW0odGhpcy52aXNpYmxlSXRlbXMsIGlkKTtcclxuXHJcblx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IGl0ZW0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gaXRlbS50ZXh0O1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldEl0ZW1JbmRleCh0aGlzLnZpc2libGVJdGVtcywgdGhpcy5zZWxlY3RlZElkKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLm9uQ2hhbmdlKVxyXG5cdFx0XHRcdHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0aWYgKGVtaXRPblNlbGVjdCA9PT0gdHJ1ZSAmJiB0aGlzLm9uU2VsZWN0KVxyXG5cdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uRm9jdXMoKSB7XHJcblx0XHRpZiAodGhpcy5za2lwT25Gb2N1c0V2ZW50ID09PSB0cnVlKSB7XHJcblx0XHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IGZhbHNlO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZElkLCBmYWxzZSk7XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XTtcclxuXHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgdGhpcy5zZWxlY3RlZEl0ZW0udGV4dC5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFRoaXMgaXMga2luZCBvZiBoYWNreSwgYnV0IGlmIG9uRm9jdXMgaXMgY2FsbGVkIGJ5IGNsaWNraW5nIHRoZSBkcm9wZG93biwgdGhlIG9uRHJvcGRvd25DbGljayBldmVudCBpcyBjYWxsZWQgYXMgd2VsbFxyXG5cdFx0Ly8gVGhhdCBmdW5jdGlvbiB3aWxsIGV4cGFuZCBvciBjb2xsYXBzZSwgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZS4gIFNpbmNlIHRoaXMgZXhwYW5kcywgaXQgdGhpbmtzIGl0IG5lZWRzIHRvIGNvbGxhcHNlLlxyXG5cdFx0Ly8gU28gZmFrZSBpdCBvdXQgYW5kIHRlbGwgaXQgTk9UIHRvIGNvbGxhcHNlLiAgQlVULCBpZiB3ZSBjYW1lIGluIGZyb20gdGFiYmluZyBpbnRvIHRoZSBmaWVsZCwgdGhlbiBpdCB3b3VsZCBtZXNzIHVwXHJcblx0XHQvLyB0aGUgY2xpY2sgZXZlbnQuICBTbyBvbmx5IHdhaXQgZm9yIDEvMiBzZWNvbmQuXHJcblx0XHR0aGlzLnNraXBDbGlja0V4cGFuZCA9IHRydWU7XHJcblx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoNTAwKTtcclxuXHRcdHRoaXMuc2tpcENsaWNrRXhwYW5kID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKHRoaXMuaXNBbmRyb2lkKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gVGFiL2VudGVyXHJcblx0XHRpZiAoZS53aGljaCA9PT0gOSB8fCBlLndoaWNoID09PSAxMykge1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xyXG5cdFx0XHRsZXQgaXRlbUlkID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XS5pZDtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKGl0ZW1JZCwgdHJ1ZSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZS5rZXkgJiYgZS5rZXkubGVuZ3RoID4gMSlcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQ2IHx8IGUud2hpY2ggPT09IDgpIHtcclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLndoaWNoID49IDMyICYmIGUud2hpY2ggPD0gMTI2KSB7XHJcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uS2V5VXAoZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuZHJvaWQsIGl0IHdvbid0IHBhc3MgdXMgYW55IGtleSBkYXRhIHNvIGp1c3QgcmVhZCB0aGUgZW50aXJlIGlucHV0IGVsZW1lbnRcclxuXHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWU7XHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFc2NcclxuXHRcdGlmIChlLndoaWNoID09PSAyNykge1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gZGVsIG9yIGJhY2tzcGFjZVxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQ2IHx8IGUud2hpY2ggPT09IDggJiYgIXRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5hbGxvd0VtcHR5ID09PSB0cnVlKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKG51bGwsIHRydWUpO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcblxyXG5cdFx0XHRcdGlmICh0aGlzLm9uQ2hhbmdlKVxyXG5cdFx0XHRcdFx0dGhpcy5vbkNoYW5nZS5lbWl0KG51bGwpO1xyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5vblNlbGVjdClcclxuXHRcdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdChudWxsKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLndoaWNoID09PSA4ICYmIHRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3d1cFxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDM4KSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93ZG93blxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQwKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIXRoaXMudmlzaWJsZUl0ZW1zKSB7XHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPCB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggLSAxKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIElmIEYxIGlzIHByZXNzZWQsIGtleSBsZW5ndGggd2lsbCBiZSAyXHJcblx0XHRpZiAoZS5rZXkubGVuZ3RoID4gMSB8fCBlLmN0cmxLZXkgfHwgZS5hbHRLZXkpXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRpZiAoZS53aGljaCA+PSAzMiAmJiBlLndoaWNoIDw9IDEyNikge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgKz0gZS5rZXk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0Ly9hc3luYyBvbktleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHQvL1x0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0Ly9cdGlmICgoKGUud2hpY2ggPj0gMzIgJiYgZS53aGljaCA8PSAxMjYpIHx8IGUud2hpY2ggPT09IDgpICYmICFlLmN0cmxLZXkgJiYgIWUuYWx0S2V5KSB7XHJcblx0Ly9cdFx0aWYgKGUud2hpY2ggPT09IDgpXHJcblx0Ly9cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHQvL1x0XHRlbHNlXHJcblx0Ly9cdFx0XHR0aGlzLmZpbHRlclRleHQgKz0gZS5rZXk7XHJcblx0Ly9cdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHQvL1x0fVxyXG5cclxuXHQvL1x0cmV0dXJuIHRydWU7XHJcblx0Ly99XHJcblxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGZpbHRlclNlYXJjaCgpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZClcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IHgudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID09PSAwKTtcclxuXHRcdFx0aWYgKHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy52aXNpYmxlSXRlbXNbMF0udGV4dDtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmZpbHRlclRleHQubGVuZ3RoLCB0aGlzLnNlbGVjdGVkVGV4dC5sZW5ndGgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMuZmlsdGVyVGV4dDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IChcIiBcIiArIHgudGV4dC50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKFwiIFwiICsgdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID49IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRUZXh0U3RhcnQgPSAoXCIgXCIgKyB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCIgXCIgKyB0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSk7XHJcblx0XHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0ZWRUZXh0U3RhcnQsIHNlbGVjdGVkVGV4dFN0YXJ0ICsgdGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkRyb3Bkb3duQ2xpY2tlZCgpIHtcclxuXHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5za2lwQ2xpY2tFeHBhbmQgPT09IHRydWUpIHtcclxuXHRcdFx0dGhpcy5za2lwQ2xpY2tFeHBhbmQgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pZCwgdHJ1ZSk7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVDdXN0b21CdXR0b25DbGljayhjYWxsYmFjazogRnVuY3Rpb24sIGV2ZW50OiBFdmVudCkge1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdGlmIChjYWxsYmFjaykge1xyXG5cdFx0XHRjYWxsYmFjayhldmVudCk7XHJcblx0XHR9XHJcblx0fVxyXG59Il19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { CommonModule } from "@angular/common";
|
|
3
|
-
import { FormsModule } from "@angular/forms";
|
|
4
|
-
import { HttpClientModule } from "@angular/common/http";
|
|
5
|
-
import { SlickValidationIndicatorModule } from "../slick-validation-indicator/slick-validation-indicator.module";
|
|
6
|
-
import { SlickDropDownComponent } from "./slick-drop-down.component";
|
|
7
|
-
export class SlickDropDownModule {
|
|
8
|
-
}
|
|
9
|
-
SlickDropDownModule.decorators = [
|
|
10
|
-
{ type: NgModule, args: [{
|
|
11
|
-
imports: [CommonModule, FormsModule, HttpClientModule, SlickValidationIndicatorModule],
|
|
12
|
-
declarations: [SlickDropDownComponent],
|
|
13
|
-
exports: [SlickDropDownComponent],
|
|
14
|
-
providers: [HttpClientModule]
|
|
15
|
-
},] }
|
|
16
|
-
];
|
|
17
|
-
export { SlickDropDownComponent };
|
|
18
|
-
export { SlickDropDownButtonModel } from "./slick-drop-down-button.model";
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVFyRSxNQUFNLE9BQU8sbUJBQW1COzs7WUFOL0IsUUFBUSxTQUFDO2dCQUNULE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsOEJBQThCLENBQUM7Z0JBQ3RGLFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDN0I7O0FBR0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUE7QUFDakMsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgU2xpY2tWYWxpZGF0aW9uSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLXZhbGlkYXRpb24taW5kaWNhdG9yL3NsaWNrLXZhbGlkYXRpb24taW5kaWNhdG9yLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stZHJvcC1kb3duLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSHR0cENsaWVudE1vZHVsZSwgU2xpY2tWYWxpZGF0aW9uSW5kaWNhdG9yTW9kdWxlXSxcclxuXHRkZWNsYXJhdGlvbnM6IFtTbGlja0Ryb3BEb3duQ29tcG9uZW50XSxcclxuXHRleHBvcnRzOiBbU2xpY2tEcm9wRG93bkNvbXBvbmVudF0sXHJcblx0cHJvdmlkZXJzOiBbSHR0cENsaWVudE1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRHJvcERvd25Nb2R1bGUgeyB9XHJcblxyXG5leHBvcnQgeyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IH1cclxuZXhwb3J0IHsgU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsLCBJU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4vc2xpY2stZHJvcC1kb3duLWJ1dHRvbi5tb2RlbFwiOyJdfQ==
|