@acorex/components 20.2.10 → 20.2.12
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/fesm2022/acorex-components-accordion.mjs +10 -10
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +10 -10
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +7 -7
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
- package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +7 -7
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +7 -7
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs +10 -10
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs +7 -7
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +10 -10
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +13 -13
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +13 -13
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +7 -7
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-chips.mjs +7 -7
- package/fesm2022/acorex-components-chips.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +7 -7
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-code-editor.mjs +7 -7
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-collapse.mjs +11 -26
- package/fesm2022/acorex-components-collapse.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +7 -7
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +28 -28
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +7 -7
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +28 -28
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +50 -59
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +46 -46
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +3 -3
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +31 -31
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +37 -37
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +7 -7
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +7 -7
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +7 -7
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +25 -25
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +10 -10
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer-2.mjs +10 -10
- package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +13 -13
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +7 -7
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +13 -13
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-file-explorer.mjs +25 -25
- package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
- package/fesm2022/acorex-components-flow-chart.mjs +16 -16
- package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +16 -16
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +34 -34
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +7 -7
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +7 -7
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +3 -3
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +6 -6
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +7 -7
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +7 -7
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +16 -16
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +13 -13
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +34 -34
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +16 -16
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/{acorex-components-modal-acorex-components-modal-eT-v_xm8.mjs → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs} +21 -21
- package/fesm2022/{acorex-components-modal-acorex-components-modal-eT-v_xm8.mjs.map → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs.map} +1 -1
- package/fesm2022/{acorex-components-modal-modal-content.component-DYHKvNVp.mjs → acorex-components-modal-modal-content.component-CEMHSbv-.mjs} +6 -6
- package/fesm2022/acorex-components-modal-modal-content.component-CEMHSbv-.mjs.map +1 -0
- package/fesm2022/acorex-components-modal.mjs +1 -1
- package/fesm2022/acorex-components-navbar.mjs +7 -7
- package/fesm2022/acorex-components-navbar.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +10 -10
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box-2.mjs +3 -3
- package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +7 -7
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +7 -7
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-page.mjs +10 -10
- package/fesm2022/acorex-components-page.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +25 -25
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +10 -10
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +7 -7
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +13 -13
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +7 -7
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +10 -10
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +7 -7
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-qrcode.mjs +7 -7
- package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-components-query-builder.mjs +7 -7
- package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +7 -7
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +7 -7
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +7 -7
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs +7 -7
- package/fesm2022/acorex-components-result.mjs.map +1 -1
- package/fesm2022/acorex-components-routing-progress.mjs +7 -7
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +9 -9
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +34 -34
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-scss.mjs +4 -4
- package/fesm2022/acorex-components-scss.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +7 -7
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +7 -7
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list-2.mjs +7 -7
- package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +7 -7
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +19 -34
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs +7 -7
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-slider.mjs +7 -7
- package/fesm2022/acorex-components-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-sliding-item.mjs +13 -13
- package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +13 -13
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +10 -10
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +13 -13
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +7 -7
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs +7 -7
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +7 -7
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +10 -10
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +39 -13
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs +11 -26
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +10 -10
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs +7 -7
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +10 -10
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +13 -42
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +23 -38
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-video-player.mjs +7 -7
- package/fesm2022/acorex-components-video-player.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +34 -34
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/package.json +15 -15
- package/side-menu/index.d.ts +2 -2
- package/time-duration/index.d.ts +6 -2
- package/fesm2022/acorex-components-modal-modal-content.component-DYHKvNVp.mjs.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-range-slider.mjs","sources":["../tmp-esm2022/range-slider/lib/range-slider.class.js","../tmp-esm2022/range-slider/lib/range-slider.component.js","../tmp-esm2022/range-slider/lib/range-slider.module.js","../tmp-esm2022/range-slider/acorex-components-range-slider.js"],"sourcesContent":["//import { AXRange } from '@acorex/cdk/common';\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDIiwic291cmNlc0NvbnRlbnQiOlsiLy9pbXBvcnQgeyBBWFJhbmdlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSYW5nZVN0YXJ0RXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YTogYW55O1xufVxuZXhwb3J0IHR5cGUgQVhSYW5nZVNsaWRlclZhbHVlID0gbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcbmV4cG9ydCB0eXBlIEFYUmFuZ2VTbGlkZXJNb2RlID0gJ3NpbmdsZScgfCAnZHVhbCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyU25hcE1vZGUgPSAnYm90aCcgfCAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVySGFuZGxlciA9ICdmaXJzdCcgfCAnc2Vjb25kJztcbiJdfQ==","import { AXComponent, AXValuableComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { isPlatformBrowser, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, forwardRef, HostBinding, HostListener, inject, input, model, NgZone, PLATFORM_ID, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\n/**\n * @description\n * A range slider for selecting a range of values, supporting both single and dual modes.\n * The slider offers step, snap, and tooltip configurations.\n *\n * @example\n * <ax-range-slider [min]=\"0\" [max]=\"100\" [step]=\"1\" [mode]=\"'dual'\"></ax-range-slider>\n */\nexport class AXRangeSliderComponent extends classes((MXValueComponent)) {\n constructor() {\n super();\n this.zone = inject(NgZone);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @description\n * The orientation of the slider, either 'horizontal' or 'vertical'.\n * @default 'horizontal'\n */\n this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: \"orientation\" }] : []));\n /**\n * @description\n * Color theme for the slider, affecting highlight, tooltip, and handler.\n * @default 'primary'\n */\n this.color = input('primary', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n /**\n * @description\n * The value(s) of the slider. Can be a single number for single mode or an array of two numbers for dual mode.\n */\n this.values = model(this.value, ...(ngDevMode ? [{ debugName: \"values\" }] : []));\n /**\n * @description\n * The mode of the slider, either 'single' or 'dual'.\n * @default 'single'\n */\n this.mode = input('single', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n /**\n * @description\n * The minimum value of the slider.\n * @default 0\n */\n this.min = input(0, ...(ngDevMode ? [{ debugName: \"min\" }] : []));\n /**\n * @description\n * The maximum value of the slider.\n * @default 100\n */\n this.max = input(100, ...(ngDevMode ? [{ debugName: \"max\" }] : []));\n /**\n * @description\n * The step increment for value changes.\n * @default 1\n */\n this.step = input(1, ...(ngDevMode ? [{ debugName: \"step\" }] : []));\n /**\n * @description\n * The snapping increment for the slider.\n * @default 1\n */\n this.snap = input(1, ...(ngDevMode ? [{ debugName: \"snap\" }] : []));\n /**\n * @description\n * Mode for displaying tooltips, can be at the start, end, or both.\n * @default 'end'\n */\n this.tooltipMode = input('end', ...(ngDevMode ? [{ debugName: \"tooltipMode\" }] : []));\n /**\n * @description\n * Mode for snapping, can snap at the start, end, or both.\n * @default 'start'\n */\n this.snapMode = input('start', ...(ngDevMode ? [{ debugName: \"snapMode\" }] : []));\n /**\n * @description\n * Whether the slider should have steps.\n * @default true\n */\n this.hasStep = input(true, ...(ngDevMode ? [{ debugName: \"hasStep\" }] : []));\n /**\n * @description\n * Whether the slider should display snapping.\n * @default false\n */\n this.hasSnap = input(false, ...(ngDevMode ? [{ debugName: \"hasSnap\" }] : []));\n /**\n * @description\n * Whether the slider should display labels for snapping points.\n * @default Value derived from `hasSnap()`\n */\n this.hasLable = input(this.hasSnap(), ...(ngDevMode ? [{ debugName: \"hasLable\" }] : []));\n /**\n * @description\n * Whether the slider should display tooltips.\n * @default false\n */\n this.hasTooltip = input(false, ...(ngDevMode ? [{ debugName: \"hasTooltip\" }] : []));\n /**\n * @ignore\n */\n this.height = 0.25;\n /**\n * @ignore\n */\n this.newHeight = 'var(--ax-comp-range-slider-size)';\n /**\n * @ignore\n */\n this.range = computed(() => this.max() - this.min(), ...(ngDevMode ? [{ debugName: \"range\" }] : []));\n /**\n * @ignore\n */\n this.isHorizontal = computed(() => this.orientation() === 'horizontal', ...(ngDevMode ? [{ debugName: \"isHorizontal\" }] : []));\n /**\n * @ignore\n */\n this.isDual = computed(() => this.mode() === 'dual', ...(ngDevMode ? [{ debugName: \"isDual\" }] : []));\n /**\n * @ignore\n */\n this.correctMinMax = computed(() => this.max() - this.min() > 0, ...(ngDevMode ? [{ debugName: \"correctMinMax\" }] : []));\n /**\n * @ignore\n */\n this.calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n if (this.snap() <= 0) {\n console.error('Wrong Snap!');\n return null;\n }\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n if (array.length > 20) {\n console.warn(`Too many snap points (${array.length}). Max allowed is 20.`);\n return null;\n }\n return array;\n }\n return null;\n }, ...(ngDevMode ? [{ debugName: \"calculateSnapBar\" }] : []));\n /**\n * @ignore\n */\n this.calculatePos = computed(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n }\n else {\n return ((this.values() - this.min()) / this.range()) * 100;\n }\n }, ...(ngDevMode ? [{ debugName: \"calculatePos\" }] : []));\n /**\n * @ignore\n */\n this.choosenHandler = undefined;\n /**\n * @ignore\n */\n this.sliderElement = null;\n /**\n * @ignore\n */\n this.AXRangeSliderHighlight = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n height: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHighlight\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler1 = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler1\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler2 = computed(() => this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler2\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderStep\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeLabel\" }] : []));\n this.isUserInteraction = false;\n effect(() => {\n this.commitValue(this.values(), this.isUserInteraction);\n this.isUserInteraction = false;\n });\n effect(() => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n }\n else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n });\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n super.ngOnDestroy();\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('mousemove', this.moveListener);\n window.removeEventListener('mouseup', this.endListener);\n window.removeEventListener('touchmove', this.moveListener);\n window.removeEventListener('touchend', this.endListener);\n }\n }\n /**\n * @ignore\n */\n onStartHandler(event, circle) {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax())\n return;\n event.preventDefault();\n this.sliderElement = event.target.closest('.ax-range-slider');\n if (this.sliderElement && isPlatformBrowser(this.platformID)) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n [this.moveListener, this.endListener] = [moveListener, endListener];\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n onStartBar(event) {\n this.isUserInteraction = true;\n let circle = 'first';\n this.sliderElement = event.target.closest('.ax-range-slider');\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || this.readonly)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n const exactValue = this.getValueFromPercent(calculatePercent);\n let value = Number.parseFloat(exactValue.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (Math.abs(exactValue - this.values()[0]) > Math.abs(exactValue - this.values()[1])) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n if (this.values()[1] === this.min()) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n }\n }\n else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n onMove(event, circle) {\n this.isUserInteraction = true;\n if (!this.sliderElement)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value <= this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n }\n else if (circle === 'second' && value >= this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n }\n else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n onEnd(moveListener, endListener) {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values())) {\n this.values.set(this.min());\n }\n else if (typeof this.values() !== 'number' && !this.checkValues(this.values()[0], 'first', this.values()[1])) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n }\n else {\n this.values.update((old) => this.roundToStep(old));\n }\n }\n }\n /**\n * @ignore\n */\n fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n calculatePercentOnMove(event) {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n }\n else {\n const clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n }\n else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n /**\n * @ignore\n */\n roundToStep(value) {\n const lower = Math.max(this.min(), Math.floor((value - this.min()) / this.step()) * this.step() + this.min());\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n }\n else {\n return upper;\n }\n }\n /**\n * @ignore\n */\n checkValue(x) {\n if (x >= this.min() && x <= this.max())\n return true;\n else\n return false;\n }\n /**\n * @ignore\n */\n checkValues(value1, y, value2) {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 <= value2 && value2 <= this.max())\n return true;\n else\n return false;\n }\n else {\n if (value1 >= value2 && value2 >= this.min())\n return true;\n else\n return false;\n }\n }\n else\n return false;\n }\n /**\n * @ignore\n */\n getValueFromPercent(value) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n getPercantage(value) {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n increaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n }\n else {\n const newValue = this.roundToStep(this.values() + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n }\n else {\n const newValue = this.roundToStep(this.values() - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n onWheel(event) {\n this.isUserInteraction = true;\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax())\n return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] + this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values()[0] !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] + this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] + this.step())]);\n }\n }\n }\n else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values() !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] - this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[0]) && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] - this.step())]);\n }\n }\n }\n }\n else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep(this.values() + this.step()))) {\n this.values.update((old) => this.roundToStep(old + this.step()));\n }\n }\n else {\n if (this.checkValue(this.roundToStep(this.values() - this.step()))) {\n this.values.update((old) => this.roundToStep(old - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRangeSliderComponent, isStandalone: true, selector: \"ax-range-slider\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: \"orientation\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: \"values\", publicName: \"values\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: \"step\", publicName: \"step\", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: \"snap\", publicName: \"snap\", isSignal: true, isRequired: false, transformFunction: null }, tooltipMode: { classPropertyName: \"tooltipMode\", publicName: \"tooltipMode\", isSignal: true, isRequired: false, transformFunction: null }, snapMode: { classPropertyName: \"snapMode\", publicName: \"snapMode\", isSignal: true, isRequired: false, transformFunction: null }, hasStep: { classPropertyName: \"hasStep\", publicName: \"hasStep\", isSignal: true, isRequired: false, transformFunction: null }, hasSnap: { classPropertyName: \"hasSnap\", publicName: \"hasSnap\", isSignal: true, isRequired: false, transformFunction: null }, hasLable: { classPropertyName: \"hasLable\", publicName: \"hasLable\", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: \"hasTooltip\", publicName: \"hasTooltip\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { values: \"valuesChange\" }, host: { listeners: { \"wheel\": \"onWheel($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], usesInheritance: true, ngImport: i0, template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"], dependencies: [{ kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-range-slider', inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], imports: [NgStyle], template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { onWheel: [{\n type: HostListener,\n args: ['wheel', ['$event']]\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBR1gsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBUW5DOzs7Ozs7O0dBT0c7QUFtQkgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLGdCQUFvQyxDQUFBLENBQUM7SUF3UXZGO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF4UUYsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQ7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFnQixZQUFZLHVEQUFDLENBQUM7UUFFMUQ7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQXVDLFNBQVMsaURBQUMsQ0FBQztRQUV4RTs7O1dBR0c7UUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFxQixJQUFJLENBQUMsS0FBSyxrREFBQyxDQUFDO1FBRS9DOzs7O1dBSUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFvQixRQUFRLGdEQUFDLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNNLFFBQUcsR0FBRyxLQUFLLENBQVMsQ0FBQywrQ0FBQyxDQUFDO1FBRWhDOzs7O1dBSUc7UUFDTSxRQUFHLEdBQUcsS0FBSyxDQUFTLEdBQUcsK0NBQUMsQ0FBQztRQUVsQzs7OztXQUlHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBUyxDQUFDLGdEQUFDLENBQUM7UUFFakM7Ozs7V0FJRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQVMsQ0FBQyxnREFBQyxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTSxnQkFBVyxHQUFHLEtBQUssQ0FBMkIsS0FBSyx1REFBQyxDQUFDO1FBRTlEOzs7O1dBSUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUF3QixPQUFPLG9EQUFDLENBQUM7UUFFMUQ7Ozs7V0FJRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxtREFBQyxDQUFDO1FBRS9COzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssbURBQUMsQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9EQUFDLENBQUM7UUFFMUM7Ozs7V0FJRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxzREFBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ0gsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkOztXQUVHO1FBQ0gsY0FBUyxHQUFHLGtDQUFrQyxDQUFDO1FBQy9DOztXQUVHO1FBQ0gsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxpREFBQyxDQUFDO1FBQ2hEOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksd0RBQUMsQ0FBQztRQUNuRTs7V0FFRztRQUNILFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sa0RBQUMsQ0FBQztRQUNoRDs7V0FFRztRQUNILGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5REFBQyxDQUFDO1FBQzVEOztXQUVHO1FBRU8scUJBQWdCLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUU7WUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzdCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUMxRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixDQUFDO2dCQUNELEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELENBQUM7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixLQUFLLENBQUMsTUFBTSx1QkFBdUIsQ0FBQyxDQUFDO29CQUMzRSxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyw0REFBQyxDQUFDO1FBQ0g7O1dBRUc7UUFDTyxpQkFBWSxHQUFHLFFBQVEsQ0FBcUIsR0FBRyxFQUFFO1lBQ3pELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxPQUFPO29CQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRztvQkFDdEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHO2lCQUN2RCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUMsd0RBQUMsQ0FBQztRQUNIOztXQUVHO1FBQ0ssbUJBQWMsR0FBbUMsU0FBUyxDQUFDO1FBQ25FOztXQUVHO1FBQ0ssa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBQ2pEOztXQUVHO1FBQ08sMkJBQXNCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUMvQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLENBQUMsQ0FBQztnQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN6RCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEdBQUc7YUFDekc7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxHQUFHO2dCQUN6RyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNyRSxrRUFDTixDQUFDO1FBQ0Y7O1dBRUc7UUFDTywwQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQzlDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxZQUFZLEVBQWEsR0FBRyxHQUFHO2FBQzNGO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNuQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTTtvQkFDdEUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU07YUFDdEUsaUVBQ04sQ0FBQztRQUNGOztXQUVHO1FBQ08sMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLENBQUMsQ0FBQztnQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUc7YUFDbkM7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU07YUFDN0UsaUVBQ04sQ0FBQztRQUNGOztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29CQUN4QixLQUFLLE1BQU07d0JBQ1QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO29CQUN2RCxLQUFLLE9BQU87d0JBQ1YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO29CQUMzRSxLQUFLLEtBQUs7d0JBQ1IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQzlFLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztvQkFDeEIsS0FBSyxNQUFNO3dCQUNULE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDdEQsS0FBSyxPQUFPO3dCQUNWLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDM0UsS0FBSyxLQUFLO3dCQUNSLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO2dCQUM5RSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsNkRBQUMsQ0FBQztRQUNIOztXQUVHO1FBQ08saUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7b0JBQ3hCLEtBQUssTUFBTTt3QkFDVCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO29CQUMxQyxLQUFLLE9BQU87d0JBQ1YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDMUMsS0FBSyxLQUFLO3dCQUNSLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29CQUN4QixLQUFLLE1BQU07d0JBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDM0MsS0FBSyxPQUFPO3dCQUNWLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7b0JBQzNDLEtBQUssS0FBSzt3QkFDUixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyx3REFBQyxDQUFDO1FBQ0gsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBR3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsSUFBSSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxLQUFLLEVBQUUsS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssS0FBSyxDQUFDLEtBQUs7Z0JBQ3BGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNnQixRQUFRO1FBQ3pCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDdEYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ2dCLFdBQVc7UUFDNUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFHRDs7T0FFRztJQUNPLGNBQWMsQ0FBQyxLQUE4QixFQUFFLE1BQTBCO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFBRSxPQUFPO1lBQ3BFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0IsQ0FBQztZQUM5RixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2dCQUM3QixNQUFNLFlBQVksR0FBRyxDQUFDLFNBQWtDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDaEUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdEUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxVQUFVLENBQUMsS0FBOEI7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLE1BQU0sR0FBdUIsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUksS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFnQixDQUFDO1FBQzlGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUNsRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxNQUFNLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQzNDLE1BQU0sR0FBRyxRQUFRLENBQUM7b0JBQ3BCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMzQyxNQUFNLEdBQUcsT0FBTyxDQUFDO29CQUNuQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ08sTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBMEI7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMxRixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxLQUFLLENBQUMsWUFBc0QsRUFBRSxXQUF1QjtRQUM3RixNQUFNLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFDRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0Q7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQVksQ0FBQyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEcsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFhLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0ssZUFBZTtRQUNyQixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBQ0Q7O09BRUc7SUFDSyxzQkFBc0IsQ0FBQyxLQUE4QjtRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUQsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxLQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdkcsTUFBTSxDQUFDLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDcEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxLQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdkcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7WUFDN0UsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDZCxDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLEtBQWE7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVUsQ0FBQyxDQUFTO1FBQzFCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDOztZQUMvQyxPQUFPLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0Q7O09BRUc7SUFDSyxXQUFXLENBQUMsTUFBYyxFQUFFLENBQXFCLEVBQUUsTUFBYztRQUN2RSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNsQixJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQUUsT0FBTyxJQUFJLENBQUM7O29CQUNyRCxPQUFPLEtBQUssQ0FBQztZQUNwQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUFFLE9BQU8sSUFBSSxDQUFDOztvQkFDckQsT0FBTyxLQUFLLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7O1lBQU0sT0FBTyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNEOztPQUVHO0lBQ08sbUJBQW1CLENBQUMsS0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNoRSxDQUFDO0lBQ0Q7O09BRUc7SUFDTyxhQUFhLENBQUMsS0FBYTtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ksWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBQ0Q7O09BRUc7SUFFSCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFBRSxPQUFPO1lBQzVGLElBQUksUUFBUSxDQUFDO1lBQ2IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3BDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzs0QkFDdkcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUYsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUN4RSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDOzRCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1RixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDcEMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUN4RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDOzRCQUNwRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1RixDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ3hFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7NEJBQ3ZHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVGLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUUsR0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQy9FLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFFLEdBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMvRSxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUNZLFdBQVc7UUFDckIsT0FBTztZQUNMLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRO1lBQzFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7OEdBem1CVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvcUVBWHRCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1NBQzlELGlEQ3ZESCx1dURBcURBLGczUkRHWSxPQUFPOzsyRkFFTixzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNFLGlCQUFpQixVQUduQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsaUJBQ2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3FCQUM5RCxXQUNRLENBQUMsT0FBTyxDQUFDO3dEQW1qQmxCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbURyQixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhPcmllbnRhdGlvbixcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBOZ1pvbmUsXG4gIFBMQVRGT1JNX0lELFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWFJhbmdlU2xpZGVyTW9kZSxcbiAgQVhSYW5nZVNsaWRlclNuYXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJWYWx1ZSxcbn0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY2xhc3MnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSByYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcywgc3VwcG9ydGluZyBib3RoIHNpbmdsZSBhbmQgZHVhbCBtb2Rlcy5cbiAqIFRoZSBzbGlkZXIgb2ZmZXJzIHN0ZXAsIHNuYXAsIGFuZCB0b29sdGlwIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YXgtcmFuZ2Utc2xpZGVyIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgW3N0ZXBdPVwiMVwiIFttb2RlXT1cIidkdWFsJ1wiPjwvYXgtcmFuZ2Utc2xpZGVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1yYW5nZS1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSYW5nZVNsaWRlckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtOZ1N0eWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlckNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxBWFJhbmdlU2xpZGVyVmFsdWU+KSB7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHNsaWRlciwgZWl0aGVyICdob3Jpem9udGFsJyBvciAndmVydGljYWwnLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ2hvcml6b250YWwnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbG9yIHRoZW1lIGZvciB0aGUgc2xpZGVyLCBhZmZlY3RpbmcgaGlnaGxpZ2h0LCB0b29sdGlwLCBhbmQgaGFuZGxlci5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PEV4Y2x1ZGU8QVhTdHlsZUNvbG9yVHlwZSwgJ2RlZmF1bHQnPj4oJ3ByaW1hcnknKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB2YWx1ZShzKSBvZiB0aGUgc2xpZGVyLiBDYW4gYmUgYSBzaW5nbGUgbnVtYmVyIGZvciBzaW5nbGUgbW9kZSBvciBhbiBhcnJheSBvZiB0d28gbnVtYmVycyBmb3IgZHVhbCBtb2RlLlxuICAgKi9cbiAgdmFsdWVzID0gbW9kZWw8QVhSYW5nZVNsaWRlclZhbHVlPih0aGlzLnZhbHVlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtb2RlIG9mIHRoZSBzbGlkZXIsIGVpdGhlciAnc2luZ2xlJyBvciAnZHVhbCcuXG4gICAqIEBkZWZhdWx0ICdzaW5nbGUnXG4gICAqL1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlck1vZGU+KCdzaW5nbGUnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBzbGlkZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlcj4oMCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oMTAwKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzdGVwIGluY3JlbWVudCBmb3IgdmFsdWUgY2hhbmdlcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc3RlcCA9IGlucHV0PG51bWJlcj4oMSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc25hcHBpbmcgaW5jcmVtZW50IGZvciB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBzbmFwID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vZGUgZm9yIGRpc3BsYXlpbmcgdG9vbHRpcHMsIGNhbiBiZSBhdCB0aGUgc3RhcnQsIGVuZCwgb3IgYm90aC5cbiAgICogQGRlZmF1bHQgJ2VuZCdcbiAgICovXG4gIHJlYWRvbmx5IHRvb2x0aXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclRvb2x0aXBNb2RlPignZW5kJyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb2RlIGZvciBzbmFwcGluZywgY2FuIHNuYXAgYXQgdGhlIHN0YXJ0LCBlbmQsIG9yIGJvdGguXG4gICAqIEBkZWZhdWx0ICdzdGFydCdcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclNuYXBNb2RlPignc3RhcnQnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgaGF2ZSBzdGVwcy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU3RlcCA9IGlucHV0KHRydWUpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBkaXNwbGF5IHNuYXBwaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU25hcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSBsYWJlbHMgZm9yIHNuYXBwaW5nIHBvaW50cy5cbiAgICogQGRlZmF1bHQgVmFsdWUgZGVyaXZlZCBmcm9tIGBoYXNTbmFwKClgXG4gICAqL1xuICByZWFkb25seSBoYXNMYWJsZSA9IGlucHV0KHRoaXMuaGFzU25hcCgpKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSB0b29sdGlwcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGhhc1Rvb2x0aXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGhlaWdodCA9IDAuMjU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZXdIZWlnaHQgPSAndmFyKC0tYXgtY29tcC1yYW5nZS1zbGlkZXItc2l6ZSknO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0hvcml6b250YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvcnJlY3RNaW5NYXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSA+IDApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlU25hcEJhciA9IGNvbXB1dGVkPG51bWJlcltdIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgaWYgKHRoaXMuc25hcCgpIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV3JvbmcgU25hcCEnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1pbigpOyBpIDwgdGhpcy5tYXgoKTsgaSArPSB0aGlzLnNuYXAoKSkge1xuICAgICAgICBhcnJheS5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBbLi4uYXJyYXksIHRoaXMubWF4KCldO1xuICAgICAgaWYgKGFycmF5WzBdIDwgMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSArIC1hcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5WzBdID4gMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSAtIGFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMjApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUb28gbWFueSBzbmFwIHBvaW50cyAoJHthcnJheS5sZW5ndGh9KS4gTWF4IGFsbG93ZWQgaXMgMjAuYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlUG9zID0gY29tcHV0ZWQ8QVhSYW5nZVNsaWRlclZhbHVlPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkgJiYgdGhpcy52YWx1ZXMoKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgKCh0aGlzLnZhbHVlcygpWzBdIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwLFxuICAgICAgICAoKHRoaXMudmFsdWVzKClbMV0gLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAsXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwO1xuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNob29zZW5IYW5kbGVyOiAnZmlyc3QnIHwgJ3NlY29uZCcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNsaWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhpZ2hsaWdodCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiAnMCUnLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdIC0gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6IHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJScsXG4gICAgICAgICAgYm90dG9tOiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIxID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikgKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJ1xuICAgICAgICAgICAgOiAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGFuZGxlcjIgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IC02ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCksIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb3JyZWN0TWluTWF4KCkpIHtcbiAgICAgICAgdGhpcy5maXhJbml0aWFsaXplVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZml4Q2hhbmdpbmdNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZT8udmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlPy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVzKCkgIT09IHZhbHVlLnZhbHVlKVxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW92ZUxpc3RlbmVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5tb3ZlTGlzdGVuZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgbW92ZUxpc3RlbmVyO1xuICBwcml2YXRlIGVuZExpc3RlbmVyO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uU3RhcnRIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNsaWRlckVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuYXgtcmFuZ2Utc2xpZGVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5zbGlkZXJFbGVtZW50ICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICBbdGhpcy5tb3ZlTGlzdGVuZXIsIHRoaXMuZW5kTGlzdGVuZXJdID0gW21vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXJdO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEJhcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGxldCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyA9ICdmaXJzdCc7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LXJhbmdlLXNsaWRlcicpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2xpZGVyRWxlbWVudCB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgICAgY29uc3QgZXhhY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUGVyY2VudChjYWxjdWxhdGVQZXJjZW50KTtcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGV4YWN0VmFsdWUudG9GaXhlZCgyKSk7XG4gICAgICBpZiAodGhpcy5oYXNTdGVwKCkpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVswXSkgPiBNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVsxXSkpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIHZhbHVlXSk7XG4gICAgICAgICAgY2lyY2xlID0gJ3NlY29uZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudmFsdWVzKClbMV0gPT09IHRoaXMubWluKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgICAgICAgICBjaXJjbGUgPSAnZmlyc3QnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uU3RhcnRIYW5kbGVyKGV2ZW50LCBjaXJjbGUpO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Nb3ZlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudCA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudCk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgyKSk7XG4gICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0JyAmJiB2YWx1ZSA8PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaXJjbGUgPT09ICdzZWNvbmQnICYmIHZhbHVlID49IHRoaXMudmFsdWVzKClbMF0gJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXModmFsdWUsICdzZWNvbmQnLCB0aGlzLnZhbHVlcygpWzBdKSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHZhbHVlKSAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRW5kKG1vdmVMaXN0ZW5lcjogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZCwgZW5kTGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVuZExpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmRMaXN0ZW5lcik7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gbnVsbDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKClbMF0gPiB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMV0sIHRoaXMudmFsdWVzKClbMF1dKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpID09PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgIT09ICdudW1iZXInICYmICF0aGlzLmNoZWNrVmFsdWVzKHRoaXMudmFsdWVzKClbMF0sICdmaXJzdCcsIHRoaXMudmFsdWVzKClbMV0pKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAob2xkWzBdKSwgdGhpcy5yb3VuZFRvU3RlcChvbGRbMV0pXSk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdID09PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKSArIHRoaXMuc3RlcCgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiYgIXRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHBlcmNlbnQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgY29uc3QgeCA9IGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQ7XG4gICAgICBwZXJjZW50ID0gKHggLyBzbGlkZXJSZWN0LndpZHRoKSAqIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpZW50WSA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFkgOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgY29uc3QgeSA9IC0oY2xpZW50WSAtIHNsaWRlclJlY3QuYm90dG9tKTsgLy9yZXZlcmNlIHNsaWRlciBmcm9tIGJvdHRvbSB0byB0b3BcbiAgICAgIHBlcmNlbnQgPSAoeSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICB9XG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxMDApIHtcbiAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgfVxuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcm91bmRUb1N0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbG93ZXIgPSBNYXRoLm1heCh0aGlzLm1pbigpLCBNYXRoLmZsb29yKCh2YWx1ZSAtIHRoaXMubWluKCkpIC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCkgKyB0aGlzLm1pbigpKTtcbiAgICBjb25zdCB1cHBlciA9IE1hdGgubWluKHRoaXMubWF4KCksIGxvd2VyICsgdGhpcy5zdGVwKCkpO1xuICAgIGlmICh2YWx1ZSAtIGxvd2VyIDwgdXBwZXIgLSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGxvd2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdXBwZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZSh4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoeCA+PSB0aGlzLm1pbigpICYmIHggPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZXModmFsdWUxOiBudW1iZXIsIHk6ICdmaXJzdCcgfCAnc2Vjb25kJywgdmFsdWUyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUxID49IHRoaXMubWluKCkgJiYgdmFsdWUxIDw9IHRoaXMubWF4KCkpIHtcbiAgICAgIGlmICh5ID09PSAnZmlyc3QnKSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gdmFsdWUyICYmIHZhbHVlMiA8PSB0aGlzLm1heCgpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsdWUxID49IHZhbHVlMiAmJiB2YWx1ZTIgPj0gdGhpcy5taW4oKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZUZyb21QZXJjZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5taW4oKSArICh2YWx1ZSAqICh0aGlzLm1heCgpIC0gdGhpcy5taW4oKSkpIC8gMTAwO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0UGVyY2FudGFnZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSgpICE9PSAwID8gKHZhbHVlIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCA6IDA7XG4gIH1cbiAgLyoqXG4gICAqIEluY3JlYXNlIGEgc3RlcCB0byB2YWx1ZSBpZiBzbGlkZXIgaW4gc2luZ2xlIG1vZGVcbiAgICogYW5kIGluY3JlYXNlIGEgc3RlcCB0aGUgc2Vjb25kIHZhbHVlIGlmIHNsaWRlciBpbiBkdWFsIG1vZGVcbiAgICogQG1ldGhvZCBpbmNyZWFzZVN0ZXBcbiAgICovXG4gIHB1YmxpYyBpbmNyZWFzZVN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCh0aGlzLnZhbHVlcygpWzFdICsgdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCBuZXdWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEZWNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBkZWNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgZGVjcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgZGVjcmVhc2VTdGVwKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVswXSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbbmV3VmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2hlZWwnLCBbJyRldmVudCddKVxuICBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICghdGhpcy5jaG9vc2VuSGFuZGxlciB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY29ycmVjdE1pbk1heCgpKSByZXR1cm47XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgICAgIGlmICh0aGlzLmNob29zZW5IYW5kbGVyID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMF0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAoKG9sZFswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpLCBvbGRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPD0gdGhpcy5tYXgoKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmIHRoaXMudmFsdWVzKCkgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcCgob2xkWzBdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSksIG9sZFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzBdKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5yb3VuZFRvU3RlcCgob2xkIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKChvbGQgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGBheC0ke3RoaXMuY29sb3IoKX0tc29saWRgLFxuICAgICAgYCR7dGhpcy5kaXNhYmxlZCA/ICdheC1zdGF0ZS1kaXNhYmxlZCcgOiAnJ31gLFxuICAgICAgYCR7dGhpcy5yZWFkb25seSA/ICdheC1zdGF0ZS1yZWFkb25seScgOiAnJ31gLFxuICAgIF07XG4gIH1cbn1cbiIsIkBpZiAoY29ycmVjdE1pbk1heCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXJcIiBbY2xhc3NdPVwiJ2F4LW9yaWVudGF0aW9uLScgKyBvcmllbnRhdGlvbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1iYXJcIiAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhpZ2hsaWdodFwiXG4gICAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGlnaGxpZ2h0KClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMSgpXCJcbiAgICAgIG5hbWU9XCJmaXJzdFwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgID5cbiAgICAgIEBpZiAoaGFzVG9vbHRpcCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IGlzRHVhbCgpID8gdmFsdWVzKClbMF0gOiB2YWx1ZXMoKSB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0R1YWwoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhhbmRsZXIyKClcIlxuICAgICAgICBuYW1lPVwic2Vjb25kXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IHZhbHVlcygpWzFdIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGhhc1NuYXAoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1zdGVwXCIgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlclN0ZXAoKVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGNhbGN1bGF0ZVNuYXBCYXIoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItc3RlcHNcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiaXNIb3Jpem9udGFsKCkgPyB7IGxlZnQ6IGdldFBlcmNhbnRhZ2UoaXRlbSkgKyAnJScgfSA6IHsgYm90dG9tOiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaGFzTGFibGUoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWxhYmVsXCIgW25nU3R5bGVdPVwiQVhSYW5nZUxhYmVsKClcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtICsgbWluKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\nimport * as i0 from \"@angular/core\";\nexport class AXRangeSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule, AXRangeSliderComponent], exports: [AXRangeSliderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXRangeSliderComponent],\n exports: [AXRangeSliderComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNbEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIcEIsWUFBWSxFQUFFLHNCQUFzQixhQUNwQyxzQkFBc0I7K0dBRXJCLG1CQUFtQixZQUhwQixZQUFZOzsyRkFHWCxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcmFuZ2Utc2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fjb3JleC1jb21wb25lbnRzLXJhbmdlLXNsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-range-slider.mjs","sources":["../tmp-esm2022/range-slider/lib/range-slider.class.js","../tmp-esm2022/range-slider/lib/range-slider.component.js","../tmp-esm2022/range-slider/lib/range-slider.module.js","../tmp-esm2022/range-slider/acorex-components-range-slider.js"],"sourcesContent":["//import { AXRange } from '@acorex/cdk/common';\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDIiwic291cmNlc0NvbnRlbnQiOlsiLy9pbXBvcnQgeyBBWFJhbmdlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhSYW5nZVN0YXJ0RXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YTogYW55O1xufVxuZXhwb3J0IHR5cGUgQVhSYW5nZVNsaWRlclZhbHVlID0gbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcbmV4cG9ydCB0eXBlIEFYUmFuZ2VTbGlkZXJNb2RlID0gJ3NpbmdsZScgfCAnZHVhbCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyU25hcE1vZGUgPSAnYm90aCcgfCAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUgPSAnc3RhcnQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBBWFJhbmdlU2xpZGVySGFuZGxlciA9ICdmaXJzdCcgfCAnc2Vjb25kJztcbiJdfQ==","import { AXComponent, AXValuableComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { isPlatformBrowser, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, forwardRef, HostBinding, HostListener, inject, input, model, NgZone, PLATFORM_ID, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\n/**\n * @description\n * A range slider for selecting a range of values, supporting both single and dual modes.\n * The slider offers step, snap, and tooltip configurations.\n *\n * @example\n * <ax-range-slider [min]=\"0\" [max]=\"100\" [step]=\"1\" [mode]=\"'dual'\"></ax-range-slider>\n */\nexport class AXRangeSliderComponent extends classes((MXValueComponent)) {\n constructor() {\n super();\n this.zone = inject(NgZone);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @description\n * The orientation of the slider, either 'horizontal' or 'vertical'.\n * @default 'horizontal'\n */\n this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: \"orientation\" }] : []));\n /**\n * @description\n * Color theme for the slider, affecting highlight, tooltip, and handler.\n * @default 'primary'\n */\n this.color = input('primary', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n /**\n * @description\n * The value(s) of the slider. Can be a single number for single mode or an array of two numbers for dual mode.\n */\n this.values = model(this.value, ...(ngDevMode ? [{ debugName: \"values\" }] : []));\n /**\n * @description\n * The mode of the slider, either 'single' or 'dual'.\n * @default 'single'\n */\n this.mode = input('single', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n /**\n * @description\n * The minimum value of the slider.\n * @default 0\n */\n this.min = input(0, ...(ngDevMode ? [{ debugName: \"min\" }] : []));\n /**\n * @description\n * The maximum value of the slider.\n * @default 100\n */\n this.max = input(100, ...(ngDevMode ? [{ debugName: \"max\" }] : []));\n /**\n * @description\n * The step increment for value changes.\n * @default 1\n */\n this.step = input(1, ...(ngDevMode ? [{ debugName: \"step\" }] : []));\n /**\n * @description\n * The snapping increment for the slider.\n * @default 1\n */\n this.snap = input(1, ...(ngDevMode ? [{ debugName: \"snap\" }] : []));\n /**\n * @description\n * Mode for displaying tooltips, can be at the start, end, or both.\n * @default 'end'\n */\n this.tooltipMode = input('end', ...(ngDevMode ? [{ debugName: \"tooltipMode\" }] : []));\n /**\n * @description\n * Mode for snapping, can snap at the start, end, or both.\n * @default 'start'\n */\n this.snapMode = input('start', ...(ngDevMode ? [{ debugName: \"snapMode\" }] : []));\n /**\n * @description\n * Whether the slider should have steps.\n * @default true\n */\n this.hasStep = input(true, ...(ngDevMode ? [{ debugName: \"hasStep\" }] : []));\n /**\n * @description\n * Whether the slider should display snapping.\n * @default false\n */\n this.hasSnap = input(false, ...(ngDevMode ? [{ debugName: \"hasSnap\" }] : []));\n /**\n * @description\n * Whether the slider should display labels for snapping points.\n * @default Value derived from `hasSnap()`\n */\n this.hasLable = input(this.hasSnap(), ...(ngDevMode ? [{ debugName: \"hasLable\" }] : []));\n /**\n * @description\n * Whether the slider should display tooltips.\n * @default false\n */\n this.hasTooltip = input(false, ...(ngDevMode ? [{ debugName: \"hasTooltip\" }] : []));\n /**\n * @ignore\n */\n this.height = 0.25;\n /**\n * @ignore\n */\n this.newHeight = 'var(--ax-comp-range-slider-size)';\n /**\n * @ignore\n */\n this.range = computed(() => this.max() - this.min(), ...(ngDevMode ? [{ debugName: \"range\" }] : []));\n /**\n * @ignore\n */\n this.isHorizontal = computed(() => this.orientation() === 'horizontal', ...(ngDevMode ? [{ debugName: \"isHorizontal\" }] : []));\n /**\n * @ignore\n */\n this.isDual = computed(() => this.mode() === 'dual', ...(ngDevMode ? [{ debugName: \"isDual\" }] : []));\n /**\n * @ignore\n */\n this.correctMinMax = computed(() => this.max() - this.min() > 0, ...(ngDevMode ? [{ debugName: \"correctMinMax\" }] : []));\n /**\n * @ignore\n */\n this.calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n if (this.snap() <= 0) {\n console.error('Wrong Snap!');\n return null;\n }\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n if (array.length > 20) {\n console.warn(`Too many snap points (${array.length}). Max allowed is 20.`);\n return null;\n }\n return array;\n }\n return null;\n }, ...(ngDevMode ? [{ debugName: \"calculateSnapBar\" }] : []));\n /**\n * @ignore\n */\n this.calculatePos = computed(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n }\n else {\n return ((this.values() - this.min()) / this.range()) * 100;\n }\n }, ...(ngDevMode ? [{ debugName: \"calculatePos\" }] : []));\n /**\n * @ignore\n */\n this.choosenHandler = undefined;\n /**\n * @ignore\n */\n this.sliderElement = null;\n /**\n * @ignore\n */\n this.AXRangeSliderHighlight = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n height: this.isDual() ? this.calculatePos()[1] - this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHighlight\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler1 = computed(() => this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler1\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderHandler2 = computed(() => this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderHandler2\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeSliderStep\" }] : []));\n /**\n * @ignore\n */\n this.AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n }\n else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n }, ...(ngDevMode ? [{ debugName: \"AXRangeLabel\" }] : []));\n this.isUserInteraction = false;\n effect(() => {\n this.commitValue(this.values(), this.isUserInteraction);\n this.isUserInteraction = false;\n });\n effect(() => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n }\n else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n });\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n super.ngOnDestroy();\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('mousemove', this.moveListener);\n window.removeEventListener('mouseup', this.endListener);\n window.removeEventListener('touchmove', this.moveListener);\n window.removeEventListener('touchend', this.endListener);\n }\n }\n /**\n * @ignore\n */\n onStartHandler(event, circle) {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax())\n return;\n event.preventDefault();\n this.sliderElement = event.target.closest('.ax-range-slider');\n if (this.sliderElement && isPlatformBrowser(this.platformID)) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n [this.moveListener, this.endListener] = [moveListener, endListener];\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n onStartBar(event) {\n this.isUserInteraction = true;\n let circle = 'first';\n this.sliderElement = event.target.closest('.ax-range-slider');\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || this.readonly)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n const exactValue = this.getValueFromPercent(calculatePercent);\n let value = Number.parseFloat(exactValue.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (Math.abs(exactValue - this.values()[0]) > Math.abs(exactValue - this.values()[1])) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n if (this.values()[1] === this.min()) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n }\n else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n }\n }\n else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n onMove(event, circle) {\n this.isUserInteraction = true;\n if (!this.sliderElement)\n return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value <= this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n }\n else if (circle === 'second' && value >= this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n }\n else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n onEnd(moveListener, endListener) {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values())) {\n this.values.set(this.min());\n }\n else if (typeof this.values() !== 'number' && !this.checkValues(this.values()[0], 'first', this.values()[1])) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n }\n else {\n this.values.update((old) => this.roundToStep(old));\n }\n }\n }\n /**\n * @ignore\n */\n fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n }\n else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n calculatePercentOnMove(event) {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n }\n else {\n const clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n }\n else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n /**\n * @ignore\n */\n roundToStep(value) {\n const lower = Math.max(this.min(), Math.floor((value - this.min()) / this.step()) * this.step() + this.min());\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n }\n else {\n return upper;\n }\n }\n /**\n * @ignore\n */\n checkValue(x) {\n if (x >= this.min() && x <= this.max())\n return true;\n else\n return false;\n }\n /**\n * @ignore\n */\n checkValues(value1, y, value2) {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 <= value2 && value2 <= this.max())\n return true;\n else\n return false;\n }\n else {\n if (value1 >= value2 && value2 >= this.min())\n return true;\n else\n return false;\n }\n }\n else\n return false;\n }\n /**\n * @ignore\n */\n getValueFromPercent(value) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n getPercantage(value) {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n increaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n }\n else {\n const newValue = this.roundToStep(this.values() + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n }\n else {\n const newValue = this.roundToStep(this.values() - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n onWheel(event) {\n this.isUserInteraction = true;\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax())\n return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] + this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values()[0] !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] + this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] + this.step())]);\n }\n }\n }\n else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep(this.values()[0] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) && this.values() !== newValue) {\n this.values.update((old) => [this.roundToStep(old[0] - this.step()), old[1]]);\n }\n }\n else {\n newValue = this.roundToStep(this.values()[1] - this.step());\n if (this.checkValues(newValue, this.choosenHandler, this.values()[0]) && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep(old[1] - this.step())]);\n }\n }\n }\n }\n else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep(this.values() + this.step()))) {\n this.values.update((old) => this.roundToStep(old + this.step()));\n }\n }\n else {\n if (this.checkValue(this.roundToStep(this.values() - this.step()))) {\n this.values.update((old) => this.roundToStep(old - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXRangeSliderComponent, isStandalone: true, selector: \"ax-range-slider\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: \"orientation\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: \"values\", publicName: \"values\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: \"step\", publicName: \"step\", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: \"snap\", publicName: \"snap\", isSignal: true, isRequired: false, transformFunction: null }, tooltipMode: { classPropertyName: \"tooltipMode\", publicName: \"tooltipMode\", isSignal: true, isRequired: false, transformFunction: null }, snapMode: { classPropertyName: \"snapMode\", publicName: \"snapMode\", isSignal: true, isRequired: false, transformFunction: null }, hasStep: { classPropertyName: \"hasStep\", publicName: \"hasStep\", isSignal: true, isRequired: false, transformFunction: null }, hasSnap: { classPropertyName: \"hasSnap\", publicName: \"hasSnap\", isSignal: true, isRequired: false, transformFunction: null }, hasLable: { classPropertyName: \"hasLable\", publicName: \"hasLable\", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: \"hasTooltip\", publicName: \"hasTooltip\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { values: \"valuesChange\" }, host: { listeners: { \"wheel\": \"onWheel($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], usesInheritance: true, ngImport: i0, template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"], dependencies: [{ kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-range-slider', inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXRangeSliderComponent },\n ], imports: [NgStyle], template: \"@if (correctMinMax()) {\\n <div class=\\\"ax-range-slider\\\" [class]=\\\"'ax-orientation-' + orientation()\\\">\\n <div class=\\\"ax-range-slider-bar\\\" (mousedown)=\\\"onStartBar($event)\\\" (touchstart)=\\\"onStartBar($event)\\\"></div>\\n <div\\n class=\\\"ax-range-slider-highlight\\\"\\n [ngStyle]=\\\"AXRangeSliderHighlight()\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n ></div>\\n\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler1()\\\"\\n name=\\\"first\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ isDual() ? values()[0] : values() }}</div>\\n }\\n </div>\\n\\n @if (isDual()) {\\n <div\\n class=\\\"ax-range-slider-handler\\\"\\n [ngStyle]=\\\"AXRangeSliderHandler2()\\\"\\n name=\\\"second\\\"\\n (mousedown)=\\\"onStartBar($event)\\\"\\n (touchstart)=\\\"onStartBar($event)\\\"\\n >\\n @if (hasTooltip()) {\\n <div class=\\\"ax-range-slider-tooltip\\\">{{ values()[1] }}</div>\\n }\\n </div>\\n }\\n @if (hasSnap()) {\\n <div class=\\\"ax-range-slider-step\\\" [ngStyle]=\\\"AXRangeSliderStep()\\\">\\n @for (item of calculateSnapBar(); track $index) {\\n <div\\n class=\\\"ax-range-slider-steps\\\"\\n [ngStyle]=\\\"isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\\\"\\n >\\n @if (hasLable()) {\\n <div class=\\\"ax-range-slider-label\\\" [ngStyle]=\\\"AXRangeLabel()\\\">\\n {{ item + min() }}\\n </div>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"ax-range-slider{--ax-comp-range-slider-size: .25rem;--ax-comp-range-slider-ring-size: .6rem}ax-range-slider{--ax-comp-range-slider-ring-color: var(--ax-comp-range-slider-color), .25}ax-range-slider.ax-primary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-primary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-primary-surface)}ax-range-slider.ax-secondary-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-secondary-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-secondary-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-secondary-surface)}ax-range-slider.ax-success-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-success-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-success-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-success-surface)}ax-range-slider.ax-warning-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-warning-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-warning-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-warning-surface)}ax-range-slider.ax-danger-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-danger-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-danger-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-danger-surface)}ax-range-slider.ax-accent1-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent1-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent1-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent1-surface)}ax-range-slider.ax-accent2-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent2-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent2-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent2-surface)}ax-range-slider.ax-accent3-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent3-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent3-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent3-surface)}ax-range-slider.ax-accent4-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent4-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent4-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent4-surface)}ax-range-slider.ax-accent5-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent5-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent5-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent5-surface)}ax-range-slider.ax-accent6-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent6-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent6-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent6-surface)}ax-range-slider.ax-accent7-solid{--ax-comp-range-slider-line-color: var(--ax-sys-color-accent7-lighter-surface);--ax-comp-range-slider-color: var(--ax-sys-color-accent7-surface);--ax-comp-range-slider-tooltip-text-color: var(--ax-sys-color-on-accent7-surface)}ax-range-slider{display:flex;align-items:center;justify-content:center;padding:1rem;font-size:small;-webkit-user-select:none;user-select:none}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-comp-range-slider-size) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-comp-range-slider-bar-height, var(--ax-comp-range-slider-size));transform:translateY(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translateY(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));height:var(--ax-comp-range-slider-handler-size, calc(var(--ax-comp-range-slider-size) * 6));z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-45%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover,ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:0 0 0 calc(var(--ax-comp-range-slider-ring-size)) rgba(var(--ax-comp-range-slider-ring-color))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-comp-range-slider-size) * 2.8);top:calc(var(--ax-comp-range-slider-size) * -2);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;white-space:nowrap;font-weight:600;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:1.75rem;left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgba(var(--ax-comp-range-slider-color)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-comp-range-slider-size) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-comp-range-slider-size) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-comp-range-slider-size);height:100.1%;transform:translate(-50%);z-index:5;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-line-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 3 / 2);transform:translate(-50%);z-index:6;border-radius:9999rem;background-color:rgba(var(--ax-comp-range-slider-color));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-comp-range-slider-size) * 6);height:calc(var(--ax-comp-range-slider-size) * 6);z-index:10;background-color:rgba(var(--ax-comp-range-slider-color));border-radius:50%;cursor:pointer;transform:translate(-50%,-55%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-comp-range-slider-color),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-comp-range-slider-size) * 8.5);left:calc(var(--ax-comp-range-slider-size) * -8);background-color:rgba(var(--ax-comp-range-slider-color));color:rgba(var(--ax-comp-range-slider-tooltip-text-color));padding:5px 10px;border-radius:3px;font-weight:600;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\\\"\\\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgba(var(--ax-comp-range-slider-color))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:4}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-comp-range-slider-size) / 2) solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-comp-range-slider-size) * -3)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { onWheel: [{\n type: HostListener,\n args: ['wheel', ['$event']]\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBR1gsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBUW5DOzs7Ozs7O0dBT0c7QUFtQkgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLGdCQUFvQyxDQUFBLENBQUM7SUF3UXZGO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF4UUYsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQ7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFnQixZQUFZLHVEQUFDLENBQUM7UUFFMUQ7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QUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7OEdBem1CVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvcUVBWHRCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1NBQzlELGlEQ3ZESCx1dURBcURBLGczUkRHWSxPQUFPOzsyRkFFTixzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNFLGlCQUFpQixVQUduQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsaUJBQ2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3FCQUM5RCxXQUNRLENBQUMsT0FBTyxDQUFDO3dEQW1qQmxCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbURyQixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhPcmllbnRhdGlvbixcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBOZ1pvbmUsXG4gIFBMQVRGT1JNX0lELFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWFJhbmdlU2xpZGVyTW9kZSxcbiAgQVhSYW5nZVNsaWRlclNuYXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJWYWx1ZSxcbn0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY2xhc3MnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSByYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcywgc3VwcG9ydGluZyBib3RoIHNpbmdsZSBhbmQgZHVhbCBtb2Rlcy5cbiAqIFRoZSBzbGlkZXIgb2ZmZXJzIHN0ZXAsIHNuYXAsIGFuZCB0b29sdGlwIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YXgtcmFuZ2Utc2xpZGVyIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgW3N0ZXBdPVwiMVwiIFttb2RlXT1cIidkdWFsJ1wiPjwvYXgtcmFuZ2Utc2xpZGVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1yYW5nZS1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSYW5nZVNsaWRlckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtOZ1N0eWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlckNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxBWFJhbmdlU2xpZGVyVmFsdWU+KSB7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHNsaWRlciwgZWl0aGVyICdob3Jpem9udGFsJyBvciAndmVydGljYWwnLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ2hvcml6b250YWwnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbG9yIHRoZW1lIGZvciB0aGUgc2xpZGVyLCBhZmZlY3RpbmcgaGlnaGxpZ2h0LCB0b29sdGlwLCBhbmQgaGFuZGxlci5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PEV4Y2x1ZGU8QVhTdHlsZUNvbG9yVHlwZSwgJ2RlZmF1bHQnPj4oJ3ByaW1hcnknKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB2YWx1ZShzKSBvZiB0aGUgc2xpZGVyLiBDYW4gYmUgYSBzaW5nbGUgbnVtYmVyIGZvciBzaW5nbGUgbW9kZSBvciBhbiBhcnJheSBvZiB0d28gbnVtYmVycyBmb3IgZHVhbCBtb2RlLlxuICAgKi9cbiAgdmFsdWVzID0gbW9kZWw8QVhSYW5nZVNsaWRlclZhbHVlPih0aGlzLnZhbHVlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtb2RlIG9mIHRoZSBzbGlkZXIsIGVpdGhlciAnc2luZ2xlJyBvciAnZHVhbCcuXG4gICAqIEBkZWZhdWx0ICdzaW5nbGUnXG4gICAqL1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlck1vZGU+KCdzaW5nbGUnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBzbGlkZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlcj4oMCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oMTAwKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzdGVwIGluY3JlbWVudCBmb3IgdmFsdWUgY2hhbmdlcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc3RlcCA9IGlucHV0PG51bWJlcj4oMSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc25hcHBpbmcgaW5jcmVtZW50IGZvciB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBzbmFwID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vZGUgZm9yIGRpc3BsYXlpbmcgdG9vbHRpcHMsIGNhbiBiZSBhdCB0aGUgc3RhcnQsIGVuZCwgb3IgYm90aC5cbiAgICogQGRlZmF1bHQgJ2VuZCdcbiAgICovXG4gIHJlYWRvbmx5IHRvb2x0aXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclRvb2x0aXBNb2RlPignZW5kJyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb2RlIGZvciBzbmFwcGluZywgY2FuIHNuYXAgYXQgdGhlIHN0YXJ0LCBlbmQsIG9yIGJvdGguXG4gICAqIEBkZWZhdWx0ICdzdGFydCdcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBNb2RlID0gaW5wdXQ8QVhSYW5nZVNsaWRlclNuYXBNb2RlPignc3RhcnQnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgaGF2ZSBzdGVwcy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU3RlcCA9IGlucHV0KHRydWUpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgc2xpZGVyIHNob3VsZCBkaXNwbGF5IHNuYXBwaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaGFzU25hcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSBsYWJlbHMgZm9yIHNuYXBwaW5nIHBvaW50cy5cbiAgICogQGRlZmF1bHQgVmFsdWUgZGVyaXZlZCBmcm9tIGBoYXNTbmFwKClgXG4gICAqL1xuICByZWFkb25seSBoYXNMYWJsZSA9IGlucHV0KHRoaXMuaGFzU25hcCgpKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSB0b29sdGlwcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGhhc1Rvb2x0aXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGhlaWdodCA9IDAuMjU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZXdIZWlnaHQgPSAndmFyKC0tYXgtY29tcC1yYW5nZS1zbGlkZXItc2l6ZSknO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0hvcml6b250YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvcnJlY3RNaW5NYXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSA+IDApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlU25hcEJhciA9IGNvbXB1dGVkPG51bWJlcltdIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgaWYgKHRoaXMuc25hcCgpIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV3JvbmcgU25hcCEnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1pbigpOyBpIDwgdGhpcy5tYXgoKTsgaSArPSB0aGlzLnNuYXAoKSkge1xuICAgICAgICBhcnJheS5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBbLi4uYXJyYXksIHRoaXMubWF4KCldO1xuICAgICAgaWYgKGFycmF5WzBdIDwgMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSArIC1hcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5WzBdID4gMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSAtIGFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMjApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUb28gbWFueSBzbmFwIHBvaW50cyAoJHthcnJheS5sZW5ndGh9KS4gTWF4IGFsbG93ZWQgaXMgMjAuYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlUG9zID0gY29tcHV0ZWQ8QVhSYW5nZVNsaWRlclZhbHVlPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkgJiYgdGhpcy52YWx1ZXMoKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgKCh0aGlzLnZhbHVlcygpWzBdIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwLFxuICAgICAgICAoKHRoaXMudmFsdWVzKClbMV0gLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAsXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwO1xuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNob29zZW5IYW5kbGVyOiAnZmlyc3QnIHwgJ3NlY29uZCcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNsaWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhpZ2hsaWdodCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiAnMCUnLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdIC0gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6IHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJScsXG4gICAgICAgICAgYm90dG9tOiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIxID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikgKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJ1xuICAgICAgICAgICAgOiAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGFuZGxlcjIgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IC02ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCksIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb3JyZWN0TWluTWF4KCkpIHtcbiAgICAgICAgdGhpcy5maXhJbml0aWFsaXplVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZml4Q2hhbmdpbmdNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZT8udmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlPy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVzKCkgIT09IHZhbHVlLnZhbHVlKVxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW92ZUxpc3RlbmVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5tb3ZlTGlzdGVuZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5lbmRMaXN0ZW5lcik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgbW92ZUxpc3RlbmVyO1xuICBwcml2YXRlIGVuZExpc3RlbmVyO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uU3RhcnRIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNsaWRlckVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuYXgtcmFuZ2Utc2xpZGVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5zbGlkZXJFbGVtZW50ICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICBbdGhpcy5tb3ZlTGlzdGVuZXIsIHRoaXMuZW5kTGlzdGVuZXJdID0gW21vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXJdO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEJhcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGxldCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyA9ICdmaXJzdCc7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LXJhbmdlLXNsaWRlcicpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2xpZGVyRWxlbWVudCB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgICAgY29uc3QgZXhhY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUGVyY2VudChjYWxjdWxhdGVQZXJjZW50KTtcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGV4YWN0VmFsdWUudG9GaXhlZCgyKSk7XG4gICAgICBpZiAodGhpcy5oYXNTdGVwKCkpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVswXSkgPiBNYXRoLmFicyhleGFjdFZhbHVlIC0gdGhpcy52YWx1ZXMoKVsxXSkpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIHZhbHVlXSk7XG4gICAgICAgICAgY2lyY2xlID0gJ3NlY29uZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudmFsdWVzKClbMV0gPT09IHRoaXMubWluKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgICAgICAgICBjaXJjbGUgPSAnZmlyc3QnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uU3RhcnRIYW5kbGVyKGV2ZW50LCBjaXJjbGUpO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Nb3ZlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudCA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudCk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgyKSk7XG4gICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0JyAmJiB2YWx1ZSA8PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaXJjbGUgPT09ICdzZWNvbmQnICYmIHZhbHVlID49IHRoaXMudmFsdWVzKClbMF0gJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXModmFsdWUsICdzZWNvbmQnLCB0aGlzLnZhbHVlcygpWzBdKSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHZhbHVlKSAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRW5kKG1vdmVMaXN0ZW5lcjogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZCwgZW5kTGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVuZExpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmRMaXN0ZW5lcik7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gbnVsbDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKClbMF0gPiB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMV0sIHRoaXMudmFsdWVzKClbMF1dKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpID09PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgIT09ICdudW1iZXInICYmICF0aGlzLmNoZWNrVmFsdWVzKHRoaXMudmFsdWVzKClbMF0sICdmaXJzdCcsIHRoaXMudmFsdWVzKClbMV0pKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAob2xkWzBdKSwgdGhpcy5yb3VuZFRvU3RlcChvbGRbMV0pXSk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdID09PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKSArIHRoaXMuc3RlcCgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiYgIXRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHBlcmNlbnQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgY29uc3QgeCA9IGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQ7XG4gICAgICBwZXJjZW50ID0gKHggLyBzbGlkZXJSZWN0LndpZHRoKSAqIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpZW50WSA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFkgOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgY29uc3QgeSA9IC0oY2xpZW50WSAtIHNsaWRlclJlY3QuYm90dG9tKTsgLy9yZXZlcmNlIHNsaWRlciBmcm9tIGJvdHRvbSB0byB0b3BcbiAgICAgIHBlcmNlbnQgPSAoeSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICB9XG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxMDApIHtcbiAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgfVxuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcm91bmRUb1N0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbG93ZXIgPSBNYXRoLm1heCh0aGlzLm1pbigpLCBNYXRoLmZsb29yKCh2YWx1ZSAtIHRoaXMubWluKCkpIC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCkgKyB0aGlzLm1pbigpKTtcbiAgICBjb25zdCB1cHBlciA9IE1hdGgubWluKHRoaXMubWF4KCksIGxvd2VyICsgdGhpcy5zdGVwKCkpO1xuICAgIGlmICh2YWx1ZSAtIGxvd2VyIDwgdXBwZXIgLSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGxvd2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdXBwZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZSh4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoeCA+PSB0aGlzLm1pbigpICYmIHggPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWx1ZXModmFsdWUxOiBudW1iZXIsIHk6ICdmaXJzdCcgfCAnc2Vjb25kJywgdmFsdWUyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUxID49IHRoaXMubWluKCkgJiYgdmFsdWUxIDw9IHRoaXMubWF4KCkpIHtcbiAgICAgIGlmICh5ID09PSAnZmlyc3QnKSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gdmFsdWUyICYmIHZhbHVlMiA8PSB0aGlzLm1heCgpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsdWUxID49IHZhbHVlMiAmJiB2YWx1ZTIgPj0gdGhpcy5taW4oKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZUZyb21QZXJjZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5taW4oKSArICh2YWx1ZSAqICh0aGlzLm1heCgpIC0gdGhpcy5taW4oKSkpIC8gMTAwO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0UGVyY2FudGFnZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSgpICE9PSAwID8gKHZhbHVlIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCA6IDA7XG4gIH1cbiAgLyoqXG4gICAqIEluY3JlYXNlIGEgc3RlcCB0byB2YWx1ZSBpZiBzbGlkZXIgaW4gc2luZ2xlIG1vZGVcbiAgICogYW5kIGluY3JlYXNlIGEgc3RlcCB0aGUgc2Vjb25kIHZhbHVlIGlmIHNsaWRlciBpbiBkdWFsIG1vZGVcbiAgICogQG1ldGhvZCBpbmNyZWFzZVN0ZXBcbiAgICovXG4gIHB1YmxpYyBpbmNyZWFzZVN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCh0aGlzLnZhbHVlcygpWzFdICsgdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCBuZXdWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBEZWNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBkZWNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgZGVjcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgZGVjcmVhc2VTdGVwKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVswXSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbbmV3VmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2hlZWwnLCBbJyRldmVudCddKVxuICBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICghdGhpcy5jaG9vc2VuSGFuZGxlciB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY29ycmVjdE1pbk1heCgpKSByZXR1cm47XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgICAgIGlmICh0aGlzLmNob29zZW5IYW5kbGVyID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMF0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAoKG9sZFswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpLCBvbGRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPD0gdGhpcy5tYXgoKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmIHRoaXMudmFsdWVzKCkgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcCgob2xkWzBdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSksIG9sZFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzBdKSAmJiB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW29sZFswXSwgdGhpcy5yb3VuZFRvU3RlcCgob2xkWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5yb3VuZFRvU3RlcCgob2xkIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKChvbGQgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGBheC0ke3RoaXMuY29sb3IoKX0tc29saWRgLFxuICAgICAgYCR7dGhpcy5kaXNhYmxlZCA/ICdheC1zdGF0ZS1kaXNhYmxlZCcgOiAnJ31gLFxuICAgICAgYCR7dGhpcy5yZWFkb25seSA/ICdheC1zdGF0ZS1yZWFkb25seScgOiAnJ31gLFxuICAgIF07XG4gIH1cbn1cbiIsIkBpZiAoY29ycmVjdE1pbk1heCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXJcIiBbY2xhc3NdPVwiJ2F4LW9yaWVudGF0aW9uLScgKyBvcmllbnRhdGlvbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1iYXJcIiAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhpZ2hsaWdodFwiXG4gICAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGlnaGxpZ2h0KClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMSgpXCJcbiAgICAgIG5hbWU9XCJmaXJzdFwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgID5cbiAgICAgIEBpZiAoaGFzVG9vbHRpcCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IGlzRHVhbCgpID8gdmFsdWVzKClbMF0gOiB2YWx1ZXMoKSB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0R1YWwoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhhbmRsZXIyKClcIlxuICAgICAgICBuYW1lPVwic2Vjb25kXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItdG9vbHRpcFwiPnt7IHZhbHVlcygpWzFdIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGhhc1NuYXAoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1zdGVwXCIgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlclN0ZXAoKVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGNhbGN1bGF0ZVNuYXBCYXIoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItc3RlcHNcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiaXNIb3Jpem9udGFsKCkgPyB7IGxlZnQ6IGdldFBlcmNhbnRhZ2UoaXRlbSkgKyAnJScgfSA6IHsgYm90dG9tOiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaGFzTGFibGUoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWxhYmVsXCIgW25nU3R5bGVdPVwiQVhSYW5nZUxhYmVsKClcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtICsgbWluKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\nimport * as i0 from \"@angular/core\";\nexport class AXRangeSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule, AXRangeSliderComponent], exports: [AXRangeSliderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXRangeSliderComponent],\n exports: [AXRangeSliderComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9saWIvcmFuZ2Utc2xpZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNbEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIcEIsWUFBWSxFQUFFLHNCQUFzQixhQUNwQyxzQkFBc0I7K0dBRXJCLG1CQUFtQixZQUhwQixZQUFZOzsyRkFHWCxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcmFuZ2Utc2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fjb3JleC1jb21wb25lbnRzLXJhbmdlLXNsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|