@snabcentr/client-ui 4.14.1 → 4.14.3

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.
@@ -1,8 +1,11 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, inject, input, signal, viewChildren } from '@angular/core';
1
+ import { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, inject, Injector, input, signal, viewChildren, } from '@angular/core';
2
+ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
2
3
  import { ActivatedRoute } from '@angular/router';
3
4
  import { IS_SERVER } from '@snabcentr/client-core';
5
+ import { tuiIsPresent } from '@taiga-ui/cdk';
4
6
  import { TUI_BUTTON_DEFAULT_OPTIONS, TUI_BUTTON_OPTIONS, TuiLoader } from '@taiga-ui/core';
5
7
  import { TuiAccordion } from '@taiga-ui/experimental';
8
+ import { animationFrames, combineLatest, filter, fromEvent, map, merge, take, takeUntil } from 'rxjs';
6
9
  import { ScShareButtonComponent } from '../../share';
7
10
  import { scGetFaqQuestionAnchor, scGetFaqQuestionIdFromAnchor } from './sc-faq-question-anchor';
8
11
  import * as i0 from "@angular/core";
@@ -14,8 +17,6 @@ import * as i2 from "@taiga-ui/experimental/components/expand";
14
17
  export class ScFrequentlyAskedQuestionsComponent {
15
18
  /**
16
19
  * Инициализирует экземпляр класса {@link ScFrequentlyAskedQuestionsComponent}.
17
- *
18
- * Вопрос из якоря адреса раскрывается, а после отрисовки списка к нему выполняется прокрутка (в браузере).
19
20
  */
20
21
  constructor() {
21
22
  /**
@@ -26,6 +27,14 @@ export class ScFrequentlyAskedQuestionsComponent {
26
27
  * {@link InputSignal} отображения загрузки.
27
28
  */
28
29
  this.showLoading = input(false);
30
+ /**
31
+ * {@link InputSignal} параметров прокрутки к вопросу из якоря.
32
+ */
33
+ this.scrollOptions = input({ behavior: 'instant', block: 'center' });
34
+ /**
35
+ * {@link InputSignal} количества кадров удержания вопроса из якоря в поле зрения (около 5 секунд).
36
+ */
37
+ this.scrollHoldFrames = input(300);
29
38
  /**
30
39
  * Признак, что приложение запущено на сервере.
31
40
  */
@@ -42,20 +51,37 @@ export class ScFrequentlyAskedQuestionsComponent {
42
51
  * Активный маршрут.
43
52
  */
44
53
  this.route = inject(ActivatedRoute);
54
+ /**
55
+ * Инжектор компонента.
56
+ */
57
+ this.injector = inject(Injector);
58
+ /**
59
+ * Ссылка на уничтожение компонента.
60
+ */
61
+ this.destroyRef = inject(DestroyRef);
45
62
  /**
46
63
  * {@link Signal} ссылок на заголовки вопросов.
47
64
  */
48
65
  this.questionHeaders = viewChildren('questionHeader');
49
- const questionId = scGetFaqQuestionIdFromAnchor(this.route.snapshot.fragment);
50
- if (questionId === null) {
66
+ // На сервере все вопросы раскрыты.
67
+ if (this.isServer) {
51
68
  return;
52
69
  }
53
- this.onOpenedChange(questionId, true);
54
- if (!this.isServer) {
70
+ // Раскрываем вопрос из якоря и прокручиваем к нему: якорь может смениться на открытой странице, список загрузиться позже.
71
+ combineLatest([this.route.fragment, toObservable(this.items)])
72
+ .pipe(map(([fragment, items]) => {
73
+ const questionId = scGetFaqQuestionIdFromAnchor(fragment);
74
+ return questionId !== null && items.some((item) => item.id === questionId) ? questionId : null;
75
+ }), filter(tuiIsPresent), takeUntilDestroyed())
76
+ .subscribe((questionId) => {
77
+ this.onOpenedChange(questionId, true);
55
78
  afterNextRender(() => {
56
- this.getQuestionHeader(questionId)?.scrollIntoView({ behavior: 'smooth', block: 'center' });
57
- });
58
- }
79
+ const header = this.getQuestionHeader(questionId);
80
+ if (header) {
81
+ this.scrollToHeader(header);
82
+ }
83
+ }, { injector: this.injector });
84
+ });
59
85
  }
60
86
  /**
61
87
  * Возвращает параметры формирования ссылки на вопрос: текущая страница с её query-параметрами и якорем вопроса.
@@ -96,8 +122,27 @@ export class ScFrequentlyAskedQuestionsComponent {
96
122
  const anchor = scGetFaqQuestionAnchor(questionId);
97
123
  return this.questionHeaders().find((header) => header.nativeElement.id === anchor)?.nativeElement;
98
124
  }
125
+ /**
126
+ * Прокручивает страницу к заголовку вопроса и удерживает его в поле зрения.
127
+ *
128
+ * @param header Элемент заголовка вопроса.
129
+ */
130
+ scrollToHeader(header) {
131
+ const getTop = () => Math.round(header.getBoundingClientRect().top);
132
+ const userScroll$ = merge(fromEvent(globalThis, 'wheel'), fromEvent(globalThis, 'touchstart'), fromEvent(globalThis, 'keydown'), fromEvent(globalThis, 'mousedown'));
133
+ // Мгновенно: плавная прокрутка не выполняется в скрытой вкладке.
134
+ header.scrollIntoView(this.scrollOptions());
135
+ let expectedTop = getTop();
136
+ // Повторяем прокрутку, если вопрос сдвинула догрузка страницы или чужая прокрутка, пока пользователь не начнёт прокручивать сам.
137
+ animationFrames()
138
+ .pipe(take(this.scrollHoldFrames()), map(getTop), filter((top) => top !== expectedTop), takeUntilDestroyed(this.destroyRef), takeUntil(userScroll$))
139
+ .subscribe(() => {
140
+ header.scrollIntoView(this.scrollOptions());
141
+ expectedTop = getTop();
142
+ });
143
+ }
99
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScFrequentlyAskedQuestionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
100
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScFrequentlyAskedQuestionsComponent, isStandalone: true, selector: "sc-frequently-asked-questions", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, showLoading: { classPropertyName: "showLoading", publicName: "showLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScFrequentlyAskedQuestionsComponent, isStandalone: true, selector: "sc-frequently-asked-questions", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, showLoading: { classPropertyName: "showLoading", publicName: "showLoading", isSignal: true, isRequired: false, transformFunction: null }, scrollOptions: { classPropertyName: "scrollOptions", publicName: "scrollOptions", isSignal: true, isRequired: false, transformFunction: null }, scrollHoldFrames: { classPropertyName: "scrollHoldFrames", publicName: "scrollHoldFrames", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [
101
146
  {
102
147
  provide: TUI_BUTTON_OPTIONS,
103
148
  useValue: {
@@ -119,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
119
164
  },
120
165
  ], host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader\n [showLoader]=\"showLoading()\"\n [overlay]=\"true\"\n>\n <tui-accordion\n class=\"accordion\"\n [closeOthers]=\"false\"\n >\n @for (item of items(); track item.id) {\n @let anchor = getAnchor(item.id);\n\n <button\n #questionHeader\n [id]=\"anchor\"\n [tuiAccordion]=\"isServer || openedIds().has(item.id)\"\n (tuiAccordionChange)=\"onOpenedChange(item.id, $event)\"\n class=\"!whitespace-normal !text-body-m-bold\"\n >\n <span class=\"grow\">{{ item.question }}</span>\n <sc-share-button\n appearance=\"flat\"\n size=\"s\"\n class=\"shrink-0\"\n [title]=\"item.question\"\n [routerPath]=\"[]\"\n [routerCreationOptions]=\"getShareLinkOptions(item.id)\"\n (click)=\"$event.stopPropagation()\"\n />\n </button>\n <tui-expand>\n <div [innerHTML]=\"item.answer\"></div>\n </tui-expand>\n }\n </tui-accordion>\n</tui-loader>\n", styles: [".accordion{border-radius:0}.accordion,.accordion[data-size=s],.accordion[data-size=m],.accordion[data-size=l],.accordion .tui-list{font:inherit}.accordion [tuiAccordion]{border-block:1px solid var(--tui-border-normal);border-block-end-color:#fff!important;font-weight:400;border-color:var(--tui-border-normal);mask:none;block-size:auto;padding-block:.5rem;min-block-size:var(--t-size)}.accordion [tuiAccordion]._open{border-block-end-color:var(--tui-border-normal)!important}.accordion tui-expand,.accordion [tuiAccordion]{box-shadow:none;white-space:normal}\n"] }]
