aril 0.0.7 → 0.0.9
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/README.md +48 -48
- package/aril-0.0.9.tgz +0 -0
- package/esm2022/http/index.mjs +1 -1
- package/esm2022/http/lib/enums.mjs +6 -6
- package/esm2022/http/lib/interfaces.mjs +10 -31
- package/esm2022/http/src/httpClient.mjs +3 -3
- package/esm2022/http/src/serviceBase.mjs +25 -27
- package/esm2022/http/src/serviceStateMethods.mjs +4 -7
- package/esm2022/i18n/aril-i18n.mjs +5 -0
- package/esm2022/i18n/index.mjs +6 -0
- package/esm2022/i18n/src/file-url-token.mjs +3 -0
- package/esm2022/i18n/src/i18n.module.mjs +17 -0
- package/esm2022/i18n/src/loader.mjs +20 -0
- package/esm2022/i18n/src/provideI18n.mjs +16 -0
- package/esm2022/i18n/src/provideScope.mjs +18 -0
- package/esm2022/public-api.mjs +2 -2
- package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +3 -3
- package/esm2022/theme/layout/app/config/app.config.component.mjs +12 -14
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +15 -9
- package/esm2022/theme/layout/app/menu/app.menu.component.mjs +148 -166
- package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +3 -3
- package/esm2022/theme/layout/app/sidebar/app.sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
- package/esm2022/theme/layout/index.mjs +1 -1
- package/esm2022/theme/layout/service/app.layout.service.mjs +10 -15
- package/esm2022/theme/layout/service/app.menu.service.mjs +1 -1
- package/esm2022/theme/layout/service/menuchangeevent.mjs +1 -1
- package/esm2022/ui/badge/index.mjs +1 -1
- package/esm2022/ui/badge/src/badge.component.mjs +3 -3
- package/esm2022/ui/button/index.mjs +1 -1
- package/esm2022/ui/button/src/button.component.mjs +4 -4
- package/esm2022/ui/button/src/split-button.component.mjs +3 -3
- package/esm2022/ui/calendar/index.mjs +1 -1
- package/esm2022/ui/calendar/src/calendar.component.mjs +27 -14
- package/esm2022/ui/checkbox/index.mjs +1 -1
- package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
- package/esm2022/ui/dxField/index.mjs +1 -1
- package/esm2022/ui/dxField/src/dx-field.component.mjs +5 -5
- package/esm2022/ui/field/index.mjs +1 -1
- package/esm2022/ui/field/src/field.component.mjs +11 -9
- package/esm2022/ui/fileUpload/index.mjs +1 -1
- package/esm2022/ui/fileUpload/src/file-upload.component.mjs +12 -12
- package/esm2022/ui/form/index.mjs +7 -7
- package/esm2022/ui/form/src/form-submit-button.component.mjs +22 -27
- package/esm2022/ui/form/src/form.component.mjs +2 -2
- package/esm2022/ui/index.mjs +2 -2
- package/esm2022/ui/lib/index.mjs +1 -1
- package/esm2022/ui/lib/src/form/form-error-message.component.mjs +9 -9
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +1 -1
- package/esm2022/ui/lib/src/form/form-field-builder.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-validation.mjs +3 -3
- package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +2 -2
- package/esm2022/ui/lib/src/input/baseInput.mjs +4 -4
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +6 -6
- package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +3 -3
- package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +1 -1
- package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +3 -2
- package/esm2022/ui/lib/src/input/input-transforms.mjs +1 -1
- package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +12 -6
- package/esm2022/ui/mask/index.mjs +1 -1
- package/esm2022/ui/mask/src/mask.component.mjs +8 -8
- package/esm2022/ui/number/index.mjs +1 -1
- package/esm2022/ui/number/src/number.component.mjs +10 -10
- package/esm2022/ui/overlayPanel/index.mjs +1 -1
- package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -7
- package/esm2022/ui/panel/index.mjs +1 -1
- package/esm2022/ui/panel/src/panel.component.mjs +3 -3
- package/esm2022/ui/password/index.mjs +1 -1
- package/esm2022/ui/password/src/password.component.mjs +7 -7
- package/esm2022/ui/radioButton/index.mjs +1 -1
- package/esm2022/ui/radioButton/src/radio-button.component.mjs +8 -8
- package/esm2022/ui/selectBox/index.mjs +1 -1
- package/esm2022/ui/selectBox/src/select-box.component.mjs +8 -8
- package/esm2022/ui/switch/index.mjs +1 -1
- package/esm2022/ui/switch/src/switch.component.mjs +7 -7
- package/esm2022/ui/table/index.mjs +3 -5
- package/esm2022/ui/table/src/i18n.mjs +53 -90
- package/esm2022/ui/table/src/table-column.component.mjs +4 -8
- package/esm2022/ui/table/src/table.component.mjs +13 -10
- package/esm2022/ui/tagBox/index.mjs +1 -1
- package/esm2022/ui/tagBox/src/tag-box.component.mjs +13 -13
- package/esm2022/ui/text/index.mjs +1 -1
- package/esm2022/ui/text/src/text.component.mjs +5 -5
- package/esm2022/ui/textArea/index.mjs +1 -1
- package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
- package/esm2022/ui/tree/index.mjs +1 -1
- package/esm2022/ui/tree/src/tree.component.mjs +5 -5
- package/esm2022/ui/treeTable/index.mjs +1 -1
- package/esm2022/ui/treeTable/src/tree-table.component.mjs +3 -3
- package/esm2022/ui/value/index.mjs +1 -1
- package/esm2022/ui/value/src/value.component.mjs +13 -13
- package/esm2022/util/index.mjs +2 -2
- package/esm2022/util/init-event/index.mjs +1 -1
- package/esm2022/util/init-event/src/init-event.directive.mjs +1 -1
- package/esm2022/util/lib/index.mjs +2 -1
- package/esm2022/util/lib/src/interfaces.mjs +1 -1
- package/esm2022/util/lib/src/module-router.mjs +16 -0
- package/esm2022/util/lib/src/types.mjs +1 -1
- package/esm2022/util/primitive-extensions/index.mjs +5 -5
- package/esm2022/util/primitive-extensions/src/boolean.extensions.mjs +1 -1
- package/esm2022/util/primitive-extensions/src/date.extensions.mjs +68 -47
- package/esm2022/util/primitive-extensions/src/number.extensions.mjs +13 -7
- package/esm2022/util/primitive-extensions/src/string.extensions.mjs +4 -4
- package/esm2022/util/pub-sub/index.mjs +1 -1
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +7 -5
- package/fesm2022/aril-http.mjs +39 -63
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-i18n.mjs +72 -0
- package/fesm2022/aril-i18n.mjs.map +1 -0
- package/fesm2022/aril-theme-layout.mjs +190 -209
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-badge.mjs +2 -2
- package/fesm2022/aril-ui-badge.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +5 -5
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-calendar.mjs +25 -12
- package/fesm2022/aril-ui-calendar.mjs.map +1 -1
- package/fesm2022/aril-ui-checkbox.mjs +5 -5
- package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
- package/fesm2022/aril-ui-dxField.mjs +4 -4
- package/fesm2022/aril-ui-dxField.mjs.map +1 -1
- package/fesm2022/aril-ui-field.mjs +9 -7
- package/fesm2022/aril-ui-field.mjs.map +1 -1
- package/fesm2022/aril-ui-fileUpload.mjs +11 -11
- package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +28 -34
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +30 -23
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-mask.mjs +8 -8
- package/fesm2022/aril-ui-mask.mjs.map +1 -1
- package/fesm2022/aril-ui-number.mjs +10 -10
- package/fesm2022/aril-ui-number.mjs.map +1 -1
- package/fesm2022/aril-ui-overlayPanel.mjs +2 -5
- package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
- package/fesm2022/aril-ui-panel.mjs +2 -2
- package/fesm2022/aril-ui-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-password.mjs +7 -7
- package/fesm2022/aril-ui-password.mjs.map +1 -1
- package/fesm2022/aril-ui-radioButton.mjs +7 -7
- package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +5 -5
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-switch.mjs +7 -7
- package/fesm2022/aril-ui-switch.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +66 -105
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-tagBox.mjs +11 -11
- package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
- package/fesm2022/aril-ui-text.mjs +4 -4
- package/fesm2022/aril-ui-text.mjs.map +1 -1
- package/fesm2022/aril-ui-textArea.mjs +3 -3
- package/fesm2022/aril-ui-textArea.mjs.map +1 -1
- package/fesm2022/aril-ui-tree.mjs +3 -3
- package/fesm2022/aril-ui-tree.mjs.map +1 -1
- package/fesm2022/aril-ui-treeTable.mjs +2 -2
- package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +11 -11
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-ui.mjs +1 -1
- package/fesm2022/aril-ui.mjs.map +1 -1
- package/fesm2022/aril-util-init-event.mjs.map +1 -1
- package/fesm2022/aril-util-lib.mjs +19 -0
- package/fesm2022/aril-util-lib.mjs.map +1 -1
- package/fesm2022/aril-util-primitive-extensions.mjs +82 -55
- package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +6 -4
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril-util.mjs +1 -1
- package/fesm2022/aril-util.mjs.map +1 -1
- package/fesm2022/aril.mjs +1 -1
- package/fesm2022/aril.mjs.map +1 -1
- package/http/lib/enums.d.ts +5 -5
- package/http/lib/interfaces.d.ts +9 -31
- package/http/src/httpClient.d.ts +3 -3
- package/http/src/serviceBase.d.ts +2 -1
- package/http/src/serviceStateMethods.d.ts +2 -3
- package/i18n/index.d.ts +5 -0
- package/i18n/src/file-url-token.d.ts +2 -0
- package/i18n/src/i18n.module.d.ts +7 -0
- package/i18n/src/loader.d.ts +9 -0
- package/i18n/src/provideI18n.d.ts +2 -0
- package/i18n/src/provideScope.d.ts +9 -0
- package/package.json +13 -7
- package/styles/ui/ui.common.scss +8 -8
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +2 -4
- package/theme/layout/app/config/app.config.component.html +13 -62
- package/theme/layout/app/config/app.config.component.ts +12 -21
- package/theme/layout/app/layout/app.layout.component.ts +39 -52
- package/theme/layout/app/menu/app.menu.component.ts +147 -121
- package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +5 -18
- package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +2 -3
- package/theme/layout/app/sidebar/app.sidebar.component.html +9 -31
- package/theme/layout/app/sidebar/app.sidebar.component.ts +6 -3
- package/theme/layout/app/topbar/app.topbar.component.html +1 -5
- package/theme/layout/app/topbar/app.topbar.component.ts +4 -5
- package/theme/layout/index.ts +1 -1
- package/theme/layout/ng-package.json +6 -6
- package/theme/layout/service/app.layout.service.ts +12 -31
- package/theme/layout/service/app.menu.service.ts +0 -1
- package/theme/layout/service/menuchangeevent.ts +1 -1
- package/theme/styles/layout/_animation.scss +53 -53
- package/theme/styles/layout/_breadcrumb.scss +21 -21
- package/theme/styles/layout/_config.scss +42 -42
- package/theme/styles/layout/_content.scss +3 -3
- package/theme/styles/layout/_fonts.scss +40 -36
- package/theme/styles/layout/_layout_dark.scss +5 -5
- package/theme/styles/layout/_layout_dim.scss +5 -5
- package/theme/styles/layout/_layout_light.scss +5 -5
- package/theme/styles/layout/_main.scss +28 -28
- package/theme/styles/layout/_profile.scss +10 -10
- package/theme/styles/layout/_responsive.scss +111 -113
- package/theme/styles/layout/_sidebar_drawer.scss +234 -236
- package/theme/styles/layout/_sidebar_horizontal.scss +163 -163
- package/theme/styles/layout/_sidebar_reveal.scss +201 -203
- package/theme/styles/layout/_sidebar_slim.scss +144 -145
- package/theme/styles/layout/_sidebar_slim_plus.scss +162 -163
- package/theme/styles/layout/_sidebar_vertical.scss +153 -153
- package/theme/styles/layout/_topbar.scss +78 -78
- package/theme/styles/layout/_typography.scss +68 -63
- package/theme/styles/layout/_utils.scss +24 -24
- package/theme/styles/layout/layout.scss +24 -24
- package/theme/styles/layout/menutheme/_colorscheme.scss +11 -11
- package/theme/styles/layout/menutheme/_menutheme.scss +3 -3
- package/theme/styles/layout/menutheme/_primarycolor.scss +16 -16
- package/theme/styles/layout/menutheme/_transparent.scss +26 -26
- package/theme/styles/layout/preloading.scss +84 -84
- package/theme/styles/theme/base/_colors.scss +14 -15
- package/theme/styles/theme/base/_common.scss +39 -38
- package/theme/styles/theme/base/_components.scss +97 -97
- package/theme/styles/theme/base/_mixins.scss +281 -281
- package/theme/styles/theme/base/components/button/_button.scss +535 -535
- package/theme/styles/theme/base/components/button/_speeddial.scss +60 -60
- package/theme/styles/theme/base/components/button/_splitbutton.scss +328 -334
- package/theme/styles/theme/base/components/data/_carousel.scss +31 -31
- package/theme/styles/theme/base/components/data/_datatable.scss +336 -336
- package/theme/styles/theme/base/components/data/_dataview.scss +38 -38
- package/theme/styles/theme/base/components/data/_filter.scss +124 -125
- package/theme/styles/theme/base/components/data/_organizationchart.scss +48 -48
- package/theme/styles/theme/base/components/data/_paginator.scss +78 -78
- package/theme/styles/theme/base/components/data/_timeline.scss +33 -36
- package/theme/styles/theme/base/components/data/_treetable.scss +253 -254
- package/theme/styles/theme/base/components/data/_virtualscroller.scss +24 -24
- package/theme/styles/theme/base/components/file/_fileupload.scss +51 -51
- package/theme/styles/theme/base/components/input/_autocomplete.scss +120 -120
- package/theme/styles/theme/base/components/input/_calendar.scss +250 -250
- package/theme/styles/theme/base/components/input/_cascadeselect.scss +117 -118
- package/theme/styles/theme/base/components/input/_checkbox.scss +71 -71
- package/theme/styles/theme/base/components/input/_chips.scss +49 -49
- package/theme/styles/theme/base/components/input/_colorpicker.scss +11 -11
- package/theme/styles/theme/base/components/input/_dropdown.scss +141 -141
- package/theme/styles/theme/base/components/input/_editor.scss +120 -120
- package/theme/styles/theme/base/components/input/_inputgroup.scss +42 -42
- package/theme/styles/theme/base/components/input/_inputmask.scss +10 -10
- package/theme/styles/theme/base/components/input/_inputnumber.scss +21 -21
- package/theme/styles/theme/base/components/input/_inputswitch.scss +54 -54
- package/theme/styles/theme/base/components/input/_inputtext.scss +62 -62
- package/theme/styles/theme/base/components/input/_listbox.scss +80 -80
- package/theme/styles/theme/base/components/input/_multiselect.scss +158 -160
- package/theme/styles/theme/base/components/input/_password.scss +42 -42
- package/theme/styles/theme/base/components/input/_radiobutton.scss +57 -57
- package/theme/styles/theme/base/components/input/_rating.scss +53 -53
- package/theme/styles/theme/base/components/input/_selectbutton.scss +46 -46
- package/theme/styles/theme/base/components/input/_slider.scss +59 -55
- package/theme/styles/theme/base/components/input/_togglebutton.scss +44 -44
- package/theme/styles/theme/base/components/input/_treeselect.scss +119 -119
- package/theme/styles/theme/base/components/menu/_breadcrumb.scss +33 -33
- package/theme/styles/theme/base/components/menu/_contextmenu.scss +31 -31
- package/theme/styles/theme/base/components/menu/_dock.scss +80 -80
- package/theme/styles/theme/base/components/menu/_megamenu.scss +54 -54
- package/theme/styles/theme/base/components/menu/_menu.scss +30 -30
- package/theme/styles/theme/base/components/menu/_menubar.scss +136 -137
- package/theme/styles/theme/base/components/menu/_panelmenu.scss +151 -151
- package/theme/styles/theme/base/components/menu/_slidemenu.scss +57 -57
- package/theme/styles/theme/base/components/menu/_steps.scss +46 -46
- package/theme/styles/theme/base/components/menu/_tabmenu.scss +60 -61
- package/theme/styles/theme/base/components/menu/_tieredmenu.scss +34 -34
- package/theme/styles/theme/base/components/messages/_inlinemessage.scss +55 -55
- package/theme/styles/theme/base/components/messages/_message.scss +105 -105
- package/theme/styles/theme/base/components/messages/_toast.scss +97 -98
- package/theme/styles/theme/base/components/misc/_avatar.scss +22 -22
- package/theme/styles/theme/base/components/misc/_badge.scss +40 -40
- package/theme/styles/theme/base/components/misc/_chip.scss +39 -39
- package/theme/styles/theme/base/components/misc/_inplace.scss +12 -13
- package/theme/styles/theme/base/components/misc/_progressbar.scss +13 -13
- package/theme/styles/theme/base/components/misc/_scrolltop.scss +20 -20
- package/theme/styles/theme/base/components/misc/_skeleton.scss +6 -6
- package/theme/styles/theme/base/components/misc/_tag.scss +31 -31
- package/theme/styles/theme/base/components/misc/_terminal.scss +1 -1
- package/theme/styles/theme/base/components/multimedia/_galleria.scss +150 -150
- package/theme/styles/theme/base/components/multimedia/_image.scss +35 -35
- package/theme/styles/theme/base/components/overlay/_confirmpopup.scss +57 -59
- package/theme/styles/theme/base/components/overlay/_dialog.scss +56 -56
- package/theme/styles/theme/base/components/overlay/_overlaypanel.scss +58 -60
- package/theme/styles/theme/base/components/overlay/_sidebar.scss +20 -20
- package/theme/styles/theme/base/components/overlay/_tooltip.scss +27 -27
- package/theme/styles/theme/base/components/panel/_accordion.scss +104 -104
- package/theme/styles/theme/base/components/panel/_card.scss +23 -23
- package/theme/styles/theme/base/components/panel/_divider.scss +24 -24
- package/theme/styles/theme/base/components/panel/_fieldset.scss +38 -38
- package/theme/styles/theme/base/components/panel/_panel.scss +61 -61
- package/theme/styles/theme/base/components/panel/_scrollpanel.scss +5 -5
- package/theme/styles/theme/base/components/panel/_splitter.scss +15 -15
- package/theme/styles/theme/base/components/panel/_tabview.scss +68 -68
- package/theme/styles/theme/base/components/panel/_toolbar.scss +8 -8
- package/theme/styles/theme/dark/_extensions.scss +134 -120
- package/theme/styles/theme/dark/_variables.scss +918 -896
- package/theme/styles/theme/dark/blue/theme.scss +14 -14
- package/theme/styles/theme/dark/indigo/theme.scss +14 -14
- package/theme/styles/theme/light/_extensions.scss +116 -102
- package/theme/styles/theme/light/_variables.scss +911 -898
- package/theme/styles/theme/light/blue/theme.scss +14 -14
- package/theme/styles/theme/light/indigo/theme.scss +14 -14
- package/ui/button/src/button.component.d.ts +1 -1
- package/ui/calendar/src/calendar.component.d.ts +1 -1
- package/ui/form/index.d.ts +4 -4
- package/ui/form/src/form-submit-button.component.d.ts +5 -5
- package/ui/lib/src/form/form-validation.d.ts +1 -1
- package/ui/lib/src/input/baseInput.d.ts +2 -2
- package/ui/lib/src/input/common-input-validators.service.d.ts +3 -3
- package/ui/lib/src/input/dx-input-error-message.pipe.d.ts +2 -2
- package/ui/lib/src/input/input-transforms.d.ts +1 -1
- package/ui/mask/src/mask.component.d.ts +3 -3
- package/ui/number/src/number.component.d.ts +4 -4
- package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
- package/ui/password/src/password.component.d.ts +3 -3
- package/ui/selectBox/src/select-box.component.d.ts +2 -2
- package/ui/switch/src/switch.component.d.ts +3 -3
- package/ui/table/index.d.ts +0 -1
- package/ui/table/src/table-column.component.d.ts +1 -1
- package/ui/table/src/table.component.d.ts +4 -3
- package/ui/tree/src/tree.component.d.ts +1 -1
- package/ui/value/src/value.component.d.ts +2 -2
- package/util/lib/index.d.ts +1 -0
- package/util/lib/src/module-router.d.ts +5 -0
- package/util/lib/src/types.d.ts +2 -2
- package/util/primitive-extensions/index.d.ts +4 -4
- package/aril-0.0.7.tgz +0 -0
|
@@ -20,11 +20,11 @@ export class AppMenuItemComponent {
|
|
|
20
20
|
this.router = router;
|
|
21
21
|
this.menuService = menuService;
|
|
22
22
|
this.active = false;
|
|
23
|
-
this.key =
|
|
24
|
-
this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {
|
|
23
|
+
this.key = '';
|
|
24
|
+
this.menuSourceSubscription = this.menuService.menuSource$.subscribe((value) => {
|
|
25
25
|
Promise.resolve(null).then(() => {
|
|
26
26
|
if (value.routeEvent) {
|
|
27
|
-
this.active =
|
|
27
|
+
this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false;
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {
|
|
@@ -36,8 +36,7 @@ export class AppMenuItemComponent {
|
|
|
36
36
|
this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
|
|
37
37
|
this.active = false;
|
|
38
38
|
});
|
|
39
|
-
this.router.events.pipe(filter(event => event instanceof NavigationEnd))
|
|
40
|
-
.subscribe(params => {
|
|
39
|
+
this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => {
|
|
41
40
|
if (this.isSlimPlus || this.isSlim || this.isHorizontal) {
|
|
42
41
|
this.active = false;
|
|
43
42
|
}
|
|
@@ -55,18 +54,28 @@ export class AppMenuItemComponent {
|
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
ngAfterViewChecked() {
|
|
58
|
-
if (this.root &&
|
|
57
|
+
if (this.root &&
|
|
58
|
+
this.active &&
|
|
59
|
+
this.layoutService.isDesktop() &&
|
|
60
|
+
(this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
|
|
59
61
|
this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
updateActiveStateFromRoute() {
|
|
63
|
-
let activeRoute = this.router.isActive(this.item.routerLink[0], {
|
|
65
|
+
let activeRoute = this.router.isActive(this.item.routerLink[0], {
|
|
66
|
+
paths: 'exact',
|
|
67
|
+
queryParams: 'ignored',
|
|
68
|
+
matrixParams: 'ignored',
|
|
69
|
+
fragment: 'ignored'
|
|
70
|
+
});
|
|
64
71
|
if (activeRoute) {
|
|
65
72
|
this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
onSubmenuAnimated(event) {
|
|
69
|
-
if (event.toState === 'visible' &&
|
|
76
|
+
if (event.toState === 'visible' &&
|
|
77
|
+
this.layoutService.isDesktop() &&
|
|
78
|
+
(this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
|
|
70
79
|
const el = event.element;
|
|
71
80
|
const elParent = el.parentElement;
|
|
72
81
|
this.calculatePosition(el, elParent);
|
|
@@ -98,7 +107,7 @@ export class AppMenuItemComponent {
|
|
|
98
107
|
return;
|
|
99
108
|
}
|
|
100
109
|
// navigate with hover
|
|
101
|
-
if (this.root && this.isSlim || this.isHorizontal || this.isSlimPlus) {
|
|
110
|
+
if ((this.root && this.isSlim) || this.isHorizontal || this.isSlimPlus) {
|
|
102
111
|
this.layoutService.state.menuHoverActive = !this.layoutService.state.menuHoverActive;
|
|
103
112
|
}
|
|
104
113
|
// execute command
|
|
@@ -133,11 +142,14 @@ export class AppMenuItemComponent {
|
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
get submenuAnimation() {
|
|
136
|
-
if (this.layoutService.isDesktop() &&
|
|
145
|
+
if (this.layoutService.isDesktop() &&
|
|
146
|
+
(this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
|
|
137
147
|
return this.active ? 'visible' : 'hidden';
|
|
138
148
|
}
|
|
139
149
|
else
|
|
140
|
-
return this.root ? 'expanded'
|
|
150
|
+
return (this.root ? 'expanded'
|
|
151
|
+
: this.active ? 'expanded'
|
|
152
|
+
: 'collapsed');
|
|
141
153
|
}
|
|
142
154
|
get isHorizontal() {
|
|
143
155
|
return this.layoutService.isHorizontal();
|
|
@@ -161,88 +173,73 @@ export class AppMenuItemComponent {
|
|
|
161
173
|
}
|
|
162
174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuItemComponent, deps: [{ token: i1.LayoutService }, { token: i0.ChangeDetectorRef }, { token: i2.Router }, { token: i3.MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
175
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppMenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, viewQueries: [{ propertyName: "submenu", first: true, predicate: ["submenu"], descendants: true }], ngImport: i0, template: `
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
[pTooltip]="item.label"
|
|
214
|
-
[tooltipDisabled]="!(isSlim && root)">
|
|
215
|
-
|
|
216
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
176
|
+
<ng-container>
|
|
177
|
+
@if (root) {
|
|
178
|
+
<div class="layout-menuitem-root-text">
|
|
179
|
+
{{ item.label }}
|
|
180
|
+
</div>
|
|
181
|
+
}
|
|
182
|
+
@if (item.items?.length) {
|
|
183
|
+
<a
|
|
184
|
+
[attr.href]="item.url"
|
|
185
|
+
(click)="itemClick($event)"
|
|
186
|
+
(mouseenter)="onMouseEnter()"
|
|
187
|
+
[attr.target]="item.target"
|
|
188
|
+
tabindex="0"
|
|
189
|
+
pRipple
|
|
190
|
+
[pTooltip]="item.label"
|
|
191
|
+
[tooltipDisabled]="!(isSlim && root && !active)">
|
|
192
|
+
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
193
|
+
<span class="layout-menuitem-text">{{ item.label }}</span>
|
|
194
|
+
@if (item.items) {
|
|
195
|
+
<i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
|
|
196
|
+
}
|
|
197
|
+
</a>
|
|
198
|
+
} @else {
|
|
199
|
+
<a
|
|
200
|
+
(click)="itemClick($event)"
|
|
201
|
+
(mouseenter)="onMouseEnter()"
|
|
202
|
+
[routerLink]="item.routerLink"
|
|
203
|
+
routerLinkActive="active-route"
|
|
204
|
+
[routerLinkActiveOptions]="
|
|
205
|
+
item.routerLinkActiveOptions || {
|
|
206
|
+
paths: 'exact',
|
|
207
|
+
queryParams: 'ignored',
|
|
208
|
+
matrixParams: 'ignored',
|
|
209
|
+
fragment: 'ignored'
|
|
210
|
+
}
|
|
211
|
+
"
|
|
212
|
+
[fragment]="item.fragment"
|
|
213
|
+
[queryParamsHandling]="item.queryParamsHandling"
|
|
214
|
+
[preserveFragment]="item.preserveFragment"
|
|
215
|
+
[skipLocationChange]="item.skipLocationChange"
|
|
216
|
+
[replaceUrl]="item.replaceUrl"
|
|
217
|
+
[state]="item.state"
|
|
218
|
+
[queryParams]="item.queryParams"
|
|
219
|
+
[attr.target]="item.target"
|
|
220
|
+
tabindex="0"
|
|
221
|
+
pRipple
|
|
222
|
+
[pTooltip]="item.label"
|
|
223
|
+
[tooltipDisabled]="!(isSlim && root)">
|
|
224
|
+
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
217
225
|
|
|
218
|
-
|
|
226
|
+
<span class="layout-menuitem-text">{{ item.label }}</span>
|
|
219
227
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
</a>
|
|
228
|
+
@if (item.items) {
|
|
229
|
+
<i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
|
|
230
|
+
}
|
|
231
|
+
</a>
|
|
226
232
|
}
|
|
227
|
-
|
|
233
|
+
|
|
228
234
|
@if (item.items) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
@for (child of item.items; track child; let i = $index) {
|
|
235
|
-
<li
|
|
236
|
-
app-menuitem
|
|
237
|
-
[item]="child"
|
|
238
|
-
[index]="i"
|
|
239
|
-
[parentKey]="key">
|
|
240
|
-
</li>
|
|
241
|
-
}
|
|
242
|
-
</ul>
|
|
235
|
+
<ul #submenu [@children]="submenuAnimation" (@children.done)="onSubmenuAnimated($event)">
|
|
236
|
+
@for (child of item.items; track child; let i = $index) {
|
|
237
|
+
<li app-menuitem [item]="child" [index]="i" [parentKey]="key"></li>
|
|
238
|
+
}
|
|
239
|
+
</ul>
|
|
243
240
|
}
|
|
244
|
-
|
|
245
|
-
|
|
241
|
+
</ng-container>
|
|
242
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AppMenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i5.Ripple, selector: "[pRipple]" }], animations: [
|
|
246
243
|
trigger('children', [
|
|
247
244
|
state('collapsed', style({
|
|
248
245
|
height: '0'
|
|
@@ -266,88 +263,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
266
263
|
standalone: true,
|
|
267
264
|
selector: '[app-menuitem]',
|
|
268
265
|
template: `
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
[pTooltip]="item.label"
|
|
319
|
-
[tooltipDisabled]="!(isSlim && root)">
|
|
320
|
-
|
|
321
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
266
|
+
<ng-container>
|
|
267
|
+
@if (root) {
|
|
268
|
+
<div class="layout-menuitem-root-text">
|
|
269
|
+
{{ item.label }}
|
|
270
|
+
</div>
|
|
271
|
+
}
|
|
272
|
+
@if (item.items?.length) {
|
|
273
|
+
<a
|
|
274
|
+
[attr.href]="item.url"
|
|
275
|
+
(click)="itemClick($event)"
|
|
276
|
+
(mouseenter)="onMouseEnter()"
|
|
277
|
+
[attr.target]="item.target"
|
|
278
|
+
tabindex="0"
|
|
279
|
+
pRipple
|
|
280
|
+
[pTooltip]="item.label"
|
|
281
|
+
[tooltipDisabled]="!(isSlim && root && !active)">
|
|
282
|
+
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
283
|
+
<span class="layout-menuitem-text">{{ item.label }}</span>
|
|
284
|
+
@if (item.items) {
|
|
285
|
+
<i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
|
|
286
|
+
}
|
|
287
|
+
</a>
|
|
288
|
+
} @else {
|
|
289
|
+
<a
|
|
290
|
+
(click)="itemClick($event)"
|
|
291
|
+
(mouseenter)="onMouseEnter()"
|
|
292
|
+
[routerLink]="item.routerLink"
|
|
293
|
+
routerLinkActive="active-route"
|
|
294
|
+
[routerLinkActiveOptions]="
|
|
295
|
+
item.routerLinkActiveOptions || {
|
|
296
|
+
paths: 'exact',
|
|
297
|
+
queryParams: 'ignored',
|
|
298
|
+
matrixParams: 'ignored',
|
|
299
|
+
fragment: 'ignored'
|
|
300
|
+
}
|
|
301
|
+
"
|
|
302
|
+
[fragment]="item.fragment"
|
|
303
|
+
[queryParamsHandling]="item.queryParamsHandling"
|
|
304
|
+
[preserveFragment]="item.preserveFragment"
|
|
305
|
+
[skipLocationChange]="item.skipLocationChange"
|
|
306
|
+
[replaceUrl]="item.replaceUrl"
|
|
307
|
+
[state]="item.state"
|
|
308
|
+
[queryParams]="item.queryParams"
|
|
309
|
+
[attr.target]="item.target"
|
|
310
|
+
tabindex="0"
|
|
311
|
+
pRipple
|
|
312
|
+
[pTooltip]="item.label"
|
|
313
|
+
[tooltipDisabled]="!(isSlim && root)">
|
|
314
|
+
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
322
315
|
|
|
323
|
-
|
|
316
|
+
<span class="layout-menuitem-text">{{ item.label }}</span>
|
|
324
317
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
}
|
|
330
|
-
</a>
|
|
318
|
+
@if (item.items) {
|
|
319
|
+
<i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
|
|
320
|
+
}
|
|
321
|
+
</a>
|
|
331
322
|
}
|
|
332
|
-
|
|
323
|
+
|
|
333
324
|
@if (item.items) {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
@for (child of item.items; track child; let i = $index) {
|
|
340
|
-
<li
|
|
341
|
-
app-menuitem
|
|
342
|
-
[item]="child"
|
|
343
|
-
[index]="i"
|
|
344
|
-
[parentKey]="key">
|
|
345
|
-
</li>
|
|
346
|
-
}
|
|
347
|
-
</ul>
|
|
325
|
+
<ul #submenu [@children]="submenuAnimation" (@children.done)="onSubmenuAnimated($event)">
|
|
326
|
+
@for (child of item.items; track child; let i = $index) {
|
|
327
|
+
<li app-menuitem [item]="child" [index]="i" [parentKey]="key"></li>
|
|
328
|
+
}
|
|
329
|
+
</ul>
|
|
348
330
|
}
|
|
349
|
-
|
|
350
|
-
|
|
331
|
+
</ng-container>
|
|
332
|
+
`,
|
|
351
333
|
imports: [NgClass, RouterLink, RouterLinkActive, NgTemplateOutlet, TooltipModule, RippleModule],
|
|
352
334
|
animations: [
|
|
353
335
|
trigger('children', [
|
|
@@ -396,4 +378,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
396
378
|
type: Component,
|
|
397
379
|
args: [{ standalone: true, selector: 'app-menu', imports: [AppMenuItemComponent], template: "<ul class=\"layout-menu\">\n\t@for (item of menuService.menuItems(); track $index) {\n\t\t@if (item.separator) {\n\t\t\t<li class=\"menu-separator\"></li>\n\t\t} @else {\n\t\t\t<li app-menuitem [item]=\"item\" [index]=\"$index\" [root]=\"true\"></li>\n\t\t}\n\t}\n</ul>\n" }]
|
|
398
380
|
}] });
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL21lbnUvYXBwLm1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL21lbnUvYXBwLm1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBcUIsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGFBQWEsRUFBVSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQTRHN0QsTUFBTSxPQUFPLG9CQUFvQjtJQW9CaEMsWUFBbUIsYUFBNEIsRUFBVSxFQUFxQixFQUFTLE1BQWMsRUFBVSxXQUF3QjtRQUFwSCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUnZJLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFNZixRQUFHLEdBQVcsRUFBRSxDQUFDO1FBR2hCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUMvQixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUMvRixDQUFDO3FCQUNJLENBQUM7b0JBQ0wsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3JFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNyQixDQUFDO2dCQUNGLENBQUM7WUFDRixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDO2FBQ3RFLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLENBQUM7aUJBQ0ksQ0FBQztnQkFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUNuQyxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkYsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BGLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDRixDQUFDO0lBRUQsa0JBQWtCO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7SUFDRixDQUFDO0lBRUQsMEJBQTBCO1FBQ3pCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFMUosSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFxQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUssTUFBTSxFQUFFLEdBQXFCLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQXFCLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0YsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQW9CLEVBQUUsTUFBbUI7UUFDMUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDckQsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM1RCxRQUFRO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUV4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxjQUFjLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDcEYsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUMzRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ3JGLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFZO1FBQ3JCLGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDUixDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUN0RixDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBRTNCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDM0MsQ0FBQztRQUNGLENBQUM7YUFDSSxDQUFDO1lBQ0wsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztZQUN6RCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsWUFBWTtRQUNYLHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxRyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNuQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQyxDQUFDOztZQUdBLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQ0ksV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNGLENBQUM7OEdBeExXLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdYQXRHdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrRlAsNERBb0JTLG9CQUFvQiwyR0FuQnRCLE9BQU8sb0ZBQUUsVUFBVSxvT0FBRSxnQkFBZ0IsNk1BQW9CLGFBQWEscVhBQUUsWUFBWSxnRkFDbEY7WUFDWCxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUNuQixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztvQkFDeEIsTUFBTSxFQUFFLEdBQUc7aUJBQ1gsQ0FBQyxDQUFDO2dCQUNILEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO29CQUN2QixNQUFNLEVBQUUsR0FBRztpQkFDWCxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxNQUFNO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztvQkFDdEIsT0FBTyxFQUFFLE9BQU87aUJBQ2hCLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7YUFDckYsQ0FBQztTQUNGOzsyRkFFVyxvQkFBb0I7a0JBekdoQyxTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrRlA7b0JBQ0gsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO29CQUMvRixVQUFVLEVBQUU7d0JBQ1gsT0FBTyxDQUFDLFVBQVUsRUFBRTs0QkFDbkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7Z0NBQ3hCLE1BQU0sRUFBRSxHQUFHOzZCQUNYLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztnQ0FDdkIsTUFBTSxFQUFFLEdBQUc7NkJBQ1gsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dDQUNyQixPQUFPLEVBQUUsTUFBTTs2QkFDZixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7Z0NBQ3RCLE9BQU8sRUFBRSxPQUFPOzZCQUNoQixDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUNyRixDQUFDO3FCQUNGO2lCQUNEO2lLQUdTLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRThDLElBQUk7c0JBQXZELEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUV6QyxTQUFTO3NCQUFqQixLQUFLO2dCQUVnQixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBa0toQixXQUFXO3NCQURkLFdBQVc7dUJBQUMsdUJBQXVCOztBQXNCckMsTUFBTSxPQUFPLGdCQUFnQjtJQU43QjtRQU9DLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ2xDOzhHQUZZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLG9FQzFUN0IsaVJBU0EsNENEZ0hhLG9CQUFvQjs7MkZBaU1wQixnQkFBZ0I7a0JBTjVCLFNBQVM7aUNBQ0csSUFBSSxZQUNOLFVBQVUsV0FDWCxDQUFDLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgUmlwcGxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2VsZWN0b3I6ICdbYXBwLW1lbnVpdGVtXScsXG5cdHRlbXBsYXRlOiBgXG5cdFx0XHQ8bmctY29udGFpbmVyPlxuXHRcdFx0ICBAaWYgKHJvb3QpIHtcblx0XHRcdCAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXJvb3QtdGV4dFwiPlxuXHRcdFx0ICAgICAge3sgaXRlbS5sYWJlbCB9fVxuXHRcdFx0ICAgIDwvZGl2PlxuXHRcdFx0ICB9XG5cdFx0XHQgIEBpZiAoaXRlbS5pdGVtcz8ubGVuZ3RoKSB7XG5cdFx0XHQgICAgPGFcblx0XHRcdCAgICAgIFthdHRyLmhyZWZdPVwiaXRlbS51cmxcIlxuXHRcdFx0ICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcblx0XHRcdCAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCJcblx0XHRcdCAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG5cdFx0XHQgICAgICB0YWJpbmRleD1cIjBcIlxuXHRcdFx0ICAgICAgcFJpcHBsZVxuXHRcdFx0ICAgICAgW3BUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuXHRcdFx0ICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhKGlzU2xpbSAmJiByb290ICYmICFhY3RpdmUpXCI+XG5cdFx0XHQgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1pY29uXCI+PC9pPlxuXHRcdFx0ICAgICAgPHNwYW4gY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0tdGV4dFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG5cdFx0XHQgICAgICBAaWYgKGl0ZW0uaXRlbXMpIHtcblx0XHRcdCAgICAgICAgPGlcblx0XHRcdCAgICAgICAgICBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiXG5cdFx0XHQgICAgICAgID48L2k+XG5cdFx0XHQgICAgICB9XG5cdFx0XHQgICAgPC9hPlxuXHRcdFx0ICB9XG5cdFx0XHQgIEBlbHNlIHtcblx0XHRcdCAgICA8YVxuXHRcdFx0ICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcblx0XHRcdCAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCJcblx0XHRcdCAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG5cdFx0XHQgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlLXJvdXRlXCJcblx0XHRcdFx0XHRcdFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJcblx0XHRcdFx0XHRcdFx0aXRlbS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyB8fCB7XG5cdFx0XHRcdFx0XHRcdFx0cGF0aHM6ICdleGFjdCcsXG5cdFx0XHRcdFx0XHRcdFx0cXVlcnlQYXJhbXM6ICdpZ25vcmVkJyxcblx0XHRcdFx0XHRcdFx0XHRtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyxcblx0XHRcdFx0XHRcdFx0XHRmcmFnbWVudDogJ2lnbm9yZWQnXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFwiXG5cdFx0XHRcdFx0XHRbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudFwiXG5cdFx0XHRcdFx0XHRbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuXHRcdFx0XHRcdFx0W3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XCJcblx0XHRcdFx0XHRcdFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbS5za2lwTG9jYXRpb25DaGFuZ2VcIlxuXHRcdFx0XHRcdFx0W3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCJcblx0XHRcdFx0XHRcdFtzdGF0ZV09XCJpdGVtLnN0YXRlXCJcblx0XHRcdFx0XHRcdFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCJcblx0XHRcdFx0XHRcdFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG5cdFx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdFx0cFJpcHBsZVxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuXHRcdFx0XHRcdFx0W3Rvb2x0aXBEaXNhYmxlZF09XCIhKGlzU2xpbSAmJiByb290KVwiPlxuXG5cdFx0XHQgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cblxuXHRcdFx0ICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuXG5cdFx0XHQgICAgQGlmIChpdGVtLml0ZW1zKSB7XG5cdFx0XHQgICAgICA8aVxuXHRcdFx0ICAgICAgICBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiXG5cdFx0XHQgICAgICA+PC9pPlxuXHRcdFx0ICAgIH1cblx0XHRcdCAgPC9hPlxuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRAaWYgKGl0ZW0uaXRlbXMpIHtcblx0XHRcdCAgPHVsXG5cdFx0XHQgICAgI3N1Ym1lbnVcblx0XHRcdCAgICBbQGNoaWxkcmVuXT1cInN1Ym1lbnVBbmltYXRpb25cIlxuXHRcdFx0ICAgIChAY2hpbGRyZW4uZG9uZSk9XCJvblN1Ym1lbnVBbmltYXRlZCgkZXZlbnQpXCI+XG5cdFx0XHRcdFx0XG5cdFx0XHQgICAgQGZvciAoY2hpbGQgb2YgaXRlbS5pdGVtczsgdHJhY2sgY2hpbGQ7IGxldCBpID0gJGluZGV4KSB7XG5cdFx0XHQgICAgICA8bGlcblx0XHRcdCAgICAgICAgYXBwLW1lbnVpdGVtXG5cdFx0XHQgICAgICAgIFtpdGVtXT1cImNoaWxkXCJcblx0XHRcdCAgICAgICAgW2luZGV4XT1cImlcIlxuXHRcdFx0ICAgICAgICBbcGFyZW50S2V5XT1cImtleVwiPlxuXHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdCAgICB9XG5cdFx0XHQgIDwvdWw+XG5cdFx0XHR9XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdGAsXG5cdGltcG9ydHM6IFtOZ0NsYXNzLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUb29sdGlwTW9kdWxlLCBSaXBwbGVNb2R1bGVdLFxuXHRhbmltYXRpb25zOiBbXG5cdFx0dHJpZ2dlcignY2hpbGRyZW4nLCBbXG5cdFx0XHRzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoe1xuXHRcdFx0XHRoZWlnaHQ6ICcwJ1xuXHRcdFx0fSkpLFxuXHRcdFx0c3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoe1xuXHRcdFx0XHRoZWlnaHQ6ICcqJ1xuXHRcdFx0fSkpLFxuXHRcdFx0c3RhdGUoJ2hpZGRlbicsIHN0eWxlKHtcblx0XHRcdFx0ZGlzcGxheTogJ25vbmUnXG5cdFx0XHR9KSksXG5cdFx0XHRzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcblx0XHRcdFx0ZGlzcGxheTogJ2Jsb2NrJ1xuXHRcdFx0fSkpLFxuXHRcdFx0dHJhbnNpdGlvbignY29sbGFwc2VkIDw9PiBleHBhbmRlZCcsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpKVxuXHRcdF0pXG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0QElucHV0KCkgaXRlbSE6IE1lbnVJdGVtO1xuXG5cdEBJbnB1dCgpIGluZGV4ITogbnVtYmVyO1xuXG5cdEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MubGF5b3V0LXJvb3QtbWVudWl0ZW0nKSByb290ITogYm9vbGVhbjtcblxuXHRASW5wdXQoKSBwYXJlbnRLZXkhOiBzdHJpbmc7XG5cblx0QFZpZXdDaGlsZCgnc3VibWVudScpIHN1Ym1lbnUhOiBFbGVtZW50UmVmO1xuXG5cdGFjdGl2ZSA9IGZhbHNlO1xuXG5cdG1lbnVTb3VyY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHRtZW51UmVzZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHRrZXk6IHN0cmluZyA9IFwiXCI7XG5cblx0Y29uc3RydWN0b3IocHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlKSB7XG5cdFx0dGhpcy5tZW51U291cmNlU3Vic2NyaXB0aW9uID0gdGhpcy5tZW51U2VydmljZS5tZW51U291cmNlJC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRpZiAodmFsdWUucm91dGVFdmVudCkge1xuXHRcdFx0XHRcdHRoaXMuYWN0aXZlID0gKHZhbHVlLmtleSA9PT0gdGhpcy5rZXkgfHwgdmFsdWUua2V5LnN0YXJ0c1dpdGgodGhpcy5rZXkgKyAnLScpKSA/IHRydWUgOiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRpZiAodmFsdWUua2V5ICE9PSB0aGlzLmtleSAmJiAhdmFsdWUua2V5LnN0YXJ0c1dpdGgodGhpcy5rZXkgKyAnLScpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVNlcnZpY2UucmVzZXRTb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG5cdFx0XHQuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmlzU2xpbVBsdXMgfHwgdGhpcy5pc1NsaW0gfHwgdGhpcy5pc0hvcml6b250YWwpIHtcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGlmICh0aGlzLml0ZW0ucm91dGVyTGluaykge1xuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmtleSA9IHRoaXMucGFyZW50S2V5ID8gdGhpcy5wYXJlbnRLZXkgKyAnLScgKyB0aGlzLmluZGV4IDogU3RyaW5nKHRoaXMuaW5kZXgpO1xuXG5cdFx0aWYgKCEodGhpcy5pc1NsaW1QbHVzIHx8IHRoaXMuaXNTbGltIHx8IHRoaXMuaXNIb3Jpem9udGFsKSAmJiB0aGlzLml0ZW0ucm91dGVyTGluaykge1xuXHRcdFx0dGhpcy51cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcblx0XHRpZiAodGhpcy5yb290ICYmIHRoaXMuYWN0aXZlICYmIHRoaXMubGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSAmJiAodGhpcy5sYXlvdXRTZXJ2aWNlLmlzSG9yaXpvbnRhbCgpIHx8IHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW0oKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltUGx1cygpKSkge1xuXHRcdFx0dGhpcy5jYWxjdWxhdGVQb3NpdGlvbih0aGlzLnN1Ym1lbnU/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3VibWVudT8ubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHR1cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpIHtcblx0XHRsZXQgYWN0aXZlUm91dGUgPSB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0aGlzLml0ZW0ucm91dGVyTGlua1swXSwgeyBwYXRoczogJ2V4YWN0JywgcXVlcnlQYXJhbXM6ICdpZ25vcmVkJywgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsIGZyYWdtZW50OiAnaWdub3JlZCcgfSk7XG5cblx0XHRpZiAoYWN0aXZlUm91dGUpIHtcblx0XHRcdHRoaXMubWVudVNlcnZpY2Uub25NZW51U3RhdGVDaGFuZ2UoeyBrZXk6IHRoaXMua2V5LCByb3V0ZUV2ZW50OiB0cnVlIH0pO1xuXHRcdH1cblx0fVxuXG5cdG9uU3VibWVudUFuaW1hdGVkKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuXHRcdGlmIChldmVudC50b1N0YXRlID09PSAndmlzaWJsZScgJiYgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzRGVza3RvcCgpICYmICh0aGlzLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbSgpIHx8IHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW1QbHVzKCkpKSB7XG5cdFx0XHRjb25zdCBlbCA9IDxIVE1MVUxpc3RFbGVtZW50PmV2ZW50LmVsZW1lbnQ7XG5cdFx0XHRjb25zdCBlbFBhcmVudCA9IDxIVE1MVUxpc3RFbGVtZW50PmVsLnBhcmVudEVsZW1lbnQ7XG5cdFx0XHR0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKGVsLCBlbFBhcmVudCk7XG5cdFx0fVxuXHR9XG5cblx0Y2FsY3VsYXRlUG9zaXRpb24ob3ZlcmxheTogSFRNTEVsZW1lbnQsIHRhcmdldDogSFRNTEVsZW1lbnQpIHtcblx0XHRpZiAob3ZlcmxheSkge1xuXHRcdFx0Y29uc3QgeyBsZWZ0LCB0b3AgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRcdGNvbnN0IFt2V2lkdGgsIHZIZWlnaHRdID0gW3dpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHRdO1xuXHRcdFx0Y29uc3QgW29XaWR0aCwgb0hlaWdodF0gPSBbb3ZlcmxheS5vZmZzZXRXaWR0aCwgb3ZlcmxheS5vZmZzZXRIZWlnaHRdO1xuXHRcdFx0Y29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhcldpZHRoKCk7XG5cdFx0XHQvLyByZXNldFxuXHRcdFx0b3ZlcmxheS5zdHlsZS50b3AgPSAnJztcblx0XHRcdG92ZXJsYXkuc3R5bGUubGVmdCA9ICcnO1xuXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLmlzSG9yaXpvbnRhbCgpKSB7XG5cdFx0XHRcdGNvbnN0IHdpZHRoID0gbGVmdCArIG9XaWR0aCArIHNjcm9sbGJhcldpZHRoO1xuXHRcdFx0XHRvdmVybGF5LnN0eWxlLmxlZnQgPSB2V2lkdGggPCB3aWR0aCA/IGAke2xlZnQgLSAod2lkdGggLSB2V2lkdGgpfXB4YCA6IGAke2xlZnR9cHhgO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbVBsdXMoKSkge1xuXHRcdFx0XHRjb25zdCBoZWlnaHQgPSB0b3AgKyBvSGVpZ2h0O1xuXHRcdFx0XHRvdmVybGF5LnN0eWxlLnRvcCA9IHZIZWlnaHQgPCBoZWlnaHQgPyBgJHt0b3AgLSAoaGVpZ2h0IC0gdkhlaWdodCl9cHhgIDogYCR7dG9wfXB4YDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpdGVtQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG5cdFx0Ly8gYXZvaWQgcHJvY2Vzc2luZyBkaXNhYmxlZCBpdGVtc1xuXHRcdGlmICh0aGlzLml0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gbmF2aWdhdGUgd2l0aCBob3ZlclxuXHRcdGlmICh0aGlzLnJvb3QgJiYgdGhpcy5pc1NsaW0gfHwgdGhpcy5pc0hvcml6b250YWwgfHwgdGhpcy5pc1NsaW1QbHVzKSB7XG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubWVudUhvdmVyQWN0aXZlID0gIXRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5tZW51SG92ZXJBY3RpdmU7XG5cdFx0fVxuXG5cdFx0Ly8gZXhlY3V0ZSBjb21tYW5kXG5cdFx0aWYgKHRoaXMuaXRlbS5jb21tYW5kKSB7XG5cdFx0XHR0aGlzLml0ZW0uY29tbWFuZCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW0gfSk7XG5cdFx0fVxuXG5cdFx0Ly8gdG9nZ2xlIGFjdGl2ZSBzdGF0ZVxuXHRcdGlmICh0aGlzLml0ZW0uaXRlbXMpIHtcblx0XHRcdHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuXG5cdFx0XHRpZiAodGhpcy5yb290ICYmIHRoaXMuYWN0aXZlICYmICh0aGlzLmlzU2xpbSB8fCB0aGlzLmlzSG9yaXpvbnRhbCB8fCB0aGlzLmlzU2xpbVBsdXMpKSB7XG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5vbk92ZXJsYXlTdWJtZW51T3BlbigpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGlmICh0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKSkge1xuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5pc1NsaW0gfHwgdGhpcy5pc0hvcml6b250YWwgfHwgdGhpcy5pc1NsaW1QbHVzKSB7XG5cdFx0XHRcdHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm1lbnVIb3ZlckFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMubWVudVNlcnZpY2Uub25NZW51U3RhdGVDaGFuZ2UoeyBrZXk6IHRoaXMua2V5IH0pO1xuXHR9XG5cblx0b25Nb3VzZUVudGVyKCkge1xuXHRcdC8vIGFjdGl2YXRlIGl0ZW0gb24gaG92ZXJcblx0XHRpZiAodGhpcy5yb290ICYmICh0aGlzLmlzU2xpbSB8fCB0aGlzLmlzSG9yaXpvbnRhbCB8fCB0aGlzLmlzU2xpbVBsdXMpICYmIHRoaXMubGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSkge1xuXHRcdFx0aWYgKHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5tZW51SG92ZXJBY3RpdmUpIHtcblx0XHRcdFx0dGhpcy5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLm1lbnVTZXJ2aWNlLm9uTWVudVN0YXRlQ2hhbmdlKHsga2V5OiB0aGlzLmtleSB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXQgc3VibWVudUFuaW1hdGlvbigpIHtcblx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLmlzRGVza3RvcCgpICYmICh0aGlzLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbSgpIHx8IHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW1QbHVzKCkpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJztcblx0XHR9XG5cblx0XHRlbHNlXG5cdFx0XHRyZXR1cm4gdGhpcy5yb290ID8gJ2V4cGFuZGVkJyA6ICh0aGlzLmFjdGl2ZSA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJyk7XG5cdH1cblxuXHRnZXQgaXNIb3Jpem9udGFsKCkge1xuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCk7XG5cdH1cblxuXHRnZXQgaXNTbGltKCkge1xuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltKCk7XG5cdH1cblxuXHRnZXQgaXNTbGltUGx1cygpIHtcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbVBsdXMoKTtcblx0fVxuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlLW1lbnVpdGVtJylcblx0Z2V0IGFjdGl2ZUNsYXNzKCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZSAmJiAhdGhpcy5yb290O1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5tZW51U291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWVudVJlc2V0U3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2VsZWN0b3I6ICdhcHAtbWVudScsXG5cdGltcG9ydHM6IFtBcHBNZW51SXRlbUNvbXBvbmVudF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAubWVudS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwTWVudUNvbXBvbmVudCB7XG5cdG1lbnVTZXJ2aWNlID0gaW5qZWN0KE1lbnVTZXJ2aWNlKTtcbn0iLCI8dWwgY2xhc3M9XCJsYXlvdXQtbWVudVwiPlxuXHRAZm9yIChpdGVtIG9mIG1lbnVTZXJ2aWNlLm1lbnVJdGVtcygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRAaWYgKGl0ZW0uc2VwYXJhdG9yKSB7XG5cdFx0XHQ8bGkgY2xhc3M9XCJtZW51LXNlcGFyYXRvclwiPjwvbGk+XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQ8bGkgYXBwLW1lbnVpdGVtIFtpdGVtXT1cIml0ZW1cIiBbaW5kZXhdPVwiJGluZGV4XCIgW3Jvb3RdPVwidHJ1ZVwiPjwvbGk+XG5cdFx0fVxuXHR9XG48L3VsPlxuIl19
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL21lbnUvYXBwLm1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL21lbnUvYXBwLm1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFFTixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFHakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7QUF5RzdELE1BQU0sT0FBTyxvQkFBb0I7SUFtQmhDLFlBQ1EsYUFBNEIsRUFDM0IsRUFBcUIsRUFDdEIsTUFBYyxFQUNiLFdBQXdCO1FBSHpCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3RCLFdBQU0sR0FB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QUNYLENBQUMsQ0FDRjs0QkFDRCxLQUFLLENBQ0osUUFBUSxFQUNSLEtBQUssQ0FBQztnQ0FDTCxPQUFPLEVBQUUsTUFBTTs2QkFDZixDQUFDLENBQ0Y7NEJBQ0QsS0FBSyxDQUNKLFNBQVMsRUFDVCxLQUFLLENBQUM7Z0NBQ0wsT0FBTyxFQUFFLE9BQU87NkJBQ2hCLENBQUMsQ0FDRjs0QkFDRCxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3JGLENBQUM7cUJBQ0Y7aUJBQ0Q7aUtBRVMsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFOEMsSUFBSTtzQkFBdkQsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyw0QkFBNEI7Z0JBRXpDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWdCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFzTGhCLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyx1QkFBdUI7O0FBc0JyQyxNQUFNLE9BQU8sZ0JBQWdCO0lBTjdCO1FBT0MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDbEM7OEdBRlksZ0JBQWdCO2tHQUFoQixnQkFBZ0Isb0VDcFY3QixpUkFTQSw0Q0R1SGEsb0JBQW9COzsyRkFvTnBCLGdCQUFnQjtrQkFONUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sVUFBVSxXQUNYLENBQUMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdEhvc3RCaW5kaW5nLFxuXHRJbnB1dCxcblx0T25EZXN0cm95LFxuXHRPbkluaXQsXG5cdFZpZXdDaGlsZCxcblx0aW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgUmlwcGxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2VsZWN0b3I6ICdbYXBwLW1lbnVpdGVtXScsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRhaW5lcj5cblx0XHRcdEBpZiAocm9vdCkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXJvb3QtdGV4dFwiPlxuXHRcdFx0XHRcdHt7IGl0ZW0ubGFiZWwgfX1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHR9XG5cdFx0XHRAaWYgKGl0ZW0uaXRlbXM/Lmxlbmd0aCkge1xuXHRcdFx0XHQ8YVxuXHRcdFx0XHRcdFthdHRyLmhyZWZdPVwiaXRlbS51cmxcIlxuXHRcdFx0XHRcdChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG5cdFx0XHRcdFx0KG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuXHRcdFx0XHRcdFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG5cdFx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0XHRwUmlwcGxlXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuXHRcdFx0XHRcdFt0b29sdGlwRGlzYWJsZWRdPVwiIShpc1NsaW0gJiYgcm9vdCAmJiAhYWN0aXZlKVwiPlxuXHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLWljb25cIj48L2k+XG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0tdGV4dFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG5cdFx0XHRcdFx0QGlmIChpdGVtLml0ZW1zKSB7XG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiPjwvaT5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvYT5cblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHQ8YVxuXHRcdFx0XHRcdChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG5cdFx0XHRcdFx0KG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuXHRcdFx0XHRcdFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG5cdFx0XHRcdFx0cm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZS1yb3V0ZVwiXG5cdFx0XHRcdFx0W3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIlxuXHRcdFx0XHRcdFx0aXRlbS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyB8fCB7XG5cdFx0XHRcdFx0XHRcdHBhdGhzOiAnZXhhY3QnLFxuXHRcdFx0XHRcdFx0XHRxdWVyeVBhcmFtczogJ2lnbm9yZWQnLFxuXHRcdFx0XHRcdFx0XHRtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyxcblx0XHRcdFx0XHRcdFx0ZnJhZ21lbnQ6ICdpZ25vcmVkJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFwiXG5cdFx0XHRcdFx0W2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnRcIlxuXHRcdFx0XHRcdFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cIml0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZ1wiXG5cdFx0XHRcdFx0W3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XCJcblx0XHRcdFx0XHRbc2tpcExvY2F0aW9uQ2hhbmdlXT1cIml0ZW0uc2tpcExvY2F0aW9uQ2hhbmdlXCJcblx0XHRcdFx0XHRbcmVwbGFjZVVybF09XCJpdGVtLnJlcGxhY2VVcmxcIlxuXHRcdFx0XHRcdFtzdGF0ZV09XCJpdGVtLnN0YXRlXCJcblx0XHRcdFx0XHRbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG5cdFx0XHRcdFx0W2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCJcblx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdHBSaXBwbGVcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXG5cdFx0XHRcdFx0W3Rvb2x0aXBEaXNhYmxlZF09XCIhKGlzU2xpbSAmJiByb290KVwiPlxuXHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLWljb25cIj48L2k+XG5cblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cblxuXHRcdFx0XHRcdEBpZiAoaXRlbS5pdGVtcykge1xuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1hbmdsZS1kb3duIGxheW91dC1zdWJtZW51LXRvZ2dsZXJcIj48L2k+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2E+XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAoaXRlbS5pdGVtcykge1xuXHRcdFx0XHQ8dWwgI3N1Ym1lbnUgW0BjaGlsZHJlbl09XCJzdWJtZW51QW5pbWF0aW9uXCIgKEBjaGlsZHJlbi5kb25lKT1cIm9uU3VibWVudUFuaW1hdGVkKCRldmVudClcIj5cblx0XHRcdFx0XHRAZm9yIChjaGlsZCBvZiBpdGVtLml0ZW1zOyB0cmFjayBjaGlsZDsgbGV0IGkgPSAkaW5kZXgpIHtcblx0XHRcdFx0XHRcdDxsaSBhcHAtbWVudWl0ZW0gW2l0ZW1dPVwiY2hpbGRcIiBbaW5kZXhdPVwiaVwiIFtwYXJlbnRLZXldPVwia2V5XCI+PC9saT5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvdWw+XG5cdFx0XHR9XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ0NsYXNzLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUb29sdGlwTW9kdWxlLCBSaXBwbGVNb2R1bGVdLFxuXHRhbmltYXRpb25zOiBbXG5cdFx0dHJpZ2dlcignY2hpbGRyZW4nLCBbXG5cdFx0XHRzdGF0ZShcblx0XHRcdFx0J2NvbGxhcHNlZCcsXG5cdFx0XHRcdHN0eWxlKHtcblx0XHRcdFx0XHRoZWlnaHQ6ICcwJ1xuXHRcdFx0XHR9KVxuXHRcdFx0KSxcblx0XHRcdHN0YXRlKFxuXHRcdFx0XHQnZXhwYW5kZWQnLFxuXHRcdFx0XHRzdHlsZSh7XG5cdFx0XHRcdFx0aGVpZ2h0OiAnKidcblx0XHRcdFx0fSlcblx0XHRcdCksXG5cdFx0XHRzdGF0ZShcblx0XHRcdFx0J2hpZGRlbicsXG5cdFx0XHRcdHN0eWxlKHtcblx0XHRcdFx0XHRkaXNwbGF5OiAnbm9uZSdcblx0XHRcdFx0fSlcblx0XHRcdCksXG5cdFx0XHRzdGF0ZShcblx0XHRcdFx0J3Zpc2libGUnLFxuXHRcdFx0XHRzdHlsZSh7XG5cdFx0XHRcdFx0ZGlzcGxheTogJ2Jsb2NrJ1xuXHRcdFx0XHR9KVxuXHRcdFx0KSxcblx0XHRcdHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcblx0XHRdKVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXHRASW5wdXQoKSBpdGVtITogTWVudUl0ZW07XG5cblx0QElucHV0KCkgaW5kZXghOiBudW1iZXI7XG5cblx0QElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXlvdXQtcm9vdC1tZW51aXRlbScpIHJvb3QhOiBib29sZWFuO1xuXG5cdEBJbnB1dCgpIHBhcmVudEtleSE6IHN0cmluZztcblxuXHRAVmlld0NoaWxkKCdzdWJtZW51Jykgc3VibWVudSE6IEVsZW1lbnRSZWY7XG5cblx0YWN0aXZlID0gZmFsc2U7XG5cblx0bWVudVNvdXJjZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdG1lbnVSZXNldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdGtleTogc3RyaW5nID0gJyc7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cdFx0cHVibGljIHJvdXRlcjogUm91dGVyLFxuXHRcdHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlXG5cdCkge1xuXHRcdHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVNlcnZpY2UubWVudVNvdXJjZSQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRpZiAodmFsdWUucm91dGVFdmVudCkge1xuXHRcdFx0XHRcdHRoaXMuYWN0aXZlID0gdmFsdWUua2V5ID09PSB0aGlzLmtleSB8fCB2YWx1ZS5rZXkuc3RhcnRzV2l0aCh0aGlzLmtleSArICctJykgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmtleSAhPT0gdGhpcy5rZXkgJiYgIXZhbHVlLmtleS5zdGFydHNXaXRoKHRoaXMua2V5ICsgJy0nKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLnJlc2V0U291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5hY3RpdmUgPSBmYWxzZTtcblx0XHR9KTtcblxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc1NsaW1QbHVzIHx8IHRoaXMuaXNTbGltIHx8IHRoaXMuaXNIb3Jpem9udGFsKSB7XG5cdFx0XHRcdHRoaXMuYWN0aXZlID0gZmFsc2U7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGhpcy5pdGVtLnJvdXRlckxpbmspIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMua2V5ID0gdGhpcy5wYXJlbnRLZXkgPyB0aGlzLnBhcmVudEtleSArICctJyArIHRoaXMuaW5kZXggOiBTdHJpbmcodGhpcy5pbmRleCk7XG5cblx0XHRpZiAoISh0aGlzLmlzU2xpbVBsdXMgfHwgdGhpcy5pc1NsaW0gfHwgdGhpcy5pc0hvcml6b250YWwpICYmIHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdBZnRlclZpZXdDaGVja2VkKCkge1xuXHRcdGlmIChcblx0XHRcdHRoaXMucm9vdCAmJlxuXHRcdFx0dGhpcy5hY3RpdmUgJiZcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSAmJlxuXHRcdFx0KHRoaXMubGF5b3V0U2VydmljZS5pc0hvcml6b250YWwoKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbVBsdXMoKSlcblx0XHQpIHtcblx0XHRcdHRoaXMuY2FsY3VsYXRlUG9zaXRpb24odGhpcy5zdWJtZW51Py5uYXRpdmVFbGVtZW50LCB0aGlzLnN1Ym1lbnU/Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cblx0dXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKSB7XG5cdFx0bGV0IGFjdGl2ZVJvdXRlID0gdGhpcy5yb3V0ZXIuaXNBY3RpdmUodGhpcy5pdGVtLnJvdXRlckxpbmtbMF0sIHtcblx0XHRcdHBhdGhzOiAnZXhhY3QnLFxuXHRcdFx0cXVlcnlQYXJhbXM6ICdpZ25vcmVkJyxcblx0XHRcdG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnLFxuXHRcdFx0ZnJhZ21lbnQ6ICdpZ25vcmVkJ1xuXHRcdH0pO1xuXG5cdFx0aWYgKGFjdGl2ZVJvdXRlKSB7XG5cdFx0XHR0aGlzLm1lbnVTZXJ2aWNlLm9uTWVudVN0YXRlQ2hhbmdlKHsga2V5OiB0aGlzLmtleSwgcm91dGVFdmVudDogdHJ1ZSB9KTtcblx0XHR9XG5cdH1cblxuXHRvblN1Ym1lbnVBbmltYXRlZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcblx0XHRpZiAoXG5cdFx0XHRldmVudC50b1N0YXRlID09PSAndmlzaWJsZScgJiZcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSAmJlxuXHRcdFx0KHRoaXMubGF5b3V0U2VydmljZS5pc0hvcml6b250YWwoKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbVBsdXMoKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IGVsID0gPEhUTUxVTGlzdEVsZW1lbnQ+ZXZlbnQuZWxlbWVudDtcblx0XHRcdGNvbnN0IGVsUGFyZW50ID0gPEhUTUxVTGlzdEVsZW1lbnQ+ZWwucGFyZW50RWxlbWVudDtcblx0XHRcdHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oZWwsIGVsUGFyZW50KTtcblx0XHR9XG5cdH1cblxuXHRjYWxjdWxhdGVQb3NpdGlvbihvdmVybGF5OiBIVE1MRWxlbWVudCwgdGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuXHRcdGlmIChvdmVybGF5KSB7XG5cdFx0XHRjb25zdCB7IGxlZnQsIHRvcCB9ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0Y29uc3QgW3ZXaWR0aCwgdkhlaWdodF0gPSBbd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodF07XG5cdFx0XHRjb25zdCBbb1dpZHRoLCBvSGVpZ2h0XSA9IFtvdmVybGF5Lm9mZnNldFdpZHRoLCBvdmVybGF5Lm9mZnNldEhlaWdodF07XG5cdFx0XHRjb25zdCBzY3JvbGxiYXJXaWR0aCA9IERvbUhhbmRsZXIuY2FsY3VsYXRlU2Nyb2xsYmFyV2lkdGgoKTtcblx0XHRcdC8vIHJlc2V0XG5cdFx0XHRvdmVybGF5LnN0eWxlLnRvcCA9ICcnO1xuXHRcdFx0b3ZlcmxheS5zdHlsZS5sZWZ0ID0gJyc7XG5cblx0XHRcdGlmICh0aGlzLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkpIHtcblx0XHRcdFx0Y29uc3Qgd2lkdGggPSBsZWZ0ICsgb1dpZHRoICsgc2Nyb2xsYmFyV2lkdGg7XG5cdFx0XHRcdG92ZXJsYXkuc3R5bGUubGVmdCA9IHZXaWR0aCA8IHdpZHRoID8gYCR7bGVmdCAtICh3aWR0aCAtIHZXaWR0aCl9cHhgIDogYCR7bGVmdH1weGA7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW0oKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltUGx1cygpKSB7XG5cdFx0XHRcdGNvbnN0IGhlaWdodCA9IHRvcCArIG9IZWlnaHQ7XG5cdFx0XHRcdG92ZXJsYXkuc3R5bGUudG9wID0gdkhlaWdodCA8IGhlaWdodCA/IGAke3RvcCAtIChoZWlnaHQgLSB2SGVpZ2h0KX1weGAgOiBgJHt0b3B9cHhgO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGl0ZW1DbGljayhldmVudDogRXZlbnQpIHtcblx0XHQvLyBhdm9pZCBwcm9jZXNzaW5nIGRpc2FibGVkIGl0ZW1zXG5cdFx0aWYgKHRoaXMuaXRlbS5kaXNhYmxlZCkge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBuYXZpZ2F0ZSB3aXRoIGhvdmVyXG5cdFx0aWYgKCh0aGlzLnJvb3QgJiYgdGhpcy5pc1NsaW0pIHx8IHRoaXMuaXNIb3Jpem9udGFsIHx8IHRoaXMuaXNTbGltUGx1cykge1xuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm1lbnVIb3ZlckFjdGl2ZSA9ICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubWVudUhvdmVyQWN0aXZlO1xuXHRcdH1cblxuXHRcdC8vIGV4ZWN1dGUgY29tbWFuZFxuXHRcdGlmICh0aGlzLml0ZW0uY29tbWFuZCkge1xuXHRcdFx0dGhpcy5pdGVtLmNvbW1hbmQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgaXRlbTogdGhpcy5pdGVtIH0pO1xuXHRcdH1cblxuXHRcdC8vIHRvZ2dsZSBhY3RpdmUgc3RhdGVcblx0XHRpZiAodGhpcy5pdGVtLml0ZW1zKSB7XG5cdFx0XHR0aGlzLmFjdGl2ZSA9ICF0aGlzLmFjdGl2ZTtcblxuXHRcdFx0aWYgKHRoaXMucm9vdCAmJiB0aGlzLmFjdGl2ZSAmJiAodGhpcy5pc1NsaW0gfHwgdGhpcy5pc0hvcml6b250YWwgfHwgdGhpcy5pc1NsaW1QbHVzKSkge1xuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25PdmVybGF5U3VibWVudU9wZW4oKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZSgpKSB7XG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLmlzU2xpbSB8fCB0aGlzLmlzSG9yaXpvbnRhbCB8fCB0aGlzLmlzU2xpbVBsdXMpIHtcblx0XHRcdFx0dGhpcy5tZW51U2VydmljZS5yZXNldCgpO1xuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubWVudUhvdmVyQWN0aXZlID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh7IGtleTogdGhpcy5rZXkgfSk7XG5cdH1cblxuXHRvbk1vdXNlRW50ZXIoKSB7XG5cdFx0Ly8gYWN0aXZhdGUgaXRlbSBvbiBob3ZlclxuXHRcdGlmICh0aGlzLnJvb3QgJiYgKHRoaXMuaXNTbGltIHx8IHRoaXMuaXNIb3Jpem9udGFsIHx8IHRoaXMuaXNTbGltUGx1cykgJiYgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm1lbnVIb3ZlckFjdGl2ZSkge1xuXHRcdFx0XHR0aGlzLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdHRoaXMubWVudVNlcnZpY2Uub25NZW51U3RhdGVDaGFuZ2UoeyBrZXk6IHRoaXMua2V5IH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldCBzdWJtZW51QW5pbWF0aW9uKCkge1xuXHRcdGlmIChcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSAmJlxuXHRcdFx0KHRoaXMubGF5b3V0U2VydmljZS5pc0hvcml6b250YWwoKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbVBsdXMoKSlcblx0XHQpIHtcblx0XHRcdHJldHVybiB0aGlzLmFjdGl2ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xuXHRcdH0gZWxzZVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5yb290ID8gJ2V4cGFuZGVkJ1xuXHRcdFx0XHQ6IHRoaXMuYWN0aXZlID8gJ2V4cGFuZGVkJ1xuXHRcdFx0XHQ6ICdjb2xsYXBzZWQnXG5cdFx0XHQpO1xuXHR9XG5cblx0Z2V0IGlzSG9yaXpvbnRhbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzSG9yaXpvbnRhbCgpO1xuXHR9XG5cblx0Z2V0IGlzU2xpbSgpIHtcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzU2xpbSgpO1xuXHR9XG5cblx0Z2V0IGlzU2xpbVBsdXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW1QbHVzKCk7XG5cdH1cblxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZS1tZW51aXRlbScpXG5cdGdldCBhY3RpdmVDbGFzcygpIHtcblx0XHRyZXR1cm4gdGhpcy5hY3RpdmUgJiYgIXRoaXMucm9vdDtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICh0aGlzLm1lbnVTb3VyY2VTdWJzY3JpcHRpb24pIHtcblx0XHRcdHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnYXBwLW1lbnUnLFxuXHRpbXBvcnRzOiBbQXBwTWVudUl0ZW1Db21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vYXBwLm1lbnUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVDb21wb25lbnQge1xuXHRtZW51U2VydmljZSA9IGluamVjdChNZW51U2VydmljZSk7XG59XG4iLCI8dWwgY2xhc3M9XCJsYXlvdXQtbWVudVwiPlxuXHRAZm9yIChpdGVtIG9mIG1lbnVTZXJ2aWNlLm1lbnVJdGVtcygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRAaWYgKGl0ZW0uc2VwYXJhdG9yKSB7XG5cdFx0XHQ8bGkgY2xhc3M9XCJtZW51LXNlcGFyYXRvclwiPjwvbGk+XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQ8bGkgYXBwLW1lbnVpdGVtIFtpdGVtXT1cIml0ZW1cIiBbaW5kZXhdPVwiJGluZGV4XCIgW3Jvb3RdPVwidHJ1ZVwiPjwvbGk+XG5cdFx0fVxuXHR9XG48L3VsPlxuIl19
|