UNPKG

@vendasta/store

Version:

Components and data for Store

80 lines 17.5 kB
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==