121
166
  }], ctorParameters: () => [] });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUF1QixNQUFNLEVBQUUsWUFBWSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMxSyxPQUFPLEVBQUUsY0FBYyxFQUFzQixNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUVoRzs7R0FFRztBQW1CSCxNQUFNLE9BQU8sbUNBQW1DO0lBb0M1Qzs7OztPQUlHO0lBQ0g7UUF4Q0E7O1dBRUc7UUFDYSxVQUFLLEdBQTZCLEtBQUssQ0FBQyxRQUFRLEVBQWUsQ0FBQztRQUVoRjs7V0FFRztRQUNhLGdCQUFXLEdBQXlCLEtBQUssQ0FBVSxLQUFLLENB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RUFBRSxNQUFNLEVBQUUsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBTaWduYWwsIHNpZ25hbCwgdmlld0NoaWxkcmVuLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFVybENyZWF0aW9uT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJU19TRVJWRVIsIFNjRmFxSXRlbSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVFVJX0JVVFRPTl9ERUZBVUxUX09QVElPTlMsIFRVSV9CVVRUT05fT1BUSU9OUywgVHVpTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQWNjb3JkaW9uIH0gZnJvbSAnQHRhaWdhLXVpL2V4cGVyaW1lbnRhbCc7XG5cbmltcG9ydCB7IFNjU2hhcmVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZSc7XG5pbXBvcnQgeyBzY0dldEZhcVF1ZXN0aW9uQW5jaG9yLCBzY0dldEZhcVF1ZXN0aW9uSWRGcm9tQW5jaG9yIH0gZnJvbSAnLi9zYy1mYXEtcXVlc3Rpb24tYW5jaG9yJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy5jb21wb25lbnQuc2NzcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHVpQWNjb3JkaW9uLCBUdWlMb2FkZXIsIFNjU2hhcmVCdXR0b25Db21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfQlVUVE9OX09QVElPTlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIC4uLlRVSV9CVVRUT05fREVGQVVMVF9PUFRJT05TLFxuICAgICAgICAgICAgICAgIHNpemU6ICdsJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INGB0L/QuNGB0LrQsCDQs9GA0YPQv9C/0Ysg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpdGVtczogSW5wdXRTaWduYWw8U2NGYXFJdGVtW10+ID0gaW5wdXQucmVxdWlyZWQ8U2NGYXFJdGVtW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LfQsNCz0YDRg9C30LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2hvd0xvYWRpbmc6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQv9GA0LjQu9C+0LbQtdC90LjQtSDQt9Cw0L/Rg9GJ0LXQvdC+INC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU2VydmVyOiBSZWFkb25seTxib29sZWFuPiA9IGluamVjdDxib29sZWFuPihJU19TRVJWRVIpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFdyaXRhYmxlU2lnbmFsfSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC+0LIg0YDQsNGB0LrRgNGL0YLRi9GFINCy0L7Qv9GA0L7RgdC+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZElkczogV3JpdGFibGVTaWduYWw8U2V0PG51bWJlcj4+ID0gc2lnbmFsKG5ldyBTZXQ8bnVtYmVyPigpKTtcblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGP0LrQvtGA0Ywg0YHRgdGL0LvQutC4INC90LAg0LLQvtC/0YDQvtGBLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBnZXRBbmNob3I6IChxdWVzdGlvbklkOiBudW1iZXIpID0+IHN0cmluZyA9IHNjR2V0RmFxUXVlc3Rpb25BbmNob3I7XG5cbiAgICAvKipcbiAgICAgKiDQkNC60YLQuNCy0L3Ri9C5INC80LDRgNGI0YDRg9GCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTaWduYWx9INGB0YHRi9C70L7QuiDQvdCwINC30LDQs9C+0LvQvtCy0LrQuCDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVlc3Rpb25IZWFkZXJzOiBTaWduYWw8UmVhZG9ubHlBcnJheTxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4+ID0gdmlld0NoaWxkcmVuPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PigncXVlc3Rpb25IZWFkZXInKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNDb21wb25lbnR9LlxuICAgICAqXG4gICAgICog0JLQvtC/0YDQvtGBINC40Lcg0Y/QutC+0YDRjyDQsNC00YDQtdGB0LAg0YDQsNGB0LrRgNGL0LLQsNC10YLRgdGPLCDQsCDQv9C+0YHQu9C1INC+0YLRgNC40YHQvtCy0LrQuCDRgdC/0LjRgdC60LAg0Log0L3QtdC80YMg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQv9GA0L7QutGA0YPRgtC60LAgKNCyINCx0YDQsNGD0LfQtdGA0LUpLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25JZCA9IHNjR2V0RmFxUXVlc3Rpb25JZEZyb21BbmNob3IodGhpcy5yb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCk7XG5cbiAgICAgICAgaWYgKHF1ZXN0aW9uSWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25PcGVuZWRDaGFuZ2UocXVlc3Rpb25JZCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzU2VydmVyKSB7XG4gICAgICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25IZWFkZXIocXVlc3Rpb25JZCk/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0LDRgNCw0LzQtdGC0YDRiyDRhNC+0YDQvNC40YDQvtCy0LDQvdC40Y8g0YHRgdGL0LvQutC4INC90LAg0LLQvtC/0YDQvtGBOiDRgtC10LrRg9GJ0LDRjyDRgdGC0YDQsNC90LjRhtCwINGBINC10ZEgcXVlcnkt0L/QsNGA0LDQvNC10YLRgNCw0LzQuCDQuCDRj9C60L7RgNC10Lwg0LLQvtC/0YDQvtGB0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcXVlc3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQstC+0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0U2hhcmVMaW5rT3B0aW9ucyhxdWVzdGlvbklkOiBudW1iZXIpOiBVcmxDcmVhdGlvbk9wdGlvbnMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgICBmcmFnbWVudDogc2NHZXRGYXFRdWVzdGlvbkFuY2hvcihxdWVzdGlvbklkKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINGA0LDRgdC60YDRi9GC0LjRjyDQstC+0L/RgNC+0YHQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBxdWVzdGlvbklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCy0L7Qv9GA0L7RgdCwLlxuICAgICAqIEBwYXJhbSBvcGVuZWQg0J/RgNC40LfQvdCw0LosINGH0YLQviDQstC+0L/RgNC+0YEg0YDQsNGB0LrRgNGL0YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uT3BlbmVkQ2hhbmdlKHF1ZXN0aW9uSWQ6IG51bWJlciwgb3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkSWRzLnVwZGF0ZSgoaWRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXh0SWRzID0gbmV3IFNldChpZHMpO1xuXG4gICAgICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgbmV4dElkcy5hZGQocXVlc3Rpb25JZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5leHRJZHMuZGVsZXRlKHF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV4dElkcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0Y3Qu9C10LzQtdC90YIg0LfQsNCz0L7Qu9C+0LLQutCwINCy0L7Qv9GA0L7RgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LLQvtC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRRdWVzdGlvbkhlYWRlcihxdWVzdGlvbklkOiBudW1iZXIpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHNjR2V0RmFxUXVlc3Rpb25BbmNob3IocXVlc3Rpb25JZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25IZWFkZXJzKCkuZmluZCgoaGVhZGVyKSA9PiBoZWFkZXIubmF0aXZlRWxlbWVudC5pZCA9PT0gYW5jaG9yKT8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG59XG4iLCI8dHVpLWxvYWRlclxuICAgIFtzaG93TG9hZGVyXT1cInNob3dMb2FkaW5nKClcIlxuICAgIFtvdmVybGF5XT1cInRydWVcIlxuPlxuICAgIDx0dWktYWNjb3JkaW9uXG4gICAgICAgIGNsYXNzPVwiYWNjb3JkaW9uXCJcbiAgICAgICAgW2Nsb3NlT3RoZXJzXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgQGxldCBhbmNob3IgPSBnZXRBbmNob3IoaXRlbS5pZCk7XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAjcXVlc3Rpb25IZWFkZXJcbiAgICAgICAgICAgICAgICBbaWRdPVwiYW5jaG9yXCJcbiAgICAgICAgICAgICAgICBbdHVpQWNjb3JkaW9uXT1cImlzU2VydmVyIHx8IG9wZW5lZElkcygpLmhhcyhpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgKHR1aUFjY29yZGlvbkNoYW5nZSk9XCJvbk9wZW5lZENoYW5nZShpdGVtLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiF3aGl0ZXNwYWNlLW5vcm1hbCAhdGV4dC1ib2R5LW0tYm9sZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncm93XCI+e3sgaXRlbS5xdWVzdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c2Mtc2hhcmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0ucXVlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyUGF0aF09XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJDcmVhdGlvbk9wdGlvbnNdPVwiZ2V0U2hhcmVMaW5rT3B0aW9ucyhpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDx0dWktZXhwYW5kPlxuICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpdGVtLmFuc3dlclwiPjwvZGl2PlxuICAgICAgICAgICAgPC90dWktZXhwYW5kPlxuICAgICAgICB9XG4gICAgPC90dWktYWNjb3JkaW9uPlxuPC90dWktbG9hZGVyPlxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFDTixZQUFZLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQXNCLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFB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ZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgaW5wdXQsXG4gICAgSW5wdXRTaWduYWwsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgVXJsQ3JlYXRpb25PcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElTX1NFUlZFUiwgU2NGYXFJdGVtIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFRVSV9CVVRUT05fREVGQVVMVF9PUFRJT05TLCBUVUlfQlVUVE9OX09QVElPTlMsIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUFjY29yZGlvbiB9IGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVzLCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZyb21FdmVudCwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjU2hhcmVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZSc7XG5pbXBvcnQgeyBzY0dldEZhcVF1ZXN0aW9uQW5jaG9yLCBzY0dldEZhcVF1ZXN0aW9uSWRGcm9tQW5jaG9yIH0gZnJvbSAnLi9zYy1mYXEtcXVlc3Rpb24tYW5jaG9yJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy5jb21wb25lbnQuc2NzcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHVpQWNjb3JkaW9uLCBUdWlMb2FkZXIsIFNjU2hhcmVCdXR0b25Db21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfQlVUVE9OX09QVElPTlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIC4uLlRVSV9CVVRUT05fREVGQVVMVF9PUFRJT05TLFxuICAgICAgICAgICAgICAgIHNpemU6ICdsJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INGB0L/QuNGB0LrQsCDQs9GA0YPQv9C/0Ysg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpdGVtczogSW5wdXRTaWduYWw8U2NGYXFJdGVtW10+ID0gaW5wdXQucmVxdWlyZWQ8U2NGYXFJdGVtW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LfQsNCz0YDRg9C30LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2hvd0xvYWRpbmc6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIElucHV0U2lnbmFsfSDQv9Cw0YDQsNC80LXRgtGA0L7QsiDQv9GA0L7QutGA0YPRgtC60Lgg0Log0LLQvtC/0YDQvtGB0YMg0LjQtyDRj9C60L7RgNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzY3JvbGxPcHRpb25zOiBJbnB1dFNpZ25hbDxTY3JvbGxJbnRvVmlld09wdGlvbnM+ID0gaW5wdXQ8U2Nyb2xsSW50b1ZpZXdPcHRpb25zPih7IGJlaGF2aW9yOiAnaW5zdGFudCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBJbnB1dFNpZ25hbH0g0LrQvtC70LjRh9C10YHRgtCy0LAg0LrQsNC00YDQvtCyINGD0LTQtdGA0LbQsNC90LjRjyDQstC+0L/RgNC+0YHQsCDQuNC3INGP0LrQvtGA0Y8g0LIg0L/QvtC70LUg0LfRgNC10L3QuNGPICjQvtC60L7Qu9C+IDUg0YHQtdC60YPQvdC0KS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2Nyb2xsSG9sZEZyYW1lczogSW5wdXRTaWduYWw8bnVtYmVyPiA9IGlucHV0PG51bWJlcj4oMzAwKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRidC10L3QviDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1NlcnZlcjogUmVhZG9ubHk8Ym9vbGVhbj4gPSBpbmplY3Q8Ym9vbGVhbj4oSVNfU0VSVkVSKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBXcml0YWJsZVNpZ25hbH0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQvtCyINGA0LDRgdC60YDRi9GC0YvRhSDQstC+0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcGVuZWRJZHM6IFdyaXRhYmxlU2lnbmFsPFNldDxudW1iZXI+PiA9IHNpZ25hbChuZXcgU2V0PG51bWJlcj4oKSk7XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRj9C60L7RgNGMINGB0YHRi9C70LrQuCDQvdCwINCy0L7Qv9GA0L7RgS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0QW5jaG9yOiAocXVlc3Rpb25JZDogbnVtYmVyKSA9PiBzdHJpbmcgPSBzY0dldEZhcVF1ZXN0aW9uQW5jaG9yO1xuXG4gICAgLyoqXG4gICAgICog0JDQutGC0LjQstC90YvQuSDQvNCw0YDRiNGA0YPRgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LbQtdC60YLQvtGAINC60L7QvNC/0L7QvdC10L3RgtCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwINGD0L3QuNGH0YLQvtC20LXQvdC40LUg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFNpZ25hbH0g0YHRgdGL0LvQvtC6INC90LAg0LfQsNCz0L7Qu9C+0LLQutC4INCy0L7Qv9GA0L7RgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWVzdGlvbkhlYWRlcnM6IFNpZ25hbDxSZWFkb25seUFycmF5PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+Pj4gPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdxdWVzdGlvbkhlYWRlcicpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0NvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyDQndCwINGB0LXRgNCy0LXRgNC1INCy0YHQtSDQstC+0L/RgNC+0YHRiyDRgNCw0YHQutGA0YvRgtGLLlxuICAgICAgICBpZiAodGhpcy5pc1NlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0KDQsNGB0LrRgNGL0LLQsNC10Lwg0LLQvtC/0YDQvtGBINC40Lcg0Y/QutC+0YDRjyDQuCDQv9GA0L7QutGA0YPRh9C40LLQsNC10Lwg0Log0L3QtdC80YM6INGP0LrQvtGA0Ywg0LzQvtC20LXRgiDRgdC80LXQvdC40YLRjNGB0Y8g0L3QsCDQvtGC0LrRgNGL0YLQvtC5INGB0YLRgNCw0L3QuNGG0LUsINGB0L/QuNGB0L7QuiDQt9Cw0LPRgNGD0LfQuNGC0YzRgdGPINC/0L7Qt9C20LUuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucm91dGUuZnJhZ21lbnQsIHRvT2JzZXJ2YWJsZSh0aGlzLml0ZW1zKV0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKFtmcmFnbWVudCwgaXRlbXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBzY0dldEZhcVF1ZXN0aW9uSWRGcm9tQW5jaG9yKGZyYWdtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlc3Rpb25JZCAhPT0gbnVsbCAmJiBpdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBxdWVzdGlvbklkKSA/IHF1ZXN0aW9uSWQgOiBudWxsO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChxdWVzdGlvbklkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZShxdWVzdGlvbklkLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIGFmdGVyTmV4dFJlbmRlcihcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5nZXRRdWVzdGlvbkhlYWRlcihxdWVzdGlvbklkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9IZWFkZXIoaGVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0LDRgNCw0LzQtdGC0YDRiyDRhNC+0YDQvNC40YDQvtCy0LDQvdC40Y8g0YHRgdGL0LvQutC4INC90LAg0LLQvtC/0YDQvtGBOiDRgtC10LrRg9GJ0LDRjyDRgdGC0YDQsNC90LjRhtCwINGBINC10ZEgcXVlcnkt0L/QsNGA0LDQvNC10YLRgNCw0LzQuCDQuCDRj9C60L7RgNC10Lwg0LLQvtC/0YDQvtGB0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcXVlc3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQstC+0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0U2hhcmVMaW5rT3B0aW9ucyhxdWVzdGlvbklkOiBudW1iZXIpOiBVcmxDcmVhdGlvbk9wdGlvbnMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgICBmcmFnbWVudDogc2NHZXRGYXFRdWVzdGlvbkFuY2hvcihxdWVzdGlvbklkKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINGA0LDRgdC60YDRi9GC0LjRjyDQstC+0L/RgNC+0YHQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBxdWVzdGlvbklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCy0L7Qv9GA0L7RgdCwLlxuICAgICAqIEBwYXJhbSBvcGVuZWQg0J/RgNC40LfQvdCw0LosINGH0YLQviDQstC+0L/RgNC+0YEg0YDQsNGB0LrRgNGL0YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uT3BlbmVkQ2hhbmdlKHF1ZXN0aW9uSWQ6IG51bWJlciwgb3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkSWRzLnVwZGF0ZSgoaWRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXh0SWRzID0gbmV3IFNldChpZHMpO1xuXG4gICAgICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgbmV4dElkcy5hZGQocXVlc3Rpb25JZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5leHRJZHMuZGVsZXRlKHF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV4dElkcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0Y3Qu9C10LzQtdC90YIg0LfQsNCz0L7Qu9C+0LLQutCwINCy0L7Qv9GA0L7RgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LLQvtC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRRdWVzdGlvbkhlYWRlcihxdWVzdGlvbklkOiBudW1iZXIpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHNjR2V0RmFxUXVlc3Rpb25BbmNob3IocXVlc3Rpb25JZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25IZWFkZXJzKCkuZmluZCgoaGVhZGVyKSA9PiBoZWFkZXIubmF0aXZlRWxlbWVudC5pZCA9PT0gYW5jaG9yKT8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QutGA0YPRh9C40LLQsNC10YIg0YHRgtGA0LDQvdC40YbRgyDQuiDQt9Cw0LPQvtC70L7QstC60YMg0LLQvtC/0YDQvtGB0LAg0Lgg0YPQtNC10YDQttC40LLQsNC10YIg0LXQs9C+INCyINC/0L7Qu9C1INC30YDQtdC90LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBoZWFkZXIg0K3Qu9C10LzQtdC90YIg0LfQsNCz0L7Qu9C+0LLQutCwINCy0L7Qv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2Nyb2xsVG9IZWFkZXIoaGVhZGVyOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBnZXRUb3AgPSAoKTogbnVtYmVyID0+IE1hdGgucm91bmQoaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCk7XG4gICAgICAgIGNvbnN0IHVzZXJTY3JvbGwkOiBPYnNlcnZhYmxlPEV2ZW50PiA9IG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KGdsb2JhbFRoaXMsICd3aGVlbCcpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KGdsb2JhbFRoaXMsICd0b3VjaHN0YXJ0JyksXG4gICAgICAgICAgICBmcm9tRXZlbnQoZ2xvYmFsVGhpcywgJ2tleWRvd24nKSxcbiAgICAgICAgICAgIGZyb21FdmVudChnbG9iYWxUaGlzLCAnbW91c2Vkb3duJylcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDQnNCz0L3QvtCy0LXQvdC90L46INC/0LvQsNCy0L3QsNGPINC/0YDQvtC60YDRg9GC0LrQsCDQvdC1INCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0LIg0YHQutGA0YvRgtC+0Lkg0LLQutC70LDQtNC60LUuXG4gICAgICAgIGhlYWRlci5zY3JvbGxJbnRvVmlldyh0aGlzLnNjcm9sbE9wdGlvbnMoKSk7XG5cbiAgICAgICAgbGV0IGV4cGVjdGVkVG9wID0gZ2V0VG9wKCk7XG5cbiAgICAgICAgLy8g0J/QvtCy0YLQvtGA0Y/QtdC8INC/0YDQvtC60YDRg9GC0LrRgywg0LXRgdC70Lgg0LLQvtC/0YDQvtGBINGB0LTQstC40L3Rg9C70LAg0LTQvtCz0YDRg9C30LrQsCDRgdGC0YDQsNC90LjRhtGLINC40LvQuCDRh9GD0LbQsNGPINC/0YDQvtC60YDRg9GC0LrQsCwg0L/QvtC60LAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC90LUg0L3QsNGH0L3RkdGCINC/0YDQvtC60YDRg9GH0LjQstCw0YLRjCDRgdCw0LwuXG4gICAgICAgIGFuaW1hdGlvbkZyYW1lcygpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKHRoaXMuc2Nyb2xsSG9sZEZyYW1lcygpKSxcbiAgICAgICAgICAgICAgICBtYXAoZ2V0VG9wKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHRvcCkgPT4gdG9wICE9PSBleHBlY3RlZFRvcCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHVzZXJTY3JvbGwkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGVhZGVyLnNjcm9sbEludG9WaWV3KHRoaXMuc2Nyb2xsT3B0aW9ucygpKTtcbiAgICAgICAgICAgICAgICBleHBlY3RlZFRvcCA9IGdldFRvcCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPHR1aS1sb2FkZXJcbiAgICBbc2hvd0xvYWRlcl09XCJzaG93TG9hZGluZygpXCJcbiAgICBbb3ZlcmxheV09XCJ0cnVlXCJcbj5cbiAgICA8dHVpLWFjY29yZGlvblxuICAgICAgICBjbGFzcz1cImFjY29yZGlvblwiXG4gICAgICAgIFtjbG9zZU90aGVyc109XCJmYWxzZVwiXG4gICAgPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgIEBsZXQgYW5jaG9yID0gZ2V0QW5jaG9yKGl0ZW0uaWQpO1xuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgI3F1ZXN0aW9uSGVhZGVyXG4gICAgICAgICAgICAgICAgW2lkXT1cImFuY2hvclwiXG4gICAgICAgICAgICAgICAgW3R1aUFjY29yZGlvbl09XCJpc1NlcnZlciB8fCBvcGVuZWRJZHMoKS5oYXMoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICh0dWlBY2NvcmRpb25DaGFuZ2UpPVwib25PcGVuZWRDaGFuZ2UoaXRlbS5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIhd2hpdGVzcGFjZS1ub3JtYWwgIXRleHQtYm9keS1tLWJvbGRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3Jvd1wiPnt7IGl0ZW0ucXVlc3Rpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNjLXNoYXJlLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlclBhdGhdPVwiW11cIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyQ3JlYXRpb25PcHRpb25zXT1cImdldFNoYXJlTGlua09wdGlvbnMoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8dHVpLWV4cGFuZD5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbS5hbnN3ZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvdHVpLWV4cGFuZD5cbiAgICAgICAgfVxuICAgIDwvdHVpLWFjY29yZGlvbj5cbjwvdHVpLWxvYWRlcj5cbiJdfQ==
