@snabcentr/client-ui 0.2.7 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -76,10 +76,6 @@ export declare class ScPriceCardComponent {
76
76
  * Размер компонента.
77
77
  */
78
78
  size: TuiSizeS | TuiSizeXS;
79
- /**
80
- * Признак того, нужно ли компонент растягивать на всю ширину свободного пространства.
81
- */
82
- isWidthFull: boolean;
83
79
  /**
84
80
  * Конвертация размера для компонента sc-input-quantity.
85
81
  * TODO: Решить проблему с функционалом size для разных платформ.
@@ -110,5 +106,5 @@ export declare class ScPriceCardComponent {
110
106
  */
111
107
  getCardImage(): string;
112
108
  static ɵfac: i0.ɵɵFactoryDeclaration<ScPriceCardComponent, never>;
113
- static ɵcmp: i0.ɵɵComponentDeclaration<ScPriceCardComponent, "sc-price-card", never, { "showQuantityControl": "showQuantityControl"; "cartItem": "cartItem"; "product": "product"; "size": "size"; "isWidthFull": "isWidthFull"; }, { "clickFavoriteEvent": "clickFavoriteEvent"; "clickAddToCartEvent": "clickAddToCartEvent"; "clickClearEvent": "clickClearEvent"; "clickCardEvent": "clickCardEvent"; "quantityValueChanges": "quantityValueChanges"; }, never, never, false>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScPriceCardComponent, "sc-price-card", never, { "showQuantityControl": "showQuantityControl"; "cartItem": "cartItem"; "product": "product"; "size": "size"; }, { "clickFavoriteEvent": "clickFavoriteEvent"; "clickAddToCartEvent": "clickAddToCartEvent"; "clickClearEvent": "clickClearEvent"; "clickCardEvent": "clickCardEvent"; "quantityValueChanges": "quantityValueChanges"; }, never, never, false>;
114
110
  }
@@ -89,10 +89,10 @@ export class ScCartItemMobileComponent {
89
89
  }
90
90
  }
91
91
  ScCartItemMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartItemMobileComponent, deps: [{ token: i1.UnitsHelper }, { token: TuiPreviewDialogService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component });
