@snabcentr/client-ui 3.32.3 → 3.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/banner/sc-banner.module.d.ts +2 -1
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +1 -1
- package/cart/index.d.ts +1 -1
- package/cart/{sc-car-add-products-from-csv-dialog/sc-car-add-products-from-csv-dialog.component.d.ts → sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts} +3 -3
- package/catalog/category-card/sc-category-card.component.d.ts +0 -6
- package/catalog/hover-image-carousel/{hover-image-carousel.component.d.ts → sc-hover-image-carousel.component.d.ts} +16 -7
- package/catalog/index.d.ts +1 -0
- package/catalog/sc-catalog.module.d.ts +3 -2
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +4 -4
- package/esm2022/banner/sc-banner.component.mjs +3 -3
- package/esm2022/banner/sc-banner.module.mjs +4 -3
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +6 -6
- package/esm2022/cart/cart-item/sc-cart-item.component.mjs +4 -4
- package/esm2022/cart/index.mjs +2 -2
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +110 -0
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +4 -11
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +76 -0
- package/esm2022/catalog/index.mjs +2 -1
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +2 -2
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +4 -4
- package/esm2022/catalog/sc-catalog.module.mjs +8 -5
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +5 -6
- package/esm2022/news/news-card/sc-news-card.component.mjs +4 -8
- package/esm2022/news/sc-news.module.mjs +4 -3
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +12 -20
- package/fesm2022/snabcentr-client-ui.mjs +67 -86
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/news/news-card/sc-news-card.component.d.ts +1 -5
- package/news/sc-news.module.d.ts +2 -1
- package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +8 -14
- package/package.json +2 -2
- package/release_notes.tmp +5 -9
- package/styles/tailwind/tailwind.scss +0 -4
- package/esm2022/cart/sc-car-add-products-from-csv-dialog/sc-car-add-products-from-csv-dialog.component.mjs +0 -110
- package/esm2022/catalog/hover-image-carousel/hover-image-carousel.component.mjs +0 -76
@@ -7,11 +7,12 @@ import * as i5 from "@taiga-ui/cdk/directives/item";
|
|
7
7
|
import * as i6 from "@taiga-ui/kit";
|
8
8
|
import * as i7 from "@ng-web-apis/intersection-observer";
|
9
9
|
import * as i8 from "@taiga-ui/cdk";
|
10
|
+
import * as i9 from "@snabcentr/client-core";
|
10
11
|
/**
|
11
12
|
* Модуль баннеров.
|
12
13
|
*/
|
13
14
|
export declare class ScBannerModule {
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScBannerModule, never>;
|
15
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScBannerModule, [typeof i1.ScBannerComponent], [typeof i2.CommonModule, typeof i3.RouterModule, typeof i4.TuiButton, typeof i5.TuiItem, typeof i6.TuiCarouselComponent, typeof i6.TuiCarouselDirective, typeof i6.TuiCarouselAutoscroll, typeof i6.TuiCarouselButtons, typeof i6.TuiCarouselScroll, typeof i4.TuiLoader, typeof i7.WaIntersectionObserverDirective, typeof i7.WaIntersectionObservee, typeof i7.WaIntersectionRoot, typeof i8.TuiLet], [typeof i1.ScBannerComponent]>;
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScBannerModule, [typeof i1.ScBannerComponent], [typeof i2.CommonModule, typeof i3.RouterModule, typeof i4.TuiButton, typeof i5.TuiItem, typeof i6.TuiCarouselComponent, typeof i6.TuiCarouselDirective, typeof i6.TuiCarouselAutoscroll, typeof i6.TuiCarouselButtons, typeof i6.TuiCarouselScroll, typeof i4.TuiLoader, typeof i7.WaIntersectionObserverDirective, typeof i7.WaIntersectionObservee, typeof i7.WaIntersectionRoot, typeof i8.TuiLet, typeof i9.ScMediaImageTransformerPipe], [typeof i1.ScBannerComponent]>;
|
16
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScBannerModule>;
|
17
18
|
}
|
@@ -42,7 +42,7 @@ export declare class ScAddOrEditingCartItemFormComponent implements OnInit {
|
|
42
42
|
/**
|
43
43
|
* Минимальный метраж для товара.
|
44
44
|
*/
|
45
|
-
protected readonly minLength: import("@angular/core").Signal<number>;
|
45
|
+
protected readonly minLength: import("@angular/core").Signal<number | undefined>;
|
46
46
|
/**
|
47
47
|
* Максимальный метраж для товара.
|
48
48
|
*/
|
package/cart/index.d.ts
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
export * from './cart-item/sc-cart-item.component';
|
2
|
-
export * from './sc-
|
2
|
+
export * from './sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component';
|
3
3
|
export * from './add-or-editing-cart-item-dialog';
|
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
|
|
6
6
|
/**
|
7
7
|
* Компонент диалога для добавления товаров в корзину из CSV файла.
|
8
8
|
*/
|
9
|
-
export declare class
|
9
|
+
export declare class ScCartAddProductsFromCsvDialogComponent {
|
10
10
|
/**
|
11
11
|
* Контекст диалогового окна, в котором открыт компонент.
|
12
12
|
*/
|
@@ -57,6 +57,6 @@ export declare class ScCarAddProductsFromCsvDialogComponent {
|
|
57
57
|
* @param blob Бинарный объект.
|
58
58
|
*/
|
59
59
|
private downloadExampleFile;
|
60
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
60
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScCartAddProductsFromCsvDialogComponent, never>;
|
61
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScCartAddProductsFromCsvDialogComponent, "sc-cart-add-products-from-csv-dialog", never, {}, {}, never, never, true, never>;
|
62
62
|
}
|
@@ -65,12 +65,6 @@ export declare class ScCategoryCardComponent {
|
|
65
65
|
* @param isHover Признак наведения на карточку.
|
66
66
|
*/
|
67
67
|
protected onHovered(isHover: boolean): void;
|
68
|
-
/**
|
69
|
-
* Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию ("product_not_found").
|
70
|
-
*
|
71
|
-
* @param category Данные о категории.
|
72
|
-
*/
|
73
|
-
protected getCategoryImgURL(category: ScCategory): string;
|
74
68
|
/**
|
75
69
|
* Устанавливает компонент в очередь на обновление.
|
76
70
|
*
|
@@ -1,21 +1,30 @@
|
|
1
|
-
import { WritableSignal } from '@angular/core';
|
1
|
+
import { InputSignal, Signal, WritableSignal } from '@angular/core';
|
2
|
+
import { ScIImage } from '@snabcentr/client-core';
|
2
3
|
import * as i0 from "@angular/core";
|
3
4
|
/**
|
4
5
|
* Компонент просмотра изображений через событие наведения.
|
5
6
|
*/
|
6
|
-
export declare class
|
7
|
+
export declare class ScHoverImageCarouselComponent {
|
7
8
|
/**
|
8
9
|
* Массив изображений.
|
9
10
|
*/
|
10
|
-
images:
|
11
|
+
readonly images: InputSignal<ScIImage[]>;
|
11
12
|
/**
|
12
13
|
* Признак что необходимо отобразить элементы управления.
|
13
14
|
*/
|
14
|
-
isShowActions: boolean
|
15
|
+
readonly isShowActions: InputSignal<boolean>;
|
15
16
|
/**
|
16
17
|
* {@link WritableSignal} для отслеживания текущего индекса изображения.
|
17
18
|
*/
|
18
|
-
currentIndex: WritableSignal<number>;
|
19
|
+
readonly currentIndex: WritableSignal<number>;
|
20
|
+
/**
|
21
|
+
* {@link WritableSignal} для отслеживания текущего индекса изображения.
|
22
|
+
*/
|
23
|
+
readonly currentImage: Signal<ScIImage>;
|
24
|
+
/**
|
25
|
+
* Название товара.
|
26
|
+
*/
|
27
|
+
readonly productName: InputSignal<string | undefined>;
|
19
28
|
/**
|
20
29
|
* Обработчик события `mousemove.silent`.
|
21
30
|
*
|
@@ -34,6 +43,6 @@ export declare class HoverImageCarouselComponent {
|
|
34
43
|
* @param index Индекс изображения, который соответствует точке.
|
35
44
|
*/
|
36
45
|
protected onDotHovered(hovered: boolean, index: number): void;
|
37
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
38
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScHoverImageCarouselComponent, never>;
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScHoverImageCarouselComponent, "sc-hover-image-carousel", never, { "images": { "alias": "images"; "required": true; "isSignal": true; }; "isShowActions": { "alias": "isShowActions"; "required": false; "isSignal": true; }; "productName": { "alias": "productName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
39
48
|
}
|
package/catalog/index.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
export * from './download-price-list/sc-download-price-list.component';
|
2
2
|
export * from './category-card/sc-category-card.component';
|
3
|
+
export * from './hover-image-carousel/sc-hover-image-carousel.component';
|
3
4
|
export * from './input-quantity/sc-input-quantity.component';
|
4
5
|
export * from './notify-when-in-stock-dialog';
|
5
6
|
export * from './price-card/sc-price-card.component';
|
@@ -11,18 +11,19 @@ import * as i9 from "@angular/forms";
|
|
11
11
|
import * as i10 from "@taiga-ui/kit";
|
12
12
|
import * as i11 from "@taiga-ui/cdk";
|
13
13
|
import * as i12 from "@taiga-ui/addon-charts";
|
14
|
-
import * as i13 from "./hover-image-carousel/hover-image-carousel.component";
|
14
|
+
import * as i13 from "./hover-image-carousel/sc-hover-image-carousel.component";
|
15
15
|
import * as i14 from "./cost-with-discount/cost-with-discount.component";
|
16
16
|
import * as i15 from "./price-card-inline/sc-price-card-inline.component";
|
17
17
|
import * as i16 from "./price-warehouse-stock/sc-price-warehouse-stock.component";
|
18
18
|
import * as i17 from "./sc-favorite-button/sc-favorite-button.component";
|
19
19
|
import * as i18 from "./input-quantity/sc-input-quantity.component";
|
20
20
|
import * as i19 from "../pipes/sc-format-date";
|
21
|
+
import * as i20 from "@snabcentr/client-core";
|
21
22
|
/**
|
22
23
|
* Модуль каталога.
|
23
24
|
*/
|
24
25
|
export declare class ScCatalogModule {
|
25
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScCatalogModule, never>;
|
26
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScCatalogModule, [typeof i1.ScPriceListPaginationComponent, typeof i2.ScCategoryCardComponent, typeof i3.ScPriceCardComponent, typeof i4.ScPriceHistoryComponent], [typeof i5.CommonModule, typeof i6.RouterModule, typeof i7.TuiButton, typeof i7.TuiIcon, typeof i8.TuiIslandDirective, typeof i8.TuiInputNumberModule, typeof i7.TuiLabel, typeof i8.TuiTextfieldControllerModule, typeof i9.FormsModule, typeof i9.ReactiveFormsModule, typeof i7.TuiHintComponent, typeof i7.TuiHintDirective, typeof i7.TuiHintOptionsDirective, typeof i7.TuiHintUnstyled, typeof i7.TuiHintDriver, typeof i7.TuiHintPosition, typeof i7.TuiHintHover, typeof i7.TuiHintOverflow, typeof i7.TuiHintDescribe, typeof i7.TuiHintHost, typeof i7.TuiHintManual, typeof i7.TuiHintPointer, typeof i10.TuiFieldErrorPipe, typeof i7.TuiLoader, typeof i7.TuiLink, typeof i10.TuiElasticContainer, typeof i11.TuiLet, typeof i11.TuiRepeatTimes, typeof i10.TuiHighlight, typeof i12.TuiLineDaysChart, typeof i11.TuiAutoFocus, typeof i12.TuiLineDaysChartHint, typeof i12.TuiAxes, typeof i10.TuiButtonLoading, typeof i10.TuiAvatar, typeof i10.TuiBadge, typeof i13.
|
27
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScCatalogModule, [typeof i1.ScPriceListPaginationComponent, typeof i2.ScCategoryCardComponent, typeof i3.ScPriceCardComponent, typeof i4.ScPriceHistoryComponent], [typeof i5.CommonModule, typeof i6.RouterModule, typeof i7.TuiButton, typeof i7.TuiIcon, typeof i8.TuiIslandDirective, typeof i8.TuiInputNumberModule, typeof i7.TuiLabel, typeof i8.TuiTextfieldControllerModule, typeof i9.FormsModule, typeof i9.ReactiveFormsModule, typeof i7.TuiHintComponent, typeof i7.TuiHintDirective, typeof i7.TuiHintOptionsDirective, typeof i7.TuiHintUnstyled, typeof i7.TuiHintDriver, typeof i7.TuiHintPosition, typeof i7.TuiHintHover, typeof i7.TuiHintOverflow, typeof i7.TuiHintDescribe, typeof i7.TuiHintHost, typeof i7.TuiHintManual, typeof i7.TuiHintPointer, typeof i10.TuiFieldErrorPipe, typeof i7.TuiLoader, typeof i7.TuiLink, typeof i10.TuiElasticContainer, typeof i11.TuiLet, typeof i11.TuiRepeatTimes, typeof i10.TuiHighlight, typeof i12.TuiLineDaysChart, typeof i11.TuiAutoFocus, typeof i12.TuiLineDaysChartHint, typeof i12.TuiAxes, typeof i10.TuiButtonLoading, typeof i10.TuiAvatar, typeof i10.TuiBadge, typeof i13.ScHoverImageCarouselComponent, typeof i10.TuiLineClamp, typeof i11.TuiHovered, typeof i14.CostWithDiscountComponent, typeof i15.ScPriceCardInlineComponent, typeof i16.ScPriceWarehouseStockComponent, typeof i17.ScFavoriteButtonComponent, typeof i18.ScInputQuantityComponent, typeof i19.ScFormatDatePipe, typeof i20.ScMediaImageTransformerPipe], [typeof i1.ScPriceListPaginationComponent, typeof i2.ScCategoryCardComponent, typeof i3.ScPriceCardComponent, typeof i4.ScPriceHistoryComponent]>;
|
27
28
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScCatalogModule>;
|
28
29
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { EventEmitter, WritableSignal } from '@angular/core';
|
2
2
|
import { FormControl } from '@angular/forms';
|
3
|
-
import { ScCartItem, ScImageHelper, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';
|
3
|
+
import { ScCartItem, ScIImage, ScImageHelper, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';
|
4
4
|
import { Observable } from 'rxjs';
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
/**
|
@@ -118,15 +118,15 @@ export declare class AbstractScPriceCard {
|
|
118
118
|
*/
|
119
119
|
get skeletonVisible(): boolean;
|
120
120
|
/**
|
121
|
-
* Возвращает
|
121
|
+
* Возвращает данные для preview-изображения карточки товара.
|
122
122
|
*/
|
123
|
-
getCardImagePreview():
|
123
|
+
getCardImagePreview(): ScIImage;
|
124
124
|
/**
|
125
125
|
* Возвращает массив превью-изображений товара.
|
126
126
|
*
|
127
127
|
* @param product Объект товара.
|
128
128
|
*/
|
129
|
-
getCardImagePreviewList(product: ScProduct):
|
129
|
+
getCardImagePreviewList(product: ScProduct): ScIImage[];
|
130
130
|
/**
|
131
131
|
* Устанавливает компонент в очередь на обновление.
|
132
132
|
*/
|
@@ -107,11 +107,11 @@ export class ScBannerComponent {
|
|
107
107
|
}
|
108
108
|
}
|
109
109
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScBannerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScBannerService }, { token: IntersectionObserverService }, { token: ElementRef }, { token: i2.ScPxConverter }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: "navigateButton", duration: "duration", bannerLocation: "bannerLocation", resizable: "resizable" }, outputs: { loadBannersEvent: "loadBannersEvent", clickBannerEvent: "clickBannerEvent" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "style.aspect-ratio": "this.aspectRatio", "class.!hidden": "this.isHidden" } }, providers: [IntersectionObserverService], queries: [{ propertyName: "bannersListRef", predicate: ["banner"] }], ngImport: i0, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n [duration]=\"duration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'image'\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n class=\"size-full\"\n >\n <picture>\n @if (banner.mediaFileWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"banner.mediaFileWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"banner.mediaFile | scMediaImageTransformer: true\"\n [alt]=\"banner.title\"\n class=\"size-full object-cover\"\n />\n </picture>\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n\n <div\n *ngIf=\"navigateButton && duration && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n</ng-container>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i5.TuiItem, selector: "[tuiItem]" }, { kind: "component", type: i6.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange", "shift"] }, { kind: "directive", type: i7.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.ScMediaImageTransformerPipe, name: "scMediaImageTransformer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
111
111
|
}
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScBannerComponent, decorators: [{
|
113
113
|
type: Component,
|
114
|
-
args: [{ selector: 'sc-banner', providers: [IntersectionObserverService], host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n [duration]=\"duration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'image'\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n
|
114
|
+
args: [{ selector: 'sc-banner', providers: [IntersectionObserverService], host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n [duration]=\"duration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'image'\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n class=\"size-full\"\n >\n <picture>\n @if (banner.mediaFileWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"banner.mediaFileWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"banner.mediaFile | scMediaImageTransformer: true\"\n [alt]=\"banner.title\"\n class=\"size-full object-cover\"\n />\n </picture>\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n\n <div\n *ngIf=\"navigateButton && duration && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n</ng-container>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\n"] }]
|
115
115
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ScBannerService }, { type: i8.IntersectionObserverService, decorators: [{
|
116
116
|
type: Inject,
|
117
117
|
args: [IntersectionObserverService]
|
@@ -140,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
140
140
|
type: HostBinding,
|
141
141
|
args: ['class.!hidden']
|
142
142
|
}] } });
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRixPQUFPLEVBQTZCLHNCQUFzQixFQUF3QixNQUFNLHdCQUF3QixDQUFDO0FBQ2pILE9BQU8sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFJbEU7O0dBRUc7QUFTSCxNQUFNLE9BQU8saUJBQWlCO0lBc0YxQjs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNxQixHQUFzQixFQUN0QixhQUE4QixFQUNPLFFBQXFDLEVBQ3RELE9BQTRCLEVBQ3pELFdBQTBCLEVBQ2pCLGtCQUF3QztRQUx4QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDTyxhQUFRLEdBQVIsUUFBUSxDQUE2QjtRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUN6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBckc3RDs7V0FFRztRQUVJLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBRUksYUFBUSxHQUFXLElBQUksQ0FBQztRQVEvQjs7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LE1BQU07Z0JBUUEsY0FBYztzQkFGcEIsZUFBZTt1QkFBQyxRQUFRO2dCQTRDbEIsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBMEJyQixRQUFRO3NCQURuQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQgeyBTY0Jhbm5lciwgU2NCYW5uZXJTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUHhDb252ZXJ0ZXIgfSBmcm9tICcuLi9oZWxwZXJzJztcblxuLyoqXG4gKiDQkdCw0L3QvdC10YAg0YEg0L/RgNC+0LrRgNGD0YLQutC+0Lkg0L/QtdGA0LXQtNCw0L3QvdGL0YUge0BsaW5rIFRlbXBsYXRlUmVmfSDRjdC70LXQvNC10L3RgtC+0LIsINC4INCx0LDQvdC90LXRgNC+0LIg0LvQvtC60LDRhtC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYmFubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2VdLFxuICAgIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NCYW5uZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvdC+0L/QutC4INC90LDQstC40LPQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC7INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0Lkg0YHQvNC10L3RiyDRgdC70LDQudC00L7QsiDQsiDQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhSAo0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSAwLCDRh9GC0L7QsdGLINC+0YLQutC70Y7Rh9C40YLRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrRg9GOINGB0LzQtdC90YMg0YHQu9Cw0LnQtNCwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyID0gNTAwMDtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmFubmVyTG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvNC/0L7QvdC10L3RgiDQtNC+0LvQttC10L0g0YDQsNGB0YLRj9Cz0LjQstCw0YLRjNGB0Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQt9Cw0LPRgNGD0LfQutC4INCx0LDQvdC90LXRgNC+0LIg0YEg0LrQvtC70LjRh9C10YHRgtCy0L7QvCDQv9C+0LvRg9GH0LXQvdC90YvRhSDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkQmFubmVyc0V2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1INCx0LDQvdC90LXRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0Jhbm5lckV2ZW50OiBFdmVudEVtaXR0ZXI8U2NCYW5uZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0Jhbm5lcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRjdC70LXQvNC10L3RgiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuSDRiNCw0LHQu9C+0L3QvtCyLlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2Jhbm5lcicpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgYmFubmVyc0xpc3RSZWY6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGC0LXQutGD0YnQtdCz0L4g0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbnRCYW5uZXJJZDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB0b2dnbGVUaW1lciQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0L/QuNGB0LrQsCDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBiYW5uZXJzJDogT2JzZXJ2YWJsZTxTY0Jhbm5lcltdPiA9IHRoaXMuYmFubmVyU2VydmljZS5iYW5uZXJzJC5waXBlKFxuICAgICAgICBtYXAoKGJhbm5lcnMpID0+IGJhbm5lcnMuZmlsdGVyKChiYW5uZXIpID0+IGJhbm5lci5sb2NhdGlvbiA9PT0gdGhpcy5iYW5uZXJMb2NhdGlvbikucmV2ZXJzZSgpKSxcbiAgICAgICAgdGFwKChiYW5uZXJzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmFubmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzcGVjdFJhdGlvID0gYCR7YmFubmVyc1swXS53aWR0aH0gLyAke2Jhbm5lcnNbMF0uaGVpZ2h0fWA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iYW5uZXJzID0gYmFubmVycztcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVRpbWVyJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWRCYW5uZXJzRXZlbnQuZW1pdChiYW5uZXJzLmxlbmd0aCk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1zaGFyZXJlcGxheVxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYmFubmVycz86IFNjQmFubmVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0LLQvtC50YHRgtCy0L4sINC+0YIg0LrQvtGC0L7RgNC+0LPQviDQt9Cw0LLQuNGB0LjRgiDRgdC+0L7RgtC90L7RiNC10L3QuNC1IGA6aG9zdGAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5hc3BlY3QtcmF0aW8nKVxuICAgIHB1YmxpYyBhc3BlY3RSYXRpbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQmFubmVyQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKiBAcGFyYW0gYmFubmVyU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQsdCw0L3QvdC10YDQsNC80LguXG4gICAgICogQHBhcmFtIGVudHJpZXMkIEludGVyc2VjdGlvbiBPYnNlcnZlciBTZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBlbGVtZW50INCt0LvQtdC80LXQvdGCINCx0LDQvdC90LXRgNCwLlxuICAgICAqIEBwYXJhbSBweENvbnZlcnRlciDQrdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwLdC/0L7QvNC+0YnQvdC40LrQsCDQtNC70Y8g0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQv9C40LrRgdC10LvQtdC5LlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmFubmVyU2VydmljZTogU2NCYW5uZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBlbnRyaWVzJDogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBweENvbnZlcnRlcjogU2NQeENvbnZlcnRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0KHQstC+0LnRgdGC0LLQviwg0L7RgiDQutC+0YLQvtGA0L7Qs9C+INC30LDQstC40YHQuNGCINC90LDQu9C40YfQuNC1INC60LvQsNGB0YHQsCBgIWhpZGRlbmAg0YMgYDpob3N0YCDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLiFoaWRkZW4nKVxuICAgIHByaXZhdGUgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmFubmVycyB8fCB0aGlzLmJhbm5lcnNMaXN0UmVmLmxlbmd0aCArIHRoaXMuYmFubmVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0L3QsNC20LDRgtC40Y8g0L3QsCDQsdCw0L3QvdC10YAsINCz0LXQvdC10YDQuNGA0YPRjtGJ0LjQuSDRgdC+0LHRi9GC0LjQtSB7QGxpbmsgY2xpY2tCYW5uZXJJbWdFdmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYmFubmVyINCR0LDQvdC90LXRgCwg0L/QviDRgdGB0YvQu9C60LUg0LrQvtGC0L7RgNC+0LPQviDRgdC+0LLQtdGA0YjRkdC9INC/0LXRgNC10YXQvtC0LlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGJhbm5lcjogU2NCYW5uZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmJhbm5lckNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgYmFubmVyX2lkOiBiYW5uZXIuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYmFubmVyLnVybCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Jhbm5lckV2ZW50LmVtaXQoYmFubmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnR1aUxldD1cImJhbm5lcnMkIHwgYXN5bmNcIj5cbiAgICA8dHVpLWNhcm91c2VsXG4gICAgICAgIFtkdXJhdGlvbl09XCJkdXJhdGlvblwiXG4gICAgICAgICNjYXJvdXNlbFxuICAgICAgICBbYXR0ci5yZXNpemFibGVdPVwicmVzaXphYmxlXCJcbiAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgYmctd2hpdGVcIlxuICAgICAgICBbKGluZGV4KV09XCJjdXJyZW50QmFubmVySWRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYmFubmVyIG9mIGJhbm5lcnM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJiYW5uZXIubWVkaWFUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGJhbm5lcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJiYW5uZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmFzcGVjdC1yYXRpb109XCJhc3BlY3RSYXRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImJhbm5lci51cmwgPyBiYW5uZXIudXJsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBiYW5uZXIubWVkaWFGaWxlICsgJyknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsIGJnLVtsZW5ndGg6MTAwJV8xMDAlXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJhbm5lcnNMaXN0UmVmXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICBbc3R5bGUuYXNwZWN0LXJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdHVpLWNhcm91c2VsPlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm5hdmlnYXRlQnV0dG9uICYmIGR1cmF0aW9uICYmIHRoaXMuYmFubmVycyAmJiB0aGlzLmJhbm5lcnNMaXN0UmVmLmxlbmd0aCArIHRoaXMuYmFubmVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgdHVpVGhlbWU9XCJsaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXMuJV09XCIxMDBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhcm91c2VsLnByZXYoKVwiXG4gICAgICAgICAgICBjbGFzcz1cIiFhYnNvbHV0ZSBsZWZ0LTJcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwubmV4dCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIHJpZ2h0LTJcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRixPQUFPLEVBQTZCLHNCQUFzQixFQUF3QixNQUFNLHdCQUF3QixDQUFDO0FBQ2pILE9BQU8sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFJbEU7O0dBRUc7QUFTSCxNQUFNLE9BQU8saUJBQWlCO0lBc0YxQjs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNxQixHQUFzQixFQUN0QixhQUE4QixFQUNPLFFBQXFDLEVBQ3RELE9BQTRCLEVBQ3pELFdBQTBCLEVBQ2pCLGtCQUF3QztRQUx4QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDTyxhQUFRLEdBQVIsUUFBUSxDQUE2QjtRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUN6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBckc3RDs7V0FFRztRQUVJLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBRUksYUFBUSxHQUFXLElBQUksQ0FBQztRQVEvQjs7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LE1BQU07Z0JBUUEsY0FBYztzQkFGcEIsZUFBZTt1QkFBQyxRQUFRO2dCQTRDbEIsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBMEJyQixRQUFRO3NCQURuQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQgeyBTY0Jhbm5lciwgU2NCYW5uZXJTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUHhDb252ZXJ0ZXIgfSBmcm9tICcuLi9oZWxwZXJzJztcblxuLyoqXG4gKiDQkdCw0L3QvdC10YAg0YEg0L/RgNC+0LrRgNGD0YLQutC+0Lkg0L/QtdGA0LXQtNCw0L3QvdGL0YUge0BsaW5rIFRlbXBsYXRlUmVmfSDRjdC70LXQvNC10L3RgtC+0LIsINC4INCx0LDQvdC90LXRgNC+0LIg0LvQvtC60LDRhtC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYmFubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2VdLFxuICAgIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NCYW5uZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvdC+0L/QutC4INC90LDQstC40LPQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC7INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0Lkg0YHQvNC10L3RiyDRgdC70LDQudC00L7QsiDQsiDQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhSAo0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSAwLCDRh9GC0L7QsdGLINC+0YLQutC70Y7Rh9C40YLRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrRg9GOINGB0LzQtdC90YMg0YHQu9Cw0LnQtNCwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyID0gNTAwMDtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmFubmVyTG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvNC/0L7QvdC10L3RgiDQtNC+0LvQttC10L0g0YDQsNGB0YLRj9Cz0LjQstCw0YLRjNGB0Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQt9Cw0LPRgNGD0LfQutC4INCx0LDQvdC90LXRgNC+0LIg0YEg0LrQvtC70LjRh9C10YHRgtCy0L7QvCDQv9C+0LvRg9GH0LXQvdC90YvRhSDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkQmFubmVyc0V2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1INCx0LDQvdC90LXRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0Jhbm5lckV2ZW50OiBFdmVudEVtaXR0ZXI8U2NCYW5uZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0Jhbm5lcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRjdC70LXQvNC10L3RgiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuSDRiNCw0LHQu9C+0L3QvtCyLlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2Jhbm5lcicpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgYmFubmVyc0xpc3RSZWY6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGC0LXQutGD0YnQtdCz0L4g0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbnRCYW5uZXJJZDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB0b2dnbGVUaW1lciQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0L/QuNGB0LrQsCDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBiYW5uZXJzJDogT2JzZXJ2YWJsZTxTY0Jhbm5lcltdPiA9IHRoaXMuYmFubmVyU2VydmljZS5iYW5uZXJzJC5waXBlKFxuICAgICAgICBtYXAoKGJhbm5lcnMpID0+IGJhbm5lcnMuZmlsdGVyKChiYW5uZXIpID0+IGJhbm5lci5sb2NhdGlvbiA9PT0gdGhpcy5iYW5uZXJMb2NhdGlvbikucmV2ZXJzZSgpKSxcbiAgICAgICAgdGFwKChiYW5uZXJzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmFubmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzcGVjdFJhdGlvID0gYCR7YmFubmVyc1swXS53aWR0aH0gLyAke2Jhbm5lcnNbMF0uaGVpZ2h0fWA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iYW5uZXJzID0gYmFubmVycztcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVRpbWVyJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWRCYW5uZXJzRXZlbnQuZW1pdChiYW5uZXJzLmxlbmd0aCk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1zaGFyZXJlcGxheVxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYmFubmVycz86IFNjQmFubmVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0LLQvtC50YHRgtCy0L4sINC+0YIg0LrQvtGC0L7RgNC+0LPQviDQt9Cw0LLQuNGB0LjRgiDRgdC+0L7RgtC90L7RiNC10L3QuNC1IGA6aG9zdGAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5hc3BlY3QtcmF0aW8nKVxuICAgIHB1YmxpYyBhc3BlY3RSYXRpbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQmFubmVyQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKiBAcGFyYW0gYmFubmVyU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQsdCw0L3QvdC10YDQsNC80LguXG4gICAgICogQHBhcmFtIGVudHJpZXMkIEludGVyc2VjdGlvbiBPYnNlcnZlciBTZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBlbGVtZW50INCt0LvQtdC80LXQvdGCINCx0LDQvdC90LXRgNCwLlxuICAgICAqIEBwYXJhbSBweENvbnZlcnRlciDQrdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwLdC/0L7QvNC+0YnQvdC40LrQsCDQtNC70Y8g0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQv9C40LrRgdC10LvQtdC5LlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmFubmVyU2VydmljZTogU2NCYW5uZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBlbnRyaWVzJDogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBweENvbnZlcnRlcjogU2NQeENvbnZlcnRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0KHQstC+0LnRgdGC0LLQviwg0L7RgiDQutC+0YLQvtGA0L7Qs9C+INC30LDQstC40YHQuNGCINC90LDQu9C40YfQuNC1INC60LvQsNGB0YHQsCBgIWhpZGRlbmAg0YMgYDpob3N0YCDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLiFoaWRkZW4nKVxuICAgIHByaXZhdGUgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmFubmVycyB8fCB0aGlzLmJhbm5lcnNMaXN0UmVmLmxlbmd0aCArIHRoaXMuYmFubmVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0L3QsNC20LDRgtC40Y8g0L3QsCDQsdCw0L3QvdC10YAsINCz0LXQvdC10YDQuNGA0YPRjtGJ0LjQuSDRgdC+0LHRi9GC0LjQtSB7QGxpbmsgY2xpY2tCYW5uZXJJbWdFdmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYmFubmVyINCR0LDQvdC90LXRgCwg0L/QviDRgdGB0YvQu9C60LUg0LrQvtGC0L7RgNC+0LPQviDRgdC+0LLQtdGA0YjRkdC9INC/0LXRgNC10YXQvtC0LlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGJhbm5lcjogU2NCYW5uZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmJhbm5lckNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgYmFubmVyX2lkOiBiYW5uZXIuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYmFubmVyLnVybCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Jhbm5lckV2ZW50LmVtaXQoYmFubmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnR1aUxldD1cImJhbm5lcnMkIHwgYXN5bmNcIj5cbiAgICA8dHVpLWNhcm91c2VsXG4gICAgICAgIFtkdXJhdGlvbl09XCJkdXJhdGlvblwiXG4gICAgICAgICNjYXJvdXNlbFxuICAgICAgICBbYXR0ci5yZXNpemFibGVdPVwicmVzaXphYmxlXCJcbiAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgYmctd2hpdGVcIlxuICAgICAgICBbKGluZGV4KV09XCJjdXJyZW50QmFubmVySWRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYmFubmVyIG9mIGJhbm5lcnM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJiYW5uZXIubWVkaWFUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGJhbm5lcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJiYW5uZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmFzcGVjdC1yYXRpb109XCJhc3BlY3RSYXRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImJhbm5lci51cmwgPyBiYW5uZXIudXJsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmFubmVyLm1lZGlhRmlsZVdlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlL3dlYnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJiYW5uZXIubWVkaWFGaWxlV2VicCB8IHNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJhbm5lci5tZWRpYUZpbGUgfCBzY01lZGlhSW1hZ2VUcmFuc2Zvcm1lcjogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYmFubmVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYmFubmVyc0xpc3RSZWZcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqdHVpSXRlbVxuICAgICAgICAgICAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90dWktY2Fyb3VzZWw+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibmF2aWdhdGVCdXR0b24gJiYgZHVyYXRpb24gJiYgdGhpcy5iYW5uZXJzICYmIHRoaXMuYmFubmVyc0xpc3RSZWYubGVuZ3RoICsgdGhpcy5iYW5uZXJzLmxlbmd0aCA+IDFcIlxuICAgICAgICB0dWlUaGVtZT1cImxpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLmNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwucHJldigpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIGxlZnQtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzLiVdPVwiMTAwXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJvdXNlbC5uZXh0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
@@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
3
3
|
import { RouterModule } from '@angular/router';
|
4
4
|
import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
|
5
|
+
import { ScMediaImageTransformerPipe } from '@snabcentr/client-core';
|
5
6
|
import { TuiLet } from '@taiga-ui/cdk';
|
6
7
|
import { TuiButton, TuiLoader } from '@taiga-ui/core';
|
7
8
|
import { TuiCarousel } from '@taiga-ui/kit';
|
@@ -15,15 +16,15 @@ import * as i3 from "@ng-web-apis/intersection-observer";
|
|
15
16
|
*/
|
16
17
|
export class ScBannerModule {
|
17
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScBannerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
18
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ScBannerModule, declarations: [ScBannerComponent], imports: [CommonModule, RouterModule, TuiButton, i1.TuiItem, i2.TuiCarouselComponent, i2.TuiCarouselDirective, i2.TuiCarouselAutoscroll, i2.TuiCarouselButtons, i2.TuiCarouselScroll, TuiLoader, i3.WaIntersectionObserverDirective, i3.WaIntersectionObservee, i3.WaIntersectionRoot, TuiLet], exports: [ScBannerComponent] }); }
|
19
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ScBannerModule, declarations: [ScBannerComponent], imports: [CommonModule, RouterModule, TuiButton, i1.TuiItem, i2.TuiCarouselComponent, i2.TuiCarouselDirective, i2.TuiCarouselAutoscroll, i2.TuiCarouselButtons, i2.TuiCarouselScroll, TuiLoader, i3.WaIntersectionObserverDirective, i3.WaIntersectionObservee, i3.WaIntersectionRoot, TuiLet, ScMediaImageTransformerPipe], exports: [ScBannerComponent] }); }
|
19
20
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScBannerModule, imports: [CommonModule, RouterModule, i2.TuiCarouselComponent, TuiLoader] }); }
|
20
21
|
}
|
21
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScBannerModule, decorators: [{
|
22
23
|
type: NgModule,
|
23
24
|
args: [{
|
24
25
|
declarations: [ScBannerComponent],
|
25
|
-
imports: [CommonModule, RouterModule, TuiButton, ...TuiCarousel, TuiLoader, ...WaIntersectionObserver, TuiLet],
|
26
|
+
imports: [CommonModule, RouterModule, TuiButton, ...TuiCarousel, TuiLoader, ...WaIntersectionObserver, TuiLet, ScMediaImageTransformerPipe],
|
26
27
|
exports: [ScBannerComponent],
|
27
28
|
}]
|
28
29
|
}] });
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBRTFEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQUpSLGlCQUFpQixhQUN0QixZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsdUlBQWtCLFNBQVMsd0ZBQTZCLE1BQU0sRUFBRSwyQkFBMkIsYUFDaEksaUJBQWlCO2dIQUVsQixjQUFjLFlBSGIsWUFBWSxFQUFFLFlBQVksMkJBQTZCLFNBQVM7OzRGQUdqRSxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsMkJBQTJCLENBQUM7b0JBQzNJLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfSBmcm9tICdAbmctd2ViLWFwaXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmltcG9ydCB7IFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTGV0IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUNhcm91c2VsIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5cbmltcG9ydCB7IFNjQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zYy1iYW5uZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LHQsNC90L3QtdGA0L7Qsi5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtTY0Jhbm5lckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBUdWlCdXR0b24sIC4uLlR1aUNhcm91c2VsLCBUdWlMb2FkZXIsIC4uLldhSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIFR1aUxldCwgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlXSxcbiAgICBleHBvcnRzOiBbU2NCYW5uZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTY0Jhbm5lck1vZHVsZSB7fVxuIl19
|
@@ -61,7 +61,7 @@ export class ScAddOrEditingCartItemFormComponent {
|
|
61
61
|
/**
|
62
62
|
* Минимальный метраж для товара.
|
63
63
|
*/
|
64
|
-
this.minLength = computed(() => this.product().properties?.minLength ?? (this.product().ignoreMinCountCheck ? 0 : this.product().minCount)
|
64
|
+
this.minLength = computed(() => this.product().properties?.minLength ?? (this.product().ignoreMinCountCheck ? 0 : this.product().minCount));
|
65
65
|
/**
|
66
66
|
* Максимальный метраж для товара.
|
67
67
|
*/
|
@@ -76,8 +76,8 @@ export class ScAddOrEditingCartItemFormComponent {
|
|
76
76
|
this.lengthHint = computed(() => {
|
77
77
|
const min = this.minLength();
|
78
78
|
const max = this.maxLength();
|
79
|
-
// eslint-disable-next-line sonarjs/no-nested-conditional,
|
80
|
-
return
|
79
|
+
// eslint-disable-next-line sonarjs/no-nested-conditional, sonarjs/prefer-nullish-coalescing
|
80
|
+
return min || max ? `(${min ? `от ${min}` : ''}${min && max ? ' ' : ''}${max ? `до ${max}` : ''} ${this.product().unit})` : '';
|
81
81
|
});
|
82
82
|
/**
|
83
83
|
* {@link Output} события добавления товара в корзину.
|
@@ -108,7 +108,7 @@ export class ScAddOrEditingCartItemFormComponent {
|
|
108
108
|
});
|
109
109
|
if (this.productIsMeasurable()) {
|
110
110
|
// Добавляем поле ввода длины, если товар измеряемый.
|
111
|
-
this.form.addControl('length', new FormControl(this.cartItem()?.length ?? this.minLength(), [Validators.required, Validators.min(0.01)]));
|
111
|
+
this.form.addControl('length', new FormControl(this.cartItem()?.length ?? this.minLength() ?? 0.01, [Validators.required, Validators.min(0.01)]));
|
112
112
|
}
|
113
113
|
// Устанавливаем количество из корзины или кратности товара.
|
114
114
|
this.form.patchValue({
|
@@ -161,7 +161,7 @@ export class ScAddOrEditingCartItemFormComponent {
|
|
161
161
|
return;
|
162
162
|
}
|
163
163
|
const length = lengthControl.value ?? 0;
|
164
|
-
let newLength = Math.max(this.minLength(), length + step);
|
164
|
+
let newLength = Math.max(this.minLength() ?? step, length + step);
|
165
165
|
// Округляем до ближайшего кратного числа.
|
166
166
|
newLength = Math.round(newLength / step) * step;
|
167
167
|
lengthControl.setValue(Number(newLength.toFixed(2)));
|
@@ -230,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
230
230
|
TuiChip,
|
231
231
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- \u0424\u043E\u0440\u043C\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u0440\u044F\u0435\u043C\u043E\u0433\u043E \u0442\u043E\u0432\u0430\u0440\u0430. -->\n<form\n *ngIf=\"product\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit()\"\n ScNextInputFocus\n class=\"flex flex-col gap-2\"\n>\n @let step = lengthStep();\n\n <!-- \u0414\u043B\u0438\u043D\u0430 \u0442\u043E\u0432\u0430\u0440\u0430 (\u043C\u0435\u0442\u0440\u0430\u0436) -->\n <label\n *ngIf=\"productIsMeasurable()\"\n tuiLabel\n >\n \u041C\u0435\u0442\u0440\u0430\u0436, {{ product().unit }}\n @if (!step || maxLength()) {\n {{ lengthHint() }}\n }\n\n <tui-textfield>\n <input\n tuiInputNumber\n formControlName=\"length\"\n [tuiNumberFormat]=\"{ precision: 2 }\"\n [max]=\"maxLength() || null\"\n [min]=\"minLength() || null\"\n (keydown.arrowDown)=\"onStepLength(-(lengthStep() ?? 0.01))\"\n (keydown.arrowUp)=\"onStepLength(lengthStep() ?? 0.01)\"\n autocomplete=\"length\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"length\"\n [error]=\"[] | tuiFieldError | async\"\n />\n <p\n *ngIf=\"lengthStep()\"\n class=\"tui-form__field-note\"\n >\n \u041C\u0435\u0442\u0440\u0430\u0436 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u0435\u043D {{ lengthStep() }}\n </p>\n </label>\n\n <!-- \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <label tuiLabel>\n \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E, \u0448\u0442.\n <tui-textfield>\n <tui-chip\n *ngIf=\"isLengthConfigurator() && productMultiplicity() && step\"\n size=\"s\"\n appearance=\"negative\"\n class=\"font-bold\"\n >\n x {{ step }} {{ product().unit }}\n </tui-chip>\n\n <input\n placeholder=\"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\"\n tuiInputNumber\n [tuiNumberFormat]=\"{ decimalMode: 'not-zero' }\"\n [min]=\"productMultiplicity()\"\n (keydown.arrowDown)=\"onStepQuantity(-productMultiplicity())\"\n (keydown.arrowUp)=\"onStepQuantity(productMultiplicity())\"\n formControlName=\"quantity\"\n autocomplete=\"quantity\"\n />\n </tui-textfield>\n <p class=\"tui-form__field-note\">\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u043E {{ productMultiplicity() }}</p>\n <tui-error\n formControlName=\"quantity\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 -->\n <label tuiLabel>\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430\n <tui-input formControlName=\"marker\">\n \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430\n <input\n tuiTextfieldLegacy\n autocomplete=\"marker\"\n />\n </tui-input>\n <tui-error\n formControlName=\"marker\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F / \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0442\u043E\u0432\u0430\u0440\u0430 \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443 -->\n <div class=\"flex flex-col items-center\">\n @let cost = totalCost$ | async;\n\n <div *ngIf=\"cost\">\n \u0418\u0442\u043E\u0433\u043E:<span class=\"text-2xl font-bold\">\n {{ cost | tuiAmount | async }}\n {{ product().currency }}\n </span>\n </div>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F / \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0442\u043E\u0432\u0430\u0440\u0430 \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443 -->\n <button\n tuiButton\n iconStart=\"@tui.check\"\n [disabled]=\"form.invalid\"\n [loading]=\"isLoading()\"\n type=\"submit\"\n class=\"mt-2\"\n >\n {{ cartItem() ? '\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C' : '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443' }}\n </button>\n </div>\n</form>\n" }]
|
232
232
|
}] });
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWRpYWxvZy9hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS9zYy1hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZGlhbG9nL2FkZC1vci1lZGl0aW5nLWNhcnQtaXRlbS1mb3JtL3NjLWFkZC1vci1lZGl0aW5nLWNhcnQtaXRlbS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBGQUEwRjtBQUUxRixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBRUgsbUJBQW1CLEVBSW5CLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3ZCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFB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SUFDVCxnQkFBZ0Isa0hBQ2hCLFNBQVMseUNBQ1QsaUJBQWlCLDJTQUlqQixhQUFhLGtEQUNiLE9BQU87OzRGQUlGLG1DQUFtQztrQkE5Qi9DLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGtDQUFrQyxXQUVuQzt3QkFDTCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsMEJBQTBCO3dCQUMxQixlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixPQUFPO3FCQUNWLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29uYXJqcy9uby1uZXN0ZWQtdGVtcGxhdGUtbGl0ZXJhbHMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTY0NhcnRJdGVtLFxuICAgIFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgU2NJTmV3Q2FydEl0ZW1CYXNlLFxuICAgIFNjSU5ld0NhcnRJdGVtTWVhc3VyZWQsXG4gICAgU2NQcm9kdWN0LFxuICAgIFNjVW5pdHNIZWxwZXIsXG4gICAgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSxcbiAgICBTY1VzZXJNZXRyaWthU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlBbW91bnRQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSwgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aU51bWJlckZvcm1hdCwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpV2l0aEFwcGVhcmFuY2UgfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHsgVHVpSWNvbnMsIFR1aVdpdGhJY29ucyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaWNvbnMnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZywgVHVpQ2hpcCwgVHVpRmllbGRFcnJvclBpcGUsIFR1aUlucHV0TnVtYmVyIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlJbnB1dE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NOZXh0SW5wdXRGb2N1c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbmV4dC1pbnB1dC1mb2N1cy9zYy1uZXh0LWlucHV0LWZvY3VzLm1vZHVsZSc7XG5pbXBvcnQgeyBTY1NlbGVjdE9uRm9jdXNpbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LW9uLWZvY3VzaW4vc2Mtc2VsZWN0LW9uLWZvY3VzaW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IHN0ZXBWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3JzL3N0ZXAtdmFsaWRhdG9yJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQvtCx0LDQstC70LXQvdC40Y8gLyDQuNC30LzQtdC90LXQvdC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2NOZXh0SW5wdXRGb2N1c01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFNjU2VsZWN0T25Gb2N1c2luRGlyZWN0aXZlLFxuICAgICAgICBUdWlOdW1iZXJGb3JtYXQsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpQXBwZWFyYW5jZSxcbiAgICAgICAgVHVpV2l0aEFwcGVhcmFuY2UsXG4gICAgICAgIFR1aUljb25zLFxuICAgICAgICBUdWlXaXRoSWNvbnMsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpSW5wdXROdW1iZXIsXG4gICAgICAgIFR1aU51bWJlckZvcm1hdCxcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlBbW91bnRQaXBlLFxuICAgICAgICBUdWlDaGlwLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkT3JFZGl0aW5nQ2FydEl0ZW1Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQtNC+0LHQsNCy0LvQtdC90LjRjyAvINC40LfQvNC10L3QtdC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwPHtcbiAgICAgICAgbGVuZ3RoPzogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgICAgIHF1YW50aXR5OiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICAgICAgbWFya2VyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9Pih7XG4gICAgICAgIHF1YW50aXR5OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIG1hcmtlcjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KCcnKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDRgtC+0LLQsNGA0LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3QgPSBpbnB1dC5yZXF1aXJlZDxTY1Byb2R1Y3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0YfRgtC+INC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LvQuCDQv9GA0L7QtNGD0LrRgtCwINC00LXQudGB0YLQstGD0LXRgiDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0LTQu9C40L3Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMZW5ndGhDb25maWd1cmF0b3IgPSBjb21wdXRlZCgoKSA9PiBCb29sZWFuKHRoaXMucHJvZHVjdCgpLnByb3BlcnRpZXM/LlsnaXNMZW5ndGhDb25maWd1cmF0b3InXSkpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INGC0L7QstCw0YDQtSDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FydEl0ZW0gPSBpbnB1dDxTY0NhcnRJdGVtIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/RgNC+0LTQsNC20Lgg0YLQvtCy0LDRgNCwINC90LAg0LzQtdGC0YDQsNC2LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwcm9kdWN0SXNNZWFzdXJhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy51bml0c0hlbHBlci5wcm9kdWN0SXNNZWFzdXJhYmxlKHRoaXMucHJvZHVjdCgpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQmtGA0LDRgtC90L7RgdGC0Ywg0LrQvtC70LjRh9C10YHRgtCy0LAg0LTQu9GPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZHVjdE11bHRpcGxpY2l0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudW5pdHNIZWxwZXIucHJvZHVjdE11bHRpcGxpY2l0eSh0aGlzLnByb2R1Y3QoKSkpO1xuXG4gICAgLyoqXG4gICAgICog0JzQuNC90LjQvNCw0LvRjNC90YvQuSDQvNC10YLRgNCw0LYg0LTQu9GPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubWluTGVuZ3RoID8/ICh0aGlzLnByb2R1Y3QoKS5pZ25vcmVNaW5Db3VudENoZWNrID8gMCA6IHRoaXMucHJvZHVjdCgpLm1pbkNvdW50KSA/PyAxKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDQvNC10YLRgNCw0LYg0LTQu9GPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4TGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubWF4TGVuZ3RoKTtcblxuICAgIC8qKlxuICAgICAqINCo0LDQsyDQuNC30LzQtdC90LXQvdC40Y8g0LzQtdGC0YDQsNC20LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxlbmd0aFN0ZXAgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2R1Y3QoKS5wcm9wZXJ0aWVzPy5sZW5ndGhTdGVwID8/ICh0aGlzLnByb2R1Y3QoKS5pZ25vcmVNaW5Db3VudENoZWNrID8gMCA6IHRoaXMucHJvZHVjdCgpLm1pbkNvdW50KSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LTRgdC60LDQt9C60LAg0L/QviDQvNC40L3QuNC80LDQu9GM0L3QvtC80YMg0Lgg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC80YMg0LzQtdGC0YDQsNC20YMg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsZW5ndGhIaW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBtaW4gPSB0aGlzLm1pbkxlbmd0aCgpO1xuICAgICAgICBjb25zdCBtYXggPSB0aGlzLm1heExlbmd0aCgpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLW5lc3RlZC1jb25kaXRpb25hbCwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICByZXR1cm4gKG1pbiA/PyBtYXgpID8gYCgke21pbiA/IGDQvtGCICR7bWlufWAgOiAnJ30ke21pbiAmJiBtYXggPyAnICcgOiAnJ30ke21heCA/IGDQtNC+ICR7bWF4fWAgOiAnJ30gJHt0aGlzLnByb2R1Y3QoKS51bml0fSlgIDogJyc7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNGC0L7Qs9C+0LLQsNGPINGB0YLQvtC40LzQvtGB0YLRjCDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRvdGFsQ29zdCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPdXRwdXR9INGB0L7QsdGL0YLQuNGPINC00L7QsdCw0LLQu9C10L3QuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3Rgy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYWRkVG9DYXJ0ID0gb3V0cHV0PFNjSU5ld0NhcnRJdGVtQmFzZT4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPdXRwdXR9INGB0L7QsdGL0YLQuNGPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0Q2FydEl0ZW0gPSBvdXRwdXQ8T21pdDxTY0lOZXdDYXJ0SXRlbUJhc2UsICdwcm9kdWN0SWQnPj4oKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgi3Qv9C+0LzQvtGJ0L3QuNC6INC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRzSGVscGVyOiBTY1VuaXRzSGVscGVyID0gaW5qZWN0KFNjVW5pdHNIZWxwZXIpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2FydEl0ZW1BZGRTaG93LFxuICAgICAgICAgICAgcGFyYW1zOiB7IHByb2R1Y3RfaWQ6IHRoaXMucHJvZHVjdCgpLmlkIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb2R1Y3RJc01lYXN1cmFibGUoKSkge1xuICAgICAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC/0L7Qu9C1INCy0LLQvtC00LAg0LTQu9C40L3Riywg0LXRgdC70Lgg0YLQvtCy0LDRgCDQuNC30LzQtdGA0Y/QtdC80YvQuS5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdsZW5ndGgnLCBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4odGhpcy5jYXJ0SXRlbSgpPy5sZW5ndGggPz8gdGhpcy5taW5MZW5ndGgoKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDAuMDEpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LjQtyDQutC+0YDQt9C40L3RiyDQuNC70Lgg0LrRgNCw0YLQvdC+0YHRgtC4INGC0L7QstCw0YDQsC5cbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMuY2FydEl0ZW0oKT8ucXVhbnRpdHkgPz8gdGhpcy51bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHRoaXMucHJvZHVjdCgpKSxcbiAgICAgICAgICAgIG1hcmtlcjogdGhpcy5jYXJ0SXRlbSgpPy5tYXJrZXIgPz8gJycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmxlbmd0aFN0ZXAoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xlbmd0aENvbmZpZ3VyYXRvcigpICYmIHRoaXMubGVuZ3RoU3RlcCgpICYmIHRoaXMuZm9ybS5jb250cm9scy5xdWFudGl0eS52YWx1ZSAmJiBzdGVwKSB7XG4gICAgICAgICAgICAvLyDQldGB0LvQuCDQtdGB0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0LTQu9C40L3Riywg0YDQsNGB0YHRh9C40YLRi9Cy0LDQtdC8INC90LDRh9Cw0LvRjNC90L4g0LfQvdCw0YfQtdC90LjQtSDQtNC70LjQvdGLLlxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxlbmd0aD8ucGF0Y2hWYWx1ZSh0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkudmFsdWUgKiBzdGVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQstCw0LvQuNC00LDRhtC40Y4g0YjQsNCz0LAg0LTQu9GPINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkuYWRkVmFsaWRhdG9ycyhzdGVwVmFsaWRhdG9yKHRoaXMudW5pdHNIZWxwZXIucHJvZHVjdFN0ZXBGb3JWYWxpZGF0b3IodGhpcy5wcm9kdWN0KCkpKSk7XG4gICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQstCw0LvQuNC00LDRhtC40Y4g0YjQsNCz0LAg0LTQu9GPINC00LvQuNC90YsuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xlbmd0aCcpPy5hZGRWYWxpZGF0b3JzKHN0ZXBWYWxpZGF0b3IodGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubGVuZ3RoU3RlcCA/PyAodGhpcy5wcm9kdWN0KCkuaWdub3JlTWluQ291bnRDaGVjayA/IDAgOiAodGhpcy5wcm9kdWN0KCkubWluQ291bnQgPz8gMCkpKSk7XG5cbiAgICAgICAgLy8g0KHRh9C40YLQsNC10Lwg0LjRgtC+0LPQvtCy0YPRjiDRgdGC0L7QuNC80L7RgdGC0Ywg0LfQsNC60LDQt9CwLlxuICAgICAgICB0aGlzLnRvdGFsQ29zdCQgPSB0dWlDb250cm9sVmFsdWU8e1xuICAgICAgICAgICAgbGVuZ3RoPzogbnVtYmVyO1xuICAgICAgICAgICAgcXVhbnRpdHk6IG51bWJlcjtcbiAgICAgICAgfT4odGhpcy5mb3JtKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyDQmNGB0L/RgNCw0LLQu9GP0LXQvCDQvtGI0LjQsdC60YMgTkcwOTUwLlxuICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IHByZXZpb3VzLmxlbmd0aCA9PT0gY3VycmVudC5sZW5ndGggJiYgcHJldmlvdXMucXVhbnRpdHkgPT09IGN1cnJlbnQucXVhbnRpdHkpLCAvLyDQotC+0LvRjNC60L4g0L/RgNC4INC40LfQvNC10L3QtdC90LjQuCDQt9C90LDRh9C10L3QuNC5XG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5mb3JtLnZhbHVlIGFzIHsgbGVuZ3RoPzogbnVtYmVyOyBxdWFudGl0eTogbnVtYmVyIH0pLFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIG1hcCgoW3ByZXZpb3VzLCBjdXJyZW50XSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdsZW5ndGgnKTtcblxuICAgICAgICAgICAgICAgIC8vINCV0YHQu9C4INC90LXRgiDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDQtNC70LjQvdGLINC40LvQuCDQvdC10LrQvtGA0YDQtdC60YLQvdGL0LUg0LTQsNC90L3Ri9C1IOKAlCDQstC+0LfQstGA0LDRidCw0LXQvCDQsdC10Lcg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0xlbmd0aENvbmZpZ3VyYXRvcigpIHx8IGlzVW5kZWZpbmVkKGN1cnJlbnQubGVuZ3RoKSB8fCAhbGVuZ3RoQ29udHJvbCB8fCB0aGlzLmZvcm0uaW52YWxpZCB8fCAhc3RlcCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQldGB0LvQuCDQuNC30LzQtdC90LjQu9C+0YHRjCDQutC+0LvQuNGH0LXRgdGC0LLQviDigJQg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNC10Lwg0LTQu9C40L3Rgy5cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMucXVhbnRpdHkgIT09IGN1cnJlbnQucXVhbnRpdHkgJiYgdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnZhbHVlICogc3RlcDtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ29udHJvbC5wYXRjaFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQldGB0LvQuCDQuNC30LzQtdC90LjQu9Cw0YHRjCDQtNC70LjQvdCwIOKAlCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQuCDQstC+0LfQstGA0LDRidCw0LXQvCDQt9C90LDRh9C10L3QuNC1INC00LvQuNC90YsuXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzLmxlbmd0aCAhPT0gY3VycmVudC5sZW5ndGggJiYgbGVuZ3RoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGxlbmd0aENvbnRyb2wudmFsdWUgLyBzdGVwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkucGF0Y2hWYWx1ZShuZXdWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVuZ3RoOiBzdGVwLCBxdWFudGl0eTogbmV3VmFsdWUgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQktC+0LfQstGA0LDRidCw0LXQvCDQuNGC0L7Qs9C+0LLRi9C1INC30L3QsNGH0LXQvdC40Y8g0LTQu9GPINGA0LDRgdGH0ZHRgtCwINGB0YLQvtC40LzQvtGB0YLQuC5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBsZW5ndGg6IHN0ZXAsIHF1YW50aXR5OiBjdXJyZW50LnF1YW50aXR5IH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vINCh0YfQuNGC0LDQtdC8INGB0YLQvtC40LzQvtGB0YLRjDog0YbQtdC90LAgKiDQtNC70LjQvdCwICog0LrQvtC70LjRh9C10YHRgtCy0L4uXG4gICAgICAgICAgICBtYXAoKHsgbGVuZ3RoLCBxdWFudGl0eSB9KSA9PiAodGhpcy5wcm9kdWN0KCkuY29zdFJ1YiA/PyAwKSAqIChsZW5ndGggPz8gMSkgKiBxdWFudGl0eSksXG4gICAgICAgICAgICBtYXAoKHN1bSkgPT4gTWF0aC5yb3VuZChzdW0gKiAxMDApIC8gMTAwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINGI0LDQs9CwINC80LXRgtGA0LDQttCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0ZXAg0KjQsNCzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0ZXBMZW5ndGgoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxlbmd0aENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdsZW5ndGgnKTtcblxuICAgICAgICBpZiAoIXRoaXMucHJvZHVjdElzTWVhc3VyYWJsZSgpIHx8ICFsZW5ndGhDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSBsZW5ndGhDb250cm9sLnZhbHVlID8/IDA7XG4gICAgICAgIGxldCBuZXdMZW5ndGggPSBNYXRoLm1heCh0aGlzLm1pbkxlbmd0aCgpLCBsZW5ndGggKyBzdGVwKTtcbiAgICAgICAgLy8g0J7QutGA0YPQs9C70Y/QtdC8INC00L4g0LHQu9C40LbQsNC50YjQtdCz0L4g0LrRgNCw0YLQvdC+0LPQviDRh9C40YHQu9CwLlxuICAgICAgICBuZXdMZW5ndGggPSBNYXRoLnJvdW5kKG5ld0xlbmd0aCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgbGVuZ3RoQ29udHJvbC5zZXRWYWx1ZShOdW1iZXIobmV3TGVuZ3RoLnRvRml4ZWQoMikpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyDRiNCw0LPQsCDQutC+0LvQuNGH0LXRgdGC0LLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGVwINCo0LDQsy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25TdGVwUXVhbnRpdHkoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHF1YW50aXR5ID0gdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnZhbHVlID8/IDA7XG5cbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnNldFZhbHVlKE1hdGgubWF4KHRoaXMucHJvZHVjdE11bHRpcGxpY2l0eSgpLCBxdWFudGl0eSAtIChxdWFudGl0eSAlIHN0ZXApICsgc3RlcCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIC8vINCj0LTQsNC70Y/QtdC8IG51bGwt0L/QvtC70Y8g0LjQtyDQt9C90LDRh9C10L3QuNGPINGE0L7RgNC80YsuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsPFNjSU5ld0NhcnRJdGVtTWVhc3VyZWQ+KHRoaXMuZm9ybS52YWx1ZSBhcyBTY0lOZXdDYXJ0SXRlbU1lYXN1cmVkKTtcblxuICAgICAgICAvLyDQldGB0LvQuCDRjdGC0L4g0LTQvtCx0LDQstC70LXQvdC40LUg0L3QvtCy0L7Qs9C+INGC0L7QstCw0YDQsCDigJQg0LTQvtCx0LDQstC70Y/QtdC8IHByb2R1Y3RJZC5cbiAgICAgICAgaWYgKCF0aGlzLmNhcnRJdGVtKCkpIHtcbiAgICAgICAgICAgIHZhbHVlLnByb2R1Y3RJZCA9IHRoaXMucHJvZHVjdCgpLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMubGVuZ3RoU3RlcCgpO1xuXG4gICAgICAgIC8vINCV0YHQu9C4INGC0L7QstCw0YAg0LjQt9C80LXRgNGP0LXQvNGL0Lkg0Lgg0LXRgdGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGAINC00LvQuNC90Ysg4oCUINGD0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INC00LvQuNC90YMg0L/QviDRiNCw0LPRgyAo0LrQvtC70LjRh9C10YHRgtCy0L4g0YPQttC1INCx0YPQtNC10YIg0LLRi9GH0LjRgdC70LXQvdC+INC/0L4g0YTQvtGA0LzRg9C70LUg0JzQtdGC0YDQsNC2L21pbi1jb3VudClcbiAgICAgICAgaWYgKHRoaXMucHJvZHVjdElzTWVhc3VyYWJsZSgpICYmIHRoaXMuaXNMZW5ndGhDb25maWd1cmF0b3IoKSAmJiBzdGVwKSB7XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPSBzdGVwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0J/QvtC80LXRh9Cw0LXQvCDQstGB0LUg0L/QvtC70Y8g0YTQvtGA0LzRiyDQutCw0LogXCJ0b3VjaFwiINC4INC30LDQv9GD0YHQutCw0LXQvCDQstCw0LvQuNC00LDRhtC40Y4g0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L7RiNC40LHQvtC6INGBINGB0LXRgNCy0LXRgNCwLlxuICAgICAgICB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlKHRoaXMuZm9ybSk7XG5cbiAgICAgICAgLy8g0JIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGA0LXQttC40LzQsCDigJQg0YDQtdC00LDQutGC0LjRgNGD0LXQvCDQuNC70Lgg0LTQvtCx0LDQstC70Y/QtdC8INGC0L7QstCw0YAuXG4gICAgICAgIGlmICh0aGlzLmNhcnRJdGVtKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdENhcnRJdGVtLmVtaXQodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRUb0NhcnQuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8IS0tINCk0L7RgNC80LAg0LTQvtCx0LDQstC70LXQvdC40Y8g0LjQt9C80LXRgNGP0LXQvNC+0LPQviDRgtC+0LLQsNGA0LAuIC0tPlxuPGZvcm1cbiAgICAqbmdJZj1cInByb2R1Y3RcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIlxuICAgIFNjTmV4dElucHV0Rm9jdXNcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIlxuPlxuICAgIEBsZXQgc3RlcCA9IGxlbmd0aFN0ZXAoKTtcblxuICAgIDwhLS0g0JTQu9C40L3QsCDRgtC+0LLQsNGA0LAgKNC80LXRgtGA0LDQtikgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwicHJvZHVjdElzTWVhc3VyYWJsZSgpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCc0LXRgtGA0LDQtiwge3sgcHJvZHVjdCgpLnVuaXQgfX1cbiAgICAgICAgQGlmICghc3RlcCB8fCBtYXhMZW5ndGgoKSkge1xuICAgICAgICAgICAge3sgbGVuZ3RoSGludCgpIH19XG4gICAgICAgIH1cblxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR1aUlucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbdHVpTnVtYmVyRm9ybWF0XT1cInsgcHJlY2lzaW9uOiAyIH1cIlxuICAgICAgICAgICAgICAgIFttYXhdPVwibWF4TGVuZ3RoKCkgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJtaW5MZW5ndGgoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwib25TdGVwTGVuZ3RoKC0obGVuZ3RoU3RlcCgpID8/IDAuMDEpKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJvblN0ZXBMZW5ndGgobGVuZ3RoU3RlcCgpID8/IDAuMDEpXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJsZW5ndGhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZW5ndGhcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwibGVuZ3RoU3RlcCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHVpLWZvcm1fX2ZpZWxkLW5vdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQnNC10YLRgNCw0LYg0LTQvtC70LbQtdC9INCx0YvRgtGMINC60YDQsNGC0LXQvSB7eyBsZW5ndGhTdGVwKCkgfX1cbiAgICAgICAgPC9wPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tINCa0L7Qu9C40YfQtdGB0YLQstC+INGC0L7QstCw0YDQsCAtLT5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCa0L7Qu9C40YfQtdGB0YLQstC+LCDRiNGCLlxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDx0dWktY2hpcFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNMZW5ndGhDb25maWd1cmF0b3IoKSAmJiBwcm9kdWN0TXVsdGlwbGljaXR5KCkgJiYgc3RlcFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb250LWJvbGRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHgge3sgc3RlcCB9fSB7eyBwcm9kdWN0KCkudW5pdCB9fVxuICAgICAgICAgICAgPC90dWktY2hpcD5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQmtC+0LvQuNGH0LXRgdGC0LLQvlwiXG4gICAgICAgICAgICAgICAgdHVpSW5wdXROdW1iZXJcbiAgICAgICAgICAgICAgICBbdHVpTnVtYmVyRm9ybWF0XT1cInsgZGVjaW1hbE1vZGU6ICdub3QtemVybycgfVwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJwcm9kdWN0TXVsdGlwbGljaXR5KClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJvblN0ZXBRdWFudGl0eSgtcHJvZHVjdE11bHRpcGxpY2l0eSgpKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJvblN0ZXBRdWFudGl0eShwcm9kdWN0TXVsdGlwbGljaXR5KCkpXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicXVhbnRpdHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICA8cCBjbGFzcz1cInR1aS1mb3JtX19maWVsZC1ub3RlXCI+0JrQvtC70LjRh9C10YHRgtCy0L4g0LTQvtC70LbQvdC+INCx0YvRgtGMINC60YDQsNGC0L3QviB7eyBwcm9kdWN0TXVsdGlwbGljaXR5KCkgfX08L3A+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0JzQsNGA0LrQuNGA0L7QstC60LAgLS0+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQnNCw0YDQutC40YDQvtCy0LrQsFxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm1hcmtlclwiPlxuICAgICAgICAgICAg0JzQsNGA0LrQuNGA0L7QstC60LBcbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm1hcmtlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFya2VyXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0JrQvdC+0L/QutCwINC00L7QsdCw0LLQu9C10L3QuNGPIC8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90YMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIEBsZXQgY29zdCA9IHRvdGFsQ29zdCQgfCBhc3luYztcblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29zdFwiPlxuICAgICAgICAgICAg0JjRgtC+0LPQvjo8c3BhbiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgIHt7IGNvc3QgfCB0dWlBbW91bnQgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QoKS5jdXJyZW5jeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tINCa0L3QvtC/0LrQsCDQtNC+0LHQsNCy0LvQtdC90LjRjyAvINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdGDIC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hlY2tcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGNhcnRJdGVtKCkgPyAn0JjQt9C80LXQvdC40YLRjCcgOiAn0JTQvtCx0LDQstC40YLRjCDQsiDQutC+0YDQt9C40L3RgycgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWRpYWxvZy9hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS9zYy1hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZGlhbG9nL2FkZC1vci1lZGl0aW5nLWNhcnQtaXRlbS1mb3JtL3NjLWFkZC1vci1lZGl0aW5nLWNhcnQtaXRlbS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBGQUEwRjtBQUUxRixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBRUgsbUJBQW1CLEVBSW5CLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3ZCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFB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SUFDVCxnQkFBZ0Isa0hBQ2hCLFNBQVMseUNBQ1QsaUJBQWlCLDJTQUlqQixhQUFhLGtEQUNiLE9BQU87OzRGQUlGLG1DQUFtQztrQkE5Qi9DLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGtDQUFrQyxXQUVuQzt3QkFDTCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsMEJBQTBCO3dCQUMxQixlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixPQUFPO3FCQUNWLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29uYXJqcy9uby1uZXN0ZWQtdGVtcGxhdGUtbGl0ZXJhbHMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTY0NhcnRJdGVtLFxuICAgIFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgU2NJTmV3Q2FydEl0ZW1CYXNlLFxuICAgIFNjSU5ld0NhcnRJdGVtTWVhc3VyZWQsXG4gICAgU2NQcm9kdWN0LFxuICAgIFNjVW5pdHNIZWxwZXIsXG4gICAgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSxcbiAgICBTY1VzZXJNZXRyaWthU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlBbW91bnRQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSwgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aU51bWJlckZvcm1hdCwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpV2l0aEFwcGVhcmFuY2UgfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHsgVHVpSWNvbnMsIFR1aVdpdGhJY29ucyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaWNvbnMnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZywgVHVpQ2hpcCwgVHVpRmllbGRFcnJvclBpcGUsIFR1aUlucHV0TnVtYmVyIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlJbnB1dE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NOZXh0SW5wdXRGb2N1c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbmV4dC1pbnB1dC1mb2N1cy9zYy1uZXh0LWlucHV0LWZvY3VzLm1vZHVsZSc7XG5pbXBvcnQgeyBTY1NlbGVjdE9uRm9jdXNpbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LW9uLWZvY3VzaW4vc2Mtc2VsZWN0LW9uLWZvY3VzaW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IHN0ZXBWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3JzL3N0ZXAtdmFsaWRhdG9yJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQvtCx0LDQstC70LXQvdC40Y8gLyDQuNC30LzQtdC90LXQvdC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtYWRkLW9yLWVkaXRpbmctY2FydC1pdGVtLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1hZGQtb3ItZWRpdGluZy1jYXJ0LWl0ZW0tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2NOZXh0SW5wdXRGb2N1c01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFNjU2VsZWN0T25Gb2N1c2luRGlyZWN0aXZlLFxuICAgICAgICBUdWlOdW1iZXJGb3JtYXQsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpQXBwZWFyYW5jZSxcbiAgICAgICAgVHVpV2l0aEFwcGVhcmFuY2UsXG4gICAgICAgIFR1aUljb25zLFxuICAgICAgICBUdWlXaXRoSWNvbnMsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpSW5wdXROdW1iZXIsXG4gICAgICAgIFR1aU51bWJlckZvcm1hdCxcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlBbW91bnRQaXBlLFxuICAgICAgICBUdWlDaGlwLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkT3JFZGl0aW5nQ2FydEl0ZW1Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQtNC+0LHQsNCy0LvQtdC90LjRjyAvINC40LfQvNC10L3QtdC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwPHtcbiAgICAgICAgbGVuZ3RoPzogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgICAgIHF1YW50aXR5OiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICAgICAgbWFya2VyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9Pih7XG4gICAgICAgIHF1YW50aXR5OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIG1hcmtlcjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KCcnKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDRgtC+0LLQsNGA0LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3QgPSBpbnB1dC5yZXF1aXJlZDxTY1Byb2R1Y3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0YfRgtC+INC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LvQuCDQv9GA0L7QtNGD0LrRgtCwINC00LXQudGB0YLQstGD0LXRgiDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0LTQu9C40L3Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMZW5ndGhDb25maWd1cmF0b3IgPSBjb21wdXRlZCgoKSA9PiBCb29sZWFuKHRoaXMucHJvZHVjdCgpLnByb3BlcnRpZXM/LlsnaXNMZW5ndGhDb25maWd1cmF0b3InXSkpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INGC0L7QstCw0YDQtSDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FydEl0ZW0gPSBpbnB1dDxTY0NhcnRJdGVtIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/RgNC+0LTQsNC20Lgg0YLQvtCy0LDRgNCwINC90LAg0LzQtdGC0YDQsNC2LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwcm9kdWN0SXNNZWFzdXJhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy51bml0c0hlbHBlci5wcm9kdWN0SXNNZWFzdXJhYmxlKHRoaXMucHJvZHVjdCgpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQmtGA0LDRgtC90L7RgdGC0Ywg0LrQvtC70LjRh9C10YHRgtCy0LAg0LTQu9GPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZHVjdE11bHRpcGxpY2l0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudW5pdHNIZWxwZXIucHJvZHVjdE11bHRpcGxpY2l0eSh0aGlzLnByb2R1Y3QoKSkpO1xuXG4gICAgLyoqXG4gICAgICog0JzQuNC90LjQvNCw0LvRjNC90YvQuSDQvNC10YLRgNCw0LYg0LTQu9GPINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubWluTGVuZ3RoID8/ICh0aGlzLnByb2R1Y3QoKS5pZ25vcmVNaW5Db3VudENoZWNrID8gMCA6IHRoaXMucHJvZHVjdCgpLm1pbkNvdW50KSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0LzQtdGC0YDQsNC2INC00LvRjyDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZHVjdCgpLnByb3BlcnRpZXM/Lm1heExlbmd0aCk7XG5cbiAgICAvKipcbiAgICAgKiDQqNCw0LMg0LjQt9C80LXQvdC10L3QuNGPINC80LXRgtGA0LDQttCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsZW5ndGhTdGVwID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubGVuZ3RoU3RlcCA/PyAodGhpcy5wcm9kdWN0KCkuaWdub3JlTWluQ291bnRDaGVjayA/IDAgOiB0aGlzLnByb2R1Y3QoKS5taW5Db3VudCkpO1xuXG4gICAgLyoqXG4gICAgICog0J/QvtC00YHQutCw0LfQutCwINC/0L4g0LzQuNC90LjQvNCw0LvRjNC90L7QvNGDINC4INC80LDQutGB0LjQvNCw0LvRjNC90L7QvNGDINC80LXRgtGA0LDQttGDINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGVuZ3RoSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbWluID0gdGhpcy5taW5MZW5ndGgoKTtcbiAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5tYXhMZW5ndGgoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1uZXN0ZWQtY29uZGl0aW9uYWwsIHNvbmFyanMvcHJlZmVyLW51bGxpc2gtY29hbGVzY2luZ1xuICAgICAgICByZXR1cm4gbWluIHx8IG1heCA/IGAoJHttaW4gPyBg0L7RgiAke21pbn1gIDogJyd9JHttaW4gJiYgbWF4ID8gJyAnIDogJyd9JHttYXggPyBg0LTQviAke21heH1gIDogJyd9ICR7dGhpcy5wcm9kdWN0KCkudW5pdH0pYCA6ICcnO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JjRgtC+0LPQvtCy0LDRjyDRgdGC0L7QuNC80L7RgdGC0Ywg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0b3RhbENvc3QkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT3V0cHV0fSDRgdC+0LHRi9GC0LjRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90YMuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFkZFRvQ2FydCA9IG91dHB1dDxTY0lOZXdDYXJ0SXRlbUJhc2U+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT3V0cHV0fSDRgdC+0LHRi9GC0LjRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdENhcnRJdGVtID0gb3V0cHV0PE9taXQ8U2NJTmV3Q2FydEl0ZW1CYXNlLCAncHJvZHVjdElkJz4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIt0L/QvtC80L7RidC90LjQuiDQtNC70Y8g0YDQsNCx0L7RgtGLINGB0L4g0LfQvdCw0YfQtdC90LjRj9C80Lgg0LXQtNC40L3QuNGGINC40LfQvNC10YDQtdC90LjRjyDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bml0c0hlbHBlcjogU2NVbml0c0hlbHBlciA9IGluamVjdChTY1VuaXRzSGVscGVyKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSA9IGluamVjdChTY1VzZXJNZXRyaWthU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmNhcnRJdGVtQWRkU2hvdyxcbiAgICAgICAgICAgIHBhcmFtczogeyBwcm9kdWN0X2lkOiB0aGlzLnByb2R1Y3QoKS5pZCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5wcm9kdWN0SXNNZWFzdXJhYmxlKCkpIHtcbiAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQv9C+0LvQtSDQstCy0L7QtNCwINC00LvQuNC90YssINC10YHQu9C4INGC0L7QstCw0YAg0LjQt9C80LXRgNGP0LXQvNGL0LkuXG4gICAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnbGVuZ3RoJywgbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KHRoaXMuY2FydEl0ZW0oKT8ubGVuZ3RoID8/IHRoaXMubWluTGVuZ3RoKCkgPz8gMC4wMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDAuMDEpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LjQtyDQutC+0YDQt9C40L3RiyDQuNC70Lgg0LrRgNCw0YLQvdC+0YHRgtC4INGC0L7QstCw0YDQsC5cbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMuY2FydEl0ZW0oKT8ucXVhbnRpdHkgPz8gdGhpcy51bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHRoaXMucHJvZHVjdCgpKSxcbiAgICAgICAgICAgIG1hcmtlcjogdGhpcy5jYXJ0SXRlbSgpPy5tYXJrZXIgPz8gJycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmxlbmd0aFN0ZXAoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xlbmd0aENvbmZpZ3VyYXRvcigpICYmIHRoaXMubGVuZ3RoU3RlcCgpICYmIHRoaXMuZm9ybS5jb250cm9scy5xdWFudGl0eS52YWx1ZSAmJiBzdGVwKSB7XG4gICAgICAgICAgICAvLyDQldGB0LvQuCDQtdGB0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0LTQu9C40L3Riywg0YDQsNGB0YHRh9C40YLRi9Cy0LDQtdC8INC90LDRh9Cw0LvRjNC90L4g0LfQvdCw0YfQtdC90LjQtSDQtNC70LjQvdGLLlxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxlbmd0aD8ucGF0Y2hWYWx1ZSh0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkudmFsdWUgKiBzdGVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQstCw0LvQuNC00LDRhtC40Y4g0YjQsNCz0LAg0LTQu9GPINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkuYWRkVmFsaWRhdG9ycyhzdGVwVmFsaWRhdG9yKHRoaXMudW5pdHNIZWxwZXIucHJvZHVjdFN0ZXBGb3JWYWxpZGF0b3IodGhpcy5wcm9kdWN0KCkpKSk7XG4gICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQstCw0LvQuNC00LDRhtC40Y4g0YjQsNCz0LAg0LTQu9GPINC00LvQuNC90YsuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xlbmd0aCcpPy5hZGRWYWxpZGF0b3JzKHN0ZXBWYWxpZGF0b3IodGhpcy5wcm9kdWN0KCkucHJvcGVydGllcz8ubGVuZ3RoU3RlcCA/PyAodGhpcy5wcm9kdWN0KCkuaWdub3JlTWluQ291bnRDaGVjayA/IDAgOiAodGhpcy5wcm9kdWN0KCkubWluQ291bnQgPz8gMCkpKSk7XG5cbiAgICAgICAgLy8g0KHRh9C40YLQsNC10Lwg0LjRgtC+0LPQvtCy0YPRjiDRgdGC0L7QuNC80L7RgdGC0Ywg0LfQsNC60LDQt9CwLlxuICAgICAgICB0aGlzLnRvdGFsQ29zdCQgPSB0dWlDb250cm9sVmFsdWU8e1xuICAgICAgICAgICAgbGVuZ3RoPzogbnVtYmVyO1xuICAgICAgICAgICAgcXVhbnRpdHk6IG51bWJlcjtcbiAgICAgICAgfT4odGhpcy5mb3JtKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyDQmNGB0L/RgNCw0LLQu9GP0LXQvCDQvtGI0LjQsdC60YMgTkcwOTUwLlxuICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IHByZXZpb3VzLmxlbmd0aCA9PT0gY3VycmVudC5sZW5ndGggJiYgcHJldmlvdXMucXVhbnRpdHkgPT09IGN1cnJlbnQucXVhbnRpdHkpLCAvLyDQotC+0LvRjNC60L4g0L/RgNC4INC40LfQvNC10L3QtdC90LjQuCDQt9C90LDRh9C10L3QuNC5XG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5mb3JtLnZhbHVlIGFzIHsgbGVuZ3RoPzogbnVtYmVyOyBxdWFudGl0eTogbnVtYmVyIH0pLFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIG1hcCgoW3ByZXZpb3VzLCBjdXJyZW50XSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdsZW5ndGgnKTtcblxuICAgICAgICAgICAgICAgIC8vINCV0YHQu9C4INC90LXRgiDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDQtNC70LjQvdGLINC40LvQuCDQvdC10LrQvtGA0YDQtdC60YLQvdGL0LUg0LTQsNC90L3Ri9C1IOKAlCDQstC+0LfQstGA0LDRidCw0LXQvCDQsdC10Lcg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0xlbmd0aENvbmZpZ3VyYXRvcigpIHx8IGlzVW5kZWZpbmVkKGN1cnJlbnQubGVuZ3RoKSB8fCAhbGVuZ3RoQ29udHJvbCB8fCB0aGlzLmZvcm0uaW52YWxpZCB8fCAhc3RlcCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQldGB0LvQuCDQuNC30LzQtdC90LjQu9C+0YHRjCDQutC+0LvQuNGH0LXRgdGC0LLQviDigJQg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNC10Lwg0LTQu9C40L3Rgy5cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMucXVhbnRpdHkgIT09IGN1cnJlbnQucXVhbnRpdHkgJiYgdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzLnF1YW50aXR5LnZhbHVlICogc3RlcDtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ29udHJvbC5wYXRjaFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQldGB0LvQuCDQuNC30LzQtdC90LjQu9Cw0YHRjCDQtNC70LjQvdCwIOKAlCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQuCDQstC+0LfQstGA0LDRidCw0LXQvCDQt9C90LDRh9C10L3QuNC1INC00LvQuNC90YsuXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzLmxlbmd0aCAhPT0gY3VycmVudC5sZW5ndGggJiYgbGVuZ3RoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGxlbmd0aENvbnRyb2wudmFsdWUgLyBzdGVwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkucGF0Y2hWYWx1ZShuZXdWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVuZ3RoOiBzdGVwLCBxdWFudGl0eTogbmV3VmFsdWUgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQktC+0LfQstGA0LDRidCw0LXQvCDQuNGC0L7Qs9C+0LLRi9C1INC30L3QsNGH0LXQvdC40Y8g0LTQu9GPINGA0LDRgdGH0ZHRgtCwINGB0YLQvtC40LzQvtGB0YLQuC5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBsZW5ndGg6IHN0ZXAsIHF1YW50aXR5OiBjdXJyZW50LnF1YW50aXR5IH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vINCh0YfQuNGC0LDQtdC8INGB0YLQvtC40LzQvtGB0YLRjDog0YbQtdC90LAgKiDQtNC70LjQvdCwICog0LrQvtC70LjRh9C10YHRgtCy0L4uXG4gICAgICAgICAgICBtYXAoKHsgbGVuZ3RoLCBxdWFudGl0eSB9KSA9PiAodGhpcy5wcm9kdWN0KCkuY29zdFJ1YiA/PyAwKSAqIChsZW5ndGggPz8gMSkgKiBxdWFudGl0eSksXG4gICAgICAgICAgICBtYXAoKHN1bSkgPT4gTWF0aC5yb3VuZChzdW0gKiAxMDApIC8gMTAwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINGI0LDQs9CwINC80LXRgtGA0LDQttCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0ZXAg0KjQsNCzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0ZXBMZW5ndGgoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxlbmd0aENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdsZW5ndGgnKTtcblxuICAgICAgICBpZiAoIXRoaXMucHJvZHVjdElzTWVhc3VyYWJsZSgpIHx8ICFsZW5ndGhDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSBsZW5ndGhDb250cm9sLnZhbHVlID8/IDA7XG4gICAgICAgIGxldCBuZXdMZW5ndGggPSBNYXRoLm1heCh0aGlzLm1pbkxlbmd0aCgpID8/IHN0ZXAsIGxlbmd0aCArIHN0ZXApO1xuICAgICAgICAvLyDQntC60YDRg9Cz0LvRj9C10Lwg0LTQviDQsdC70LjQttCw0LnRiNC10LPQviDQutGA0LDRgtC90L7Qs9C+INGH0LjRgdC70LAuXG4gICAgICAgIG5ld0xlbmd0aCA9IE1hdGgucm91bmQobmV3TGVuZ3RoIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICBsZW5ndGhDb250cm9sLnNldFZhbHVlKE51bWJlcihuZXdMZW5ndGgudG9GaXhlZCgyKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINGI0LDQs9CwINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0ZXAg0KjQsNCzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0ZXBRdWFudGl0eShzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXVhbnRpdHkgPSB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkudmFsdWUgPz8gMDtcblxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbnRpdHkuc2V0VmFsdWUoTWF0aC5tYXgodGhpcy5wcm9kdWN0TXVsdGlwbGljaXR5KCksIHF1YW50aXR5IC0gKHF1YW50aXR5ICUgc3RlcCkgKyBzdGVwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8g0KPQtNCw0LvRj9C10LwgbnVsbC3Qv9C+0LvRjyDQuNC3INC30L3QsNGH0LXQvdC40Y8g0YTQvtGA0LzRiy5cbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGw8U2NJTmV3Q2FydEl0ZW1NZWFzdXJlZD4odGhpcy5mb3JtLnZhbHVlIGFzIFNjSU5ld0NhcnRJdGVtTWVhc3VyZWQpO1xuXG4gICAgICAgIC8vINCV0YHQu9C4INGN0YLQviDQtNC+0LHQsNCy0LvQtdC90LjQtSDQvdC+0LLQvtCz0L4g0YLQvtCy0LDRgNCwIOKAlCDQtNC+0LHQsNCy0LvRj9C10LwgcHJvZHVjdElkLlxuICAgICAgICBpZiAoIXRoaXMuY2FydEl0ZW0oKSkge1xuICAgICAgICAgICAgdmFsdWUucHJvZHVjdElkID0gdGhpcy5wcm9kdWN0KCkuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5sZW5ndGhTdGVwKCk7XG5cbiAgICAgICAgLy8g0JXRgdC70Lgg0YLQvtCy0LDRgCDQuNC30LzQtdGA0Y/QtdC80YvQuSDQuCDQtdGB0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0LTQu9C40L3RiyDigJQg0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LTQu9C40L3RgyDQv9C+INGI0LDQs9GDICjQutC+0LvQuNGH0LXRgdGC0LLQviDRg9C20LUg0LHRg9C00LXRgiDQstGL0YfQuNGB0LvQtdC90L4g0L/QviDRhNC+0YDQvNGD0LvQtSDQnNC10YLRgNCw0LYvbWluLWNvdW50KVxuICAgICAgICBpZiAodGhpcy5wcm9kdWN0SXNNZWFzdXJhYmxlKCkgJiYgdGhpcy5pc0xlbmd0aENvbmZpZ3VyYXRvcigpICYmIHN0ZXApIHtcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9IHN0ZXA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDQn9C+0LzQtdGH0LDQtdC8INCy0YHQtSDQv9C+0LvRjyDRhNC+0YDQvNGLINC60LDQuiBcInRvdWNoXCIg0Lgg0LfQsNC/0YPRgdC60LDQtdC8INCy0LDQu9C40LTQsNGG0LjRjiDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQvtGI0LjQsdC+0Log0YEg0YHQtdGA0LLQtdGA0LAuXG4gICAgICAgIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUodGhpcy5mb3JtKTtcblxuICAgICAgICAvLyDQkiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YDQtdC20LjQvNCwIOKAlCDRgNC10LTQsNC60YLQuNGA0YPQtdC8INC40LvQuCDQtNC+0LHQsNCy0LvRj9C10Lwg0YLQvtCy0LDRgC5cbiAgICAgICAgaWYgKHRoaXMuY2FydEl0ZW0oKSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0Q2FydEl0ZW0uZW1pdCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRvQ2FydC5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjwhLS0g0KTQvtGA0LzQsCDQtNC+0LHQsNCy0LvQtdC90LjRjyDQuNC30LzQtdGA0Y/QtdC80L7Qs9C+INGC0L7QstCw0YDQsC4gLS0+XG48Zm9ybVxuICAgICpuZ0lmPVwicHJvZHVjdFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiXG4gICAgU2NOZXh0SW5wdXRGb2N1c1xuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiXG4+XG4gICAgQGxldCBzdGVwID0gbGVuZ3RoU3RlcCgpO1xuXG4gICAgPCEtLSDQlNC70LjQvdCwINGC0L7QstCw0YDQsCAo0LzQtdGC0YDQsNC2KSAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJwcm9kdWN0SXNNZWFzdXJhYmxlKClcIlxuICAgICAgICB0dWlMYWJlbFxuICAgID5cbiAgICAgICAg0JzQtdGC0YDQsNC2LCB7eyBwcm9kdWN0KCkudW5pdCB9fVxuICAgICAgICBAaWYgKCFzdGVwIHx8IG1heExlbmd0aCgpKSB7XG4gICAgICAgICAgICB7eyBsZW5ndGhIaW50KCkgfX1cbiAgICAgICAgfVxuXG4gICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpSW5wdXROdW1iZXJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZW5ndGhcIlxuICAgICAgICAgICAgICAgIFt0dWlOdW1iZXJGb3JtYXRdPVwieyBwcmVjaXNpb246IDIgfVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtYXhMZW5ndGgoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkxlbmd0aCgpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJvblN0ZXBMZW5ndGgoLShsZW5ndGhTdGVwKCkgPz8gMC4wMSkpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uU3RlcExlbmd0aChsZW5ndGhTdGVwKCkgPz8gMC4wMSlcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImxlbmd0aFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlbmd0aFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJsZW5ndGhTdGVwKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dWktZm9ybV9fZmllbGQtbm90ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCc0LXRgtGA0LDQtiDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0LrRgNCw0YLQtdC9IHt7IGxlbmd0aFN0ZXAoKSB9fVxuICAgICAgICA8L3A+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0JrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNCwIC0tPlxuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAg0JrQvtC70LjRh9C10YHRgtCy0L4sINGI0YIuXG4gICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPHR1aS1jaGlwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0xlbmd0aENvbmZpZ3VyYXRvcigpICYmIHByb2R1Y3RNdWx0aXBsaWNpdHkoKSAmJiBzdGVwXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtYm9sZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeCB7eyBzdGVwIH19IHt7IHByb2R1Y3QoKS51bml0IH19XG4gICAgICAgICAgICA8L3R1aS1jaGlwPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCa0L7Qu9C40YfQtdGB0YLQstC+XCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dE51bWJlclxuICAgICAgICAgICAgICAgIFt0dWlOdW1iZXJGb3JtYXRdPVwieyBkZWNpbWFsTW9kZTogJ25vdC16ZXJvJyB9XCJcbiAgICAgICAgICAgICAgICBbbWluXT1cInByb2R1Y3RNdWx0aXBsaWNpdHkoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uU3RlcFF1YW50aXR5KC1wcm9kdWN0TXVsdGlwbGljaXR5KCkpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uU3RlcFF1YW50aXR5KHByb2R1Y3RNdWx0aXBsaWNpdHkoKSlcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgIDxwIGNsYXNzPVwidHVpLWZvcm1fX2ZpZWxkLW5vdGVcIj7QmtC+0LvQuNGH0LXRgdGC0LLQviDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LrRgNCw0YLQvdC+IHt7IHByb2R1Y3RNdWx0aXBsaWNpdHkoKSB9fTwvcD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQnNCw0YDQutC40YDQvtCy0LrQsCAtLT5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCc0LDRgNC60LjRgNC+0LLQutCwXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibWFya2VyXCI+XG4gICAgICAgICAgICDQnNCw0YDQutC40YDQvtCy0LrQsFxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibWFya2VyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXJrZXJcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQmtC90L7Qv9C60LAg0LTQvtCx0LDQstC70LXQvdC40Y8gLyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3RgyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgQGxldCBjb3N0ID0gdG90YWxDb3N0JCB8IGFzeW5jO1xuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb3N0XCI+XG4gICAgICAgICAgICDQmNGC0L7Qs9C+OjxzcGFuIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAge3sgY29zdCB8IHR1aUFtb3VudCB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAge3sgcHJvZHVjdCgpLmN1cnJlbmN5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0g0JrQvdC+0L/QutCwINC00L7QsdCw0LLQu9C10L3QuNGPIC8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90YMgLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGVja1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgY2FydEl0ZW0oKSA/ICfQmNC30LzQtdC90LjRgtGMJyA6ICfQlNC+0LHQsNCy0LjRgtGMINCyINC60L7RgNC30LjQvdGDJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|