@@ -114,10 +114,10 @@ export class ScFrequentlyAskedQuestionsWithGroupsComponent {
114
114
  this.pageQueryParam = SC_PAGE_QUERY_PARAM;
115
115
  }
116
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScFrequentlyAskedQuestionsWithGroupsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScFrequentlyAskedQuestionsWithGroupsComponent, isStandalone: true, selector: "sc-frequently-asked-questions-with-groups", outputs: { clickSendQuestion: "clickSendQuestion" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "@let items = data$ | async;\n@let pageCount = pageCount$ | async;\n@let viewMode = viewMode$ | async;\n\n<div\n *ngIf=\"viewMode\"\n class=\"flex gap-6\"\n [class.flex-col]=\"viewMode === 'select'\"\n>\n <div class=\"flex flex-col gap-7\">\n <sc-frequently-asked-questions-group-selector\n [selectedGroupId]=\"groupId$ | async\"\n [viewMode]=\"viewMode\"\n class=\"shrink-0\"\n [class.w-64]=\"viewMode !== 'select'\"\n />\n\n <button\n *ngIf=\"viewMode === 'list'\"\n tuiButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.circle-help\"\n appearance=\"secondary\"\n (click)=\"clickSendQuestion.emit()\"\n class=\"self-center\"\n >\n \u0417\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\n </button>\n </div>\n\n <div class=\"grow\">\n @if (items && items.length) {\n <sc-frequently-asked-questions\n [items]=\"items\"\n [showLoading]=\"isLoading()\"\n />\n\n <sc-pagination-links\n *ngIf=\"pageCount && pageCount > 1\"\n [length]=\"pageCount\"\n [index]=\"(currentPage$ | async) ?? 1\"\n [queryParam]=\"pageQueryParam\"\n class=\"mt-4\"\n />\n } @else {\n <p class=\"text-body-s-bold\">\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u043F\u0443\u0441\u0442</p>\n }\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScFrequentlyAskedQuestionsGroupSelectorComponent, selector: "sc-frequently-asked-questions-group-selector", inputs: ["selectedGroupId", "viewMode"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: ScFrequentlyAskedQuestionsComponent, selector: "sc-frequently-asked-questions", inputs: ["items", "showLoading"] }, { kind: "component", type: ScPaginationLinksComponent, selector: "sc-pagination-links", inputs: ["length", "index", "queryParam", "activePadding", "sidePadding"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScFrequentlyAskedQuestionsWithGroupsComponent, isStandalone: true, selector: "sc-frequently-asked-questions-with-groups", outputs: { clickSendQuestion: "clickSendQuestion" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "@let items = data$ | async;\n@let pageCount = pageCount$ | async;\n@let viewMode = viewMode$ | async;\n\n<div\n *ngIf=\"viewMode\"\n class=\"flex gap-6\"\n [class.flex-col]=\"viewMode === 'select'\"\n>\n <div class=\"flex flex-col gap-7\">\n <sc-frequently-asked-questions-group-selector\n [selectedGroupId]=\"groupId$ | async\"\n [viewMode]=\"viewMode\"\n class=\"shrink-0\"\n [class.w-64]=\"viewMode !== 'select'\"\n />\n\n <button\n *ngIf=\"viewMode === 'list'\"\n tuiButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.circle-help\"\n appearance=\"secondary\"\n (click)=\"clickSendQuestion.emit()\"\n class=\"self-center\"\n >\n \u0417\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\n </button>\n </div>\n\n <div class=\"grow\">\n @if (items && items.length) {\n <sc-frequently-asked-questions\n [items]=\"items\"\n [showLoading]=\"isLoading()\"\n />\n\n <sc-pagination-links\n *ngIf=\"pageCount && pageCount > 1\"\n [length]=\"pageCount\"\n [index]=\"(currentPage$ | async) ?? 1\"\n [queryParam]=\"pageQueryParam\"\n class=\"mt-4\"\n />\n } @else {\n <p class=\"text-body-s-bold\">\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u043F\u0443\u0441\u0442</p>\n }\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScFrequentlyAskedQuestionsGroupSelectorComponent, selector: "sc-frequently-asked-questions-group-selector", inputs: ["selectedGroupId", "viewMode"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: ScFrequentlyAskedQuestionsComponent, selector: "sc-frequently-asked-questions", inputs: ["items", "showLoading", "scrollOptions", "scrollHoldFrames"] }, { kind: "component", type: ScPaginationLinksComponent, selector: "sc-pagination-links", inputs: ["length", "index", "queryParam", "activePadding", "sidePadding"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
118
118
  }
