@vendasta/store
Version:
Components and data for Store
80 lines • 17.5 kB
JavaScript
import { Component, Input } from '@angular/core';
import countryList from 'iso-3166-country-list';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/menu";
import * as i2 from "@angular/material/icon";
import * as i3 from "@angular/common";
import * as i4 from "@angular/material/tooltip";
import * as i5 from "@ngx-translate/core";
const UNICODE_OFFSET = 127397;
export class SupportedCountriesV2Component {
constructor() {
this.countryCodeAndFlags = [];
this.availableInUserCountry = false;
}
set countryCodes(countryCodes) {
this.countryCodeAndFlags = [];
if (countryCodes) {
countryCodes.forEach((countryCode) => {
this.countryCodeAndFlags.push({
flag: this.getEmojiFlag(countryCode),
countryName: this.getCountryName(countryCode),
countryCode,
});
});
}
}
ngOnInit() {
if (this.businessCountryCode && this.businessCountryCode.trim().length > 0) {
this.businessCountry = {
countryCode: this.businessCountryCode,
flag: this.getEmojiFlag(this.businessCountryCode),
countryName: this.getCountryName(this.businessCountryCode),
};
}
this.availableInUserCountry = this.checkYourCountryInAvailable(this.businessCountryCode, this.countryCodeAndFlags);
if (this.availableInUserCountry) {
this.countryCodeAndFlags.unshift(this.businessCountry);
for (let i = 1; i < this.countryCodeAndFlags.length; i++) {
if (this.businessCountryCode === this.countryCodeAndFlags[i].countryCode) {
this.countryCodeAndFlags.splice(i, 1);
}
}
}
}
getEmojiFlag(countryCode) {
const chars = [...countryCode.toUpperCase()].map((c) => c.charCodeAt(0) + UNICODE_OFFSET);
return String.fromCodePoint(...chars);
}
getCountryName(countryCode) {
if (!countryCode) {
return '';
}
return countryList.name(countryCode);
}
checkYourCountryInAvailable(businessCountryCode, countryCodeAndFlags) {
let availableInUserCountry = false;
if (businessCountryCode &&
businessCountryCode.trim().length > 0 &&
countryCodeAndFlags &&
countryCodeAndFlags.length > 0) {
countryCodeAndFlags.forEach((countryCode) => {
if (businessCountryCode === countryCode.countryCode) {
availableInUserCountry = true;
}
});
}
return availableInUserCountry;
}
}
SupportedCountriesV2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SupportedCountriesV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
SupportedCountriesV2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: SupportedCountriesV2Component, selector: "app-supported-countries-v2", inputs: { businessCountryCode: "businessCountryCode", countryCodes: "countryCodes" }, ngImport: i0, template: "<div class=\"flags\" *ngIf=\"!(countryCodeAndFlags?.length > 0)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n />\n </svg>\n <span class=\"span-text\">\n {{ 'FRONTEND.STORE.ALL_COUNTRIES' | translate }}\n </span>\n</div>\n<div *ngIf=\"countryCodeAndFlags?.length > 0\">\n <span\n class=\"title\"\n *ngIf=\"businessCountryCode?.length > 0 && !availableInUserCountry\"\n >\n {{ 'FRONTEND.STORE.NOT_AVAILABLE_IN_YOUR_COUNTRY' | translate }}\n </span>\n <div class=\"flags\" *ngFor=\"let country of countryCodeAndFlags; let i = index\">\n <span\n *ngIf=\"i < 3\"\n matTooltip=\"{{ country.countryCode }}\"\n matTooltipPosition=\"below\"\n >\n {{ country.flag }}\n <span>{{ country.countryName }}</span>\n <br />\n </span>\n </div>\n\n <div>\n <a\n *ngIf=\"countryCodeAndFlags?.length > 3\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'FRONTEND.STORE.SEE_ALL' | translate }} ({{\n countryCodeAndFlags.length\n }})\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let country of countryCodeAndFlags\">\n <mat-icon>{{ country.flag }}</mat-icon>\n <span>{{ country.countryName }}</span>\n </button>\n </mat-menu>\n </div>\n</div>\n", styles: [".span-text{vertical-align:top}.title{font-size:16px;font-weight:400;color:#212121;margin-bottom:24px}\n"], components: [{ type: i1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i5.TranslatePipe } });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SupportedCountriesV2Component, decorators: [{
type: Component,
args: [{ selector: 'app-supported-countries-v2', template: "<div class=\"flags\" *ngIf=\"!(countryCodeAndFlags?.length > 0)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n />\n </svg>\n <span class=\"span-text\">\n {{ 'FRONTEND.STORE.ALL_COUNTRIES' | translate }}\n </span>\n</div>\n<div *ngIf=\"countryCodeAndFlags?.length > 0\">\n <span\n class=\"title\"\n *ngIf=\"businessCountryCode?.length > 0 && !availableInUserCountry\"\n >\n {{ 'FRONTEND.STORE.NOT_AVAILABLE_IN_YOUR_COUNTRY' | translate }}\n </span>\n <div class=\"flags\" *ngFor=\"let country of countryCodeAndFlags; let i = index\">\n <span\n *ngIf=\"i < 3\"\n matTooltip=\"{{ country.countryCode }}\"\n matTooltipPosition=\"below\"\n >\n {{ country.flag }}\n <span>{{ country.countryName }}</span>\n <br />\n </span>\n </div>\n\n <div>\n <a\n *ngIf=\"countryCodeAndFlags?.length > 3\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'FRONTEND.STORE.SEE_ALL' | translate }} ({{\n countryCodeAndFlags.length\n }})\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let country of countryCodeAndFlags\">\n <mat-icon>{{ country.flag }}</mat-icon>\n <span>{{ country.countryName }}</span>\n </button>\n </mat-menu>\n </div>\n</div>\n", styles: [".span-text{vertical-align:top}.title{font-size:16px;font-weight:400;color:#212121;margin-bottom:24px}\n"] }]
}], propDecorators: { businessCountryCode: [{
type: Input
}], countryCodes: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWNvdW50cmllcy12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvcmVzdHJpY3Rpb25zL2NvdW50cnktdjIvc3VwcG9ydGVkLWNvdW50cmllcy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvcmVzdHJpY3Rpb25zL2NvdW50cnktdjIvc3VwcG9ydGVkLWNvdW50cmllcy12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUVoRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFhOUIsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQW9CRSx3QkFBbUIsR0FBeUIsRUFBRSxDQUFDO1FBRS9DLDJCQUFzQixHQUFHLEtBQUssQ0FBQztLQWlEaEM7SUFoRUMsSUFBYSxZQUFZLENBQUMsWUFBc0I7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7b0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztvQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO29CQUM3QyxXQUFXO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBTUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFFLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2pELFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQzthQUMzRCxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuSCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDeEQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQkFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsV0FBbUI7UUFDdEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUMxRixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsbUJBQTJCLEVBQUUsbUJBQXlDO1FBQ3hHLElBQUksc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQ0UsbUJBQW1CO1lBQ25CLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3JDLG1CQUFtQjtZQUNuQixtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUM5QjtZQUNBLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLG1CQUFtQixLQUFLLFdBQVcsQ0FBQyxXQUFXLEVBQUU7b0JBQ25ELHNCQUFzQixHQUFHLElBQUksQ0FBQztpQkFDL0I7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDOzswSEFqRVUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsd0pDakIxQyw2c0RBcURBOzJGRHBDYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNEJBQTRCOzhCQUs3QixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ08sWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgY291bnRyeUxpc3QgZnJvbSAnaXNvLTMxNjYtY291bnRyeS1saXN0JztcblxuY29uc3QgVU5JQ09ERV9PRkZTRVQgPSAxMjczOTc7XG5cbmludGVyZmFjZSBDb3VudHJ5Q29kZUFuZEZsYWcge1xuICBmbGFnOiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gIGNvdW50cnlOYW1lPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3VwcG9ydGVkLWNvdW50cmllcy12MicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXBwb3J0ZWQtY291bnRyaWVzLXYyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VwcG9ydGVkLWNvdW50cmllcy12Mi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdXBwb3J0ZWRDb3VudHJpZXNWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJ1c2luZXNzQ291bnRyeUNvZGU6IHN0cmluZztcbiAgQElucHV0KCkgc2V0IGNvdW50cnlDb2Rlcyhjb3VudHJ5Q29kZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5jb3VudHJ5Q29kZUFuZEZsYWdzID0gW107XG4gICAgaWYgKGNvdW50cnlDb2Rlcykge1xuICAgICAgY291bnRyeUNvZGVzLmZvckVhY2goKGNvdW50cnlDb2RlKSA9PiB7XG4gICAgICAgIHRoaXMuY291bnRyeUNvZGVBbmRGbGFncy5wdXNoKHtcbiAgICAgICAgICBmbGFnOiB0aGlzLmdldEVtb2ppRmxhZyhjb3VudHJ5Q29kZSksXG4gICAgICAgICAgY291bnRyeU5hbWU6IHRoaXMuZ2V0Q291bnRyeU5hbWUoY291bnRyeUNvZGUpLFxuICAgICAgICAgIGNvdW50cnlDb2RlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvdW50cnlDb2RlQW5kRmxhZ3M6IENvdW50cnlDb2RlQW5kRmxhZ1tdID0gW107XG4gIGJ1c2luZXNzQ291bnRyeTogQ291bnRyeUNvZGVBbmRGbGFnO1xuICBhdmFpbGFibGVJblVzZXJDb3VudHJ5ID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDb3VudHJ5Q29kZSAmJiB0aGlzLmJ1c2luZXNzQ291bnRyeUNvZGUudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYnVzaW5lc3NDb3VudHJ5ID0ge1xuICAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5idXNpbmVzc0NvdW50cnlDb2RlLFxuICAgICAgICBmbGFnOiB0aGlzLmdldEVtb2ppRmxhZyh0aGlzLmJ1c2luZXNzQ291bnRyeUNvZGUpLFxuICAgICAgICBjb3VudHJ5TmFtZTogdGhpcy5nZXRDb3VudHJ5TmFtZSh0aGlzLmJ1c2luZXNzQ291bnRyeUNvZGUpLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5hdmFpbGFibGVJblVzZXJDb3VudHJ5ID0gdGhpcy5jaGVja1lvdXJDb3VudHJ5SW5BdmFpbGFibGUodGhpcy5idXNpbmVzc0NvdW50cnlDb2RlLCB0aGlzLmNvdW50cnlDb2RlQW5kRmxhZ3MpO1xuICAgIGlmICh0aGlzLmF2YWlsYWJsZUluVXNlckNvdW50cnkpIHtcbiAgICAgIHRoaXMuY291bnRyeUNvZGVBbmRGbGFncy51bnNoaWZ0KHRoaXMuYnVzaW5lc3NDb3VudHJ5KTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb3VudHJ5Q29kZUFuZEZsYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLmJ1c2luZXNzQ291bnRyeUNvZGUgPT09IHRoaXMuY291bnRyeUNvZGVBbmRGbGFnc1tpXS5jb3VudHJ5Q29kZSkge1xuICAgICAgICAgIHRoaXMuY291bnRyeUNvZGVBbmRGbGFncy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVtb2ppRmxhZyhjb3VudHJ5Q29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGFycyA9IFsuLi5jb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpXS5tYXAoKGMpID0+IGMuY2hhckNvZGVBdCgwKSArIFVOSUNPREVfT0ZGU0VUKTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uY2hhcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHJ5TmFtZShjb3VudHJ5Q29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvdW50cnlDb2RlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBjb3VudHJ5TGlzdC5uYW1lKGNvdW50cnlDb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tZb3VyQ291bnRyeUluQXZhaWxhYmxlKGJ1c2luZXNzQ291bnRyeUNvZGU6IHN0cmluZywgY291bnRyeUNvZGVBbmRGbGFnczogQ291bnRyeUNvZGVBbmRGbGFnW10pOiBib29sZWFuIHtcbiAgICBsZXQgYXZhaWxhYmxlSW5Vc2VyQ291bnRyeSA9IGZhbHNlO1xuICAgIGlmIChcbiAgICAgIGJ1c2luZXNzQ291bnRyeUNvZGUgJiZcbiAgICAgIGJ1c2luZXNzQ291bnRyeUNvZGUudHJpbSgpLmxlbmd0aCA+IDAgJiZcbiAgICAgIGNvdW50cnlDb2RlQW5kRmxhZ3MgJiZcbiAgICAgIGNvdW50cnlDb2RlQW5kRmxhZ3MubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY291bnRyeUNvZGVBbmRGbGFncy5mb3JFYWNoKChjb3VudHJ5Q29kZSkgPT4ge1xuICAgICAgICBpZiAoYnVzaW5lc3NDb3VudHJ5Q29kZSA9PT0gY291bnRyeUNvZGUuY291bnRyeUNvZGUpIHtcbiAgICAgICAgICBhdmFpbGFibGVJblVzZXJDb3VudHJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhdmFpbGFibGVJblVzZXJDb3VudHJ5O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxhZ3NcIiAqbmdJZj1cIiEoY291bnRyeUNvZGVBbmRGbGFncz8ubGVuZ3RoID4gMClcIj5cbiAgPHN2Z1xuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGhlaWdodD1cIjIwXCJcbiAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICB3aWR0aD1cIjIwXCJcbiAgPlxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk1LS40OS03LTMuODUtNy03LjkzIDAtLjYyLjA4LTEuMjEuMjEtMS43OUw5IDE1djFjMCAxLjEuOSAyIDIgMnYxLjkzem02LjktMi41NGMtLjI2LS44MS0xLTEuMzktMS45LTEuMzloLTF2LTNjMC0uNTUtLjQ1LTEtMS0xSDh2LTJoMmMuNTUgMCAxLS40NSAxLTFWN2gyYzEuMSAwIDItLjkgMi0ydi0uNDFjMi45MyAxLjE5IDUgNC4wNiA1IDcuNDEgMCAyLjA4LS44IDMuOTctMi4xIDUuMzl6XCJcbiAgICAvPlxuICA8L3N2Zz5cbiAgPHNwYW4gY2xhc3M9XCJzcGFuLXRleHRcIj5cbiAgICB7eyAnRlJPTlRFTkQuU1RPUkUuQUxMX0NPVU5UUklFUycgfCB0cmFuc2xhdGUgfX1cbiAgPC9zcGFuPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiY291bnRyeUNvZGVBbmRGbGFncz8ubGVuZ3RoID4gMFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwidGl0bGVcIlxuICAgICpuZ0lmPVwiYnVzaW5lc3NDb3VudHJ5Q29kZT8ubGVuZ3RoID4gMCAmJiAhYXZhaWxhYmxlSW5Vc2VyQ291bnRyeVwiXG4gID5cbiAgICB7eyAnRlJPTlRFTkQuU1RPUkUuTk9UX0FWQUlMQUJMRV9JTl9ZT1VSX0NPVU5UUlknIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImZsYWdzXCIgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyeUNvZGVBbmRGbGFnczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImkgPCAzXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJ7eyBjb3VudHJ5LmNvdW50cnlDb2RlIH19XCJcbiAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICA+XG4gICAgICB7eyBjb3VudHJ5LmZsYWcgfX1cbiAgICAgIDxzcGFuPnt7IGNvdW50cnkuY291bnRyeU5hbWUgfX08L3NwYW4+XG4gICAgICA8YnIgLz5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGFcbiAgICAgICpuZ0lmPVwiY291bnRyeUNvZGVBbmRGbGFncz8ubGVuZ3RoID4gM1wiXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgPlxuICAgICAge3sgJ0ZST05URU5ELlNUT1JFLlNFRV9BTEwnIHwgdHJhbnNsYXRlIH19ICh7e1xuICAgICAgICBjb3VudHJ5Q29kZUFuZEZsYWdzLmxlbmd0aFxuICAgICAgfX0pXG4gICAgPC9hPlxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBjb3VudHJ5Q29kZUFuZEZsYWdzXCI+XG4gICAgICAgIDxtYXQtaWNvbj57eyBjb3VudHJ5LmZsYWcgfX08L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBjb3VudHJ5LmNvdW50cnlOYW1lIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==