UNPKG

@vendasta/store

Version:

Components and data for Store

15 lines 19.8 kB
import { Component } from '@angular/core'; import { VaBasePricingComponent } from '../base-pricing.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@ngx-translate/core"; import * as i3 from "@vendasta/core/shared"; export class HighlightPricingComponent extends VaBasePricingComponent { } HighlightPricingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HighlightPricingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); HighlightPricingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: HighlightPricingComponent, selector: "app-highlight-pricing", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"loaded; else loading\">\n <div\n class=\"no-price\"\n *ngIf=\"shouldContactSales$ | async; else dontContactSales\"\n >\n {{ 'FRONTEND.STORE.CONTACT_SALES' | translate }}\n </div>\n <ng-template #dontContactSales>\n <div class=\"no-price\" *ngIf=\"isFree$ | async; else notFree\">\n <b>{{ 'FRONTEND.STORE.FREE' | translate }}</b>\n </div>\n <ng-template #notFree>\n <ng-container *ngIf=\"!isAddon\">\n <ng-container\n *ngIf=\"hasVerifiedContract && billedProduct; else usePricing\"\n >\n <div *ngFor=\"let tier of pricingTierData$ | async\" class=\"price-box\">\n <span>\n <span *ngIf=\"tier.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{ tier.priceStringForTierWithoutFreq }}\n </b>\n </span>\n <span\n class=\"tier-billing-freq\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n {{ tier.pricingTierForProduct }}\n </span>\n </div>\n </ng-container>\n <ng-template #usePricing>\n <ng-container *ngIf=\"pricing?.prices\">\n <div\n *ngFor=\"let price of priceData$ | async; let i = index\"\n class=\"price-box\"\n >\n <span>\n <span *ngIf=\"price.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n <ng-container *ngIf=\"i > 0\">+</ng-container>\n {{ price.priceStringForPricingWithoutFrequency }}\n </b>\n <span\n *ngIf=\"\n price.abbreviatedFrequencyString && useAbbreviatedFrequency\n \"\n class=\"billing-freq-abbrev\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n /{{ price.abbreviatedFrequencyString }}\n </span>\n </span>\n <span\n *ngIf=\"price.frequencyString && !useAbbreviatedFrequency\"\n class=\"billing-freq\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n {{ price.frequencyString }}\n </span>\n </div>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isAddon\">\n <div *ngIf=\"hasVerifiedContract && billedProduct; else useAddonPricing\">\n <div *ngFor=\"let tier of pricingTierData$ | async\" class=\"price-box\">\n <span class=\"addon-billing-freq\">\n {{ tier.pricingTierForAddon }}\n </span>\n <span>\n <span *ngIf=\"tier.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{ tier.priceStringForTier }}\n </b>\n </span>\n </div>\n </div>\n <ng-template #useAddonPricing>\n <div class=\"price-box\">\n <span\n *ngIf=\"pricing?.prices[0].frequency\"\n class=\"addon-billing-freq\"\n >\n {{ (priceData$ | async)[0]?.frequencyString }}\n </span>\n <span>\n <span\n *ngIf=\"pricing?.prices[0]?.isStartingPrice\"\n class=\"starting-at\"\n >\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{\n (priceData$ | async)[0]?.priceStringForPricingWithoutFrequency\n }}\n </b>\n </span>\n </div>\n </ng-template>\n </ng-container>\n <b\n class=\"price-box price-number\"\n *ngIf=\"billedProduct && billedProduct.setupFee > 0\"\n >\n + {{ billedProduct.setupFee | price$: billedProduct.currency | async }}\n {{ setupFeeString$ | async }}\n </b>\n <div\n class=\"commitment\"\n *ngIf=\"\n billedProduct &&\n billedProduct.commitment &&\n billedProduct.commitment.initial > 1\n \"\n >\n {{ commitmentMessage$ | async }}\n </div>\n </ng-template>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class=\"stencil-pricing stencil-shimmer\"></div>\n</ng-template>\n", styles: [":host{color:#9e9e9e}.starting-at{margin-right:5px}.price-box{display:flex;align-items:baseline;flex-direction:row-reverse}@media screen and (max-width: 600px){.price-box{font-size:16px}}.no-price{text-align:center}@media screen and (max-width: 600px){.no-price{font-size:16px}}b{color:#212121;font-size:20px}@media screen and (max-width: 600px){b{font-size:16px}}.billing-freq{text-transform:capitalize;flex:1;padding-right:5px}.billing-freq-abbrev{padding-right:5px}.tier-billing-freq{flex:1}.addon-billing-freq{padding-left:5px}.va-wrap{display:block}.stencil-pricing{height:1em}.commitment{color:#9e9e9e;font-size:12px;font-style:italic}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1.AsyncPipe, "translate": i2.TranslatePipe, "price$": i3.DisplayPricePipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HighlightPricingComponent, decorators: [{ type: Component, args: [{ selector: 'app-highlight-pricing', template: "<ng-container *ngIf=\"loaded; else loading\">\n <div\n class=\"no-price\"\n *ngIf=\"shouldContactSales$ | async; else dontContactSales\"\n >\n {{ 'FRONTEND.STORE.CONTACT_SALES' | translate }}\n </div>\n <ng-template #dontContactSales>\n <div class=\"no-price\" *ngIf=\"isFree$ | async; else notFree\">\n <b>{{ 'FRONTEND.STORE.FREE' | translate }}</b>\n </div>\n <ng-template #notFree>\n <ng-container *ngIf=\"!isAddon\">\n <ng-container\n *ngIf=\"hasVerifiedContract && billedProduct; else usePricing\"\n >\n <div *ngFor=\"let tier of pricingTierData$ | async\" class=\"price-box\">\n <span>\n <span *ngIf=\"tier.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{ tier.priceStringForTierWithoutFreq }}\n </b>\n </span>\n <span\n class=\"tier-billing-freq\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n {{ tier.pricingTierForProduct }}\n </span>\n </div>\n </ng-container>\n <ng-template #usePricing>\n <ng-container *ngIf=\"pricing?.prices\">\n <div\n *ngFor=\"let price of priceData$ | async; let i = index\"\n class=\"price-box\"\n >\n <span>\n <span *ngIf=\"price.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n <ng-container *ngIf=\"i > 0\">+</ng-container>\n {{ price.priceStringForPricingWithoutFrequency }}\n </b>\n <span\n *ngIf=\"\n price.abbreviatedFrequencyString && useAbbreviatedFrequency\n \"\n class=\"billing-freq-abbrev\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n /{{ price.abbreviatedFrequencyString }}\n </span>\n </span>\n <span\n *ngIf=\"price.frequencyString && !useAbbreviatedFrequency\"\n class=\"billing-freq\"\n [ngClass]=\"{ 'va-wrap': wrapFrequency }\"\n >\n {{ price.frequencyString }}\n </span>\n </div>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isAddon\">\n <div *ngIf=\"hasVerifiedContract && billedProduct; else useAddonPricing\">\n <div *ngFor=\"let tier of pricingTierData$ | async\" class=\"price-box\">\n <span class=\"addon-billing-freq\">\n {{ tier.pricingTierForAddon }}\n </span>\n <span>\n <span *ngIf=\"tier.isStartingPrice\" class=\"starting-at\">\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{ tier.priceStringForTier }}\n </b>\n </span>\n </div>\n </div>\n <ng-template #useAddonPricing>\n <div class=\"price-box\">\n <span\n *ngIf=\"pricing?.prices[0].frequency\"\n class=\"addon-billing-freq\"\n >\n {{ (priceData$ | async)[0]?.frequencyString }}\n </span>\n <span>\n <span\n *ngIf=\"pricing?.prices[0]?.isStartingPrice\"\n class=\"starting-at\"\n >\n {{ 'FRONTEND.STORE.STARTING_AT' | translate }}\n </span>\n <b class=\"price-number\">\n {{\n (priceData$ | async)[0]?.priceStringForPricingWithoutFrequency\n }}\n </b>\n </span>\n </div>\n </ng-template>\n </ng-container>\n <b\n class=\"price-box price-number\"\n *ngIf=\"billedProduct && billedProduct.setupFee > 0\"\n >\n + {{ billedProduct.setupFee | price$: billedProduct.currency | async }}\n {{ setupFeeString$ | async }}\n </b>\n <div\n class=\"commitment\"\n *ngIf=\"\n billedProduct &&\n billedProduct.commitment &&\n billedProduct.commitment.initial > 1\n \"\n >\n {{ commitmentMessage$ | async }}\n </div>\n </ng-template>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class=\"stencil-pricing stencil-shimmer\"></div>\n</ng-template>\n", styles: [":host{color:#9e9e9e}.starting-at{margin-right:5px}.price-box{display:flex;align-items:baseline;flex-direction:row-reverse}@media screen and (max-width: 600px){.price-box{font-size:16px}}.no-price{text-align:center}@media screen and (max-width: 600px){.no-price{font-size:16px}}b{color:#212121;font-size:20px}@media screen and (max-width: 600px){b{font-size:16px}}.billing-freq{text-transform:capitalize;flex:1;padding-right:5px}.billing-freq-abbrev{padding-right:5px}.tier-billing-freq{flex:1}.addon-billing-freq{padding-left:5px}.va-wrap{display:block}.stencil-pricing{height:1em}.commitment{color:#9e9e9e;font-size:12px;font-style:italic}\n"] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXByaWNpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zdG9yZS9zcmMvbGliL3ByaWNpbmcvaGlnaGxpZ2h0LXByaWNpbmcvaGlnaGxpZ2h0LXByaWNpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zdG9yZS9zcmMvbGliL3ByaWNpbmcvaGlnaGxpZ2h0LXByaWNpbmcvaGlnaGxpZ2h0LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFPbkUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHNCQUFzQjs7c0hBQXhELHlCQUF5QjswR0FBekIseUJBQXlCLG9GQ1J0Qyw0b0pBbUlBOzJGRDNIYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYUJhc2VQcmljaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wcmljaW5nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oaWdobGlnaHQtcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9oaWdobGlnaHQtcHJpY2luZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hpZ2hsaWdodC1wcmljaW5nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodFByaWNpbmdDb21wb25lbnQgZXh0ZW5kcyBWYUJhc2VQcmljaW5nQ29tcG9uZW50IHt9XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVkOyBlbHNlIGxvYWRpbmdcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibm8tcHJpY2VcIlxuICAgICpuZ0lmPVwic2hvdWxkQ29udGFjdFNhbGVzJCB8IGFzeW5jOyBlbHNlIGRvbnRDb250YWN0U2FsZXNcIlxuICA+XG4gICAge3sgJ0ZST05URU5ELlNUT1JFLkNPTlRBQ1RfU0FMRVMnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2RvbnRDb250YWN0U2FsZXM+XG4gICAgPGRpdiBjbGFzcz1cIm5vLXByaWNlXCIgKm5nSWY9XCJpc0ZyZWUkIHwgYXN5bmM7IGVsc2Ugbm90RnJlZVwiPlxuICAgICAgPGI+e3sgJ0ZST05URU5ELlNUT1JFLkZSRUUnIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjbm90RnJlZT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNBZGRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJoYXNWZXJpZmllZENvbnRyYWN0ICYmIGJpbGxlZFByb2R1Y3Q7IGVsc2UgdXNlUHJpY2luZ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0aWVyIG9mIHByaWNpbmdUaWVyRGF0YSQgfCBhc3luY1wiIGNsYXNzPVwicHJpY2UtYm94XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aWVyLmlzU3RhcnRpbmdQcmljZVwiIGNsYXNzPVwic3RhcnRpbmctYXRcIj5cbiAgICAgICAgICAgICAgICB7eyAnRlJPTlRFTkQuU1RPUkUuU1RBUlRJTkdfQVQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwcmljZS1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB0aWVyLnByaWNlU3RyaW5nRm9yVGllcldpdGhvdXRGcmVxIH19XG4gICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGllci1iaWxsaW5nLWZyZXFcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd2YS13cmFwJzogd3JhcEZyZXF1ZW5jeSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGllci5wcmljaW5nVGllckZvclByb2R1Y3QgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlUHJpY2luZz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJpY2luZz8ucHJpY2VzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcmljZSBvZiBwcmljZURhdGEkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cInByaWNlLWJveFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2UuaXNTdGFydGluZ1ByaWNlXCIgY2xhc3M9XCJzdGFydGluZy1hdFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0ZST05URU5ELlNUT1JFLlNUQVJUSU5HX0FUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YiBjbGFzcz1cInByaWNlLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPiAwXCI+KzwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAge3sgcHJpY2UucHJpY2VTdHJpbmdGb3JQcmljaW5nV2l0aG91dEZyZXF1ZW5jeSB9fVxuICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgcHJpY2UuYWJicmV2aWF0ZWRGcmVxdWVuY3lTdHJpbmcgJiYgdXNlQWJicmV2aWF0ZWRGcmVxdWVuY3lcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJpbGxpbmctZnJlcS1hYmJyZXZcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndmEtd3JhcCc6IHdyYXBGcmVxdWVuY3kgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgL3t7IHByaWNlLmFiYnJldmlhdGVkRnJlcXVlbmN5U3RyaW5nIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwcmljZS5mcmVxdWVuY3lTdHJpbmcgJiYgIXVzZUFiYnJldmlhdGVkRnJlcXVlbmN5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpbGxpbmctZnJlcVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndmEtd3JhcCc6IHdyYXBGcmVxdWVuY3kgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwcmljZS5mcmVxdWVuY3lTdHJpbmcgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FkZG9uXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoYXNWZXJpZmllZENvbnRyYWN0ICYmIGJpbGxlZFByb2R1Y3Q7IGVsc2UgdXNlQWRkb25QcmljaW5nXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGllciBvZiBwcmljaW5nVGllckRhdGEkIHwgYXN5bmNcIiBjbGFzcz1cInByaWNlLWJveFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGRvbi1iaWxsaW5nLWZyZXFcIj5cbiAgICAgICAgICAgICAge3sgdGllci5wcmljaW5nVGllckZvckFkZG9uIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aWVyLmlzU3RhcnRpbmdQcmljZVwiIGNsYXNzPVwic3RhcnRpbmctYXRcIj5cbiAgICAgICAgICAgICAgICB7eyAnRlJPTlRFTkQuU1RPUkUuU1RBUlRJTkdfQVQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwcmljZS1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB0aWVyLnByaWNlU3RyaW5nRm9yVGllciB9fVxuICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3VzZUFkZG9uUHJpY2luZz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtYm94XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cInByaWNpbmc/LnByaWNlc1swXS5mcmVxdWVuY3lcIlxuICAgICAgICAgICAgICBjbGFzcz1cImFkZG9uLWJpbGxpbmctZnJlcVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChwcmljZURhdGEkIHwgYXN5bmMpWzBdPy5mcmVxdWVuY3lTdHJpbmcgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwicHJpY2luZz8ucHJpY2VzWzBdPy5pc1N0YXJ0aW5nUHJpY2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhcnRpbmctYXRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ0ZST05URU5ELlNUT1JFLlNUQVJUSU5HX0FUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxiIGNsYXNzPVwicHJpY2UtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIChwcmljZURhdGEkIHwgYXN5bmMpWzBdPy5wcmljZVN0cmluZ0ZvclByaWNpbmdXaXRob3V0RnJlcXVlbmN5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YlxuICAgICAgICBjbGFzcz1cInByaWNlLWJveCBwcmljZS1udW1iZXJcIlxuICAgICAgICAqbmdJZj1cImJpbGxlZFByb2R1Y3QgJiYgYmlsbGVkUHJvZHVjdC5zZXR1cEZlZSA+IDBcIlxuICAgICAgPlxuICAgICAgICArIHt7IGJpbGxlZFByb2R1Y3Quc2V0dXBGZWUgfCBwcmljZSQ6IGJpbGxlZFByb2R1Y3QuY3VycmVuY3kgfCBhc3luYyB9fVxuICAgICAgICB7eyBzZXR1cEZlZVN0cmluZyQgfCBhc3luYyB9fVxuICAgICAgPC9iPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbW1pdG1lbnRcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGJpbGxlZFByb2R1Y3QgJiZcbiAgICAgICAgICBiaWxsZWRQcm9kdWN0LmNvbW1pdG1lbnQgJiZcbiAgICAgICAgICBiaWxsZWRQcm9kdWN0LmNvbW1pdG1lbnQuaW5pdGlhbCA+IDFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgY29tbWl0bWVudE1lc3NhZ2UkIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGRpdiBjbGFzcz1cInN0ZW5jaWwtcHJpY2luZyBzdGVuY2lsLXNoaW1tZXJcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=