119
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScFrequentlyAskedQuestionsWithGroupsComponent, decorators: [{
120
120
  type: Component,
121
121
  args: [{ standalone: true, selector: 'sc-frequently-asked-questions-with-groups', imports: [AsyncPipe, NgIf, ScFrequentlyAskedQuestionsGroupSelectorComponent, TuiButton, ScFrequentlyAskedQuestionsComponent, ScPaginationLinksComponent], host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let items = data$ | async;\n@let pageCount = pageCount$ | async;\n@let viewMode = viewMode$ | async;\n\n<div\n *ngIf=\"viewMode\"\n class=\"flex gap-6\"\n [class.flex-col]=\"viewMode === 'select'\"\n>\n <div class=\"flex flex-col gap-7\">\n <sc-frequently-asked-questions-group-selector\n [selectedGroupId]=\"groupId$ | async\"\n [viewMode]=\"viewMode\"\n class=\"shrink-0\"\n [class.w-64]=\"viewMode !== 'select'\"\n />\n\n <button\n *ngIf=\"viewMode === 'list'\"\n tuiButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.circle-help\"\n appearance=\"secondary\"\n (click)=\"clickSendQuestion.emit()\"\n class=\"self-center\"\n >\n \u0417\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\n </button>\n </div>\n\n <div class=\"grow\">\n @if (items && items.length) {\n <sc-frequently-asked-questions\n [items]=\"items\"\n [showLoading]=\"isLoading()\"\n />\n\n <sc-pagination-links\n *ngIf=\"pageCount && pageCount > 1\"\n [length]=\"pageCount\"\n [index]=\"(currentPage$ | async) ?? 1\"\n [queryParam]=\"pageQueryParam\"\n class=\"mt-4\"\n />\n } @else {\n <p class=\"text-body-s-bold\">\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u043F\u0443\u0441\u0442</p>\n }\n </div>\n</div>\n" }]
122
122
  }] });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtd2l0aC1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBRW5CLGlDQUFpQyxFQUNqQywwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBR2hCLFlBQVksR0FDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixF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QUFJLENBQ3pFLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FBQztRQUVGOztXQUVHO1FBQ2dCLGNBQVMsR0FBa0MsSUFBSSxDQUFDLFFBQVE7WUFDdkUsQ0FBQyxDQUFDLEVBQUUsQ0FBb0IsTUFBTSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUY7O1dBRUc7UUFDZ0IsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztLQUNuRTsrR0F4SVksNkNBQTZDO21HQUE3Qyw2Q0FBNkMsK01DcEMxRCw4bERBa0RBLHVDRGxCYyxTQUFTLDhDQUFFLElBQUksNkZBQUUsZ0RBQWdELGtJQUFFLFNBQVMsb0lBQUUsbUNBQW1DLDRHQUFFLDBCQUEwQjs7NEZBSTlJLDZDQUE2QztrQkFSekQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMkNBQTJDLFdBRTVDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnREFBZ0QsRUFBRSxTQUFTLEVBQUUsbUNBQW1DLEVBQUUsMEJBQTBCLENBQUMsUUFDbEosRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgICBJU19TRVJWRVIsXG4gICAgU0NfUEFHRV9RVUVSWV9QQVJBTSxcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjRmFxSXRlbSxcbiAgICBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UsXG4gICAgc2NHZXRQYWdlUXVlcnlQYXJhbUNoYW5nZXMsXG4gICAgU2NoZW1hT3JnRmFjdG9yeSxcbiAgICBTY0lGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNQYWdpbmF0aW9uUGFyYW1zLFxuICAgIFNjSVBhZ2luYXRlLFxuICAgIFNjU2VvU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfV0lORE9XX1NJWkUsIHR1aUlzRmFsc3ksIHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUGFnaW5hdGlvbkxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0NvbXBvbmVudCwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNHcm91cFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgU0NfRkFRX0dST1VQX1FVRVJZX1BBUkFNIH0gZnJvbSAnLi4vZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMvc2MtZmFxLXF1ZXJ5LXBhcmFtcyc7XG5pbXBvcnQgeyBTQ19QQUdFX1NJWkVfT1BUSU9OUyB9IGZyb20gJy4uL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL3NjLXBhZ2Utc2l6ZS1vcHRpb25zJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDQstGL0LHQvtGA0LAg0LPRgNGD0L/Qv9GLINCy0L7Qv9GA0L7RgdC+0LIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3VwcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0dyb3VwU2VsZWN0b3JDb21wb25lbnQsIFR1aUJ1dHRvbiwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNDb21wb25lbnQsIFNjUGFnaW5hdGlvbkxpbmtzQ29tcG9uZW50XSxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zV2l0aEdyb3Vwc0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyBFbWFpbCDQtNC70Y8g0YHQstGP0LfQuCDQv9C+INCy0L7Qv9GA0L7RgdCw0Lwg0YDQtdC60LvQsNC80LDRhtC40LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2U6IFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zU2VydmljZSA9IGluamVjdChTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPRgdGC0LDQvdC+0LLQutC4IFNFTy3QtNCw0L3QvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZW9TZXJ2aWNlOiBTY1Nlb1NlcnZpY2UgPSBpbmplY3QoU2NTZW9TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCk0LDQsdGA0LjQutCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC00LDQvdC90YvRhSBTY2hlbWEub3JnLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hT3JnRmFjdG9yeTogU2NoZW1hT3JnRmFjdG9yeSA9IGluamVjdChTY2hlbWFPcmdGYWN0b3J5KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICAvKipcbiAgICAgKiDQkNC60YLQuNCy0L3Ri9C5INC80LDRgNGI0YDRg9GCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRidC10L3QviDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNTZXJ2ZXI6IFJlYWRvbmx5PGJvb2xlYW4+ID0gaW5qZWN0PGJvb2xlYW4+KElTX1NFUlZFUik7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IGluamVjdChTQ19QQUdFX1NJWkVfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LfQsNC/0LjRgdC10Lkg0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyUGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMucGFnZVNpemVPcHRpb25zWzBdKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L3QvtC80LXRgNCwINGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INC40LcgcXVlcnkt0L/QsNGA0LDQvNC10YLRgNC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gc2NHZXRQYWdlUXVlcnlQYXJhbUNoYW5nZXMoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQstGL0LHRgNCw0L3QvdC+0Lkg0LPRgNGD0L/Qv9GLLlxuICAgICAqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LHQtdGA0ZHRgtGB0Y8g0LjQtyBxdWVyeS3Qv9Cw0YDQsNC80LXRgtGA0L7Qsiwg0LAg0LXRgdC70Lgg0L/QsNGA0LDQvNC10YLRgCDQvdC1INC30LDQtNCw0L0gLSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/QtdGA0LLQsNGPINCz0YDRg9C/0L/QsCDRgdC/0LjRgdC60LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyb3VwSWQkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0gY29tYmluZUxhdGVzdChbdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLCB0aGlzLmZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UuZ3JvdXBzJF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3BhcmFtcywgZ3JvdXBzXSkgPT4gTnVtYmVyKHBhcmFtcy5nZXQoU0NfRkFRX0dST1VQX1FVRVJZX1BBUkFNKSkgfHwgKGdyb3Vwc1swXT8uaWQgPz8gbnVsbCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDQtNCw0YLRjCDQstC+0L/RgNC+0YFcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tTZW5kUXVlc3Rpb246IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YHQv9C40YHQutCwINC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NGYXFJdGVtPiB8IG51bGw+ID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIHBhZ2U6IHRoaXMucGFnZSQsXG4gICAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSQsXG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwSWQkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCkpLFxuICAgICAgICBwYWdpbmF0ZTogb2YodHJ1ZSksXG4gICAgfSkucGlwZShcbiAgICAgICAgLy8g0J3Rg9C70LXQstC+0LkgZGVib3VuY2VUaW1lINC00LvRjyDRgdC70YPRh9Cw0Y8sINC60L7Qs9C00LAg0LzQtdC90Y/RjtGC0YHRjyDQvdCw0L/RgNCw0LLQu9C10L3QuNC1INC4INC/0L7Qu9C1INGB0L7RgNGC0LjRgNC+0LLQutC4INC+0LTQvdC+0LLRgNC10LzQtdC90L3Qvi5cbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBTY0lGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNQYWdpbmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5mcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyQodGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsPFNjSUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1BhZ2luYXRpb25QYXJhbXM+KHZhbHVlKSlcbiAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCkpXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSAn0KfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvQtSDQstC+0L/RgNC+0YHRiyAtIEZBUSc7XG4gICAgICAgICAgICAgICAgLy8g0K/QutC+0YDRjCDQstC+0L/RgNC+0YHQsCDQvdC1INCy0YXQvtC00LjRgiDQsiDQsNC00YDQtdGBINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJyMnKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VvU2VydmljZS5zZXRCeURlZmF1bHQocGFnZVRpdGxlLCB1bmRlZmluZWQsIHRoaXMuc2NoZW1hT3JnRmFjdG9yeS5nZW5lcmF0ZUZvckZhcVBhZ2UoZGF0YS5kYXRhLCBwYWdlUGF0aCwgcGFnZVRpdGxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L7QsdGJ0LXQs9C+INC60L7Qu9C40YfQtdGB0YLQstCwINGB0YLRgNCw0L3QuNGGINC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZUNvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKFxuICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgbWFwKCh7IG1ldGEgfSkgPT4gbWV0YS5sYXN0UGFnZSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQvdC+0LzQtdGA0LAg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgg0LjQtyDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW50UGFnZSQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucmVxdWVzdCQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIG1hcCgoeyBtZXRhIH0pID0+IG1ldGEuY3VycmVudFBhZ2UpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSB0b1NpZ25hbCh0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0LfQsNC60LDQt9C+0LIg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPFNjRmFxSXRlbVtdIHwgbnVsbD4gPSB0aGlzLnJlcXVlc3QkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZGF0YSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGE0L7RgNC80LDRgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YTQuNC70YzRgtGA0LAg0LPRgNGD0L/Qvy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld01vZGUkOiBPYnNlcnZhYmxlPCdsaXN0JyB8ICdzZWxlY3QnPiA9IHRoaXMuaXNTZXJ2ZXJcbiAgICAgICAgPyBvZjwnbGlzdCcgfCAnc2VsZWN0Jz4oJ2xpc3QnKVxuICAgICAgICA6IGluamVjdChUVUlfV0lORE9XX1NJWkUpLnBpcGUobWFwKChyZWN0KSA9PiAocmVjdC53aWR0aCA+IDc2OCA/ICdsaXN0JyA6ICdzZWxlY3QnKSkpO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC40LzQtdC90L7QstCw0L3QuNC1IHF1ZXJ5LdC/0LDRgNCw0LzQtdGC0YDQsCDQvdC+0LzQtdGA0LAg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VRdWVyeVBhcmFtOiBzdHJpbmcgPSBTQ19QQUdFX1FVRVJZX1BBUkFNO1xufVxuIiwiQGxldCBpdGVtcyA9IGRhdGEkIHwgYXN5bmM7XG5AbGV0IHBhZ2VDb3VudCA9IHBhZ2VDb3VudCQgfCBhc3luYztcbkBsZXQgdmlld01vZGUgPSB2aWV3TW9kZSQgfCBhc3luYztcblxuPGRpdlxuICAgICpuZ0lmPVwidmlld01vZGVcIlxuICAgIGNsYXNzPVwiZmxleCBnYXAtNlwiXG4gICAgW2NsYXNzLmZsZXgtY29sXT1cInZpZXdNb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTdcIj5cbiAgICAgICAgPHNjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLWdyb3VwLXNlbGVjdG9yXG4gICAgICAgICAgICBbc2VsZWN0ZWRHcm91cElkXT1cImdyb3VwSWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3ZpZXdNb2RlXT1cInZpZXdNb2RlXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2hyaW5rLTBcIlxuICAgICAgICAgICAgW2NsYXNzLnctNjRdPVwidmlld01vZGUgIT09ICdzZWxlY3QnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnbGlzdCdcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2lyY2xlLWhlbHBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tTZW5kUXVlc3Rpb24uZW1pdCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQl9Cw0LTQsNGC0Ywg0LLQvtC/0YDQvtGBXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyb3dcIj5cbiAgICAgICAgQGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxzYy1wYWdpbmF0aW9uLWxpbmtzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlQ291bnQgJiYgcGFnZUNvdW50ID4gMVwiXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJwYWdlQ291bnRcIlxuICAgICAgICAgICAgICAgIFtpbmRleF09XCIoY3VycmVudFBhZ2UkIHwgYXN5bmMpID8/IDFcIlxuICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtXT1cInBhZ2VRdWVyeVBhcmFtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtYm9keS1zLWJvbGRcIj7QodC/0LjRgdC+0Log0LLQvtC/0YDQvtGB0L7QsiDQv9GD0YHRgjwvcD5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtd2l0aC1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBRW5CLGlDQUFpQyxFQUNqQywwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBR2hCLFlBQVksR0FDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixF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QUFJLENBQ3pFLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FBQztRQUVGOztXQUVHO1FBQ2dCLGNBQVMsR0FBa0MsSUFBSSxDQUFDLFFBQVE7WUFDdkUsQ0FBQyxDQUFDLEVBQUUsQ0FBb0IsTUFBTSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUY7O1dBRUc7UUFDZ0IsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztLQUNuRTsrR0F4SVksNkNBQTZDO21HQUE3Qyw2Q0FBNkMsK01DcEMxRCw4bERBa0RBLHVDRGxCYyxTQUFTLDhDQUFFLElBQUksNkZBQUUsZ0RBQWdELGtJQUFFLFNBQVMsb0lBQUUsbUNBQW1DLGlKQUFFLDBCQUEwQjs7NEZBSTlJLDZDQUE2QztrQkFSekQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMkNBQTJDLFdBRTVDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnREFBZ0QsRUFBRSxTQUFTLEVBQUUsbUNBQW1DLEVBQUUsMEJBQTBCLENBQUMsUUFDbEosRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgICBJU19TRVJWRVIsXG4gICAgU0NfUEFHRV9RVUVSWV9QQVJBTSxcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjRmFxSXRlbSxcbiAgICBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UsXG4gICAgc2NHZXRQYWdlUXVlcnlQYXJhbUNoYW5nZXMsXG4gICAgU2NoZW1hT3JnRmFjdG9yeSxcbiAgICBTY0lGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNQYWdpbmF0aW9uUGFyYW1zLFxuICAgIFNjSVBhZ2luYXRlLFxuICAgIFNjU2VvU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfV0lORE9XX1NJWkUsIHR1aUlzRmFsc3ksIHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUGFnaW5hdGlvbkxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0NvbXBvbmVudCwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNHcm91cFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgU0NfRkFRX0dST1VQX1FVRVJZX1BBUkFNIH0gZnJvbSAnLi4vZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMvc2MtZmFxLXF1ZXJ5LXBhcmFtcyc7XG5pbXBvcnQgeyBTQ19QQUdFX1NJWkVfT1BUSU9OUyB9IGZyb20gJy4uL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL3NjLXBhZ2Utc2l6ZS1vcHRpb25zJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDQstGL0LHQvtGA0LAg0LPRgNGD0L/Qv9GLINCy0L7Qv9GA0L7RgdC+0LIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3VwcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0dyb3VwU2VsZWN0b3JDb21wb25lbnQsIFR1aUJ1dHRvbiwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNDb21wb25lbnQsIFNjUGFnaW5hdGlvbkxpbmtzQ29tcG9uZW50XSxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zV2l0aEdyb3Vwc0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyBFbWFpbCDQtNC70Y8g0YHQstGP0LfQuCDQv9C+INCy0L7Qv9GA0L7RgdCw0Lwg0YDQtdC60LvQsNC80LDRhtC40LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2U6IFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zU2VydmljZSA9IGluamVjdChTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPRgdGC0LDQvdC+0LLQutC4IFNFTy3QtNCw0L3QvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZW9TZXJ2aWNlOiBTY1Nlb1NlcnZpY2UgPSBpbmplY3QoU2NTZW9TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCk0LDQsdGA0LjQutCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC00LDQvdC90YvRhSBTY2hlbWEub3JnLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hT3JnRmFjdG9yeTogU2NoZW1hT3JnRmFjdG9yeSA9IGluamVjdChTY2hlbWFPcmdGYWN0b3J5KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICAvKipcbiAgICAgKiDQkNC60YLQuNCy0L3Ri9C5INC80LDRgNGI0YDRg9GCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/RgNC40LvQvtC20LXQvdC40LUg0LfQsNC/0YPRidC10L3QviDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNTZXJ2ZXI6IFJlYWRvbmx5PGJvb2xlYW4+ID0gaW5qZWN0PGJvb2xlYW4+KElTX1NFUlZFUik7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IGluamVjdChTQ19QQUdFX1NJWkVfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LfQsNC/0LjRgdC10Lkg0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyUGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMucGFnZVNpemVPcHRpb25zWzBdKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L3QvtC80LXRgNCwINGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INC40LcgcXVlcnkt0L/QsNGA0LDQvNC10YLRgNC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gc2NHZXRQYWdlUXVlcnlQYXJhbUNoYW5nZXMoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQstGL0LHRgNCw0L3QvdC+0Lkg0LPRgNGD0L/Qv9GLLlxuICAgICAqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LHQtdGA0ZHRgtGB0Y8g0LjQtyBxdWVyeS3Qv9Cw0YDQsNC80LXRgtGA0L7Qsiwg0LAg0LXRgdC70Lgg0L/QsNGA0LDQvNC10YLRgCDQvdC1INC30LDQtNCw0L0gLSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/QtdGA0LLQsNGPINCz0YDRg9C/0L/QsCDRgdC/0LjRgdC60LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyb3VwSWQkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0gY29tYmluZUxhdGVzdChbdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLCB0aGlzLmZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UuZ3JvdXBzJF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3BhcmFtcywgZ3JvdXBzXSkgPT4gTnVtYmVyKHBhcmFtcy5nZXQoU0NfRkFRX0dST1VQX1FVRVJZX1BBUkFNKSkgfHwgKGdyb3Vwc1swXT8uaWQgPz8gbnVsbCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDQtNCw0YLRjCDQstC+0L/RgNC+0YFcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tTZW5kUXVlc3Rpb246IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YHQv9C40YHQutCwINC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NGYXFJdGVtPiB8IG51bGw+ID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIHBhZ2U6IHRoaXMucGFnZSQsXG4gICAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSQsXG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwSWQkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCkpLFxuICAgICAgICBwYWdpbmF0ZTogb2YodHJ1ZSksXG4gICAgfSkucGlwZShcbiAgICAgICAgLy8g0J3Rg9C70LXQstC+0LkgZGVib3VuY2VUaW1lINC00LvRjyDRgdC70YPRh9Cw0Y8sINC60L7Qs9C00LAg0LzQtdC90Y/RjtGC0YHRjyDQvdCw0L/RgNCw0LLQu9C10L3QuNC1INC4INC/0L7Qu9C1INGB0L7RgNGC0LjRgNC+0LLQutC4INC+0LTQvdC+0LLRgNC10LzQtdC90L3Qvi5cbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBTY0lGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNQYWdpbmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5mcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyQodGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsPFNjSUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1BhZ2luYXRpb25QYXJhbXM+KHZhbHVlKSlcbiAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCkpXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSAn0KfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvQtSDQstC+0L/RgNC+0YHRiyAtIEZBUSc7XG4gICAgICAgICAgICAgICAgLy8g0K/QutC+0YDRjCDQstC+0L/RgNC+0YHQsCDQvdC1INCy0YXQvtC00LjRgiDQsiDQsNC00YDQtdGBINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJyMnKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VvU2VydmljZS5zZXRCeURlZmF1bHQocGFnZVRpdGxlLCB1bmRlZmluZWQsIHRoaXMuc2NoZW1hT3JnRmFjdG9yeS5nZW5lcmF0ZUZvckZhcVBhZ2UoZGF0YS5kYXRhLCBwYWdlUGF0aCwgcGFnZVRpdGxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L7QsdGJ0LXQs9C+INC60L7Qu9C40YfQtdGB0YLQstCwINGB0YLRgNCw0L3QuNGGINC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZUNvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKFxuICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgbWFwKCh7IG1ldGEgfSkgPT4gbWV0YS5sYXN0UGFnZSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQvdC+0LzQtdGA0LAg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgg0LjQtyDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW50UGFnZSQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucmVxdWVzdCQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIG1hcCgoeyBtZXRhIH0pID0+IG1ldGEuY3VycmVudFBhZ2UpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSB0b1NpZ25hbCh0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0LfQsNC60LDQt9C+0LIg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPFNjRmFxSXRlbVtdIHwgbnVsbD4gPSB0aGlzLnJlcXVlc3QkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZGF0YSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGE0L7RgNC80LDRgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YTQuNC70YzRgtGA0LAg0LPRgNGD0L/Qvy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld01vZGUkOiBPYnNlcnZhYmxlPCdsaXN0JyB8ICdzZWxlY3QnPiA9IHRoaXMuaXNTZXJ2ZXJcbiAgICAgICAgPyBvZjwnbGlzdCcgfCAnc2VsZWN0Jz4oJ2xpc3QnKVxuICAgICAgICA6IGluamVjdChUVUlfV0lORE9XX1NJWkUpLnBpcGUobWFwKChyZWN0KSA9PiAocmVjdC53aWR0aCA+IDc2OCA/ICdsaXN0JyA6ICdzZWxlY3QnKSkpO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC40LzQtdC90L7QstCw0L3QuNC1IHF1ZXJ5LdC/0LDRgNCw0LzQtdGC0YDQsCDQvdC+0LzQtdGA0LAg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VRdWVyeVBhcmFtOiBzdHJpbmcgPSBTQ19QQUdFX1FVRVJZX1BBUkFNO1xufVxuIiwiQGxldCBpdGVtcyA9IGRhdGEkIHwgYXN5bmM7XG5AbGV0IHBhZ2VDb3VudCA9IHBhZ2VDb3VudCQgfCBhc3luYztcbkBsZXQgdmlld01vZGUgPSB2aWV3TW9kZSQgfCBhc3luYztcblxuPGRpdlxuICAgICpuZ0lmPVwidmlld01vZGVcIlxuICAgIGNsYXNzPVwiZmxleCBnYXAtNlwiXG4gICAgW2NsYXNzLmZsZXgtY29sXT1cInZpZXdNb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTdcIj5cbiAgICAgICAgPHNjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLWdyb3VwLXNlbGVjdG9yXG4gICAgICAgICAgICBbc2VsZWN0ZWRHcm91cElkXT1cImdyb3VwSWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3ZpZXdNb2RlXT1cInZpZXdNb2RlXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2hyaW5rLTBcIlxuICAgICAgICAgICAgW2NsYXNzLnctNjRdPVwidmlld01vZGUgIT09ICdzZWxlY3QnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnbGlzdCdcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2lyY2xlLWhlbHBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tTZW5kUXVlc3Rpb24uZW1pdCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQl9Cw0LTQsNGC0Ywg0LLQvtC/0YDQvtGBXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyb3dcIj5cbiAgICAgICAgQGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxzYy1wYWdpbmF0aW9uLWxpbmtzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlQ291bnQgJiYgcGFnZUNvdW50ID4gMVwiXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJwYWdlQ291bnRcIlxuICAgICAgICAgICAgICAgIFtpbmRleF09XCIoY3VycmVudFBhZ2UkIHwgYXN5bmMpID8/IDFcIlxuICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtXT1cInBhZ2VRdWVyeVBhcmFtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtYm9keS1zLWJvbGRcIj7QodC/0LjRgdC+0Log0LLQvtC/0YDQvtGB0L7QsiDQv9GD0YHRgjwvcD5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,12 +1,13 @@
