UNPKG

@spartacus/cdc

Version:

Customer Data Cloud Integration library for Spartacus

104 lines 16.8 kB
import { ChangeDetectionStrategy, Component, ViewEncapsulation, } from '@angular/core'; import { distinctUntilChanged, take, tap } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/storefront"; import * as i2 from "@spartacus/core"; import * as i3 from "@spartacus/cdc/root"; import * as i4 from "@angular/common"; export class GigyaRaasComponent { constructor(component, baseSiteService, languageService, cdcConfig, winRef, cdcJSService, zone) { this.component = component; this.baseSiteService = baseSiteService; this.languageService = languageService; this.cdcConfig = cdcConfig; this.winRef = winRef; this.cdcJSService = cdcJSService; this.zone = zone; this.renderScreenSet = true; } ngOnInit() { this.jsLoaded$ = this.cdcJSService.didLoad(); this.jsError$ = this.cdcJSService.didScriptFailToLoad(); this.language$ = this.languageService.getActive().pipe(distinctUntilChanged(), // On language change we want to rerender CDC screen with proper translations tap(() => (this.renderScreenSet = true))); } /** * Display screen set in embed mode * * @param data - GigyaRaasComponentData * @param lang - language */ displayScreenSet(data, lang) { if (this.renderScreenSet) { this.showScreenSet(data, lang); } this.renderScreenSet = false; } /** * Show screen set * * @param data - GigyaRaasComponentData * @param lang - language */ showScreenSet(data, lang) { var _a, _b, _c; (_c = (_b = (_a = this.winRef.nativeWindow) === null || _a === void 0 ? void 0 : _a['gigya']) === null || _b === void 0 ? void 0 : _b.accounts) === null || _c === void 0 ? void 0 : _c.showScreenSet(Object.assign(Object.assign({ screenSet: data.screenSet, startScreen: data.startScreen, lang }, (this.displayInEmbedMode(data) ? { containerID: data.containerID } : {})), (this.isLoginScreenSet(data) ? { sessionExpiration: this.getSessionExpirationValue() } : { onAfterSubmit: (...params) => { this.zone.run(() => this.cdcJSService.onProfileUpdateEventHandler(...params)); }, }))); } isLoginScreenSet(data) { const profileEditScreen = data.profileEdit === 'true' ? true : false; return !profileEditScreen; } getSessionExpirationValue() { var _a; if (((_a = this.cdcConfig) === null || _a === void 0 ? void 0 : _a.cdc) !== undefined) { const filteredConfigs = this.cdcConfig.cdc.filter((conf) => conf.baseSite === this.getCurrentBaseSite()); if (filteredConfigs && filteredConfigs.length > 0) { return filteredConfigs[0].sessionExpiration; } } // Return a default value return 3600; } getCurrentBaseSite() { let baseSite = ''; this.baseSiteService .getActive() .pipe(take(1)) .subscribe((data) => (baseSite = data)); return baseSite; } /** * Check if the component should be displayed in embed mode * * @param data - GigyaRaasComponentData */ displayInEmbedMode(data) { const embedValue = data.embed === 'true' ? true : false; if (embedValue && data.containerID && data.containerID.length > 0) { return true; } return false; } } GigyaRaasComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GigyaRaasComponent, deps: [{ token: i1.CmsComponentData }, { token: i2.BaseSiteService }, { token: i2.LanguageService }, { token: i3.CdcConfig }, { token: i2.WindowRef }, { token: i3.CdcJsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); GigyaRaasComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: GigyaRaasComponent, selector: "cx-gigya-raas", ngImport: i0, template: "<div *ngIf=\"component.data$ | async as data\">\n <div *ngIf=\"jsLoaded$ | async\">\n <div *ngIf=\"language$ | async as lang\">\n <div\n *ngIf=\"displayInEmbedMode(data); else popupLink\"\n [attr.id]=\"data.containerID\"\n >\n {{ displayScreenSet(data, lang) }}\n </div>\n <ng-template #popupLink>\n <a\n class=\"popup-link\"\n [attr.data-cdc-id]=\"data.uid\"\n [attr.data-profile-edit]=\"data.profileEdit\"\n (click)=\"showScreenSet(data, lang)\"\n >{{ data.linkText }}</a\n >\n </ng-template>\n </div>\n </div>\n <div *ngIf=\"jsError$ | async\" class=\"js-error\">\n {{ 'errorHandlers.scriptFailedToLoad' | cxTranslate }}\n {{ 'errorHandlers.refreshThePage' | cxTranslate }}\n </div>\n</div>\n", styles: ["cx-gigya-raas .popup-link{cursor:pointer;color:var(--cx-color-primary)}cx-gigya-raas .js-error{text-align:center;padding:4rem}"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe, "cxTranslate": i2.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GigyaRaasComponent, decorators: [{ type: Component, args: [{ selector: 'cx-gigya-raas', templateUrl: './gigya-raas.component.html', styleUrls: ['./gigya-raas.component.scss'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }] }], ctorParameters: function () { return [{ type: i1.CmsComponentData }, { type: i2.BaseSiteService }, { type: i2.LanguageService }, { type: i3.CdcConfig }, { type: i2.WindowRef }, { type: i3.CdcJsService }, { type: i0.NgZone }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lneWEtcmFhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9pbnRlZ3JhdGlvbi1saWJzL2NkYy9jb21wb25lbnRzL2dpZ3lhLXJhYXMvZ2lneWEtcmFhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9pbnRlZ3JhdGlvbi1saWJzL2NkYy9jb21wb25lbnRzL2dpZ3lhLXJhYXMvZ2lneWEtcmFhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pFLE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFDUyxTQUFtRCxFQUNsRCxlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxTQUFvQixFQUNwQixNQUFpQixFQUNqQixZQUEwQixFQUMxQixJQUFZO1FBTmIsY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVpaLG9CQUFlLEdBQUcsSUFBSSxDQUFDO0lBYTlCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFB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S0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OytHQTNHVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxRENyQi9CLGt6QkF5QkE7MkZESmEsa0JBQWtCO2tCQVA5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDMUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHaWd5YVJhYXNDb21wb25lbnREYXRhIH0gZnJvbSAnQHNwYXJ0YWN1cy9jZGMvY29yZSc7XG5pbXBvcnQgeyBDZGNDb25maWcsIENkY0pzU2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY2RjL3Jvb3QnO1xuaW1wb3J0IHsgQmFzZVNpdGVTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIFdpbmRvd1JlZiB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQgeyBDbXNDb21wb25lbnREYXRhIH0gZnJvbSAnQHNwYXJ0YWN1cy9zdG9yZWZyb250JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N4LWdpZ3lhLXJhYXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lneWEtcmFhcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpZ3lhLXJhYXMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdpZ3lhUmFhc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCByZW5kZXJTY3JlZW5TZXQgPSB0cnVlO1xuICBsYW5ndWFnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAganNFcnJvciQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGpzTG9hZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbXBvbmVudDogQ21zQ29tcG9uZW50RGF0YTxHaWd5YVJhYXNDb21wb25lbnREYXRhPixcbiAgICBwcml2YXRlIGJhc2VTaXRlU2VydmljZTogQmFzZVNpdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZGNDb25maWc6IENkY0NvbmZpZyxcbiAgICBwcml2YXRlIHdpblJlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgY2RjSlNTZXJ2aWNlOiBDZGNKc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuanNMb2FkZWQkID0gdGhpcy5jZGNKU1NlcnZpY2UuZGlkTG9hZCgpO1xuICAgIHRoaXMuanNFcnJvciQgPSB0aGlzLmNkY0pTU2VydmljZS5kaWRTY3JpcHRGYWlsVG9Mb2FkKCk7XG4gICAgdGhpcy5sYW5ndWFnZSQgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRBY3RpdmUoKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIC8vIE9uIGxhbmd1YWdlIGNoYW5nZSB3ZSB3YW50IHRvIHJlcmVuZGVyIENEQyBzY3JlZW4gd2l0aCBwcm9wZXIgdHJhbnNsYXRpb25zXG4gICAgICB0YXAoKCkgPT4gKHRoaXMucmVuZGVyU2NyZWVuU2V0ID0gdHJ1ZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHNjcmVlbiBzZXQgaW4gZW1iZWQgbW9kZVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIEdpZ3lhUmFhc0NvbXBvbmVudERhdGFcbiAgICogQHBhcmFtIGxhbmcgLSBsYW5ndWFnZVxuICAgKi9cbiAgZGlzcGxheVNjcmVlblNldChkYXRhOiBHaWd5YVJhYXNDb21wb25lbnREYXRhLCBsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW5kZXJTY3JlZW5TZXQpIHtcbiAgICAgIHRoaXMuc2hvd1NjcmVlblNldChkYXRhLCBsYW5nKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJTY3JlZW5TZXQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHNjcmVlbiBzZXRcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBHaWd5YVJhYXNDb21wb25lbnREYXRhXG4gICAqIEBwYXJhbSBsYW5nIC0gbGFuZ3VhZ2VcbiAgICovXG4gIHNob3dTY3JlZW5TZXQoZGF0YTogR2lneWFSYWFzQ29tcG9uZW50RGF0YSwgbGFuZzogc3RyaW5nKSB7XG4gICAgKHRoaXMud2luUmVmLm5hdGl2ZVdpbmRvdyBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KT8uW1xuICAgICAgJ2dpZ3lhJ1xuICAgIF0/LmFjY291bnRzPy5zaG93U2NyZWVuU2V0KHtcbiAgICAgIHNjcmVlblNldDogZGF0YS5zY3JlZW5TZXQsXG4gICAgICBzdGFydFNjcmVlbjogZGF0YS5zdGFydFNjcmVlbixcbiAgICAgIGxhbmcsXG4gICAgICAuLi4odGhpcy5kaXNwbGF5SW5FbWJlZE1vZGUoZGF0YSlcbiAgICAgICAgPyB7IGNvbnRhaW5lcklEOiBkYXRhLmNvbnRhaW5lcklEIH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4odGhpcy5pc0xvZ2luU2NyZWVuU2V0KGRhdGEpXG4gICAgICAgID8geyBzZXNzaW9uRXhwaXJhdGlvbjogdGhpcy5nZXRTZXNzaW9uRXhwaXJhdGlvblZhbHVlKCkgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG9uQWZ0ZXJTdWJtaXQ6ICguLi5wYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNkY0pTU2VydmljZS5vblByb2ZpbGVVcGRhdGVFdmVudEhhbmRsZXIoLi4ucGFyYW1zKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0xvZ2luU2NyZWVuU2V0KGRhdGE6IEdpZ3lhUmFhc0NvbXBvbmVudERhdGEpOiBib29sZWFuIHtcbiAgICBjb25zdCBwcm9maWxlRWRpdFNjcmVlbjogYm9vbGVhbiA9XG4gICAgICBkYXRhLnByb2ZpbGVFZGl0ID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG5cbiAgICByZXR1cm4gIXByb2ZpbGVFZGl0U2NyZWVuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFNlc3Npb25FeHBpcmF0aW9uVmFsdWUoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5jZGNDb25maWc/LmNkYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbmZpZ3M6IGFueSA9IHRoaXMuY2RjQ29uZmlnLmNkYy5maWx0ZXIoXG4gICAgICAgIChjb25mKSA9PiBjb25mLmJhc2VTaXRlID09PSB0aGlzLmdldEN1cnJlbnRCYXNlU2l0ZSgpXG4gICAgICApO1xuICAgICAgaWYgKGZpbHRlcmVkQ29uZmlncyAmJiBmaWx0ZXJlZENvbmZpZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyZWRDb25maWdzWzBdLnNlc3Npb25FeHBpcmF0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZXR1cm4gYSBkZWZhdWx0IHZhbHVlXG4gICAgcmV0dXJuIDM2MDA7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRCYXNlU2l0ZSgpOiBzdHJpbmcge1xuICAgIGxldCBiYXNlU2l0ZTogc3RyaW5nID0gJyc7XG4gICAgdGhpcy5iYXNlU2l0ZVNlcnZpY2VcbiAgICAgIC5nZXRBY3RpdmUoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IChiYXNlU2l0ZSA9IGRhdGEpKTtcbiAgICByZXR1cm4gYmFzZVNpdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkIGluIGVtYmVkIG1vZGVcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBHaWd5YVJhYXNDb21wb25lbnREYXRhXG4gICAqL1xuICBkaXNwbGF5SW5FbWJlZE1vZGUoZGF0YTogR2lneWFSYWFzQ29tcG9uZW50RGF0YSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVtYmVkVmFsdWU6IGJvb2xlYW4gPSBkYXRhLmVtYmVkID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgaWYgKGVtYmVkVmFsdWUgJiYgZGF0YS5jb250YWluZXJJRCAmJiBkYXRhLmNvbnRhaW5lcklELmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJjb21wb25lbnQuZGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gIDxkaXYgKm5nSWY9XCJqc0xvYWRlZCQgfCBhc3luY1wiPlxuICAgIDxkaXYgKm5nSWY9XCJsYW5ndWFnZSQgfCBhc3luYyBhcyBsYW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZGlzcGxheUluRW1iZWRNb2RlKGRhdGEpOyBlbHNlIHBvcHVwTGlua1wiXG4gICAgICAgIFthdHRyLmlkXT1cImRhdGEuY29udGFpbmVySURcIlxuICAgICAgPlxuICAgICAgICB7eyBkaXNwbGF5U2NyZWVuU2V0KGRhdGEsIGxhbmcpIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcG9wdXBMaW5rPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwicG9wdXAtbGlua1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jZGMtaWRdPVwiZGF0YS51aWRcIlxuICAgICAgICAgIFthdHRyLmRhdGEtcHJvZmlsZS1lZGl0XT1cImRhdGEucHJvZmlsZUVkaXRcIlxuICAgICAgICAgIChjbGljayk9XCJzaG93U2NyZWVuU2V0KGRhdGEsIGxhbmcpXCJcbiAgICAgICAgICA+e3sgZGF0YS5saW5rVGV4dCB9fTwvYVxuICAgICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImpzRXJyb3IkIHwgYXN5bmNcIiBjbGFzcz1cImpzLWVycm9yXCI+XG4gICAge3sgJ2Vycm9ySGFuZGxlcnMuc2NyaXB0RmFpbGVkVG9Mb2FkJyB8IGN4VHJhbnNsYXRlIH19XG4gICAge3sgJ2Vycm9ySGFuZGxlcnMucmVmcmVzaFRoZVBhZ2UnIHwgY3hUcmFuc2xhdGUgfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==