@sbb-esta/lyne-elements 1.8.0 → 1.10.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/accordion/accordion.d.ts +5 -5
- package/accordion/accordion.d.ts.map +1 -1
- package/accordion.js +17 -17
- package/action-group/action-group.d.ts +1 -1
- package/action-group/action-group.d.ts.map +1 -1
- package/action-group.js +3 -3
- package/alert/alert/alert.d.ts +1 -1
- package/alert/alert/alert.d.ts.map +1 -1
- package/alert/alert.js +3 -3
- package/autocomplete/autocomplete-base-element.d.ts +1 -1
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -1
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-option.js +1 -1
- package/autocomplete-grid/autocomplete-grid.js +18 -18
- package/autocomplete.js +9 -9
- package/button/button.js +9 -9
- package/button/common.js +5 -5
- package/button/mini-button/mini-button.d.ts.map +1 -1
- package/button/mini-button.js +17 -15
- package/button/secondary-button.js +6 -6
- package/button/tertiary-button.js +13 -13
- package/button/transparent-button.js +8 -8
- package/calendar/calendar.d.ts +2 -2
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar.js +5 -4
- package/clock/clock.d.ts +2 -2
- package/clock/clock.d.ts.map +1 -1
- package/clock.js +5 -5
- package/container/container.js +14 -14
- package/core/a11y/focus-visible-within-controller.d.ts +1 -1
- package/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
- package/core/a11y/input-modality-detector.d.ts +2 -2
- package/core/a11y/input-modality-detector.d.ts.map +1 -1
- package/core/a11y.js +3 -3
- package/core/base-elements/action-base-element.d.ts +1 -0
- package/core/base-elements/action-base-element.d.ts.map +1 -1
- package/core/base-elements/button-base-element.d.ts +1 -1
- package/core/base-elements/button-base-element.d.ts.map +1 -1
- package/core/base-elements/link-base-element.d.ts.map +1 -1
- package/core/base-elements.js +47 -45
- package/core/controllers/slot-state-controller.d.ts +1 -1
- package/core/controllers/slot-state-controller.d.ts.map +1 -1
- package/core/dom/platform.d.ts +2 -3
- package/core/dom/platform.d.ts.map +1 -1
- package/core/dom.js +38 -40
- package/core/mixins/disabled-mixin.d.ts +8 -0
- package/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/core/mixins.js +97 -89
- package/core/styles/core.scss +6 -0
- package/core/styles/mixins/lists.scss +11 -1
- package/core/styles/mixins/panel.scss +0 -2
- package/core/styles/mixins/table.scss +11 -0
- package/core/styles/mixins/typo.scss +0 -30
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +1 -0
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +2 -1
- package/core/styles/table.scss +6 -1
- package/core/testing/wait-for-image-ready.d.ts.map +1 -1
- package/core/testing.js +61 -54
- package/core.css +7 -14
- package/custom-elements.json +493 -299
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +2 -0
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/datepicker/datepicker-toggle.js +57 -47
- package/datepicker/datepicker.js +1 -0
- package/development/accordion/accordion.d.ts +5 -5
- package/development/accordion/accordion.d.ts.map +1 -1
- package/development/accordion.js +25 -38
- package/development/action-group/action-group.d.ts +1 -1
- package/development/action-group/action-group.d.ts.map +1 -1
- package/development/action-group.js +8 -21
- package/development/alert/alert/alert.d.ts +1 -1
- package/development/alert/alert/alert.d.ts.map +1 -1
- package/development/alert/alert-group.js +2 -15
- package/development/alert/alert.js +6 -19
- package/development/autocomplete/autocomplete-base-element.d.ts +1 -1
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button.js +2 -15
- package/development/autocomplete-grid/autocomplete-grid-cell.js +2 -15
- package/development/autocomplete-grid/autocomplete-grid-option.js +4 -17
- package/development/autocomplete-grid/autocomplete-grid-row.js +2 -15
- package/development/autocomplete-grid/autocomplete-grid.js +6 -6
- package/development/autocomplete.js +7 -20
- package/development/breadcrumb/breadcrumb-group.js +2 -15
- package/development/breadcrumb/breadcrumb.js +2 -15
- package/development/button/button.js +3 -3
- package/development/button/common.js +2 -17
- package/development/button/mini-button/mini-button.d.ts.map +1 -1
- package/development/button/mini-button-group.js +2 -15
- package/development/button/mini-button.js +6 -17
- package/development/button/secondary-button.js +3 -3
- package/development/button/tertiary-button.js +3 -3
- package/development/button/transparent-button.js +3 -3
- package/development/calendar/calendar.d.ts +2 -2
- package/development/calendar/calendar.d.ts.map +1 -1
- package/development/calendar.js +7 -19
- package/development/card/card-badge.js +2 -15
- package/development/card/card.js +2 -15
- package/development/card/common.js +2 -15
- package/development/checkbox/checkbox-group.js +2 -15
- package/development/checkbox/checkbox.js +2 -15
- package/development/checkbox/common.js +1 -14
- package/development/chip.js +2 -15
- package/development/clock/clock.d.ts +2 -2
- package/development/clock/clock.d.ts.map +1 -1
- package/development/clock.js +3 -16
- package/development/container/container.js +2 -15
- package/development/container/sticky-bar.js +2 -15
- package/development/core/a11y/focus-visible-within-controller.d.ts +1 -1
- package/development/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
- package/development/core/a11y/input-modality-detector.d.ts +2 -2
- package/development/core/a11y/input-modality-detector.d.ts.map +1 -1
- package/development/core/a11y.js +6 -6
- package/development/core/base-elements/action-base-element.d.ts +1 -0
- package/development/core/base-elements/action-base-element.d.ts.map +1 -1
- package/development/core/base-elements/button-base-element.d.ts +1 -1
- package/development/core/base-elements/button-base-element.d.ts.map +1 -1
- package/development/core/base-elements/link-base-element.d.ts.map +1 -1
- package/development/core/base-elements.js +11 -2
- package/development/core/controllers/slot-state-controller.d.ts +1 -1
- package/development/core/controllers/slot-state-controller.d.ts.map +1 -1
- package/development/core/controllers.js +1 -1
- package/development/core/dom/platform.d.ts +2 -3
- package/development/core/dom/platform.d.ts.map +1 -1
- package/development/core/dom.js +4 -5
- package/development/core/mixins/disabled-mixin.d.ts +8 -0
- package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/development/core/mixins.js +24 -15
- package/development/core/testing/wait-for-image-ready.d.ts.map +1 -1
- package/development/core/testing.js +16 -2
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day.js +2 -15
- package/development/datepicker/datepicker-previous-day.js +2 -15
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +2 -0
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle.js +22 -24
- package/development/datepicker/datepicker.js +3 -15
- package/development/dialog/dialog-actions.js +2 -15
- package/development/dialog/dialog-content.js +2 -15
- package/development/dialog/dialog-title.js +2 -15
- package/development/dialog/dialog.js +3 -16
- package/development/divider.js +2 -15
- package/development/expansion-panel/expansion-panel-content.js +2 -15
- package/development/expansion-panel/expansion-panel-header.js +5 -17
- package/development/expansion-panel/expansion-panel.js +2 -15
- package/development/file-selector/file-selector.d.ts +4 -4
- package/development/file-selector/file-selector.d.ts.map +1 -1
- package/development/file-selector.js +2 -17
- package/development/flip-card/flip-card-details.js +2 -15
- package/development/flip-card/flip-card-summary.js +2 -15
- package/development/flip-card/flip-card.js +2 -15
- package/development/footer.js +2 -15
- package/development/form-error.js +2 -15
- package/development/form-field/form-field-clear.js +2 -15
- package/development/form-field/form-field.js +1 -14
- package/development/header/common.js +2 -15
- package/development/header/header.js +2 -15
- package/development/icon/icon.d.ts +6 -0
- package/development/icon/icon.d.ts.map +1 -1
- package/development/icon.js +10 -15
- package/development/image.js +4 -17
- package/development/journey-header.js +2 -15
- package/development/lead-container.js +2 -15
- package/development/link/block-link-button.js +3 -3
- package/development/link/common.js +4 -43
- package/development/link/link-button.js +3 -3
- package/development/link-list/common.js +2 -15
- package/development/link-list/link-list-anchor.js +2 -15
- package/development/link-list/link-list.js +2 -15
- package/development/loading-indicator.js +2 -15
- package/development/logo.js +2 -15
- package/development/map-container.js +2 -15
- package/development/menu/common.js +2 -15
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu-button.js +3 -3
- package/development/menu/menu.js +3 -18
- package/development/message.js +2 -15
- package/development/navigation/common.js +2 -17
- package/development/navigation/navigation-list.js +2 -15
- package/development/navigation/navigation-marker.js +2 -17
- package/development/navigation/navigation-section.js +2 -19
- package/development/navigation/navigation.js +2 -15
- package/development/notification.js +2 -15
- package/development/option/optgroup/optgroup-base-element.d.ts +2 -2
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup.js +2 -15
- package/development/option/option/option-base-element.d.ts +14 -4
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option.js +15 -21
- package/development/overlay/overlay-base-element.d.ts +1 -1
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay.js +3 -23
- package/development/popover/popover-trigger.js +4 -17
- package/development/popover/popover.js +2 -15
- package/development/radio-button/common.js +2 -15
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +9 -22
- package/development/radio-button/radio-button.js +2 -15
- package/development/screen-reader-only.js +2 -15
- package/development/select/select.d.ts +3 -1
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +49 -48
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts +12 -3
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/development/selection-expansion-panel.js +38 -18
- package/development/signet.js +2 -15
- package/development/skiplink-list.js +2 -15
- package/development/slider/slider.d.ts.map +1 -1
- package/development/slider.js +10 -16
- package/development/status.js +2 -15
- package/development/stepper/step-label/step-label.d.ts +6 -6
- package/development/stepper/step-label/step-label.d.ts.map +1 -1
- package/development/stepper/step-label.js +50 -45
- package/development/stepper/step.js +2 -15
- package/development/stepper/stepper/stepper.d.ts +6 -3
- package/development/stepper/stepper/stepper.d.ts.map +1 -1
- package/development/stepper/stepper.js +17 -15
- package/development/table/table-wrapper.js +2 -15
- package/development/tabs/tab-group/tab-group.d.ts +4 -4
- package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/development/tabs/tab-group.js +22 -35
- package/development/tabs/tab-label.js +2 -19
- package/development/tabs/tab.js +1 -14
- package/development/tag/tag-group.js +2 -15
- package/development/tag/tag.js +4 -17
- package/development/teaser-hero.js +3 -23
- package/development/teaser-product/common.js +2 -15
- package/development/teaser-product/teaser-product.js +3 -16
- package/development/teaser.js +2 -15
- package/development/time-input.js +2 -15
- package/development/timetable-occupancy-icon.js +2 -15
- package/development/timetable-occupancy.js +2 -15
- package/development/title.js +3 -41
- package/development/toast.js +2 -17
- package/development/toggle/toggle/toggle.d.ts +2 -2
- package/development/toggle/toggle/toggle.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
- package/development/toggle/toggle-option.js +3 -15
- package/development/toggle/toggle.js +23 -36
- package/development/toggle-check.js +1 -14
- package/development/train/train-blocked-passage.js +2 -15
- package/development/train/train-formation.js +2 -15
- package/development/train/train-wagon.js +2 -17
- package/development/train/train.js +2 -15
- package/development/visual-checkbox.js +2 -15
- package/dialog/dialog.js +1 -1
- package/expansion-panel/expansion-panel-header.js +5 -5
- package/file-selector/file-selector.d.ts +4 -4
- package/file-selector/file-selector.d.ts.map +1 -1
- package/file-selector.js +1 -1
- package/icon/icon.d.ts +6 -0
- package/icon/icon.d.ts.map +1 -1
- package/icon.js +27 -19
- package/image.js +2 -2
- package/link/block-link-button.js +10 -10
- package/link/link-button.js +4 -4
- package/lists.css +9 -14
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu-button.js +13 -13
- package/menu/menu.js +7 -9
- package/navigation/common.js +1 -1
- package/navigation/navigation-marker.js +1 -1
- package/navigation/navigation-section.js +1 -1
- package/option/optgroup/optgroup-base-element.d.ts +2 -2
- package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/option/option/option-base-element.d.ts +14 -4
- package/option/option/option-base-element.d.ts.map +1 -1
- package/option/option.js +32 -25
- package/overlay/overlay-base-element.d.ts +1 -1
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay.js +1 -1
- package/package.json +1 -1
- package/popover/popover-trigger.js +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +5 -5
- package/select/select.d.ts +3 -1
- package/select/select.d.ts.map +1 -1
- package/select.js +83 -72
- package/selection-expansion-panel/selection-expansion-panel.d.ts +12 -3
- package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/selection-expansion-panel.js +70 -49
- package/slider/slider.d.ts.map +1 -1
- package/slider.js +2 -2
- package/standard-theme.css +49 -24
- package/stepper/step-label/step-label.d.ts +6 -6
- package/stepper/step-label/step-label.d.ts.map +1 -1
- package/stepper/step-label.js +30 -30
- package/stepper/stepper/stepper.d.ts +6 -3
- package/stepper/stepper/stepper.d.ts.map +1 -1
- package/stepper/stepper.js +34 -25
- package/tabs/tab-group/tab-group.d.ts +4 -4
- package/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/tabs/tab-group.js +15 -15
- package/tabs/tab-label.js +12 -12
- package/tag/tag.js +19 -19
- package/teaser-hero.js +13 -13
- package/teaser-product/teaser-product.js +5 -5
- package/teaser.js +15 -15
- package/title.js +23 -23
- package/toast.js +4 -4
- package/toggle/toggle/toggle.d.ts +2 -2
- package/toggle/toggle/toggle.d.ts.map +1 -1
- package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
- package/toggle/toggle-option.js +1 -0
- package/toggle/toggle.js +10 -10
- package/train/train-wagon.js +7 -7
- package/typography.css +0 -13
|
@@ -2,20 +2,7 @@ import { css, LitElement, html } from "lit";
|
|
|
2
2
|
import { property, customElement } from "lit/decorators.js";
|
|
3
3
|
import { hostAttributes } from "../core/decorators.js";
|
|
4
4
|
import { AgnosticIntersectionObserver } from "../core/observers.js";
|
|
5
|
-
const style = css`/**
|
|
6
|
-
* Better font rendering (on OS X)
|
|
7
|
-
* http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
*
|
|
11
|
-
* .var_dark_on_light {
|
|
12
|
-
* @include font-smoothing;
|
|
13
|
-
* }
|
|
14
|
-
* .var_light_on_dark {
|
|
15
|
-
* @include font-smoothing-reset;
|
|
16
|
-
* }
|
|
17
|
-
*/
|
|
18
|
-
/** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
|
|
5
|
+
const style = css`/** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
|
|
19
6
|
/*
|
|
20
7
|
* SBB table mixin
|
|
21
8
|
* Notes:
|
|
@@ -220,4 +207,4 @@ SbbStickyBarElement = __decorateClass([
|
|
|
220
207
|
export {
|
|
221
208
|
SbbStickyBarElement
|
|
222
209
|
};
|
|
223
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY0ludGVyc2VjdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGlja3ktYmFyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQSBjb250YWluZXIgdGhhdCBzdGlja3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiBzbG90dGVkIGludG8gYHNiYi1jb250YWluZXJgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1wYWRkaW5nLWJsb2NrPXZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpXSAtIEJsb2NrIHBhZGRpbmcgb2YgdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1ib3R0b20tb3ZlcmxhcHBpbmctaGVpZ2h0PTBweF0gLSBEZWZpbmUgYW4gYWRkaXRpb25hbCBhcmVhIHdoZXJlXG4gKiB0aGUgc3RpY2t5IGJhciBvdmVybGFwcyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgb24gdGhlIGJvdHRvbS5cbiAqIFRoaXMgYXJlYSBiZWNvbWVzIHZpc2libGUgd2hlbiB0aGUgc3RpY2t5IGJhciB0cmFuc2l0aW9ucyBmcm9tIHN0aWNreSB0byB0aGUgbm9ybWFsIGRvY3VtZW50IGZsb3cuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci16LWluZGV4XSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXN0aWNreS1iYXInKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3N0aWNreS1iYXInLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJTdGlja3lCYXJFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBDb2xvciBvZiB0aGUgY29udGFpbmVyLCBsaWtlIHRyYW5zcGFyZW50LCB3aGl0ZSBldGMuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGNvbG9yPzogJ3doaXRlJyB8ICdtaWxrJztcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rvcj86IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT5cbiAgICB0aGlzLl90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJpZXNbMF0pLFxuICApO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jbG9zZXN0KCdzYmItY29udGFpbmVyJyk7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBjb250YWluZXIuZXhwYW5kZWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdG9yID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0aWNreS1iYXJfX2ludGVyc2VjdG9yJykhO1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9pbnRlcnNlY3Rvcik7XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1zdGlja2luZycsXG4gICAgICAhZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA+IDAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+
|
|
210
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY0ludGVyc2VjdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGlja3ktYmFyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQSBjb250YWluZXIgdGhhdCBzdGlja3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiBzbG90dGVkIGludG8gYHNiYi1jb250YWluZXJgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1wYWRkaW5nLWJsb2NrPXZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpXSAtIEJsb2NrIHBhZGRpbmcgb2YgdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1ib3R0b20tb3ZlcmxhcHBpbmctaGVpZ2h0PTBweF0gLSBEZWZpbmUgYW4gYWRkaXRpb25hbCBhcmVhIHdoZXJlXG4gKiB0aGUgc3RpY2t5IGJhciBvdmVybGFwcyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgb24gdGhlIGJvdHRvbS5cbiAqIFRoaXMgYXJlYSBiZWNvbWVzIHZpc2libGUgd2hlbiB0aGUgc3RpY2t5IGJhciB0cmFuc2l0aW9ucyBmcm9tIHN0aWNreSB0byB0aGUgbm9ybWFsIGRvY3VtZW50IGZsb3cuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci16LWluZGV4XSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXN0aWNreS1iYXInKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3N0aWNreS1iYXInLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJTdGlja3lCYXJFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBDb2xvciBvZiB0aGUgY29udGFpbmVyLCBsaWtlIHRyYW5zcGFyZW50LCB3aGl0ZSBldGMuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGNvbG9yPzogJ3doaXRlJyB8ICdtaWxrJztcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rvcj86IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT5cbiAgICB0aGlzLl90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJpZXNbMF0pLFxuICApO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jbG9zZXN0KCdzYmItY29udGFpbmVyJyk7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBjb250YWluZXIuZXhwYW5kZWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdG9yID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0aWNreS1iYXJfX2ludGVyc2VjdG9yJykhO1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9pbnRlcnNlY3Rvcik7XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1zdGlja2luZycsXG4gICAgICAhZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA+IDAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhcl9faW50ZXJzZWN0b3JcIj48L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc3RpY2t5LWJhcic6IFNiYlN0aWNreUJhckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QmEsSUFBQSxzQkFBTixjQUFrQyxXQUFXO0FBQUEsRUFBN0MsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBT0wsU0FBUSxZQUFZLElBQUk7QUFBQSxNQUE2QixDQUFDLFlBQ3BELEtBQUssd0JBQXdCLFFBQVEsQ0FBQyxDQUFDO0FBQUEsSUFBQTtBQUFBLEVBQ3pDO0FBQUEsRUFFZ0Isb0JBQTBCO0FBQ3hDLFVBQU0sa0JBQWtCO0FBRWxCLFVBQUEsWUFBWSxLQUFLLFFBQVEsZUFBZTtBQUM5QyxRQUFJLFdBQVc7QUFDUixXQUFBLGdCQUFnQixpQkFBaUIsVUFBVSxRQUFRO0FBQUEsSUFDMUQ7QUFDQSxRQUFJLEtBQUssY0FBYztBQUNoQixXQUFBLFVBQVUsUUFBUSxLQUFLLFlBQVk7QUFBQSxJQUMxQztBQUFBLEVBQ0Y7QUFBQSxFQUVtQixhQUFhLG1CQUErQztBQUM3RSxVQUFNLGFBQWEsaUJBQWlCO0FBRWhDLFFBQUEsQ0FBQyxLQUFLLGNBQWM7QUFDdEIsV0FBSyxlQUFlLEtBQUssV0FBWSxjQUFjLDhCQUE4QjtBQUM1RSxXQUFBLFVBQVUsUUFBUSxLQUFLLFlBQVk7QUFBQSxJQUMxQztBQUNLLFNBQUEsVUFBVSxRQUFRLElBQUk7QUFBQSxFQUM3QjtBQUFBLEVBRVEsd0JBQXdCLE9BQXdDO0FBQ2pFLFNBQUE7QUFBQSxNQUNIO0FBQUEsTUFDQSxDQUFDLE1BQU0sa0JBQWtCLE1BQU0sbUJBQW1CLE1BQU07QUFBQSxJQUFBO0FBQUEsRUFFNUQ7QUFBQSxFQUVnQix1QkFBNkI7QUFDM0MsVUFBTSxxQkFBcUI7QUFDM0IsU0FBSyxVQUFVO0VBQ2pCO0FBQUEsRUFFbUIsU0FBeUI7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRVDtBQUNGO0FBdkRhLG9CQUNZLFNBQXlCO0FBR1osZ0JBQUE7QUFBQSxFQUFuQyxTQUFTLEVBQUUsU0FBUyxNQUFNO0FBQUEsR0FKaEIsb0JBSXlCLFdBQUEsU0FBQSxDQUFBO0FBSnpCLHNCQUFOLGdCQUFBO0FBQUEsRUFKTixjQUFjLGdCQUFnQjtBQUFBLEVBQzlCLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1A7QUFBQSxHQUNZLG1CQUFBOyJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
2
|
export declare class SbbFocusVisibleWithinController implements ReactiveController {
|
|
3
3
|
private _host;
|
|
4
|
+
constructor(_host: ReactiveControllerHost & HTMLElement);
|
|
4
5
|
private _focusinHandler;
|
|
5
6
|
private _focusoutHandler;
|
|
6
|
-
constructor(_host: ReactiveControllerHost & HTMLElement);
|
|
7
7
|
hostConnected(): void;
|
|
8
8
|
hostDisconnected(): void;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-visible-within-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus-visible-within-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAKtE,qBAAa,+BAAgC,YAAW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"focus-visible-within-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus-visible-within-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAKtE,qBAAa,+BAAgC,YAAW,kBAAkB;IACrD,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,sBAAsB,GAAG,WAAW;IAItE,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEK,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;CAIhC"}
|
|
@@ -16,7 +16,6 @@ export type SbbInputModality = 'touch' | 'mouse' | 'keyboard' | 'program' | null
|
|
|
16
16
|
declare class SbbInputModalityDetector {
|
|
17
17
|
/** The most recently detected input modality. */
|
|
18
18
|
get mostRecentModality(): SbbInputModality | null;
|
|
19
|
-
reset(): void;
|
|
20
19
|
/**
|
|
21
20
|
* The most recent modality must be initialised with the value 'mouse' to cover the case where an action is
|
|
22
21
|
* performed but no mouse or keyboard event has yet occurred on the page (e.g. `sbb-popover` with hover trigger).
|
|
@@ -35,6 +34,8 @@ declare class SbbInputModalityDetector {
|
|
|
35
34
|
* should be attributed to mouse or touch.
|
|
36
35
|
*/
|
|
37
36
|
private _lastTouchMs;
|
|
37
|
+
constructor();
|
|
38
|
+
reset(): void;
|
|
38
39
|
/**
|
|
39
40
|
* Handles keydown events. Must be an arrow function in order to preserve the context when it gets
|
|
40
41
|
* bound.
|
|
@@ -50,7 +51,6 @@ declare class SbbInputModalityDetector {
|
|
|
50
51
|
* gets bound.
|
|
51
52
|
*/
|
|
52
53
|
private _onTouchstart;
|
|
53
|
-
constructor();
|
|
54
54
|
}
|
|
55
55
|
export declare const sbbInputModalityDetector: SbbInputModalityDetector;
|
|
56
56
|
export declare function setModalityOnNextFocus(elementToFocus: HTMLElement | null | undefined): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-modality-detector.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/input-modality-detector.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAmDjF;;;;;;;;;;;;;GAaG;AACH,cAAM,wBAAwB;IAC5B,iDAAiD;IACjD,IAAW,kBAAkB,IAAI,gBAAgB,GAAG,IAAI,CAEvD;
|
|
1
|
+
{"version":3,"file":"input-modality-detector.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/input-modality-detector.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAmDjF;;;;;;;;;;;;;GAaG;AACH,cAAM,wBAAwB;IAC5B,iDAAiD;IACjD,IAAW,kBAAkB,IAAI,gBAAgB,GAAG,IAAI,CAEvD;IAED;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAoC;IAE/D;;;OAGG;IACH,IAAW,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,iBAAiB,CAA4B;IAErD,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;IAEF;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAK;;IAUlB,KAAK,IAAI,IAAI;IAMpB;;;OAGG;IACH,OAAO,CAAC,UAAU,CAShB;IAEF;;;OAGG;IACH,OAAO,CAAC,YAAY,CAYlB;IAEF;;;OAGG;IACH,OAAO,CAAC,aAAa,CAenB;CACH;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AAGvE,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAyB3F"}
|
package/development/core/a11y.js
CHANGED
|
@@ -99,11 +99,6 @@ class SbbInputModalityDetector {
|
|
|
99
99
|
get mostRecentModality() {
|
|
100
100
|
return this._mostRecentModality;
|
|
101
101
|
}
|
|
102
|
-
reset() {
|
|
103
|
-
this._mostRecentModality = "mouse";
|
|
104
|
-
this._mostRecentTarget = null;
|
|
105
|
-
this._lastTouchMs = 0;
|
|
106
|
-
}
|
|
107
102
|
/**
|
|
108
103
|
* The most recently detected input modality event target. Is null if no input modality has been
|
|
109
104
|
* detected or if the associated event target is null for some unknown reason.
|
|
@@ -111,6 +106,11 @@ class SbbInputModalityDetector {
|
|
|
111
106
|
get mostRecentTarget() {
|
|
112
107
|
return this._mostRecentTarget;
|
|
113
108
|
}
|
|
109
|
+
reset() {
|
|
110
|
+
this._mostRecentModality = "mouse";
|
|
111
|
+
this._mostRecentTarget = null;
|
|
112
|
+
this._lastTouchMs = 0;
|
|
113
|
+
}
|
|
114
114
|
}
|
|
115
115
|
const sbbInputModalityDetector = new SbbInputModalityDetector();
|
|
116
116
|
function setModalityOnNextFocus(elementToFocus) {
|
|
@@ -292,4 +292,4 @@ export {
|
|
|
292
292
|
sbbInputModalityDetector,
|
|
293
293
|
setModalityOnNextFocus
|
|
294
294
|
};
|
|
295
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9hcnJvdy1uYXZpZ2F0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXZpc2libGUtd2l0aGluLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ludGVyYWN0aXZpdHktY2hlY2tlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvZm9jdXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RG9jdW1lbnRXcml0aW5nTW9kZSB9IGZyb20gJy4uL2RvbS5qcyc7XG5cbmludGVyZmFjZSBQcmV2QW5kTmV4dEtleXMge1xuICBwcmV2S2V5OiBzdHJpbmc7XG4gIG5leHRLZXk6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UHJldkFuZE5leHRLZXlzKCk6IFByZXZBbmROZXh0S2V5cyB7XG4gIGlmIChnZXREb2N1bWVudFdyaXRpbmdNb2RlKCkgPT09ICdydGwnKSB7XG4gICAgcmV0dXJuIHsgcHJldktleTogJ0Fycm93UmlnaHQnLCBuZXh0S2V5OiAnQXJyb3dMZWZ0JyB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IHByZXZLZXk6ICdBcnJvd0xlZnQnLCBuZXh0S2V5OiAnQXJyb3dSaWdodCcgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBrZXkgcHJlc3NlZCBpcyBhbW9uZyB0aG9zZSBhbGxvd2VkIGZvciBuYXZpZ2F0aW9uLlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBbJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnQua2V5KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgc2hvdWxkIG1vdmUgdGhlIG5hdmlnYXRpb24gdG8gdGhlIG5leHQgZWxlbWVudC5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXZpb3VzQXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09IGdldFByZXZBbmROZXh0S2V5cygpLnByZXZLZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIHNob3VsZCBtb3ZlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOZXh0QXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gZ2V0UHJldkFuZE5leHRLZXlzKCkubmV4dEtleTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgaXMgYW1vbmcgdGhvc2UgYWxsb3dlZCBmb3IgbmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fycm93S2V5T3JQYWdlS2V5c1ByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSB8fCBbJ1BhZ2VVcCcsICdQYWdlRG93bicsICdIb21lJywgJ0VuZCddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBlbGVtZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBvZmZzZXQuXG4gKiBAcGFyYW0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50LlxuICogQHBhcmFtIG1heEluZGV4IFRoZSBtYXhpbXVtIHBlcm1pdHRlZCB2YWx1ZSAoZS5nLiBhcnJheSBzaXplKS5cbiAqIEBwYXJhbSBvZmZzZXQgVGhlIGFtb3VudCB0byBtb3ZlIGJ5LlxuICovXG5mdW5jdGlvbiBjYWxjTmV4dEluZGV4SW5SYW5nZShjdXJyZW50SW5kZXg6IG51bWJlciwgbWF4SW5kZXg6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKGN1cnJlbnRJbmRleCArIG9mZnNldCArIG1heEluZGV4KSAlIG1heEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRMYXN0SW5kZXgoc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIHNpemUgLSAxO1xufVxuXG5jb25zdCBmaXJzdEluZGV4ID0gMDtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBtb3ZlIHRvLCBiYXNlZCBvbiB0aGUga2V5Ym9hcmQgaW5wdXQsIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlIGxpc3QgYW5kIHRoZSBsaXN0IHNpemUuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICogQHBhcmFtIGN1cnJlbnQgVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlIGxpc3QuXG4gKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgbGlzdC5cbiAqIEByZXR1cm5zIGlmIGl0IGlzIGEgJ3ByZXZpb3VzJyBldmVudCwgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHByZXZpb3VzIGVsZW1lbnQsXG4gKiBvciB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb25lIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgdGhlIGZpcnN0IGluIHRoZSBsaXN0O1xuICogaWYgaXQgaXMgYSAnbmV4dCcgZXZlbnQsIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGVsZW1lbnQsXG4gKiBvciB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9uZSwgaWYgdGhlIGN1cnJlbnQgaXMgdGhlIGxhc3QgaW4gdGhlIGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjdXJyZW50OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IHsgcHJldktleSwgbmV4dEtleSB9ID0gZ2V0UHJldkFuZE5leHRLZXlzKCk7XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gcHJldktleSB8fCBldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgIHJldHVybiBjdXJyZW50IDwgZmlyc3RJbmRleCA/IGdldExhc3RJbmRleChzaXplKSA6IGNhbGNOZXh0SW5kZXhJblJhbmdlKGN1cnJlbnQsIHNpemUsIC0xKTtcbiAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IG5leHRLZXkgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgIHJldHVybiBjdXJyZW50ID49IHNpemUgPyBmaXJzdEluZGV4IDogY2FsY05leHRJbmRleEluUmFuZ2UoY3VycmVudCwgc2l6ZSwgMSk7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG4iLCIvLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL2Nkay9hMTF5L2Zha2UtZXZlbnQtZGV0ZWN0aW9uLnRzXG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZXZlbnQgY291bGQgYmUgYSBmYWtlZCBgbW91c2Vkb3duYCBldmVudCBkaXNwYXRjaGVkIGJ5IGEgc2NyZWVuIHJlYWRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gIC8vIFNvbWUgc2NyZWVuIHJlYWRlcnMgd2lsbCBkaXNwYXRjaCBhIGZha2UgYG1vdXNlZG93bmAgZXZlbnQgd2hlbiBwcmVzc2luZyBlbnRlciBvciBzcGFjZSBvblxuICAvLyBhIGNsaWNrYWJsZSBlbGVtZW50LiBXZSBjYW4gZGlzdGluZ3Vpc2ggdGhlc2UgZXZlbnRzIHdoZW4gYGV2ZW50LmJ1dHRvbnNgIGlzIHplcm8sIG9yXG4gIC8vIGBldmVudC5kZXRhaWxgIGlzIHplcm8gZGVwZW5kaW5nIG9uIHRoZSBicm93c2VyOlxuICAvLyAtIGBldmVudC5idXR0b25zYCB3b3JrcyBvbiBGaXJlZm94LCBidXQgZmFpbHMgb24gQ2hyb21lLlxuICAvLyAtIGBkZXRhaWxgIHdvcmtzIG9uIENocm9tZSwgYnV0IGZhaWxzIG9uIEZpcmVmb3guXG4gIHJldHVybiBldmVudC5idXR0b25zID09PSAwIHx8IGV2ZW50LmRldGFpbCA9PT0gMDtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBldmVudCBjb3VsZCBiZSBhIGZha2VkIGB0b3VjaHN0YXJ0YCBldmVudCBkaXNwYXRjaGVkIGJ5IGEgc2NyZWVuIHJlYWRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcihldmVudDogVG91Y2hFdmVudCk6IGJvb2xlYW4ge1xuICBjb25zdCB0b3VjaDogVG91Y2ggfCB1bmRlZmluZWQgPVxuICAgIChldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXNbMF0pIHx8IChldmVudC5jaGFuZ2VkVG91Y2hlcyAmJiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSk7XG5cbiAgLy8gQSBmYWtlIGB0b3VjaHN0YXJ0YCBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tIGEgcmVhbCBvbmUgYnkgbG9va2luZyBhdCB0aGUgYGlkZW50aWZpZXJgXG4gIC8vIHdoaWNoIGlzIHR5cGljYWxseSA+PSAwIG9uIGEgcmVhbCBkZXZpY2UgdmVyc3VzIC0xIGZyb20gYSBzY3JlZW4gcmVhZGVyLiBKdXN0IHRvIGJlIHNhZmUsXG4gIC8vIHdlIGNhbiBhbHNvIGxvb2sgYXQgYHJhZGl1c1hgIGFuZCBgcmFkaXVzWWAuIFRoaXMgYmVoYXZpb3Igd2FzIG9ic2VydmVkIGFnYWluc3QgYSBXaW5kb3dzIDEwXG4gIC8vIGRldmljZSB3aXRoIGEgdG91Y2ggc2NyZWVuIHJ1bm5pbmcgTlZEQSB2MjAyMC40IGFuZCBGaXJlZm94IDg1IG9yIENocm9tZSA4OC5cbiAgcmV0dXJuIChcbiAgICAhIXRvdWNoICYmXG4gICAgdG91Y2guaWRlbnRpZmllciA9PT0gLTEgJiZcbiAgICAodG91Y2gucmFkaXVzWCA9PSBudWxsIHx8IHRvdWNoLnJhZGl1c1ggPT09IDEpICYmXG4gICAgKHRvdWNoLnJhZGl1c1kgPT0gbnVsbCB8fCB0b3VjaC5yYWRpdXNZID09PSAxKVxuICApO1xufVxuIiwiLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL2ExMXkvaW5wdXQtbW9kYWxpdHkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHNcblxuaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBnZXRFdmVudFRhcmdldCB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHtcbiAgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcixcbiAgaXNGYWtlVG91Y2hzdGFydEZyb21TY3JlZW5SZWFkZXIsXG59IGZyb20gJy4vZmFrZS1ldmVudC1kZXRlY3Rpb24uanMnO1xuXG5leHBvcnQgdHlwZSBTYmJJbnB1dE1vZGFsaXR5ID0gJ3RvdWNoJyB8ICdtb3VzZScgfCAna2V5Ym9hcmQnIHwgJ3Byb2dyYW0nIHwgbnVsbDtcblxuLyoqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBiZWhhdmlvciBvZiB0aGUgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLiAqL1xuaW50ZXJmYWNlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMge1xuICAvKiogS2V5cyB0byBpZ25vcmUgd2hlbiBkZXRlY3Rpbmcga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuICovXG4gIGlnbm9yZUtleXM/OiBudW1iZXJbXTtcbn1cblxuY29uc3QgU0hJRlQgPSAxNjtcbmNvbnN0IENPTlRST0wgPSAxNztcbmNvbnN0IEFMVCA9IDE4O1xuY29uc3QgTUVUQSA9IDkxOyAvLyBXSU5fS0VZX0xFRlRcbmNvbnN0IE1BQ19NRVRBID0gMjI0O1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5cbiAqXG4gKiBNb2RpZmllciBrZXlzIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQgKGkuZS4gd2hlbiBwcmVzc2VkIHdvbid0IGNhdXNlIHRoZSBzZXJ2aWNlIHRvIGRldGVjdFxuICoga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkpIGZvciB0d28gcmVhc29uczpcbiAqXG4gKiAxLiBNb2RpZmllciBrZXlzIGFyZSBjb21tb25seSB1c2VkIHdpdGggbW91c2UgdG8gcGVyZm9ybSBhY3Rpb25zIHN1Y2ggYXMgJ3JpZ2h0IGNsaWNrJyBvciAnb3BlblxuICogICAgaW4gbmV3IHRhYicsIGFuZCBhcmUgdGh1cyBsZXNzIHJlcHJlc2VudGF0aXZlIG9mIGFjdHVhbCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAqIDIuIFZvaWNlT3ZlciB0cmlnZ2VycyBzb21lIGtleWJvYXJkIGV2ZW50cyB3aGVuIGxpbmVhcmx5IG5hdmlnYXRpbmcgd2l0aCBDb250cm9sICsgT3B0aW9uIChidXRcbiAqICAgIGNvbmZ1c2luZ2x5IG5vdCB3aXRoIENhcHMgTG9jaykuIFRodXMsIHRvIGhhdmUgcGFyaXR5IHdpdGggb3RoZXIgc2NyZWVuIHJlYWRlcnMsIHdlIGlnbm9yZVxuICogICAgdGhlc2Uga2V5cyBzbywgYXMgdG8gbm90IHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkuXG4gKlxuICogTm90ZSB0aGF0IHdlIGRvIG5vdCBieSBkZWZhdWx0IGlnbm9yZSB0aGUgcmlnaHQgTWV0YSBrZXkgb24gU2FmYXJpIGJlY2F1c2UgaXQgaGFzIHRoZSBzYW1lIGtleVxuICogY29kZSBhcyB0aGUgQ29udGV4dE1lbnUga2V5IG9uIG90aGVyIGJyb3dzZXJzLiBXaGVuIHdlIHN3aXRjaCB0byB1c2luZyBldmVudC5rZXksIHdlIGNhblxuICogZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLlxuICovXG5jb25zdCBpbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zOiBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zID0ge1xuICBpZ25vcmVLZXlzOiBbQUxULCBDT05UUk9MLCBNQUNfTUVUQSwgTUVUQSwgU0hJRlRdLFxufTtcblxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHRpbWUgbmVlZGVkIHRvIHBhc3MgYWZ0ZXIgYSB0b3VjaHN0YXJ0IGV2ZW50IGluIG9yZGVyIGZvciBhIHN1YnNlcXVlbnQgbW91c2Vkb3duXG4gKiBldmVudCB0byBiZSBhdHRyaWJ1dGVkIGFzIG1vdXNlIGFuZCBub3QgdG91Y2guXG4gKlxuICogVGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IgaXQgd2FzIGZvdW5kIHRoYXQgYSB2YWx1ZSBvZiBhcm91bmQgNjUwbXMgc2VlbXMgYXBwcm9wcmlhdGUuXG4gKi9cbmNvbnN0IHRvdWNoQnVmZmVyTXMgPSA2NTA7XG5cbi8qKlxuICogRXZlbnQgbGlzdGVuZXIgb3B0aW9ucyB0aGF0IGVuYWJsZSBjYXB0dXJpbmcgYW5kIGFsc28gbWFyayB0aGUgbGlzdGVuZXIgYXMgcGFzc2l2ZSBpZiB0aGUgYnJvd3NlclxuICogc3VwcG9ydHMgaXQuXG4gKi9cbmNvbnN0IG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IHRydWUsXG59O1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBkZXRlY3RzIHRoZSB1c2VyJ3MgaW5wdXQgbW9kYWxpdHkuXG4gKlxuICogVGhpcyBzZXJ2aWNlIGRvZXMgbm90IHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkgd2hlbiBhIHVzZXIgbmF2aWdhdGVzIHdpdGggYSBzY3JlZW4gcmVhZGVyXG4gKiAoZS5nLiBsaW5lYXIgbmF2aWdhdGlvbiB3aXRoIFZvaWNlT3Zlciwgb2JqZWN0IG5hdmlnYXRpb24gLyBicm93c2UgbW9kZSB3aXRoIE5WREEsIHZpcnR1YWwgUENcbiAqIGN1cnNvciBtb2RlIHdpdGggSkFXUykuIFRoaXMgaXMgaW4gcGFydCBkdWUgdG8gdGVjaG5pY2FsIGxpbWl0YXRpb25zIChpLmUuIGtleWJvYXJkIGV2ZW50cyBkbyBub3RcbiAqIGZpcmUgYXMgZXhwZWN0ZWQgaW4gdGhlc2UgbW9kZXMpIGJ1dCBpcyBhbHNvIGFyZ3VhYmx5IHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBOYXZpZ2F0aW5nIHdpdGggYVxuICogc2NyZWVuIHJlYWRlciBpcyBha2luIHRvIHZpc3VhbGx5IHNjYW5uaW5nIGEgcGFnZSwgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYWN0dWFsIHVzZXJcbiAqIGlucHV0IGludGVyYWN0aW9uLlxuICpcbiAqIFdoZW4gYSB1c2VyIGlzIG5vdCBuYXZpZ2F0aW5nIGJ1dCAqaW50ZXJhY3RpbmcqIHdpdGggYSBzY3JlZW4gcmVhZGVyLCB0aGlzIHNlcnZpY2UgYXR0ZW1wdHMgdG9cbiAqIHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkgdG8ga2V5Ym9hcmQsIGJ1dCBpbiBnZW5lcmFsIHRoaXMgc2VydmljZSdzIGJlaGF2aW9yIGlzIGxhcmdlbHlcbiAqIHVuZGVmaW5lZC5cbiAqL1xuY2xhc3MgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIHtcbiAgLyoqIFRoZSBtb3N0IHJlY2VudGx5IGRldGVjdGVkIGlucHV0IG1vZGFsaXR5LiAqL1xuICBwdWJsaWMgZ2V0IG1vc3RSZWNlbnRNb2RhbGl0eSgpOiBTYmJJbnB1dE1vZGFsaXR5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSAnbW91c2UnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMuX2xhc3RUb3VjaE1zID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgbW9kYWxpdHkgbXVzdCBiZSBpbml0aWFsaXNlZCB3aXRoIHRoZSB2YWx1ZSAnbW91c2UnIHRvIGNvdmVyIHRoZSBjYXNlIHdoZXJlIGFuIGFjdGlvbiBpc1xuICAgKiBwZXJmb3JtZWQgYnV0IG5vIG1vdXNlIG9yIGtleWJvYXJkIGV2ZW50IGhhcyB5ZXQgb2NjdXJyZWQgb24gdGhlIHBhZ2UgKGUuZy4gYHNiYi1wb3BvdmVyYCB3aXRoIGhvdmVyIHRyaWdnZXIpLlxuICAgKi9cbiAgcHJpdmF0ZSBfbW9zdFJlY2VudE1vZGFsaXR5OiBTYmJJbnB1dE1vZGFsaXR5IHwgbnVsbCA9ICdtb3VzZSc7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IHJlY2VudGx5IGRldGVjdGVkIGlucHV0IG1vZGFsaXR5IGV2ZW50IHRhcmdldC4gSXMgbnVsbCBpZiBubyBpbnB1dCBtb2RhbGl0eSBoYXMgYmVlblxuICAgKiBkZXRlY3RlZCBvciBpZiB0aGUgYXNzb2NpYXRlZCBldmVudCB0YXJnZXQgaXMgbnVsbCBmb3Igc29tZSB1bmtub3duIHJlYXNvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgbW9zdFJlY2VudFRhcmdldCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0O1xuICB9XG4gIHByaXZhdGUgX21vc3RSZWNlbnRUYXJnZXQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE9wdGlvbnMgZm9yIHRoaXMgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zID0ge1xuICAgIC4uLmlucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMsXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgdG91Y2ggaW5wdXQgbW9kYWxpdHkuIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbW91c2Vkb3duIGV2ZW50c1xuICAgKiBzaG91bGQgYmUgYXR0cmlidXRlZCB0byBtb3VzZSBvciB0b3VjaC5cbiAgICovXG4gIHByaXZhdGUgX2xhc3RUb3VjaE1zID0gMDtcblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0IGdldHNcbiAgICogYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAvLyBJZiB0aGlzIGlzIG9uZSBvZiB0aGUga2V5cyB3ZSBzaG91bGQgaWdub3JlLCB0aGVuIGlnbm9yZSBpdCBhbmQgZG9uJ3QgdXBkYXRlIHRoZSBpbnB1dFxuICAgIC8vIG1vZGFsaXR5IHRvIGtleWJvYXJkLlxuICAgIGlmICh0aGlzLl9vcHRpb25zPy5pZ25vcmVLZXlzPy5zb21lKChrZXlDb2RlKSA9PiBrZXlDb2RlID09PSBldmVudC5rZXlDb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdrZXlib2FyZCc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZWRvd24gZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uTW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gVG91Y2hlcyB0cmlnZ2VyIGJvdGggdG91Y2ggYW5kIG1vdXNlIGV2ZW50cywgc28gd2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1vdXNlIGV2ZW50c1xuICAgIC8vIHRoYXQgd2VyZSB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLiBUbyBkbyBzbywgY2hlY2sgaWYgdGhlIG1vdXNlIGV2ZW50IG9jY3VycyBjbG9zZWx5XG4gICAgLy8gYWZ0ZXIgdGhlIHByZXZpb3VzIHRvdWNoIGV2ZW50LlxuICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdFRvdWNoTXMgPCB0b3VjaEJ1ZmZlck1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFrZSBtb3VzZWRvd24gZXZlbnRzIGFyZSBmaXJlZCBieSBzb21lIHNjcmVlbiByZWFkZXJzIHdoZW4gY29udHJvbHMgYXJlIGFjdGl2YXRlZCBieSB0aGVcbiAgICAvLyBzY3JlZW4gcmVhZGVyLiBBdHRyaWJ1dGUgdGhlbSB0byBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSA/ICdrZXlib2FyZCcgOiAnbW91c2UnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdG91Y2hzdGFydCBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdFxuICAgKiBnZXRzIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25Ub3VjaHN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gU2FtZSBzY2VuYXJpbyBhcyBtZW50aW9uZWQgaW4gX29uTW91c2Vkb3duLCBidXQgb24gdG91Y2ggc2NyZWVuIGRldmljZXMsIGZha2UgdG91Y2hzdGFydFxuICAgIC8vIGV2ZW50cyBhcmUgZmlyZWQuIEFnYWluLCBhdHRyaWJ1dGUgdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgaWYgKGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5ID0gJ2tleWJvYXJkJztcbiAgICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHRpbWVzdGFtcCBvZiB0aGlzIHRvdWNoIGV2ZW50LCBhcyBpdCdzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtb3VzZSBldmVudHNcbiAgICAvLyB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLlxuICAgIHRoaXMuX2xhc3RUb3VjaE1zID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICd0b3VjaCc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgfTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5ZG93biwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9vbk1vdXNlZG93biwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5fb25Ub3VjaHN0YXJ0LCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciA9IG5ldyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IoKTtcblxuLy8gU2V0IHRoZSBpbnB1dCBtb2RhbGl0eSBpbiBvcmRlciB0byBhdm9pZCBzaG93aW5nIHRoZSBvdXRsaW5lIGluIFNhZmFyaS5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKCFlbGVtZW50VG9Gb2N1cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1vc3RSZWNlbnRNb2RhbGl0eSA9IHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHk7XG5cbiAgLy8gU2V0IGZvY3VzIG9yaWdpbiB0byBlbGVtZW50IHdoaWNoIHNob3VsZCByZWNlaXZlIGZvY3VzXG4gIGlmICghKGVsZW1lbnRUb0ZvY3VzICYmIG1vc3RSZWNlbnRNb2RhbGl0eSAhPT0gbnVsbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudFRvRm9jdXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAnZm9jdXMnLFxuICAgICgpID0+IHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLnNldEF0dHJpYnV0ZSgnZGF0YS1mb2N1cy1vcmlnaW4nLCBtb3N0UmVjZW50TW9kYWxpdHkpO1xuICAgICAgZWxlbWVudFRvRm9jdXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2JsdXInLFxuICAgICAgICAoKSA9PiBlbGVtZW50VG9Gb2N1cy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtb3JpZ2luJyksXG4gICAgICAgIHtcbiAgICAgICAgICBvbmNlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHsgb25jZTogdHJ1ZSB9LFxuICApO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuL2lucHV0LW1vZGFsaXR5LWRldGVjdG9yLmpzJztcblxuLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgdmlzaWJsZSBmb2N1cyB3aXRoaW4uXG5leHBvcnQgY2xhc3MgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgX2ZvY3VzaW5IYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2hvc3QudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtaGFzLXZpc2libGUtZm9jdXMtd2l0aGluJyxcbiAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcsXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIF9mb2N1c291dEhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5faG9zdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtaGFzLXZpc2libGUtZm9jdXMtd2l0aGluJyk7XG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3QuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2ZvY3VzaW5IYW5kbGVyKTtcbiAgICB0aGlzLl9ob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5fZm9jdXNvdXRIYW5kbGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2ZvY3VzaW5IYW5kbGVyKTtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5fZm9jdXNvdXRIYW5kbGVyKTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGhhc0dlb21ldHJ5KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIC8vIFVzZSBsb2dpYyBmcm9tIGpRdWVyeSB0byBjaGVjayBmb3IgYW4gaW52aXNpYmxlIGVsZW1lbnQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMjTDEyXG4gIHJldHVybiAhIShcbiAgICBlbGVtZW50Lm9mZnNldFdpZHRoIHx8XG4gICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHxcbiAgICAodHlwZW9mIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMgPT09ICdmdW5jdGlvbicgJiYgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aClcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlciBpbXBsZW1lbnRzIEludGVyZmFjZUludGVyYWN0aXZpdHlDaGVja2VyIHtcbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIHZpc2libGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBpbnRlcmFjdGl2aXR5LlxuICAgKlxuICAgKiBUaGlzIHdpbGwgY2FwdHVyZSBzdGF0ZXMgbGlrZSBgZGlzcGxheTogbm9uZWAgYW5kIGB2aXNpYmlsaXR5OiBoaWRkZW5gLCBidXQgbm90IHRoaW5ncyBsaWtlXG4gICAqIGJlaW5nIGNsaXBwZWQgYnkgYW4gYG92ZXJmbG93OiBoaWRkZW5gIHBhcmVudCBvciBiZWluZyBvdXRzaWRlIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKi9cbiAgcHVibGljIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNHZW9tZXRyeShlbGVtZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnZpc2liaWxpdHkgPT09ICd2aXNpYmxlJztcbiAgfVxufVxuXG5jbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlck1vY2sgaW1wbGVtZW50cyBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIHB1YmxpYyBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLy8gRm9yIHVuaXQgdGVzdHMgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgYW4gZWxlbWVudCBpcyBhbHdheXMgdmlzaWJsZS5cbi8vIFRoaXMgY2FuIGJlIGRvbmUgYnkgY2hlY2tpbmcgaWYgdmlzaWJpbGl0eSBwcm9wZXJ0eSBpcyBzZXQgdG8gZW1wdHkuXG5leHBvcnQgY29uc3QgaW50ZXJhY3Rpdml0eUNoZWNrZXI6IEludGVyZmFjZUludGVyYWN0aXZpdHlDaGVja2VyID1cbiAgdHlwZW9mIGdldENvbXB1dGVkU3R5bGUgPT09ICd1bmRlZmluZWQnIHx8XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS52aXNpYmlsaXR5ID09PSAnJ1xuICAgID8gbmV3IEludGVyYWN0aXZpdHlDaGVja2VyTW9jaygpXG4gICAgOiBuZXcgSW50ZXJhY3Rpdml0eUNoZWNrZXIoKTtcbiIsImltcG9ydCB7IGludGVyYWN0aXZpdHlDaGVja2VyIH0gZnJvbSAnLi9pbnRlcmFjdGl2aXR5LWNoZWNrZXIuanMnO1xuXG5leHBvcnQgY29uc3QgSVNfRk9DVVNBQkxFX1FVRVJZID0gW1xuICAnYnV0dG9uJyxcbiAgJ1tocmVmXScsXG4gICdpbnB1dCcsXG4gICdzZWxlY3QnLFxuICAndGV4dGFyZWEnLFxuICAnZGV0YWlscycsXG4gICdzdW1tYXJ5Om5vdCg6ZGlzYWJsZWQpJyxcbiAgJ1t0YWJpbmRleF0nLFxuXVxuICAubWFwKChzZWxlY3RvcikgPT4gYCR7c2VsZWN0b3J9Om5vdChbZGlzYWJsZWRdLFt0YWJpbmRleD1cIi0xXCJdKWApXG4gIC5qb2luKCcsJyk7XG5cbi8vIE5vdGU6IHRoZSB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBmb3IgbW9yZSBjb21wbGV4IHNjZW5hcmlvcyAod2l0aCBtYW55IG5lc3RlZCBlbGVtZW50cykgbWF5IGJlIGV4cGVuc2l2ZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVFbGVtZW50cyhcbiAgZWxlbWVudHM6IEhUTUxFbGVtZW50W10sXG4gIHByb3BlcnRpZXM/OiB7XG4gICAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBmaW5kRmlyc3RGb2N1c2FibGU/OiBib29sZWFuO1xuICAgIGluY2x1ZGVJbnZpc2libGVFbGVtZW50cz86IGJvb2xlYW47XG4gIH0sXG4pOiBIVE1MRWxlbWVudFtdIHtcbiAgY29uc3QgZm9jdXNhYmxlRWxzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcblxuICBmdW5jdGlvbiBnZXRGb2N1c2FibGVzKGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLCBmaWx0ZXI/OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKGVsKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLm5vZGVOYW1lID09PSAnU0xPVCcpIHtcbiAgICAgICAgZ2V0Rm9jdXNhYmxlcyhcbiAgICAgICAgICBBcnJheS5mcm9tKChlbCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKSkgYXMgSFRNTEVsZW1lbnRbXSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGVsLm1hdGNoZXMoSVNfRk9DVVNBQkxFX1FVRVJZKSAmJlxuICAgICAgICAocHJvcGVydGllcz8uaW5jbHVkZUludmlzaWJsZUVsZW1lbnRzID8/IGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShlbCkpXG4gICAgICApIHtcbiAgICAgICAgZm9jdXNhYmxlRWxzLmFkZChlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0aWVzPy5maW5kRmlyc3RGb2N1c2FibGUgJiYgZm9jdXNhYmxlRWxzLnNpemUgPiAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoIHx8IGVsLnNoYWRvd1Jvb3Q/LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oZWwuY2hpbGRyZW4pLmxlbmd0aFxuICAgICAgICAgID8gKEFycmF5LmZyb20oZWwuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W10pXG4gICAgICAgICAgOiAoQXJyYXkuZnJvbShlbC5zaGFkb3dSb290IS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXSk7XG4gICAgICAgIGdldEZvY3VzYWJsZXMoY2hpbGRyZW4sIGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldEZvY3VzYWJsZXMoZWxlbWVudHMsIHByb3BlcnRpZXM/LmZpbHRlcik7XG5cbiAgcmV0dXJuIFsuLi5mb2N1c2FibGVFbHNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICBlbGVtZW50czogSFRNTEVsZW1lbnRbXSxcbiAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbixcbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoZWxlbWVudHMsIHtcbiAgICBmaWx0ZXIsXG4gICAgZmluZEZpcnN0Rm9jdXNhYmxlOiB0cnVlLFxuICB9KTtcbiAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCA/IGZvY3VzYWJsZUVsZW1lbnRzWzBdIDogbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFNiYkZvY3VzSGFuZGxlciB7XG4gIHByaXZhdGUgX2NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBlbGVtZW50IGluIHdoaWNoIHRoZSBmb2N1cyBzaG91bGQgYmUgdHJhcHBlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSBvcHRpb25zLmZpbHRlciBmaWx0ZXIgZnVuY3Rpb24gd2hpY2ggaXMgYXBwbGllZCBkdXJpbmcgc2VhcmNoaW5nIGZvciBmb2N1c2FibGUgZWxlbWVudC4gSWYgYW4gZWxlbWVudCBpcyBmaWx0ZXJlZCwgYWxzbyBjaGlsZCBlbGVtZW50cyBhcmUgZmlsdGVyZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc3RGaWx0ZXIgZmlsdGVyIGZ1bmN0aW9uIHdoaWNoIGlzIGFwcGxpZWQgYWZ0ZXIgY29sbGVjdGluZyBmb2N1c2FibGUgZWxlbWVudHMuXG4gICAqL1xuICBwdWJsaWMgdHJhcChcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zPzoge1xuICAgICAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICAgIHBvc3RGaWx0ZXI/OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIH0sXG4gICk6IHZvaWQge1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIER5bmFtaWNhbGx5IGdldCBmaXJzdCBhbmQgbGFzdCBmb2N1c2FibGUgZWxlbWVudCwgYXMgdGhpcyBtaWdodCBoYXZlIGNoYW5nZWQgc2luY2Ugb3BlbmluZyBvdmVybGF5XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgZWxlbWVudC5zaGFkb3dSb290IS5jaGlsZHJlbiB8fCBbXSxcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKGVsZW1lbnRDaGlsZHJlbiwge1xuICAgICAgICAgIGZpbHRlcjogb3B0aW9ucz8uZmlsdGVyLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50cyA9IGZvY3VzYWJsZUVsZW1lbnRzLmZpbHRlcihcbiAgICAgICAgICBvcHRpb25zPy5wb3N0RmlsdGVyID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50c1tcbiAgICAgICAgICBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFcbiAgICAgICAgXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBjb25zdCBbcGl2b3QsIG5leHRdID0gZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgICA/IFtmaXJzdEZvY3VzYWJsZSwgbGFzdEZvY3VzYWJsZV1cbiAgICAgICAgICA6IFtsYXN0Rm9jdXNhYmxlLCBmaXJzdEZvY3VzYWJsZV07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmaXJzdEZvY3VzYWJsZS5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuYWN0aXZlRWxlbWVudCA9PT0gcGl2b3QgfHxcbiAgICAgICAgICAobGFzdEZvY3VzYWJsZS5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuYWN0aXZlRWxlbWVudCA9PT0gcGl2b3RcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV4dC5mb2N1cygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fY29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbGxlci5hYm9ydCgpO1xuICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJlbGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsU0FBUyxxQkFBc0M7QUFDekMsTUFBQSw2QkFBNkIsT0FBTztBQUN0QyxXQUFPLEVBQUUsU0FBUyxjQUFjLFNBQVMsWUFBWTtBQUFBLEVBQUEsT0FDaEQ7QUFDTCxXQUFPLEVBQUUsU0FBUyxhQUFhLFNBQVMsYUFBYTtBQUFBLEVBQ3ZEO0FBQ0Y7QUFNTyxTQUFTLGtCQUFrQixPQUErQjtBQUN4RCxTQUFBLENBQUMsY0FBYyxhQUFhLFdBQVcsV0FBVyxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQy9FO0FBTU8sU0FBUywwQkFBMEIsT0FBK0I7QUFDdkUsU0FBTyxNQUFNLFFBQVEsYUFBYSxNQUFNLFFBQVEsbUJBQXFCLEVBQUE7QUFDdkU7QUFNTyxTQUFTLHNCQUFzQixPQUErQjtBQUNuRSxTQUFPLE1BQU0sUUFBUSxlQUFlLE1BQU0sUUFBUSxtQkFBcUIsRUFBQTtBQUN6RTtBQU1PLFNBQVMsNEJBQTRCLE9BQStCO0FBQ2xFLFNBQUEsa0JBQWtCLEtBQUssS0FBSyxDQUFDLFVBQVUsWUFBWSxRQUFRLEtBQUssRUFBRSxTQUFTLE1BQU0sR0FBRztBQUM3RjtBQVFBLFNBQVMscUJBQXFCLGNBQXNCLFVBQWtCLFFBQXdCO0FBQ3BGLFVBQUEsZUFBZSxTQUFTLFlBQVk7QUFDOUM7QUFFQSxTQUFTLGFBQWEsTUFBc0I7QUFDMUMsU0FBTyxPQUFPO0FBQ2hCO0FBRUEsTUFBTSxhQUFhO0FBWUgsU0FBQSxvQkFBb0IsT0FBc0IsU0FBaUIsTUFBc0I7QUFDL0YsUUFBTSxFQUFFLFNBQVMsUUFBUSxJQUFJLG1CQUFtQjtBQUVoRCxNQUFJLE1BQU0sUUFBUSxXQUFXLE1BQU0sUUFBUSxXQUFXO0FBQzdDLFdBQUEsVUFBVSxhQUFh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
|
|
295
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9hcnJvdy1uYXZpZ2F0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXZpc2libGUtd2l0aGluLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ludGVyYWN0aXZpdHktY2hlY2tlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvZm9jdXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RG9jdW1lbnRXcml0aW5nTW9kZSB9IGZyb20gJy4uL2RvbS5qcyc7XG5cbmludGVyZmFjZSBQcmV2QW5kTmV4dEtleXMge1xuICBwcmV2S2V5OiBzdHJpbmc7XG4gIG5leHRLZXk6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UHJldkFuZE5leHRLZXlzKCk6IFByZXZBbmROZXh0S2V5cyB7XG4gIGlmIChnZXREb2N1bWVudFdyaXRpbmdNb2RlKCkgPT09ICdydGwnKSB7XG4gICAgcmV0dXJuIHsgcHJldktleTogJ0Fycm93UmlnaHQnLCBuZXh0S2V5OiAnQXJyb3dMZWZ0JyB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IHByZXZLZXk6ICdBcnJvd0xlZnQnLCBuZXh0S2V5OiAnQXJyb3dSaWdodCcgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBrZXkgcHJlc3NlZCBpcyBhbW9uZyB0aG9zZSBhbGxvd2VkIGZvciBuYXZpZ2F0aW9uLlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBbJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnQua2V5KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgc2hvdWxkIG1vdmUgdGhlIG5hdmlnYXRpb24gdG8gdGhlIG5leHQgZWxlbWVudC5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXZpb3VzQXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09IGdldFByZXZBbmROZXh0S2V5cygpLnByZXZLZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIHNob3VsZCBtb3ZlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOZXh0QXJyb3dLZXlQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gZ2V0UHJldkFuZE5leHRLZXlzKCkubmV4dEtleTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgaXMgYW1vbmcgdGhvc2UgYWxsb3dlZCBmb3IgbmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fycm93S2V5T3JQYWdlS2V5c1ByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSB8fCBbJ1BhZ2VVcCcsICdQYWdlRG93bicsICdIb21lJywgJ0VuZCddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBlbGVtZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBvZmZzZXQuXG4gKiBAcGFyYW0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50LlxuICogQHBhcmFtIG1heEluZGV4IFRoZSBtYXhpbXVtIHBlcm1pdHRlZCB2YWx1ZSAoZS5nLiBhcnJheSBzaXplKS5cbiAqIEBwYXJhbSBvZmZzZXQgVGhlIGFtb3VudCB0byBtb3ZlIGJ5LlxuICovXG5mdW5jdGlvbiBjYWxjTmV4dEluZGV4SW5SYW5nZShjdXJyZW50SW5kZXg6IG51bWJlciwgbWF4SW5kZXg6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKGN1cnJlbnRJbmRleCArIG9mZnNldCArIG1heEluZGV4KSAlIG1heEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRMYXN0SW5kZXgoc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIHNpemUgLSAxO1xufVxuXG5jb25zdCBmaXJzdEluZGV4ID0gMDtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBtb3ZlIHRvLCBiYXNlZCBvbiB0aGUga2V5Ym9hcmQgaW5wdXQsIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlIGxpc3QgYW5kIHRoZSBsaXN0IHNpemUuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICogQHBhcmFtIGN1cnJlbnQgVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlIGxpc3QuXG4gKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgbGlzdC5cbiAqIEByZXR1cm5zIGlmIGl0IGlzIGEgJ3ByZXZpb3VzJyBldmVudCwgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHByZXZpb3VzIGVsZW1lbnQsXG4gKiBvciB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb25lIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgdGhlIGZpcnN0IGluIHRoZSBsaXN0O1xuICogaWYgaXQgaXMgYSAnbmV4dCcgZXZlbnQsIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGVsZW1lbnQsXG4gKiBvciB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9uZSwgaWYgdGhlIGN1cnJlbnQgaXMgdGhlIGxhc3QgaW4gdGhlIGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjdXJyZW50OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IHsgcHJldktleSwgbmV4dEtleSB9ID0gZ2V0UHJldkFuZE5leHRLZXlzKCk7XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gcHJldktleSB8fCBldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgIHJldHVybiBjdXJyZW50IDwgZmlyc3RJbmRleCA/IGdldExhc3RJbmRleChzaXplKSA6IGNhbGNOZXh0SW5kZXhJblJhbmdlKGN1cnJlbnQsIHNpemUsIC0xKTtcbiAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IG5leHRLZXkgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgIHJldHVybiBjdXJyZW50ID49IHNpemUgPyBmaXJzdEluZGV4IDogY2FsY05leHRJbmRleEluUmFuZ2UoY3VycmVudCwgc2l6ZSwgMSk7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG4iLCIvLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL2Nkay9hMTF5L2Zha2UtZXZlbnQtZGV0ZWN0aW9uLnRzXG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZXZlbnQgY291bGQgYmUgYSBmYWtlZCBgbW91c2Vkb3duYCBldmVudCBkaXNwYXRjaGVkIGJ5IGEgc2NyZWVuIHJlYWRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gIC8vIFNvbWUgc2NyZWVuIHJlYWRlcnMgd2lsbCBkaXNwYXRjaCBhIGZha2UgYG1vdXNlZG93bmAgZXZlbnQgd2hlbiBwcmVzc2luZyBlbnRlciBvciBzcGFjZSBvblxuICAvLyBhIGNsaWNrYWJsZSBlbGVtZW50LiBXZSBjYW4gZGlzdGluZ3Vpc2ggdGhlc2UgZXZlbnRzIHdoZW4gYGV2ZW50LmJ1dHRvbnNgIGlzIHplcm8sIG9yXG4gIC8vIGBldmVudC5kZXRhaWxgIGlzIHplcm8gZGVwZW5kaW5nIG9uIHRoZSBicm93c2VyOlxuICAvLyAtIGBldmVudC5idXR0b25zYCB3b3JrcyBvbiBGaXJlZm94LCBidXQgZmFpbHMgb24gQ2hyb21lLlxuICAvLyAtIGBkZXRhaWxgIHdvcmtzIG9uIENocm9tZSwgYnV0IGZhaWxzIG9uIEZpcmVmb3guXG4gIHJldHVybiBldmVudC5idXR0b25zID09PSAwIHx8IGV2ZW50LmRldGFpbCA9PT0gMDtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBldmVudCBjb3VsZCBiZSBhIGZha2VkIGB0b3VjaHN0YXJ0YCBldmVudCBkaXNwYXRjaGVkIGJ5IGEgc2NyZWVuIHJlYWRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcihldmVudDogVG91Y2hFdmVudCk6IGJvb2xlYW4ge1xuICBjb25zdCB0b3VjaDogVG91Y2ggfCB1bmRlZmluZWQgPVxuICAgIChldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXNbMF0pIHx8IChldmVudC5jaGFuZ2VkVG91Y2hlcyAmJiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSk7XG5cbiAgLy8gQSBmYWtlIGB0b3VjaHN0YXJ0YCBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tIGEgcmVhbCBvbmUgYnkgbG9va2luZyBhdCB0aGUgYGlkZW50aWZpZXJgXG4gIC8vIHdoaWNoIGlzIHR5cGljYWxseSA+PSAwIG9uIGEgcmVhbCBkZXZpY2UgdmVyc3VzIC0xIGZyb20gYSBzY3JlZW4gcmVhZGVyLiBKdXN0IHRvIGJlIHNhZmUsXG4gIC8vIHdlIGNhbiBhbHNvIGxvb2sgYXQgYHJhZGl1c1hgIGFuZCBgcmFkaXVzWWAuIFRoaXMgYmVoYXZpb3Igd2FzIG9ic2VydmVkIGFnYWluc3QgYSBXaW5kb3dzIDEwXG4gIC8vIGRldmljZSB3aXRoIGEgdG91Y2ggc2NyZWVuIHJ1bm5pbmcgTlZEQSB2MjAyMC40IGFuZCBGaXJlZm94IDg1IG9yIENocm9tZSA4OC5cbiAgcmV0dXJuIChcbiAgICAhIXRvdWNoICYmXG4gICAgdG91Y2guaWRlbnRpZmllciA9PT0gLTEgJiZcbiAgICAodG91Y2gucmFkaXVzWCA9PSBudWxsIHx8IHRvdWNoLnJhZGl1c1ggPT09IDEpICYmXG4gICAgKHRvdWNoLnJhZGl1c1kgPT0gbnVsbCB8fCB0b3VjaC5yYWRpdXNZID09PSAxKVxuICApO1xufVxuIiwiLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL2ExMXkvaW5wdXQtbW9kYWxpdHkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHNcblxuaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBnZXRFdmVudFRhcmdldCB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHtcbiAgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcixcbiAgaXNGYWtlVG91Y2hzdGFydEZyb21TY3JlZW5SZWFkZXIsXG59IGZyb20gJy4vZmFrZS1ldmVudC1kZXRlY3Rpb24uanMnO1xuXG5leHBvcnQgdHlwZSBTYmJJbnB1dE1vZGFsaXR5ID0gJ3RvdWNoJyB8ICdtb3VzZScgfCAna2V5Ym9hcmQnIHwgJ3Byb2dyYW0nIHwgbnVsbDtcblxuLyoqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBiZWhhdmlvciBvZiB0aGUgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLiAqL1xuaW50ZXJmYWNlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMge1xuICAvKiogS2V5cyB0byBpZ25vcmUgd2hlbiBkZXRlY3Rpbmcga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuICovXG4gIGlnbm9yZUtleXM/OiBudW1iZXJbXTtcbn1cblxuY29uc3QgU0hJRlQgPSAxNjtcbmNvbnN0IENPTlRST0wgPSAxNztcbmNvbnN0IEFMVCA9IDE4O1xuY29uc3QgTUVUQSA9IDkxOyAvLyBXSU5fS0VZX0xFRlRcbmNvbnN0IE1BQ19NRVRBID0gMjI0O1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5cbiAqXG4gKiBNb2RpZmllciBrZXlzIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQgKGkuZS4gd2hlbiBwcmVzc2VkIHdvbid0IGNhdXNlIHRoZSBzZXJ2aWNlIHRvIGRldGVjdFxuICoga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkpIGZvciB0d28gcmVhc29uczpcbiAqXG4gKiAxLiBNb2RpZmllciBrZXlzIGFyZSBjb21tb25seSB1c2VkIHdpdGggbW91c2UgdG8gcGVyZm9ybSBhY3Rpb25zIHN1Y2ggYXMgJ3JpZ2h0IGNsaWNrJyBvciAnb3BlblxuICogICAgaW4gbmV3IHRhYicsIGFuZCBhcmUgdGh1cyBsZXNzIHJlcHJlc2VudGF0aXZlIG9mIGFjdHVhbCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAqIDIuIFZvaWNlT3ZlciB0cmlnZ2VycyBzb21lIGtleWJvYXJkIGV2ZW50cyB3aGVuIGxpbmVhcmx5IG5hdmlnYXRpbmcgd2l0aCBDb250cm9sICsgT3B0aW9uIChidXRcbiAqICAgIGNvbmZ1c2luZ2x5IG5vdCB3aXRoIENhcHMgTG9jaykuIFRodXMsIHRvIGhhdmUgcGFyaXR5IHdpdGggb3RoZXIgc2NyZWVuIHJlYWRlcnMsIHdlIGlnbm9yZVxuICogICAgdGhlc2Uga2V5cyBzbywgYXMgdG8gbm90IHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkuXG4gKlxuICogTm90ZSB0aGF0IHdlIGRvIG5vdCBieSBkZWZhdWx0IGlnbm9yZSB0aGUgcmlnaHQgTWV0YSBrZXkgb24gU2FmYXJpIGJlY2F1c2UgaXQgaGFzIHRoZSBzYW1lIGtleVxuICogY29kZSBhcyB0aGUgQ29udGV4dE1lbnUga2V5IG9uIG90aGVyIGJyb3dzZXJzLiBXaGVuIHdlIHN3aXRjaCB0byB1c2luZyBldmVudC5rZXksIHdlIGNhblxuICogZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLlxuICovXG5jb25zdCBpbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zOiBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zID0ge1xuICBpZ25vcmVLZXlzOiBbQUxULCBDT05UUk9MLCBNQUNfTUVUQSwgTUVUQSwgU0hJRlRdLFxufTtcblxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHRpbWUgbmVlZGVkIHRvIHBhc3MgYWZ0ZXIgYSB0b3VjaHN0YXJ0IGV2ZW50IGluIG9yZGVyIGZvciBhIHN1YnNlcXVlbnQgbW91c2Vkb3duXG4gKiBldmVudCB0byBiZSBhdHRyaWJ1dGVkIGFzIG1vdXNlIGFuZCBub3QgdG91Y2guXG4gKlxuICogVGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IgaXQgd2FzIGZvdW5kIHRoYXQgYSB2YWx1ZSBvZiBhcm91bmQgNjUwbXMgc2VlbXMgYXBwcm9wcmlhdGUuXG4gKi9cbmNvbnN0IHRvdWNoQnVmZmVyTXMgPSA2NTA7XG5cbi8qKlxuICogRXZlbnQgbGlzdGVuZXIgb3B0aW9ucyB0aGF0IGVuYWJsZSBjYXB0dXJpbmcgYW5kIGFsc28gbWFyayB0aGUgbGlzdGVuZXIgYXMgcGFzc2l2ZSBpZiB0aGUgYnJvd3NlclxuICogc3VwcG9ydHMgaXQuXG4gKi9cbmNvbnN0IG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IHRydWUsXG59O1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBkZXRlY3RzIHRoZSB1c2VyJ3MgaW5wdXQgbW9kYWxpdHkuXG4gKlxuICogVGhpcyBzZXJ2aWNlIGRvZXMgbm90IHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkgd2hlbiBhIHVzZXIgbmF2aWdhdGVzIHdpdGggYSBzY3JlZW4gcmVhZGVyXG4gKiAoZS5nLiBsaW5lYXIgbmF2aWdhdGlvbiB3aXRoIFZvaWNlT3Zlciwgb2JqZWN0IG5hdmlnYXRpb24gLyBicm93c2UgbW9kZSB3aXRoIE5WREEsIHZpcnR1YWwgUENcbiAqIGN1cnNvciBtb2RlIHdpdGggSkFXUykuIFRoaXMgaXMgaW4gcGFydCBkdWUgdG8gdGVjaG5pY2FsIGxpbWl0YXRpb25zIChpLmUuIGtleWJvYXJkIGV2ZW50cyBkbyBub3RcbiAqIGZpcmUgYXMgZXhwZWN0ZWQgaW4gdGhlc2UgbW9kZXMpIGJ1dCBpcyBhbHNvIGFyZ3VhYmx5IHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBOYXZpZ2F0aW5nIHdpdGggYVxuICogc2NyZWVuIHJlYWRlciBpcyBha2luIHRvIHZpc3VhbGx5IHNjYW5uaW5nIGEgcGFnZSwgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYWN0dWFsIHVzZXJcbiAqIGlucHV0IGludGVyYWN0aW9uLlxuICpcbiAqIFdoZW4gYSB1c2VyIGlzIG5vdCBuYXZpZ2F0aW5nIGJ1dCAqaW50ZXJhY3RpbmcqIHdpdGggYSBzY3JlZW4gcmVhZGVyLCB0aGlzIHNlcnZpY2UgYXR0ZW1wdHMgdG9cbiAqIHVwZGF0ZSB0aGUgaW5wdXQgbW9kYWxpdHkgdG8ga2V5Ym9hcmQsIGJ1dCBpbiBnZW5lcmFsIHRoaXMgc2VydmljZSdzIGJlaGF2aW9yIGlzIGxhcmdlbHlcbiAqIHVuZGVmaW5lZC5cbiAqL1xuY2xhc3MgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIHtcbiAgLyoqIFRoZSBtb3N0IHJlY2VudGx5IGRldGVjdGVkIGlucHV0IG1vZGFsaXR5LiAqL1xuICBwdWJsaWMgZ2V0IG1vc3RSZWNlbnRNb2RhbGl0eSgpOiBTYmJJbnB1dE1vZGFsaXR5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgbW9kYWxpdHkgbXVzdCBiZSBpbml0aWFsaXNlZCB3aXRoIHRoZSB2YWx1ZSAnbW91c2UnIHRvIGNvdmVyIHRoZSBjYXNlIHdoZXJlIGFuIGFjdGlvbiBpc1xuICAgKiBwZXJmb3JtZWQgYnV0IG5vIG1vdXNlIG9yIGtleWJvYXJkIGV2ZW50IGhhcyB5ZXQgb2NjdXJyZWQgb24gdGhlIHBhZ2UgKGUuZy4gYHNiYi1wb3BvdmVyYCB3aXRoIGhvdmVyIHRyaWdnZXIpLlxuICAgKi9cbiAgcHJpdmF0ZSBfbW9zdFJlY2VudE1vZGFsaXR5OiBTYmJJbnB1dE1vZGFsaXR5IHwgbnVsbCA9ICdtb3VzZSc7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IHJlY2VudGx5IGRldGVjdGVkIGlucHV0IG1vZGFsaXR5IGV2ZW50IHRhcmdldC4gSXMgbnVsbCBpZiBubyBpbnB1dCBtb2RhbGl0eSBoYXMgYmVlblxuICAgKiBkZXRlY3RlZCBvciBpZiB0aGUgYXNzb2NpYXRlZCBldmVudCB0YXJnZXQgaXMgbnVsbCBmb3Igc29tZSB1bmtub3duIHJlYXNvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgbW9zdFJlY2VudFRhcmdldCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0O1xuICB9XG4gIHByaXZhdGUgX21vc3RSZWNlbnRUYXJnZXQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE9wdGlvbnMgZm9yIHRoaXMgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zID0ge1xuICAgIC4uLmlucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMsXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgdG91Y2ggaW5wdXQgbW9kYWxpdHkuIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbW91c2Vkb3duIGV2ZW50c1xuICAgKiBzaG91bGQgYmUgYXR0cmlidXRlZCB0byBtb3VzZSBvciB0b3VjaC5cbiAgICovXG4gIHByaXZhdGUgX2xhc3RUb3VjaE1zID0gMDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5ZG93biwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9vbk1vdXNlZG93biwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5fb25Ub3VjaHN0YXJ0LCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5ID0gJ21vdXNlJztcbiAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IDA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0IGdldHNcbiAgICogYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAvLyBJZiB0aGlzIGlzIG9uZSBvZiB0aGUga2V5cyB3ZSBzaG91bGQgaWdub3JlLCB0aGVuIGlnbm9yZSBpdCBhbmQgZG9uJ3QgdXBkYXRlIHRoZSBpbnB1dFxuICAgIC8vIG1vZGFsaXR5IHRvIGtleWJvYXJkLlxuICAgIGlmICh0aGlzLl9vcHRpb25zPy5pZ25vcmVLZXlzPy5zb21lKChrZXlDb2RlKSA9PiBrZXlDb2RlID09PSBldmVudC5rZXlDb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdrZXlib2FyZCc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZWRvd24gZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uTW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gVG91Y2hlcyB0cmlnZ2VyIGJvdGggdG91Y2ggYW5kIG1vdXNlIGV2ZW50cywgc28gd2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1vdXNlIGV2ZW50c1xuICAgIC8vIHRoYXQgd2VyZSB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLiBUbyBkbyBzbywgY2hlY2sgaWYgdGhlIG1vdXNlIGV2ZW50IG9jY3VycyBjbG9zZWx5XG4gICAgLy8gYWZ0ZXIgdGhlIHByZXZpb3VzIHRvdWNoIGV2ZW50LlxuICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdFRvdWNoTXMgPCB0b3VjaEJ1ZmZlck1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFrZSBtb3VzZWRvd24gZXZlbnRzIGFyZSBmaXJlZCBieSBzb21lIHNjcmVlbiByZWFkZXJzIHdoZW4gY29udHJvbHMgYXJlIGFjdGl2YXRlZCBieSB0aGVcbiAgICAvLyBzY3JlZW4gcmVhZGVyLiBBdHRyaWJ1dGUgdGhlbSB0byBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSA/ICdrZXlib2FyZCcgOiAnbW91c2UnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdG91Y2hzdGFydCBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdFxuICAgKiBnZXRzIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25Ub3VjaHN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gU2FtZSBzY2VuYXJpbyBhcyBtZW50aW9uZWQgaW4gX29uTW91c2Vkb3duLCBidXQgb24gdG91Y2ggc2NyZWVuIGRldmljZXMsIGZha2UgdG91Y2hzdGFydFxuICAgIC8vIGV2ZW50cyBhcmUgZmlyZWQuIEFnYWluLCBhdHRyaWJ1dGUgdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgaWYgKGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5ID0gJ2tleWJvYXJkJztcbiAgICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHRpbWVzdGFtcCBvZiB0aGlzIHRvdWNoIGV2ZW50LCBhcyBpdCdzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtb3VzZSBldmVudHNcbiAgICAvLyB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLlxuICAgIHRoaXMuX2xhc3RUb3VjaE1zID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICd0b3VjaCc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciA9IG5ldyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IoKTtcblxuLy8gU2V0IHRoZSBpbnB1dCBtb2RhbGl0eSBpbiBvcmRlciB0byBhdm9pZCBzaG93aW5nIHRoZSBvdXRsaW5lIGluIFNhZmFyaS5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKCFlbGVtZW50VG9Gb2N1cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1vc3RSZWNlbnRNb2RhbGl0eSA9IHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHk7XG5cbiAgLy8gU2V0IGZvY3VzIG9yaWdpbiB0byBlbGVtZW50IHdoaWNoIHNob3VsZCByZWNlaXZlIGZvY3VzXG4gIGlmICghKGVsZW1lbnRUb0ZvY3VzICYmIG1vc3RSZWNlbnRNb2RhbGl0eSAhPT0gbnVsbCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudFRvRm9jdXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAnZm9jdXMnLFxuICAgICgpID0+IHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLnNldEF0dHJpYnV0ZSgnZGF0YS1mb2N1cy1vcmlnaW4nLCBtb3N0UmVjZW50TW9kYWxpdHkpO1xuICAgICAgZWxlbWVudFRvRm9jdXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2JsdXInLFxuICAgICAgICAoKSA9PiBlbGVtZW50VG9Gb2N1cy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtb3JpZ2luJyksXG4gICAgICAgIHtcbiAgICAgICAgICBvbmNlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHsgb25jZTogdHJ1ZSB9LFxuICApO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuL2lucHV0LW1vZGFsaXR5LWRldGVjdG9yLmpzJztcblxuLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgdmlzaWJsZSBmb2N1cyB3aXRoaW4uXG5leHBvcnQgY2xhc3MgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF9mb2N1c2luSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9ob3N0LnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbicsXG4gICAgICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfZm9jdXNvdXRIYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2hvc3QucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbicpO1xuICB9O1xuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3QuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2ZvY3VzaW5IYW5kbGVyKTtcbiAgICB0aGlzLl9ob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5fZm9jdXNvdXRIYW5kbGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHRoaXMuX2ZvY3VzaW5IYW5kbGVyKTtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgdGhpcy5fZm9jdXNvdXRIYW5kbGVyKTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGhhc0dlb21ldHJ5KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIC8vIFVzZSBsb2dpYyBmcm9tIGpRdWVyeSB0byBjaGVjayBmb3IgYW4gaW52aXNpYmxlIGVsZW1lbnQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMjTDEyXG4gIHJldHVybiAhIShcbiAgICBlbGVtZW50Lm9mZnNldFdpZHRoIHx8XG4gICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHxcbiAgICAodHlwZW9mIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMgPT09ICdmdW5jdGlvbicgJiYgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aClcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlciBpbXBsZW1lbnRzIEludGVyZmFjZUludGVyYWN0aXZpdHlDaGVja2VyIHtcbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIHZpc2libGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBpbnRlcmFjdGl2aXR5LlxuICAgKlxuICAgKiBUaGlzIHdpbGwgY2FwdHVyZSBzdGF0ZXMgbGlrZSBgZGlzcGxheTogbm9uZWAgYW5kIGB2aXNpYmlsaXR5OiBoaWRkZW5gLCBidXQgbm90IHRoaW5ncyBsaWtlXG4gICAqIGJlaW5nIGNsaXBwZWQgYnkgYW4gYG92ZXJmbG93OiBoaWRkZW5gIHBhcmVudCBvciBiZWluZyBvdXRzaWRlIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKi9cbiAgcHVibGljIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNHZW9tZXRyeShlbGVtZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnZpc2liaWxpdHkgPT09ICd2aXNpYmxlJztcbiAgfVxufVxuXG5jbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlck1vY2sgaW1wbGVtZW50cyBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIHB1YmxpYyBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLy8gRm9yIHVuaXQgdGVzdHMgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgYW4gZWxlbWVudCBpcyBhbHdheXMgdmlzaWJsZS5cbi8vIFRoaXMgY2FuIGJlIGRvbmUgYnkgY2hlY2tpbmcgaWYgdmlzaWJpbGl0eSBwcm9wZXJ0eSBpcyBzZXQgdG8gZW1wdHkuXG5leHBvcnQgY29uc3QgaW50ZXJhY3Rpdml0eUNoZWNrZXI6IEludGVyZmFjZUludGVyYWN0aXZpdHlDaGVja2VyID1cbiAgdHlwZW9mIGdldENvbXB1dGVkU3R5bGUgPT09ICd1bmRlZmluZWQnIHx8XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS52aXNpYmlsaXR5ID09PSAnJ1xuICAgID8gbmV3IEludGVyYWN0aXZpdHlDaGVja2VyTW9jaygpXG4gICAgOiBuZXcgSW50ZXJhY3Rpdml0eUNoZWNrZXIoKTtcbiIsImltcG9ydCB7IGludGVyYWN0aXZpdHlDaGVja2VyIH0gZnJvbSAnLi9pbnRlcmFjdGl2aXR5LWNoZWNrZXIuanMnO1xuXG5leHBvcnQgY29uc3QgSVNfRk9DVVNBQkxFX1FVRVJZID0gW1xuICAnYnV0dG9uJyxcbiAgJ1tocmVmXScsXG4gICdpbnB1dCcsXG4gICdzZWxlY3QnLFxuICAndGV4dGFyZWEnLFxuICAnZGV0YWlscycsXG4gICdzdW1tYXJ5Om5vdCg6ZGlzYWJsZWQpJyxcbiAgJ1t0YWJpbmRleF0nLFxuXVxuICAubWFwKChzZWxlY3RvcikgPT4gYCR7c2VsZWN0b3J9Om5vdChbZGlzYWJsZWRdLFt0YWJpbmRleD1cIi0xXCJdKWApXG4gIC5qb2luKCcsJyk7XG5cbi8vIE5vdGU6IHRoZSB1c2Ugb2YgdGhpcyBmdW5jdGlvbiBmb3IgbW9yZSBjb21wbGV4IHNjZW5hcmlvcyAod2l0aCBtYW55IG5lc3RlZCBlbGVtZW50cykgbWF5IGJlIGV4cGVuc2l2ZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVFbGVtZW50cyhcbiAgZWxlbWVudHM6IEhUTUxFbGVtZW50W10sXG4gIHByb3BlcnRpZXM/OiB7XG4gICAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBmaW5kRmlyc3RGb2N1c2FibGU/OiBib29sZWFuO1xuICAgIGluY2x1ZGVJbnZpc2libGVFbGVtZW50cz86IGJvb2xlYW47XG4gIH0sXG4pOiBIVE1MRWxlbWVudFtdIHtcbiAgY29uc3QgZm9jdXNhYmxlRWxzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcblxuICBmdW5jdGlvbiBnZXRGb2N1c2FibGVzKGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLCBmaWx0ZXI/OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKGVsKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLm5vZGVOYW1lID09PSAnU0xPVCcpIHtcbiAgICAgICAgZ2V0Rm9jdXNhYmxlcyhcbiAgICAgICAgICBBcnJheS5mcm9tKChlbCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKSkgYXMgSFRNTEVsZW1lbnRbXSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGVsLm1hdGNoZXMoSVNfRk9DVVNBQkxFX1FVRVJZKSAmJlxuICAgICAgICAocHJvcGVydGllcz8uaW5jbHVkZUludmlzaWJsZUVsZW1lbnRzID8/IGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShlbCkpXG4gICAgICApIHtcbiAgICAgICAgZm9jdXNhYmxlRWxzLmFkZChlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0aWVzPy5maW5kRmlyc3RGb2N1c2FibGUgJiYgZm9jdXNhYmxlRWxzLnNpemUgPiAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoIHx8IGVsLnNoYWRvd1Jvb3Q/LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oZWwuY2hpbGRyZW4pLmxlbmd0aFxuICAgICAgICAgID8gKEFycmF5LmZyb20oZWwuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W10pXG4gICAgICAgICAgOiAoQXJyYXkuZnJvbShlbC5zaGFkb3dSb290IS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXSk7XG4gICAgICAgIGdldEZvY3VzYWJsZXMoY2hpbGRyZW4sIGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldEZvY3VzYWJsZXMoZWxlbWVudHMsIHByb3BlcnRpZXM/LmZpbHRlcik7XG5cbiAgcmV0dXJuIFsuLi5mb2N1c2FibGVFbHNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICBlbGVtZW50czogSFRNTEVsZW1lbnRbXSxcbiAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbixcbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoZWxlbWVudHMsIHtcbiAgICBmaWx0ZXIsXG4gICAgZmluZEZpcnN0Rm9jdXNhYmxlOiB0cnVlLFxuICB9KTtcbiAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCA/IGZvY3VzYWJsZUVsZW1lbnRzWzBdIDogbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFNiYkZvY3VzSGFuZGxlciB7XG4gIHByaXZhdGUgX2NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBlbGVtZW50IGluIHdoaWNoIHRoZSBmb2N1cyBzaG91bGQgYmUgdHJhcHBlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSBvcHRpb25zLmZpbHRlciBmaWx0ZXIgZnVuY3Rpb24gd2hpY2ggaXMgYXBwbGllZCBkdXJpbmcgc2VhcmNoaW5nIGZvciBmb2N1c2FibGUgZWxlbWVudC4gSWYgYW4gZWxlbWVudCBpcyBmaWx0ZXJlZCwgYWxzbyBjaGlsZCBlbGVtZW50cyBhcmUgZmlsdGVyZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc3RGaWx0ZXIgZmlsdGVyIGZ1bmN0aW9uIHdoaWNoIGlzIGFwcGxpZWQgYWZ0ZXIgY29sbGVjdGluZyBmb2N1c2FibGUgZWxlbWVudHMuXG4gICAqL1xuICBwdWJsaWMgdHJhcChcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zPzoge1xuICAgICAgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICAgIHBvc3RGaWx0ZXI/OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIH0sXG4gICk6IHZvaWQge1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIER5bmFtaWNhbGx5IGdldCBmaXJzdCBhbmQgbGFzdCBmb2N1c2FibGUgZWxlbWVudCwgYXMgdGhpcyBtaWdodCBoYXZlIGNoYW5nZWQgc2luY2Ugb3BlbmluZyBvdmVybGF5XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgZWxlbWVudC5zaGFkb3dSb290IS5jaGlsZHJlbiB8fCBbXSxcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKGVsZW1lbnRDaGlsZHJlbiwge1xuICAgICAgICAgIGZpbHRlcjogb3B0aW9ucz8uZmlsdGVyLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50cyA9IGZvY3VzYWJsZUVsZW1lbnRzLmZpbHRlcihcbiAgICAgICAgICBvcHRpb25zPy5wb3N0RmlsdGVyID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50c1tcbiAgICAgICAgICBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFcbiAgICAgICAgXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBjb25zdCBbcGl2b3QsIG5leHRdID0gZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgICA/IFtmaXJzdEZvY3VzYWJsZSwgbGFzdEZvY3VzYWJsZV1cbiAgICAgICAgICA6IFtsYXN0Rm9jdXNhYmxlLCBmaXJzdEZvY3VzYWJsZV07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmaXJzdEZvY3VzYWJsZS5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuYWN0aXZlRWxlbWVudCA9PT0gcGl2b3QgfHxcbiAgICAgICAgICAobGFzdEZvY3VzYWJsZS5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuYWN0aXZlRWxlbWVudCA9PT0gcGl2b3RcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV4dC5mb2N1cygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fY29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbGxlci5hYm9ydCgpO1xuICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJlbGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsU0FBUyxxQkFBc0M7QUFDekMsTUFBQSw2QkFBNkIsT0FBTztBQUN0QyxXQUFPLEVBQUUsU0FBUyxjQUFjLFNBQVMsWUFBWTtBQUFBLEVBQUEsT0FDaEQ7QUFDTCxXQUFPLEVBQUUsU0FBUyxhQUFhLFNBQVMsYUFBYTtBQUFBLEVBQ3ZEO0FBQ0Y7QUFNTyxTQUFTLGtCQUFrQixPQUErQjtBQUN4RCxTQUFBLENBQUMsY0FBYyxhQUFhLFdBQVcsV0FBVyxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQy9FO0FBTU8sU0FBUywwQkFBMEIsT0FBK0I7QUFDdkUsU0FBTyxNQUFNLFFBQVEsYUFBYSxNQUFNLFFBQVEsbUJBQXFCLEVBQUE7QUFDdkU7QUFNTyxTQUFTLHNCQUFzQixPQUErQjtBQUNuRSxTQUFPLE1BQU0sUUFBUSxlQUFlLE1BQU0sUUFBUSxtQkFBcUIsRUFBQTtBQUN6RTtBQU1PLFNBQVMsNEJBQTRCLE9BQStCO0FBQ2xFLFNBQUEsa0JBQWtCLEtBQUssS0FBSyxDQUFDLFVBQVUsWUFBWSxRQUFRLEtBQUssRUFBRSxTQUFTLE1BQU0sR0FBRztBQUM3RjtBQVFBLFNBQVMscUJBQXFCLGNBQXNCLFVBQWtCLFFBQXdCO0FBQ3BGLFVBQUEsZUFBZSxTQUFTLFlBQVk7QUFDOUM7QUFFQSxTQUFTLGFBQWEsTUFBc0I7QUFDMUMsU0FBTyxPQUFPO0FBQ2hCO0FBRUEsTUFBTSxhQUFhO0FBWUgsU0FBQSxvQkFBb0IsT0FBc0IsU0FBaUIsTUFBc0I7QUFDL0YsUUFBTSxFQUFFLFNBQVMsUUFBUSxJQUFJLG1CQUFtQjtBQUVoRCxNQUFJLE1BQU0sUUFBUSxXQUFXLE1BQU0sUUFBUSxXQUFXO0FBQzdDLFdBQUEsVUFBVSxhQUFh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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { LitElement, TemplateResult } from 'lit';
|
|
2
2
|
export declare abstract class SbbActionBaseElement extends LitElement {
|
|
3
3
|
protected get maybeDisabled(): boolean | undefined;
|
|
4
|
+
connectedCallback(): void;
|
|
4
5
|
protected setupBaseEventHandlers(): void;
|
|
5
6
|
/** Override this method to render the component template. */
|
|
6
7
|
protected renderTemplate(): TemplateResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/action-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAe5D,8BAIsB,oBAAqB,SAAQ,UAAU;IAC3D,SAAS,KAAK,aAAa,IAAI,OAAO,GAAG,SAAS,CAGjD;
|
|
1
|
+
{"version":3,"file":"action-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/action-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAe5D,8BAIsB,oBAAqB,SAAQ,UAAU;IAC3D,SAAS,KAAK,aAAa,IAAI,OAAO,GAAG,SAAS,CAGjD;IAEe,iBAAiB,IAAI,IAAI;IAezC,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAexC,6DAA6D;IAC7D,SAAS,CAAC,cAAc,IAAI,cAAc;IAI1C,wDAAwD;cACrC,MAAM,IAAI,cAAc;CAO5C"}
|
|
@@ -23,6 +23,7 @@ export declare abstract class SbbButtonBaseElement extends SbbActionBaseElement
|
|
|
23
23
|
get value(): string;
|
|
24
24
|
/** The <form> element to associate the button with. */
|
|
25
25
|
form?: string;
|
|
26
|
+
constructor();
|
|
26
27
|
private _handleButtonClick;
|
|
27
28
|
/**
|
|
28
29
|
* Prevents scrolling from pressing Space, when the event target is an action element.
|
|
@@ -39,7 +40,6 @@ export declare abstract class SbbButtonBaseElement extends SbbActionBaseElement
|
|
|
39
40
|
*/
|
|
40
41
|
private _dispatchClickEventOnSpaceKeyup;
|
|
41
42
|
private _dispatchClickEvent;
|
|
42
|
-
constructor();
|
|
43
43
|
attributeChangedCallback(name: string, old: string | null, value: string | null): void;
|
|
44
44
|
}
|
|
45
45
|
//# sourceMappingURL=button-base-element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/button-base-element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,yBAAyB;AACzB,8BAKsB,oBAAqB,SAAQ,oBAAoB;IACrE,gDAAgD;IAC7B,IAAI,EAAE,aAAa,CAAY;IAElD;;;;;OAKG;IACH,IACW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IACD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;OAKG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IACD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,uDAAuD;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"button-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/button-base-element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,yBAAyB;AACzB,8BAKsB,oBAAqB,SAAQ,oBAAoB;IACrE,gDAAgD;IAC7B,IAAI,EAAE,aAAa,CAAY;IAElD;;;;;OAKG;IACH,IACW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IACD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;OAKG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IACD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,uDAAuD;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;;IAwBjC,OAAO,CAAC,kBAAkB,CAmBxB;IAEF;;;;OAIG;IACH,OAAO,CAAC,4BAA4B,CAKlC;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B,CAKrC;IAEF,OAAO,CAAC,mBAAmB,CAezB;IAEc,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;CAKR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/link-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,6BAA6B,CAAC;AAErC,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAErE,uBAAuB;AACvB,8BAGsB,kBAAmB,SAAQ,oBAAoB;IACnE,0CAA0C;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEjC,uCAAuC;IACpB,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAEpD,wEAAwE;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IAEhC,kEAAkE;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvD,wEAAwE;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,SAAS,CAAC,QAAQ,wBAAmC;;IASrD,gBAAgB;IACA,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAI/D,gBAAgB;IACA,IAAI,IAAI,IAAI;IAI5B,gBAAgB;IACA,KAAK,IAAI,IAAI;IAI7B,OAAO,CAAC,qBAAqB,CAE3B;IAEF,mHAAmH;cAChG,MAAM,IAAI,cAAc;
|
|
1
|
+
{"version":3,"file":"link-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/link-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,6BAA6B,CAAC;AAErC,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAErE,uBAAuB;AACvB,8BAGsB,kBAAmB,SAAQ,oBAAoB;IACnE,0CAA0C;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEjC,uCAAuC;IACpB,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAEpD,wEAAwE;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IAEhC,kEAAkE;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvD,wEAAwE;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,SAAS,CAAC,QAAQ,wBAAmC;;IASrD,gBAAgB;IACA,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAI/D,gBAAgB;IACA,IAAI,IAAI,IAAI;IAI5B,gBAAgB;IACA,KAAK,IAAI,IAAI;IAI7B,OAAO,CAAC,qBAAqB,CAE3B;IAEF,mHAAmH;cAChG,MAAM,IAAI,cAAc;CAoB5C"}
|
|
@@ -21,6 +21,16 @@ let SbbActionBaseElement = class extends LitElement {
|
|
|
21
21
|
const maybeDisabled = this;
|
|
22
22
|
return maybeDisabled.disabled || maybeDisabled.formDisabled;
|
|
23
23
|
}
|
|
24
|
+
connectedCallback() {
|
|
25
|
+
var _a;
|
|
26
|
+
super.connectedCallback();
|
|
27
|
+
if ((this.hasAttribute("data-link") || this.hasAttribute("data-button")) && ((_a = this.parentElement) == null ? void 0 : _a.closest("[data-link], [data-button], a, button"))) {
|
|
28
|
+
console.warn(
|
|
29
|
+
`Nested action element detected (${this.localName} inside ${this.parentElement.closest("[data-link], [data-button], a, button").localName}). Maybe use a static variant for the inner action element?`,
|
|
30
|
+
this
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
24
34
|
setupBaseEventHandlers() {
|
|
25
35
|
this.addEventListener(
|
|
26
36
|
"click",
|
|
@@ -213,7 +223,6 @@ let SbbLinkBaseElement = class extends SbbActionBaseElement {
|
|
|
213
223
|
target=${this.target || nothing}
|
|
214
224
|
rel=${this._evaluateRelAttribute()}
|
|
215
225
|
aria-label=${this.accessibilityLabel || nothing}
|
|
216
|
-
tabindex=${this.maybeDisabled ? "-1" : nothing}
|
|
217
226
|
aria-disabled=${this.maybeDisabled ? "true" : nothing}
|
|
218
227
|
>
|
|
219
228
|
${this.renderTemplate()}
|
|
@@ -290,4 +299,4 @@ export {
|
|
|
290
299
|
SbbLinkBaseElement,
|
|
291
300
|
SbbOpenCloseBaseElement
|
|
292
301
|
};
|
|
293
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbGVtZW50cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9hY3Rpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9idXR0b24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9saW5rLWJhc2UtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMvb3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBnZXREb2N1bWVudFdyaXRpbmdNb2RlLCBnZXRMb2NhbE5hbWUgfSBmcm9tICcuLi9kb20uanMnO1xuXG4vKipcbiAqIFdoZW5ldmVyIGFuIGVsZW1lbnQgY2FuIGJlIGRpc2FibGVkIGl0IGhhcyBkaXNhYmxlZCBwcm9wZXJ0eVxuICogb3IgZm9ybURpc2FibGVkIGlmIGl0J3MgYSBmb3JtIGVsZW1lbnQuXG4gKiBCZWNhdXNlIHdlIGNhbid0IHVzZSB0eXBlcyBoZXJlIGRpcmVjdGx5IHdlIGNyZWF0ZWQgdGhpcyBoZWxwZXIgdHlwZS5cbiAqL1xudHlwZSBNYXliZURpc2FibGVkID0ge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGZvcm1EaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBkaXI6IGdldERvY3VtZW50V3JpdGluZ01vZGUoKSxcbiAgJ2RhdGEtYWN0aW9uJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkFjdGlvbkJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHByb3RlY3RlZCBnZXQgbWF5YmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtYXliZURpc2FibGVkID0gdGhpcyBhcyBNYXliZURpc2FibGVkO1xuICAgIHJldHVybiBtYXliZURpc2FibGVkLmRpc2FibGVkIHx8IG1heWJlRGlzYWJsZWQuZm9ybURpc2FibGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwQmFzZUV2ZW50SGFuZGxlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYXliZURpc2FibGVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGNhcHR1cmUgaXMgbmVjZXNzYXJ5IGhlcmUsIGFzIHRoaXMgZXZlbnQgaGFuZGxlciBuZWVkcyB0byBiZSBleGVjdXRlZCBiZWZvcmUgYW55IG90aGVyXG4gICAgICAvLyBpbiBvcmRlciB0byBzdG9wIGltbWVkaWF0ZSBwcm9wYWdhdGlvbiBpbiB0aGUgZGlzYWJsZWQgY2FzZS5cbiAgICAgIHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICAvKiogT3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcmVuZGVyIHRoZSBjb21wb25lbnQgdGVtcGxhdGUuICovXG4gIHByb3RlY3RlZCByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbXBsZW1lbnRhdGlvbiBuZWVkZWQhJyk7XG4gIH1cblxuICAvKiogRGVmYXVsdCByZW5kZXIgbWV0aG9kIGZvciBidXR0b24tbGlrZSBjb21wb25lbnRzLiAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWFjdGlvbi1iYXNlICR7dGhpcy5sb2NhbE5hbWUgPz8gZ2V0TG9jYWxOYW1lKHRoaXMpfVwiPlxuICAgICAgICAke3RoaXMucmVuZGVyVGVtcGxhdGUoKX1cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzRXZlbnRQcmV2ZW50ZWQgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB7IFNiYkFjdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9hY3Rpb24tYmFzZS1lbGVtZW50LmpzJztcblxuLyoqIEVudW1lcmF0aW9uIGZvciB0eXBlIGF0dHJpYnV0ZSBpbiA8YnV0dG9uPiBIVE1MIHRhZy4gKi9cbmV4cG9ydCB0eXBlIFNiYkJ1dHRvblR5cGUgPSAnYnV0dG9uJyB8ICdyZXNldCcgfCAnc3VibWl0JztcblxuLyoqIEJ1dHRvbiBiYXNlIGNsYXNzLiAqL1xuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ2J1dHRvbicsXG4gIHRhYmluZGV4OiAnMCcsXG4gICdkYXRhLWJ1dHRvbic6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJCdXR0b25CYXNlRWxlbWVudCBleHRlbmRzIFNiYkFjdGlvbkJhc2VFbGVtZW50IHtcbiAgLyoqIFRoZSB0eXBlIGF0dHJpYnV0ZSB0byB1c2UgZm9yIHRoZSBidXR0b24uICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyB0eXBlOiBTYmJCdXR0b25UeXBlID0gJ2J1dHRvbic7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidXR0b24gZWxlbWVudC5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERldmVsb3BlciBub3RlOiBJbiB0aGlzIGNhc2UgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX1gKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGJ1dHRvbiBlbGVtZW50LlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAqIER1ZSB0byB0aGlzIGl0IGlzIGltcGxlbWVudGVkIGFzIGEgZ2V0dGVyL3NldHRlciBhbmQgdGhlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaygpIGhhbmRsZXMgdGhlIGRpZmYgY2hlY2suXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBgJHt2YWx1ZX1gKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpID8/ICcnO1xuICB9XG5cbiAgLyoqIFRoZSA8Zm9ybT4gZWxlbWVudCB0byBhc3NvY2lhdGUgdGhlIGJ1dHRvbiB3aXRoLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgZm9ybT86IHN0cmluZztcblxuICBwcml2YXRlIF9oYW5kbGVCdXR0b25DbGljayA9IGFzeW5jIChldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdidXR0b24nIHx8IChhd2FpdCBpc0V2ZW50UHJldmVudGVkKGV2ZW50KSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVc2UgcXVlcnlTZWxlY3RvciB3aXRoIGZvcm0gYW5kIGlkIHNlbGVjdG9yLCBhcyB0aGUgZm9ybSBwcm9wZXJ0eSBtdXN0XG4gICAgLy8gcmVmZXJlbmNlIGEgdmFsaWQgPGZvcm0+IGVsZW1lbnRcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtXG4gICAgICA/ICh0aGlzLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihgZm9ybSMke3RoaXMuZm9ybX1gKSBhcyBIVE1MRm9ybUVsZW1lbnQpXG4gICAgICA6IHRoaXMuY2xvc2VzdCgnZm9ybScpO1xuICAgIGlmICghZm9ybSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnc3VibWl0Jykge1xuICAgICAgLy8gYGZvcm0ucmVxdWVzdFN1Ym1pdChlbGVtZW50KTtgIHNlZW1zIG5vdCB0byB3b3JrIGZvciBDdXN0b21FbGVtZW50cywgc28gdGhlIGBlbGVtZW50YCBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVtb3ZlZDtcbiAgICAgIC8vIFRPRE86IENoZWNrIGlmIHNvbHZlZCBpbiBhbnkgd2F5LCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvd2ViY29tcG9uZW50cy9pc3N1ZXMvODE0I2lzc3VlY29tbWVudC0xMjE4NDUyMTM3XG4gICAgICBmb3JtLnJlcXVlc3RTdWJtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3Jlc2V0Jykge1xuICAgICAgZm9ybS5yZXNldCgpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUHJldmVudHMgc2Nyb2xsaW5nIGZyb20gcHJlc3NpbmcgU3BhY2UsIHdoZW4gdGhlIGV2ZW50IHRhcmdldCBpcyBhbiBhY3Rpb24gZWxlbWVudC5cbiAgICogQWxzbyBzZXRzIGRhdGEtYWN0aXZlIGF0dHJpYnV0ZS5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBvcmlnaW4gZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIF9wcmV2ZW50U2Nyb2xsT25TcGFjZUtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtYWN0aXZlJywgdHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3JlbW92ZUFjdGl2ZU1hcmtlciA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtYWN0aXZlJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYSAnY2xpY2snIFBvaW50ZXJFdmVudCBpZiB0aGUgb3JpZ2luYWwga2V5Ym9hcmQgZXZlbnQgaXMgYSAnU3BhY2UnIHByZXNzLlxuICAgKiBBcyB2ZXJpZmllZCB3aXRoIHRoZSBuYXRpdmUgYnV0dG9uLCB3aGVuICdTcGFjZScgaXMgcHJlc3NlZCwgYSAnY2xpY2snIGV2ZW50IGlzIGRpc3BhdGNoZWRcbiAgICogYWZ0ZXIgdGhlICdrZXl1cCcgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgb3JpZ2luIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDbGlja0V2ZW50T25TcGFjZUtleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICB0aGlzLl9yZW1vdmVBY3RpdmVNYXJrZXIoZXZlbnQpO1xuICAgICAgdGhpcy5fZGlzcGF0Y2hDbGlja0V2ZW50KGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDbGlja0V2ZW50ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgeyBhbHRLZXksIGN0cmxLZXksIG1ldGFLZXksIHNoaWZ0S2V5IH0gPSBldmVudDtcbiAgICAoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgUG9pbnRlckV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgIHBvaW50ZXJJZDogLTEsXG4gICAgICAgIHBvaW50ZXJUeXBlOiAnJyxcbiAgICAgICAgYWx0S2V5LFxuICAgICAgICBjdHJsS2V5LFxuICAgICAgICBtZXRhS2V5LFxuICAgICAgICBzaGlmdEtleSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgIGNvbnN0IHBhc3NpdmVPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlIH07XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlQnV0dG9uQ2xpY2spO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9kaXNwYXRjaENsaWNrRXZlbnRPblNwYWNlS2V5dXAsIHBhc3NpdmVPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3JlbW92ZUFjdGl2ZU1hcmtlciwgcGFzc2l2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5cHJlc3MnLFxuICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwYXNzaXZlT3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIVsnbmFtZScsICd2YWx1ZSddLmluY2x1ZGVzKG5hbWUpIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBub3RoaW5nLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxOYW1lIH0gZnJvbSAnLi4vZG9tLmpzJztcbmltcG9ydCB7IGkxOG5UYXJnZXRPcGVuc0luTmV3V2luZG93IH0gZnJvbSAnLi4vaTE4bi5qcyc7XG5cbmltcG9ydCB7IFNiYkFjdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9hY3Rpb24tYmFzZS1lbGVtZW50LmpzJztcblxuaW1wb3J0ICcuLi8uLi9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuXG4vKiogRW51bWVyYXRpb24gZm9yICd0YXJnZXQnIGF0dHJpYnV0ZSBpbiA8YT4gSFRNTCB0YWcuICovXG5leHBvcnQgdHlwZSBMaW5rVGFyZ2V0VHlwZSA9ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcblxuLyoqIExpbmsgYmFzZSBjbGFzcy4gKi9cbkBob3N0QXR0cmlidXRlcyh7XG4gICdkYXRhLWxpbmsnOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiTGlua0Jhc2VFbGVtZW50IGV4dGVuZHMgU2JiQWN0aW9uQmFzZUVsZW1lbnQge1xuICAvKiogVGhlIGhyZWYgdmFsdWUgeW91IHdhbnQgdG8gbGluayB0by4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGhyZWY/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmtlZCBVUkwuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyB0YXJnZXQ/OiBMaW5rVGFyZ2V0VHlwZSB8IHN0cmluZztcblxuICAvKiogVGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgbGlua2VkIFVSTCBhcyBzcGFjZS1zZXBhcmF0ZWQgbGluayB0eXBlcy4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIHJlbD86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgYnJvd3NlciB3aWxsIHNob3cgdGhlIGRvd25sb2FkIGRpYWxvZyBvbiBjbGljay4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZG93bmxvYWQ/OiBib29sZWFuO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGlubmVyIGFuY2hvciBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLnNldHVwQmFzZUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PignYScpPy5mb2N1cyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG92ZXJyaWRlIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PignYScpPy5ibHVyKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBjbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8SFRNTEFuY2hvckVsZW1lbnQ+KCdhJyk/LmNsaWNrKCk7XG4gIH1cblxuICBwcml2YXRlIF9ldmFsdWF0ZVJlbEF0dHJpYnV0ZSA9ICgpOiBzdHJpbmcgfCB0eXBlb2Ygbm90aGluZyA9PiB7XG4gICAgcmV0dXJuIHRoaXMucmVsID8gdGhpcy5yZWwgOiB0aGlzLnRhcmdldCA9PT0gJ19ibGFuaycgPyAnZXh0ZXJuYWwgbm9vcGVuZXIgbm9mb2xsb3cnIDogbm90aGluZztcbiAgfTtcblxuICAvKiogRGVmYXVsdCByZW5kZXIgbWV0aG9kIGZvciBsaW5rLWxpa2UgY29tcG9uZW50cy4gQ2FuIGJlIG92ZXJyaWRkZW4gaWYgdGhlIExpbmtSZW5kZXJWYXJpYWJsZXMgYXJlIG5vdCBuZWVkZWQuICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJzYmItYWN0aW9uLWJhc2UgJHt0aGlzLmxvY2FsTmFtZSA/PyBnZXRMb2NhbE5hbWUodGhpcyl9XCJcbiAgICAgICAgaHJlZj0ke3RoaXMuaHJlZiB8fCBub3RoaW5nfVxuICAgICAgICA/ZG93bmxvYWQ9JHt0aGlzLmRvd25sb2FkfVxuICAgICAgICB0YXJnZXQ9JHt0aGlzLnRhcmdldCB8fCBub3RoaW5nfVxuICAgICAgICByZWw9JHt0aGlzLl9ldmFsdWF0ZVJlbEF0dHJpYnV0ZSgpfVxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgfHwgbm90aGluZ31cbiAgICAgICAgdGFiaW5kZXg9JHt0aGlzLm1heWJlRGlzYWJsZWQgPyAnLTEnIDogbm90aGluZ31cbiAgICAgICAgYXJpYS1kaXNhYmxlZD0ke3RoaXMubWF5YmVEaXNhYmxlZCA/ICd0cnVlJyA6IG5vdGhpbmd9XG4gICAgICA+XG4gICAgICAgICR7dGhpcy5yZW5kZXJUZW1wbGF0ZSgpfVxuICAgICAgICAkeyEhdGhpcy5ocmVmICYmIHRoaXMudGFyZ2V0ID09PSAnX2JsYW5rJ1xuICAgICAgICAgID8gaHRtbGA8c2JiLXNjcmVlbi1yZWFkZXItb25seVxuICAgICAgICAgICAgICA+LiAke2kxOG5UYXJnZXRPcGVuc0luTmV3V2luZG93W3RoaXMubGFuZ3VhZ2UuY3VycmVudF19PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5XG4gICAgICAgICAgICA+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvYT5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcGVuZWRDbG9zZWRTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMuanMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG92ZXJsYXkgY29tcG9uZW50cy5cbiAqXG4gKiBAZXZlbnQgd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQgZGlkT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgb3BlbmVkLlxuICogQGV2ZW50IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCBkaWRDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgY2xvc2VkLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgd2lsbE9wZW46ICd3aWxsT3BlbicsXG4gICAgZGlkT3BlbjogJ2RpZE9wZW4nLFxuICAgIHdpbGxDbG9zZTogJ3dpbGxDbG9zZScsXG4gICAgZGlkQ2xvc2U6ICdkaWRDbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LiAqL1xuICBwcm90ZWN0ZWQgc2V0IHN0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJywgc3RhdGUpO1xuICB9XG4gIHByb3RlY3RlZCBnZXQgc3RhdGUoKTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpIGFzIFNiYk9wZW5lZENsb3NlZFN0YXRlO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgb3Blbi4gKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnO1xuICB9XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uICovXG4gIHByb3RlY3RlZCB3aWxsT3BlbjogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LmV2ZW50cy53aWxsT3BlbixcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBvcGVuZWQuICovXG4gIHByb3RlY3RlZCBkaWRPcGVuOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LmV2ZW50cy5kaWRPcGVuKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gKi9cbiAgcHJvdGVjdGVkIHdpbGxDbG9zZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LmV2ZW50cy53aWxsQ2xvc2UsXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgY2xvc2VkLiAqL1xuICBwcm90ZWN0ZWQgZGlkQ2xvc2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMuZGlkQ2xvc2UsXG4gICk7XG5cbiAgLyoqIE9wZW5zIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBvcGVuKCk6IHZvaWQ7XG4gIC8qKiBDbG9zZXMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb3NlKCk6IHZvaWQ7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zdGF0ZSB8fD0gJ2Nsb3NlZCc7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICB3aWxsT3BlbjogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gICAgd2lsbENsb3NlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICBkaWRPcGVuOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICBkaWRDbG9zZTogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlY29yYXRlQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1Cc0IsSUFBQSx1QkFBZixjQUE0QyxXQUFXO0FBQUEsRUFDNUQsSUFBYyxnQkFBcUM7QUFDakQsVUFBTSxnQkFBZ0I7QUFDZixXQUFBLGNBQWMsWUFBWSxjQUFjO0FBQUEsRUFDakQ7QUFBQSxFQUVVLHlCQUErQjtBQUNsQyxTQUFBO0FBQUEsTUFDSDtBQUFBLE1BQ0EsQ0FBQyxVQUFVO0FBQ1QsWUFBSSxLQUFLLGVBQWU7QUFDdEIsZ0JBQU0sZUFBZTtBQUNyQixn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
|
|
302
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbGVtZW50cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9hY3Rpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9idXR0b24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9saW5rLWJhc2UtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMvb3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBnZXREb2N1bWVudFdyaXRpbmdNb2RlLCBnZXRMb2NhbE5hbWUgfSBmcm9tICcuLi9kb20uanMnO1xuXG4vKipcbiAqIFdoZW5ldmVyIGFuIGVsZW1lbnQgY2FuIGJlIGRpc2FibGVkIGl0IGhhcyBkaXNhYmxlZCBwcm9wZXJ0eVxuICogb3IgZm9ybURpc2FibGVkIGlmIGl0J3MgYSBmb3JtIGVsZW1lbnQuXG4gKiBCZWNhdXNlIHdlIGNhbid0IHVzZSB0eXBlcyBoZXJlIGRpcmVjdGx5IHdlIGNyZWF0ZWQgdGhpcyBoZWxwZXIgdHlwZS5cbiAqL1xudHlwZSBNYXliZURpc2FibGVkID0ge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGZvcm1EaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBkaXI6IGdldERvY3VtZW50V3JpdGluZ01vZGUoKSxcbiAgJ2RhdGEtYWN0aW9uJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkFjdGlvbkJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHByb3RlY3RlZCBnZXQgbWF5YmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtYXliZURpc2FibGVkID0gdGhpcyBhcyBNYXliZURpc2FibGVkO1xuICAgIHJldHVybiBtYXliZURpc2FibGVkLmRpc2FibGVkIHx8IG1heWJlRGlzYWJsZWQuZm9ybURpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICBpZiAoXG4gICAgICBpbXBvcnQubWV0YS5lbnYuREVWICYmXG4gICAgICAodGhpcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGluaycpIHx8IHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLWJ1dHRvbicpKSAmJlxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCdbZGF0YS1saW5rXSwgW2RhdGEtYnV0dG9uXSwgYSwgYnV0dG9uJylcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE5lc3RlZCBhY3Rpb24gZWxlbWVudCBkZXRlY3RlZCAoJHt0aGlzLmxvY2FsTmFtZX0gaW5zaWRlICR7dGhpcy5wYXJlbnRFbGVtZW50IS5jbG9zZXN0KCdbZGF0YS1saW5rXSwgW2RhdGEtYnV0dG9uXSwgYSwgYnV0dG9uJykhLmxvY2FsTmFtZX0pLiBNYXliZSB1c2UgYSBzdGF0aWMgdmFyaWFudCBmb3IgdGhlIGlubmVyIGFjdGlvbiBlbGVtZW50P2AsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjbGljaycsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF5YmVEaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBjYXB0dXJlIGlzIG5lY2Vzc2FyeSBoZXJlLCBhcyB0aGlzIGV2ZW50IGhhbmRsZXIgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIGFueSBvdGhlclxuICAgICAgLy8gaW4gb3JkZXIgdG8gc3RvcCBpbW1lZGlhdGUgcHJvcGFnYXRpb24gaW4gdGhlIGRpc2FibGVkIGNhc2UuXG4gICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHJlbmRlciB0aGUgY29tcG9uZW50IHRlbXBsYXRlLiAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHRocm93IG5ldyBFcnJvcignSW1wbGVtZW50YXRpb24gbmVlZGVkIScpO1xuICB9XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgYnV0dG9uLWxpa2UgY29tcG9uZW50cy4gKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1hY3Rpb24tYmFzZSAke3RoaXMubG9jYWxOYW1lID8/IGdldExvY2FsTmFtZSh0aGlzKX1cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKCl9XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0V2ZW50UHJldmVudGVkIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbi8qKiBFbnVtZXJhdGlvbiBmb3IgdHlwZSBhdHRyaWJ1dGUgaW4gPGJ1dHRvbj4gSFRNTCB0YWcuICovXG5leHBvcnQgdHlwZSBTYmJCdXR0b25UeXBlID0gJ2J1dHRvbicgfCAncmVzZXQnIHwgJ3N1Ym1pdCc7XG5cbi8qKiBCdXR0b24gYmFzZSBjbGFzcy4gKi9cbkBob3N0QXR0cmlidXRlcyh7XG4gIHJvbGU6ICdidXR0b24nLFxuICB0YWJpbmRleDogJzAnLFxuICAnZGF0YS1idXR0b24nOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiQnV0dG9uQmFzZUVsZW1lbnQgZXh0ZW5kcyBTYmJBY3Rpb25CYXNlRWxlbWVudCB7XG4gIC8qKiBUaGUgdHlwZSBhdHRyaWJ1dGUgdG8gdXNlIGZvciB0aGUgYnV0dG9uLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdHlwZTogU2JiQnV0dG9uVHlwZSA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnV0dG9uIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke25hbWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCduYW1lJykgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBidXR0b24gZWxlbWVudC5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERldmVsb3BlciBub3RlOiBJbiB0aGlzIGNhc2UgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKiBUaGUgPGZvcm0+IGVsZW1lbnQgdG8gYXNzb2NpYXRlIHRoZSBidXR0b24gd2l0aC4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGZvcm0/OiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgIGNvbnN0IHBhc3NpdmVPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlIH07XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlQnV0dG9uQ2xpY2spO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9kaXNwYXRjaENsaWNrRXZlbnRPblNwYWNlS2V5dXAsIHBhc3NpdmVPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3JlbW92ZUFjdGl2ZU1hcmtlciwgcGFzc2l2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5cHJlc3MnLFxuICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwYXNzaXZlT3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQnV0dG9uQ2xpY2sgPSBhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnYnV0dG9uJyB8fCAoYXdhaXQgaXNFdmVudFByZXZlbnRlZChldmVudCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVXNlIHF1ZXJ5U2VsZWN0b3Igd2l0aCBmb3JtIGFuZCBpZCBzZWxlY3RvciwgYXMgdGhlIGZvcm0gcHJvcGVydHkgbXVzdFxuICAgIC8vIHJlZmVyZW5jZSBhIHZhbGlkIDxmb3JtPiBlbGVtZW50XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVxuICAgICAgPyAodGhpcy5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcm0jJHt0aGlzLmZvcm19YCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgOiB0aGlzLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICBpZiAoIWZvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3N1Ym1pdCcpIHtcbiAgICAgIC8vIGBmb3JtLnJlcXVlc3RTdWJtaXQoZWxlbWVudCk7YCBzZWVtcyBub3QgdG8gd29yayBmb3IgQ3VzdG9tRWxlbWVudHMsIHNvIHRoZSBgZWxlbWVudGAgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQ7XG4gICAgICAvLyBUT0RPOiBDaGVjayBpZiBzb2x2ZWQgaW4gYW55IHdheSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3dlYmNvbXBvbmVudHMvaXNzdWVzLzgxNCNpc3N1ZWNvbW1lbnQtMTIxODQ1MjEzN1xuICAgICAgZm9ybS5yZXF1ZXN0U3VibWl0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdyZXNldCcpIHtcbiAgICAgIGZvcm0ucmVzZXQoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIHNjcm9sbGluZyBmcm9tIHByZXNzaW5nIFNwYWNlLCB3aGVuIHRoZSBldmVudCB0YXJnZXQgaXMgYW4gYWN0aW9uIGVsZW1lbnQuXG4gICAqIEFsc28gc2V0cyBkYXRhLWFjdGl2ZSBhdHRyaWJ1dGUuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgb3JpZ2luIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScsIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9yZW1vdmVBY3RpdmVNYXJrZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGEgJ2NsaWNrJyBQb2ludGVyRXZlbnQgaWYgdGhlIG9yaWdpbmFsIGtleWJvYXJkIGV2ZW50IGlzIGEgJ1NwYWNlJyBwcmVzcy5cbiAgICogQXMgdmVyaWZpZWQgd2l0aCB0aGUgbmF0aXZlIGJ1dHRvbiwgd2hlbiAnU3BhY2UnIGlzIHByZXNzZWQsIGEgJ2NsaWNrJyBldmVudCBpcyBkaXNwYXRjaGVkXG4gICAqIGFmdGVyIHRoZSAna2V5dXAnIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG9yaWdpbiBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudE9uU3BhY2VLZXl1cCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlTWFya2VyKGV2ZW50KTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHsgYWx0S2V5LCBjdHJsS2V5LCBtZXRhS2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFBvaW50ZXJFdmVudCgnY2xpY2snLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICBwb2ludGVySWQ6IC0xLFxuICAgICAgICBwb2ludGVyVHlwZTogJycsXG4gICAgICAgIGFsdEtleSxcbiAgICAgICAgY3RybEtleSxcbiAgICAgICAgbWV0YUtleSxcbiAgICAgICAgc2hpZnRLZXksXG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFbJ25hbWUnLCAndmFsdWUnXS5pbmNsdWRlcyhuYW1lKSB8fCBvbGQgIT09IHZhbHVlKSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGdldExvY2FsTmFtZSB9IGZyb20gJy4uL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuVGFyZ2V0T3BlbnNJbk5ld1dpbmRvdyB9IGZyb20gJy4uL2kxOG4uanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqIEVudW1lcmF0aW9uIGZvciAndGFyZ2V0JyBhdHRyaWJ1dGUgaW4gPGE+IEhUTUwgdGFnLiAqL1xuZXhwb3J0IHR5cGUgTGlua1RhcmdldFR5cGUgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG5cbi8qKiBMaW5rIGJhc2UgY2xhc3MuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1saW5rJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkxpbmtCYXNlRWxlbWVudCBleHRlbmRzIFNiYkFjdGlvbkJhc2VFbGVtZW50IHtcbiAgLyoqIFRoZSBocmVmIHZhbHVlIHlvdSB3YW50IHRvIGxpbmsgdG8uICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gIC8qKiBXaGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdGFyZ2V0PzogTGlua1RhcmdldFR5cGUgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIGxpbmtlZCBVUkwgYXMgc3BhY2Utc2VwYXJhdGVkIGxpbmsgdHlwZXMuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyByZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJyb3dzZXIgd2lsbCBzaG93IHRoZSBkb3dubG9hZCBkaWFsb2cgb24gY2xpY2suICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGRvd25sb2FkPzogYm9vbGVhbjtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBpbm5lciBhbmNob3IgZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uYmx1cigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PignYScpPy5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbHVhdGVSZWxBdHRyaWJ1dGUgPSAoKTogc3RyaW5nIHwgdHlwZW9mIG5vdGhpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlbCA/IHRoaXMucmVsIDogdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnID8gJ2V4dGVybmFsIG5vb3BlbmVyIG5vZm9sbG93JyA6IG5vdGhpbmc7XG4gIH07XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgbGluay1saWtlIGNvbXBvbmVudHMuIENhbiBiZSBvdmVycmlkZGVuIGlmIHRoZSBMaW5rUmVuZGVyVmFyaWFibGVzIGFyZSBub3QgbmVlZGVkLiAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwic2JiLWFjdGlvbi1iYXNlICR7dGhpcy5sb2NhbE5hbWUgPz8gZ2V0TG9jYWxOYW1lKHRoaXMpfVwiXG4gICAgICAgIGhyZWY9JHt0aGlzLmhyZWYgfHwgbm90aGluZ31cbiAgICAgICAgP2Rvd25sb2FkPSR7dGhpcy5kb3dubG9hZH1cbiAgICAgICAgdGFyZ2V0PSR7dGhpcy50YXJnZXQgfHwgbm90aGluZ31cbiAgICAgICAgcmVsPSR7dGhpcy5fZXZhbHVhdGVSZWxBdHRyaWJ1dGUoKX1cbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9JHt0aGlzLm1heWJlRGlzYWJsZWQgPyAndHJ1ZScgOiBub3RoaW5nfVxuICAgICAgPlxuICAgICAgICAke3RoaXMucmVuZGVyVGVtcGxhdGUoKX1cbiAgICAgICAgJHshIXRoaXMuaHJlZiAmJiB0aGlzLnRhcmdldCA9PT0gJ19ibGFuaydcbiAgICAgICAgICA/IGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgICAgPi4gJHtpMThuVGFyZ2V0T3BlbnNJbk5ld1dpbmRvd1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seVxuICAgICAgICAgICAgPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2E+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3BlbmVkQ2xvc2VkU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzLmpzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBvdmVybGF5IGNvbXBvbmVudHMuXG4gKlxuICogQGV2ZW50IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIG9wZW5lZC5cbiAqIEBldmVudCB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQgZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHdpbGxPcGVuOiAnd2lsbE9wZW4nLFxuICAgIGRpZE9wZW46ICdkaWRPcGVuJyxcbiAgICB3aWxsQ2xvc2U6ICd3aWxsQ2xvc2UnLFxuICAgIGRpZENsb3NlOiAnZGlkQ2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJvdGVjdGVkIHNldCBzdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsIHN0YXRlKTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IHN0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIG9wZW4uICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSAnb3BlbmVkJztcbiAgfVxuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICBwcm90ZWN0ZWQgd2lsbE9wZW46IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMud2lsbE9wZW4sXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgb3BlbmVkLiAqL1xuICBwcm90ZWN0ZWQgZGlkT3BlbjogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMuZGlkT3Blbik7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gIHByb3RlY3RlZCB3aWxsQ2xvc2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMud2lsbENsb3NlLFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgcHJvdGVjdGVkIGRpZENsb3NlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQuZXZlbnRzLmRpZENsb3NlLFxuICApO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgb3BlbigpOiB2b2lkO1xuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc3RhdGUgfHw9ICdjbG9zZWQnO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgd2lsbE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIHdpbGxDbG9zZTogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gICAgZGlkT3BlbjogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gICAgZGlkQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQnNCLElBQUEsdUJBQWYsY0FBNEMsV0FBVztBQUFBLEVBQzVELElBQWMsZ0JBQXFDO0FBQ2pELFVBQU0sZ0JBQWdCO0FBQ2YsV0FBQSxjQUFjLFlBQVksY0FBYztBQUFBLEVBQ2pEO0FBQUEsRUFFZ0Isb0JBQTBCOztBQUN4QyxVQUFNLGtCQUFrQjtBQUV4QixTQUVHLEtBQUssYUFBYSxXQUFXLEtBQUssS0FBSyxhQUFhLGFBQWEsUUFDbEUsVUFBSyxrQkFBTCxtQkFBb0IsUUFBUSwyQ0FDNUI7QUFDUSxjQUFBO0FBQUEsUUFDTixtQ0FBbUMsS0FBSyxTQUFTLFdBQVcsS0FBSyxjQUFlLFFBQVEsdUNBQXVDLEVBQUcsU0FBUztBQUFBLFFBQzNJO0FBQUEsTUFBQTtBQUFBLElBRUo7QUFBQSxFQUNGO0FBQUEsRUFFVSx5QkFBK0I7QUFDbEMsU0FBQTtBQUFBLE1BQ0g7QUFBQSxNQUNBLENBQUMsVUFBVTtBQUNULFlBQUksS0FBSyxlQUFlO0FBQ3RCLGdCQUFNLGVBQWU7QUFDckIsZ0JBQU0seUJBQXlCO0FBQUEsUUFDakM7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBLE1BR0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFFcEI7QUFBQTtBQUFBLEVBR1UsaUJBQWlDO0FBQ25DLFVBQUEsSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBQUE7QUFBQSxFQUdtQixT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
|
|
@@ -22,10 +22,10 @@ export declare class SbbSlotStateController implements ReactiveController {
|
|
|
22
22
|
private _host;
|
|
23
23
|
private _onChangeCallback;
|
|
24
24
|
readonly slots: Set<string>;
|
|
25
|
-
private _slotchangeHandler;
|
|
26
25
|
constructor(_host: ReactiveControllerHost & HTMLElement, _onChangeCallback?: (() => void) | null);
|
|
27
26
|
hostConnected(): void;
|
|
28
27
|
hostDisconnected(): void;
|
|
28
|
+
private _slotchangeHandler;
|
|
29
29
|
private _syncSlots;
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=slot-state-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-state-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/slot-state-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"slot-state-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/slot-state-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAI7D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,iBAAiB;IAJ3B,SAAgB,KAAK,cAAqB;gBAGhC,KAAK,EAAE,sBAAsB,GAAG,WAAW,EAC3C,iBAAiB,GAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAW;IAKhD,aAAa,IAAI,IAAI;IAMrB,gBAAgB,IAAI,IAAI;IAM/B,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,UAAU;CAuBnB"}
|
|
@@ -220,4 +220,4 @@ export {
|
|
|
220
220
|
SbbLanguageController,
|
|
221
221
|
SbbSlotStateController
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9zbG90LXN0YXRlLWNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY2xhc3MgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHB1YmxpYyBnZXQgc2lnbmFsKCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWw7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IElHTk9SRURfRUxFTUVOVFMgPSBbJ3NjcmlwdCcsICdoZWFkJywgJ3RlbXBsYXRlJywgJ3N0eWxlJ107XG5jb25zdCBpbmVydEVsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbmNvbnN0IGluZXJ0T3ZlcmxheXMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiSW5lcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgICBwcml2YXRlIF9pbmVydEVsZW1lbnRzID0gaW5lcnRFbGVtZW50cyxcbiAgICBwcml2YXRlIF9pbmVydE92ZXJsYXlzID0gaW5lcnRPdmVybGF5cyxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faG9zdC5pc09wZW4pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIGluZXJ0IHN0YXRlIHRvIGV2ZXJ5IG90aGVyIGVsZW1lbnQgb24gdGhlIHBhZ2UgZXhjZXB0IHRoZSBvdmVybGF5LiAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGluZXJ0IHN0YXRlIGZyb20gcHJldmlvdXMgb3BlbmVkIG92ZXJsYXlcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmFkZCh0aGlzLl9ob3N0KTtcbiAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGluZXJ0IHN0YXRlLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudE92ZXJsYXkoKSAhPT0gdGhpcy5faG9zdCkge1xuICAgICAgLy8gSWYgZS5nLiBhIGNvbXBvbmVudCBnZXRzIGRpc2Nvbm5lY3RlZCwgaXQgY291bGQgYmUgdGhhdCBpdCBpcyBub3QgdGhlIHRvcCBtb3N0LlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW4gZGlyZWN0bHkgcmVtb3ZlIGl0LCBhcyB0aGVyZSBpcyBjdXJyZW50bHkgbm8gaW5lcnQgc3RhdGUgYXBwbGllZC5cbiAgICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcbiAgICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1RyeWluZyB0byByZW1vdmUgaW5lcnQgc3RhdGUgb2YgYW4gb3ZlcmxheSB3aGljaCBuZXZlciBoYWQgYW4gYXBwbGllZCBpbmVydCBzdGF0ZS4nLFxuICAgICAgICAgIHRoaXMuX2hvc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFzIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5LCBzZXQgaXRzIGluZXJ0IHN0YXRlIGFnYWluLlxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRPdmVybGF5KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9pbmVydE92ZXJsYXlzXS5wb3AoKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgICBlbGVtZW50LmluZXJ0ID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmFkZChlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZWxlbWVudC5pbmVydCkge1xuICAgICAgICAgICAgZWxlbWVudC5pbmVydCA9IHRydWU7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBwaWVyY2UgdGhyb3VnaCBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gICAgICBlbGVtZW50ID0gZWxlbWVudD8ucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KT8uaG9zdCA/PyBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlciB9IGZyb20gJy4uL29ic2VydmVycy5qcyc7XG5cbi8qKlxuICogVGhlIExhbmd1YWdlQ29udHJvbGxlciBpcyBhIHJlYWN0aXZlIGNvbnRyb2xsZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJsYW5nXCIgYXR0cmlidXRlXG4gKiBvZiB0aGUgPGh0bWw+IHRhZy5cbiAqIE9uIGNoYW5nZSBvZiB0aGUgXCJsYW5nXCIgYXR0cmlidXRlLCBpdCB3aWxsIHJlcXVlc3QgYW4gdXBkYXRlIG9mIGNvbm5lY3RlZFxuICogY29tcG9uZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZ1xuICovXG5leHBvcnQgY2xhc3MgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2RlZmF1bHRMYW5ndWFnZSA9ICdlbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXBwb3J0ZWRMb2NhbGVzID0gWydlbicsICdkZScsICdmcicsICdpdCddO1xuXG4gIC8qKiBBIHNldCBvZiBjb25uZWN0ZWQgY29tcG9uZW50cyB0aGF0IHNob3VsZCBiZSBub3RpZmllZCBvbiBsYW5ndWFnZSBjaGFuZ2UuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9saXN0ZW5lcnMgPSBuZXcgU2V0PFNiYkxhbmd1YWdlQ29udHJvbGxlcj4oKTtcblxuICAvKiogTXV0YXRpb25PYnNlcnZlciB0aGF0IG9ic2VydmVzIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGUgb2YgdGhlIDxodG1sPiBlbGVtZW50LiAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmZvckVhY2goKGwpID0+IGwuX2NhbGxIYW5kbGVycygpKTtcbiAgICB9XG4gIH0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXJDb25maWcgPSB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPVxuICAgICAgKHJlYWRDb25maWcoKS5sYW5ndWFnZSA/P1xuICAgICAgICAoaXNTZXJ2ZXJcbiAgICAgICAgICA/IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpKSB8fFxuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAvLyBTdXBwb3J0IGUuZy4gY2FzZXMgbGlrZSBgZGUtY2hgLlxuICAgIGNvbnN0IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICByZXR1cm4gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkKVxuICAgICAgPyBsYW5nQXR0cmlidXRlTm9ybWFsaXplZFxuICAgICAgOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzTGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxhbmd1YWdlIGNoYW5nZSBoYW5kbGVyLiAqL1xuICBwdWJsaWMgd2l0aEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIC8vIFdlIHVzZSB1bnNoaWZ0IGhlcmUsIHRvIHByZXBlbmQgYWRkaXRpb25hbCBoYW5kbGVycy5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCByZXF1ZXN0VXBkYXRlIGlzIGNhbGxlZCBhZnRlciB0aGUgb3RoZXIgaGFuZGxlcnMuXG4gICAgdGhpcy5faGFuZGxlcnMudW5zaGlmdChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlci5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmFkZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdGhpcy5jdXJyZW50KSB7XG4gICAgICB0aGlzLl9jYWxsSGFuZGxlcnModGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wcmV2aW91c0xhbmd1YWdlID0gdGhpcy5jdXJyZW50O1xuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmRlbGV0ZSh0aGlzKTtcbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbGxIYW5kbGVycyhyZXF1ZXN0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX2hhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoKSk7XG4gICAgaWYgKHJlcXVlc3RVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2hvc3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG4vKipcbiAqIFRoaXMgY29udHJvbGxlciBjaGVja3MgZm9yIHNsb3R0ZWQgY2hpbGRyZW4uIEZyb20gdGhlc2UgaXQgZ2VuZXJhdGVzXG4gKiBhIGxpc3Qgb2YgdXNlZCBzbG90IG5hbWVzIChgdW5uYW1lZGAgZm9yIGNoaWxkcmVuIHdpdGhvdXQgYSBzbG90IGF0dHJpYnV0ZSlcbiAqIGFuZCBhZGRzIHRoaXMgdG8gdGhlIGBkYXRhLXNsb3QtbmFtZXNgIGF0dHJpYnV0ZSwgYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdC5cbiAqXG4gKiBUaGlzIGFsbG93cyBDU1MgYXR0cmlidXRlIHNlbGVjdG9yIHRvIGRpc3BsYXkvaGlkZS9jb25maWd1cmUgYSBzZWN0aW9uXG4gKiBvZiB0aGUgY29tcG9uZW50IGFzIHJlcXVpcmVkIChzZWUgW2F0dHJ+PXZhbHVlXSBzZWxlY3RvciBzcGVjaWZpY2FsbHkpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAuZXhhbXBsZSB7XG4gKiAgIGRpc3BsYXk6IG5vbmU7XG4gKlxuICogICA6aG9zdChbZGF0YS1zbG90LW5hbWVzfj1cImljb25cIl0pICYge1xuICogICAgIGRpc3BsYXk6IGlubGluZTtcbiAqICAgfVxuICogfVxuICpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BdHRyaWJ1dGVfc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTbG90U3RhdGVDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHNsb3RzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gV2UgYXZvaWQgdXNpbmcgQWJvcnRDb250cm9sbGVyIGhlcmUsIGFzIGl0IHdvdWxkIG1lYW4gY3JlYXRpbmdcbiAgLy8gYSBuZXcgaW5zdGFuY2UgZm9yIGV2ZXJ5IE5hbWVkU2xvdFN0YXRlQ29udHJvbGxlciBpbnN0YW5jZS5cbiAgcHJpdmF0ZSBfc2xvdGNoYW5nZUhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5fc3luY1Nsb3RzKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpO1xuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgcmVhbGx5IG5lZWRlZCB3aXRoIFNTUi5cbiAgICB0aGlzLl9zeW5jU2xvdHMoLi4udGhpcy5faG9zdC5xdWVyeVNlbGVjdG9yQWxsISgnc2xvdCcpKTtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jU2xvdHMoLi4uc2xvdHM6IEhUTUxTbG90RWxlbWVudFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzbG90IG9mIHNsb3RzKSB7XG4gICAgICBjb25zdCBzbG90TmFtZSA9IHNsb3QubmFtZSB8fCAndW5uYW1lZCc7XG4gICAgICAvLyBXZSB3YW50IHRvIGNoZWNrLCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2xvdHRlZCBvciBhIHRleHQgbm9kZSB3aXRoIGFjdHVhbCBjb250ZW50LlxuICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG4pID0+ICd0YWdOYW1lJyBpbiBuIHx8IG4udGV4dENvbnRlbnQ/LnRyaW0oKSkpIHtcbiAgICAgICAgdGhpcy5zbG90cy5hZGQoc2xvdE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zbG90cy5kZWxldGUoc2xvdE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faG9zdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpO1xuICAgIGNvbnN0IGpvaW5lZFNsb3ROYW1lcyA9IFsuLi50aGlzLnNsb3RzXS5zb3J0KCkuam9pbignICcpO1xuICAgIGlmICgham9pbmVkU2xvdE5hbWVzKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9ob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJykgIT09IGpvaW5lZFNsb3ROYW1lcykge1xuICAgICAgdGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycsIGpvaW5lZFNsb3ROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKGpvaW5lZFNsb3ROYW1lcyAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s/LigpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSw0QkFBMEQ7QUFBQSxFQU85RCxZQUFvQixPQUErQjtBQUEvQixTQUFB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
|
|
223
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9zbG90LXN0YXRlLWNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY2xhc3MgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHB1YmxpYyBnZXQgc2lnbmFsKCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWw7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IElHTk9SRURfRUxFTUVOVFMgPSBbJ3NjcmlwdCcsICdoZWFkJywgJ3RlbXBsYXRlJywgJ3N0eWxlJ107XG5jb25zdCBpbmVydEVsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbmNvbnN0IGluZXJ0T3ZlcmxheXMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiSW5lcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgICBwcml2YXRlIF9pbmVydEVsZW1lbnRzID0gaW5lcnRFbGVtZW50cyxcbiAgICBwcml2YXRlIF9pbmVydE92ZXJsYXlzID0gaW5lcnRPdmVybGF5cyxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faG9zdC5pc09wZW4pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIGluZXJ0IHN0YXRlIHRvIGV2ZXJ5IG90aGVyIGVsZW1lbnQgb24gdGhlIHBhZ2UgZXhjZXB0IHRoZSBvdmVybGF5LiAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGluZXJ0IHN0YXRlIGZyb20gcHJldmlvdXMgb3BlbmVkIG92ZXJsYXlcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmFkZCh0aGlzLl9ob3N0KTtcbiAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGluZXJ0IHN0YXRlLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudE92ZXJsYXkoKSAhPT0gdGhpcy5faG9zdCkge1xuICAgICAgLy8gSWYgZS5nLiBhIGNvbXBvbmVudCBnZXRzIGRpc2Nvbm5lY3RlZCwgaXQgY291bGQgYmUgdGhhdCBpdCBpcyBub3QgdGhlIHRvcCBtb3N0LlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW4gZGlyZWN0bHkgcmVtb3ZlIGl0LCBhcyB0aGVyZSBpcyBjdXJyZW50bHkgbm8gaW5lcnQgc3RhdGUgYXBwbGllZC5cbiAgICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcbiAgICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1RyeWluZyB0byByZW1vdmUgaW5lcnQgc3RhdGUgb2YgYW4gb3ZlcmxheSB3aGljaCBuZXZlciBoYWQgYW4gYXBwbGllZCBpbmVydCBzdGF0ZS4nLFxuICAgICAgICAgIHRoaXMuX2hvc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFzIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5LCBzZXQgaXRzIGluZXJ0IHN0YXRlIGFnYWluLlxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRPdmVybGF5KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9pbmVydE92ZXJsYXlzXS5wb3AoKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgICBlbGVtZW50LmluZXJ0ID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmFkZChlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZWxlbWVudC5pbmVydCkge1xuICAgICAgICAgICAgZWxlbWVudC5pbmVydCA9IHRydWU7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBwaWVyY2UgdGhyb3VnaCBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gICAgICBlbGVtZW50ID0gZWxlbWVudD8ucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KT8uaG9zdCA/PyBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlciB9IGZyb20gJy4uL29ic2VydmVycy5qcyc7XG5cbi8qKlxuICogVGhlIExhbmd1YWdlQ29udHJvbGxlciBpcyBhIHJlYWN0aXZlIGNvbnRyb2xsZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJsYW5nXCIgYXR0cmlidXRlXG4gKiBvZiB0aGUgPGh0bWw+IHRhZy5cbiAqIE9uIGNoYW5nZSBvZiB0aGUgXCJsYW5nXCIgYXR0cmlidXRlLCBpdCB3aWxsIHJlcXVlc3QgYW4gdXBkYXRlIG9mIGNvbm5lY3RlZFxuICogY29tcG9uZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZ1xuICovXG5leHBvcnQgY2xhc3MgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2RlZmF1bHRMYW5ndWFnZSA9ICdlbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXBwb3J0ZWRMb2NhbGVzID0gWydlbicsICdkZScsICdmcicsICdpdCddO1xuXG4gIC8qKiBBIHNldCBvZiBjb25uZWN0ZWQgY29tcG9uZW50cyB0aGF0IHNob3VsZCBiZSBub3RpZmllZCBvbiBsYW5ndWFnZSBjaGFuZ2UuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9saXN0ZW5lcnMgPSBuZXcgU2V0PFNiYkxhbmd1YWdlQ29udHJvbGxlcj4oKTtcblxuICAvKiogTXV0YXRpb25PYnNlcnZlciB0aGF0IG9ic2VydmVzIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGUgb2YgdGhlIDxodG1sPiBlbGVtZW50LiAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmZvckVhY2goKGwpID0+IGwuX2NhbGxIYW5kbGVycygpKTtcbiAgICB9XG4gIH0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXJDb25maWcgPSB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPVxuICAgICAgKHJlYWRDb25maWcoKS5sYW5ndWFnZSA/P1xuICAgICAgICAoaXNTZXJ2ZXJcbiAgICAgICAgICA/IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpKSB8fFxuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAvLyBTdXBwb3J0IGUuZy4gY2FzZXMgbGlrZSBgZGUtY2hgLlxuICAgIGNvbnN0IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICByZXR1cm4gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkKVxuICAgICAgPyBsYW5nQXR0cmlidXRlTm9ybWFsaXplZFxuICAgICAgOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzTGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxhbmd1YWdlIGNoYW5nZSBoYW5kbGVyLiAqL1xuICBwdWJsaWMgd2l0aEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIC8vIFdlIHVzZSB1bnNoaWZ0IGhlcmUsIHRvIHByZXBlbmQgYWRkaXRpb25hbCBoYW5kbGVycy5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCByZXF1ZXN0VXBkYXRlIGlzIGNhbGxlZCBhZnRlciB0aGUgb3RoZXIgaGFuZGxlcnMuXG4gICAgdGhpcy5faGFuZGxlcnMudW5zaGlmdChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlci5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmFkZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdGhpcy5jdXJyZW50KSB7XG4gICAgICB0aGlzLl9jYWxsSGFuZGxlcnModGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wcmV2aW91c0xhbmd1YWdlID0gdGhpcy5jdXJyZW50O1xuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmRlbGV0ZSh0aGlzKTtcbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbGxIYW5kbGVycyhyZXF1ZXN0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX2hhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoKSk7XG4gICAgaWYgKHJlcXVlc3RVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2hvc3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG4vKipcbiAqIFRoaXMgY29udHJvbGxlciBjaGVja3MgZm9yIHNsb3R0ZWQgY2hpbGRyZW4uIEZyb20gdGhlc2UgaXQgZ2VuZXJhdGVzXG4gKiBhIGxpc3Qgb2YgdXNlZCBzbG90IG5hbWVzIChgdW5uYW1lZGAgZm9yIGNoaWxkcmVuIHdpdGhvdXQgYSBzbG90IGF0dHJpYnV0ZSlcbiAqIGFuZCBhZGRzIHRoaXMgdG8gdGhlIGBkYXRhLXNsb3QtbmFtZXNgIGF0dHJpYnV0ZSwgYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdC5cbiAqXG4gKiBUaGlzIGFsbG93cyBDU1MgYXR0cmlidXRlIHNlbGVjdG9yIHRvIGRpc3BsYXkvaGlkZS9jb25maWd1cmUgYSBzZWN0aW9uXG4gKiBvZiB0aGUgY29tcG9uZW50IGFzIHJlcXVpcmVkIChzZWUgW2F0dHJ+PXZhbHVlXSBzZWxlY3RvciBzcGVjaWZpY2FsbHkpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAuZXhhbXBsZSB7XG4gKiAgIGRpc3BsYXk6IG5vbmU7XG4gKlxuICogICA6aG9zdChbZGF0YS1zbG90LW5hbWVzfj1cImljb25cIl0pICYge1xuICogICAgIGRpc3BsYXk6IGlubGluZTtcbiAqICAgfVxuICogfVxuICpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BdHRyaWJ1dGVfc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTbG90U3RhdGVDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHNsb3RzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCxcbiAgICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgdGhpcyBpcyByZWFsbHkgbmVlZGVkIHdpdGggU1NSLlxuICAgIHRoaXMuX3N5bmNTbG90cyguLi50aGlzLl9ob3N0LnF1ZXJ5U2VsZWN0b3JBbGwhKCdzbG90JykpO1xuICAgIHRoaXMuX2hvc3Quc2hhZG93Um9vdD8uYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3Quc2hhZG93Um9vdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKTtcbiAgfVxuXG4gIC8vIFdlIGF2b2lkIHVzaW5nIEFib3J0Q29udHJvbGxlciBoZXJlLCBhcyBpdCB3b3VsZCBtZWFuIGNyZWF0aW5nXG4gIC8vIGEgbmV3IGluc3RhbmNlIGZvciBldmVyeSBOYW1lZFNsb3RTdGF0ZUNvbnRyb2xsZXIgaW5zdGFuY2UuXG4gIHByaXZhdGUgX3Nsb3RjaGFuZ2VIYW5kbGVyID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3N5bmNTbG90cyhldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KTtcbiAgfTtcblxuICBwcml2YXRlIF9zeW5jU2xvdHMoLi4uc2xvdHM6IEhUTUxTbG90RWxlbWVudFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzbG90IG9mIHNsb3RzKSB7XG4gICAgICBjb25zdCBzbG90TmFtZSA9IHNsb3QubmFtZSB8fCAndW5uYW1lZCc7XG4gICAgICAvLyBXZSB3YW50IHRvIGNoZWNrLCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2xvdHRlZCBvciBhIHRleHQgbm9kZSB3aXRoIGFjdHVhbCBjb250ZW50LlxuICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG4pID0+ICd0YWdOYW1lJyBpbiBuIHx8IG4udGV4dENvbnRlbnQ/LnRyaW0oKSkpIHtcbiAgICAgICAgdGhpcy5zbG90cy5hZGQoc2xvdE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zbG90cy5kZWxldGUoc2xvdE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faG9zdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpO1xuICAgIGNvbnN0IGpvaW5lZFNsb3ROYW1lcyA9IFsuLi50aGlzLnNsb3RzXS5zb3J0KCkuam9pbignICcpO1xuICAgIGlmICgham9pbmVkU2xvdE5hbWVzKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9ob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJykgIT09IGpvaW5lZFNsb3ROYW1lcykge1xuICAgICAgdGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycsIGpvaW5lZFNsb3ROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKGpvaW5lZFNsb3ROYW1lcyAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s/LigpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSw0QkFBMEQ7QUFBQSxFQU85RCxZQUFvQixPQUErQjtBQUEvQixTQUFB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
|