primeng 18.0.1 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/style/basestyle.d.ts +11 -11
- package/config/themeprovider.d.ts +6 -0
- package/confirmdialog/confirmdialog.d.ts +1 -0
- package/dynamicdialog/dynamicdialog.d.ts +2 -2
- package/fesm2022/primeng-accordion.mjs +10 -10
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-animateonscroll.mjs +1 -1
- package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
- package/fesm2022/primeng-api.mjs +5 -5
- package/fesm2022/primeng-api.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +2 -2
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-autofocus.mjs +1 -1
- package/fesm2022/primeng-autofocus.mjs.map +1 -1
- package/fesm2022/primeng-avatar.mjs +2 -2
- package/fesm2022/primeng-avatar.mjs.map +1 -1
- package/fesm2022/primeng-avatargroup.mjs +2 -2
- package/fesm2022/primeng-avatargroup.mjs.map +1 -1
- package/fesm2022/primeng-badge.mjs +3 -3
- package/fesm2022/primeng-badge.mjs.map +1 -1
- package/fesm2022/primeng-basecomponent.mjs +1 -1
- package/fesm2022/primeng-basecomponent.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +2 -2
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +2 -2
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +5 -5
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-buttongroup.mjs +2 -2
- package/fesm2022/primeng-buttongroup.mjs.map +1 -1
- package/fesm2022/primeng-calendar.mjs +4 -4
- package/fesm2022/primeng-calendar.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +2 -2
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-carousel.mjs +2 -2
- package/fesm2022/primeng-carousel.mjs.map +1 -1
- package/fesm2022/primeng-cascadeselect.mjs +4 -4
- package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
- package/fesm2022/primeng-chart.mjs +2 -2
- package/fesm2022/primeng-chart.mjs.map +1 -1
- package/fesm2022/primeng-checkbox.mjs +2 -2
- package/fesm2022/primeng-checkbox.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +2 -2
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-colorpicker.mjs +2 -2
- package/fesm2022/primeng-colorpicker.mjs.map +1 -1
- package/fesm2022/primeng-config.mjs +14 -12
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +11 -8
- package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
- package/fesm2022/primeng-confirmpopup.mjs +2 -2
- package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +5 -5
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-dataview.mjs +2 -2
- package/fesm2022/primeng-dataview.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +2 -2
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-defer.mjs +1 -1
- package/fesm2022/primeng-dialog.mjs +2 -2
- package/fesm2022/primeng-dialog.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +2 -2
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +2 -2
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-dragdrop.mjs +2 -2
- package/fesm2022/primeng-dragdrop.mjs.map +1 -1
- package/fesm2022/primeng-drawer.mjs +2 -2
- package/fesm2022/primeng-drawer.mjs.map +1 -1
- package/fesm2022/primeng-dropdown.mjs +4 -4
- package/fesm2022/primeng-dropdown.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +7 -7
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-editor.mjs +2 -2
- package/fesm2022/primeng-editor.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +2 -2
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-fileupload.mjs +2 -2
- package/fesm2022/primeng-fileupload.mjs.map +1 -1
- package/fesm2022/primeng-floatlabel.mjs +2 -2
- package/fesm2022/primeng-floatlabel.mjs.map +1 -1
- package/fesm2022/primeng-fluid.mjs +2 -2
- package/fesm2022/primeng-fluid.mjs.map +1 -1
- package/fesm2022/primeng-focustrap.mjs +1 -1
- package/fesm2022/primeng-focustrap.mjs.map +1 -1
- package/fesm2022/primeng-galleria.mjs +10 -10
- package/fesm2022/primeng-galleria.mjs.map +1 -1
- package/fesm2022/primeng-iconfield.mjs +2 -2
- package/fesm2022/primeng-iconfield.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleright.mjs +2 -2
- package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleup.mjs +2 -2
- package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowup.mjs +2 -2
- package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
- package/fesm2022/primeng-icons-ban.mjs +2 -2
- package/fesm2022/primeng-icons-ban.mjs.map +1 -1
- package/fesm2022/primeng-icons-bars.mjs +2 -2
- package/fesm2022/primeng-icons-bars.mjs.map +1 -1
- package/fesm2022/primeng-icons-baseicon.mjs +2 -2
- package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
- package/fesm2022/primeng-icons-blank.mjs +2 -2
- package/fesm2022/primeng-icons-blank.mjs.map +1 -1
- package/fesm2022/primeng-icons-calendar.mjs +2 -2
- package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretleft.mjs +2 -2
- package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretright.mjs +2 -2
- package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
- package/fesm2022/primeng-icons-check.mjs +2 -2
- package/fesm2022/primeng-icons-check.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
- package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
- package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronright.mjs +2 -2
- package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronup.mjs +2 -2
- package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
- package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
- package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
- package/fesm2022/primeng-icons-eye.mjs +2 -2
- package/fesm2022/primeng-icons-eye.mjs.map +1 -1
- package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
- package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-filter.mjs +2 -2
- package/fesm2022/primeng-icons-filter.mjs.map +1 -1
- package/fesm2022/primeng-icons-filterslash.mjs +2 -2
- package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-home.mjs +2 -2
- package/fesm2022/primeng-icons-home.mjs.map +1 -1
- package/fesm2022/primeng-icons-infocircle.mjs +2 -2
- package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-minus.mjs +2 -2
- package/fesm2022/primeng-icons-minus.mjs.map +1 -1
- package/fesm2022/primeng-icons-pencil.mjs +2 -2
- package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
- package/fesm2022/primeng-icons-plus.mjs +2 -2
- package/fesm2022/primeng-icons-plus.mjs.map +1 -1
- package/fesm2022/primeng-icons-refresh.mjs +2 -2
- package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
- package/fesm2022/primeng-icons-search.mjs +2 -2
- package/fesm2022/primeng-icons-search.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchminus.mjs +2 -2
- package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchplus.mjs +2 -2
- package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-spinner.mjs +2 -2
- package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
- package/fesm2022/primeng-icons-star.mjs +2 -2
- package/fesm2022/primeng-icons-star.mjs.map +1 -1
- package/fesm2022/primeng-icons-starfill.mjs +2 -2
- package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
- package/fesm2022/primeng-icons-thlarge.mjs +2 -2
- package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
- package/fesm2022/primeng-icons-times.mjs +2 -2
- package/fesm2022/primeng-icons-times.mjs.map +1 -1
- package/fesm2022/primeng-icons-timescircle.mjs +2 -2
- package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-trash.mjs +2 -2
- package/fesm2022/primeng-icons-trash.mjs.map +1 -1
- package/fesm2022/primeng-icons-undo.mjs +2 -2
- package/fesm2022/primeng-icons-undo.mjs.map +1 -1
- package/fesm2022/primeng-icons-upload.mjs +2 -2
- package/fesm2022/primeng-icons-upload.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
- package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
- package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
- package/fesm2022/primeng-iftalabel.mjs +2 -2
- package/fesm2022/primeng-iftalabel.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +2 -2
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-imagecompare.mjs +2 -2
- package/fesm2022/primeng-imagecompare.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +6 -6
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-inputgroup.mjs +2 -2
- package/fesm2022/primeng-inputgroup.mjs.map +1 -1
- package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
- package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
- package/fesm2022/primeng-inputicon.mjs +2 -2
- package/fesm2022/primeng-inputicon.mjs.map +1 -1
- package/fesm2022/primeng-inputmask.mjs +2 -2
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +2 -2
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +2 -2
- package/fesm2022/primeng-inputotp.mjs.map +1 -1
- package/fesm2022/primeng-inputswitch.mjs +2 -2
- package/fesm2022/primeng-inputswitch.mjs.map +1 -1
- package/fesm2022/primeng-inputtext.mjs +1 -1
- package/fesm2022/primeng-inputtext.mjs.map +1 -1
- package/fesm2022/primeng-inputtextarea.mjs +1 -1
- package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
- package/fesm2022/primeng-keyfilter.mjs +1 -1
- package/fesm2022/primeng-keyfilter.mjs.map +1 -1
- package/fesm2022/primeng-knob.mjs +2 -2
- package/fesm2022/primeng-knob.mjs.map +1 -1
- package/fesm2022/primeng-listbox.mjs +2 -2
- package/fesm2022/primeng-listbox.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +4 -4
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +5 -5
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +4 -4
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-message.mjs +2 -2
- package/fesm2022/primeng-message.mjs.map +1 -1
- package/fesm2022/primeng-messages.mjs +2 -2
- package/fesm2022/primeng-messages.mjs.map +1 -1
- package/fesm2022/primeng-metergroup.mjs +4 -4
- package/fesm2022/primeng-metergroup.mjs.map +1 -1
- package/fesm2022/primeng-multiselect.mjs +4 -4
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +2 -2
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-organizationchart.mjs +5 -5
- package/fesm2022/primeng-organizationchart.mjs.map +1 -1
- package/fesm2022/primeng-overlay.mjs +2 -2
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaybadge.mjs +2 -2
- package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +2 -2
- package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
- package/fesm2022/primeng-paginator.mjs +2 -2
- package/fesm2022/primeng-paginator.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +2 -2
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +7 -7
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-password.mjs +4 -4
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +2 -2
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +2 -2
- package/fesm2022/primeng-popover.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +2 -2
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-progressspinner.mjs +2 -2
- package/fesm2022/primeng-progressspinner.mjs.map +1 -1
- package/fesm2022/primeng-radiobutton.mjs +2 -2
- package/fesm2022/primeng-radiobutton.mjs.map +1 -1
- package/fesm2022/primeng-rating.mjs +2 -2
- package/fesm2022/primeng-rating.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +1 -1
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scroller.mjs +2 -2
- package/fesm2022/primeng-scroller.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +2 -2
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +2 -2
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-select.mjs +4 -4
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +2 -2
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +2 -2
- package/fesm2022/primeng-sidebar.mjs.map +1 -1
- package/fesm2022/primeng-skeleton.mjs +2 -2
- package/fesm2022/primeng-skeleton.mjs.map +1 -1
- package/fesm2022/primeng-slider.mjs +2 -2
- package/fesm2022/primeng-slider.mjs.map +1 -1
- package/fesm2022/primeng-speeddial.mjs +2 -2
- package/fesm2022/primeng-speeddial.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +2 -2
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +4 -4
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-stepper.mjs +16 -16
- package/fesm2022/primeng-stepper.mjs.map +1 -1
- package/fesm2022/primeng-steps.mjs +2 -2
- package/fesm2022/primeng-steps.mjs.map +1 -1
- package/fesm2022/primeng-styleclass.mjs +1 -1
- package/fesm2022/primeng-styleclass.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +64 -38
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +2 -2
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabs.mjs +11 -11
- package/fesm2022/primeng-tabs.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +4 -4
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-tag.mjs +2 -2
- package/fesm2022/primeng-tag.mjs.map +1 -1
- package/fesm2022/primeng-terminal.mjs +2 -2
- package/fesm2022/primeng-terminal.mjs.map +1 -1
- package/fesm2022/primeng-textarea.mjs +1 -1
- package/fesm2022/primeng-textarea.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +4 -4
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-timeline.mjs +2 -2
- package/fesm2022/primeng-timeline.mjs.map +1 -1
- package/fesm2022/primeng-toast.mjs +4 -4
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +3 -3
- package/fesm2022/primeng-togglebutton.mjs.map +1 -1
- package/fesm2022/primeng-toggleswitch.mjs +2 -2
- package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +2 -2
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs +1 -1
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +4 -4
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +2 -2
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +24 -24
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/package.json +163 -511
- package/speeddial/speeddial.d.ts +2 -2
- package/esm2022/accordion/accordion.mjs +0 -1281
- package/esm2022/accordion/primeng-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -3
- package/esm2022/accordion/style/accordionstyle.mjs +0 -163
- package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
- package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
- package/esm2022/animateonscroll/public_api.mjs +0 -2
- package/esm2022/api/blockableui.mjs +0 -2
- package/esm2022/api/confirmaeventtype.mjs +0 -10
- package/esm2022/api/confirmation.mjs +0 -2
- package/esm2022/api/confirmationservice.mjs +0 -43
- package/esm2022/api/contextmenuservice.mjs +0 -22
- package/esm2022/api/filtermatchmode.mjs +0 -23
- package/esm2022/api/filtermetadata.mjs +0 -2
- package/esm2022/api/filteroperator.mjs +0 -5
- package/esm2022/api/filterservice.mjs +0 -224
- package/esm2022/api/lazyloadevent.mjs +0 -2
- package/esm2022/api/lazyloadmeta.mjs +0 -2
- package/esm2022/api/megamenuitem.mjs +0 -2
- package/esm2022/api/menuitem.mjs +0 -2
- package/esm2022/api/messageservice.mjs +0 -47
- package/esm2022/api/overlayoptions.mjs +0 -2
- package/esm2022/api/overlayservice.mjs +0 -19
- package/esm2022/api/primeicons.mjs +0 -314
- package/esm2022/api/primeng-api.mjs +0 -5
- package/esm2022/api/public_api.mjs +0 -33
- package/esm2022/api/scrolleroptions.mjs +0 -2
- package/esm2022/api/selectitem.mjs +0 -2
- package/esm2022/api/selectitemgroup.mjs +0 -2
- package/esm2022/api/shared.mjs +0 -76
- package/esm2022/api/sortevent.mjs +0 -2
- package/esm2022/api/sortmeta.mjs +0 -2
- package/esm2022/api/tablestate.mjs +0 -2
- package/esm2022/api/toastmessage.mjs +0 -2
- package/esm2022/api/tooltipoptions.mjs +0 -2
- package/esm2022/api/translation.mjs +0 -2
- package/esm2022/api/translationkeys.mjs +0 -51
- package/esm2022/api/treedragdropservice.mjs +0 -21
- package/esm2022/api/treenode.mjs +0 -2
- package/esm2022/api/treenodedragevent.mjs +0 -2
- package/esm2022/api/treetablenode.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.mjs +0 -2284
- package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/public_api.mjs +0 -4
- package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -409
- package/esm2022/autofocus/autofocus.mjs +0 -86
- package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
- package/esm2022/autofocus/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.mjs +0 -193
- package/esm2022/avatar/primeng-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -3
- package/esm2022/avatar/style/avatarstyle.mjs +0 -130
- package/esm2022/avatargroup/avatargroup.mjs +0 -80
- package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
- package/esm2022/avatargroup/public_api.mjs +0 -3
- package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
- package/esm2022/badge/badge.mjs +0 -339
- package/esm2022/badge/primeng-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -3
- package/esm2022/badge/style/badgestyle.mjs +0 -143
- package/esm2022/base/base.mjs +0 -19
- package/esm2022/base/primeng-base.mjs +0 -5
- package/esm2022/base/public_api.mjs +0 -3
- package/esm2022/base/style/basestyle.mjs +0 -256
- package/esm2022/basecomponent/basecomponent.mjs +0 -160
- package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
- package/esm2022/basecomponent/public_api.mjs +0 -3
- package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
- package/esm2022/blockui/blockui.interface.mjs +0 -2
- package/esm2022/blockui/blockui.mjs +0 -230
- package/esm2022/blockui/primeng-blockui.mjs +0 -5
- package/esm2022/blockui/public_api.mjs +0 -4
- package/esm2022/blockui/style/blockuistyle.mjs +0 -50
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -601
- package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
- package/esm2022/breadcrumb/public_api.mjs +0 -4
- package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
- package/esm2022/button/button.interface.mjs +0 -2
- package/esm2022/button/button.mjs +0 -923
- package/esm2022/button/primeng-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -4
- package/esm2022/button/style/buttonstyle.mjs +0 -707
- package/esm2022/buttongroup/buttongroup.mjs +0 -47
- package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
- package/esm2022/buttongroup/public_api.mjs +0 -3
- package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
- package/esm2022/calendar/calendar.interface.mjs +0 -2
- package/esm2022/calendar/calendar.mjs +0 -4567
- package/esm2022/calendar/primeng-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -4
- package/esm2022/calendar/style/calendarstyle.mjs +0 -472
- package/esm2022/card/card.interface.mjs +0 -2
- package/esm2022/card/card.mjs +0 -293
- package/esm2022/card/primeng-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -4
- package/esm2022/card/style/cardstyle.mjs +0 -100
- package/esm2022/carousel/carousel.interface.mjs +0 -2
- package/esm2022/carousel/carousel.mjs +0 -1213
- package/esm2022/carousel/primeng-carousel.mjs +0 -5
- package/esm2022/carousel/public_api.mjs +0 -4
- package/esm2022/carousel/style/carouselstyle.mjs +0 -234
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
- package/esm2022/cascadeselect/cascadeselect.mjs +0 -1878
- package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
- package/esm2022/cascadeselect/public_api.mjs +0 -4
- package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
- package/esm2022/chart/chart.mjs +0 -210
- package/esm2022/chart/primeng-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -3
- package/esm2022/chart/style/chartstyle.mjs +0 -36
- package/esm2022/checkbox/checkbox.interface.mjs +0 -2
- package/esm2022/checkbox/checkbox.mjs +0 -468
- package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -4
- package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
- package/esm2022/chip/chip.interface.mjs +0 -2
- package/esm2022/chip/chip.mjs +0 -358
- package/esm2022/chip/primeng-chip.mjs +0 -5
- package/esm2022/chip/public_api.mjs +0 -4
- package/esm2022/chip/style/chipstyle.mjs +0 -104
- package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
- package/esm2022/colorpicker/colorpicker.mjs +0 -856
- package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
- package/esm2022/colorpicker/public_api.mjs +0 -4
- package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
- package/esm2022/config/primeng-config.mjs +0 -5
- package/esm2022/config/primeng.mjs +0 -185
- package/esm2022/config/provideprimeng.mjs +0 -19
- package/esm2022/config/public_api.mjs +0 -4
- package/esm2022/config/themeprovider.mjs +0 -68
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
- package/esm2022/confirmdialog/confirmdialog.mjs +0 -854
- package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
- package/esm2022/confirmdialog/public_api.mjs +0 -4
- package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
- package/esm2022/confirmpopup/confirmpopup.mjs +0 -647
- package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
- package/esm2022/confirmpopup/public_api.mjs +0 -4
- package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
- package/esm2022/contextmenu/contextmenu.mjs +0 -1467
- package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
- package/esm2022/contextmenu/public_api.mjs +0 -3
- package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
- package/esm2022/dataview/dataview.interface.mjs +0 -2
- package/esm2022/dataview/dataview.mjs +0 -819
- package/esm2022/dataview/primeng-dataview.mjs +0 -5
- package/esm2022/dataview/public_api.mjs +0 -4
- package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
- package/esm2022/datepicker/datepicker.interface.mjs +0 -2
- package/esm2022/datepicker/datepicker.mjs +0 -4580
- package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
- package/esm2022/datepicker/public_api.mjs +0 -4
- package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
- package/esm2022/defer/defer.mjs +0 -100
- package/esm2022/defer/primeng-defer.mjs +0 -5
- package/esm2022/defer/public_api.mjs +0 -2
- package/esm2022/dialog/dialog.interface.mjs +0 -2
- package/esm2022/dialog/dialog.mjs +0 -1430
- package/esm2022/dialog/primeng-dialog.mjs +0 -5
- package/esm2022/dialog/public_api.mjs +0 -4
- package/esm2022/dialog/style/dialogstyle.mjs +0 -283
- package/esm2022/divider/divider.mjs +0 -117
- package/esm2022/divider/primeng-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -3
- package/esm2022/divider/style/dividerstyle.mjs +0 -138
- package/esm2022/dock/dock.interface.mjs +0 -2
- package/esm2022/dock/dock.mjs +0 -465
- package/esm2022/dock/primeng-dock.mjs +0 -5
- package/esm2022/dock/public_api.mjs +0 -4
- package/esm2022/dock/style/dockstyle.mjs +0 -210
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
- package/esm2022/dom/domhandler.mjs +0 -725
- package/esm2022/dom/primeng-dom.mjs +0 -5
- package/esm2022/dom/public_api.mjs +0 -3
- package/esm2022/dragdrop/dragdrop.mjs +0 -323
- package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
- package/esm2022/dragdrop/public_api.mjs +0 -2
- package/esm2022/drawer/drawer.interface.mjs +0 -2
- package/esm2022/drawer/drawer.mjs +0 -705
- package/esm2022/drawer/primeng-drawer.mjs +0 -5
- package/esm2022/drawer/public_api.mjs +0 -4
- package/esm2022/drawer/style/drawerstyle.mjs +0 -283
- package/esm2022/dropdown/dropdown.interface.mjs +0 -2
- package/esm2022/dropdown/dropdown.mjs +0 -2506
- package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -4
- package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
- package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
- package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -879
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
- package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
- package/esm2022/dynamicdialog/public_api.mjs +0 -8
- package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
- package/esm2022/editor/editor.interface.mjs +0 -2
- package/esm2022/editor/editor.mjs +0 -443
- package/esm2022/editor/primeng-editor.mjs +0 -5
- package/esm2022/editor/public_api.mjs +0 -4
- package/esm2022/editor/style/editorstyle.mjs +0 -1008
- package/esm2022/fieldset/fieldset.interface.mjs +0 -2
- package/esm2022/fieldset/fieldset.mjs +0 -455
- package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
- package/esm2022/fieldset/public_api.mjs +0 -4
- package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
- package/esm2022/fileupload/fileupload.interface.mjs +0 -2
- package/esm2022/fileupload/fileupload.mjs +0 -1647
- package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
- package/esm2022/fileupload/public_api.mjs +0 -4
- package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
- package/esm2022/floatlabel/floatlabel.mjs +0 -61
- package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
- package/esm2022/floatlabel/public_api.mjs +0 -3
- package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
- package/esm2022/fluid/fluid.mjs +0 -50
- package/esm2022/fluid/primeng-fluid.mjs +0 -5
- package/esm2022/fluid/public_api.mjs +0 -3
- package/esm2022/fluid/style/fluidstyle.mjs +0 -38
- package/esm2022/focustrap/focustrap.mjs +0 -104
- package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
- package/esm2022/focustrap/public_api.mjs +0 -2
- package/esm2022/galleria/galleria.interface.mjs +0 -2
- package/esm2022/galleria/galleria.mjs +0 -1867
- package/esm2022/galleria/primeng-galleria.mjs +0 -5
- package/esm2022/galleria/public_api.mjs +0 -4
- package/esm2022/galleria/style/galleriastyle.mjs +0 -644
- package/esm2022/iconfield/iconfield.mjs +0 -73
- package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
- package/esm2022/iconfield/public_api.mjs +0 -3
- package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
- package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
- package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
- package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
- package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
- package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
- package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
- package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
- package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
- package/esm2022/icons/angledown/angledown.mjs +0 -32
- package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
- package/esm2022/icons/angledown/public_api.mjs +0 -2
- package/esm2022/icons/angleleft/angleleft.mjs +0 -32
- package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
- package/esm2022/icons/angleleft/public_api.mjs +0 -2
- package/esm2022/icons/angleright/angleright.mjs +0 -32
- package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
- package/esm2022/icons/angleright/public_api.mjs +0 -2
- package/esm2022/icons/angleup/angleup.mjs +0 -32
- package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
- package/esm2022/icons/angleup/public_api.mjs +0 -2
- package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
- package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
- package/esm2022/icons/arrowdown/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
- package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
- package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
- package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
- package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
- package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
- package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
- package/esm2022/icons/arrowleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowright/arrowright.mjs +0 -34
- package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
- package/esm2022/icons/arrowright/public_api.mjs +0 -2
- package/esm2022/icons/arrowup/arrowup.mjs +0 -53
- package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
- package/esm2022/icons/arrowup/public_api.mjs +0 -2
- package/esm2022/icons/ban/ban.mjs +0 -51
- package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
- package/esm2022/icons/ban/public_api.mjs +0 -2
- package/esm2022/icons/bars/bars.mjs +0 -34
- package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
- package/esm2022/icons/bars/public_api.mjs +0 -2
- package/esm2022/icons/baseicon/baseicon.mjs +0 -54
- package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
- package/esm2022/icons/baseicon/public_api.mjs +0 -3
- package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
- package/esm2022/icons/blank/blank.mjs +0 -26
- package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
- package/esm2022/icons/blank/public_api.mjs +0 -2
- package/esm2022/icons/calendar/calendar.mjs +0 -32
- package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
- package/esm2022/icons/calendar/public_api.mjs +0 -2
- package/esm2022/icons/caretleft/caretleft.mjs +0 -32
- package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
- package/esm2022/icons/caretleft/public_api.mjs +0 -2
- package/esm2022/icons/caretright/caretright.mjs +0 -32
- package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
- package/esm2022/icons/caretright/public_api.mjs +0 -2
- package/esm2022/icons/check/check.mjs +0 -32
- package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
- package/esm2022/icons/check/public_api.mjs +0 -2
- package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
- package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
- package/esm2022/icons/chevrondown/public_api.mjs +0 -2
- package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
- package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
- package/esm2022/icons/chevronleft/public_api.mjs +0 -2
- package/esm2022/icons/chevronright/chevronright.mjs +0 -32
- package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
- package/esm2022/icons/chevronright/public_api.mjs +0 -2
- package/esm2022/icons/chevronup/chevronup.mjs +0 -32
- package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
- package/esm2022/icons/chevronup/public_api.mjs +0 -2
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
- package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
- package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
- package/esm2022/icons/eye/eye.mjs +0 -34
- package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
- package/esm2022/icons/eye/public_api.mjs +0 -2
- package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
- package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
- package/esm2022/icons/eyeslash/public_api.mjs +0 -2
- package/esm2022/icons/filter/filter.mjs +0 -51
- package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
- package/esm2022/icons/filter/public_api.mjs +0 -2
- package/esm2022/icons/filterslash/filterslash.mjs +0 -53
- package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
- package/esm2022/icons/filterslash/public_api.mjs +0 -2
- package/esm2022/icons/home/home.mjs +0 -53
- package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
- package/esm2022/icons/home/public_api.mjs +0 -2
- package/esm2022/icons/infocircle/infocircle.mjs +0 -53
- package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
- package/esm2022/icons/infocircle/public_api.mjs +0 -2
- package/esm2022/icons/minus/minus.mjs +0 -32
- package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
- package/esm2022/icons/minus/public_api.mjs +0 -2
- package/esm2022/icons/pencil/pencil.mjs +0 -51
- package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
- package/esm2022/icons/pencil/public_api.mjs +0 -2
- package/esm2022/icons/plus/plus.mjs +0 -51
- package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
- package/esm2022/icons/plus/public_api.mjs +0 -2
- package/esm2022/icons/primeng-icons.mjs +0 -5
- package/esm2022/icons/public_api.mjs +0 -58
- package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
- package/esm2022/icons/refresh/public_api.mjs +0 -2
- package/esm2022/icons/refresh/refresh.mjs +0 -53
- package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
- package/esm2022/icons/search/public_api.mjs +0 -2
- package/esm2022/icons/search/search.mjs +0 -53
- package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
- package/esm2022/icons/searchminus/public_api.mjs +0 -2
- package/esm2022/icons/searchminus/searchminus.mjs +0 -53
- package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
- package/esm2022/icons/searchplus/public_api.mjs +0 -2
- package/esm2022/icons/searchplus/searchplus.mjs +0 -53
- package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
- package/esm2022/icons/sortalt/public_api.mjs +0 -2
- package/esm2022/icons/sortalt/sortalt.mjs +0 -57
- package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
- package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
- package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
- package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
- package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
- package/esm2022/icons/spinner/public_api.mjs +0 -2
- package/esm2022/icons/spinner/spinner.mjs +0 -51
- package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
- package/esm2022/icons/star/public_api.mjs +0 -2
- package/esm2022/icons/star/star.mjs +0 -51
- package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
- package/esm2022/icons/starfill/public_api.mjs +0 -2
- package/esm2022/icons/starfill/starfill.mjs +0 -51
- package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
- package/esm2022/icons/thlarge/public_api.mjs +0 -2
- package/esm2022/icons/thlarge/thlarge.mjs +0 -53
- package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
- package/esm2022/icons/times/public_api.mjs +0 -2
- package/esm2022/icons/times/times.mjs +0 -32
- package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
- package/esm2022/icons/timescircle/public_api.mjs +0 -2
- package/esm2022/icons/timescircle/timescircle.mjs +0 -53
- package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
- package/esm2022/icons/trash/public_api.mjs +0 -2
- package/esm2022/icons/trash/trash.mjs +0 -53
- package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
- package/esm2022/icons/undo/public_api.mjs +0 -2
- package/esm2022/icons/undo/undo.mjs +0 -53
- package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
- package/esm2022/icons/upload/public_api.mjs +0 -2
- package/esm2022/icons/upload/upload.mjs +0 -53
- package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
- package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
- package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
- package/esm2022/icons/windowminimize/public_api.mjs +0 -2
- package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
- package/esm2022/iftalabel/iftalabel.mjs +0 -49
- package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
- package/esm2022/iftalabel/public_api.mjs +0 -3
- package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
- package/esm2022/image/image.interface.mjs +0 -2
- package/esm2022/image/image.mjs +0 -794
- package/esm2022/image/primeng-image.mjs +0 -5
- package/esm2022/image/public_api.mjs +0 -4
- package/esm2022/image/style/imagestyle.mjs +0 -219
- package/esm2022/imagecompare/imagecompare.mjs +0 -178
- package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
- package/esm2022/imagecompare/public_api.mjs +0 -3
- package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
- package/esm2022/inplace/inplace.interface.mjs +0 -2
- package/esm2022/inplace/inplace.mjs +0 -369
- package/esm2022/inplace/primeng-inplace.mjs +0 -5
- package/esm2022/inplace/public_api.mjs +0 -4
- package/esm2022/inplace/style/inplacestyle.mjs +0 -69
- package/esm2022/inputgroup/inputgroup.mjs +0 -68
- package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
- package/esm2022/inputgroup/public_api.mjs +0 -3
- package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
- package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
- package/esm2022/inputgroupaddon/public_api.mjs +0 -3
- package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
- package/esm2022/inputicon/inputicon.mjs +0 -66
- package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
- package/esm2022/inputicon/public_api.mjs +0 -3
- package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
- package/esm2022/inputmask/inputmask.interface.mjs +0 -2
- package/esm2022/inputmask/inputmask.mjs +0 -927
- package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
- package/esm2022/inputmask/public_api.mjs +0 -4
- package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
- package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
- package/esm2022/inputnumber/inputnumber.mjs +0 -1753
- package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
- package/esm2022/inputnumber/public_api.mjs +0 -4
- package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
- package/esm2022/inputotp/inputotp.mjs +0 -425
- package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
- package/esm2022/inputotp/public_api.mjs +0 -3
- package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
- package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
- package/esm2022/inputswitch/inputswitch.mjs +0 -241
- package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
- package/esm2022/inputswitch/public_api.mjs +0 -4
- package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
- package/esm2022/inputtext/inputtext.mjs +0 -104
- package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
- package/esm2022/inputtext/public_api.mjs +0 -3
- package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
- package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
- package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
- package/esm2022/inputtextarea/public_api.mjs +0 -3
- package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
- package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
- package/esm2022/keyfilter/keyfilter.mjs +0 -263
- package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
- package/esm2022/keyfilter/public_api.mjs +0 -3
- package/esm2022/knob/knob.mjs +0 -471
- package/esm2022/knob/primeng-knob.mjs +0 -5
- package/esm2022/knob/public_api.mjs +0 -3
- package/esm2022/knob/style/knobstyle.mjs +0 -83
- package/esm2022/listbox/listbox.interface.mjs +0 -2
- package/esm2022/listbox/listbox.mjs +0 -2103
- package/esm2022/listbox/primeng-listbox.mjs +0 -5
- package/esm2022/listbox/public_api.mjs +0 -4
- package/esm2022/listbox/style/listboxstyle.mjs +0 -206
- package/esm2022/megamenu/megamenu.interface.mjs +0 -2
- package/esm2022/megamenu/megamenu.mjs +0 -1653
- package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
- package/esm2022/megamenu/public_api.mjs +0 -4
- package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
- package/esm2022/menu/menu.mjs +0 -1193
- package/esm2022/menu/primeng-menu.mjs +0 -5
- package/esm2022/menu/public_api.mjs +0 -3
- package/esm2022/menu/style/menustyle.mjs +0 -179
- package/esm2022/menubar/menubar.interface.mjs +0 -2
- package/esm2022/menubar/menubar.mjs +0 -1519
- package/esm2022/menubar/primeng-menubar.mjs +0 -5
- package/esm2022/menubar/public_api.mjs +0 -4
- package/esm2022/menubar/style/menubarstyle.mjs +0 -375
- package/esm2022/message/message.mjs +0 -445
- package/esm2022/message/primeng-message.mjs +0 -5
- package/esm2022/message/public_api.mjs +0 -3
- package/esm2022/message/style/messagestyle.mjs +0 -357
- package/esm2022/messages/messages.interface.mjs +0 -2
- package/esm2022/messages/messages.mjs +0 -538
- package/esm2022/messages/primeng-messages.mjs +0 -5
- package/esm2022/messages/public_api.mjs +0 -4
- package/esm2022/messages/style/messagesstyle.mjs +0 -229
- package/esm2022/metergroup/metergroup.interface.mjs +0 -2
- package/esm2022/metergroup/metergroup.mjs +0 -455
- package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
- package/esm2022/metergroup/public_api.mjs +0 -4
- package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
- package/esm2022/multiselect/multiselect.interface.mjs +0 -2
- package/esm2022/multiselect/multiselect.mjs +0 -3015
- package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
- package/esm2022/multiselect/public_api.mjs +0 -4
- package/esm2022/multiselect/style/multiselectstyle.mjs +0 -373
- package/esm2022/orderlist/orderlist.interface.mjs +0 -2
- package/esm2022/orderlist/orderlist.mjs +0 -1176
- package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
- package/esm2022/orderlist/public_api.mjs +0 -4
- package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
- package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
- package/esm2022/organizationchart/organizationchart.mjs +0 -607
- package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
- package/esm2022/organizationchart/public_api.mjs +0 -4
- package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
- package/esm2022/overlay/overlay.mjs +0 -688
- package/esm2022/overlay/primeng-overlay.mjs +0 -5
- package/esm2022/overlay/public_api.mjs +0 -3
- package/esm2022/overlay/style/overlaystyle.mjs +0 -93
- package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
- package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
- package/esm2022/overlaybadge/public_api.mjs +0 -3
- package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
- package/esm2022/overlaypanel/overlaypanel.mjs +0 -552
- package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
- package/esm2022/overlaypanel/public_api.mjs +0 -3
- package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
- package/esm2022/paginator/paginator.interface.mjs +0 -2
- package/esm2022/paginator/paginator.mjs +0 -925
- package/esm2022/paginator/primeng-paginator.mjs +0 -5
- package/esm2022/paginator/public_api.mjs +0 -4
- package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
- package/esm2022/panel/panel.mjs +0 -645
- package/esm2022/panel/primeng-panel.mjs +0 -5
- package/esm2022/panel/public_api.mjs +0 -3
- package/esm2022/panel/style/panelstyle.mjs +0 -120
- package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
- package/esm2022/panelmenu/panelmenu.mjs +0 -1651
- package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
- package/esm2022/panelmenu/public_api.mjs +0 -4
- package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
- package/esm2022/password/password.mjs +0 -1240
- package/esm2022/password/primeng-password.mjs +0 -5
- package/esm2022/password/public_api.mjs +0 -3
- package/esm2022/password/style/passwordstyle.mjs +0 -182
- package/esm2022/picklist/picklist.interface.mjs +0 -2
- package/esm2022/picklist/picklist.mjs +0 -2426
- package/esm2022/picklist/primeng-picklist.mjs +0 -5
- package/esm2022/picklist/public_api.mjs +0 -4
- package/esm2022/picklist/style/pickliststyle.mjs +0 -79
- package/esm2022/popover/popover.mjs +0 -535
- package/esm2022/popover/primeng-popover.mjs +0 -5
- package/esm2022/popover/public_api.mjs +0 -3
- package/esm2022/popover/style/popoverstyle.mjs +0 -99
- package/esm2022/primeng.mjs +0 -5
- package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
- package/esm2022/progressbar/progressbar.mjs +0 -215
- package/esm2022/progressbar/public_api.mjs +0 -3
- package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
- package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
- package/esm2022/progressspinner/progressspinner.mjs +0 -105
- package/esm2022/progressspinner/public_api.mjs +0 -3
- package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
- package/esm2022/radiobutton/public_api.mjs +0 -4
- package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
- package/esm2022/radiobutton/radiobutton.mjs +0 -356
- package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
- package/esm2022/rating/primeng-rating.mjs +0 -5
- package/esm2022/rating/public_api.mjs +0 -4
- package/esm2022/rating/rating.interface.mjs +0 -2
- package/esm2022/rating/rating.mjs +0 -449
- package/esm2022/rating/style/ratingstyle.mjs +0 -103
- package/esm2022/ripple/primeng-ripple.mjs +0 -5
- package/esm2022/ripple/public_api.mjs +0 -3
- package/esm2022/ripple/ripple.mjs +0 -134
- package/esm2022/ripple/style/ripplestyle.mjs +0 -63
- package/esm2022/scroller/primeng-scroller.mjs +0 -5
- package/esm2022/scroller/public_api.mjs +0 -4
- package/esm2022/scroller/scroller.interface.mjs +0 -2
- package/esm2022/scroller/scroller.mjs +0 -1300
- package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
- package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
- package/esm2022/scrollpanel/public_api.mjs +0 -4
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
- package/esm2022/scrollpanel/scrollpanel.mjs +0 -525
- package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
- package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
- package/esm2022/scrolltop/public_api.mjs +0 -4
- package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
- package/esm2022/scrolltop/scrolltop.mjs +0 -343
- package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
- package/esm2022/select/primeng-select.mjs +0 -5
- package/esm2022/select/public_api.mjs +0 -4
- package/esm2022/select/select.interface.mjs +0 -2
- package/esm2022/select/select.mjs +0 -2697
- package/esm2022/select/style/selectstyle.mjs +0 -365
- package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
- package/esm2022/selectbutton/public_api.mjs +0 -4
- package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
- package/esm2022/selectbutton/selectbutton.mjs +0 -388
- package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
- package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
- package/esm2022/sidebar/public_api.mjs +0 -4
- package/esm2022/sidebar/sidebar.interface.mjs +0 -2
- package/esm2022/sidebar/sidebar.mjs +0 -600
- package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
- package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
- package/esm2022/skeleton/public_api.mjs +0 -3
- package/esm2022/skeleton/skeleton.mjs +0 -121
- package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
- package/esm2022/slider/primeng-slider.mjs +0 -5
- package/esm2022/slider/public_api.mjs +0 -4
- package/esm2022/slider/slider.interface.mjs +0 -2
- package/esm2022/slider/slider.mjs +0 -820
- package/esm2022/slider/style/sliderstyle.mjs +0 -141
- package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
- package/esm2022/speeddial/public_api.mjs +0 -4
- package/esm2022/speeddial/speeddial.interface.mjs +0 -2
- package/esm2022/speeddial/speeddial.mjs +0 -891
- package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
- package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
- package/esm2022/splitbutton/public_api.mjs +0 -4
- package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
- package/esm2022/splitbutton/splitbutton.mjs +0 -602
- package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
- package/esm2022/splitter/primeng-splitter.mjs +0 -5
- package/esm2022/splitter/public_api.mjs +0 -4
- package/esm2022/splitter/splitter.interface.mjs +0 -2
- package/esm2022/splitter/splitter.mjs +0 -626
- package/esm2022/splitter/style/splitterstyle.mjs +0 -127
- package/esm2022/stepper/primeng-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/stepper.mjs +0 -535
- package/esm2022/stepper/style/stepperstyle.mjs +0 -228
- package/esm2022/steps/primeng-steps.mjs +0 -5
- package/esm2022/steps/public_api.mjs +0 -3
- package/esm2022/steps/steps.mjs +0 -405
- package/esm2022/steps/style/stepsstyle.mjs +0 -180
- package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
- package/esm2022/styleclass/public_api.mjs +0 -2
- package/esm2022/styleclass/styleclass.mjs +0 -315
- package/esm2022/table/columnfilter.interface.mjs +0 -2
- package/esm2022/table/primeng-table.mjs +0 -5
- package/esm2022/table/public_api.mjs +0 -5
- package/esm2022/table/style/tablestyle.mjs +0 -906
- package/esm2022/table/table.interface.mjs +0 -2
- package/esm2022/table/table.mjs +0 -7840
- package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
- package/esm2022/tabmenu/public_api.mjs +0 -4
- package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
- package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
- package/esm2022/tabmenu/tabmenu.mjs +0 -757
- package/esm2022/tabs/primeng-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -7
- package/esm2022/tabs/style/tabsstyle.mjs +0 -211
- package/esm2022/tabs/tab.mjs +0 -175
- package/esm2022/tabs/tablist.mjs +0 -305
- package/esm2022/tabs/tabpanel.mjs +0 -60
- package/esm2022/tabs/tabpanels.mjs +0 -38
- package/esm2022/tabs/tabs.mjs +0 -105
- package/esm2022/tabview/primeng-tabview.mjs +0 -5
- package/esm2022/tabview/public_api.mjs +0 -4
- package/esm2022/tabview/style/tabsstyle.mjs +0 -211
- package/esm2022/tabview/tabview.interface.mjs +0 -2
- package/esm2022/tabview/tabview.mjs +0 -1141
- package/esm2022/tag/primeng-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -4
- package/esm2022/tag/style/tagstyle.mjs +0 -108
- package/esm2022/tag/tag.interface.mjs +0 -2
- package/esm2022/tag/tag.mjs +0 -192
- package/esm2022/terminal/primeng-terminal.mjs +0 -5
- package/esm2022/terminal/public_api.mjs +0 -4
- package/esm2022/terminal/style/terminalstyle.mjs +0 -113
- package/esm2022/terminal/terminal.mjs +0 -195
- package/esm2022/terminal/terminalservice.mjs +0 -25
- package/esm2022/textarea/primeng-textarea.mjs +0 -5
- package/esm2022/textarea/public_api.mjs +0 -3
- package/esm2022/textarea/style/textareastyle.mjs +0 -120
- package/esm2022/textarea/textarea.mjs +0 -165
- package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
- package/esm2022/tieredmenu/public_api.mjs +0 -4
- package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
- package/esm2022/tieredmenu/tieredmenu.mjs +0 -1467
- package/esm2022/timeline/primeng-timeline.mjs +0 -5
- package/esm2022/timeline/public_api.mjs +0 -4
- package/esm2022/timeline/style/timelinestyle.mjs +0 -217
- package/esm2022/timeline/timeline.interface.mjs +0 -2
- package/esm2022/timeline/timeline.mjs +0 -247
- package/esm2022/toast/primeng-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/style/toaststyle.mjs +0 -351
- package/esm2022/toast/toast.interface.mjs +0 -2
- package/esm2022/toast/toast.mjs +0 -760
- package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
- package/esm2022/togglebutton/public_api.mjs +0 -3
- package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
- package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
- package/esm2022/togglebutton/togglebutton.mjs +0 -368
- package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
- package/esm2022/toggleswitch/public_api.mjs +0 -4
- package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
- package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
- package/esm2022/toggleswitch/toggleswitch.mjs +0 -297
- package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
- package/esm2022/toolbar/public_api.mjs +0 -4
- package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
- package/esm2022/toolbar/toolbar.interface.mjs +0 -2
- package/esm2022/toolbar/toolbar.mjs +0 -198
- package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -3
- package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
- package/esm2022/tooltip/tooltip.mjs +0 -680
- package/esm2022/tree/primeng-tree.mjs +0 -5
- package/esm2022/tree/public_api.mjs +0 -4
- package/esm2022/tree/style/treestyle.mjs +0 -333
- package/esm2022/tree/tree.interface.mjs +0 -2
- package/esm2022/tree/tree.mjs +0 -2304
- package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
- package/esm2022/treeselect/public_api.mjs +0 -4
- package/esm2022/treeselect/style/treeselectstyle.mjs +0 -271
- package/esm2022/treeselect/treeselect.interface.mjs +0 -2
- package/esm2022/treeselect/treeselect.mjs +0 -1439
- package/esm2022/treetable/primeng-treetable.mjs +0 -5
- package/esm2022/treetable/public_api.mjs +0 -4
- package/esm2022/treetable/style/treetablestyle.mjs +0 -621
- package/esm2022/treetable/treetable.interface.mjs +0 -2
- package/esm2022/treetable/treetable.mjs +0 -4661
- package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
- package/esm2022/ts-helpers/public_api.mjs +0 -2
- package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
- package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
- package/esm2022/usestyle/public_api.mjs +0 -2
- package/esm2022/usestyle/usestyle.mjs +0 -44
- package/esm2022/utils/inpututils.mjs +0 -7
- package/esm2022/utils/objectutils.mjs +0 -276
- package/esm2022/utils/primeng-utils.mjs +0 -5
- package/esm2022/utils/public_api.mjs +0 -6
- package/esm2022/utils/uniquecomponentid.mjs +0 -6
- package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,2426 +0,0 @@
|
|
1
|
-
import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
2
|
-
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
3
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, NgModule, numberAttribute, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
4
|
-
import { FormsModule } from '@angular/forms';
|
5
|
-
import { find, findIndexInList, findSingle, isEmpty, scrollInView, setAttribute, uuid } from '@primeuix/utils';
|
6
|
-
import { FilterService, PrimeTemplate, SharedModule } from 'primeng/api';
|
7
|
-
import { BaseComponent } from 'primeng/basecomponent';
|
8
|
-
import { ButtonDirective } from 'primeng/button';
|
9
|
-
import { AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon } from 'primeng/icons';
|
10
|
-
import { Listbox } from 'primeng/listbox';
|
11
|
-
import { Ripple } from 'primeng/ripple';
|
12
|
-
import { PickListStyle } from './style/pickliststyle';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@angular/common";
|
15
|
-
import * as i2 from "@angular/cdk/drag-drop";
|
16
|
-
import * as i3 from "@angular/forms";
|
17
|
-
const _c0 = ["item"];
|
18
|
-
const _c1 = ["sourceHeader"];
|
19
|
-
const _c2 = ["targetHeader"];
|
20
|
-
const _c3 = ["sourceFilter"];
|
21
|
-
const _c4 = ["targetFilter"];
|
22
|
-
const _c5 = ["emptymessagesource"];
|
23
|
-
const _c6 = ["emptyfiltermessagesource"];
|
24
|
-
const _c7 = ["emptymessagetarget"];
|
25
|
-
const _c8 = ["emptyfiltermessagetarget"];
|
26
|
-
const _c9 = ["moveupicon"];
|
27
|
-
const _c10 = ["movetopicon"];
|
28
|
-
const _c11 = ["movedownicon"];
|
29
|
-
const _c12 = ["movebottomicon"];
|
30
|
-
const _c13 = ["movetotargeticon"];
|
31
|
-
const _c14 = ["movealltotargeticon"];
|
32
|
-
const _c15 = ["movetosourceicon"];
|
33
|
-
const _c16 = ["movealltosourceicon"];
|
34
|
-
const _c17 = ["targetfiltericon"];
|
35
|
-
const _c18 = ["sourcefiltericon"];
|
36
|
-
const _c19 = ["sourcelist"];
|
37
|
-
const _c20 = ["targetlist"];
|
38
|
-
const _c21 = () => ({ "p-picklist p-component": true });
|
39
|
-
const _c22 = a0 => ({ $implicit: a0 });
|
40
|
-
const _c23 = a0 => ({ options: a0 });
|
41
|
-
const _c24 = (a0, a1, a2) => ({ $implicit: a0, index: a1, selected: a2 });
|
42
|
-
function PickList_div_1_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
43
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
44
|
-
} if (rf & 2) {
|
45
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
46
|
-
} }
|
47
|
-
function PickList_div_1_3_ng_template_0_Template(rf, ctx) { }
|
48
|
-
function PickList_div_1_3_Template(rf, ctx) { if (rf & 1) {
|
49
|
-
i0.ɵɵtemplate(0, PickList_div_1_3_ng_template_0_Template, 0, 0, "ng-template");
|
50
|
-
} }
|
51
|
-
function PickList_div_1_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
52
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
53
|
-
} if (rf & 2) {
|
54
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
55
|
-
} }
|
56
|
-
function PickList_div_1_6_ng_template_0_Template(rf, ctx) { }
|
57
|
-
function PickList_div_1_6_Template(rf, ctx) { if (rf & 1) {
|
58
|
-
i0.ɵɵtemplate(0, PickList_div_1_6_ng_template_0_Template, 0, 0, "ng-template");
|
59
|
-
} }
|
60
|
-
function PickList_div_1_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
61
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
62
|
-
} if (rf & 2) {
|
63
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
64
|
-
} }
|
65
|
-
function PickList_div_1_9_ng_template_0_Template(rf, ctx) { }
|
66
|
-
function PickList_div_1_9_Template(rf, ctx) { if (rf & 1) {
|
67
|
-
i0.ɵɵtemplate(0, PickList_div_1_9_ng_template_0_Template, 0, 0, "ng-template");
|
68
|
-
} }
|
69
|
-
function PickList_div_1_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
70
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
71
|
-
} if (rf & 2) {
|
72
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
73
|
-
} }
|
74
|
-
function PickList_div_1_12_ng_template_0_Template(rf, ctx) { }
|
75
|
-
function PickList_div_1_12_Template(rf, ctx) { if (rf & 1) {
|
76
|
-
i0.ɵɵtemplate(0, PickList_div_1_12_ng_template_0_Template, 0, 0, "ng-template");
|
77
|
-
} }
|
78
|
-
function PickList_div_1_Template(rf, ctx) { if (rf & 1) {
|
79
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
80
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "button", 11);
|
81
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveUp(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
82
|
-
i0.ɵɵtemplate(2, PickList_div_1_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_1_3_Template, 1, 0, null, 16);
|
83
|
-
i0.ɵɵelementEnd();
|
84
|
-
i0.ɵɵelementStart(4, "button", 11);
|
85
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveTop(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
86
|
-
i0.ɵɵtemplate(5, PickList_div_1_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_1_6_Template, 1, 0, null, 16);
|
87
|
-
i0.ɵɵelementEnd();
|
88
|
-
i0.ɵɵelementStart(7, "button", 11);
|
89
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveDown(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
90
|
-
i0.ɵɵtemplate(8, PickList_div_1_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_1_9_Template, 1, 0, null, 16);
|
91
|
-
i0.ɵɵelementEnd();
|
92
|
-
i0.ɵɵelementStart(10, "button", 11);
|
93
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveBottom(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
94
|
-
i0.ɵɵtemplate(11, PickList_div_1_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_1_12_Template, 1, 0, null, 16);
|
95
|
-
i0.ɵɵelementEnd()();
|
96
|
-
} if (rf & 2) {
|
97
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
98
|
-
i0.ɵɵattribute("data-pc-section", "sourceControls")("data-pc-group-section", "controls");
|
99
|
-
i0.ɵɵadvance();
|
100
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
101
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "sourceMoveUpButton");
|
102
|
-
i0.ɵɵadvance();
|
103
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate && !ctx_r2._moveUpIconTemplate);
|
104
|
-
i0.ɵɵadvance();
|
105
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate || ctx_r2._moveUpIconTemplate);
|
106
|
-
i0.ɵɵadvance();
|
107
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
108
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "sourceMoveTopButton");
|
109
|
-
i0.ɵɵadvance();
|
110
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate && !ctx_r2._moveTopIconTemplate);
|
111
|
-
i0.ɵɵadvance();
|
112
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate || ctx_r2._moveTopIconTemplate);
|
113
|
-
i0.ɵɵadvance();
|
114
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
115
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "sourceMoveDownButton");
|
116
|
-
i0.ɵɵadvance();
|
117
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate && !ctx_r2._moveDownIconTemplate);
|
118
|
-
i0.ɵɵadvance();
|
119
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate || ctx_r2._moveDownIconTemplate);
|
120
|
-
i0.ɵɵadvance();
|
121
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
122
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "sourceMoveBottomButton");
|
123
|
-
i0.ɵɵadvance();
|
124
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate || ctx_r2._moveBottomIconTemplate);
|
125
|
-
i0.ɵɵadvance();
|
126
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate || ctx_r2._moveBottomIconTemplate);
|
127
|
-
} }
|
128
|
-
function PickList_ng_container_5_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
129
|
-
function PickList_ng_container_5_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
130
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
131
|
-
} }
|
132
|
-
function PickList_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
133
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_Template, 1, 0, null, 16);
|
134
|
-
} if (rf & 2) {
|
135
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
136
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.sourceHeaderTemplate || ctx_r2._sourceHeaderTemplate);
|
137
|
-
} }
|
138
|
-
function PickList_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
139
|
-
i0.ɵɵelementContainerStart(0);
|
140
|
-
i0.ɵɵtemplate(1, PickList_ng_container_5_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
141
|
-
i0.ɵɵelementContainerEnd();
|
142
|
-
} }
|
143
|
-
function PickList_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
144
|
-
i0.ɵɵelementContainer(0);
|
145
|
-
} }
|
146
|
-
function PickList_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
147
|
-
i0.ɵɵelementContainerStart(0);
|
148
|
-
i0.ɵɵtemplate(1, PickList_ng_container_6_ng_container_1_Template, 1, 0, "ng-container", 12);
|
149
|
-
i0.ɵɵelementContainerEnd();
|
150
|
-
} if (rf & 2) {
|
151
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
152
|
-
i0.ɵɵadvance();
|
153
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.sourceFilterTemplate || ctx_r2._sourceFilterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c23, ctx_r2.sourceFilterOptions));
|
154
|
-
} }
|
155
|
-
function PickList_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
156
|
-
i0.ɵɵelementContainer(0);
|
157
|
-
} }
|
158
|
-
function PickList_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
159
|
-
i0.ɵɵelementContainerStart(0);
|
160
|
-
i0.ɵɵtemplate(1, PickList_ng_container_7_ng_container_1_Template, 1, 0, "ng-container", 16);
|
161
|
-
i0.ɵɵelementContainerEnd();
|
162
|
-
} if (rf & 2) {
|
163
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
164
|
-
i0.ɵɵadvance();
|
165
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.sourceFilterIconTemplate || ctx_r2._sourceFilterIconTemplate);
|
166
|
-
} }
|
167
|
-
function PickList_div_8_Template(rf, ctx) { if (rf & 1) {
|
168
|
-
i0.ɵɵelementStart(0, "div", 17);
|
169
|
-
i0.ɵɵtext(1);
|
170
|
-
i0.ɵɵelementEnd();
|
171
|
-
} if (rf & 2) {
|
172
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
173
|
-
i0.ɵɵadvance();
|
174
|
-
i0.ɵɵtextInterpolate(ctx_r2.sourceHeader);
|
175
|
-
} }
|
176
|
-
function PickList_ng_container_9_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
177
|
-
i0.ɵɵelementContainer(0);
|
178
|
-
} }
|
179
|
-
function PickList_ng_container_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
180
|
-
i0.ɵɵtemplate(0, PickList_ng_container_9_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 12);
|
181
|
-
} if (rf & 2) {
|
182
|
-
const item_r5 = ctx.$implicit;
|
183
|
-
const index_r6 = ctx.index;
|
184
|
-
const selected_r7 = ctx.selected;
|
185
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
186
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate || ctx_r2._itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c24, item_r5, index_r6, selected_r7));
|
187
|
-
} }
|
188
|
-
function PickList_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
189
|
-
i0.ɵɵelementContainerStart(0);
|
190
|
-
i0.ɵɵtemplate(1, PickList_ng_container_9_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
191
|
-
i0.ɵɵelementContainerEnd();
|
192
|
-
} }
|
193
|
-
function PickList_ng_container_10_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
194
|
-
i0.ɵɵelementContainer(0);
|
195
|
-
} }
|
196
|
-
function PickList_ng_container_10_Template(rf, ctx) { if (rf & 1) {
|
197
|
-
i0.ɵɵelementContainerStart(0);
|
198
|
-
i0.ɵɵtemplate(1, PickList_ng_container_10_ng_container_1_Template, 1, 0, "ng-container", 16);
|
199
|
-
i0.ɵɵelementContainerEnd();
|
200
|
-
} if (rf & 2) {
|
201
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
202
|
-
i0.ɵɵadvance();
|
203
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.emptyFilterMessageSourceTemplate || ctx_r2._emptyFilterMessageSourceTemplate || ctx_r2.emptyMessageSourceTemplate || ctx_r2._emptyMessageSourceTemplate);
|
204
|
-
} }
|
205
|
-
function PickList_ng_container_13_AngleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
206
|
-
i0.ɵɵelement(0, "AngleRightIcon");
|
207
|
-
} if (rf & 2) {
|
208
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
209
|
-
} }
|
210
|
-
function PickList_ng_container_13_AngleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
211
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
212
|
-
} if (rf & 2) {
|
213
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
214
|
-
} }
|
215
|
-
function PickList_ng_container_13_Template(rf, ctx) { if (rf & 1) {
|
216
|
-
i0.ɵɵelementContainerStart(0);
|
217
|
-
i0.ɵɵtemplate(1, PickList_ng_container_13_AngleRightIcon_1_Template, 1, 1, "AngleRightIcon", 8)(2, PickList_ng_container_13_AngleDownIcon_2_Template, 1, 1, "AngleDownIcon", 8);
|
218
|
-
i0.ɵɵelementContainerEnd();
|
219
|
-
} if (rf & 2) {
|
220
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
221
|
-
i0.ɵɵadvance();
|
222
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
223
|
-
i0.ɵɵadvance();
|
224
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
225
|
-
} }
|
226
|
-
function PickList_14_ng_template_0_Template(rf, ctx) { }
|
227
|
-
function PickList_14_Template(rf, ctx) { if (rf & 1) {
|
228
|
-
i0.ɵɵtemplate(0, PickList_14_ng_template_0_Template, 0, 0, "ng-template");
|
229
|
-
} }
|
230
|
-
function PickList_ng_container_16_AngleDoubleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
231
|
-
i0.ɵɵelement(0, "AngleDoubleRightIcon");
|
232
|
-
} if (rf & 2) {
|
233
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
234
|
-
} }
|
235
|
-
function PickList_ng_container_16_AngleDoubleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
236
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
237
|
-
} if (rf & 2) {
|
238
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
239
|
-
} }
|
240
|
-
function PickList_ng_container_16_Template(rf, ctx) { if (rf & 1) {
|
241
|
-
i0.ɵɵelementContainerStart(0);
|
242
|
-
i0.ɵɵtemplate(1, PickList_ng_container_16_AngleDoubleRightIcon_1_Template, 1, 1, "AngleDoubleRightIcon", 8)(2, PickList_ng_container_16_AngleDoubleDownIcon_2_Template, 1, 1, "AngleDoubleDownIcon", 8);
|
243
|
-
i0.ɵɵelementContainerEnd();
|
244
|
-
} if (rf & 2) {
|
245
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
246
|
-
i0.ɵɵadvance();
|
247
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
248
|
-
i0.ɵɵadvance();
|
249
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
250
|
-
} }
|
251
|
-
function PickList_17_ng_template_0_Template(rf, ctx) { }
|
252
|
-
function PickList_17_Template(rf, ctx) { if (rf & 1) {
|
253
|
-
i0.ɵɵtemplate(0, PickList_17_ng_template_0_Template, 0, 0, "ng-template");
|
254
|
-
} }
|
255
|
-
function PickList_ng_container_19_AngleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
256
|
-
i0.ɵɵelement(0, "AngleLeftIcon");
|
257
|
-
} if (rf & 2) {
|
258
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
259
|
-
} }
|
260
|
-
function PickList_ng_container_19_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
261
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
262
|
-
} if (rf & 2) {
|
263
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
264
|
-
} }
|
265
|
-
function PickList_ng_container_19_Template(rf, ctx) { if (rf & 1) {
|
266
|
-
i0.ɵɵelementContainerStart(0);
|
267
|
-
i0.ɵɵtemplate(1, PickList_ng_container_19_AngleLeftIcon_1_Template, 1, 1, "AngleLeftIcon", 8)(2, PickList_ng_container_19_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8);
|
268
|
-
i0.ɵɵelementContainerEnd();
|
269
|
-
} if (rf & 2) {
|
270
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
271
|
-
i0.ɵɵadvance();
|
272
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
273
|
-
i0.ɵɵadvance();
|
274
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
275
|
-
} }
|
276
|
-
function PickList_20_ng_template_0_Template(rf, ctx) { }
|
277
|
-
function PickList_20_Template(rf, ctx) { if (rf & 1) {
|
278
|
-
i0.ɵɵtemplate(0, PickList_20_ng_template_0_Template, 0, 0, "ng-template");
|
279
|
-
} }
|
280
|
-
function PickList_ng_container_22_AngleDoubleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
281
|
-
i0.ɵɵelement(0, "AngleDoubleLeftIcon");
|
282
|
-
} if (rf & 2) {
|
283
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
284
|
-
} }
|
285
|
-
function PickList_ng_container_22_AngleDoubleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
286
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
287
|
-
} if (rf & 2) {
|
288
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
289
|
-
} }
|
290
|
-
function PickList_ng_container_22_Template(rf, ctx) { if (rf & 1) {
|
291
|
-
i0.ɵɵelementContainerStart(0);
|
292
|
-
i0.ɵɵtemplate(1, PickList_ng_container_22_AngleDoubleLeftIcon_1_Template, 1, 1, "AngleDoubleLeftIcon", 8)(2, PickList_ng_container_22_AngleDoubleUpIcon_2_Template, 1, 1, "AngleDoubleUpIcon", 8);
|
293
|
-
i0.ɵɵelementContainerEnd();
|
294
|
-
} if (rf & 2) {
|
295
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
296
|
-
i0.ɵɵadvance();
|
297
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
298
|
-
i0.ɵɵadvance();
|
299
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
300
|
-
} }
|
301
|
-
function PickList_23_ng_template_0_Template(rf, ctx) { }
|
302
|
-
function PickList_23_Template(rf, ctx) { if (rf & 1) {
|
303
|
-
i0.ɵɵtemplate(0, PickList_23_ng_template_0_Template, 0, 0, "ng-template");
|
304
|
-
} }
|
305
|
-
function PickList_ng_container_27_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
306
|
-
function PickList_ng_container_27_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
307
|
-
i0.ɵɵtemplate(0, PickList_ng_container_27_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
308
|
-
} }
|
309
|
-
function PickList_ng_container_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
310
|
-
i0.ɵɵtemplate(0, PickList_ng_container_27_ng_template_1_0_Template, 1, 0, null, 16);
|
311
|
-
} if (rf & 2) {
|
312
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
313
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.targetHeaderTemplate || ctx_r2._targetHeaderTemplate);
|
314
|
-
} }
|
315
|
-
function PickList_ng_container_27_Template(rf, ctx) { if (rf & 1) {
|
316
|
-
i0.ɵɵelementContainerStart(0);
|
317
|
-
i0.ɵɵtemplate(1, PickList_ng_container_27_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
318
|
-
i0.ɵɵelementContainerEnd();
|
319
|
-
} }
|
320
|
-
function PickList_ng_container_28_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
321
|
-
i0.ɵɵelementContainer(0);
|
322
|
-
} }
|
323
|
-
function PickList_ng_container_28_Template(rf, ctx) { if (rf & 1) {
|
324
|
-
i0.ɵɵelementContainerStart(0);
|
325
|
-
i0.ɵɵtemplate(1, PickList_ng_container_28_ng_container_1_Template, 1, 0, "ng-container", 12);
|
326
|
-
i0.ɵɵelementContainerEnd();
|
327
|
-
} if (rf & 2) {
|
328
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
329
|
-
i0.ɵɵadvance();
|
330
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.targetFilterTemplate || ctx_r2._targetFilterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c23, ctx_r2.targetFilterOptions));
|
331
|
-
} }
|
332
|
-
function PickList_ng_container_29_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
333
|
-
i0.ɵɵelementContainer(0);
|
334
|
-
} }
|
335
|
-
function PickList_ng_container_29_Template(rf, ctx) { if (rf & 1) {
|
336
|
-
i0.ɵɵelementContainerStart(0);
|
337
|
-
i0.ɵɵtemplate(1, PickList_ng_container_29_ng_container_1_Template, 1, 0, "ng-container", 16);
|
338
|
-
i0.ɵɵelementContainerEnd();
|
339
|
-
} if (rf & 2) {
|
340
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
341
|
-
i0.ɵɵadvance();
|
342
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.targetFilterIconTemplate || ctx_r2._targetFilterIconTemplate);
|
343
|
-
} }
|
344
|
-
function PickList_div_30_Template(rf, ctx) { if (rf & 1) {
|
345
|
-
i0.ɵɵelementStart(0, "div", 17);
|
346
|
-
i0.ɵɵtext(1);
|
347
|
-
i0.ɵɵelementEnd();
|
348
|
-
} if (rf & 2) {
|
349
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
350
|
-
i0.ɵɵadvance();
|
351
|
-
i0.ɵɵtextInterpolate(ctx_r2.targetHeader);
|
352
|
-
} }
|
353
|
-
function PickList_ng_container_31_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
354
|
-
i0.ɵɵelementContainer(0);
|
355
|
-
} }
|
356
|
-
function PickList_ng_container_31_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
357
|
-
i0.ɵɵtemplate(0, PickList_ng_container_31_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 12);
|
358
|
-
} if (rf & 2) {
|
359
|
-
const item_r8 = ctx.$implicit;
|
360
|
-
const index_r9 = ctx.index;
|
361
|
-
const selected_r10 = ctx.selected;
|
362
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
363
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate || ctx_r2._itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c24, item_r8, index_r9, selected_r10));
|
364
|
-
} }
|
365
|
-
function PickList_ng_container_31_Template(rf, ctx) { if (rf & 1) {
|
366
|
-
i0.ɵɵelementContainerStart(0);
|
367
|
-
i0.ɵɵtemplate(1, PickList_ng_container_31_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
368
|
-
i0.ɵɵelementContainerEnd();
|
369
|
-
} }
|
370
|
-
function PickList_ng_container_32_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
371
|
-
i0.ɵɵelementContainer(0);
|
372
|
-
} }
|
373
|
-
function PickList_ng_container_32_Template(rf, ctx) { if (rf & 1) {
|
374
|
-
i0.ɵɵelementContainerStart(0);
|
375
|
-
i0.ɵɵtemplate(1, PickList_ng_container_32_ng_container_1_Template, 1, 0, "ng-container", 16);
|
376
|
-
i0.ɵɵelementContainerEnd();
|
377
|
-
} if (rf & 2) {
|
378
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
379
|
-
i0.ɵɵadvance();
|
380
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.emptyFilterMessageTargetTemplate || ctx_r2._emptyFilterMessageTargetTemplate || ctx_r2.emptyMessageTargetTemplate || ctx_r2._emptyMessageTargetTemplate);
|
381
|
-
} }
|
382
|
-
function PickList_div_33_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
383
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
384
|
-
} if (rf & 2) {
|
385
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
386
|
-
} }
|
387
|
-
function PickList_div_33_3_ng_template_0_Template(rf, ctx) { }
|
388
|
-
function PickList_div_33_3_Template(rf, ctx) { if (rf & 1) {
|
389
|
-
i0.ɵɵtemplate(0, PickList_div_33_3_ng_template_0_Template, 0, 0, "ng-template");
|
390
|
-
} }
|
391
|
-
function PickList_div_33_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
392
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
393
|
-
} if (rf & 2) {
|
394
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
395
|
-
} }
|
396
|
-
function PickList_div_33_6_ng_template_0_Template(rf, ctx) { }
|
397
|
-
function PickList_div_33_6_Template(rf, ctx) { if (rf & 1) {
|
398
|
-
i0.ɵɵtemplate(0, PickList_div_33_6_ng_template_0_Template, 0, 0, "ng-template");
|
399
|
-
} }
|
400
|
-
function PickList_div_33_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
401
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
402
|
-
} if (rf & 2) {
|
403
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
404
|
-
} }
|
405
|
-
function PickList_div_33_9_ng_template_0_Template(rf, ctx) { }
|
406
|
-
function PickList_div_33_9_Template(rf, ctx) { if (rf & 1) {
|
407
|
-
i0.ɵɵtemplate(0, PickList_div_33_9_ng_template_0_Template, 0, 0, "ng-template");
|
408
|
-
} }
|
409
|
-
function PickList_div_33_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
410
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
411
|
-
} if (rf & 2) {
|
412
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
413
|
-
} }
|
414
|
-
function PickList_div_33_12_ng_template_0_Template(rf, ctx) { }
|
415
|
-
function PickList_div_33_12_Template(rf, ctx) { if (rf & 1) {
|
416
|
-
i0.ɵɵtemplate(0, PickList_div_33_12_ng_template_0_Template, 0, 0, "ng-template");
|
417
|
-
} }
|
418
|
-
function PickList_div_33_Template(rf, ctx) { if (rf & 1) {
|
419
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
420
|
-
i0.ɵɵelementStart(0, "div", 18)(1, "button", 11);
|
421
|
-
i0.ɵɵlistener("click", function PickList_div_33_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(26); return i0.ɵɵresetView(ctx_r2.moveUp(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
422
|
-
i0.ɵɵtemplate(2, PickList_div_33_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_33_3_Template, 1, 0, null, 16);
|
423
|
-
i0.ɵɵelementEnd();
|
424
|
-
i0.ɵɵelementStart(4, "button", 11);
|
425
|
-
i0.ɵɵlistener("click", function PickList_div_33_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(26); return i0.ɵɵresetView(ctx_r2.moveTop(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
426
|
-
i0.ɵɵtemplate(5, PickList_div_33_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_33_6_Template, 1, 0, null, 16);
|
427
|
-
i0.ɵɵelementEnd();
|
428
|
-
i0.ɵɵelementStart(7, "button", 11);
|
429
|
-
i0.ɵɵlistener("click", function PickList_div_33_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(26); return i0.ɵɵresetView(ctx_r2.moveDown(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
430
|
-
i0.ɵɵtemplate(8, PickList_div_33_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_33_9_Template, 1, 0, null, 16);
|
431
|
-
i0.ɵɵelementEnd();
|
432
|
-
i0.ɵɵelementStart(10, "button", 11);
|
433
|
-
i0.ɵɵlistener("click", function PickList_div_33_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(26); return i0.ɵɵresetView(ctx_r2.moveBottom(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
434
|
-
i0.ɵɵtemplate(11, PickList_div_33_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_33_12_Template, 1, 0, null, 16);
|
435
|
-
i0.ɵɵelementEnd()();
|
436
|
-
} if (rf & 2) {
|
437
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
438
|
-
i0.ɵɵattribute("data-pc-section", "targetControls")("data-pc-group-section", "controls");
|
439
|
-
i0.ɵɵadvance();
|
440
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
441
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "targetMoveUpButton");
|
442
|
-
i0.ɵɵadvance();
|
443
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate && !ctx_r2._moveUpIconTemplate);
|
444
|
-
i0.ɵɵadvance();
|
445
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate || ctx_r2._moveUpIconTemplate);
|
446
|
-
i0.ɵɵadvance();
|
447
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
448
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "targetMoveTopButton");
|
449
|
-
i0.ɵɵadvance();
|
450
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate && !ctx_r2._moveTopIconTemplate);
|
451
|
-
i0.ɵɵadvance();
|
452
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate || ctx_r2.moveTopIconTemplate);
|
453
|
-
i0.ɵɵadvance();
|
454
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
455
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "targetMoveDownButton");
|
456
|
-
i0.ɵɵadvance();
|
457
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate && !ctx_r2._moveDownIconTemplate);
|
458
|
-
i0.ɵɵadvance();
|
459
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate || ctx_r2._moveDownIconTemplate);
|
460
|
-
i0.ɵɵadvance();
|
461
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
462
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "targetMoveBottomButton");
|
463
|
-
i0.ɵɵadvance();
|
464
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate && !ctx_r2._moveBottomIconTemplate);
|
465
|
-
i0.ɵɵadvance();
|
466
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate || ctx_r2._moveBottomIconTemplate);
|
467
|
-
} }
|
468
|
-
/**
|
469
|
-
* PickList is used to reorder items between different lists.
|
470
|
-
* @group Components
|
471
|
-
*/
|
472
|
-
export class PickList extends BaseComponent {
|
473
|
-
/**
|
474
|
-
* An array of objects for the source list.
|
475
|
-
* @group Props
|
476
|
-
*/
|
477
|
-
source;
|
478
|
-
/**
|
479
|
-
* An array of objects for the target list.
|
480
|
-
* @group Props
|
481
|
-
*/
|
482
|
-
target;
|
483
|
-
/**
|
484
|
-
* Text for the source list caption
|
485
|
-
* @group Props
|
486
|
-
*/
|
487
|
-
sourceHeader;
|
488
|
-
/**
|
489
|
-
* Index of the element in tabbing order.
|
490
|
-
* @group Props
|
491
|
-
*/
|
492
|
-
tabindex = 0;
|
493
|
-
/**
|
494
|
-
* Defines a string that labels the move to right button for accessibility.
|
495
|
-
* @group Props
|
496
|
-
*/
|
497
|
-
rightButtonAriaLabel;
|
498
|
-
/**
|
499
|
-
* Defines a string that labels the move to left button for accessibility.
|
500
|
-
* @group Props
|
501
|
-
*/
|
502
|
-
leftButtonAriaLabel;
|
503
|
-
/**
|
504
|
-
* Defines a string that labels the move to all right button for accessibility.
|
505
|
-
* @group Props
|
506
|
-
*/
|
507
|
-
allRightButtonAriaLabel;
|
508
|
-
/**
|
509
|
-
* Defines a string that labels the move to all left button for accessibility.
|
510
|
-
* @group Props
|
511
|
-
*/
|
512
|
-
allLeftButtonAriaLabel;
|
513
|
-
/**
|
514
|
-
* Defines a string that labels the move to up button for accessibility.
|
515
|
-
* @group Props
|
516
|
-
*/
|
517
|
-
upButtonAriaLabel;
|
518
|
-
/**
|
519
|
-
* Defines a string that labels the move to down button for accessibility.
|
520
|
-
* @group Props
|
521
|
-
*/
|
522
|
-
downButtonAriaLabel;
|
523
|
-
/**
|
524
|
-
* Defines a string that labels the move to top button for accessibility.
|
525
|
-
* @group Props
|
526
|
-
*/
|
527
|
-
topButtonAriaLabel;
|
528
|
-
/**
|
529
|
-
* Defines a string that labels the move to bottom button for accessibility.
|
530
|
-
* @group Props
|
531
|
-
*/
|
532
|
-
bottomButtonAriaLabel;
|
533
|
-
/**
|
534
|
-
* Text for the target list caption
|
535
|
-
* @group Props
|
536
|
-
*/
|
537
|
-
targetHeader;
|
538
|
-
/**
|
539
|
-
* When enabled orderlist adjusts its controls based on screen size.
|
540
|
-
* @group Props
|
541
|
-
*/
|
542
|
-
responsive;
|
543
|
-
/**
|
544
|
-
* When specified displays an input field to filter the items on keyup and decides which field to search (Accepts multiple fields with a comma).
|
545
|
-
* @group Props
|
546
|
-
*/
|
547
|
-
filterBy;
|
548
|
-
/**
|
549
|
-
* Locale to use in filtering. The default locale is the host environment's current locale.
|
550
|
-
* @group Props
|
551
|
-
*/
|
552
|
-
filterLocale;
|
553
|
-
/**
|
554
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity. Use sourceTrackBy or targetTrackBy in case different algorithms are needed per list.
|
555
|
-
* @group Props
|
556
|
-
*/
|
557
|
-
trackBy = (index, item) => item;
|
558
|
-
/**
|
559
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in source list, default algorithm checks for object identity.
|
560
|
-
* @group Props
|
561
|
-
*/
|
562
|
-
sourceTrackBy;
|
563
|
-
/**
|
564
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in target list, default algorithm checks for object identity.
|
565
|
-
* @group Props
|
566
|
-
*/
|
567
|
-
targetTrackBy;
|
568
|
-
/**
|
569
|
-
* Whether to show filter input for source list when filterBy is enabled.
|
570
|
-
* @group Props
|
571
|
-
*/
|
572
|
-
showSourceFilter = true;
|
573
|
-
/**
|
574
|
-
* Whether to show filter input for target list when filterBy is enabled.
|
575
|
-
* @group Props
|
576
|
-
*/
|
577
|
-
showTargetFilter = true;
|
578
|
-
/**
|
579
|
-
* Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
|
580
|
-
* @group Props
|
581
|
-
*/
|
582
|
-
metaKeySelection = false;
|
583
|
-
/**
|
584
|
-
* Whether to enable dragdrop based reordering.
|
585
|
-
* @group Props
|
586
|
-
*/
|
587
|
-
dragdrop = false;
|
588
|
-
/**
|
589
|
-
* Inline style of the component.
|
590
|
-
* @group Props
|
591
|
-
*/
|
592
|
-
style;
|
593
|
-
/**
|
594
|
-
* Style class of the component.
|
595
|
-
* @group Props
|
596
|
-
*/
|
597
|
-
styleClass;
|
598
|
-
/**
|
599
|
-
* Inline style of the source list element.
|
600
|
-
* @group Props
|
601
|
-
*/
|
602
|
-
sourceStyle;
|
603
|
-
/**
|
604
|
-
* Inline style of the target list element.
|
605
|
-
* @group Props
|
606
|
-
*/
|
607
|
-
targetStyle;
|
608
|
-
/**
|
609
|
-
* Whether to show buttons of source list.
|
610
|
-
* @group Props
|
611
|
-
*/
|
612
|
-
showSourceControls = true;
|
613
|
-
/**
|
614
|
-
* Whether to show buttons of target list.
|
615
|
-
* @group Props
|
616
|
-
*/
|
617
|
-
showTargetControls = true;
|
618
|
-
/**
|
619
|
-
* Placeholder text on source filter input.
|
620
|
-
* @group Props
|
621
|
-
*/
|
622
|
-
sourceFilterPlaceholder;
|
623
|
-
/**
|
624
|
-
* Placeholder text on target filter input.
|
625
|
-
* @group Props
|
626
|
-
*/
|
627
|
-
targetFilterPlaceholder;
|
628
|
-
/**
|
629
|
-
* When present, it specifies that the component should be disabled.
|
630
|
-
* @group Props
|
631
|
-
*/
|
632
|
-
disabled = false;
|
633
|
-
/**
|
634
|
-
* Defines a string that labels the filter input of source list.
|
635
|
-
* @group Props
|
636
|
-
*/
|
637
|
-
ariaSourceFilterLabel;
|
638
|
-
/**
|
639
|
-
* Defines a string that labels the filter input of target list.
|
640
|
-
* @group Props
|
641
|
-
*/
|
642
|
-
ariaTargetFilterLabel;
|
643
|
-
/**
|
644
|
-
* Defines how the items are filtered.
|
645
|
-
* @group Props
|
646
|
-
*/
|
647
|
-
filterMatchMode = 'contains';
|
648
|
-
/**
|
649
|
-
* Whether to displays rows with alternating colors.
|
650
|
-
* @group Props
|
651
|
-
*/
|
652
|
-
stripedRows;
|
653
|
-
/**
|
654
|
-
* Keeps selection on the transfer list.
|
655
|
-
* @group Props
|
656
|
-
*/
|
657
|
-
keepSelection = false;
|
658
|
-
/**
|
659
|
-
* Height of the viewport, a scrollbar is defined if height of list exceeds this value.
|
660
|
-
* @group Props
|
661
|
-
*/
|
662
|
-
scrollHeight = '14rem';
|
663
|
-
/**
|
664
|
-
* Whether to focus on the first visible or selected element.
|
665
|
-
* @group Props
|
666
|
-
*/
|
667
|
-
autoOptionFocus = true;
|
668
|
-
/**
|
669
|
-
* Used to pass all properties of the ButtonProps to the Button component.
|
670
|
-
* @group Props
|
671
|
-
*/
|
672
|
-
buttonProps = { severity: 'secondary' };
|
673
|
-
/**
|
674
|
-
* Used to pass all properties of the ButtonProps to the move up button inside the component.
|
675
|
-
* @group Props
|
676
|
-
*/
|
677
|
-
moveUpButtonProps;
|
678
|
-
/**
|
679
|
-
* Used to pass all properties of the ButtonProps to the move top button inside the component.
|
680
|
-
* @group Props
|
681
|
-
*/
|
682
|
-
moveTopButtonProps;
|
683
|
-
/**
|
684
|
-
* Used to pass all properties of the ButtonProps to the move down button inside the component.
|
685
|
-
* @group Props
|
686
|
-
*/
|
687
|
-
moveDownButtonProps;
|
688
|
-
/**
|
689
|
-
* Used to pass all properties of the ButtonProps to the move bottom button inside the component.
|
690
|
-
* @group Props
|
691
|
-
*/
|
692
|
-
moveBottomButtonProps;
|
693
|
-
/**
|
694
|
-
* Used to pass all properties of the ButtonProps to the move to target button inside the component.
|
695
|
-
* @group Props
|
696
|
-
*/
|
697
|
-
moveToTargetProps;
|
698
|
-
/**
|
699
|
-
* Used to pass all properties of the ButtonProps to the move all to target button inside the component.
|
700
|
-
* @group Props
|
701
|
-
*/
|
702
|
-
moveAllToTargetProps;
|
703
|
-
/**
|
704
|
-
* Used to pass all properties of the ButtonProps to the move to source button inside the component.
|
705
|
-
* @group Props
|
706
|
-
*/
|
707
|
-
moveToSourceProps;
|
708
|
-
/**
|
709
|
-
* Used to pass all properties of the ButtonProps to the move all to source button inside the component.
|
710
|
-
* @group Props
|
711
|
-
*/
|
712
|
-
moveAllToSourceProps;
|
713
|
-
/**
|
714
|
-
* Indicates the width of the screen at which the component should change its behavior.
|
715
|
-
* @group Props
|
716
|
-
*/
|
717
|
-
get breakpoint() {
|
718
|
-
return this._breakpoint;
|
719
|
-
}
|
720
|
-
set breakpoint(value) {
|
721
|
-
if (value !== this._breakpoint) {
|
722
|
-
this._breakpoint = value;
|
723
|
-
if (isPlatformBrowser(this.platformId)) {
|
724
|
-
this.destroyMedia();
|
725
|
-
this.initMedia();
|
726
|
-
}
|
727
|
-
}
|
728
|
-
}
|
729
|
-
/**
|
730
|
-
* Callback to invoke when items are moved from target to source.
|
731
|
-
* @param {PickListMoveToSourceEvent} event - Custom move to source event.
|
732
|
-
* @group Emits
|
733
|
-
*/
|
734
|
-
onMoveToSource = new EventEmitter();
|
735
|
-
/**
|
736
|
-
* Callback to invoke when all items are moved from target to source.
|
737
|
-
* @param {PickListMoveAllToSourceEvent} event - Custom move all to source event.
|
738
|
-
* @group Emits
|
739
|
-
*/
|
740
|
-
onMoveAllToSource = new EventEmitter();
|
741
|
-
/**
|
742
|
-
* Callback to invoke when all items are moved from source to target.
|
743
|
-
* @param {PickListMoveAllToTargetEvent} event - Custom move all to target event.
|
744
|
-
* @group Emits
|
745
|
-
*/
|
746
|
-
onMoveAllToTarget = new EventEmitter();
|
747
|
-
/**
|
748
|
-
* Callback to invoke when items are moved from source to target.
|
749
|
-
* @param {PickListMoveToTargetEvent} event - Custom move to target event.
|
750
|
-
* @group Emits
|
751
|
-
*/
|
752
|
-
onMoveToTarget = new EventEmitter();
|
753
|
-
/**
|
754
|
-
* Callback to invoke when items are reordered within source list.
|
755
|
-
* @param {PickListSourceReorderEvent} event - Custom source reorder event.
|
756
|
-
* @group Emits
|
757
|
-
*/
|
758
|
-
onSourceReorder = new EventEmitter();
|
759
|
-
/**
|
760
|
-
* Callback to invoke when items are reordered within target list.
|
761
|
-
* @param {PickListTargetReorderEvent} event - Custom target reorder event.
|
762
|
-
* @group Emits
|
763
|
-
*/
|
764
|
-
onTargetReorder = new EventEmitter();
|
765
|
-
/**
|
766
|
-
* Callback to invoke when items are selected within source list.
|
767
|
-
* @param {PickListSourceSelectEvent} event - Custom source select event.
|
768
|
-
* @group Emits
|
769
|
-
*/
|
770
|
-
onSourceSelect = new EventEmitter();
|
771
|
-
/**
|
772
|
-
* Callback to invoke when items are selected within target list.
|
773
|
-
* @param {PickListTargetSelectEvent} event - Custom target select event.
|
774
|
-
* @group Emits
|
775
|
-
*/
|
776
|
-
onTargetSelect = new EventEmitter();
|
777
|
-
/**
|
778
|
-
* Callback to invoke when the source list is filtered
|
779
|
-
* @param {PickListSourceFilterEvent} event - Custom source filter event.
|
780
|
-
* @group Emits
|
781
|
-
*/
|
782
|
-
onSourceFilter = new EventEmitter();
|
783
|
-
/**
|
784
|
-
* Callback to invoke when the target list is filtered
|
785
|
-
* @param {PickListTargetFilterEvent} event - Custom target filter event.
|
786
|
-
* @group Emits
|
787
|
-
*/
|
788
|
-
onTargetFilter = new EventEmitter();
|
789
|
-
/**
|
790
|
-
* Callback to invoke when the list is focused
|
791
|
-
* @param {Event} event - Browser event.
|
792
|
-
* @group Emits
|
793
|
-
*/
|
794
|
-
onFocus = new EventEmitter();
|
795
|
-
/**
|
796
|
-
* Callback to invoke when the list is blurred
|
797
|
-
* @param {Event} event - Browser event.
|
798
|
-
* @group Emits
|
799
|
-
*/
|
800
|
-
onBlur = new EventEmitter();
|
801
|
-
listViewSourceChild;
|
802
|
-
listViewTargetChild;
|
803
|
-
sourceFilterViewChild;
|
804
|
-
targetFilterViewChild;
|
805
|
-
getButtonProps(direction) {
|
806
|
-
switch (direction) {
|
807
|
-
case 'moveup':
|
808
|
-
return { ...this.buttonProps, ...this.moveUpButtonProps };
|
809
|
-
case 'movetop':
|
810
|
-
return { ...this.buttonProps, ...this.moveTopButtonProps };
|
811
|
-
case 'movedown':
|
812
|
-
return { ...this.buttonProps, ...this.moveDownButtonProps };
|
813
|
-
case 'movebottom':
|
814
|
-
return { ...this.buttonProps, ...this.moveBottomButtonProps };
|
815
|
-
case 'movetotarget':
|
816
|
-
return { ...this.buttonProps, ...this.moveToTargetProps };
|
817
|
-
case 'movealltotarget':
|
818
|
-
return { ...this.buttonProps, ...this.moveAllToTargetProps };
|
819
|
-
case 'movetosource':
|
820
|
-
return { ...this.buttonProps, ...this.moveToSourceProps };
|
821
|
-
case 'movealltosource':
|
822
|
-
return { ...this.buttonProps, ...this.moveAllToSourceProps };
|
823
|
-
default:
|
824
|
-
return this.buttonProps;
|
825
|
-
}
|
826
|
-
}
|
827
|
-
get moveUpAriaLabel() {
|
828
|
-
return this.upButtonAriaLabel ? this.upButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveUp : undefined;
|
829
|
-
}
|
830
|
-
get moveTopAriaLabel() {
|
831
|
-
return this.topButtonAriaLabel ? this.topButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveTop : undefined;
|
832
|
-
}
|
833
|
-
get moveDownAriaLabel() {
|
834
|
-
return this.downButtonAriaLabel ? this.downButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
835
|
-
}
|
836
|
-
get moveBottomAriaLabel() {
|
837
|
-
return this.bottomButtonAriaLabel ? this.bottomButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
838
|
-
}
|
839
|
-
get moveToTargetAriaLabel() {
|
840
|
-
return this.rightButtonAriaLabel ? this.rightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToTarget : undefined;
|
841
|
-
}
|
842
|
-
get moveAllToTargetAriaLabel() {
|
843
|
-
return this.allRightButtonAriaLabel ? this.allRightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToTarget : undefined;
|
844
|
-
}
|
845
|
-
get moveToSourceAriaLabel() {
|
846
|
-
return this.leftButtonAriaLabel ? this.leftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToSource : undefined;
|
847
|
-
}
|
848
|
-
get moveAllToSourceAriaLabel() {
|
849
|
-
return this.allLeftButtonAriaLabel ? this.allLeftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToSource : undefined;
|
850
|
-
}
|
851
|
-
get idSource() {
|
852
|
-
return this.id + '_source';
|
853
|
-
}
|
854
|
-
get idTarget() {
|
855
|
-
return this.id + '_target';
|
856
|
-
}
|
857
|
-
get focusedOptionId() {
|
858
|
-
return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;
|
859
|
-
}
|
860
|
-
_breakpoint = '960px';
|
861
|
-
visibleOptionsSource;
|
862
|
-
visibleOptionsTarget;
|
863
|
-
selectedItemsSource = [];
|
864
|
-
selectedItemsTarget = [];
|
865
|
-
reorderedListElement;
|
866
|
-
movedUp;
|
867
|
-
movedDown;
|
868
|
-
itemTouched;
|
869
|
-
styleElement;
|
870
|
-
id = uuid('pn_id_');
|
871
|
-
filterValueSource;
|
872
|
-
filterValueTarget;
|
873
|
-
fromListType;
|
874
|
-
sourceFilterOptions;
|
875
|
-
targetFilterOptions;
|
876
|
-
SOURCE_LIST = -1;
|
877
|
-
TARGET_LIST = 1;
|
878
|
-
window;
|
879
|
-
media;
|
880
|
-
viewChanged;
|
881
|
-
focusedOptionIndex = -1;
|
882
|
-
focusedOption;
|
883
|
-
focused = {
|
884
|
-
sourceList: false,
|
885
|
-
targetList: false
|
886
|
-
};
|
887
|
-
_componentStyle = inject(PickListStyle);
|
888
|
-
mediaChangeListener;
|
889
|
-
filterService = inject(FilterService);
|
890
|
-
ngOnInit() {
|
891
|
-
super.ngOnInit();
|
892
|
-
if (this.responsive) {
|
893
|
-
this.createStyle();
|
894
|
-
this.initMedia();
|
895
|
-
}
|
896
|
-
if (this.filterBy) {
|
897
|
-
this.sourceFilterOptions = {
|
898
|
-
filter: (value) => this.filterSource(value),
|
899
|
-
reset: () => this.resetSourceFilter()
|
900
|
-
};
|
901
|
-
this.targetFilterOptions = {
|
902
|
-
filter: (value) => this.filterTarget(value),
|
903
|
-
reset: () => this.resetTargetFilter()
|
904
|
-
};
|
905
|
-
}
|
906
|
-
}
|
907
|
-
/**
|
908
|
-
* Custom item template.
|
909
|
-
* @group Templates
|
910
|
-
*/
|
911
|
-
itemTemplate;
|
912
|
-
/**
|
913
|
-
* Custom source header template.
|
914
|
-
* @group Templates
|
915
|
-
*/
|
916
|
-
sourceHeaderTemplate;
|
917
|
-
/**
|
918
|
-
* Custom target header template.
|
919
|
-
* @group Templates
|
920
|
-
*/
|
921
|
-
targetHeaderTemplate;
|
922
|
-
/**
|
923
|
-
* Custom source filter template.
|
924
|
-
* @group Templates
|
925
|
-
*/
|
926
|
-
sourceFilterTemplate;
|
927
|
-
/**
|
928
|
-
* Custom target filter template.
|
929
|
-
* @group Templates
|
930
|
-
*/
|
931
|
-
targetFilterTemplate;
|
932
|
-
/**
|
933
|
-
* Custom empty message when source is empty template.
|
934
|
-
* @group Templates
|
935
|
-
*/
|
936
|
-
emptyMessageSourceTemplate;
|
937
|
-
/**
|
938
|
-
* Custom empty filter message when source is empty template.
|
939
|
-
* @group Templates
|
940
|
-
*/
|
941
|
-
emptyFilterMessageSourceTemplate;
|
942
|
-
/**
|
943
|
-
* Custom empty message when target is empty template.
|
944
|
-
* @group Templates
|
945
|
-
*/
|
946
|
-
emptyMessageTargetTemplate;
|
947
|
-
/**
|
948
|
-
* Custom empty filter message when target is empty template.
|
949
|
-
* @group Templates
|
950
|
-
*/
|
951
|
-
emptyFilterMessageTargetTemplate;
|
952
|
-
/**
|
953
|
-
* Custom move up icon template.
|
954
|
-
* @group Templates
|
955
|
-
*/
|
956
|
-
moveUpIconTemplate;
|
957
|
-
/**
|
958
|
-
* Custom move top icon template.
|
959
|
-
* @group Templates
|
960
|
-
*/
|
961
|
-
moveTopIconTemplate;
|
962
|
-
/**
|
963
|
-
* Custom move down icon template.
|
964
|
-
* @group Templates
|
965
|
-
*/
|
966
|
-
moveDownIconTemplate;
|
967
|
-
/**
|
968
|
-
* Custom move bottom icon template.
|
969
|
-
* @group Templates
|
970
|
-
*/
|
971
|
-
moveBottomIconTemplate;
|
972
|
-
/**
|
973
|
-
* Custom move to target icon template.
|
974
|
-
* @group Templates
|
975
|
-
*/
|
976
|
-
moveToTargetIconTemplate;
|
977
|
-
/**
|
978
|
-
* Custom move all to target icon template.
|
979
|
-
* @group Templates
|
980
|
-
*/
|
981
|
-
moveAllToTargetIconTemplate;
|
982
|
-
/**
|
983
|
-
* Custom move to source icon template.
|
984
|
-
* @group Templates
|
985
|
-
*/
|
986
|
-
moveToSourceIconTemplate;
|
987
|
-
/**
|
988
|
-
* Custom move all to source icon template.
|
989
|
-
* @group Templates
|
990
|
-
*/
|
991
|
-
moveAllToSourceIconTemplate;
|
992
|
-
/**
|
993
|
-
* Custom target filter icon template.
|
994
|
-
* @group Templates
|
995
|
-
*/
|
996
|
-
targetFilterIconTemplate;
|
997
|
-
/**
|
998
|
-
* Custom source filter icon template.
|
999
|
-
* @group Templates
|
1000
|
-
*/
|
1001
|
-
sourceFilterIconTemplate;
|
1002
|
-
templates;
|
1003
|
-
_itemTemplate;
|
1004
|
-
_sourceHeaderTemplate;
|
1005
|
-
_targetHeaderTemplate;
|
1006
|
-
_sourceFilterTemplate;
|
1007
|
-
_targetFilterTemplate;
|
1008
|
-
_emptyMessageSourceTemplate;
|
1009
|
-
_emptyFilterMessageSourceTemplate;
|
1010
|
-
_emptyMessageTargetTemplate;
|
1011
|
-
_emptyFilterMessageTargetTemplate;
|
1012
|
-
_moveUpIconTemplate;
|
1013
|
-
_moveTopIconTemplate;
|
1014
|
-
_moveDownIconTemplate;
|
1015
|
-
_moveBottomIconTemplate;
|
1016
|
-
_moveToTargetIconTemplate;
|
1017
|
-
_moveAllToTargetIconTemplate;
|
1018
|
-
_moveToSourceIconTemplate;
|
1019
|
-
_moveAllToSourceIconTemplate;
|
1020
|
-
_targetFilterIconTemplate;
|
1021
|
-
_sourceFilterIconTemplate;
|
1022
|
-
ngAfterContentInit() {
|
1023
|
-
this.templates.forEach((item) => {
|
1024
|
-
switch (item.getType()) {
|
1025
|
-
case 'item':
|
1026
|
-
this._itemTemplate = item.template;
|
1027
|
-
break;
|
1028
|
-
case 'option':
|
1029
|
-
this._itemTemplate = item.template;
|
1030
|
-
break;
|
1031
|
-
case 'sourceHeader':
|
1032
|
-
this._sourceHeaderTemplate = item.template;
|
1033
|
-
break;
|
1034
|
-
case 'targetHeader':
|
1035
|
-
this._targetHeaderTemplate = item.template;
|
1036
|
-
break;
|
1037
|
-
case 'sourceFilter':
|
1038
|
-
this._sourceFilterTemplate = item.template;
|
1039
|
-
break;
|
1040
|
-
case 'targetFilter':
|
1041
|
-
this._targetFilterTemplate = item.template;
|
1042
|
-
break;
|
1043
|
-
case 'emptymessagesource':
|
1044
|
-
this._emptyMessageSourceTemplate = item.template;
|
1045
|
-
break;
|
1046
|
-
case 'emptyfiltermessagesource':
|
1047
|
-
this._emptyFilterMessageSourceTemplate = item.template;
|
1048
|
-
break;
|
1049
|
-
case 'emptymessagetarget':
|
1050
|
-
this._emptyMessageTargetTemplate = item.template;
|
1051
|
-
break;
|
1052
|
-
case 'emptyfiltermessagetarget':
|
1053
|
-
this._emptyFilterMessageTargetTemplate = item.template;
|
1054
|
-
break;
|
1055
|
-
case 'moveupicon':
|
1056
|
-
this._moveUpIconTemplate = item.template;
|
1057
|
-
break;
|
1058
|
-
case 'movetopicon':
|
1059
|
-
this._moveTopIconTemplate = item.template;
|
1060
|
-
break;
|
1061
|
-
case 'movedownicon':
|
1062
|
-
this._moveDownIconTemplate = item.template;
|
1063
|
-
break;
|
1064
|
-
case 'movebottomicon':
|
1065
|
-
this._moveBottomIconTemplate = item.template;
|
1066
|
-
break;
|
1067
|
-
case 'movetotargeticon':
|
1068
|
-
this._moveToTargetIconTemplate = item.template;
|
1069
|
-
break;
|
1070
|
-
case 'movealltotargeticon':
|
1071
|
-
this._moveAllToTargetIconTemplate = item.template;
|
1072
|
-
break;
|
1073
|
-
case 'movetosourceicon':
|
1074
|
-
this._moveToSourceIconTemplate = item.template;
|
1075
|
-
break;
|
1076
|
-
case 'movealltosourceicon':
|
1077
|
-
this._moveAllToSourceIconTemplate = item.template;
|
1078
|
-
break;
|
1079
|
-
case 'targetfiltericon':
|
1080
|
-
this._targetFilterIconTemplate = item.template;
|
1081
|
-
break;
|
1082
|
-
case 'sourcefiltericon':
|
1083
|
-
this._sourceFilterIconTemplate = item.template;
|
1084
|
-
break;
|
1085
|
-
default:
|
1086
|
-
this._itemTemplate = item.template;
|
1087
|
-
break;
|
1088
|
-
}
|
1089
|
-
});
|
1090
|
-
}
|
1091
|
-
ngAfterViewChecked() {
|
1092
|
-
if (this.movedUp || this.movedDown) {
|
1093
|
-
let listItems = find(this.reorderedListElement, 'li.p-highlight');
|
1094
|
-
let listItem;
|
1095
|
-
if (this.movedUp)
|
1096
|
-
listItem = listItems[0];
|
1097
|
-
else
|
1098
|
-
listItem = listItems[listItems.length - 1];
|
1099
|
-
scrollInView(this.reorderedListElement, listItem);
|
1100
|
-
this.movedUp = false;
|
1101
|
-
this.movedDown = false;
|
1102
|
-
this.reorderedListElement = null;
|
1103
|
-
}
|
1104
|
-
}
|
1105
|
-
onItemClick(event, item, selectedItems, listType, callback, itemId) {
|
1106
|
-
if (this.disabled) {
|
1107
|
-
return;
|
1108
|
-
}
|
1109
|
-
let index = this.findIndexInList(item, selectedItems);
|
1110
|
-
if (itemId)
|
1111
|
-
this.focusedOptionIndex = itemId;
|
1112
|
-
let selected = index != -1;
|
1113
|
-
let metaSelection = this.itemTouched ? false : this.metaKeySelection;
|
1114
|
-
if (metaSelection) {
|
1115
|
-
let metaKey = event.metaKey || event.ctrlKey || event.shiftKey;
|
1116
|
-
if (selected && metaKey) {
|
1117
|
-
selectedItems = selectedItems.filter((_, i) => i !== index);
|
1118
|
-
}
|
1119
|
-
else {
|
1120
|
-
if (!metaKey) {
|
1121
|
-
selectedItems = [];
|
1122
|
-
}
|
1123
|
-
selectedItems.push(item);
|
1124
|
-
}
|
1125
|
-
}
|
1126
|
-
else {
|
1127
|
-
if (selected) {
|
1128
|
-
selectedItems = selectedItems.filter((_, i) => i !== index); // Creating a new array without the selected item
|
1129
|
-
}
|
1130
|
-
else {
|
1131
|
-
selectedItems.push(item);
|
1132
|
-
}
|
1133
|
-
}
|
1134
|
-
this.setSelectionList(listType, selectedItems);
|
1135
|
-
callback.emit({ originalEvent: event, items: selectedItems });
|
1136
|
-
this.itemTouched = false;
|
1137
|
-
}
|
1138
|
-
onOptionMouseDown(index, listType) {
|
1139
|
-
this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = true;
|
1140
|
-
this.focusedOptionIndex = index;
|
1141
|
-
}
|
1142
|
-
onSourceItemDblClick() {
|
1143
|
-
if (this.disabled) {
|
1144
|
-
return;
|
1145
|
-
}
|
1146
|
-
this.moveRight();
|
1147
|
-
this.viewChildMarkForCheck();
|
1148
|
-
}
|
1149
|
-
onTargetItemDblClick() {
|
1150
|
-
if (this.disabled) {
|
1151
|
-
return;
|
1152
|
-
}
|
1153
|
-
this.moveLeft();
|
1154
|
-
this.viewChildMarkForCheck();
|
1155
|
-
}
|
1156
|
-
onFilter(event, listType) {
|
1157
|
-
let query = event.target.value;
|
1158
|
-
if (listType === this.SOURCE_LIST)
|
1159
|
-
this.filterSource(query);
|
1160
|
-
else if (listType === this.TARGET_LIST)
|
1161
|
-
this.filterTarget(query);
|
1162
|
-
}
|
1163
|
-
filterSource(value = '') {
|
1164
|
-
this.filterValueSource = value.trim().toLocaleLowerCase(this.filterLocale);
|
1165
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1166
|
-
}
|
1167
|
-
filterTarget(value = '') {
|
1168
|
-
this.filterValueTarget = value.trim().toLocaleLowerCase(this.filterLocale);
|
1169
|
-
this.filter(this.target, this.TARGET_LIST);
|
1170
|
-
}
|
1171
|
-
filter(data, listType) {
|
1172
|
-
let searchFields = this.filterBy.split(',');
|
1173
|
-
if (listType === this.SOURCE_LIST) {
|
1174
|
-
this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
|
1175
|
-
this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
|
1176
|
-
}
|
1177
|
-
else if (listType === this.TARGET_LIST) {
|
1178
|
-
this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
|
1179
|
-
this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
|
1180
|
-
}
|
1181
|
-
}
|
1182
|
-
isItemVisible(item, listType) {
|
1183
|
-
if (listType == this.SOURCE_LIST)
|
1184
|
-
return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
|
1185
|
-
else
|
1186
|
-
return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
|
1187
|
-
}
|
1188
|
-
isEmpty(listType) {
|
1189
|
-
if (listType == this.SOURCE_LIST)
|
1190
|
-
return this.filterValueSource ? !this.visibleOptionsSource || this.visibleOptionsSource.length === 0 : !this.source || this.source.length === 0;
|
1191
|
-
else
|
1192
|
-
return this.filterValueTarget ? !this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0 : !this.target || this.target.length === 0;
|
1193
|
-
}
|
1194
|
-
isVisibleInList(data, item, filterValue) {
|
1195
|
-
if (filterValue && filterValue.trim().length) {
|
1196
|
-
for (let i = 0; i < data.length; i++) {
|
1197
|
-
if (item == data[i]) {
|
1198
|
-
return true;
|
1199
|
-
}
|
1200
|
-
}
|
1201
|
-
}
|
1202
|
-
else {
|
1203
|
-
return true;
|
1204
|
-
}
|
1205
|
-
}
|
1206
|
-
onItemTouchEnd() {
|
1207
|
-
if (this.disabled) {
|
1208
|
-
return;
|
1209
|
-
}
|
1210
|
-
this.itemTouched = true;
|
1211
|
-
}
|
1212
|
-
sortByIndexInList(items, list) {
|
1213
|
-
return items.sort((item1, item2) => findIndexInList(item1, list) - findIndexInList(item2, list));
|
1214
|
-
}
|
1215
|
-
viewChildMarkForCheck() {
|
1216
|
-
this.listViewSourceChild.cd.markForCheck();
|
1217
|
-
this.listViewTargetChild.cd.markForCheck();
|
1218
|
-
}
|
1219
|
-
moveUp(listElement, list, selectedItems, callback, listType) {
|
1220
|
-
if (selectedItems && selectedItems.length) {
|
1221
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1222
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1223
|
-
let selectedItem = selectedItems[i];
|
1224
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1225
|
-
if (selectedItemIndex != 0) {
|
1226
|
-
let movedItem = list[selectedItemIndex];
|
1227
|
-
let temp = list[selectedItemIndex - 1];
|
1228
|
-
list[selectedItemIndex - 1] = movedItem;
|
1229
|
-
list[selectedItemIndex] = temp;
|
1230
|
-
}
|
1231
|
-
else {
|
1232
|
-
break;
|
1233
|
-
}
|
1234
|
-
}
|
1235
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1236
|
-
this.filter(list, listType);
|
1237
|
-
this.movedUp = true;
|
1238
|
-
this.reorderedListElement = listElement;
|
1239
|
-
callback.emit({ items: selectedItems });
|
1240
|
-
this.viewChildMarkForCheck();
|
1241
|
-
}
|
1242
|
-
}
|
1243
|
-
moveTop(listElement, list, selectedItems, callback, listType) {
|
1244
|
-
if (selectedItems && selectedItems.length) {
|
1245
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1246
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1247
|
-
let selectedItem = selectedItems[i];
|
1248
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1249
|
-
if (selectedItemIndex != 0) {
|
1250
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1251
|
-
list.unshift(movedItem);
|
1252
|
-
}
|
1253
|
-
else {
|
1254
|
-
break;
|
1255
|
-
}
|
1256
|
-
}
|
1257
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1258
|
-
this.filter(list, listType);
|
1259
|
-
listElement.scrollTop = 0;
|
1260
|
-
callback.emit({ items: selectedItems });
|
1261
|
-
this.viewChildMarkForCheck();
|
1262
|
-
}
|
1263
|
-
}
|
1264
|
-
moveDown(listElement, list, selectedItems, callback, listType) {
|
1265
|
-
if (selectedItems && selectedItems.length) {
|
1266
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1267
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1268
|
-
let selectedItem = selectedItems[i];
|
1269
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1270
|
-
if (selectedItemIndex != list.length - 1) {
|
1271
|
-
let movedItem = list[selectedItemIndex];
|
1272
|
-
let temp = list[selectedItemIndex + 1];
|
1273
|
-
list[selectedItemIndex + 1] = movedItem;
|
1274
|
-
list[selectedItemIndex] = temp;
|
1275
|
-
}
|
1276
|
-
else {
|
1277
|
-
break;
|
1278
|
-
}
|
1279
|
-
}
|
1280
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1281
|
-
this.filter(list, listType);
|
1282
|
-
this.movedDown = true;
|
1283
|
-
this.reorderedListElement = listElement;
|
1284
|
-
callback.emit({ items: selectedItems });
|
1285
|
-
this.viewChildMarkForCheck();
|
1286
|
-
}
|
1287
|
-
}
|
1288
|
-
moveBottom(listElement, list, selectedItems, callback, listType) {
|
1289
|
-
if (selectedItems && selectedItems.length) {
|
1290
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1291
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1292
|
-
let selectedItem = selectedItems[i];
|
1293
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1294
|
-
if (selectedItemIndex != list.length - 1) {
|
1295
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1296
|
-
list.push(movedItem);
|
1297
|
-
}
|
1298
|
-
else {
|
1299
|
-
break;
|
1300
|
-
}
|
1301
|
-
}
|
1302
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1303
|
-
this.filter(list, listType);
|
1304
|
-
listElement.scrollTop = listElement.scrollHeight;
|
1305
|
-
callback.emit({ items: selectedItems });
|
1306
|
-
this.viewChildMarkForCheck();
|
1307
|
-
}
|
1308
|
-
}
|
1309
|
-
moveRight() {
|
1310
|
-
if (this.selectedItemsSource && this.selectedItemsSource.length) {
|
1311
|
-
let itemsToMove = [...this.selectedItemsSource];
|
1312
|
-
for (let i = 0; i < itemsToMove.length; i++) {
|
1313
|
-
let selectedItem = itemsToMove[i];
|
1314
|
-
if (findIndexInList(selectedItem, this.target) == -1) {
|
1315
|
-
this.target?.push(this.source?.splice(findIndexInList(selectedItem, this.source), 1)[0]);
|
1316
|
-
if (this.visibleOptionsSource?.includes(selectedItem)) {
|
1317
|
-
this.visibleOptionsSource.splice(findIndexInList(selectedItem, this.visibleOptionsSource), 1);
|
1318
|
-
}
|
1319
|
-
}
|
1320
|
-
}
|
1321
|
-
this.onMoveToTarget.emit({
|
1322
|
-
items: itemsToMove
|
1323
|
-
});
|
1324
|
-
if (this.keepSelection) {
|
1325
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...itemsToMove];
|
1326
|
-
}
|
1327
|
-
itemsToMove = [];
|
1328
|
-
this.selectedItemsSource = [];
|
1329
|
-
if (this.filterValueTarget) {
|
1330
|
-
this.filter(this.target, this.TARGET_LIST);
|
1331
|
-
}
|
1332
|
-
this.viewChildMarkForCheck();
|
1333
|
-
}
|
1334
|
-
}
|
1335
|
-
moveAllRight() {
|
1336
|
-
if (this.source) {
|
1337
|
-
let movedItems = [];
|
1338
|
-
for (let i = 0; i < this.source.length; i++) {
|
1339
|
-
if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
|
1340
|
-
let removedItem = this.source.splice(i, 1)[0];
|
1341
|
-
this.target?.push(removedItem);
|
1342
|
-
movedItems.push(removedItem);
|
1343
|
-
i--;
|
1344
|
-
}
|
1345
|
-
}
|
1346
|
-
this.onMoveAllToTarget.emit({
|
1347
|
-
items: movedItems
|
1348
|
-
});
|
1349
|
-
if (this.keepSelection) {
|
1350
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
|
1351
|
-
}
|
1352
|
-
this.selectedItemsSource = [];
|
1353
|
-
if (this.filterValueTarget) {
|
1354
|
-
this.filter(this.target, this.TARGET_LIST);
|
1355
|
-
}
|
1356
|
-
this.visibleOptionsSource = [];
|
1357
|
-
this.viewChildMarkForCheck();
|
1358
|
-
}
|
1359
|
-
}
|
1360
|
-
moveLeft() {
|
1361
|
-
if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
|
1362
|
-
let itemsToMove = [...this.selectedItemsTarget];
|
1363
|
-
for (let i = 0; i < itemsToMove.length; i++) {
|
1364
|
-
let selectedItem = itemsToMove[i];
|
1365
|
-
if (findIndexInList(selectedItem, this.source) == -1) {
|
1366
|
-
this.source?.push(this.target?.splice(findIndexInList(selectedItem, this.target), 1)[0]);
|
1367
|
-
if (this.visibleOptionsTarget?.includes(selectedItem)) {
|
1368
|
-
this.visibleOptionsTarget.splice(findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
|
1369
|
-
}
|
1370
|
-
}
|
1371
|
-
}
|
1372
|
-
this.onMoveToSource.emit({
|
1373
|
-
items: itemsToMove
|
1374
|
-
});
|
1375
|
-
if (this.keepSelection) {
|
1376
|
-
this.selectedItemsSource = [...this.selectedItemsSource, itemsToMove];
|
1377
|
-
}
|
1378
|
-
itemsToMove = [];
|
1379
|
-
this.selectedItemsTarget = [];
|
1380
|
-
if (this.filterValueSource) {
|
1381
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1382
|
-
}
|
1383
|
-
this.viewChildMarkForCheck();
|
1384
|
-
}
|
1385
|
-
}
|
1386
|
-
moveAllLeft() {
|
1387
|
-
if (this.target) {
|
1388
|
-
let movedItems = [];
|
1389
|
-
for (let i = 0; i < this.target.length; i++) {
|
1390
|
-
if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
|
1391
|
-
let removedItem = this.target.splice(i, 1)[0];
|
1392
|
-
this.source?.push(removedItem);
|
1393
|
-
movedItems.push(removedItem);
|
1394
|
-
i--;
|
1395
|
-
}
|
1396
|
-
}
|
1397
|
-
this.onMoveAllToSource.emit({
|
1398
|
-
items: movedItems
|
1399
|
-
});
|
1400
|
-
if (this.keepSelection) {
|
1401
|
-
this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
|
1402
|
-
}
|
1403
|
-
this.selectedItemsTarget = [];
|
1404
|
-
if (this.filterValueSource) {
|
1405
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1406
|
-
}
|
1407
|
-
this.visibleOptionsTarget = [];
|
1408
|
-
this.viewChildMarkForCheck();
|
1409
|
-
}
|
1410
|
-
}
|
1411
|
-
isSelected(item, selectedItems) {
|
1412
|
-
return this.findIndexInList(item, selectedItems) != -1;
|
1413
|
-
}
|
1414
|
-
findIndexInList(item, selectedItems) {
|
1415
|
-
return findIndexInList(item, selectedItems);
|
1416
|
-
}
|
1417
|
-
onDrop(event, listType) {
|
1418
|
-
let isTransfer = event.previousContainer !== event.container;
|
1419
|
-
let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
|
1420
|
-
if (listType === this.SOURCE_LIST) {
|
1421
|
-
if (isTransfer) {
|
1422
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1423
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsTarget);
|
1424
|
-
if (selectedItemIndex != -1) {
|
1425
|
-
this.selectedItemsTarget.splice(selectedItemIndex, 1);
|
1426
|
-
if (this.keepSelection) {
|
1427
|
-
this.selectedItemsTarget.push(event.item.data);
|
1428
|
-
}
|
1429
|
-
}
|
1430
|
-
if (this.visibleOptionsTarget)
|
1431
|
-
this.visibleOptionsTarget.splice(event.previousIndex, 1);
|
1432
|
-
this.onMoveToSource.emit({ items: [event.item.data] });
|
1433
|
-
}
|
1434
|
-
else {
|
1435
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1436
|
-
this.onSourceReorder.emit({ items: [event.item.data] });
|
1437
|
-
}
|
1438
|
-
if (this.filterValueSource) {
|
1439
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1440
|
-
}
|
1441
|
-
}
|
1442
|
-
else {
|
1443
|
-
if (isTransfer) {
|
1444
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1445
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsSource);
|
1446
|
-
if (selectedItemIndex != -1) {
|
1447
|
-
this.selectedItemsSource.splice(selectedItemIndex, 1);
|
1448
|
-
if (this.keepSelection) {
|
1449
|
-
this.selectedItemsTarget.push(event.item.data);
|
1450
|
-
}
|
1451
|
-
}
|
1452
|
-
if (this.visibleOptionsSource)
|
1453
|
-
this.visibleOptionsSource.splice(event.previousIndex, 1);
|
1454
|
-
this.onMoveToTarget.emit({ items: [event.item.data] });
|
1455
|
-
}
|
1456
|
-
else {
|
1457
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1458
|
-
this.onTargetReorder.emit({ items: [event.item.data] });
|
1459
|
-
}
|
1460
|
-
if (this.filterValueTarget) {
|
1461
|
-
this.filter(this.target, this.TARGET_LIST);
|
1462
|
-
}
|
1463
|
-
}
|
1464
|
-
}
|
1465
|
-
onListFocus(event, listType) {
|
1466
|
-
this.onFocus.emit(event);
|
1467
|
-
}
|
1468
|
-
onListBlur(event, listType) {
|
1469
|
-
this.onBlur.emit(event);
|
1470
|
-
}
|
1471
|
-
getListElement(listType) {
|
1472
|
-
return listType === this.SOURCE_LIST ? this.listViewSourceChild?.el.nativeElement : this.listViewTargetChild?.el.nativeElement;
|
1473
|
-
}
|
1474
|
-
getListItems(listType) {
|
1475
|
-
let listElemet = this.getListElement(listType);
|
1476
|
-
return find(listElemet, 'li.p-picklist-item');
|
1477
|
-
}
|
1478
|
-
getLatestSelectedVisibleOptionIndex(visibleList, selectedItems) {
|
1479
|
-
const latestSelectedItem = [...selectedItems].reverse().find((item) => visibleList.includes(item));
|
1480
|
-
return latestSelectedItem !== undefined ? visibleList.indexOf(latestSelectedItem) : -1;
|
1481
|
-
}
|
1482
|
-
getVisibleList(listType) {
|
1483
|
-
if (listType === this.SOURCE_LIST) {
|
1484
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length > 0 ? this.visibleOptionsSource : this.source && this.source.length > 0 ? this.source : null;
|
1485
|
-
}
|
1486
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length > 0 ? this.visibleOptionsTarget : this.target && this.target.length > 0 ? this.target : null;
|
1487
|
-
}
|
1488
|
-
setSelectionList(listType, selectedItems) {
|
1489
|
-
if (listType === this.SOURCE_LIST) {
|
1490
|
-
this.selectedItemsSource = selectedItems;
|
1491
|
-
}
|
1492
|
-
else {
|
1493
|
-
this.selectedItemsTarget = selectedItems;
|
1494
|
-
}
|
1495
|
-
}
|
1496
|
-
findNextOptionIndex(index, listType) {
|
1497
|
-
const items = this.getListItems(listType);
|
1498
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1499
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;
|
1500
|
-
}
|
1501
|
-
findPrevOptionIndex(index, listType) {
|
1502
|
-
const items = this.getListItems(listType);
|
1503
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1504
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;
|
1505
|
-
}
|
1506
|
-
onItemKeyDown(event, selectedItems, callback, listType) {
|
1507
|
-
switch (event.code) {
|
1508
|
-
case 'ArrowDown':
|
1509
|
-
this.onArrowDownKey(event, selectedItems, callback, listType);
|
1510
|
-
break;
|
1511
|
-
case 'ArrowUp':
|
1512
|
-
this.onArrowUpKey(event, selectedItems, callback, listType);
|
1513
|
-
break;
|
1514
|
-
case 'Home':
|
1515
|
-
this.onHomeKey(event, selectedItems, callback, listType);
|
1516
|
-
break;
|
1517
|
-
case 'End':
|
1518
|
-
this.onEndKey(event, selectedItems, callback, listType);
|
1519
|
-
break;
|
1520
|
-
case 'Enter':
|
1521
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1522
|
-
break;
|
1523
|
-
case 'Space':
|
1524
|
-
this.onSpaceKey(event, selectedItems, callback, listType);
|
1525
|
-
break;
|
1526
|
-
case 'KeyA':
|
1527
|
-
if (event.ctrlKey) {
|
1528
|
-
this.setSelectionList(listType, this.getVisibleList(listType));
|
1529
|
-
callback.emit({ items: selectedItems });
|
1530
|
-
event.preventDefault();
|
1531
|
-
}
|
1532
|
-
default:
|
1533
|
-
break;
|
1534
|
-
}
|
1535
|
-
}
|
1536
|
-
getFocusedOption(index, listType) {
|
1537
|
-
if (index === -1)
|
1538
|
-
return null;
|
1539
|
-
if (listType === this.SOURCE_LIST) {
|
1540
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length ? this.visibleOptionsSource[index] : this.source && this.source.length ? this.source[index] : null;
|
1541
|
-
}
|
1542
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length ? this.visibleOptionsTarget[index] : this.target && this.target.length ? this.target[index] : null;
|
1543
|
-
}
|
1544
|
-
changeFocusedOptionIndex(index, listType) {
|
1545
|
-
const items = this.getListItems(listType);
|
1546
|
-
if (items?.length > 0) {
|
1547
|
-
let order = index >= items.length ? items.length - 1 : index < 0 ? 0 : index;
|
1548
|
-
this.focusedOptionIndex = items[order].getAttribute('id');
|
1549
|
-
this.focusedOption = this.getFocusedOption(order, listType);
|
1550
|
-
this.scrollInView(items[order].getAttribute('id'), listType);
|
1551
|
-
}
|
1552
|
-
}
|
1553
|
-
scrollInView(id, listType) {
|
1554
|
-
const element = findSingle(this.getListElement(listType), `li[id="${id}"]`);
|
1555
|
-
if (element) {
|
1556
|
-
element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
|
1557
|
-
}
|
1558
|
-
}
|
1559
|
-
onArrowDownKey(event, selectedItems, callback, listType) {
|
1560
|
-
const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex, listType);
|
1561
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1562
|
-
if (event.shiftKey) {
|
1563
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1564
|
-
}
|
1565
|
-
event.preventDefault();
|
1566
|
-
}
|
1567
|
-
onArrowUpKey(event, selectedItems, callback, listType) {
|
1568
|
-
const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex, listType);
|
1569
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1570
|
-
if (event.shiftKey) {
|
1571
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1572
|
-
}
|
1573
|
-
event.preventDefault();
|
1574
|
-
}
|
1575
|
-
onEnterKey(event, selectedItems, callback, listType) {
|
1576
|
-
this.onItemClick(event, this.focusedOption, selectedItems, listType, callback);
|
1577
|
-
event.preventDefault();
|
1578
|
-
}
|
1579
|
-
onSpaceKey(event, selectedItems, callback, listType) {
|
1580
|
-
event.preventDefault();
|
1581
|
-
if (event.shiftKey && selectedItems && selectedItems.length > 0) {
|
1582
|
-
let visibleList = this.getVisibleList(listType);
|
1583
|
-
let lastSelectedIndex = this.getLatestSelectedVisibleOptionIndex(visibleList, selectedItems);
|
1584
|
-
if (lastSelectedIndex !== -1) {
|
1585
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1586
|
-
selectedItems = [...visibleList.slice(Math.min(lastSelectedIndex, focusedIndex), Math.max(lastSelectedIndex, focusedIndex) + 1)];
|
1587
|
-
this.setSelectionList(listType, selectedItems);
|
1588
|
-
callback.emit({ items: selectedItems });
|
1589
|
-
return;
|
1590
|
-
}
|
1591
|
-
}
|
1592
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1593
|
-
}
|
1594
|
-
onHomeKey(event, selectedItems, callback, listType) {
|
1595
|
-
if (event.ctrlKey && event.shiftKey) {
|
1596
|
-
let visibleList = this.getVisibleList(listType);
|
1597
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1598
|
-
selectedItems = [...visibleList.slice(0, focusedIndex + 1)];
|
1599
|
-
this.setSelectionList(listType, selectedItems);
|
1600
|
-
callback.emit({ items: selectedItems });
|
1601
|
-
}
|
1602
|
-
else {
|
1603
|
-
this.changeFocusedOptionIndex(0, listType);
|
1604
|
-
}
|
1605
|
-
event.preventDefault();
|
1606
|
-
}
|
1607
|
-
onEndKey(event, selectedItems, callback, listType) {
|
1608
|
-
let visibleList = this.getVisibleList(listType);
|
1609
|
-
let lastIndex = visibleList && visibleList.length > 0 ? visibleList.length - 1 : null;
|
1610
|
-
if (lastIndex === null)
|
1611
|
-
return;
|
1612
|
-
if (event.ctrlKey && event.shiftKey) {
|
1613
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1614
|
-
selectedItems = [...visibleList.slice(focusedIndex, lastIndex)];
|
1615
|
-
this.setSelectionList(listType, selectedItems);
|
1616
|
-
callback.emit({ items: selectedItems });
|
1617
|
-
}
|
1618
|
-
else {
|
1619
|
-
this.changeFocusedOptionIndex(lastIndex, listType);
|
1620
|
-
}
|
1621
|
-
event.preventDefault();
|
1622
|
-
}
|
1623
|
-
getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
|
1624
|
-
let previousIndex, currentIndex;
|
1625
|
-
if (droppedList === this.SOURCE_LIST) {
|
1626
|
-
previousIndex = isTransfer ? (this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex) : this.filterValueSource ? findIndexInList(data, this.source) : fromIndex;
|
1627
|
-
currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
|
1628
|
-
}
|
1629
|
-
else {
|
1630
|
-
previousIndex = isTransfer ? (this.filterValueSource ? findIndexInList(data, this.source) : fromIndex) : this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex;
|
1631
|
-
currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
|
1632
|
-
}
|
1633
|
-
return { previousIndex, currentIndex };
|
1634
|
-
}
|
1635
|
-
findFilteredCurrentIndex(visibleOptions, index, options) {
|
1636
|
-
if (visibleOptions.length === index) {
|
1637
|
-
let toIndex = findIndexInList(visibleOptions[index - 1], options);
|
1638
|
-
return toIndex + 1;
|
1639
|
-
}
|
1640
|
-
else {
|
1641
|
-
return findIndexInList(visibleOptions[index], options);
|
1642
|
-
}
|
1643
|
-
}
|
1644
|
-
resetSourceFilter() {
|
1645
|
-
this.visibleOptionsSource = null;
|
1646
|
-
this.filterValueSource = null;
|
1647
|
-
this.sourceFilterViewChild && (this.sourceFilterViewChild.nativeElement.value = '');
|
1648
|
-
}
|
1649
|
-
resetTargetFilter() {
|
1650
|
-
this.visibleOptionsTarget = null;
|
1651
|
-
this.filterValueTarget = null;
|
1652
|
-
this.targetFilterViewChild && (this.targetFilterViewChild.nativeElement.value = '');
|
1653
|
-
}
|
1654
|
-
resetFilter() {
|
1655
|
-
this.resetSourceFilter();
|
1656
|
-
this.resetTargetFilter();
|
1657
|
-
}
|
1658
|
-
initMedia() {
|
1659
|
-
if (isPlatformBrowser(this.platformId)) {
|
1660
|
-
this.media = this.document.defaultView.matchMedia(`(max-width: ${this.breakpoint})`);
|
1661
|
-
this.viewChanged = this.media.matches;
|
1662
|
-
this.bindMediaChangeListener();
|
1663
|
-
}
|
1664
|
-
}
|
1665
|
-
destroyMedia() {
|
1666
|
-
this.unbindMediaChangeListener();
|
1667
|
-
}
|
1668
|
-
bindMediaChangeListener() {
|
1669
|
-
if (this.media && !this.mediaChangeListener) {
|
1670
|
-
this.mediaChangeListener = this.renderer.listen(this.media, 'change', (event) => {
|
1671
|
-
this.viewChanged = event.matches;
|
1672
|
-
this.cd.markForCheck();
|
1673
|
-
});
|
1674
|
-
}
|
1675
|
-
}
|
1676
|
-
unbindMediaChangeListener() {
|
1677
|
-
if (this.mediaChangeListener) {
|
1678
|
-
this.mediaChangeListener();
|
1679
|
-
this.mediaChangeListener = null;
|
1680
|
-
}
|
1681
|
-
}
|
1682
|
-
createStyle() {
|
1683
|
-
if (isPlatformBrowser(this.platformId)) {
|
1684
|
-
if (!this.styleElement) {
|
1685
|
-
this.renderer.setAttribute(this.el.nativeElement.children[0], this.id, '');
|
1686
|
-
this.styleElement = this.renderer.createElement('style');
|
1687
|
-
this.renderer.setAttribute(this.styleElement, 'type', 'text/css');
|
1688
|
-
this.renderer.appendChild(this.document.head, this.styleElement);
|
1689
|
-
let innerHTML = `
|
1690
|
-
@media screen and (max-width: ${this.breakpoint}) {
|
1691
|
-
.p-picklist[${this.id}] {
|
1692
|
-
flex-direction: column;
|
1693
|
-
}
|
1694
|
-
|
1695
|
-
.p-picklist[${this.id}] .p-picklist-controls {
|
1696
|
-
flex-direction: row;
|
1697
|
-
}
|
1698
|
-
}`;
|
1699
|
-
this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);
|
1700
|
-
setAttribute(this.styleElement, 'nonce', this.config?.csp()?.nonce);
|
1701
|
-
}
|
1702
|
-
}
|
1703
|
-
}
|
1704
|
-
sourceMoveDisabled() {
|
1705
|
-
if (this.disabled || !this.selectedItemsSource.length) {
|
1706
|
-
return true;
|
1707
|
-
}
|
1708
|
-
}
|
1709
|
-
targetMoveDisabled() {
|
1710
|
-
if (this.disabled || !this.selectedItemsTarget.length) {
|
1711
|
-
return true;
|
1712
|
-
}
|
1713
|
-
}
|
1714
|
-
moveRightDisabled() {
|
1715
|
-
return this.disabled || isEmpty(this.selectedItemsSource);
|
1716
|
-
}
|
1717
|
-
moveLeftDisabled() {
|
1718
|
-
return this.disabled || isEmpty(this.selectedItemsTarget);
|
1719
|
-
}
|
1720
|
-
moveAllRightDisabled() {
|
1721
|
-
return this.disabled || isEmpty(this.source);
|
1722
|
-
}
|
1723
|
-
moveAllLeftDisabled() {
|
1724
|
-
return this.disabled || isEmpty(this.target);
|
1725
|
-
}
|
1726
|
-
destroyStyle() {
|
1727
|
-
if (this.styleElement) {
|
1728
|
-
this.renderer.removeChild(this.document.head, this.styleElement);
|
1729
|
-
this.styleElement = null;
|
1730
|
-
``;
|
1731
|
-
}
|
1732
|
-
}
|
1733
|
-
ngOnDestroy() {
|
1734
|
-
this.destroyStyle();
|
1735
|
-
this.destroyMedia();
|
1736
|
-
super.ngOnDestroy();
|
1737
|
-
}
|
1738
|
-
static ɵfac = /*@__PURE__*/ (() => { let ɵPickList_BaseFactory; return function PickList_Factory(__ngFactoryType__) { return (ɵPickList_BaseFactory || (ɵPickList_BaseFactory = i0.ɵɵgetInheritedFactory(PickList)))(__ngFactoryType__ || PickList); }; })();
|
1739
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PickList, selectors: [["p-pickList"], ["p-picklist"], ["p-pick-list"]], contentQueries: function PickList_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
1740
|
-
i0.ɵɵcontentQuery(dirIndex, _c0, 4);
|
1741
|
-
i0.ɵɵcontentQuery(dirIndex, _c1, 4);
|
1742
|
-
i0.ɵɵcontentQuery(dirIndex, _c2, 4);
|
1743
|
-
i0.ɵɵcontentQuery(dirIndex, _c3, 4);
|
1744
|
-
i0.ɵɵcontentQuery(dirIndex, _c4, 4);
|
1745
|
-
i0.ɵɵcontentQuery(dirIndex, _c5, 4);
|
1746
|
-
i0.ɵɵcontentQuery(dirIndex, _c6, 4);
|
1747
|
-
i0.ɵɵcontentQuery(dirIndex, _c7, 4);
|
1748
|
-
i0.ɵɵcontentQuery(dirIndex, _c8, 4);
|
1749
|
-
i0.ɵɵcontentQuery(dirIndex, _c9, 4);
|
1750
|
-
i0.ɵɵcontentQuery(dirIndex, _c10, 4);
|
1751
|
-
i0.ɵɵcontentQuery(dirIndex, _c11, 4);
|
1752
|
-
i0.ɵɵcontentQuery(dirIndex, _c12, 4);
|
1753
|
-
i0.ɵɵcontentQuery(dirIndex, _c13, 4);
|
1754
|
-
i0.ɵɵcontentQuery(dirIndex, _c14, 4);
|
1755
|
-
i0.ɵɵcontentQuery(dirIndex, _c15, 4);
|
1756
|
-
i0.ɵɵcontentQuery(dirIndex, _c16, 4);
|
1757
|
-
i0.ɵɵcontentQuery(dirIndex, _c17, 4);
|
1758
|
-
i0.ɵɵcontentQuery(dirIndex, _c18, 4);
|
1759
|
-
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
1760
|
-
} if (rf & 2) {
|
1761
|
-
let _t;
|
1762
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
|
1763
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceHeaderTemplate = _t.first);
|
1764
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetHeaderTemplate = _t.first);
|
1765
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterTemplate = _t.first);
|
1766
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterTemplate = _t.first);
|
1767
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageSourceTemplate = _t.first);
|
1768
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageSourceTemplate = _t.first);
|
1769
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageTargetTemplate = _t.first);
|
1770
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageTargetTemplate = _t.first);
|
1771
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveUpIconTemplate = _t.first);
|
1772
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveTopIconTemplate = _t.first);
|
1773
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveDownIconTemplate = _t.first);
|
1774
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveBottomIconTemplate = _t.first);
|
1775
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToTargetIconTemplate = _t.first);
|
1776
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToTargetIconTemplate = _t.first);
|
1777
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToSourceIconTemplate = _t.first);
|
1778
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToSourceIconTemplate = _t.first);
|
1779
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterIconTemplate = _t.first);
|
1780
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterIconTemplate = _t.first);
|
1781
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
1782
|
-
} }, viewQuery: function PickList_Query(rf, ctx) { if (rf & 1) {
|
1783
|
-
i0.ɵɵviewQuery(_c19, 5);
|
1784
|
-
i0.ɵɵviewQuery(_c20, 5);
|
1785
|
-
i0.ɵɵviewQuery(_c3, 5);
|
1786
|
-
i0.ɵɵviewQuery(_c4, 5);
|
1787
|
-
} if (rf & 2) {
|
1788
|
-
let _t;
|
1789
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewSourceChild = _t.first);
|
1790
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewTargetChild = _t.first);
|
1791
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterViewChild = _t.first);
|
1792
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterViewChild = _t.first);
|
1793
|
-
} }, inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", tabindex: [2, "tabindex", "tabindex", numberAttribute], rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: [2, "responsive", "responsive", booleanAttribute], filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: [2, "showSourceFilter", "showSourceFilter", booleanAttribute], showTargetFilter: [2, "showTargetFilter", "showTargetFilter", booleanAttribute], metaKeySelection: [2, "metaKeySelection", "metaKeySelection", booleanAttribute], dragdrop: [2, "dragdrop", "dragdrop", booleanAttribute], style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: [2, "showSourceControls", "showSourceControls", booleanAttribute], showTargetControls: [2, "showTargetControls", "showTargetControls", booleanAttribute], sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: [2, "disabled", "disabled", booleanAttribute], ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", stripedRows: [2, "stripedRows", "stripedRows", booleanAttribute], keepSelection: [2, "keepSelection", "keepSelection", booleanAttribute], scrollHeight: "scrollHeight", autoOptionFocus: [2, "autoOptionFocus", "autoOptionFocus", booleanAttribute], buttonProps: "buttonProps", moveUpButtonProps: "moveUpButtonProps", moveTopButtonProps: "moveTopButtonProps", moveDownButtonProps: "moveDownButtonProps", moveBottomButtonProps: "moveBottomButtonProps", moveToTargetProps: "moveToTargetProps", moveAllToTargetProps: "moveAllToTargetProps", moveToSourceProps: "moveToSourceProps", moveAllToSourceProps: "moveAllToSourceProps", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter", onFocus: "onFocus", onBlur: "onBlur" }, standalone: true, features: [i0.ɵɵProvidersFeature([PickListStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 34, vars: 93, consts: [["sourcelist", ""], ["targetlist", ""], ["header", ""], ["item", ""], ["cdkDropListGroup", "", 3, "ngStyle", "ngClass"], ["class", "p-picklist-controls p-picklist-source-controls", 4, "ngIf"], [1, "p-picklist-list-container", "p-picklist-source-list-container"], ["optionLabel", "name", 3, "ngModelChange", "onFocus", "onBlur", "keydown", "onDblClick", "multiple", "options", "ngModel", "id", "ngStyle", "striped", "tabindex", "disabled", "metaKeySelection", "scrollHeight", "autoOptionFocus", "filter", "filterBy", "filterLocale", "filterPlaceHolder"], [4, "ngIf"], ["class", "p-picklist-title", 4, "ngIf"], [1, "p-picklist-controls", "p-picklist-transfer-controls"], ["type", "button", "pButton", "", "pRipple", "", "severity", "secondary", 1, "p-button-icon-only", 3, "click", "disabled", "buttonProps"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-picklist-list-container", "p-picklist-target-list-container"], ["class", "p-picklist-controls p-picklist-target-controls", 4, "ngIf"], [1, "p-picklist-controls", "p-picklist-source-controls"], [4, "ngTemplateOutlet"], [1, "p-picklist-title"], [1, "p-picklist-controls", "p-picklist-target-controls"]], template: function PickList_Template(rf, ctx) { if (rf & 1) {
|
1794
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
1795
|
-
i0.ɵɵelementStart(0, "div", 4);
|
1796
|
-
i0.ɵɵtemplate(1, PickList_div_1_Template, 13, 26, "div", 5);
|
1797
|
-
i0.ɵɵelementStart(2, "div", 6)(3, "p-listbox", 7, 0);
|
1798
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsSource, $event) || (ctx.selectedItemsSource = $event); return i0.ɵɵresetView($event); });
|
1799
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.SOURCE_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.SOURCE_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsSource, ctx.onSourceSelect, ctx.SOURCE_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSourceItemDblClick()); });
|
1800
|
-
i0.ɵɵtemplate(5, PickList_ng_container_5_Template, 3, 0, "ng-container", 8)(6, PickList_ng_container_6_Template, 2, 4, "ng-container", 8)(7, PickList_ng_container_7_Template, 2, 1, "ng-container", 8)(8, PickList_div_8_Template, 2, 1, "div", 9)(9, PickList_ng_container_9_Template, 3, 0, "ng-container", 8)(10, PickList_ng_container_10_Template, 2, 1, "ng-container", 8);
|
1801
|
-
i0.ɵɵelementEnd()();
|
1802
|
-
i0.ɵɵelementStart(11, "div", 10)(12, "button", 11);
|
1803
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveRight()); });
|
1804
|
-
i0.ɵɵtemplate(13, PickList_ng_container_13_Template, 3, 2, "ng-container", 8)(14, PickList_14_Template, 1, 0, null, 12);
|
1805
|
-
i0.ɵɵelementEnd();
|
1806
|
-
i0.ɵɵelementStart(15, "button", 11);
|
1807
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllRight()); });
|
1808
|
-
i0.ɵɵtemplate(16, PickList_ng_container_16_Template, 3, 2, "ng-container", 8)(17, PickList_17_Template, 1, 0, null, 12);
|
1809
|
-
i0.ɵɵelementEnd();
|
1810
|
-
i0.ɵɵelementStart(18, "button", 11);
|
1811
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveLeft()); });
|
1812
|
-
i0.ɵɵtemplate(19, PickList_ng_container_19_Template, 3, 2, "ng-container", 8)(20, PickList_20_Template, 1, 0, null, 12);
|
1813
|
-
i0.ɵɵelementEnd();
|
1814
|
-
i0.ɵɵelementStart(21, "button", 11);
|
1815
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllLeft()); });
|
1816
|
-
i0.ɵɵtemplate(22, PickList_ng_container_22_Template, 3, 2, "ng-container", 8)(23, PickList_23_Template, 1, 0, null, 12);
|
1817
|
-
i0.ɵɵelementEnd()();
|
1818
|
-
i0.ɵɵelementStart(24, "div", 13)(25, "p-listbox", 7, 1);
|
1819
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsTarget, $event) || (ctx.selectedItemsTarget = $event); return i0.ɵɵresetView($event); });
|
1820
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_25_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.TARGET_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_25_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.TARGET_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_25_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsTarget, ctx.onTargetSelect, ctx.TARGET_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_25_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTargetItemDblClick()); });
|
1821
|
-
i0.ɵɵtemplate(27, PickList_ng_container_27_Template, 3, 0, "ng-container", 8)(28, PickList_ng_container_28_Template, 2, 4, "ng-container", 8)(29, PickList_ng_container_29_Template, 2, 1, "ng-container", 8)(30, PickList_div_30_Template, 2, 1, "div", 9)(31, PickList_ng_container_31_Template, 3, 0, "ng-container", 8)(32, PickList_ng_container_32_Template, 2, 1, "ng-container", 8);
|
1822
|
-
i0.ɵɵelementEnd()();
|
1823
|
-
i0.ɵɵtemplate(33, PickList_div_33_Template, 13, 26, "div", 14);
|
1824
|
-
i0.ɵɵelementEnd();
|
1825
|
-
} if (rf & 2) {
|
1826
|
-
i0.ɵɵclassMap(ctx.styleClass);
|
1827
|
-
i0.ɵɵproperty("ngStyle", ctx.style)("ngClass", i0.ɵɵpureFunction0(84, _c21));
|
1828
|
-
i0.ɵɵattribute("data-pc-name", "picklist")("data-pc-section", "root");
|
1829
|
-
i0.ɵɵadvance();
|
1830
|
-
i0.ɵɵproperty("ngIf", ctx.showSourceControls);
|
1831
|
-
i0.ɵɵadvance();
|
1832
|
-
i0.ɵɵattribute("data-pc-section", "sourceWrapper")("data-pc-group-section", "listWrapper");
|
1833
|
-
i0.ɵɵadvance();
|
1834
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.source);
|
1835
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsSource);
|
1836
|
-
i0.ɵɵproperty("id", ctx.idSource + "_list")("ngStyle", ctx.sourceStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.sourceFilterPlaceholder);
|
1837
|
-
i0.ɵɵadvance(2);
|
1838
|
-
i0.ɵɵproperty("ngIf", ctx.sourceHeaderTemplate || ctx._sourceHeaderTemplate);
|
1839
|
-
i0.ɵɵadvance();
|
1840
|
-
i0.ɵɵproperty("ngIf", ctx.sourceFilterTemplate || ctx._sourceFilterTemplate);
|
1841
|
-
i0.ɵɵadvance();
|
1842
|
-
i0.ɵɵproperty("ngIf", ctx.sourceFilterIconTemplate || ctx._sourceFilterIconTemplate);
|
1843
|
-
i0.ɵɵadvance();
|
1844
|
-
i0.ɵɵproperty("ngIf", !ctx.sourceHeaderTemplate && !ctx._sourceHeaderTemplate);
|
1845
|
-
i0.ɵɵadvance();
|
1846
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate || ctx._itemTemplate);
|
1847
|
-
i0.ɵɵadvance();
|
1848
|
-
i0.ɵɵproperty("ngIf", ctx.emptyFilterMessageSourceTemplate || ctx._emptyFilterMessageSourceTemplate || ctx.emptyMessageSourceTemplate || ctx._emptyMessageSourceTemplate);
|
1849
|
-
i0.ɵɵadvance();
|
1850
|
-
i0.ɵɵattribute("data-pc-section", "buttons")("data-pc-group-section", "controls");
|
1851
|
-
i0.ɵɵadvance();
|
1852
|
-
i0.ɵɵproperty("disabled", ctx.moveRightDisabled())("buttonProps", ctx.getButtonProps("movetotarget"));
|
1853
|
-
i0.ɵɵattribute("aria-label", ctx.moveToTargetAriaLabel)("data-pc-section", "moveToTargetButton");
|
1854
|
-
i0.ɵɵadvance();
|
1855
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToTargetIconTemplate && !ctx._moveToTargetIconTemplate);
|
1856
|
-
i0.ɵɵadvance();
|
1857
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToTargetIconTemplate || ctx._moveToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(85, _c22, ctx.viewChanged));
|
1858
|
-
i0.ɵɵadvance();
|
1859
|
-
i0.ɵɵproperty("disabled", ctx.moveAllRightDisabled())("buttonProps", ctx.getButtonProps("movealltotarget"));
|
1860
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToTargetAriaLabel)("data-pc-section", "moveAllToTargetButton");
|
1861
|
-
i0.ɵɵadvance();
|
1862
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToTargetIconTemplate && !ctx._moveAllToTargetIconTemplate);
|
1863
|
-
i0.ɵɵadvance();
|
1864
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToTargetIconTemplate || ctx._moveAllToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(87, _c22, ctx.viewChanged));
|
1865
|
-
i0.ɵɵadvance();
|
1866
|
-
i0.ɵɵproperty("disabled", ctx.moveLeftDisabled())("buttonProps", ctx.getButtonProps("movetosource"));
|
1867
|
-
i0.ɵɵattribute("aria-label", ctx.moveToSourceAriaLabel)("data-pc-section", "moveToSourceButton");
|
1868
|
-
i0.ɵɵadvance();
|
1869
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToSourceIconTemplate && !ctx._moveToSourceIconTemplate);
|
1870
|
-
i0.ɵɵadvance();
|
1871
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToSourceIconTemplate || ctx._moveToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(89, _c22, ctx.viewChanged));
|
1872
|
-
i0.ɵɵadvance();
|
1873
|
-
i0.ɵɵproperty("disabled", ctx.moveAllLeftDisabled())("buttonProps", ctx.getButtonProps("movealltosource"));
|
1874
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToSourceAriaLabel)("data-pc-section", "moveAllToSourceButton");
|
1875
|
-
i0.ɵɵadvance();
|
1876
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToSourceIconTemplate && !ctx._moveAllToSourceIconTemplate);
|
1877
|
-
i0.ɵɵadvance();
|
1878
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToSourceIconTemplate || ctx._moveAllToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(91, _c22, ctx.viewChanged));
|
1879
|
-
i0.ɵɵadvance();
|
1880
|
-
i0.ɵɵattribute("data-pc-section", "targetWrapper")("data-pc-group-section", "listwrapper");
|
1881
|
-
i0.ɵɵadvance();
|
1882
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.target);
|
1883
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsTarget);
|
1884
|
-
i0.ɵɵproperty("id", ctx.idTarget + "_list")("ngStyle", ctx.targetStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.targetFilterPlaceholder);
|
1885
|
-
i0.ɵɵadvance(2);
|
1886
|
-
i0.ɵɵproperty("ngIf", ctx.targetHeaderTemplate || ctx._targetHeaderTemplate);
|
1887
|
-
i0.ɵɵadvance();
|
1888
|
-
i0.ɵɵproperty("ngIf", ctx.targetFilterTemplate || ctx._targetFilterTemplate);
|
1889
|
-
i0.ɵɵadvance();
|
1890
|
-
i0.ɵɵproperty("ngIf", ctx.targetFilterIconTemplate || ctx._targetFilterIconTemplate);
|
1891
|
-
i0.ɵɵadvance();
|
1892
|
-
i0.ɵɵproperty("ngIf", !ctx.targetHeaderTemplate && !ctx._targetHeaderTemplate);
|
1893
|
-
i0.ɵɵadvance();
|
1894
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate || ctx._itemTemplate);
|
1895
|
-
i0.ɵɵadvance();
|
1896
|
-
i0.ɵɵproperty("ngIf", ctx.emptyFilterMessageTargetTemplate || ctx._emptyFilterMessageTargetTemplate || ctx.emptyMessageTargetTemplate || ctx._emptyMessageTargetTemplate);
|
1897
|
-
i0.ɵɵadvance();
|
1898
|
-
i0.ɵɵproperty("ngIf", ctx.showTargetControls);
|
1899
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, ButtonDirective, Ripple, DragDropModule, i2.CdkDropListGroup, AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, Listbox, FormsModule, i3.NgControlStatus, i3.NgModel, SharedModule], encapsulation: 2, changeDetection: 0 });
|
1900
|
-
}
|
1901
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickList, [{
|
1902
|
-
type: Component,
|
1903
|
-
args: [{
|
1904
|
-
selector: 'p-pickList, p-picklist, p-pick-list',
|
1905
|
-
standalone: true,
|
1906
|
-
imports: [CommonModule, ButtonDirective, Ripple, DragDropModule, AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, Listbox, FormsModule, SharedModule],
|
1907
|
-
template: `
|
1908
|
-
<div [class]="styleClass" [ngStyle]="style" [ngClass]="{ 'p-picklist p-component': true }" cdkDropListGroup [attr.data-pc-name]="'picklist'" [attr.data-pc-section]="'root'">
|
1909
|
-
<div class="p-picklist-controls p-picklist-source-controls" *ngIf="showSourceControls" [attr.data-pc-section]="'sourceControls'" [attr.data-pc-group-section]="'controls'">
|
1910
|
-
<button
|
1911
|
-
type="button"
|
1912
|
-
[attr.aria-label]="moveUpAriaLabel"
|
1913
|
-
pButton
|
1914
|
-
pRipple
|
1915
|
-
severity="secondary"
|
1916
|
-
class="p-button-icon-only"
|
1917
|
-
[disabled]="sourceMoveDisabled()"
|
1918
|
-
(click)="moveUp(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1919
|
-
[attr.data-pc-section]="'sourceMoveUpButton'"
|
1920
|
-
[buttonProps]="getButtonProps('moveup')"
|
1921
|
-
>
|
1922
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate && !_moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
1923
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate || _moveUpIconTemplate"></ng-template>
|
1924
|
-
</button>
|
1925
|
-
<button
|
1926
|
-
type="button"
|
1927
|
-
[attr.aria-label]="moveTopAriaLabel"
|
1928
|
-
pButton
|
1929
|
-
pRipple
|
1930
|
-
severity="secondary"
|
1931
|
-
class="p-button-icon-only"
|
1932
|
-
[disabled]="sourceMoveDisabled()"
|
1933
|
-
(click)="moveTop(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1934
|
-
[attr.data-pc-section]="'sourceMoveTopButton'"
|
1935
|
-
[buttonProps]="getButtonProps('movetop')"
|
1936
|
-
>
|
1937
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate && !_moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
1938
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate || _moveTopIconTemplate"></ng-template>
|
1939
|
-
</button>
|
1940
|
-
<button
|
1941
|
-
type="button"
|
1942
|
-
[attr.aria-label]="moveDownAriaLabel"
|
1943
|
-
pButton
|
1944
|
-
pRipple
|
1945
|
-
severity="secondary"
|
1946
|
-
class="p-button-icon-only"
|
1947
|
-
[disabled]="sourceMoveDisabled()"
|
1948
|
-
(click)="moveDown(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1949
|
-
[attr.data-pc-section]="'sourceMoveDownButton'"
|
1950
|
-
[buttonProps]="getButtonProps('movedown')"
|
1951
|
-
>
|
1952
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate && !_moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
1953
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate || _moveDownIconTemplate"></ng-template>
|
1954
|
-
</button>
|
1955
|
-
<button
|
1956
|
-
type="button"
|
1957
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
1958
|
-
pButton
|
1959
|
-
pRipple
|
1960
|
-
severity="secondary"
|
1961
|
-
class="p-button-icon-only"
|
1962
|
-
[disabled]="sourceMoveDisabled()"
|
1963
|
-
(click)="moveBottom(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1964
|
-
[attr.data-pc-section]="'sourceMoveBottomButton'"
|
1965
|
-
[buttonProps]="getButtonProps('movebottom')"
|
1966
|
-
>
|
1967
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate || _moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
1968
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate || _moveBottomIconTemplate"></ng-template>
|
1969
|
-
</button>
|
1970
|
-
</div>
|
1971
|
-
<div class="p-picklist-list-container p-picklist-source-list-container" [attr.data-pc-section]="'sourceWrapper'" [attr.data-pc-group-section]="'listWrapper'">
|
1972
|
-
<p-listbox
|
1973
|
-
#sourcelist
|
1974
|
-
[multiple]="true"
|
1975
|
-
[options]="source"
|
1976
|
-
[(ngModel)]="selectedItemsSource"
|
1977
|
-
optionLabel="name"
|
1978
|
-
[id]="idSource + '_list'"
|
1979
|
-
[ngStyle]="sourceStyle"
|
1980
|
-
[striped]="stripedRows"
|
1981
|
-
[tabindex]="tabindex"
|
1982
|
-
(onFocus)="onListFocus($event, SOURCE_LIST)"
|
1983
|
-
(onBlur)="onListBlur($event, SOURCE_LIST)"
|
1984
|
-
(keydown)="onItemKeyDown($event, selectedItemsSource, onSourceSelect, SOURCE_LIST)"
|
1985
|
-
(onDblClick)="onSourceItemDblClick()"
|
1986
|
-
[disabled]="disabled"
|
1987
|
-
[metaKeySelection]="metaKeySelection"
|
1988
|
-
[scrollHeight]="scrollHeight"
|
1989
|
-
[autoOptionFocus]="autoOptionFocus"
|
1990
|
-
[filter]="filterBy"
|
1991
|
-
[filterBy]="filterBy"
|
1992
|
-
[filterLocale]="filterLocale"
|
1993
|
-
[filterPlaceHolder]="sourceFilterPlaceholder"
|
1994
|
-
>
|
1995
|
-
<ng-container *ngIf="sourceHeaderTemplate || _sourceHeaderTemplate">
|
1996
|
-
<ng-template #header>
|
1997
|
-
<ng-template *ngTemplateOutlet="sourceHeaderTemplate || _sourceHeaderTemplate"></ng-template>
|
1998
|
-
</ng-template>
|
1999
|
-
</ng-container>
|
2000
|
-
<ng-container *ngIf="sourceFilterTemplate || _sourceFilterTemplate">
|
2001
|
-
<ng-container *ngTemplateOutlet="sourceFilterTemplate || _sourceFilterTemplate; context: { options: sourceFilterOptions }"></ng-container>
|
2002
|
-
</ng-container>
|
2003
|
-
<ng-container *ngIf="sourceFilterIconTemplate || _sourceFilterIconTemplate">
|
2004
|
-
<ng-container *ngTemplateOutlet="sourceFilterIconTemplate || _sourceFilterIconTemplate"></ng-container>
|
2005
|
-
</ng-container>
|
2006
|
-
<div class="p-picklist-title" *ngIf="!sourceHeaderTemplate && !_sourceHeaderTemplate">{{ sourceHeader }}</div>
|
2007
|
-
<ng-container *ngIf="itemTemplate || _itemTemplate">
|
2008
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
2009
|
-
<ng-container *ngTemplateOutlet="itemTemplate || _itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
2010
|
-
</ng-template>
|
2011
|
-
</ng-container>
|
2012
|
-
<ng-container *ngIf="emptyFilterMessageSourceTemplate || _emptyFilterMessageSourceTemplate || emptyMessageSourceTemplate || _emptyMessageSourceTemplate">
|
2013
|
-
<ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate || _emptyFilterMessageSourceTemplate || emptyMessageSourceTemplate || _emptyMessageSourceTemplate"></ng-container>
|
2014
|
-
</ng-container>
|
2015
|
-
</p-listbox>
|
2016
|
-
</div>
|
2017
|
-
<div class="p-picklist-controls p-picklist-transfer-controls" [attr.data-pc-section]="'buttons'" [attr.data-pc-group-section]="'controls'">
|
2018
|
-
<button
|
2019
|
-
type="button"
|
2020
|
-
[attr.aria-label]="moveToTargetAriaLabel"
|
2021
|
-
pButton
|
2022
|
-
pRipple
|
2023
|
-
severity="secondary"
|
2024
|
-
class="p-button-icon-only"
|
2025
|
-
[disabled]="moveRightDisabled()"
|
2026
|
-
(click)="moveRight()"
|
2027
|
-
[attr.data-pc-section]="'moveToTargetButton'"
|
2028
|
-
[buttonProps]="getButtonProps('movetotarget')"
|
2029
|
-
>
|
2030
|
-
<ng-container *ngIf="!moveToTargetIconTemplate && !_moveToTargetIconTemplate">
|
2031
|
-
<AngleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
2032
|
-
<AngleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
2033
|
-
</ng-container>
|
2034
|
-
<ng-template *ngTemplateOutlet="moveToTargetIconTemplate || _moveToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
2035
|
-
</button>
|
2036
|
-
<button
|
2037
|
-
type="button"
|
2038
|
-
[attr.aria-label]="moveAllToTargetAriaLabel"
|
2039
|
-
pButton
|
2040
|
-
pRipple
|
2041
|
-
severity="secondary"
|
2042
|
-
class="p-button-icon-only"
|
2043
|
-
[disabled]="moveAllRightDisabled()"
|
2044
|
-
(click)="moveAllRight()"
|
2045
|
-
[attr.data-pc-section]="'moveAllToTargetButton'"
|
2046
|
-
[buttonProps]="getButtonProps('movealltotarget')"
|
2047
|
-
>
|
2048
|
-
<ng-container *ngIf="!moveAllToTargetIconTemplate && !_moveAllToTargetIconTemplate">
|
2049
|
-
<AngleDoubleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
2050
|
-
<AngleDoubleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
2051
|
-
</ng-container>
|
2052
|
-
<ng-template *ngTemplateOutlet="moveAllToTargetIconTemplate || _moveAllToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
2053
|
-
</button>
|
2054
|
-
<button
|
2055
|
-
type="button"
|
2056
|
-
[attr.aria-label]="moveToSourceAriaLabel"
|
2057
|
-
pButton
|
2058
|
-
pRipple
|
2059
|
-
severity="secondary"
|
2060
|
-
class="p-button-icon-only"
|
2061
|
-
[disabled]="moveLeftDisabled()"
|
2062
|
-
(click)="moveLeft()"
|
2063
|
-
[attr.data-pc-section]="'moveToSourceButton'"
|
2064
|
-
[buttonProps]="getButtonProps('movetosource')"
|
2065
|
-
>
|
2066
|
-
<ng-container *ngIf="!moveToSourceIconTemplate && !_moveToSourceIconTemplate">
|
2067
|
-
<AngleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
2068
|
-
<AngleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
2069
|
-
</ng-container>
|
2070
|
-
<ng-template *ngTemplateOutlet="moveToSourceIconTemplate || _moveToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
2071
|
-
</button>
|
2072
|
-
<button
|
2073
|
-
type="button"
|
2074
|
-
[attr.aria-label]="moveAllToSourceAriaLabel"
|
2075
|
-
pButton
|
2076
|
-
pRipple
|
2077
|
-
severity="secondary"
|
2078
|
-
class="p-button-icon-only"
|
2079
|
-
[disabled]="moveAllLeftDisabled()"
|
2080
|
-
(click)="moveAllLeft()"
|
2081
|
-
[attr.data-pc-section]="'moveAllToSourceButton'"
|
2082
|
-
[buttonProps]="getButtonProps('movealltosource')"
|
2083
|
-
>
|
2084
|
-
<ng-container *ngIf="!moveAllToSourceIconTemplate && !_moveAllToSourceIconTemplate">
|
2085
|
-
<AngleDoubleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
2086
|
-
<AngleDoubleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
2087
|
-
</ng-container>
|
2088
|
-
<ng-template *ngTemplateOutlet="moveAllToSourceIconTemplate || _moveAllToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
2089
|
-
</button>
|
2090
|
-
</div>
|
2091
|
-
<div class="p-picklist-list-container p-picklist-target-list-container" [attr.data-pc-section]="'targetWrapper'" [attr.data-pc-group-section]="'listwrapper'">
|
2092
|
-
<p-listbox
|
2093
|
-
#targetlist
|
2094
|
-
[multiple]="true"
|
2095
|
-
[options]="target"
|
2096
|
-
[(ngModel)]="selectedItemsTarget"
|
2097
|
-
optionLabel="name"
|
2098
|
-
[id]="idTarget + '_list'"
|
2099
|
-
[ngStyle]="targetStyle"
|
2100
|
-
[striped]="stripedRows"
|
2101
|
-
[tabindex]="tabindex"
|
2102
|
-
(onFocus)="onListFocus($event, TARGET_LIST)"
|
2103
|
-
(onBlur)="onListBlur($event, TARGET_LIST)"
|
2104
|
-
(keydown)="onItemKeyDown($event, selectedItemsTarget, onTargetSelect, TARGET_LIST)"
|
2105
|
-
(onDblClick)="onTargetItemDblClick()"
|
2106
|
-
[disabled]="disabled"
|
2107
|
-
[metaKeySelection]="metaKeySelection"
|
2108
|
-
[scrollHeight]="scrollHeight"
|
2109
|
-
[autoOptionFocus]="autoOptionFocus"
|
2110
|
-
[filter]="filterBy"
|
2111
|
-
[filterBy]="filterBy"
|
2112
|
-
[filterLocale]="filterLocale"
|
2113
|
-
[filterPlaceHolder]="targetFilterPlaceholder"
|
2114
|
-
>
|
2115
|
-
<ng-container *ngIf="targetHeaderTemplate || _targetHeaderTemplate">
|
2116
|
-
<ng-template #header>
|
2117
|
-
<ng-template *ngTemplateOutlet="targetHeaderTemplate || _targetHeaderTemplate"></ng-template>
|
2118
|
-
</ng-template>
|
2119
|
-
</ng-container>
|
2120
|
-
<ng-container *ngIf="targetFilterTemplate || _targetFilterTemplate">
|
2121
|
-
<ng-container *ngTemplateOutlet="targetFilterTemplate || _targetFilterTemplate; context: { options: targetFilterOptions }"></ng-container>
|
2122
|
-
</ng-container>
|
2123
|
-
<ng-container *ngIf="targetFilterIconTemplate || _targetFilterIconTemplate">
|
2124
|
-
<ng-container *ngTemplateOutlet="targetFilterIconTemplate || _targetFilterIconTemplate"></ng-container>
|
2125
|
-
</ng-container>
|
2126
|
-
<div class="p-picklist-title" *ngIf="!targetHeaderTemplate && !_targetHeaderTemplate">{{ targetHeader }}</div>
|
2127
|
-
<ng-container *ngIf="itemTemplate || _itemTemplate">
|
2128
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
2129
|
-
<ng-container *ngTemplateOutlet="itemTemplate || _itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
2130
|
-
</ng-template>
|
2131
|
-
</ng-container>
|
2132
|
-
<ng-container *ngIf="emptyFilterMessageTargetTemplate || _emptyFilterMessageTargetTemplate || emptyMessageTargetTemplate || _emptyMessageTargetTemplate">
|
2133
|
-
<ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate || _emptyFilterMessageTargetTemplate || emptyMessageTargetTemplate || _emptyMessageTargetTemplate"></ng-container>
|
2134
|
-
</ng-container>
|
2135
|
-
</p-listbox>
|
2136
|
-
</div>
|
2137
|
-
<div class="p-picklist-controls p-picklist-target-controls" *ngIf="showTargetControls" [attr.data-pc-section]="'targetControls'" [attr.data-pc-group-section]="'controls'">
|
2138
|
-
<button
|
2139
|
-
type="button"
|
2140
|
-
[attr.aria-label]="moveUpAriaLabel"
|
2141
|
-
pButton
|
2142
|
-
pRipple
|
2143
|
-
severity="secondary"
|
2144
|
-
class="p-button-icon-only"
|
2145
|
-
[disabled]="targetMoveDisabled()"
|
2146
|
-
(click)="moveUp(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2147
|
-
[attr.data-pc-section]="'targetMoveUpButton'"
|
2148
|
-
[buttonProps]="getButtonProps('moveup')"
|
2149
|
-
>
|
2150
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate && !_moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
2151
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate || _moveUpIconTemplate"></ng-template>
|
2152
|
-
</button>
|
2153
|
-
<button
|
2154
|
-
type="button"
|
2155
|
-
[attr.aria-label]="moveTopAriaLabel"
|
2156
|
-
pButton
|
2157
|
-
pRipple
|
2158
|
-
severity="secondary"
|
2159
|
-
class="p-button-icon-only"
|
2160
|
-
[disabled]="targetMoveDisabled()"
|
2161
|
-
(click)="moveTop(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2162
|
-
[attr.data-pc-section]="'targetMoveTopButton'"
|
2163
|
-
[buttonProps]="getButtonProps('movetop')"
|
2164
|
-
>
|
2165
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate && !_moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
2166
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate || moveTopIconTemplate"></ng-template>
|
2167
|
-
</button>
|
2168
|
-
<button
|
2169
|
-
type="button"
|
2170
|
-
[attr.aria-label]="moveDownAriaLabel"
|
2171
|
-
pButton
|
2172
|
-
pRipple
|
2173
|
-
severity="secondary"
|
2174
|
-
class="p-button-icon-only"
|
2175
|
-
[disabled]="targetMoveDisabled()"
|
2176
|
-
(click)="moveDown(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2177
|
-
[attr.data-pc-section]="'targetMoveDownButton'"
|
2178
|
-
[buttonProps]="getButtonProps('movedown')"
|
2179
|
-
>
|
2180
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate && !_moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
2181
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate || _moveDownIconTemplate"></ng-template>
|
2182
|
-
</button>
|
2183
|
-
<button
|
2184
|
-
type="button"
|
2185
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
2186
|
-
pButton
|
2187
|
-
pRipple
|
2188
|
-
severity="secondary"
|
2189
|
-
class="p-button-icon-only"
|
2190
|
-
[disabled]="targetMoveDisabled()"
|
2191
|
-
(click)="moveBottom(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2192
|
-
[attr.data-pc-section]="'targetMoveBottomButton'"
|
2193
|
-
[buttonProps]="getButtonProps('movebottom')"
|
2194
|
-
>
|
2195
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate && !_moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
2196
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate || _moveBottomIconTemplate"></ng-template>
|
2197
|
-
</button>
|
2198
|
-
</div>
|
2199
|
-
</div>
|
2200
|
-
`,
|
2201
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
2202
|
-
encapsulation: ViewEncapsulation.None,
|
2203
|
-
providers: [PickListStyle]
|
2204
|
-
}]
|
2205
|
-
}], null, { source: [{
|
2206
|
-
type: Input
|
2207
|
-
}], target: [{
|
2208
|
-
type: Input
|
2209
|
-
}], sourceHeader: [{
|
2210
|
-
type: Input
|
2211
|
-
}], tabindex: [{
|
2212
|
-
type: Input,
|
2213
|
-
args: [{ transform: numberAttribute }]
|
2214
|
-
}], rightButtonAriaLabel: [{
|
2215
|
-
type: Input
|
2216
|
-
}], leftButtonAriaLabel: [{
|
2217
|
-
type: Input
|
2218
|
-
}], allRightButtonAriaLabel: [{
|
2219
|
-
type: Input
|
2220
|
-
}], allLeftButtonAriaLabel: [{
|
2221
|
-
type: Input
|
2222
|
-
}], upButtonAriaLabel: [{
|
2223
|
-
type: Input
|
2224
|
-
}], downButtonAriaLabel: [{
|
2225
|
-
type: Input
|
2226
|
-
}], topButtonAriaLabel: [{
|
2227
|
-
type: Input
|
2228
|
-
}], bottomButtonAriaLabel: [{
|
2229
|
-
type: Input
|
2230
|
-
}], targetHeader: [{
|
2231
|
-
type: Input
|
2232
|
-
}], responsive: [{
|
2233
|
-
type: Input,
|
2234
|
-
args: [{ transform: booleanAttribute }]
|
2235
|
-
}], filterBy: [{
|
2236
|
-
type: Input
|
2237
|
-
}], filterLocale: [{
|
2238
|
-
type: Input
|
2239
|
-
}], trackBy: [{
|
2240
|
-
type: Input
|
2241
|
-
}], sourceTrackBy: [{
|
2242
|
-
type: Input
|
2243
|
-
}], targetTrackBy: [{
|
2244
|
-
type: Input
|
2245
|
-
}], showSourceFilter: [{
|
2246
|
-
type: Input,
|
2247
|
-
args: [{ transform: booleanAttribute }]
|
2248
|
-
}], showTargetFilter: [{
|
2249
|
-
type: Input,
|
2250
|
-
args: [{ transform: booleanAttribute }]
|
2251
|
-
}], metaKeySelection: [{
|
2252
|
-
type: Input,
|
2253
|
-
args: [{ transform: booleanAttribute }]
|
2254
|
-
}], dragdrop: [{
|
2255
|
-
type: Input,
|
2256
|
-
args: [{ transform: booleanAttribute }]
|
2257
|
-
}], style: [{
|
2258
|
-
type: Input
|
2259
|
-
}], styleClass: [{
|
2260
|
-
type: Input
|
2261
|
-
}], sourceStyle: [{
|
2262
|
-
type: Input
|
2263
|
-
}], targetStyle: [{
|
2264
|
-
type: Input
|
2265
|
-
}], showSourceControls: [{
|
2266
|
-
type: Input,
|
2267
|
-
args: [{ transform: booleanAttribute }]
|
2268
|
-
}], showTargetControls: [{
|
2269
|
-
type: Input,
|
2270
|
-
args: [{ transform: booleanAttribute }]
|
2271
|
-
}], sourceFilterPlaceholder: [{
|
2272
|
-
type: Input
|
2273
|
-
}], targetFilterPlaceholder: [{
|
2274
|
-
type: Input
|
2275
|
-
}], disabled: [{
|
2276
|
-
type: Input,
|
2277
|
-
args: [{ transform: booleanAttribute }]
|
2278
|
-
}], ariaSourceFilterLabel: [{
|
2279
|
-
type: Input
|
2280
|
-
}], ariaTargetFilterLabel: [{
|
2281
|
-
type: Input
|
2282
|
-
}], filterMatchMode: [{
|
2283
|
-
type: Input
|
2284
|
-
}], stripedRows: [{
|
2285
|
-
type: Input,
|
2286
|
-
args: [{ transform: booleanAttribute }]
|
2287
|
-
}], keepSelection: [{
|
2288
|
-
type: Input,
|
2289
|
-
args: [{ transform: booleanAttribute }]
|
2290
|
-
}], scrollHeight: [{
|
2291
|
-
type: Input
|
2292
|
-
}], autoOptionFocus: [{
|
2293
|
-
type: Input,
|
2294
|
-
args: [{ transform: booleanAttribute }]
|
2295
|
-
}], buttonProps: [{
|
2296
|
-
type: Input
|
2297
|
-
}], moveUpButtonProps: [{
|
2298
|
-
type: Input
|
2299
|
-
}], moveTopButtonProps: [{
|
2300
|
-
type: Input
|
2301
|
-
}], moveDownButtonProps: [{
|
2302
|
-
type: Input
|
2303
|
-
}], moveBottomButtonProps: [{
|
2304
|
-
type: Input
|
2305
|
-
}], moveToTargetProps: [{
|
2306
|
-
type: Input
|
2307
|
-
}], moveAllToTargetProps: [{
|
2308
|
-
type: Input
|
2309
|
-
}], moveToSourceProps: [{
|
2310
|
-
type: Input
|
2311
|
-
}], moveAllToSourceProps: [{
|
2312
|
-
type: Input
|
2313
|
-
}], breakpoint: [{
|
2314
|
-
type: Input
|
2315
|
-
}], onMoveToSource: [{
|
2316
|
-
type: Output
|
2317
|
-
}], onMoveAllToSource: [{
|
2318
|
-
type: Output
|
2319
|
-
}], onMoveAllToTarget: [{
|
2320
|
-
type: Output
|
2321
|
-
}], onMoveToTarget: [{
|
2322
|
-
type: Output
|
2323
|
-
}], onSourceReorder: [{
|
2324
|
-
type: Output
|
2325
|
-
}], onTargetReorder: [{
|
2326
|
-
type: Output
|
2327
|
-
}], onSourceSelect: [{
|
2328
|
-
type: Output
|
2329
|
-
}], onTargetSelect: [{
|
2330
|
-
type: Output
|
2331
|
-
}], onSourceFilter: [{
|
2332
|
-
type: Output
|
2333
|
-
}], onTargetFilter: [{
|
2334
|
-
type: Output
|
2335
|
-
}], onFocus: [{
|
2336
|
-
type: Output
|
2337
|
-
}], onBlur: [{
|
2338
|
-
type: Output
|
2339
|
-
}], listViewSourceChild: [{
|
2340
|
-
type: ViewChild,
|
2341
|
-
args: ['sourcelist']
|
2342
|
-
}], listViewTargetChild: [{
|
2343
|
-
type: ViewChild,
|
2344
|
-
args: ['targetlist']
|
2345
|
-
}], sourceFilterViewChild: [{
|
2346
|
-
type: ViewChild,
|
2347
|
-
args: ['sourceFilter']
|
2348
|
-
}], targetFilterViewChild: [{
|
2349
|
-
type: ViewChild,
|
2350
|
-
args: ['targetFilter']
|
2351
|
-
}], itemTemplate: [{
|
2352
|
-
type: ContentChild,
|
2353
|
-
args: ['item', { descendants: false }]
|
2354
|
-
}], sourceHeaderTemplate: [{
|
2355
|
-
type: ContentChild,
|
2356
|
-
args: ['sourceHeader', { descendants: false }]
|
2357
|
-
}], targetHeaderTemplate: [{
|
2358
|
-
type: ContentChild,
|
2359
|
-
args: ['targetHeader', { descendants: false }]
|
2360
|
-
}], sourceFilterTemplate: [{
|
2361
|
-
type: ContentChild,
|
2362
|
-
args: ['sourceFilter', { descendants: false }]
|
2363
|
-
}], targetFilterTemplate: [{
|
2364
|
-
type: ContentChild,
|
2365
|
-
args: ['targetFilter', { descendants: false }]
|
2366
|
-
}], emptyMessageSourceTemplate: [{
|
2367
|
-
type: ContentChild,
|
2368
|
-
args: ['emptymessagesource', { descendants: false }]
|
2369
|
-
}], emptyFilterMessageSourceTemplate: [{
|
2370
|
-
type: ContentChild,
|
2371
|
-
args: ['emptyfiltermessagesource', { descendants: false }]
|
2372
|
-
}], emptyMessageTargetTemplate: [{
|
2373
|
-
type: ContentChild,
|
2374
|
-
args: ['emptymessagetarget', { descendants: false }]
|
2375
|
-
}], emptyFilterMessageTargetTemplate: [{
|
2376
|
-
type: ContentChild,
|
2377
|
-
args: ['emptyfiltermessagetarget', { descendants: false }]
|
2378
|
-
}], moveUpIconTemplate: [{
|
2379
|
-
type: ContentChild,
|
2380
|
-
args: ['moveupicon', { descendants: false }]
|
2381
|
-
}], moveTopIconTemplate: [{
|
2382
|
-
type: ContentChild,
|
2383
|
-
args: ['movetopicon', { descendants: false }]
|
2384
|
-
}], moveDownIconTemplate: [{
|
2385
|
-
type: ContentChild,
|
2386
|
-
args: ['movedownicon', { descendants: false }]
|
2387
|
-
}], moveBottomIconTemplate: [{
|
2388
|
-
type: ContentChild,
|
2389
|
-
args: ['movebottomicon', { descendants: false }]
|
2390
|
-
}], moveToTargetIconTemplate: [{
|
2391
|
-
type: ContentChild,
|
2392
|
-
args: ['movetotargeticon', { descendants: false }]
|
2393
|
-
}], moveAllToTargetIconTemplate: [{
|
2394
|
-
type: ContentChild,
|
2395
|
-
args: ['movealltotargeticon', { descendants: false }]
|
2396
|
-
}], moveToSourceIconTemplate: [{
|
2397
|
-
type: ContentChild,
|
2398
|
-
args: ['movetosourceicon', { descendants: false }]
|
2399
|
-
}], moveAllToSourceIconTemplate: [{
|
2400
|
-
type: ContentChild,
|
2401
|
-
args: ['movealltosourceicon', { descendants: false }]
|
2402
|
-
}], targetFilterIconTemplate: [{
|
2403
|
-
type: ContentChild,
|
2404
|
-
args: ['targetfiltericon', { descendants: false }]
|
2405
|
-
}], sourceFilterIconTemplate: [{
|
2406
|
-
type: ContentChild,
|
2407
|
-
args: ['sourcefiltericon', { descendants: false }]
|
2408
|
-
}], templates: [{
|
2409
|
-
type: ContentChildren,
|
2410
|
-
args: [PrimeTemplate]
|
2411
|
-
}] }); })();
|
2412
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PickList, { className: "PickList" }); })();
|
2413
|
-
export class PickListModule {
|
2414
|
-
static ɵfac = function PickListModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PickListModule)(); };
|
2415
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: PickListModule });
|
2416
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [PickList, SharedModule, SharedModule] });
|
2417
|
-
}
|
2418
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickListModule, [{
|
2419
|
-
type: NgModule,
|
2420
|
-
args: [{
|
2421
|
-
imports: [PickList, SharedModule],
|
2422
|
-
exports: [PickList, SharedModule]
|
2423
|
-
}]
|
2424
|
-
}], null, null); })();
|
2425
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(PickListModule, { imports: [PickList, SharedModule], exports: [PickList, SharedModule] }); })();
|
2426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGlja2xpc3QvcGlja2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekwsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFB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QUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO2FBQ3BDOzt3RkFDWSxjQUFjLGNBLzlDZCxRQUFRLEVBNDlDRyxZQUFZLGFBNTlDdkIsUUFBUSxFQTY5Q0csWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbmQsIGZpbmRJbmRleEluTGlzdCwgZmluZFNpbmdsZSwgaXNFbXB0eSwgc2Nyb2xsSW5WaWV3LCBzZXRBdHRyaWJ1dGUsIHV1aWQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSwgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUsIEJ1dHRvblByb3BzIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgQW5nbGVEb3VibGVEb3duSWNvbiwgQW5nbGVEb3VibGVMZWZ0SWNvbiwgQW5nbGVEb3VibGVSaWdodEljb24sIEFuZ2xlRG91YmxlVXBJY29uLCBBbmdsZURvd25JY29uLCBBbmdsZUxlZnRJY29uLCBBbmdsZVJpZ2h0SWNvbiwgQW5nbGVVcEljb24sIFNlYXJjaEljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IExpc3Rib3ggfSBmcm9tICdwcmltZW5nL2xpc3Rib3gnO1xuaW1wb3J0IHsgUmlwcGxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFZvaWRMaXN0ZW5lciB9IGZyb20gJ3ByaW1lbmcvdHMtaGVscGVycyc7XG5pbXBvcnQge1xuICAgIFBpY2tMaXN0RmlsdGVyT3B0aW9ucyxcbiAgICBQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50LFxuICAgIFBpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnQsXG4gICAgUGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudCxcbiAgICBQaWNrTGlzdE1vdmVUb1RhcmdldEV2ZW50LFxuICAgIFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQsXG4gICAgUGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQsXG4gICAgUGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudCxcbiAgICBQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50LFxuICAgIFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50LFxuICAgIFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnRcbn0gZnJvbSAnLi9waWNrbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGlja0xpc3RTdHlsZSB9IGZyb20gJy4vc3R5bGUvcGlja2xpc3RzdHlsZSc7XG5cbi8qKlxuICogUGlja0xpc3QgaXMgdXNlZCB0byByZW9yZGVyIGl0ZW1zIGJldHdlZW4gZGlmZmVyZW50IGxpc3RzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXBpY2tMaXN0LCBwLXBpY2tsaXN0LCBwLXBpY2stbGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25EaXJlY3RpdmUsIFJpcHBsZSwgRHJhZ0Ryb3BNb2R1bGUsIEFuZ2xlRG91YmxlRG93bkljb24sIEFuZ2xlRG91YmxlTGVmdEljb24sIEFuZ2xlRG91YmxlUmlnaHRJY29uLCBBbmdsZURvdWJsZVVwSWNvbiwgQW5nbGVEb3duSWNvbiwgQW5nbGVMZWZ0SWNvbiwgQW5nbGVSaWdodEljb24sIEFuZ2xlVXBJY29uLCBMaXN0Ym94LCBGb3Jtc01vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbbmdDbGFzc109XCJ7ICdwLXBpY2tsaXN0IHAtY29tcG9uZW50JzogdHJ1ZSB9XCIgY2RrRHJvcExpc3RHcm91cCBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3BpY2tsaXN0J1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3Qtc291cmNlLWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93U291cmNlQ29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZUNvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzb3VyY2VNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAoc291cmNlbGlzdCwgc291cmNlLCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVJlb3JkZXIsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlTW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXVwJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZSAmJiAhX21vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGUgfHwgX21vdmVVcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9wQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic291cmNlTW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVRvcChzb3VyY2VsaXN0LCBzb3VyY2UsIHNlbGVjdGVkSXRlbXNTb3VyY2UsIG9uU291cmNlUmVvcmRlciwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VNb3ZlVG9wQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXRvcCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cIiFtb3ZlVG9wSWNvblRlbXBsYXRlICYmICFfbW92ZVRvcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvcGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvcEljb25UZW1wbGF0ZSB8fCBfbW92ZVRvcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlRG93bkFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVEb3duKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVEb3duQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWRvd24nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlRG93bkljb25UZW1wbGF0ZSAmJiAhX21vdmVEb3duSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bmljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZURvd25JY29uVGVtcGxhdGUgfHwgX21vdmVEb3duSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVCb3R0b21BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzb3VyY2VNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQm90dG9tKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVCb3R0b21CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYm90dG9tJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCIhbW92ZUJvdHRvbUljb25UZW1wbGF0ZSB8fCBfbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWJvdHRvbWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUJvdHRvbUljb25UZW1wbGF0ZSB8fCBfbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWxpc3QtY29udGFpbmVyIHAtcGlja2xpc3Qtc291cmNlLWxpc3QtY29udGFpbmVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VXcmFwcGVyJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInbGlzdFdyYXBwZXInXCI+XG4gICAgICAgICAgICAgICAgPHAtbGlzdGJveFxuICAgICAgICAgICAgICAgICAgICAjc291cmNlbGlzdFxuICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtc1NvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFNvdXJjZSArICdfbGlzdCdcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzb3VyY2VTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHJpcGVkXT1cInN0cmlwZWRSb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXMpPVwib25MaXN0Rm9jdXMoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAob25CbHVyKT1cIm9uTGlzdEJsdXIoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudCwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VTZWxlY3QsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkRibENsaWNrKT1cIm9uU291cmNlSXRlbURibENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbWV0YUtleVNlbGVjdGlvbl09XCJtZXRhS2V5U2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b09wdGlvbkZvY3VzXT1cImF1dG9PcHRpb25Gb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQnldPVwiZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyTG9jYWxlXT1cImZpbHRlckxvY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJQbGFjZUhvbGRlcl09XCJzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic291cmNlSGVhZGVyVGVtcGxhdGUgfHwgX3NvdXJjZUhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VIZWFkZXJUZW1wbGF0ZSB8fCBfc291cmNlSGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3VyY2VGaWx0ZXJUZW1wbGF0ZSB8fCBfc291cmNlRmlsdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VGaWx0ZXJUZW1wbGF0ZSB8fCBfc291cmNlRmlsdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogc291cmNlRmlsdGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic291cmNlRmlsdGVySWNvblRlbXBsYXRlIHx8IF9zb3VyY2VGaWx0ZXJJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VGaWx0ZXJJY29uVGVtcGxhdGUgfHwgX3NvdXJjZUZpbHRlckljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtdGl0bGVcIiAqbmdJZj1cIiFzb3VyY2VIZWFkZXJUZW1wbGF0ZSAmJiAhX3NvdXJjZUhlYWRlclRlbXBsYXRlXCI+e3sgc291cmNlSGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVGVtcGxhdGUgfHwgX2l0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlIHx8IF9pdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXgsIHNlbGVjdGVkOiBzZWxlY3RlZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlIHx8IF9lbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSB8fCBlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSB8fCBfZW1wdHlNZXNzYWdlU291cmNlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSB8fCBfZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGUgfHwgZW1wdHlNZXNzYWdlU291cmNlVGVtcGxhdGUgfHwgX2VtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvcC1saXN0Ym94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC1jb250cm9scyBwLXBpY2tsaXN0LXRyYW5zZmVyLWNvbnRyb2xzXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIididXR0b25zJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9UYXJnZXRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb3ZlUmlnaHREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVSaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlVG9UYXJnZXRCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZldG90YXJnZXQnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVUb1RhcmdldEljb25UZW1wbGF0ZSAmJiAhX21vdmVUb1RhcmdldEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIXZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGUgfHwgX21vdmVUb1RhcmdldEljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUFsbFRvVGFyZ2V0QXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibW92ZUFsbFJpZ2h0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQWxsUmlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZUFsbFRvVGFyZ2V0QnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWFsbHRvdGFyZ2V0JylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGUgJiYgIV9tb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVJpZ2h0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCJ2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUFsbFRvVGFyZ2V0SWNvblRlbXBsYXRlIHx8IF9tb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVUb1NvdXJjZUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vdmVMZWZ0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlTGVmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlVG9Tb3VyY2VCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZldG9zb3VyY2UnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVUb1NvdXJjZUljb25UZW1wbGF0ZSAmJiAhX21vdmVUb1NvdXJjZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlTGVmdEljb24gKm5nSWY9XCIhdmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVkb3duc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bnNvdXJjZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGUgfHwgX21vdmVUb1NvdXJjZUljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUFsbFRvU291cmNlQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibW92ZUFsbExlZnREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBbGxMZWZ0KClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVBbGxUb1NvdXJjZUJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmVhbGx0b3NvdXJjZScpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlICYmICFfbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVMZWZ0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYWxsdG9zb3VyY2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlIHx8IF9tb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtbGlzdC1jb250YWluZXIgcC1waWNrbGlzdC10YXJnZXQtbGlzdC1jb250YWluZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldFdyYXBwZXInXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0d3JhcHBlcidcIj5cbiAgICAgICAgICAgICAgICA8cC1saXN0Ym94XG4gICAgICAgICAgICAgICAgICAgICN0YXJnZXRsaXN0XG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEl0ZW1zVGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkVGFyZ2V0ICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRhcmdldFN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0cmlwZWRdPVwic3RyaXBlZFJvd3NcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAob25Gb2N1cyk9XCJvbkxpc3RGb2N1cygkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFNlbGVjdCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uRGJsQ2xpY2spPVwib25UYXJnZXRJdGVtRGJsQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFttZXRhS2V5U2VsZWN0aW9uXT1cIm1ldGFLZXlTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvT3B0aW9uRm9jdXNdPVwiYXV0b09wdGlvbkZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJmaWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJMb2NhbGVdPVwiZmlsdGVyTG9jYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclBsYWNlSG9sZGVyXT1cInRhcmdldEZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YXJnZXRIZWFkZXJUZW1wbGF0ZSB8fCBfdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEhlYWRlclRlbXBsYXRlIHx8IF90YXJnZXRIZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhcmdldEZpbHRlclRlbXBsYXRlIHx8IF90YXJnZXRGaWx0ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEZpbHRlclRlbXBsYXRlIHx8IF90YXJnZXRGaWx0ZXJUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiB0YXJnZXRGaWx0ZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGUgfHwgX3RhcmdldEZpbHRlckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEZpbHRlckljb25UZW1wbGF0ZSB8fCBfdGFyZ2V0RmlsdGVySWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC10aXRsZVwiICpuZ0lmPVwiIXRhcmdldEhlYWRlclRlbXBsYXRlICYmICFfdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj57eyB0YXJnZXRIZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZSB8fCBfaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW0gbGV0LWl0ZW0gbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGUgfHwgX2l0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpbmRleCwgc2VsZWN0ZWQ6IHNlbGVjdGVkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGUgfHwgX2VtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlIHx8IGVtcHR5TWVzc2FnZVRhcmdldFRlbXBsYXRlIHx8IF9lbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlIHx8IF9lbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSB8fCBlbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSB8fCBfZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9wLWxpc3Rib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3QtdGFyZ2V0LWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93VGFyZ2V0Q29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldENvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXVwJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZSAmJiAhX21vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGUgfHwgX21vdmVVcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9wQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFyZ2V0TW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVRvcCh0YXJnZXRsaXN0LCB0YXJnZXQsIHNlbGVjdGVkSXRlbXNUYXJnZXQsIG9uVGFyZ2V0UmVvcmRlciwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0YXJnZXRNb3ZlVG9wQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXRvcCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cIiFtb3ZlVG9wSWNvblRlbXBsYXRlICYmICFfbW92ZVRvcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvcGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvcEljb25UZW1wbGF0ZSB8fCBtb3ZlVG9wSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVEb3duQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFyZ2V0TW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZURvd24odGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZURvd25CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlZG93bicpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uICpuZ0lmPVwiIW1vdmVEb3duSWNvblRlbXBsYXRlICYmICFfbW92ZURvd25JY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVkb3duaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlRG93bkljb25UZW1wbGF0ZSB8fCBfbW92ZURvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUJvdHRvbUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVCb3R0b20odGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZUJvdHRvbUJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmVib3R0b20nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlQm90dG9tSWNvblRlbXBsYXRlICYmICFfbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWJvdHRvbWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUJvdHRvbUljb25UZW1wbGF0ZSB8fCBfbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1BpY2tMaXN0U3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSBzb3VyY2UgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIHRoZSBzb3VyY2UgbGlzdCBjYXB0aW9uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc291cmNlSGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gbGVmdCBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGVmdEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxSaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIGxlZnQgYnV0dG9uIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsbExlZnRCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHVwIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1cEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gZG93biBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZG93bkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gdG9wIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0b3BCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIGJvdHRvbSBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYm90dG9tQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgdGhlIHRhcmdldCBsaXN0IGNhcHRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRIZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQgb3JkZXJsaXN0IGFkanVzdHMgaXRzIGNvbnRyb2xzIGJhc2VkIG9uIHNjcmVlbiBzaXplLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNwb25zaXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkIGRpc3BsYXlzIGFuIGlucHV0IGZpZWxkIHRvIGZpbHRlciB0aGUgaXRlbXMgb24ga2V5dXAgYW5kIGRlY2lkZXMgd2hpY2ggZmllbGQgdG8gc2VhcmNoIChBY2NlcHRzIG11bHRpcGxlIGZpZWxkcyB3aXRoIGEgY29tbWEpLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBmaWx0ZXJpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuIFVzZSBzb3VyY2VUcmFja0J5IG9yIHRhcmdldFRyYWNrQnkgaW4gY2FzZSBkaWZmZXJlbnQgYWxnb3JpdGhtcyBhcmUgbmVlZGVkIHBlciBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgZG9tIG9wZXJhdGlvbnMgYnkgZGVsZWdhdGluZyB0byBuZ0ZvclRyYWNrQnkgaW4gc291cmNlIGxpc3QsIGRlZmF1bHQgYWxnb3JpdGhtIGNoZWNrcyBmb3Igb2JqZWN0IGlkZW50aXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNvdXJjZVRyYWNrQnk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSBpbiB0YXJnZXQgbGlzdCwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdGFyZ2V0VHJhY2tCeTogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IGZpbHRlciBpbnB1dCBmb3Igc291cmNlIGxpc3Qgd2hlbiBmaWx0ZXJCeSBpcyBlbmFibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgZmlsdGVyIGlucHV0IGZvciB0YXJnZXQgbGlzdCB3aGVuIGZpbHRlckJ5IGlzIGVuYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUYXJnZXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IG11bHRpcGxlIGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCwgd2hlbiB0cnVlIG1ldGFLZXkgbmVlZHMgdG8gYmUgcHJlc3NlZCB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbSBhbmQgd2hlbiBzZXQgdG8gZmFsc2Ugc2VsZWN0aW9uIG9mIGVhY2ggaXRlbSBjYW4gYmUgdG9nZ2xlZCBpbmRpdmlkdWFsbHkuIE9uIHRvdWNoIGVuYWJsZWQgZGV2aWNlcywgbWV0YUtleVNlbGVjdGlvbiBpcyB0dXJuZWQgb2ZmIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkcmFnZHJvcCBiYXNlZCByZW9yZGVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgc291cmNlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgdGFyZ2V0IGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlQ29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHRhcmdldCBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93VGFyZ2V0Q29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gc291cmNlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gdGFyZ2V0IGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZmlsdGVyIGlucHV0IG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFTb3VyY2VGaWx0ZXJMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIGZpbHRlciBpbnB1dCBvZiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhVGFyZ2V0RmlsdGVyTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5cyByb3dzIHdpdGggYWx0ZXJuYXRpbmcgY29sb3JzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdHJpcGVkUm93czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBLZWVwcyBzZWxlY3Rpb24gb24gdGhlIHRyYW5zZmVyIGxpc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGtlZXBTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0LCBhIHNjcm9sbGJhciBpcyBkZWZpbmVkIGlmIGhlaWdodCBvZiBsaXN0IGV4Y2VlZHMgdGhpcyB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcxNHJlbSc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb2N1cyBvbiB0aGUgZmlyc3QgdmlzaWJsZSBvciBzZWxlY3RlZCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvT3B0aW9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIEJ1dHRvbiBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uUHJvcHM6IEJ1dHRvblByb3BzID0geyBzZXZlcml0eTogJ3NlY29uZGFyeScgfTtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHVwIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVXBCdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHRvcCBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZVRvcEJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgZG93biBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZURvd25CdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGJvdHRvbSBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZUJvdHRvbUJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgdG8gdGFyZ2V0IGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVG9UYXJnZXRQcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGFsbCB0byB0YXJnZXQgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVBbGxUb1RhcmdldFByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSB0byBzb3VyY2UgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVUb1NvdXJjZVByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSBhbGwgdG8gc291cmNlIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlQWxsVG9Tb3VyY2VQcm9wczogQnV0dG9uUHJvcHM7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gYXQgd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgY2hhbmdlIGl0cyBiZWhhdmlvci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYnJlYWtwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDtcbiAgICB9XG4gICAgc2V0IGJyZWFrcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX2JyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TWVkaWEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWRpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGl0ZW1zIGFyZSBtb3ZlZCBmcm9tIHRhcmdldCB0byBzb3VyY2UuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50fSBldmVudCAtIEN1c3RvbSBtb3ZlIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gdGFyZ2V0IHRvIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvU291cmNlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gc291cmNlIHRvIHRhcmdldC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHRhcmdldCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1RhcmdldEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9UYXJnZXRFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBpdGVtcyBhcmUgbW92ZWQgZnJvbSBzb3VyY2UgdG8gdGFyZ2V0LlxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudH0gZXZlbnQgLSBDdXN0b20gbW92ZSB0byB0YXJnZXQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTW92ZVRvVGFyZ2V0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0TW92ZVRvVGFyZ2V0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gc291cmNlIGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZVJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gc291cmNlIHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlUmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlUmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gdGFyZ2V0IGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFRhcmdldFJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0UmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiBzb3VyY2UgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0U291cmNlU2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHNvdXJjZSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlU2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlU2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhcmdldCBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0U2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHNvdXJjZSBsaXN0IGlzIGZpbHRlcmVkXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBzb3VyY2UgZmlsdGVyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNvdXJjZUZpbHRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSB0YXJnZXQgbGlzdCBpcyBmaWx0ZXJlZFxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBsaXN0IGlzIGZvY3VzZWRcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxpc3QgaXMgYmx1cnJlZFxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NvdXJjZWxpc3QnKSBsaXN0Vmlld1NvdXJjZUNoaWxkOiBMaXN0Ym94O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0bGlzdCcpIGxpc3RWaWV3VGFyZ2V0Q2hpbGQ6IExpc3Rib3g7XG5cbiAgICBAVmlld0NoaWxkKCdzb3VyY2VGaWx0ZXInKSBzb3VyY2VGaWx0ZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0RmlsdGVyJykgdGFyZ2V0RmlsdGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIGdldEJ1dHRvblByb3BzKGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdtb3ZldXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVVwQnV0dG9uUHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVRvcEJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlZG93bic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlRG93bkJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVCb3R0b21CdXR0b25Qcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZXRvdGFyZ2V0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVUb1RhcmdldFByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG90YXJnZXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZUFsbFRvVGFyZ2V0UHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlVG9Tb3VyY2VQcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZWFsbHRvc291cmNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVBbGxUb1NvdXJjZVByb3BzIH07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1dHRvblByb3BzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVVcEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnVwQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVVwIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlVG9wQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnRvcEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVUb3AgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVEb3duQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsID8gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVCb3R0b21BcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvdHRvbUJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMuYm90dG9tQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVUb1RhcmdldEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlnaHRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnJpZ2h0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvVGFyZ2V0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9UYXJnZXRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFJpZ2h0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5hbGxSaWdodEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVBbGxUb1RhcmdldCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZVRvU291cmNlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvU291cmNlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9Tb3VyY2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgOiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5tb3ZlQWxsVG9Tb3VyY2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGlkU291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICdfc291cmNlJztcbiAgICB9XG5cbiAgICBnZXQgaWRUYXJnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJ190YXJnZXQnO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCA6IG51bGw7XG4gICAgfVxuXG4gICAgX2JyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG5cbiAgICBwdWJsaWMgdmlzaWJsZU9wdGlvbnNTb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyB2aXNpYmxlT3B0aW9uc1RhcmdldDogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgc2VsZWN0ZWRJdGVtc1NvdXJjZTogYW55W10gPSBbXTtcblxuICAgIHNlbGVjdGVkSXRlbXNUYXJnZXQ6IGFueVtdID0gW107XG5cbiAgICByZW9yZGVyZWRMaXN0RWxlbWVudDogYW55O1xuXG4gICAgbW92ZWRVcDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBtb3ZlZERvd246IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgaXRlbVRvdWNoZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gdXVpZCgncG5faWRfJyk7XG5cbiAgICBmaWx0ZXJWYWx1ZVNvdXJjZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIGZpbHRlclZhbHVlVGFyZ2V0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgZnJvbUxpc3RUeXBlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgc291cmNlRmlsdGVyT3B0aW9uczogTnVsbGFibGU8UGlja0xpc3RGaWx0ZXJPcHRpb25zPjtcblxuICAgIHRhcmdldEZpbHRlck9wdGlvbnM6IE51bGxhYmxlPFBpY2tMaXN0RmlsdGVyT3B0aW9ucz47XG5cbiAgICByZWFkb25seSBTT1VSQ0VfTElTVDogbnVtYmVyID0gLTE7XG5cbiAgICByZWFkb25seSBUQVJHRVRfTElTVDogbnVtYmVyID0gMTtcblxuICAgIHdpbmRvdzogV2luZG93O1xuXG4gICAgbWVkaWE6IE1lZGlhUXVlcnlMaXN0IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIHZpZXdDaGFuZ2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4OiBhbnkgPSAtMTtcblxuICAgIGZvY3VzZWRPcHRpb246IGFueSB8IHVuZGVmaW5lZDtcblxuICAgIGZvY3VzZWQ6IGFueSA9IHtcbiAgICAgICAgc291cmNlTGlzdDogZmFsc2UsXG4gICAgICAgIHRhcmdldExpc3Q6IGZhbHNlXG4gICAgfTtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChQaWNrTGlzdFN0eWxlKTtcblxuICAgIG1lZGlhQ2hhbmdlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIGZpbHRlclNlcnZpY2UgPSBpbmplY3QoRmlsdGVyU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICAgICAgdGhpcy5pbml0TWVkaWEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyU291cmNlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyVGFyZ2V0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFRhcmdldEZpbHRlcigpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGl0ZW0gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlSGVhZGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgc291cmNlSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGFyZ2V0IGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndGFyZ2V0SGVhZGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGZpbHRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlRmlsdGVyJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgc291cmNlRmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRhcmdldCBmaWx0ZXIgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldEZpbHRlcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIHRhcmdldEZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7IG9wdGlvbnM6IFBpY2tMaXN0RmlsdGVyT3B0aW9ucyB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBtZXNzYWdlIHdoZW4gc291cmNlIGlzIGVtcHR5IHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eW1lc3NhZ2Vzb3VyY2UnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBmaWx0ZXIgbWVzc2FnZSB3aGVuIHNvdXJjZSBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlmaWx0ZXJtZXNzYWdlc291cmNlJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgbWVzc2FnZSB3aGVuIHRhcmdldCBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHltZXNzYWdldGFyZ2V0JywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgZmlsdGVyIG1lc3NhZ2Ugd2hlbiB0YXJnZXQgaXMgZW1wdHkgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5ZmlsdGVybWVzc2FnZXRhcmdldCcsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdXAgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXVwaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIG1vdmVVcEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0b3AgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvcGljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBtb3ZlVG9wSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtb3ZlIGRvd24gaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZWRvd25pY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgbW92ZURvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYm90dG9tIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVib3R0b21pY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgbW92ZUJvdHRvbUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0byB0YXJnZXQgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvdGFyZ2V0aWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIG1vdmVUb1RhcmdldEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSBhbGwgdG8gdGFyZ2V0IGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVhbGx0b3RhcmdldGljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdG8gc291cmNlIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmV0b3NvdXJjZWljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBpY29uIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3ZlYWxsdG9zb3VyY2VpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0YXJnZXQgZmlsdGVyIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldGZpbHRlcmljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSB0YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHNvdXJjZSBmaWx0ZXIgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlZmlsdGVyaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIHNvdXJjZUZpbHRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBvcHRpb25zOiBQaWNrTGlzdEZpbHRlck9wdGlvbnMgfT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPjtcblxuICAgIF9pdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfc291cmNlSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfc291cmNlRmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfdGFyZ2V0RmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW1wdHlNZXNzYWdlU291cmNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbW92ZVVwSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX21vdmVUb3BJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbW92ZURvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbW92ZUJvdHRvbUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9tb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbW92ZUFsbFRvVGFyZ2V0SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX21vdmVUb1NvdXJjZUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9tb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfdGFyZ2V0RmlsdGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX3NvdXJjZUZpbHRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgKHRoaXMudGVtcGxhdGVzIGFzIFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPikuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc291cmNlSGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlSGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhcmdldEhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzb3VyY2VGaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VGaWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAndGFyZ2V0RmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5bWVzc2FnZXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHltZXNzYWdldGFyZ2V0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVybWVzc2FnZXRhcmdldCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZldXBpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW92ZVVwSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZldG9waWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb3BJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVkb3duaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVEb3duSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9taWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVCb3R0b21JY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3RhcmdldGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVhbGx0b3RhcmdldGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVhbGx0b3NvdXJjZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhcmdldGZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZWZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VGaWx0ZXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdmVkVXAgfHwgdGhpcy5tb3ZlZERvd24pIHtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbXMgPSBmaW5kKHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQsICdsaS5wLWhpZ2hsaWdodCcpO1xuICAgICAgICAgICAgbGV0IGxpc3RJdGVtO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3ZlZFVwKSBsaXN0SXRlbSA9IGxpc3RJdGVtc1swXTtcbiAgICAgICAgICAgIGVsc2UgbGlzdEl0ZW0gPSBsaXN0SXRlbXNbbGlzdEl0ZW1zLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBzY3JvbGxJblZpZXcodGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCwgbGlzdEl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZFVwID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1vdmVkRG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudDogRXZlbnQgfCBhbnksIGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGxpc3RUeXBlOiBudW1iZXIsIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgaXRlbUlkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluTGlzdChpdGVtLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgaWYgKGl0ZW1JZCkgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggPSBpdGVtSWQ7XG4gICAgICAgIGxldCBzZWxlY3RlZCA9IGluZGV4ICE9IC0xO1xuICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMuaXRlbVRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSAoPEtleWJvYXJkRXZlbnQ+ZXZlbnQpLm1ldGFLZXkgfHwgKDxLZXlib2FyZEV2ZW50PmV2ZW50KS5jdHJsS2V5IHx8ICg8S2V5Ym9hcmRFdmVudD5ldmVudCkuc2hpZnRLZXk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCAmJiBtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpOyAvLyBDcmVhdGluZyBhIG5ldyBhcnJheSB3aXRob3V0IHRoZSBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICBjYWxsYmFjay5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuXG4gICAgICAgIHRoaXMuaXRlbVRvdWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRG93bihpbmRleCwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvY3VzZWRbbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QgPyAnc291cmNlTGlzdCcgOiAndGFyZ2V0TGlzdCddID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggPSBpbmRleDtcbiAgICB9XG5cbiAgICBvblNvdXJjZUl0ZW1EYmxDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubW92ZVJpZ2h0KCk7XG4gICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25UYXJnZXRJdGVtRGJsQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vdmVMZWZ0KCk7XG4gICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gKDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldCkudmFsdWU7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgdGhpcy5maWx0ZXJTb3VyY2UocXVlcnkpO1xuICAgICAgICBlbHNlIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkgdGhpcy5maWx0ZXJUYXJnZXQocXVlcnkpO1xuICAgIH1cblxuICAgIGZpbHRlclNvdXJjZSh2YWx1ZTogYW55ID0gJycpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA9IHZhbHVlLnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgfVxuXG4gICAgZmlsdGVyVGFyZ2V0KHZhbHVlOiBhbnkgPSAnJykge1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gdmFsdWUudHJpbSgpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICB9XG5cbiAgICBmaWx0ZXIoZGF0YTogYW55W10sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHNlYXJjaEZpZWxkcyA9ICg8c3RyaW5nPnRoaXMuZmlsdGVyQnkpLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgaWYgKGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihkYXRhLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLm9uU291cmNlRmlsdGVyLmVtaXQoeyBxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKGRhdGEsIHNlYXJjaEZpZWxkcywgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCwgdGhpcy5maWx0ZXJNYXRjaE1vZGUsIHRoaXMuZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMub25UYXJnZXRGaWx0ZXIuZW1pdCh7IHF1ZXJ5OiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0LCB2YWx1ZTogdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUoaXRlbTogYW55LCBsaXN0VHlwZTogbnVtYmVyKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PSB0aGlzLlNPVVJDRV9MSVNUKSByZXR1cm4gdGhpcy5pc1Zpc2libGVJbkxpc3QoPGFueVtdPnRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIGl0ZW0sIDxzdHJpbmc+dGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHRoaXMuaXNWaXNpYmxlSW5MaXN0KDxhbnlbXT50aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0LCBpdGVtLCA8c3RyaW5nPnRoaXMuZmlsdGVyVmFsdWVUYXJnZXQpO1xuICAgIH1cblxuICAgIGlzRW1wdHkobGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAobGlzdFR5cGUgPT0gdGhpcy5TT1VSQ0VfTElTVCkgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPyAhdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSB8fCB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLmxlbmd0aCA9PT0gMCA6ICF0aGlzLnNvdXJjZSB8fCB0aGlzLnNvdXJjZS5sZW5ndGggPT09IDA7XG4gICAgICAgIGVsc2UgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgPyAhdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCB8fCB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA9PT0gMCA6ICF0aGlzLnRhcmdldCB8fCB0aGlzLnRhcmdldC5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgaXNWaXNpYmxlSW5MaXN0KGRhdGE6IGFueVtdLCBpdGVtOiBhbnksIGZpbHRlclZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGZpbHRlclZhbHVlICYmIGZpbHRlclZhbHVlLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtID09IGRhdGFbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1Ub3VjaEVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXRlbVRvdWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEJ5SW5kZXhJbkxpc3QoaXRlbXM6IGFueVtdLCBsaXN0OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnNvcnQoKGl0ZW0xLCBpdGVtMikgPT4gZmluZEluZGV4SW5MaXN0KGl0ZW0xLCBsaXN0KSAtIGZpbmRJbmRleEluTGlzdChpdGVtMiwgbGlzdCkpO1xuICAgIH1cblxuICAgIHZpZXdDaGlsZE1hcmtGb3JDaGVjaygpIHtcbiAgICAgICAgdGhpcy5saXN0Vmlld1NvdXJjZUNoaWxkLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmxpc3RWaWV3VGFyZ2V0Q2hpbGQuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgbW92ZVVwKGxpc3RFbGVtZW50OiBhbnksIGxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgbGlzdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4IC0gMV0gPSBtb3ZlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdID0gdGVtcDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICB0aGlzLm1vdmVkVXAgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCA9IGxpc3RFbGVtZW50O1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb3AobGlzdEVsZW1lbnQ6IGFueSwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4OiBudW1iZXIgPSBmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCBsaXN0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW0gPSBsaXN0LnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIGxpc3QudW5zaGlmdChtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2Ryb3AgJiYgKCh0aGlzLmZpbHRlclZhbHVlU291cmNlICYmIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB8fCAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCAmJiBsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkpKSB0aGlzLmZpbHRlcihsaXN0LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgICAgIGxpc3RFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZURvd24obGlzdEVsZW1lbnQ6IGFueSwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IGxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCArIDFdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4ICsgMV0gPSBtb3ZlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdID0gdGVtcDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICB0aGlzLm1vdmVkRG93biA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJlZExpc3RFbGVtZW50ID0gbGlzdEVsZW1lbnQ7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUJvdHRvbShsaXN0RWxlbWVudDogYW55LCBsaXN0OiBhbnlbXSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc29ydEJ5SW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtcywgbGlzdCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgbGlzdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gbGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW0gPSBsaXN0LnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2Ryb3AgJiYgKCh0aGlzLmZpbHRlclZhbHVlU291cmNlICYmIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB8fCAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCAmJiBsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkpKSB0aGlzLmZpbHRlcihsaXN0LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgICAgIGxpc3RFbGVtZW50LnNjcm9sbFRvcCA9IGxpc3RFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGl0ZW1zVG9Nb3ZlID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zVG9Nb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IGl0ZW1zVG9Nb3ZlW2ldO1xuICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnRhcmdldCkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQ/LnB1c2godGhpcy5zb3VyY2U/LnNwbGljZShmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnNvdXJjZSksIDEpWzBdKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZT8uaW5jbHVkZXMoc2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5zcGxpY2UoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZVRvVGFyZ2V0LmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1RvTW92ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmtlZXBTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQgPSBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0LCAuLi5pdGVtc1RvTW92ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW1zVG9Nb3ZlID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy50YXJnZXQsIHRoaXMuVEFSR0VUX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVBbGxSaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICAgICAgICBsZXQgbW92ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJdGVtVmlzaWJsZSh0aGlzLnNvdXJjZVtpXSwgdGhpcy5TT1VSQ0VfTElTVCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbW92ZWRJdGVtID0gdGhpcy5zb3VyY2Uuc3BsaWNlKGksIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldD8ucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVkSXRlbXMucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZUFsbFRvVGFyZ2V0LmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBtb3ZlZEl0ZW1zXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlTGVmdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCAmJiB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgaXRlbXNUb01vdmUgPSBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0XTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXNUb01vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gaXRlbXNUb01vdmVbaV07XG4gICAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMuc291cmNlKSA9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZT8ucHVzaCh0aGlzLnRhcmdldD8uc3BsaWNlKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudGFyZ2V0KSwgMSlbMF0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Py5pbmNsdWRlcyhzZWxlY3RlZEl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0LnNwbGljZShmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0KSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9Tb3VyY2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbXM6IGl0ZW1zVG9Nb3ZlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIGl0ZW1zVG9Nb3ZlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbXNUb01vdmUgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgbGV0IG1vdmVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhcmdldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbVZpc2libGUodGhpcy50YXJnZXRbaV0sIHRoaXMuVEFSR0VUX0xJU1QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkSXRlbSA9IHRoaXMudGFyZ2V0LnNwbGljZShpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2U/LnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBtb3ZlZEl0ZW1zLnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZUFsbFRvU291cmNlLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBtb3ZlZEl0ZW1zXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHNlbGVjdGVkSXRlbXMpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluTGlzdChpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGZpbmRJbmRleEluTGlzdChpdGVtLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBsZXQgaXNUcmFuc2ZlciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGxldCBkcm9wSW5kZXhlcyA9IHRoaXMuZ2V0RHJvcEluZGV4ZXMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4LCBsaXN0VHlwZSwgaXNUcmFuc2ZlciwgZXZlbnQuaXRlbS5kYXRhKTtcblxuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gZmluZEluZGV4SW5MaXN0KGV2ZW50Lml0ZW0uZGF0YSwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQuc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQucHVzaChldmVudC5pdGVtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGV2ZW50LnByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHsgaXRlbXM6IFtldmVudC5pdGVtLmRhdGFdIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNvdXJjZVJlb3JkZXIuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleCA9IGZpbmRJbmRleEluTGlzdChldmVudC5pdGVtLmRhdGEsIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0LnB1c2goZXZlbnQuaXRlbS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBkcm9wSW5kZXhlcy5wcmV2aW91c0luZGV4LCBkcm9wSW5kZXhlcy5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25UYXJnZXRSZW9yZGVyLmVtaXQoeyBpdGVtczogW2V2ZW50Lml0ZW0uZGF0YV0gfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlzdEZvY3VzKGV2ZW50LCBsaXN0VHlwZSkge1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25MaXN0Qmx1cihldmVudCwgbGlzdFR5cGUpIHtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QgPyB0aGlzLmxpc3RWaWV3U291cmNlQ2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmxpc3RWaWV3VGFyZ2V0Q2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGxpc3RFbGVtZXQgPSB0aGlzLmdldExpc3RFbGVtZW50KGxpc3RUeXBlKTtcblxuICAgICAgICByZXR1cm4gZmluZChsaXN0RWxlbWV0LCAnbGkucC1waWNrbGlzdC1pdGVtJyk7XG4gICAgfVxuXG4gICAgZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGxhdGVzdFNlbGVjdGVkSXRlbSA9IFsuLi5zZWxlY3RlZEl0ZW1zXS5yZXZlcnNlKCkuZmluZCgoaXRlbSkgPT4gdmlzaWJsZUxpc3QuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICByZXR1cm4gbGF0ZXN0U2VsZWN0ZWRJdGVtICE9PSB1bmRlZmluZWQgPyB2aXNpYmxlTGlzdC5pbmRleE9mKGxhdGVzdFNlbGVjdGVkSXRlbSkgOiAtMTtcbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlTGlzdChsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgJiYgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPiAwID8gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA6IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLnNvdXJjZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCAmJiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA+IDAgPyB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0IDogdGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQubGVuZ3RoID4gMCA/IHRoaXMudGFyZ2V0IDogbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlOiBudW1iZXIsIHNlbGVjdGVkSXRlbXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dE9wdGlvbkluZGV4KGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIDEgOiAwO1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXg6IG51bWJlciwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCAtIDEgOiAwO1xuICAgIH1cblxuICAgIG9uSXRlbUtleURvd24oZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQsIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnS2V5QSc6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGb2N1c2VkT3B0aW9uKGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSAmJiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLmxlbmd0aCA/IHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2VbaW5kZXhdIDogdGhpcy5zb3VyY2UgJiYgdGhpcy5zb3VyY2UubGVuZ3RoID8gdGhpcy5zb3VyY2VbaW5kZXhdIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ICYmIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQubGVuZ3RoID8gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldFtpbmRleF0gOiB0aGlzLnRhcmdldCAmJiB0aGlzLnRhcmdldC5sZW5ndGggPyB0aGlzLnRhcmdldFtpbmRleF0gOiBudWxsO1xuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChpbmRleCwgbGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG4gICAgICAgIGlmIChpdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IG9yZGVyID0gaW5kZXggPj0gaXRlbXMubGVuZ3RoID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4IDwgMCA/IDAgOiBpbmRleDtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggPSBpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uID0gdGhpcy5nZXRGb2N1c2VkT3B0aW9uKG9yZGVyLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEluVmlldyhpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpLCBsaXN0VHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaWQsIGxpc3RUeXBlKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaW5kU2luZ2xlKHRoaXMuZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGUpLCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdzdGFydCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93RG93bktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChvcHRpb25JbmRleCwgbGlzdFR5cGUpO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93VXBLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5maW5kUHJldk9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgob3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhldmVudCwgdGhpcy5mb2N1c2VkT3B0aW9uLCBzZWxlY3RlZEl0ZW1zLCBsaXN0VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgdmlzaWJsZUxpc3QgPSB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKTtcbiAgICAgICAgICAgIGxldCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3QsIHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoTWF0aC5taW4obGFzdFNlbGVjdGVkSW5kZXgsIGZvY3VzZWRJbmRleCksIE1hdGgubWF4KGxhc3RTZWxlY3RlZEluZGV4LCBmb2N1c2VkSW5kZXgpICsgMSldO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uTGlzdChsaXN0VHlwZSwgc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlTGlzdCA9IHRoaXMuZ2V0VmlzaWJsZUxpc3QobGlzdFR5cGUpO1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFsuLi52aXNpYmxlTGlzdC5zbGljZSgwLCBmb2N1c2VkSW5kZXggKyAxKV07XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoMCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHZpc2libGVMaXN0ID0gdGhpcy5nZXRWaXNpYmxlTGlzdChsaXN0VHlwZSk7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSB2aXNpYmxlTGlzdCAmJiB2aXNpYmxlTGlzdC5sZW5ndGggPiAwID8gdmlzaWJsZUxpc3QubGVuZ3RoIC0gMSA6IG51bGw7XG4gICAgICAgIGlmIChsYXN0SW5kZXggPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoZm9jdXNlZEluZGV4LCBsYXN0SW5kZXgpXTtcblxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGxhc3RJbmRleCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBnZXREcm9wSW5kZXhlcyhmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBkcm9wcGVkTGlzdDogbnVtYmVyLCBpc1RyYW5zZmVyOiBib29sZWFuLCBkYXRhOiBhbnlbXSB8IGFueSkge1xuICAgICAgICBsZXQgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4O1xuXG4gICAgICAgIGlmIChkcm9wcGVkTGlzdCA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGlzVHJhbnNmZXIgPyAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnRhcmdldCkgOiBmcm9tSW5kZXgpIDogdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnNvdXJjZSkgOiBmcm9tSW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXggPSB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gdGhpcy5maW5kRmlsdGVyZWRDdXJyZW50SW5kZXgoPGFueVtdPnRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIHRvSW5kZXgsIHRoaXMuc291cmNlKSA6IHRvSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaXNUcmFuc2ZlciA/ICh0aGlzLmZpbHRlclZhbHVlU291cmNlID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMuc291cmNlKSA6IGZyb21JbmRleCkgOiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMudGFyZ2V0KSA6IGZyb21JbmRleDtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgPyB0aGlzLmZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgdG9JbmRleCwgdGhpcy50YXJnZXQpIDogdG9JbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIGZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCh2aXNpYmxlT3B0aW9uczogYW55W10sIGluZGV4OiBudW1iZXIsIG9wdGlvbnM6IGFueSkge1xuICAgICAgICBpZiAodmlzaWJsZU9wdGlvbnMubGVuZ3RoID09PSBpbmRleCkge1xuICAgICAgICAgICAgbGV0IHRvSW5kZXggPSBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXggLSAxXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0b0luZGV4ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXhdLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0U291cmNlRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc291cmNlRmlsdGVyVmlld0NoaWxkICYmICgoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zb3VyY2VGaWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJyk7XG4gICAgfVxuXG4gICAgcmVzZXRUYXJnZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJWaWV3Q2hpbGQgJiYgKCg8SFRNTElucHV0RWxlbWVudD50aGlzLnRhcmdldEZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnKTtcbiAgICB9XG5cbiAgICByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpO1xuICAgICAgICB0aGlzLnJlc2V0VGFyZ2V0RmlsdGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdE1lZGlhKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5tZWRpYSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHt0aGlzLmJyZWFrcG9pbnR9KWApO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hhbmdlZCA9IHRoaXMubWVkaWEubWF0Y2hlcztcbiAgICAgICAgICAgIHRoaXMuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lNZWRpYSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRNZWRpYUNoYW5nZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhICYmICF0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubWVkaWEsICdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdDaGFuZ2VkID0gZXZlbnQubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tZWRpYUNoYW5nZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgdGhpcy5pZCwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAndHlwZScsICd0ZXh0L2NzcycpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnAtcGlja2xpc3QtY29udHJvbHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1gO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnN0eWxlRWxlbWVudCwgJ2lubmVySFRNTCcsIGlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAnbm9uY2UnLCB0aGlzLmNvbmZpZz8uY3NwKCk/Lm5vbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvdXJjZU1vdmVEaXNhYmxlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0TW92ZURpc2FibGVkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UpO1xuICAgIH1cblxuICAgIG1vdmVMZWZ0RGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IGlzRW1wdHkodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBtb3ZlQWxsUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnRhcmdldCk7XG4gICAgfVxuXG4gICAgZGVzdHJveVN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICBgYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lNZWRpYSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUGlja0xpc3QsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1BpY2tMaXN0LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0TW9kdWxlIHt9XG4iXX0=
|