92
- ScCartItemMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n -->\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n -->\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <p *ngIf=\"cartItem.height\">\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "quantityUnit", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i5.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint"] }, { kind: "component", type: i3.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i3.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i7.TuiPreviewActionDirective, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i8.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
92
+ ScCartItemMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n -->\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n -->\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <p *ngIf=\"cartItem.height\">\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"unitsHelper.productIsMeasurable(product) ? '\u0448\u0442' : product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "quantityUnit", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i5.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint"] }, { kind: "component", type: i3.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i3.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i7.TuiPreviewActionDirective, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i8.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
93
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartItemMobileComponent, decorators: [{
94
94
  type: Component,
95
- args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n -->\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n -->\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <p *ngIf=\"cartItem.height\">\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
95
+ args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n -->\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <!--\n TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n -->\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <p *ngIf=\"cartItem.height\">\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"unitsHelper.productIsMeasurable(product) ? '\u0448\u0442' : product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
96
96
  }], ctorParameters: function () { return [{ type: i1.UnitsHelper }, { type: i7.TuiPreviewDialogService, decorators: [{
97
97
  type: Inject,
98
98
  args: [TuiPreviewDialogService]
@@ -116,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
116
116
  }], clickCardEvent: [{
117
117
  type: Output
118
118
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9jYXJ0LWl0ZW0tbW9iaWxlL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtLW1vYmlsZS9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0MsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7O0FBSWxFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQWtFbEM7Ozs7Ozs7T0FPRztJQUNILFlBQ29CLFdBQXdCLEVBRXZCLG9CQUE2QyxFQUM1QixJQUFhLEVBQ0csaUJBQXlCO1FBSjNELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXZCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNHLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQW5FL0U7O1dBRUc7UUFDSSxvQkFBZSxHQUErQixJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQW9CeEU7O1dBRUc7UUFFSSx5QkFBb0IsR0FBOEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBRUkscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdkU7O1dBRUc7UUFFSSx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6RTs7V0FFRztRQUVJLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUF1QmxFLENBQUM7SUEvREo7O09BRUc7SUFDSCxJQUNXLFFBQVEsQ0FBQyxJQUE0QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBMEJEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBa0JELGtCQUFrQjtJQUNYLFFBQVE7UUFDWCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzdHLENBQUM7O3NIQW5HUSx5QkFBeUIsNkNBNEV0Qix1QkFBdUIsYUFFdkIsT0FBTyxhQUNQLHVCQUF1QjswR0EvRTFCLHlCQUF5QiwyWUNoQnRDLDJxTUFnR0E7MkZEaEZhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEUxQyxNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyx1QkFBdUI7NENBckVsQix1QkFBdUI7c0JBRHZDLFNBQVM7dUJBQUMsc0JBQXNCO2dCQVl0QixRQUFRO3NCQURsQixLQUFLO2dCQW1CQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQU9BLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSxjQUFjO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTQ19QQVRIX0lNQUdFX05PVF9GT1VORCwgU0NfVVJMUywgU2NDYXJ0SXRlbSwgU2NJVXJscywgU2NQcm9kdWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBza2lwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSB9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1wcmV2aWV3JztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBVbml0c0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhcnQtaXRlbS1tb2JpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FydEl0ZW0/OiBTY0NhcnRJdGVtO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUg0YHQv9C10YbQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NwZWNpZmljYXRpb25QcmV2aWV3JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwZWNpZmljYXRpb25QcmV2aWV3UmVmPzogVGVtcGxhdGVSZWY8VHVpRGlhbG9nQ29udGV4dD47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRm9ybUNvbnRyb2x9INC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBxdWFudGl0eUNvbnRyb2w6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sKDApO1xuXG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNhcnRJdGVtKGRhdGE6IFNjQ2FydEl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY2FydEl0ZW0gPSBkYXRhO1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eUNvbnRyb2wucGF0Y2hWYWx1ZShkYXRhLnF1YW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCt0LvQtdC80LXQvdGCINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2FydEl0ZW0oKTogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJ0SXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcXVhbnRpdHlWYWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4gPSB0aGlzLnF1YW50aXR5Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShza2lwKDEpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0KPQtNCw0LvQuNGC0Ywg0LjQtyDQutC+0YDQt9C40L3Ri1wiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0RlbGV0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCj0LTQsNC70LjRgtGMINC40Lcg0LrQvtGA0LfQuNC90YtcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tTZXR0aW5nc0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QtNGD0LrRgiDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvZHVjdCgpOiBTY1Byb2R1Y3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJ0SXRlbT8ucHJvZHVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhcnRJdGVtTW9iaWxlQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1bml0c0hlbHBlciDQntCx0YrQtdC60YIt0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKiBAcGFyYW0gcHJldmlld0RpYWxvZ1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHBhdGhJbWFnZU5vdEZvdW5kINCf0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyAn0KLQvtCy0LDRgCDQvdC1INC90LDQudC00LXQvScuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFVuaXRzSGVscGVyLFxuICAgICAgICBASW5qZWN0KFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdEaWFsb2dTZXJ2aWNlOiBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSxcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIEBJbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpIHByaXZhdGUgcmVhZG9ubHkgcGF0aEltYWdlTm90Rm91bmQ6IHN0cmluZ1xuICAgICkge31cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xdWFudGl0eVZhbHVlQ2hhbmdlcyA9IHRoaXMucXVhbnRpdHlDb250cm9sLnZhbHVlQ2hhbmdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0L7QsdGA0LDQt9C40YLRjCDRgdC/0LXRhtC40YTQuNC60LDRhtC40Y4uXG4gICAgICovXG4gICAgcHVibGljIHNob3dTcGVjaWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdEaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5zcGVjaWZpY2F0aW9uUHJldmlld1JlZiB8fCAnJykuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgdGL0LvQutGDINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQutCw0YDRgtC+0YfQutC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FyZEltYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3Q/LmdldEltYWdlKHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwpID8/IHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtbC0yIG10LTIgcmVsYXRpdmUgcC00IGdhcC15LTIgZ2FwLXgtNCBmbGV4IGZsZXgtd3JhcCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXR1aS1iYXNlLTA0IHNoYWRvdy1zYy0yIHJvdW5kZWQteGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydEl0ZW0gJiYgcHJvZHVjdDsgZWxzZSBza2VsZXRvblwiPlxuICAgICAgICA8IS0tXG4gICAgICAgIFRPRE86INCd0LXQvtCx0YXQvtC00LjQvNCwINGA0LXQsNC70LjQt9Cw0YbQuNGPINGE0YPQvdC60YbQuNC+0L3QsNC70LAuXG4gICAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiBzaXplPVwibVwiIGljb249XCJzY0ljb25WZXJ0aWNhbFRocmVlRG90c1wiIGFwcGVhcmFuY2U9XCJmbG9hdFwiIHR1aU1vZGU9XCJvbkxpZ2h0XCIgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMCB0b3AtMFwiPjwvYnV0dG9uPlxuICAgICAgICAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgaWNvbj1cInNjSWNvbkJhc2tldFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHR1aU1vZGU9XCJvbkxpZ2h0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0RlbGV0ZUV2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNoYWRvdy1zYy0yICFhYnNvbHV0ZSAtbGVmdC0yIC10b3AtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNocmluay0wIGgtMjAgdy0yMCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGltZyAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCIgW3NyY109XCJnZXRDYXJkSW1hZ2UoKVwiIFthbHRdPVwicHJvZHVjdC5uYW1lXCIgW2NsYXNzLnAtNV09XCIhcHJvZHVjdC5pbWFnZXM/Lmxlbmd0aFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBzZWxmLWNlbnRlciBnYXAteC04IGdhcC15LTAuNVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxM3JlbV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgdHVpTGluayAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10dWktdGV4dC0wMiB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD7QkNGA0YLQuNC60YPQuzoge3sgcHJvZHVjdC5jb2RlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJwcm9kdWN0LnBhY2tcIj7QndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR1aUxpbmsgKm5nSWY9XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsXCIgKGNsaWNrKT1cInNob3dTcGVjaWZpY2F0aW9uKClcIj7QodC/0LXRhtC40YTQuNC60LDRhtC40Y88L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NwZWNpZmljYXRpb25QcmV2aWV3IGxldC1wcmV2aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktcHJldmlldyBbcm90YXRhYmxlXT1cImZhbHNlXCIgW3pvb21hYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKnBvbHltb3JwaGV1c091dGxldD1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmwgYXMgc3JjXCIgYWx0PVwicHJldmlld1wiIFtzcmNdPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWNvbj1cInR1aUljb25DbG9zZVwiIHRpdGxlPVwiQ2xvc2VcIiB0dWlJY29uQnV0dG9uIHR1aVByZXZpZXdBY3Rpb24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2aWV3LmNvbXBsZXRlKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc2VsZi1jZW50ZXIgdy1bMTByZW1dIGdhcC14LTggZ2FwLXktMC41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudFwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtdGhyb3VnaFwiPnt7IHByb2R1Y3QuZGlzY291bnRDb3N0U3RyaW5nIH19PC9zcGFuPiAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktc3VjY2Vzcy1maWxsIGZvbnQtYm9sZFwiPiAte3sgcHJvZHVjdC5kaXNjb3VudC5wZXJjZW50IH19JSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uSW5mb0xhcmdlXCIgW3R1aUhpbnRdPVwiZGlzY291bnRIaW50XCIgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCIgdHVpSGludERpcmVjdGlvbj1cInRvcFwiIGNsYXNzPVwidGV4dC1ibGFjayAhdGV4dC14cyAhaC00XCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNjb3VudEhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QuZGlzY291bnQubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9kdWN0LmRpc2NvdW50LmV4cGlyZWRBdCBhcyBleHBpcmVkQXRcIj7QlNCw0YLQsCDQvtC60L7QvdGH0LDQvdC40Y86IHt7IGV4cGlyZWRBdCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtYmFzZWxpbmUgZ2FwLXgtMiBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2R1Y3QuY29zdFJ1YlN0cmluZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXByb2R1Y3QucHJpY2VJblJ1YlwiIGNsYXNzPVwidGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+e3sgcHJvZHVjdC5jb3N0U3RyaW5nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1wcmljZS13YXJlaG91c2Utc3RvY2sgW3Byb2R1Y3RdPVwicHJvZHVjdFwiPjwvc2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciB3LTQ0IHRleHQteHMgdGV4dC10dWktdGV4dC0wMlwiPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgVE9ETzog0J3QtdC+0LHRhdC+0LTQuNC80LAg0YDQtdCw0LvQuNC30LDRhtC40Y8g0YTRg9C90LrRhtC40L7QvdCw0LvQsC5cbiAgICAgICAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiAoY2xpY2spPVwiY2xpY2tTZXR0aW5nc0V2ZW50LmVtaXQoKVwiIHNpemU9XCJtXCIgaWNvbj1cInNjSWNvblNldHRpbmdzXCIgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIHR1aU1vZGU9XCJvbkxpZ2h0XCI+PC9idXR0b24+XG4gICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVuaXRzSGVscGVyLnByb2R1Y3RJc01lYXN1cmFibGUocHJvZHVjdCk7IGVsc2Ugbm90TWVhc3VyYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cD7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0ge3sgcHJvZHVjdC51bml0IH19PC9wPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TWVhc3VyYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5sZW5ndGggJiYgIXVuaXRzSGVscGVyLnByb2R1Y3RJc01lYXN1cmFibGUocHJvZHVjdClcIj7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNhcnRJdGVtLndpZHRoXCI+0KjQuNGA0LjQvdCwOiB7eyBjYXJ0SXRlbS53aWR0aCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY2FydEl0ZW0uaGVpZ2h0XCI+0JLRi9GB0L7RgtCwOiB7eyBjYXJ0SXRlbS5oZWlnaHQgfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBncm93IGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMjhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbcXVhbnRpdHlVbml0XT1cInByb2R1Y3QucXVhbnRpdHlVbml0XCJcbiAgICAgICAgICAgICAgICBbc2hvd0Nyb3NzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgW3N0ZXBdPVwidW5pdHNIZWxwZXIucHJvZHVjdE11bHRpcGxpY2l0eShwcm9kdWN0KVwiXG4gICAgICAgICAgICA+PC9zYy1pbnB1dC1xdWFudGl0eT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTIwIHctMjAgYmctdHVpLWJhc2UtMDIgcm91bmRlZC14bCBcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdyb3cgZ2FwLTIuNSBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC00IHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zLzUgaC00IHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy00LzUgaC00IHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9jYXJ0LWl0ZW0tbW9iaWxlL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtLW1vYmlsZS9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0MsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7O0FBSWxFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQWtFbEM7Ozs7Ozs7T0FPRztJQUNILFlBQ29CLFdBQXdCLEVBRXZCLG9CQUE2QyxFQUM1QixJQUFhLEVBQ0csaUJBQXlCO1FBSjNELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXZCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNHLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQW5FL0U7O1dBRUc7UUFDSSxvQkFBZSxHQUErQixJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQW9CeEU7O1dBRUc7UUFFSSx5QkFBb0IsR0FBOEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBRUkscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdkU7O1dBRUc7UUFFSSx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6RTs7V0FFRztRQUVJLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUF1QmxFLENBQUM7SUEvREo7O09BRUc7SUFDSCxJQUNXLFFBQVEsQ0FBQyxJQUE0QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBMEJEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBa0JELGtCQUFrQjtJQUNYLFFBQVE7UUFDWCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzdHLENBQUM7O3NIQW5HUSx5QkFBeUIsNkNBNEV0Qix1QkFBdUIsYUFFdkIsT0FBTyxhQUNQLHVCQUF1QjswR0EvRTFCLHlCQUF5QiwyWUNoQnRDLHV1TUFnR0E7MkZEaEZhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEUxQyxNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyx1QkFBdUI7NENBckVsQix1QkFBdUI7c0JBRHZDLFNBQVM7dUJBQUMsc0JBQXNCO2dCQVl0QixRQUFRO3NCQURsQixLQUFLO2dCQW1CQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQU9BLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSxjQUFjO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTQ19QQVRIX0lNQUdFX05PVF9GT1VORCwgU0NfVVJMUywgU2NDYXJ0SXRlbSwgU2NJVXJscywgU2NQcm9kdWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBza2lwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSB9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1wcmV2aWV3JztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBVbml0c0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhcnQtaXRlbS1tb2JpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FydEl0ZW0/OiBTY0NhcnRJdGVtO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUg0YHQv9C10YbQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NwZWNpZmljYXRpb25QcmV2aWV3JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwZWNpZmljYXRpb25QcmV2aWV3UmVmPzogVGVtcGxhdGVSZWY8VHVpRGlhbG9nQ29udGV4dD47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRm9ybUNvbnRyb2x9INC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBxdWFudGl0eUNvbnRyb2w6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sKDApO1xuXG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNhcnRJdGVtKGRhdGE6IFNjQ2FydEl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY2FydEl0ZW0gPSBkYXRhO1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eUNvbnRyb2wucGF0Y2hWYWx1ZShkYXRhLnF1YW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCt0LvQtdC80LXQvdGCINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2FydEl0ZW0oKTogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJ0SXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcXVhbnRpdHlWYWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4gPSB0aGlzLnF1YW50aXR5Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShza2lwKDEpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0KPQtNCw0LvQuNGC0Ywg0LjQtyDQutC+0YDQt9C40L3Ri1wiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0RlbGV0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCj0LTQsNC70LjRgtGMINC40Lcg0LrQvtGA0LfQuNC90YtcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tTZXR0aW5nc0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QtNGD0LrRgiDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvZHVjdCgpOiBTY1Byb2R1Y3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJ0SXRlbT8ucHJvZHVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhcnRJdGVtTW9iaWxlQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1bml0c0hlbHBlciDQntCx0YrQtdC60YIt0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKiBAcGFyYW0gcHJldmlld0RpYWxvZ1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHBhdGhJbWFnZU5vdEZvdW5kINCf0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyAn0KLQvtCy0LDRgCDQvdC1INC90LDQudC00LXQvScuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFVuaXRzSGVscGVyLFxuICAgICAgICBASW5qZWN0KFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdEaWFsb2dTZXJ2aWNlOiBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSxcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIEBJbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpIHByaXZhdGUgcmVhZG9ubHkgcGF0aEltYWdlTm90Rm91bmQ6IHN0cmluZ1xuICAgICkge31cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xdWFudGl0eVZhbHVlQ2hhbmdlcyA9IHRoaXMucXVhbnRpdHlDb250cm9sLnZhbHVlQ2hhbmdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0L7QsdGA0LDQt9C40YLRjCDRgdC/0LXRhtC40YTQuNC60LDRhtC40Y4uXG4gICAgICovXG4gICAgcHVibGljIHNob3dTcGVjaWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdEaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5zcGVjaWZpY2F0aW9uUHJldmlld1JlZiB8fCAnJykuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgdGL0LvQutGDINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQutCw0YDRgtC+0YfQutC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FyZEltYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3Q/LmdldEltYWdlKHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwpID8/IHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtbC0yIG10LTIgcmVsYXRpdmUgcC00IGdhcC15LTIgZ2FwLXgtNCBmbGV4IGZsZXgtd3JhcCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXR1aS1iYXNlLTA0IHNoYWRvdy1zYy0yIHJvdW5kZWQteGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydEl0ZW0gJiYgcHJvZHVjdDsgZWxzZSBza2VsZXRvblwiPlxuICAgICAgICA8IS0tXG4gICAgICAgIFRPRE86INCd0LXQvtCx0YXQvtC00LjQvNCwINGA0LXQsNC70LjQt9Cw0YbQuNGPINGE0YPQvdC60YbQuNC+0L3QsNC70LAuXG4gICAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiBzaXplPVwibVwiIGljb249XCJzY0ljb25WZXJ0aWNhbFRocmVlRG90c1wiIGFwcGVhcmFuY2U9XCJmbG9hdFwiIHR1aU1vZGU9XCJvbkxpZ2h0XCIgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMCB0b3AtMFwiPjwvYnV0dG9uPlxuICAgICAgICAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgaWNvbj1cInNjSWNvbkJhc2tldFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHR1aU1vZGU9XCJvbkxpZ2h0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0RlbGV0ZUV2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNoYWRvdy1zYy0yICFhYnNvbHV0ZSAtbGVmdC0yIC10b3AtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNocmluay0wIGgtMjAgdy0yMCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGltZyAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCIgW3NyY109XCJnZXRDYXJkSW1hZ2UoKVwiIFthbHRdPVwicHJvZHVjdC5uYW1lXCIgW2NsYXNzLnAtNV09XCIhcHJvZHVjdC5pbWFnZXM/Lmxlbmd0aFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBzZWxmLWNlbnRlciBnYXAteC04IGdhcC15LTAuNVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxM3JlbV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgdHVpTGluayAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10dWktdGV4dC0wMiB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD7QkNGA0YLQuNC60YPQuzoge3sgcHJvZHVjdC5jb2RlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJwcm9kdWN0LnBhY2tcIj7QndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR1aUxpbmsgKm5nSWY9XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsXCIgKGNsaWNrKT1cInNob3dTcGVjaWZpY2F0aW9uKClcIj7QodC/0LXRhtC40YTQuNC60LDRhtC40Y88L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NwZWNpZmljYXRpb25QcmV2aWV3IGxldC1wcmV2aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktcHJldmlldyBbcm90YXRhYmxlXT1cImZhbHNlXCIgW3pvb21hYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKnBvbHltb3JwaGV1c091dGxldD1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmwgYXMgc3JjXCIgYWx0PVwicHJldmlld1wiIFtzcmNdPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWNvbj1cInR1aUljb25DbG9zZVwiIHRpdGxlPVwiQ2xvc2VcIiB0dWlJY29uQnV0dG9uIHR1aVByZXZpZXdBY3Rpb24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2aWV3LmNvbXBsZXRlKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc2VsZi1jZW50ZXIgdy1bMTByZW1dIGdhcC14LTggZ2FwLXktMC41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudFwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtdGhyb3VnaFwiPnt7IHByb2R1Y3QuZGlzY291bnRDb3N0U3RyaW5nIH19PC9zcGFuPiAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktc3VjY2Vzcy1maWxsIGZvbnQtYm9sZFwiPiAte3sgcHJvZHVjdC5kaXNjb3VudC5wZXJjZW50IH19JSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uSW5mb0xhcmdlXCIgW3R1aUhpbnRdPVwiZGlzY291bnRIaW50XCIgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCIgdHVpSGludERpcmVjdGlvbj1cInRvcFwiIGNsYXNzPVwidGV4dC1ibGFjayAhdGV4dC14cyAhaC00XCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNjb3VudEhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QuZGlzY291bnQubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9kdWN0LmRpc2NvdW50LmV4cGlyZWRBdCBhcyBleHBpcmVkQXRcIj7QlNCw0YLQsCDQvtC60L7QvdGH0LDQvdC40Y86IHt7IGV4cGlyZWRBdCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtYmFzZWxpbmUgZ2FwLXgtMiBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2R1Y3QuY29zdFJ1YlN0cmluZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXByb2R1Y3QucHJpY2VJblJ1YlwiIGNsYXNzPVwidGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+e3sgcHJvZHVjdC5jb3N0U3RyaW5nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1wcmljZS13YXJlaG91c2Utc3RvY2sgW3Byb2R1Y3RdPVwicHJvZHVjdFwiPjwvc2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciB3LTQ0IHRleHQteHMgdGV4dC10dWktdGV4dC0wMlwiPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgVE9ETzog0J3QtdC+0LHRhdC+0LTQuNC80LAg0YDQtdCw0LvQuNC30LDRhtC40Y8g0YTRg9C90LrRhtC40L7QvdCw0LvQsC5cbiAgICAgICAgICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiAoY2xpY2spPVwiY2xpY2tTZXR0aW5nc0V2ZW50LmVtaXQoKVwiIHNpemU9XCJtXCIgaWNvbj1cInNjSWNvblNldHRpbmdzXCIgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIHR1aU1vZGU9XCJvbkxpZ2h0XCI+PC9idXR0b24+XG4gICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVuaXRzSGVscGVyLnByb2R1Y3RJc01lYXN1cmFibGUocHJvZHVjdCk7IGVsc2Ugbm90TWVhc3VyYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cD7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0ge3sgcHJvZHVjdC51bml0IH19PC9wPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TWVhc3VyYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5sZW5ndGggJiYgIXVuaXRzSGVscGVyLnByb2R1Y3RJc01lYXN1cmFibGUocHJvZHVjdClcIj7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNhcnRJdGVtLndpZHRoXCI+0KjQuNGA0LjQvdCwOiB7eyBjYXJ0SXRlbS53aWR0aCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY2FydEl0ZW0uaGVpZ2h0XCI+0JLRi9GB0L7RgtCwOiB7eyBjYXJ0SXRlbS5oZWlnaHQgfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBncm93IGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMjhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbcXVhbnRpdHlVbml0XT1cInVuaXRzSGVscGVyLnByb2R1Y3RJc01lYXN1cmFibGUocHJvZHVjdCkgPyAn0YjRgicgOiBwcm9kdWN0LnF1YW50aXR5VW5pdFwiXG4gICAgICAgICAgICAgICAgW3Nob3dDcm9zc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIFtzdGVwXT1cInVuaXRzSGVscGVyLnByb2R1Y3RNdWx0aXBsaWNpdHkocHJvZHVjdClcIlxuICAgICAgICAgICAgPjwvc2MtaW5wdXQtcXVhbnRpdHk+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0yMCB3LTIwIGJnLXR1aS1iYXNlLTAyIHJvdW5kZWQteGwgXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBncm93IGdhcC0yLjUgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtNCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMy81IGgtNCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNC81IGgtNCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -73,10 +73,6 @@ export class ScPriceCardComponent {
73
73
  * Размер компонента.
74
74
  */
75
75
  this.size = 'm';
76
- /**
77
- * Признак того, нужно ли компонент растягивать на всю ширину свободного пространства.
78
- */
79
- this.isWidthFull = false;
80
76
  }
81
77
  /**
82
78
  * Позиция товара в корзине.
@@ -117,10 +113,10 @@ export class ScPriceCardComponent {
117
113
  }
118
114
  }
119
115
  ScPriceCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceCardComponent, deps: [{ token: i1.UnitsHelper }, { token: i2.ScAuthService }, { token: i2.ScWarehouseService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component });
120
- ScPriceCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { showQuantityControl: "showQuantityControl", cartItem: "cartItem", product: "product", size: "size", isWidthFull: "isWidthFull" }, outputs: { clickFavoriteEvent: "clickFavoriteEvent", clickAddToCartEvent: "clickAddToCartEvent", clickClearEvent: "clickClearEvent", clickCardEvent: "clickCardEvent", quantityValueChanges: "quantityValueChanges" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<!-- TODO: \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0438 \u0434\u043B\u044F \u0434\u0435\u0441\u043A\u0442\u043E\u043F\u0430 \u0438 \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 \u0442\u0430\u0439\u0433\u043E\u0432\u0441\u043A\u0438\u0435 \u0441\u0442\u0438\u043B\u0438, \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0433\u043B\u0430\u0441\u043D\u043E \u0441 \u0434\u0438\u0437\u0430\u0439\u043D\u043E\u043C. -->\n<div\n *ngIf=\"product; else skeleton\"\n class=\"h-[17rem] min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid max-h-[17rem] text-[0.75rem] text-left text-tui-text-02\"\n [style.width]=\"isWidthFull\"\n>\n <div class=\"overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-0 left-0 absolute hidden\"></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute hidden text-red-700\"></tui-svg>\n </div>\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-[0.875rem] text-[#526ED3]\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-[0.75rem] !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i4.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i4.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i4.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i6.ScFavoriteBtnComponent, selector: "sc-favorite-btn", outputs: ["clickEvent"] }, { kind: "component", type: i7.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "quantityUnit", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i8.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
116
+ ScPriceCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { showQuantityControl: "showQuantityControl", cartItem: "cartItem", product: "product", size: "size" }, outputs: { clickFavoriteEvent: "clickFavoriteEvent", clickAddToCartEvent: "clickAddToCartEvent", clickClearEvent: "clickClearEvent", clickCardEvent: "clickCardEvent", quantityValueChanges: "quantityValueChanges" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<!-- TODO: \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0438 \u0434\u043B\u044F \u0434\u0435\u0441\u043A\u0442\u043E\u043F\u0430 \u0438 \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 \u0442\u0430\u0439\u0433\u043E\u0432\u0441\u043A\u0438\u0435 \u0441\u0442\u0438\u043B\u0438, \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0433\u043B\u0430\u0441\u043D\u043E \u0441 \u0434\u0438\u0437\u0430\u0439\u043D\u043E\u043C. -->\n<div *ngIf=\"product; else skeleton\" class=\"min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid h-[17rem] text-xs\">\n <div class=\"overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-0 left-0 absolute hidden\"></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute hidden text-red-700\"></tui-svg>\n </div>\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-sm\" style=\"word-break: break-word;\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\" class=\"text-tui-text-02\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n\n <p class=\"text-tui-text-02\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\" class=\"text-tui-text-02\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i4.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i4.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i4.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i6.ScFavoriteBtnComponent, selector: "sc-favorite-btn", outputs: ["clickEvent"] }, { kind: "component", type: i7.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "quantityUnit", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i8.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
121
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceCardComponent, decorators: [{
122
118
  type: Component,
123
- args: [{ selector: 'sc-price-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- TODO: \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0438 \u0434\u043B\u044F \u0434\u0435\u0441\u043A\u0442\u043E\u043F\u0430 \u0438 \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 \u0442\u0430\u0439\u0433\u043E\u0432\u0441\u043A\u0438\u0435 \u0441\u0442\u0438\u043B\u0438, \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0433\u043B\u0430\u0441\u043D\u043E \u0441 \u0434\u0438\u0437\u0430\u0439\u043D\u043E\u043C. -->\n<div\n *ngIf=\"product; else skeleton\"\n class=\"h-[17rem] min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid max-h-[17rem] text-[0.75rem] text-left text-tui-text-02\"\n [style.width]=\"isWidthFull\"\n>\n <div class=\"overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-0 left-0 absolute hidden\"></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute hidden text-red-700\"></tui-svg>\n </div>\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-[0.875rem] text-[#526ED3]\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-[0.75rem] !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"] }]
119
+ args: [{ selector: 'sc-price-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- TODO: \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0438 \u0434\u043B\u044F \u0434\u0435\u0441\u043A\u0442\u043E\u043F\u0430 \u0438 \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 \u0442\u0430\u0439\u0433\u043E\u0432\u0441\u043A\u0438\u0435 \u0441\u0442\u0438\u043B\u0438, \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0433\u043B\u0430\u0441\u043D\u043E \u0441 \u0434\u0438\u0437\u0430\u0439\u043D\u043E\u043C. -->\n<div *ngIf=\"product; else skeleton\" class=\"min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid h-[17rem] text-xs\">\n <div class=\"overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-0 left-0 absolute hidden\"></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute hidden text-red-700\"></tui-svg>\n </div>\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-sm\" style=\"word-break: break-word;\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\" class=\"text-tui-text-02\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n\n <p class=\"text-tui-text-02\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\" class=\"text-tui-text-02\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"] }]
124
120
  }], ctorParameters: function () { return [{ type: i1.UnitsHelper }, { type: i2.ScAuthService }, { type: i2.ScWarehouseService }, { type: undefined, decorators: [{
125
121
  type: Inject,
126
122
  args: [SC_URLS]
@@ -148,7 +144,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
148
144
  }, {
149
145
  type: HostBinding,
150
146
  args: ['attr.data-size']
151
- }], isWidthFull: [{
152
- type: Input
153
147
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2UtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9wcmljZS1jYXJkL3NjLXByaWNlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2UtY2FyZC9zYy1wcmljZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0YsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7OztBQUkxSjs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUFtSDdCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDb0IsV0FBd0IsRUFDdkIsV0FBMEIsRUFDMUIsZ0JBQW9DLEVBQ25CLElBQWEsRUFDRyxpQkFBeUI7UUFKM0QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ0csc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBaEkvRTs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUVJLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQWdDNUM7O1dBRUc7UUFFSSx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6RTs7V0FFRztRQUVJLHdCQUFtQixHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXBGOztXQUVHO1FBRUksb0JBQWUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVsRjs7V0FFRztRQUVJLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBbUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFNUc7O1dBRUc7UUFDSSxvQkFBZSxHQUErQixJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFMUY7O1dBRUc7UUFFSSx5QkFBb0IsR0FBOEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFFM0Y7O1dBRUc7UUFDYSxnQkFBVyxHQUF3QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXBGOztXQUVHO1FBR0ksU0FBSSxHQUF5QixHQUFHLENBQUM7UUFFeEM7O1dBRUc7UUFFSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQWdDakMsQ0FBQztJQXRISjs7OztPQUlHO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBNkI7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBb0VEOzs7T0FHRztJQUNILElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQTBCRDs7T0FFRztJQUNILElBQVcsZUFBZTtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNwRixDQUFDOztpSEFoSlEsb0JBQW9CLDRHQWdJakIsT0FBTyxhQUNQLHVCQUF1QjtxR0FqSTFCLG9CQUFvQixpZENoQmpDLHdrS0FpRUE7MkZEakRhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OzBCQWtJMUMsTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0F2SDVCLG1CQUFtQjtzQkFEekIsS0FBSztnQkFrQkssUUFBUTtzQkFEbEIsS0FBSztnQkFjQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixNQUFNO2dCQU9BLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFPQSxlQUFlO3NCQURyQixNQUFNO2dCQU9BLGNBQWM7c0JBRHBCLE1BQU07Z0JBaUJBLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFhQSxJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU90QixXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVuaXRzSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy9zYy11bml0cy1oZWxwZXInO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQXV0aFNlcnZpY2UsIFNjQ2FydEl0ZW0sIFNjSVVybHMsIFNjUHJvZHVjdCwgU2NXYXJlaG91c2UsIFNjV2FyZWhvdXNlU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpU2l6ZVMsIFR1aVNpemVYUyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtcHJpY2UtY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByaWNlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLXByaWNlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcmljZUNhcmRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcXVhbnRpdHlTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC/0L7Qu9C1INCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dRdWFudGl0eUNvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIFRPRE86INCh0LTQtdC70LDRgtGMINGC0L7QstCw0YAg0LIg0LrQvtGA0LfQuNC90LUg0L3QsNCx0LvRjtC00LDQtdC80L7QuSDQv9C10YDQtdC80LXQvdC90L7QuSDQv9C+0YHQu9C1INGA0LXQsNC70LjQt9Cw0YbQuNC4IFRBU0s6WyM3MTQ0XS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNhcnRJdGVtKCk6IFNjQ2FydEl0ZW0gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FydEl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC30LjRhtC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1XG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINCyINC60L7RgNC30LjQvdC1INC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNhcnRJdGVtKHZhbHVlOiBTY0NhcnRJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2NhcnRJdGVtID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5xdWFudGl0eUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLl9jYXJ0SXRlbT8ucXVhbnRpdHkgPz8gbnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnF1YW50aXR5U2hvd0xvYWRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvZHVjdD86IFNjUHJvZHVjdDtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0JIg0LjQt9Cx0YDQsNC90L3QvtC1XCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrRmF2b3JpdGVFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQkiDQutC+0YDQt9C40L3Rg1wiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0FkZFRvQ2FydEV2ZW50OiBFdmVudEVtaXR0ZXI8U2NQcm9kdWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NQcm9kdWN0PigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0L7Rh9C40YHRgtC60Lgg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NsZWFyRXZlbnQ6IEV2ZW50RW1pdHRlcjxTY0NhcnRJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NDYXJ0SXRlbT4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQsNGA0YLQvtGH0LrRgyDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINCy0YvQsdGA0LDQvdC90L7Qs9C+INGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2FyZWhvdXNlU2VsZWN0JDogT2JzZXJ2YWJsZTxTY1dhcmVob3VzZSB8IG51bGw+ID0gdGhpcy53YXJlaG91c2VTZXJ2aWNlLmdldFdhcmVob3VzZVNlbGVjdENoYW5nZSQoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBGb3JtQ29udHJvbH0g0L/QvtC70Y8g0LLQstC+0LTQsCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHVibGljIHF1YW50aXR5Q29udHJvbDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcXVhbnRpdHlWYWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4gPSB0aGlzLnF1YW50aXR5Q29udHJvbC52YWx1ZUNoYW5nZXM7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0LLRgtC+0YDQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0LfQvNC10YAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgICBwdWJsaWMgc2l6ZTogVHVpU2l6ZVMgfCBUdWlTaXplWFMgPSAnbSc7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L3Rg9C20L3QviDQu9C4INC60L7QvNC/0L7QvdC10L3RgiDRgNCw0YHRgtGP0LPQuNCy0LDRgtGMINC90LAg0LLRgdGOINGI0LjRgNC40L3RgyDRgdCy0L7QsdC+0LTQvdC+0LPQviDQv9GA0L7RgdGC0YDQsNC90YHRgtCy0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNXaWR0aEZ1bGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvdCy0LXRgNGC0LDRhtC40Y8g0YDQsNC30LzQtdGA0LAg0LTQu9GPINC60L7QvNC/0L7QvdC10L3RgtCwIHNjLWlucHV0LXF1YW50aXR5LlxuICAgICAqIFRPRE86INCg0LXRiNC40YLRjCDQv9GA0L7QsdC70LXQvNGDINGBINGE0YPQvdC60YbQuNC+0L3QsNC70L7QvCBzaXplINC00LvRjyDRgNCw0LfQvdGL0YUg0L/Qu9Cw0YLRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdldFF1YW50aXR5U2l6ZSgpOiBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09ICd4cycgPyAncycgOiB0aGlzLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC30LjRhtC40Y8g0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqXG4gICAgICogVE9ETzog0KHQtNC10LvQsNGC0Ywg0YLQvtCy0LDRgCDQsiDQutC+0YDQt9C40L3QtSDQvdCw0LHQu9GO0LTQsNC10LzQvtC5INC/0LXRgNC10LzQtdC90L3QvtC5INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40LggVEFTSzpbIzcxNDRdLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhcnRJdGVtPzogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUHJpY2VDYXJkQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1bml0c0hlbHBlciDQntCx0YrQtdC60YIt0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKiBAcGFyYW0gYXV0aFNlcnZpY2Ug0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICogQHBhcmFtIHdhcmVob3VzZVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDRgdC60LvQsNC00LDQvNC4LlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHBhdGhJbWFnZU5vdEZvdW5kINCf0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyAn0KLQvtCy0LDRgCDQvdC1INC90LDQudC00LXQvScuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFVuaXRzSGVscGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHdhcmVob3VzZVNlcnZpY2U6IFNjV2FyZWhvdXNlU2VydmljZSxcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIEBJbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpIHByaXZhdGUgcmVhZG9ubHkgcGF0aEltYWdlTm90Rm91bmQ6IHN0cmluZ1xuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3Rg9C20L3QviDQv9C+0LrQsNC30LDRgtGMINGB0LrQtdC70LXRgtC+0L0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBza2VsZXRvblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5wcm9kdWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0YHRi9C70LrRgyDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40LUg0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldENhcmRJbWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0Py5nZXRJbWFnZSh0aGlzLnVybHMuaW1nU2VydmVyVXJsKSA/PyB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cbn1cbiIsIjwhLS0gVE9ETzog0YDQtdCw0LvQuNC30L7QstCw0YLRjCDQtNCw0L3QvdGL0Lkg0LrQvtC80L/QvtC90LXQvdGCINC4INC00LvRjyDQtNC10YHQutGC0L7Qv9CwINC4INC00LvRjyDQvNC+0LHQuNC70YzQvdC+0LPQviDQv9GA0LjQu9C+0LbQtdC90LjRjy4g0JjRgdC/0YDQsNCy0LjRgtGMINCy0YHQtSDQs9C70L7QsdCw0LvRjNC90YvQtSDRgtCw0LnQs9C+0LLRgdC60LjQtSDRgdGC0LjQu9C4LCDQv9GA0LjQstC10YHRgtC4INC40YUg0LIg0L/QvtGA0Y/QtNC+0Log0YHQvtCz0LvQsNGB0L3QviDRgSDQtNC40LfQsNC50L3QvtC8LiAtLT5cbjxkaXZcbiAgICAqbmdJZj1cInByb2R1Y3Q7IGVsc2Ugc2tlbGV0b25cIlxuICAgIGNsYXNzPVwiaC1bMTdyZW1dIG1pbi13LVsxMHJlbV0gc2hhZG93LW1kIHctYXV0byByb3VuZGVkLXhsIHAtMiBncmlkIG1heC1oLVsxN3JlbV0gdGV4dC1bMC43NXJlbV0gdGV4dC1sZWZ0IHRleHQtdHVpLXRleHQtMDJcIlxuICAgIFtzdHlsZS53aWR0aF09XCJpc1dpZHRoRnVsbFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxuICAgICAgICA8aW1nIChjbGljayk9XCJjbGlja0NhcmRFdmVudC5lbWl0KClcIiBbc3JjXT1cImdldENhcmRJbWFnZSgpXCIgW2FsdF09XCJwcm9kdWN0Lm5hbWVcIiBjbGFzcz1cInJvdW5kZWQteGwgdy1mdWxsIG1heC1oLWZ1bGwgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgICAgPHNjLWZhdm9yaXRlLWJ0biAqbmdJZj1cImF1dGhTdGF0dXMkIHwgYXN5bmNcIiBbY2xhc3MuIWJsb2NrXT1cInByb2R1Y3QuaXNGYXZvcml0ZVwiIGNsYXNzPVwidG9wLTAgbGVmdC0wIGFic29sdXRlIGhpZGRlblwiPjwvc2MtZmF2b3JpdGUtYnRuPlxuICAgICAgICA8dHVpLXN2ZyAqbmdJZj1cInByb2R1Y3QuaXNQcmV2aW91c2x5T3JkZXJlZFwiIHNyYz1cInNjSWNvblN0YXJcIiBjbGFzcz1cInRvcC0wIHJpZ2h0LTAgYWJzb2x1dGUgaGlkZGVuIHRleHQtcmVkLTcwMFwiPjwvdHVpLXN2Zz5cbiAgICA8L2Rpdj5cbiAgICA8YSBjbGFzcz1cInAtMCBtLTBcIiB0dWlMaW5rIGljb25BbGlnbj1cImxlZnRcIiAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtWzAuODc1cmVtXSB0ZXh0LVsjNTI2RUQzXVwiPnt7IHByb2R1Y3QubmFtZSB9fTwvcD5cbiAgICA8L2E+XG4gICAgPHAgKm5nSWY9XCJwcm9kdWN0Py5wYWNrXCI+0J3QvtGA0LzQsCDRg9C/0LDQutC+0LLQutC4OiB7eyBwcm9kdWN0LnBhY2sgfX08L3A+XG5cbiAgICA8cD7QkNGA0YLQuNC60YPQuzoge3sgcHJvZHVjdC5jb2RlIH19PC9wPlxuICAgIDxwICpuZ0lmPVwiKGF1dGhTdGF0dXMkIHwgYXN5bmMpICYmIHByb2R1Y3Q/LmNvc3REYXRlXCI+0JTQsNGC0LA6IHt7IHByb2R1Y3QuY29zdERhdGUgfX08L3A+XG4gICAgPGRpdiAqbmdJZj1cIndhcmVob3VzZVNlbGVjdCQgfCBhc3luYyBhcyB3YXJlaG91c2VTZWxlY3RcIiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LmRpc2NvdW50XCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtdGhyb3VnaFwiPnt7IHByb2R1Y3QuZGlzY291bnRDb3N0U3RyaW5nIH19PC9zcGFuPiAmbmJzcDtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktc3VjY2Vzcy1maWxsIGZvbnQtYm9sZFwiPiAte3sgcHJvZHVjdC5kaXNjb3VudC5wZXJjZW50IH19JSA8L3NwYW4+XG4gICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uSW5mb0xhcmdlXCIgW3R1aUhpbnRdPVwiZGlzY291bnRIaW50XCIgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCIgdHVpSGludERpcmVjdGlvbj1cInRvcFwiIGNsYXNzPVwidGV4dC1ibGFjayAhdGV4dC1bMC43NXJlbV0gIWgtNFwiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzY291bnRIaW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0LmRpc2NvdW50Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudC5leHBpcmVkQXQgYXMgZXhwaXJlZEF0XCI+0JTQsNGC0LAg0L7QutC+0L3Rh9Cw0L3QuNGPOiB7eyBleHBpcmVkQXQgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW2NsYXNzLnRleHQtdHVpLXRleHQtMDJdPVwiIXByb2R1Y3QuaXNXYXJlaG91c2VTdG9ja0V4aXN0KHdhcmVob3VzZVNlbGVjdC5pZClcIiBjbGFzcz1cImNvc3QgZm9udC1ib2xkXCI+e3sgcHJvZHVjdC5jb3N0UnViU3RyaW5nIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFwcm9kdWN0LnByaWNlSW5SdWJcIiBjbGFzcz1cInRleHQteHMgZm9udC1ib2xkIHRleHQtdHVpLXRleHQtMDIgaGlkZGVuIGdyb3VwLWhvdmVyOmJsb2NrXCI+e3sgcHJvZHVjdC5jb3N0U3RyaW5nIH19PC9zcGFuPlxuICAgICAgICA8c2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrIFtwcm9kdWN0XT1cInByb2R1Y3RcIj48L3NjLXByaWNlLXdhcmVob3VzZS1zdG9jaz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNob3dRdWFudGl0eUNvbnRyb2xcIiBjbGFzcz1cImZsZXggZ2FwLTIgbWF4LXctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdHJldGNoIG10LTFcIj5cbiAgICAgICAgPGJ1dHRvbiB0dWlCdXR0b24gKGNsaWNrKT1cImNsaWNrQWRkVG9DYXJ0RXZlbnQuZW1pdChwcm9kdWN0KVwiIFtzaG93TG9hZGVyXT1cInF1YW50aXR5U2hvd0xvYWRlclwiIFtzaXplXT1cInNpemVcIiBjbGFzcz1cImdyb3dcIj5cbiAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInNjSWNvbkNhcnRcIiBjbGFzcz1cIiF0ZXh0LXhzICFoLTRcIj4gPC90dWktc3ZnPlxuICAgICAgICAgICAg0JIg0LrQvtGA0LfQuNC90YNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjYXJ0SXRlbVwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkNoZWNrXCIgY2xhc3M9XCIhaC01ICF3LTUgYmctdHVpLXByaW1hcnkgdGV4dC1ibGFjayByb3VuZGVkLW1kXCI+PC90dWktc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgKm5nSWY9XCJzaG93UXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInF1YW50aXR5Q29udHJvbFwiXG4gICAgICAgIFtxdWFudGl0eVVuaXRdPVwicHJvZHVjdC5xdWFudGl0eVVuaXRcIlxuICAgICAgICBbc2l6ZV09XCJnZXRRdWFudGl0eVNpemVcIlxuICAgICAgICBbc3RlcF09XCJ1bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3QpXCJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwicXVhbnRpdHlTaG93TG9hZGVyXCJcbiAgICAgICAgKGNsaWNrQ2xlYXJFdmVudCk9XCJjbGlja0NsZWFyRXZlbnQuZW1pdChjYXJ0SXRlbSlcIlxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgPjwvc2MtaW5wdXQtcXVhbnRpdHk+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBjYXJkLXdyYXBwZXIgYmctd2hpdGUgcm91bmRlZC14bCBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LXNjLTFcIj5cbiAgICAgICAgPCEtLSDQmNC30L7QsdGA0LDQttC10L3QuNC1INGC0L7QstCw0YDQsCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLTMvNSByb3VuZGVkLXQgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgPCEtLSDQmtGA0LDRgtC60LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgtC+0LLQsNGA0LUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdyb3cgZ2FwLTIuNSBiZy13aGl0ZSByb3VuZGVkLWIgcC01XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtNCByb3VuZGVkIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zLzUgaC00IHJvdW5kZWQgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC00IHJvdW5kZWQgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2UtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9wcmljZS1jYXJkL3NjLXByaWNlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2UtY2FyZC9zYy1wcmljZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0YsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7OztBQUkxSjs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUE2RzdCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDb0IsV0FBd0IsRUFDdkIsV0FBMEIsRUFDMUIsZ0JBQW9DLEVBQ25CLElBQWEsRUFDRyxpQkFBeUI7UUFKM0QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ0csc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBMUgvRTs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUVJLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQWdDNUM7O1dBRUc7UUFFSSx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6RTs7V0FFRztRQUVJLHdCQUFtQixHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXBGOztXQUVHO1FBRUksb0JBQWUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVsRjs7V0FFRztRQUVJLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBbUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFNUc7O1dBRUc7UUFDSSxvQkFBZSxHQUErQixJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFMUY7O1dBRUc7UUFFSSx5QkFBb0IsR0FBOEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFFM0Y7O1dBRUc7UUFDYSxnQkFBVyxHQUF3QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXBGOztXQUVHO1FBR0ksU0FBSSxHQUF5QixHQUFHLENBQUM7SUFnQ3JDLENBQUM7SUFoSEo7Ozs7T0FJRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQTZCO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQThERDs7O09BR0c7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUEwQkQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDcEYsQ0FBQzs7aUhBMUlRLG9CQUFvQiw0R0EwSGpCLE9BQU8sYUFDUCx1QkFBdUI7cUdBM0gxQixvQkFBb0IscWJDaEJqQyw4aktBNkRBOzJGRDdDYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzswQkE0SDFDLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyx1QkFBdUI7NENBakg1QixtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBY0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBT0EsZUFBZTtzQkFEckIsTUFBTTtnQkFPQSxjQUFjO3NCQURwQixNQUFNO2dCQWlCQSxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBYUEsSUFBSTtzQkFGVixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVbml0c0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyJztcbmltcG9ydCB7IFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5ELCBTQ19VUkxTLCBTY0F1dGhTZXJ2aWNlLCBTY0NhcnRJdGVtLCBTY0lVcmxzLCBTY1Byb2R1Y3QsIFNjV2FyZWhvdXNlLCBTY1dhcmVob3VzZVNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVNpemVTLCBUdWlTaXplWFMgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC60LDRgNGC0L7Rh9C60Lgg0YLQvtCy0LDRgNCwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXByaWNlLWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1wcmljZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1wcmljZS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHJpY2VDYXJkQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC70L7QsNC00LXRgCDQtNC70Y8g0L/QvtC70Y8g0LLQstC+0LTQsCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIHF1YW50aXR5U2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQv9C+0LvQtSDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93UXVhbnRpdHlDb250cm9sOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINCyINC60L7RgNC30LjQvdC1INC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjYXJ0SXRlbSgpOiBTY0NhcnRJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcnRJdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNGPINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtVxuICAgICAqXG4gICAgICogVE9ETzog0KHQtNC10LvQsNGC0Ywg0YLQvtCy0LDRgCDQsiDQutC+0YDQt9C40L3QtSDQvdCw0LHQu9GO0LTQsNC10LzQvtC5INC/0LXRgNC10LzQtdC90L3QvtC5INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40LggVEFTSzpbIzcxNDRdLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBjYXJ0SXRlbSh2YWx1ZTogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9jYXJ0SXRlbSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMucXVhbnRpdHlDb250cm9sLnBhdGNoVmFsdWUodGhpcy5fY2FydEl0ZW0/LnF1YW50aXR5ID8/IG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5xdWFudGl0eVNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqXG4gICAgICogVE9ETzog0KHQtNC10LvQsNGC0Ywg0YLQvtCy0LDRgCDQvdCw0LHQu9GO0LTQsNC10LzQvtC5INC/0LXRgNC10LzQtdC90L3QvtC5INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40LggVEFTSzpbIzcxNDRdLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByb2R1Y3Q/OiBTY1Byb2R1Y3Q7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCSINC40LfQsdGA0LDQvdC90L7QtVwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0Zhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0JIg0LrQvtGA0LfQuNC90YNcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tBZGRUb0NhcnRFdmVudDogRXZlbnRFbWl0dGVyPFNjUHJvZHVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjUHJvZHVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC+0YfQuNGB0YLQutC4INC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tDbGVhckV2ZW50OiBFdmVudEVtaXR0ZXI8U2NDYXJ0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ2FydEl0ZW0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhcmRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQstGL0LHRgNCw0L3QvdC+0LPQviDRgdC60LvQsNC00LAuXG4gICAgICovXG4gICAgcHVibGljIHdhcmVob3VzZVNlbGVjdCQ6IE9ic2VydmFibGU8U2NXYXJlaG91c2UgfCBudWxsPiA9IHRoaXMud2FyZWhvdXNlU2VydmljZS5nZXRXYXJlaG91c2VTZWxlY3RDaGFuZ2UkKCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRm9ybUNvbnRyb2x9INC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBxdWFudGl0eUNvbnRyb2w6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHF1YW50aXR5VmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0gdGhpcy5xdWFudGl0eUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdXRoU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aENoYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC60L7QvNC/0L7QvdC10L3RgtCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVTIHwgVHVpU2l6ZVhTID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC90LLQtdGA0YLQsNGG0LjRjyDRgNCw0LfQvNC10YDQsCDQtNC70Y8g0LrQvtC80L/QvtC90LXQvdGC0LAgc2MtaW5wdXQtcXVhbnRpdHkuXG4gICAgICogVE9ETzog0KDQtdGI0LjRgtGMINC/0YDQvtCx0LvQtdC80YMg0YEg0YTRg9C90LrRhtC40L7QvdCw0LvQvtC8IHNpemUg0LTQu9GPINGA0LDQt9C90YvRhSDQv9C70LDRgtGE0L7RgNC8LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ2V0UXVhbnRpdHlTaXplKCk6IFR1aVNpemVTIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3hzJyA/ICdzJyA6IHRoaXMuc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjRjyDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQodC00LXQu9Cw0YLRjCDRgtC+0LLQsNGAINCyINC60L7RgNC30LjQvdC1INC90LDQsdC70Y7QtNCw0LXQvNC+0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCBUQVNLOlsjNzE0NF0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FydEl0ZW0/OiBTY0NhcnRJdGVtIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNC40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcmljZUNhcmRDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVuaXRzSGVscGVyINCe0LHRitC10LrRgi3RhdGN0LvQv9C10YAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INC30L3QsNGH0LXQvdC40Y/QvNC4INC10LTQuNC90LjRhiDQuNC30LzQtdGA0LXQvdC40Y8g0YLQvtCy0LDRgNCwLlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INGB0LrQu9Cw0LTQsNC80LguXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB1bml0c0hlbHBlcjogVW5pdHNIZWxwZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2FyZWhvdXNlU2VydmljZTogU2NXYXJlaG91c2VTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdGD0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0YHQutC10LvQtdGC0L7QvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNrZWxldG9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgdGL0LvQutGDINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQutCw0YDRgtC+0YfQutC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FyZEltYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3Q/LmdldEltYWdlKHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwpID8/IHRoaXMucGF0aEltYWdlTm90Rm91bmQ7XG4gICAgfVxufVxuIiwiPCEtLSBUT0RPOiDRgNC10LDQu9C40LfQvtCy0LDRgtGMINC00LDQvdC90YvQuSDQutC+0LzQv9C+0L3QtdC90YIg0Lgg0LTQu9GPINC00LXRgdC60YLQvtC/0LAg0Lgg0LTQu9GPINC80L7QsdC40LvRjNC90L7Qs9C+INC/0YDQuNC70L7QttC10L3QuNGPLiDQmNGB0L/RgNCw0LLQuNGC0Ywg0LLRgdC1INCz0LvQvtCx0LDQu9GM0L3Ri9C1INGC0LDQudCz0L7QstGB0LrQuNC1INGB0YLQuNC70LgsINC/0YDQuNCy0LXRgdGC0Lgg0LjRhSDQsiDQv9C+0YDRj9C00L7QuiDRgdC+0LPQu9Cw0YHQvdC+INGBINC00LjQt9Cw0LnQvdC+0LwuIC0tPlxuPGRpdiAqbmdJZj1cInByb2R1Y3Q7IGVsc2Ugc2tlbGV0b25cIiBjbGFzcz1cIm1pbi13LVsxMHJlbV0gc2hhZG93LW1kIHctYXV0byByb3VuZGVkLXhsIHAtMiBncmlkIGgtWzE3cmVtXSB0ZXh0LXhzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxuICAgICAgICA8aW1nIChjbGljayk9XCJjbGlja0NhcmRFdmVudC5lbWl0KClcIiBbc3JjXT1cImdldENhcmRJbWFnZSgpXCIgW2FsdF09XCJwcm9kdWN0Lm5hbWVcIiBjbGFzcz1cInJvdW5kZWQteGwgdy1mdWxsIG1heC1oLWZ1bGwgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgICAgPHNjLWZhdm9yaXRlLWJ0biAqbmdJZj1cImF1dGhTdGF0dXMkIHwgYXN5bmNcIiBbY2xhc3MuIWJsb2NrXT1cInByb2R1Y3QuaXNGYXZvcml0ZVwiIGNsYXNzPVwidG9wLTAgbGVmdC0wIGFic29sdXRlIGhpZGRlblwiPjwvc2MtZmF2b3JpdGUtYnRuPlxuICAgICAgICA8dHVpLXN2ZyAqbmdJZj1cInByb2R1Y3QuaXNQcmV2aW91c2x5T3JkZXJlZFwiIHNyYz1cInNjSWNvblN0YXJcIiBjbGFzcz1cInRvcC0wIHJpZ2h0LTAgYWJzb2x1dGUgaGlkZGVuIHRleHQtcmVkLTcwMFwiPjwvdHVpLXN2Zz5cbiAgICA8L2Rpdj5cbiAgICA8YSBjbGFzcz1cInAtMCBtLTBcIiB0dWlMaW5rIGljb25BbGlnbj1cImxlZnRcIiAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc21cIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+e3sgcHJvZHVjdC5uYW1lIH19PC9wPlxuICAgIDwvYT5cbiAgICA8cCAqbmdJZj1cInByb2R1Y3Q/LnBhY2tcIiBjbGFzcz1cInRleHQtdHVpLXRleHQtMDJcIj7QndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fTwvcD5cblxuICAgIDxwIGNsYXNzPVwidGV4dC10dWktdGV4dC0wMlwiPtCQ0YDRgtC40LrRg9C7OiB7eyBwcm9kdWN0LmNvZGUgfX08L3A+XG4gICAgPHAgKm5nSWY9XCIoYXV0aFN0YXR1cyQgfCBhc3luYykgJiYgcHJvZHVjdD8uY29zdERhdGVcIiBjbGFzcz1cInRleHQtdHVpLXRleHQtMDJcIj7QlNCw0YLQsDoge3sgcHJvZHVjdC5jb3N0RGF0ZSB9fTwvcD5cbiAgICA8ZGl2ICpuZ0lmPVwid2FyZWhvdXNlU2VsZWN0JCB8IGFzeW5jIGFzIHdhcmVob3VzZVNlbGVjdFwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QuZGlzY291bnRcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtdHVpLXRleHQtMDJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS10aHJvdWdoXCI+e3sgcHJvZHVjdC5kaXNjb3VudENvc3RTdHJpbmcgfX08L3NwYW4+ICZuYnNwO1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXR1aS1zdWNjZXNzLWZpbGwgZm9udC1ib2xkXCI+IC17eyBwcm9kdWN0LmRpc2NvdW50LnBlcmNlbnQgfX0lIDwvc3Bhbj5cbiAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25JbmZvTGFyZ2VcIiBbdHVpSGludF09XCJkaXNjb3VudEhpbnRcIiBbdHVpSGludFNob3dEZWxheV09XCIxMDBcIiB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCIgY2xhc3M9XCJ0ZXh0LWJsYWNrICF0ZXh0LXhzICFoLTRcIj48L3R1aS1zdmc+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2NvdW50SGludD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgcHJvZHVjdC5kaXNjb3VudC5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3QuZGlzY291bnQuZXhwaXJlZEF0IGFzIGV4cGlyZWRBdFwiPtCU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjzoge3sgZXhwaXJlZEF0IH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIFtjbGFzcy50ZXh0LXR1aS10ZXh0LTAyXT1cIiFwcm9kdWN0LmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2VTZWxlY3QuaWQpXCIgY2xhc3M9XCJjb3N0IGZvbnQtYm9sZFwiPnt7IHByb2R1Y3QuY29zdFJ1YlN0cmluZyB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhcHJvZHVjdC5wcmljZUluUnViXCIgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXR1aS10ZXh0LTAyIGhpZGRlbiBncm91cC1ob3ZlcjpibG9ja1wiPnt7IHByb2R1Y3QuY29zdFN0cmluZyB9fTwvc3Bhbj5cbiAgICAgICAgPHNjLXByaWNlLXdhcmVob3VzZS1zdG9jayBbcHJvZHVjdF09XCJwcm9kdWN0XCI+PC9zYy1wcmljZS13YXJlaG91c2Utc3RvY2s+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFzaG93UXVhbnRpdHlDb250cm9sXCIgY2xhc3M9XCJmbGV4IGdhcC0yIG1heC13LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RyZXRjaCBtdC0xXCI+XG4gICAgICAgIDxidXR0b24gdHVpQnV0dG9uIChjbGljayk9XCJjbGlja0FkZFRvQ2FydEV2ZW50LmVtaXQocHJvZHVjdClcIiBbc2hvd0xvYWRlcl09XCJxdWFudGl0eVNob3dMb2FkZXJcIiBbc2l6ZV09XCJzaXplXCIgY2xhc3M9XCJncm93XCI+XG4gICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJzY0ljb25DYXJ0XCIgY2xhc3M9XCIhdGV4dC14cyAhaC00XCI+IDwvdHVpLXN2Zz5cbiAgICAgICAgICAgINCSINC60L7RgNC30LjQvdGDXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FydEl0ZW1cIiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25DaGVja1wiIGNsYXNzPVwiIWgtNSAhdy01IGJnLXR1aS1wcmltYXJ5IHRleHQtYmxhY2sgcm91bmRlZC1tZFwiPjwvdHVpLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNjLWlucHV0LXF1YW50aXR5XG4gICAgICAgICpuZ0lmPVwic2hvd1F1YW50aXR5Q29udHJvbFwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJxdWFudGl0eUNvbnRyb2xcIlxuICAgICAgICBbcXVhbnRpdHlVbml0XT1cInByb2R1Y3QucXVhbnRpdHlVbml0XCJcbiAgICAgICAgW3NpemVdPVwiZ2V0UXVhbnRpdHlTaXplXCJcbiAgICAgICAgW3N0ZXBdPVwidW5pdHNIZWxwZXIucHJvZHVjdE11bHRpcGxpY2l0eShwcm9kdWN0KVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cInF1YW50aXR5U2hvd0xvYWRlclwiXG4gICAgICAgIChjbGlja0NsZWFyRXZlbnQpPVwiY2xpY2tDbGVhckV2ZW50LmVtaXQoY2FydEl0ZW0pXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgID48L3NjLWlucHV0LXF1YW50aXR5PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2tlbGV0b24+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgY2FyZC13cmFwcGVyIGJnLXdoaXRlIHJvdW5kZWQteGwgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy1zYy0xXCI+XG4gICAgICAgIDwhLS0g0JjQt9C+0LHRgNCw0LbQtdC90LjQtSDRgtC+0LLQsNGA0LAgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC0zLzUgcm91bmRlZC10IGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgIDwhLS0g0JrRgNCw0YLQutCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YLQvtCy0LDRgNC1IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBncm93IGdhcC0yLjUgYmctd2hpdGUgcm91bmRlZC1iIHAtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLTQgcm91bmRlZCBiZy10dWktYmFzZS0wMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMy81IGgtNCByb3VuZGVkIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtNCByb3VuZGVkIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==