1
+ import { Clipboard } from '@angular/cdk/clipboard';
1
2
  import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
2
3
  import { toSignal } from '@angular/core/rxjs-interop';
3
- import { WA_NAVIGATOR, WA_WINDOW } from '@ng-web-apis/common';
4
+ import { WA_WINDOW } from '@ng-web-apis/common';
4
5
  import { IS_RUNNING_ON_TERMINAL, IS_SERVER, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
5
6
  import { TUI_WINDOW_SIZE } from '@taiga-ui/cdk';
6
7
  import { TuiAlertService, TuiButton, TuiDialogService, TuiIconPipe } from '@taiga-ui/core';
7
8
  import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
8
9
  import { QRCodeModule } from 'angularx-qrcode';
9
- import { map, noop, of } from 'rxjs';
10
+ import { map, of } from 'rxjs';
10
11
  import { ScEmailLinkDirective } from '../../directives';
11
12
  import { ScQRCodeDialogComponent } from '../../qrcode';
12
13
  import * as i0 from "@angular/core";
@@ -27,9 +28,9 @@ export class ScShareDialogComponent {
27
28
  */
28
29
  this.context = inject(POLYMORPHEUS_CONTEXT);
29
30
  /**
30
- * Ссылка на объект навигатора браузера.
31
+ * Сервис копирования текста в буфер обмена.
31
32
  */
32
- this.navigator = inject(WA_NAVIGATOR);
33
+ this.clipboard = inject(Clipboard);
33
34
  /**
34
35
  * Ссылка на объект окна браузера.
35
36
  */
@@ -92,8 +93,12 @@ export class ScShareDialogComponent {
92
93
  */
93
94
  copyShareLink() {
94
95
  this.emitShareClick('copy_to_clipboard');
95
- this.navigator.clipboard.writeText(this.shareUrl).catch(noop);
96
- this.alerts.open('Ссылка скопирована в буфер обмена.', { appearance: 'positive' }).subscribe();
96
+ if (this.clipboard.copy(this.shareUrl)) {
97
+ this.alerts.open('Ссылка скопирована в буфер обмена.', { appearance: 'positive' }).subscribe();
98
+ }
99
+ else {
100
+ this.alerts.open('Не удалось скопировать ссылку в буфер обмена.', { appearance: 'negative' }).subscribe();
101
+ }
97
102
  }
98
103
  /**
99
104
  * Открывает диалоговое окно с QR-кодом ссылки.
@@ -131,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
131
136
  type: Component,
132
137
  args: [{ standalone: true, selector: 'sc-share-dialog', imports: [TuiButton, TuiIconPipe, ScEmailLinkDirective, QRCodeModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (terminal.isRunningOnTerminal) {\n <p class=\"-mt-2 mb-3 text-tui-text-02\">\u0421\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 QR-\u043A\u043E\u0434.</p>\n <qrcode\n [margin]=\"0\"\n [qrdata]=\"shareUrl\"\n [width]=\"250\"\n elementType=\"img\"\n ></qrcode>\n} @else {\n @let isRow = viewMode() === 'row';\n @let appearance = isRow ? 'flat' : 'outline';\n @let buttonClass = isRow ? 'button _row' : 'button w-full !justify-start';\n @let iconClass = isRow ? '!m-0 !size-8' : '!m-0 !size-6';\n @let iconSize = isRow ? 32 : 24;\n\n <div\n class=\"gap-2\"\n [class.flex]=\"isRow\"\n [class.grid]=\"!isRow\"\n [class.grid-cols-2]=\"!isRow\"\n >\n <a\n tuiButton\n size=\"m\"\n scEmailLink\n linkLocation=\"share-link\"\n automation-id=\"sc-share-dialog__email\"\n [appearance]=\"appearance\"\n [class]=\"buttonClass\"\n [href]=\"emailLink\"\n >\n <img\n [src]=\"'@tui.sc.img.email' | tuiIcon\"\n alt=\"Email\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [class]=\"iconClass\"\n />\n <span>Email</span>\n </a>\n <a\n tuiButton\n size=\"m\"\n target=\"_blank\"\n automation-id=\"sc-share-dialog__vk\"\n [appearance]=\"appearance\"\n [class]=\"buttonClass\"\n [href]=\"vkLink\"\n (click)=\"$event.preventDefault(); openShareWindow(vkLink, 'vk')\"\n >\n <img\n [src]=\"'@tui.sc.img.vk' | tuiIcon\"\n alt=\"\u0412\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u0435\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [class]=\"iconClass\"\n />\n <span>\u0412\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u0435</span>\n </a>\n <a\n tuiButton\n size=\"m\"\n target=\"_blank\"\n automation-id=\"sc-share-dialog__telegram\"\n [appearance]=\"appearance\"\n [class]=\"buttonClass\"\n [href]=\"telegramLink\"\n (click)=\"$event.preventDefault(); openShareWindow(telegramLink, 'telegram')\"\n >\n <img\n [src]=\"'@tui.sc.img.telegram' | tuiIcon\"\n alt=\"Telegram\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [class]=\"iconClass\"\n />\n <span>Telegram</span>\n </a>\n <button\n tuiButton\n size=\"m\"\n type=\"button\"\n automation-id=\"sc-share-dialog__copy\"\n [appearance]=\"appearance\"\n [class]=\"buttonClass\"\n (click)=\"copyShareLink()\"\n >\n <img\n [src]=\"'@tui.sc.img.copy' | tuiIcon\"\n alt=\"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [class]=\"iconClass\"\n />\n <span>\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C</span>\n </button>\n <button\n tuiButton\n size=\"m\"\n type=\"button\"\n automation-id=\"sc-share-dialog__qr\"\n [appearance]=\"appearance\"\n [class]=\"buttonClass\"\n (click)=\"showQRCode()\"\n >\n <img\n [src]=\"'@tui.sc.img.qr-code' | tuiIcon\"\n alt=\"QR-\u043A\u043E\u0434\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [class]=\"iconClass\"\n />\n <span>QR-\u043A\u043E\u0434</span>\n </button>\n </div>\n}\n", styles: [".button._row{--tui-padding: .625rem;--t-gap: 0 !important}.button._row span{max-width:0;overflow:hidden;opacity:0;transition-duration:.5s}.button._row:hover span{opacity:1;max-width:11.5rem;padding-left:1rem}\n"] }]
133
138
  }] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zaGFyZS9zaGFyZS1kaWFsb2cvc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zaGFyZS9zaGFyZS1kaWFsb2cvc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUF1QixzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQW9CLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHdkQ7Ozs7R0FJRztBQVNILE1B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QUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7WUFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLE1BQU07U0FDeEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU07YUFDTixJQUFJLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQ3RELElBQUksRUFBRSxHQUFHO1lBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUTtZQUM3QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtTQUNsQyxDQUFDO2FBQ0QsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsYUFBcUI7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO1lBQ3pDLE1BQU0sRUFBRTtnQkFDSixlQUFlLEVBQUUsYUFBYTthQUNqQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBOUhRLHNCQUFzQjttR0FBdEIsc0JBQXNCLDJFQzNCbkMsdTVIQW9IQSw0UUQ1RmMsU0FBUywrSEFBRSxXQUFXLGdEQUFFLG9CQUFvQixvRkFBRSxZQUFZOzs0RkFHM0Qsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNNLElBQUksWUFDTixpQkFBaUIsV0FHbEIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLFlBQVksQ0FBQyxtQkFDcEQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgV0FfTkFWSUdBVE9SLCBXQV9XSU5ET1cgfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIElTX1NFUlZFUiwgU2NJVGVybWluYWxQcm92aWRlciwgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSwgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9XSU5ET1dfU0laRSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQWxlcnRTZXJ2aWNlLCBUdWlCdXR0b24sIFR1aURpYWxvZ0NvbnRleHQsIFR1aURpYWxvZ1NlcnZpY2UsIFR1aUljb25QaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQsIFBvbHltb3JwaGV1c0NvbXBvbmVudCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgUVJDb2RlTW9kdWxlIH0gZnJvbSAnYW5ndWxhcngtcXJjb2RlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NFbWFpbExpbmtEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNjUVJDb2RlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcXJjb2RlJztcbmltcG9ydCB7IFNjU2hhcmVEaWFsb2dEYXRhIH0gZnJvbSAnLi4vc2Mtc2hhcmUtZGlhbG9nLWRhdGEnO1xuXG4vKipcbiAqINCU0LjQsNC70L7Qs9C+0LLQvtC1INC+0LrQvdC+IFwi0J/QvtC00LXQu9C40YLRjNGB0Y9cIjog0LLQsNGA0LjQsNC90YLRiywg0LrQsNC6INC/0L7QtNC10LvQuNGC0YzRgdGPINGB0YHRi9C70LrQvtC5LlxuICpcbiAqINCd0LAg0YLQtdGA0LzQuNC90LDQu9C1INCy0LzQtdGB0YLQviDQstCw0YDQuNCw0L3RgtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGC0L7Qu9GM0LrQviBRUi3QutC+0LQg0YHRgdGL0LvQutC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2Mtc2hhcmUtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJyxcbiAgICBpbXBvcnRzOiBbVHVpQnV0dG9uLCBUdWlJY29uUGlwZSwgU2NFbWFpbExpbmtEaXJlY3RpdmUsIFFSQ29kZU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2hhcmVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LDQudC00LXRgCDQtNCw0L3QvdGL0YUg0L4g0YLQtdGA0LzQuNC90LDQu9C1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXJtaW5hbDogU2NJVGVybWluYWxQcm92aWRlciA9IGluamVjdDxTY0lUZXJtaW5hbFByb3ZpZGVyPihJU19SVU5OSU5HX09OX1RFUk1JTkFMKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgU2NTaGFyZURpYWxvZ0RhdGE+ID0gaW5qZWN0PFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgU2NTaGFyZURpYWxvZ0RhdGE+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDQvtCx0YrQtdC60YIg0L3QsNCy0LjQs9Cw0YLQvtGA0LAg0LHRgNCw0YPQt9C10YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRvcjogTmF2aWdhdG9yID0gaW5qZWN0KFdBX05BVklHQVRPUik7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDQvtCx0YrQtdC60YIg0L7QutC90LAg0LHRgNCw0YPQt9C10YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93ID0gaW5qZWN0KFdBX1dJTkRPVyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPQstC10LTQvtC80LvQtdC90LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0czogVHVpQWxlcnRTZXJ2aWNlID0gaW5qZWN0KFR1aUFsZXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQtNC40LDQu9C+0LPQvtCy0YvQvNC4INC+0LrQvdCw0LzQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogVHVpRGlhbG9nU2VydmljZSA9IGluamVjdChUdWlEaWFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSA9IGluamVjdChTY1VzZXJNZXRyaWthU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU2lnbmFsfSDRhNC+0YDQvNCw0YLQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINCy0LDRgNC40LDQvdGC0L7Qsjog0LIg0YHRgtGA0L7QutGDINC90LAg0YjQuNGA0L7QutC40YUg0Y3QutGA0LDQvdCw0YUsINGB0L/QuNGB0LrQvtC8INC90LAg0YPQt9C60LjRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld01vZGU6IFNpZ25hbDwncm93JyB8ICdsaXN0Jz4gPSB0b1NpZ25hbChcbiAgICAgICAgaW5qZWN0PGJvb2xlYW4+KElTX1NFUlZFUikgPyBvZjwncm93JyB8ICdsaXN0Jz4oJ2xpc3QnKSA6IGluamVjdChUVUlfV0lORE9XX1NJWkUpLnBpcGUobWFwKChyZWN0KSA9PiAocmVjdC53aWR0aCA+IDc2OCA/ICdyb3cnIDogJ2xpc3QnKSkpLFxuICAgICAgICB7IGluaXRpYWxWYWx1ZTogJ2xpc3QnIH1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YHRi9C70LrQuCwg0LrQvtGC0L7RgNC+0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC00LXQu9C40YLRjNGB0Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmcgPSB0aGlzLmNvbnRleHQuZGF0YS50aXRsZTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCwg0LrQvtGC0L7RgNC+0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC00LXQu9C40YLRjNGB0Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNoYXJlVXJsOiBzdHJpbmcgPSB0aGlzLmNvbnRleHQuZGF0YS5zaGFyZVVybDtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvtGC0L/RgNCw0LLQutC4INC/0L4gRW1haWwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVtYWlsTGluazogc3RyaW5nID0gYG1haWx0bzo/c3ViamVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChbJ9Ce0J7QniDQodC90LDQsdGG0LXQvdGC0YAnLCB0aGlzLnRpdGxlXS5maWx0ZXIoQm9vbGVhbikuam9pbignIC0gJykpfSZib2R5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc2hhcmVVcmwpfWA7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L7RgtC/0YDQsNCy0LrQuCDQstC+INCS0JrQvtC90YLQsNC60YLQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmtMaW5rOiBzdHJpbmcgPSBgaHR0cHM6Ly92ay5jb20vc2hhcmUucGhwP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNoYXJlVXJsKX1gO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC+0YLQv9GA0LDQstC60Lgg0LIgVGVsZWdyYW0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbGVncmFtTGluazogc3RyaW5nID0gYGh0dHBzOi8vdC5tZS9zaGFyZS91cmw/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc2hhcmVVcmwpfWA7XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaGFyZVNob3csXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQutGA0YvQstCw0LXRgiDQvtC60L3QviDQv9C10YDQtdGF0L7QtNCwINCyINGB0L7RhtC40LDQu9GM0L3Rg9GOINGB0LXRgtGMLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNoYXJlTGluayDQodGB0YvQu9C60LAg0L/QtdGA0LXRhdC+0LTQsCDQsiDRgdC+0YbQuNCw0LvRjNC90YPRjiDRgdC10YLRjC5cbiAgICAgKiBAcGFyYW0gc29jaWFsTWVkaWEgU2x1ZyDRgdC+0YbQuNCw0LvRjNC90L7QuSDRgdC10YLQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3BlblNoYXJlV2luZG93KHNoYXJlTGluazogc3RyaW5nLCBzb2NpYWxNZWRpYTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdFNoYXJlQ2xpY2soc29jaWFsTWVkaWEpO1xuICAgICAgICB0aGlzLndpbmRvdy5vcGVuKHNoYXJlTGluaywgJ3NoYXJlcicsICdzdGF0dXM9MCx0b29sYmFyPTAsd2lkdGg9NjUwLGhlaWdodD01MDAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L/QuNGA0YPQtdGCINGB0YHRi9C70LrRgyDQsiDQsdGD0YTQtdGAINC+0LHQvNC10L3QsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29weVNoYXJlTGluaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbWl0U2hhcmVDbGljaygnY29weV90b19jbGlwYm9hcmQnKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLnNoYXJlVXJsKS5jYXRjaChub29wKTtcbiAgICAgICAgdGhpcy5hbGVydHMub3Blbign0KHRgdGL0LvQutCwINGB0LrQvtC/0LjRgNC+0LLQsNC90LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LAuJywgeyBhcHBlYXJhbmNlOiAncG9zaXRpdmUnIH0pLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQutGA0YvQstCw0LXRgiDQtNC40LDQu9C+0LPQvtCy0L7QtSDQvtC60L3QviDRgSBRUi3QutC+0LTQvtC8INGB0YHRi9C70LrQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2hvd1FSQ29kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbWl0U2hhcmVDbGljaygncXInKTtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnFyU2hvdyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQoU2NRUkNvZGVEaWFsb2dDb21wb25lbnQpLCB7XG4gICAgICAgICAgICAgICAgc2l6ZTogJ3MnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRpdGxlIHx8ICdRUi3QutC+0LQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHsgcXJkYXRhOiB0aGlzLnNoYXJlVXJsIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQv9GA0LDQstC70Y/QtdGCINC80LXRgtGA0LjQutGDINCy0YvQsdC+0YDQsCDQstCw0YDQuNCw0L3RgtCwIFwi0J/QvtC00LXQu9C40YLRjNGB0Y9cIi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGFyZUxpbmtOYW1lINCd0LDQuNC80LXQvdC+0LLQsNC90LjQtSDQstCw0YDQuNCw0L3RgtCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgZW1pdFNoYXJlQ2xpY2soc2hhcmVMaW5rTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaGFyZUNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgc2hhcmVfbGlua19uYW1lOiBzaGFyZUxpbmtOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiQGlmICh0ZXJtaW5hbC5pc1J1bm5pbmdPblRlcm1pbmFsKSB7XG4gICAgPHAgY2xhc3M9XCItbXQtMiBtYi0zIHRleHQtdHVpLXRleHQtMDJcIj7QodC60LDQvdC40YDRg9C50YLQtSBRUi3QutC+0LQuPC9wPlxuICAgIDxxcmNvZGVcbiAgICAgICAgW21hcmdpbl09XCIwXCJcbiAgICAgICAgW3FyZGF0YV09XCJzaGFyZVVybFwiXG4gICAgICAgIFt3aWR0aF09XCIyNTBcIlxuICAgICAgICBlbGVtZW50VHlwZT1cImltZ1wiXG4gICAgPjwvcXJjb2RlPlxufSBAZWxzZSB7XG4gICAgQGxldCBpc1JvdyA9IHZpZXdNb2RlKCkgPT09ICdyb3cnO1xuICAgIEBsZXQgYXBwZWFyYW5jZSA9IGlzUm93ID8gJ2ZsYXQnIDogJ291dGxpbmUnO1xuICAgIEBsZXQgYnV0dG9uQ2xhc3MgPSBpc1JvdyA/ICdidXR0b24gX3JvdycgOiAnYnV0dG9uIHctZnVsbCAhanVzdGlmeS1zdGFydCc7XG4gICAgQGxldCBpY29uQ2xhc3MgPSBpc1JvdyA/ICchbS0wICFzaXplLTgnIDogJyFtLTAgIXNpemUtNic7XG4gICAgQGxldCBpY29uU2l6ZSA9IGlzUm93ID8gMzIgOiAyNDtcblxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJnYXAtMlwiXG4gICAgICAgIFtjbGFzcy5mbGV4XT1cImlzUm93XCJcbiAgICAgICAgW2NsYXNzLmdyaWRdPVwiIWlzUm93XCJcbiAgICAgICAgW2NsYXNzLmdyaWQtY29scy0yXT1cIiFpc1Jvd1wiXG4gICAgPlxuICAgICAgICA8YVxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBzY0VtYWlsTGlua1xuICAgICAgICAgICAgbGlua0xvY2F0aW9uPVwic2hhcmUtbGlua1wiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwic2Mtc2hhcmUtZGlhbG9nX19lbWFpbFwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgICAgICBbaHJlZl09XCJlbWFpbExpbmtcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCInQHR1aS5zYy5pbWcuZW1haWwnIHwgdHVpSWNvblwiXG4gICAgICAgICAgICAgICAgYWx0PVwiRW1haWxcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImljb25DbGFzc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+RW1haWw8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJzYy1zaGFyZS1kaWFsb2dfX3ZrXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIFtocmVmXT1cInZrTGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9wZW5TaGFyZVdpbmRvdyh2a0xpbmssICd2aycpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiJ0B0dWkuc2MuaW1nLnZrJyB8IHR1aUljb25cIlxuICAgICAgICAgICAgICAgIGFsdD1cItCS0JrQvtC90YLQsNC60YLQtVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaWNvbkNsYXNzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj7QktCa0L7QvdGC0LDQutGC0LU8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJzYy1zaGFyZS1kaWFsb2dfX3RlbGVncmFtXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIFtocmVmXT1cInRlbGVncmFtTGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9wZW5TaGFyZVdpbmRvdyh0ZWxlZ3JhbUxpbmssICd0ZWxlZ3JhbScpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiJ0B0dWkuc2MuaW1nLnRlbGVncmFtJyB8IHR1aUljb25cIlxuICAgICAgICAgICAgICAgIGFsdD1cIlRlbGVncmFtXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpY29uQ2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPlRlbGVncmFtPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwic2Mtc2hhcmUtZGlhbG9nX19jb3B5XCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5U2hhcmVMaW5rKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCInQHR1aS5zYy5pbWcuY29weScgfCB0dWlJY29uXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCLQmtC+0L/QuNGA0L7QstCw0YLRjFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaWNvbkNsYXNzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj7QmtC+0L/QuNGA0L7QstCw0YLRjDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwic2Mtc2hhcmUtZGlhbG9nX19xclwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd1FSQ29kZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiJ0B0dWkuc2MuaW1nLnFyLWNvZGUnIHwgdHVpSWNvblwiXG4gICAgICAgICAgICAgICAgYWx0PVwiUVIt0LrQvtC0XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpY29uQ2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPlFSLdC60L7QtDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zaGFyZS9zaGFyZS1kaWFsb2cvc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zaGFyZS9zaGFyZS1kaWFsb2cvc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUF1QixzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQW9CLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7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L2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBXQV9XSU5ET1cgfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIElTX1NFUlZFUiwgU2NJVGVybWluYWxQcm92aWRlciwgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSwgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9XSU5ET1dfU0laRSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQWxlcnRTZXJ2aWNlLCBUdWlCdXR0b24sIFR1aURpYWxvZ0NvbnRleHQsIFR1aURpYWxvZ1NlcnZpY2UsIFR1aUljb25QaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQsIFBvbHltb3JwaGV1c0NvbXBvbmVudCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgUVJDb2RlTW9kdWxlIH0gZnJvbSAnYW5ndWxhcngtcXJjb2RlJztcbmltcG9ydCB7IG1hcCwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NFbWFpbExpbmtEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNjUVJDb2RlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcXJjb2RlJztcbmltcG9ydCB7IFNjU2hhcmVEaWFsb2dEYXRhIH0gZnJvbSAnLi4vc2Mtc2hhcmUtZGlhbG9nLWRhdGEnO1xuXG4vKipcbiAqINCU0LjQsNC70L7Qs9C+0LLQvtC1INC+0LrQvdC+IFwi0J/QvtC00LXQu9C40YLRjNGB0Y9cIjog0LLQsNGA0LjQsNC90YLRiywg0LrQsNC6INC/0L7QtNC10LvQuNGC0YzRgdGPINGB0YHRi9C70LrQvtC5LlxuICpcbiAqINCd0LAg0YLQtdGA0LzQuNC90LDQu9C1INCy0LzQtdGB0YLQviDQstCw0YDQuNCw0L3RgtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGC0L7Qu9GM0LrQviBRUi3QutC+0LQg0YHRgdGL0LvQutC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2Mtc2hhcmUtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2Mtc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJyxcbiAgICBpbXBvcnRzOiBbVHVpQnV0dG9uLCBUdWlJY29uUGlwZSwgU2NFbWFpbExpbmtEaXJlY3RpdmUsIFFSQ29kZU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2hhcmVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LDQudC00LXRgCDQtNCw0L3QvdGL0YUg0L4g0YLQtdGA0LzQuNC90LDQu9C1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXJtaW5hbDogU2NJVGVybWluYWxQcm92aWRlciA9IGluamVjdDxTY0lUZXJtaW5hbFByb3ZpZGVyPihJU19SVU5OSU5HX09OX1RFUk1JTkFMKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgU2NTaGFyZURpYWxvZ0RhdGE+ID0gaW5qZWN0PFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgU2NTaGFyZURpYWxvZ0RhdGE+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRgtC10LrRgdGC0LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGlwYm9hcmQ6IENsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmQpO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAg0L7QsdGK0LXQutGCINC+0LrQvdCwINCx0YDQsNGD0LfQtdGA0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdyA9IGluamVjdChXQV9XSU5ET1cpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydHM6IFR1aUFsZXJ0U2VydmljZSA9IGluamVjdChUdWlBbGVydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LTQuNCw0LvQvtCz0L7QstGL0LzQuCDQvtC60L3QsNC80LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IFR1aURpYWxvZ1NlcnZpY2UgPSBpbmplY3QoVHVpRGlhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFNpZ25hbH0g0YTQvtGA0LzQsNGC0LAg0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQstCw0YDQuNCw0L3RgtC+0LI6INCyINGB0YLRgNC+0LrRgyDQvdCwINGI0LjRgNC+0LrQuNGFINGN0LrRgNCw0L3QsNGFLCDRgdC/0LjRgdC60L7QvCDQvdCwINGD0LfQutC40YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdNb2RlOiBTaWduYWw8J3JvdycgfCAnbGlzdCc+ID0gdG9TaWduYWwoXG4gICAgICAgIGluamVjdDxib29sZWFuPihJU19TRVJWRVIpID8gb2Y8J3JvdycgfCAnbGlzdCc+KCdsaXN0JykgOiBpbmplY3QoVFVJX1dJTkRPV19TSVpFKS5waXBlKG1hcCgocmVjdCkgPT4gKHJlY3Qud2lkdGggPiA3NjggPyAncm93JyA6ICdsaXN0JykpKSxcbiAgICAgICAgeyBpbml0aWFsVmFsdWU6ICdsaXN0JyB9XG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGB0YvQu9C60LgsINC60L7RgtC+0YDQvtC5INC90LXQvtCx0YXQvtC00LjQvNC+INC/0L7QtNC10LvQuNGC0YzRgdGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0aXRsZTogc3RyaW5nID0gdGhpcy5jb250ZXh0LmRhdGEudGl0bGU7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAsINC60L7RgtC+0YDQvtC5INC90LXQvtCx0YXQvtC00LjQvNC+INC/0L7QtNC10LvQuNGC0YzRgdGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaGFyZVVybDogc3RyaW5nID0gdGhpcy5jb250ZXh0LmRhdGEuc2hhcmVVcmw7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L7RgtC/0YDQsNCy0LrQuCDQv9C+IEVtYWlsLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbWFpbExpbms6IHN0cmluZyA9IGBtYWlsdG86P3N1YmplY3Q9JHtlbmNvZGVVUklDb21wb25lbnQoWyfQntCe0J4g0KHQvdCw0LHRhtC10L3RgtGAJywgdGhpcy50aXRsZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAtICcpKX0mYm9keT0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNoYXJlVXJsKX1gO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC+0YLQv9GA0LDQstC60Lgg0LLQviDQktCa0L7QvdGC0LDQutGC0LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZrTGluazogc3RyaW5nID0gYGh0dHBzOi8vdmsuY29tL3NoYXJlLnBocD91cmw9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5zaGFyZVVybCl9YDtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvtGC0L/RgNCw0LLQutC4INCyIFRlbGVncmFtLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZWxlZ3JhbUxpbms6IHN0cmluZyA9IGBodHRwczovL3QubWUvc2hhcmUvdXJsP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNoYXJlVXJsKX1gO1xuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uc2hhcmVTaG93LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0LrRgNGL0LLQsNC10YIg0L7QutC90L4g0L/QtdGA0LXRhdC+0LTQsCDQsiDRgdC+0YbQuNCw0LvRjNC90YPRjiDRgdC10YLRjC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGFyZUxpbmsg0KHRgdGL0LvQutCwINC/0LXRgNC10YXQvtC00LAg0LIg0YHQvtGG0LjQsNC70YzQvdGD0Y4g0YHQtdGC0YwuXG4gICAgICogQHBhcmFtIHNvY2lhbE1lZGlhIFNsdWcg0YHQvtGG0LjQsNC70YzQvdC+0Lkg0YHQtdGC0LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9wZW5TaGFyZVdpbmRvdyhzaGFyZUxpbms6IHN0cmluZywgc29jaWFsTWVkaWE6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtaXRTaGFyZUNsaWNrKHNvY2lhbE1lZGlhKTtcbiAgICAgICAgdGhpcy53aW5kb3cub3BlbihzaGFyZUxpbmssICdzaGFyZXInLCAnc3RhdHVzPTAsdG9vbGJhcj0wLHdpZHRoPTY1MCxoZWlnaHQ9NTAwJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JrQvtC/0LjRgNGD0LXRgiDRgdGB0YvQu9C60YMg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvcHlTaGFyZUxpbmsoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdFNoYXJlQ2xpY2soJ2NvcHlfdG9fY2xpcGJvYXJkJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2xpcGJvYXJkLmNvcHkodGhpcy5zaGFyZVVybCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLm9wZW4oJ9Ch0YHRi9C70LrQsCDRgdC60L7Qv9C40YDQvtCy0LDQvdCwINCyINCx0YPRhNC10YAg0L7QsdC80LXQvdCwLicsIHsgYXBwZWFyYW5jZTogJ3Bvc2l0aXZlJyB9KS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLm9wZW4oJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YHQutC+0L/QuNGA0L7QstCw0YLRjCDRgdGB0YvQu9C60YMg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LAuJywgeyBhcHBlYXJhbmNlOiAnbmVnYXRpdmUnIH0pLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC60YDRi9Cy0LDQtdGCINC00LjQsNC70L7Qs9C+0LLQvtC1INC+0LrQvdC+INGBIFFSLdC60L7QtNC+0Lwg0YHRgdGL0LvQutC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzaG93UVJDb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtaXRTaGFyZUNsaWNrKCdxcicpO1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ucXJTaG93LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4obmV3IFBvbHltb3JwaGV1c0NvbXBvbmVudChTY1FSQ29kZURpYWxvZ0NvbXBvbmVudCksIHtcbiAgICAgICAgICAgICAgICBzaXplOiAncycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudGl0bGUgfHwgJ1FSLdC60L7QtCcsXG4gICAgICAgICAgICAgICAgZGF0YTogeyBxcmRhdGE6IHRoaXMuc2hhcmVVcmwgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC/0YDQsNCy0LvRj9C10YIg0LzQtdGC0YDQuNC60YMg0LLRi9Cx0L7RgNCwINCy0LDRgNC40LDQvdGC0LAgXCLQn9C+0LTQtdC70LjRgtGM0YHRj1wiLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNoYXJlTGlua05hbWUg0J3QsNC40LzQtdC90L7QstCw0L3QuNC1INCy0LDRgNC40LDQvdGC0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBlbWl0U2hhcmVDbGljayhzaGFyZUxpbmtOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnNoYXJlQ2xpY2ssXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBzaGFyZV9saW5rX25hbWU6IHNoYXJlTGlua05hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJAaWYgKHRlcm1pbmFsLmlzUnVubmluZ09uVGVybWluYWwpIHtcbiAgICA8cCBjbGFzcz1cIi1tdC0yIG1iLTMgdGV4dC10dWktdGV4dC0wMlwiPtCh0LrQsNC90LjRgNGD0LnRgtC1IFFSLdC60L7QtC48L3A+XG4gICAgPHFyY29kZVxuICAgICAgICBbbWFyZ2luXT1cIjBcIlxuICAgICAgICBbcXJkYXRhXT1cInNoYXJlVXJsXCJcbiAgICAgICAgW3dpZHRoXT1cIjI1MFwiXG4gICAgICAgIGVsZW1lbnRUeXBlPVwiaW1nXCJcbiAgICA+PC9xcmNvZGU+XG59IEBlbHNlIHtcbiAgICBAbGV0IGlzUm93ID0gdmlld01vZGUoKSA9PT0gJ3Jvdyc7XG4gICAgQGxldCBhcHBlYXJhbmNlID0gaXNSb3cgPyAnZmxhdCcgOiAnb3V0bGluZSc7XG4gICAgQGxldCBidXR0b25DbGFzcyA9IGlzUm93ID8gJ2J1dHRvbiBfcm93JyA6ICdidXR0b24gdy1mdWxsICFqdXN0aWZ5LXN0YXJ0JztcbiAgICBAbGV0IGljb25DbGFzcyA9IGlzUm93ID8gJyFtLTAgIXNpemUtOCcgOiAnIW0tMCAhc2l6ZS02JztcbiAgICBAbGV0IGljb25TaXplID0gaXNSb3cgPyAzMiA6IDI0O1xuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdhcC0yXCJcbiAgICAgICAgW2NsYXNzLmZsZXhdPVwiaXNSb3dcIlxuICAgICAgICBbY2xhc3MuZ3JpZF09XCIhaXNSb3dcIlxuICAgICAgICBbY2xhc3MuZ3JpZC1jb2xzLTJdPVwiIWlzUm93XCJcbiAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIHNjRW1haWxMaW5rXG4gICAgICAgICAgICBsaW5rTG9jYXRpb249XCJzaGFyZS1saW5rXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJzYy1zaGFyZS1kaWFsb2dfX2VtYWlsXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIFtocmVmXT1cImVtYWlsTGlua1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cIidAdHVpLnNjLmltZy5lbWFpbCcgfCB0dWlJY29uXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJFbWFpbFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImljb25TaXplXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaWNvbkNsYXNzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj5FbWFpbDwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInNjLXNoYXJlLWRpYWxvZ19fdmtcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgW2hyZWZdPVwidmtMaW5rXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgb3BlblNoYXJlV2luZG93KHZrTGluaywgJ3ZrJylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCInQHR1aS5zYy5pbWcudmsnIHwgdHVpSWNvblwiXG4gICAgICAgICAgICAgICAgYWx0PVwi0JLQmtC+0L3RgtCw0LrRgtC1XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpY29uQ2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPtCS0JrQvtC90YLQsNC60YLQtTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInNjLXNoYXJlLWRpYWxvZ19fdGVsZWdyYW1cIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgW2hyZWZdPVwidGVsZWdyYW1MaW5rXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgb3BlblNoYXJlV2luZG93KHRlbGVncmFtTGluaywgJ3RlbGVncmFtJylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCInQHR1aS5zYy5pbWcudGVsZWdyYW0nIHwgdHVpSWNvblwiXG4gICAgICAgICAgICAgICAgYWx0PVwiVGVsZWdyYW1cIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImljb25DbGFzc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+VGVsZWdyYW08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJzYy1zaGFyZS1kaWFsb2dfX2NvcHlcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlTaGFyZUxpbmsoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cIidAdHVpLnNjLmltZy5jb3B5JyB8IHR1aUljb25cIlxuICAgICAgICAgICAgICAgIGFsdD1cItCa0L7Qv9C40YDQvtCy0LDRgtGMXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpY29uQ2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPtCa0L7Qv9C40YDQvtCy0LDRgtGMPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJzYy1zaGFyZS1kaWFsb2dfX3FyXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93UVJDb2RlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCInQHR1aS5zYy5pbWcucXItY29kZScgfCB0dWlJY29uXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJRUi3QutC+0LRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImljb25DbGFzc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+UVIt0LrQvtC0PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==