@alauda-fe/common
Version:
Alauda frontend team common codes.
103 lines • 18.2 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, InjectionToken, ViewChild, } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { Subject, filter, fromEvent, map, takeUntil } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
const _c0 = ["iframe"];
const _c1 = a0 => ({ is_small: a0, "frame-body": true });
function HelpDocumentComponent_div_17_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "div", 13);
} }
export const TOKEN_HELP_DOC_DATA = new InjectionToken('help document data context');
const DOC_WINDOW_SMALL_SIZE_THRESHOLD = 770;
export class HelpDocumentComponent {
constructor(data, cdr, sanitizer) {
this.data = data;
this.cdr = cdr;
this.sanitizer = sanitizer;
this.overlay = false;
this.currentHref = this.data.rawUrl;
this.small = true;
this.destroy$$ = new Subject();
this.close = new EventEmitter();
fromEvent(window, 'message')
.pipe(map((evt) => {
try {
return JSON.parse(evt.data);
}
catch {
return null;
}
}), takeUntil(this.destroy$$), filter(i => !!i))
.subscribe(data => {
this.currentHref = data.href;
this.cdr.markForCheck();
});
}
onResized({ width }) {
this.small = width < DOC_WINDOW_SMALL_SIZE_THRESHOLD;
this.cdr.markForCheck();
}
back() {
if (this.currentHref !== this.data.rawUrl) {
this.frame.nativeElement.setAttribute('src', this.data.rawUrl);
}
}
ngOnDestroy() {
this.destroy$$.next();
}
static { this.ɵfac = function HelpDocumentComponent_Factory(t) { return new (t || HelpDocumentComponent)(i0.ɵɵdirectiveInject(TOKEN_HELP_DOC_DATA), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.DomSanitizer)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HelpDocumentComponent, selectors: [["ng-component"]], viewQuery: function HelpDocumentComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.frame = _t.first);
} }, decls: 18, vars: 15, consts: [["container", ""], ["iframe", ""], ["aclMutable", "", "aclDragBoundary", "html", 1, "resize-wrapper", "wrapper", 3, "aclDragStarted", "aclDragEnded", "aclResizeStarted", "aclResizeEnded"], ["aclDragHandle", "", 1, "header"], ["icon", "arrow_left", "size", "16px", 1, "icon-btn", "mr-4", 3, "click"], [2, "flex", "1"], ["icon", "xmark", "size", "16px", 1, "icon-btn", 3, "click"], [1, "content"], ["aclResize", "", 3, "resized", "src", "ngClass"], [1, "bar_open-new"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"], ["icon", "jump", "margin", "left"], ["class", "mask", 4, "ngIf"], [1, "mask"]], template: function HelpDocumentComponent_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 2, 0);
i0.ɵɵlistener("aclDragStarted", function HelpDocumentComponent_Template_div_aclDragStarted_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.overlay = true); })("aclDragEnded", function HelpDocumentComponent_Template_div_aclDragEnded_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.overlay = false); })("aclResizeStarted", function HelpDocumentComponent_Template_div_aclResizeStarted_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.overlay = true); })("aclResizeEnded", function HelpDocumentComponent_Template_div_aclResizeEnded_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.overlay = false); });
i0.ɵɵelementStart(2, "div", 3)(3, "aui-icon", 4);
i0.ɵɵlistener("click", function HelpDocumentComponent_Template_aui_icon_click_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.back()); });
i0.ɵɵelementEnd();
i0.ɵɵtext(4);
i0.ɵɵpipe(5, "translate");
i0.ɵɵelement(6, "div", 5);
i0.ɵɵelementStart(7, "aui-icon", 6);
i0.ɵɵlistener("click", function HelpDocumentComponent_Template_aui_icon_click_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.close.next()); });
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(8, "div", 7)(9, "iframe", 8, 1);
i0.ɵɵpipe(11, "aclSafe");
i0.ɵɵlistener("resized", function HelpDocumentComponent_Template_iframe_resized_9_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onResized($event)); });
i0.ɵɵelementEnd();
i0.ɵɵelementStart(12, "div", 9)(13, "a", 10);
i0.ɵɵtext(14);
i0.ɵɵpipe(15, "translate");
i0.ɵɵelement(16, "aui-icon", 11);
i0.ɵɵelementEnd()()();
i0.ɵɵtemplate(17, HelpDocumentComponent_div_17_Template, 1, 0, "div", 12);
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance(4);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 6, ctx.data.title), " ");
i0.ɵɵadvance(5);
i0.ɵɵproperty("src", i0.ɵɵpipeBind2(11, 8, ctx.data.rawUrl, "resourceUrl"), i0.ɵɵsanitizeResourceUrl)("ngClass", i0.ɵɵpureFunction1(13, _c1, ctx.small));
i0.ɵɵadvance(4);
i0.ɵɵproperty("href", ctx.currentHref, i0.ɵɵsanitizeUrl);
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 11, "open_in_doc_center"), "");
i0.ɵɵadvance(3);
i0.ɵɵproperty("ngIf", ctx.overlay);
} }, styles: [".wrapper[_ngcontent-%COMP%]{z-index:1000;height:548px;width:456px;display:flex;position:fixed;top:92px;right:-2px;flex-direction:column;justify-content:stretch;border:3px solid transparent}.header[_ngcontent-%COMP%]{height:44px;position:absolute;left:0;right:0;background-color:rgb(var(--aui-color-n-1));color:rgb(var(--aui-color-n-4));display:flex;box-sizing:border-box;padding:12px 24px;justify-content:space-between;align-items:center;font-size:16px;line-height:20px;cursor:move}.content[_ngcontent-%COMP%]{width:100%;max-width:100%;flex:1;overflow:auto;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-n-10));box-shadow:0 2px 8px rgba(var(--aui-color-origin-shadow),.16);display:flex;height:100%;flex-direction:column;align-items:stretch}.resize-wrapper[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column}.mask[_ngcontent-%COMP%]{top:44px;right:0;bottom:0;left:0;z-index:100;position:absolute}.icon-btn[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4))}.icon-btn[_ngcontent-%COMP%]:hover{color:rgb(var(--aui-color-n-10));cursor:pointer}.frame-body[_ngcontent-%COMP%]{width:100%;height:100%;flex:1;margin:16px 0 32px}.frame-body.is_small[_ngcontent-%COMP%]{margin-top:-66px}.bar_open-new[_ngcontent-%COMP%]{display:flex;align-items:center;height:32px;padding-left:24px;position:absolute;bottom:0;width:100%;box-shadow:0 -1px 2px #0000001a}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HelpDocumentComponent, [{
type: Component,
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n aclMutable\n aclDragBoundary=\"html\"\n (aclDragStarted)=\"overlay = true\"\n (aclDragEnded)=\"overlay = false\"\n (aclResizeStarted)=\"overlay = true\"\n (aclResizeEnded)=\"overlay = false\"\n class=\"resize-wrapper wrapper\"\n #container\n>\n <div\n class=\"header\"\n aclDragHandle\n >\n <aui-icon\n icon=\"arrow_left\"\n size=\"16px\"\n (click)=\"back()\"\n class=\"icon-btn mr-4\"\n ></aui-icon>\n {{ data.title | translate }}\n <div style=\"flex: 1\"></div>\n <aui-icon\n icon=\"xmark\"\n size=\"16px\"\n (click)=\"close.next()\"\n class=\"icon-btn\"\n ></aui-icon>\n </div>\n <div class=\"content\">\n <iframe\n #iframe\n aclResize\n (resized)=\"onResized($event)\"\n [src]=\"data.rawUrl | aclSafe: 'resourceUrl'\"\n [ngClass]=\"{\n is_small: small,\n 'frame-body': true\n }\"\n ></iframe>\n\n <div class=\"bar_open-new\">\n <a\n [href]=\"currentHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'open_in_doc_center' | translate\n }}<aui-icon\n icon=\"jump\"\n margin=\"left\"\n ></aui-icon>\n </a>\n </div>\n </div>\n\n <div\n class=\"mask\"\n *ngIf=\"overlay\"\n ></div>\n</div>\n", styles: [".wrapper{z-index:1000;height:548px;width:456px;display:flex;position:fixed;top:92px;right:-2px;flex-direction:column;justify-content:stretch;border:3px solid transparent}.header{height:44px;position:absolute;left:0;right:0;background-color:rgb(var(--aui-color-n-1));color:rgb(var(--aui-color-n-4));display:flex;box-sizing:border-box;padding:12px 24px;justify-content:space-between;align-items:center;font-size:16px;line-height:20px;cursor:move}.content{width:100%;max-width:100%;flex:1;overflow:auto;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-n-10));box-shadow:0 2px 8px rgba(var(--aui-color-origin-shadow),.16);display:flex;height:100%;flex-direction:column;align-items:stretch}.resize-wrapper{flex:1;display:flex;flex-direction:column}.mask{top:44px;right:0;bottom:0;left:0;z-index:100;position:absolute}.icon-btn{color:rgb(var(--aui-color-n-4))}.icon-btn:hover{color:rgb(var(--aui-color-n-10));cursor:pointer}.frame-body{width:100%;height:100%;flex:1;margin:16px 0 32px}.frame-body.is_small{margin-top:-66px}.bar_open-new{display:flex;align-items:center;height:32px;padding-left:24px;position:absolute;bottom:0;width:100%;box-shadow:0 -1px 2px #0000001a}\n"] }]
}], () => [{ type: undefined, decorators: [{
type: Inject,
args: [TOKEN_HELP_DOC_DATA]
}] }, { type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }], { frame: [{
type: ViewChild,
args: ['iframe']
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HelpDocumentComponent, { className: "HelpDocumentComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2hlbHAtZG9jdW1lbnQvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2hlbHAtZG9jdW1lbnQvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUVkLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztJQzRDaEUsMEJBR087O0FEM0NULE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUNuRCw0QkFBNEIsQ0FDN0IsQ0FBQztBQUVGLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBTzVDLE1BQU0sT0FBTyxxQkFBcUI7SUFXaEMsWUFFUyxJQUdOLEVBQ2UsR0FBc0IsRUFDdEIsU0FBdUI7UUFMaEMsU0FBSSxHQUFKLElBQUksQ0FHVjtRQUNlLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFkekMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVcvQixTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQzthQUN6QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsR0FBaUIsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUUsR0FBd0IsQ0FBQyxJQUFJLENBRS9DLENBQUM7WUFDSixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakI7YUFDQSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFlO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLCtCQUErQixDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO3NGQXJEVSxxQkFBcUIsdUJBWXRCLG1CQUFtQjtvRUFabEIscUJBQXFCOzs7Ozs7O1lDM0JsQyxpQ0FTQztZQUhDLEFBREEsQUFEQSxBQURBLHFLQUE0QixJQUFJLEtBQUMsb0pBQ1AsS0FBSyxLQUFDLDRKQUNGLElBQUksS0FBQyx3SkFDUCxLQUFLLEtBQUM7WUFRaEMsQUFKRiw4QkFHQyxrQkFNRTtZQUZDLDBJQUFTLFVBQU0sS0FBQztZQUVqQixpQkFBVztZQUNaLFlBQ0E7O1lBQUEseUJBQTJCO1lBQzNCLG1DQUtDO1lBRkMsMElBQVMsZ0JBQVksS0FBQztZQUcxQixBQURHLGlCQUFXLEVBQ1I7WUFFSixBQURGLDhCQUFxQixtQkFVbEI7O1lBTkMsa0pBQVcscUJBQWlCLEtBQUM7WUFNOUIsaUJBQVM7WUFHUixBQURGLCtCQUEwQixhQUt2QjtZQUNDLGFBQ0U7O1lBQUEsZ0NBR1U7WUFHbEIsQUFERSxBQURFLGlCQUFJLEVBQ0EsRUFDRjtZQUVOLHlFQUdDO1lBQ0gsaUJBQU07O1lBeENGLGVBQ0E7WUFEQSxxRUFDQTtZQWFFLGVBQTRDO1lBQzVDLEFBREEscUdBQTRDLG1EQUkxQztZQUtBLGVBQW9CO1lBQXBCLHdEQUFvQjtZQUlwQixjQUNFO1lBREYsNEVBQ0U7WUFVTCxlQUFhO1lBQWIsa0NBQWE7OztpRkQvQkwscUJBQXFCO2NBTGpDLFNBQVM7a0NBR1MsdUJBQXVCLENBQUMsTUFBTTs7c0JBYzVDLE1BQU07dUJBQUMsbUJBQW1CO2dGQVY3QixLQUFLO2tCQURKLFNBQVM7bUJBQUMsUUFBUTs7a0ZBRFIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBmaWx0ZXIsIGZyb21FdmVudCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzaXplRXZlbnQgfSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgY29uc3QgVE9LRU5fSEVMUF9ET0NfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjx1bmtub3duPihcbiAgJ2hlbHAgZG9jdW1lbnQgZGF0YSBjb250ZXh0Jyxcbik7XG5cbmNvbnN0IERPQ19XSU5ET1dfU01BTExfU0laRV9USFJFU0hPTEQgPSA3NzA7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEhlbHBEb2N1bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScpXG4gIGZyYW1lOiBFbGVtZW50UmVmPEhUTUxGcmFtZUVsZW1lbnQ+O1xuXG4gIG92ZXJsYXkgPSBmYWxzZTtcblxuICBjdXJyZW50SHJlZiA9IHRoaXMuZGF0YS5yYXdVcmw7XG4gIHNtYWxsID0gdHJ1ZTtcbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUT0tFTl9IRUxQX0RPQ19EQVRBKVxuICAgIHB1YmxpYyBkYXRhOiB7XG4gICAgICByYXdVcmw6IHN0cmluZztcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgfSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICkge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdtZXNzYWdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGV2dDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKChldnQgYXMgeyBkYXRhOiBzdHJpbmcgfSkuZGF0YSkgYXMge1xuICAgICAgICAgICAgICBocmVmOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgICAgZmlsdGVyKGkgPT4gISFpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEhyZWYgPSBkYXRhLmhyZWY7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBvblJlc2l6ZWQoeyB3aWR0aCB9OiBSZXNpemVFdmVudCkge1xuICAgIHRoaXMuc21hbGwgPSB3aWR0aCA8IERPQ19XSU5ET1dfU01BTExfU0laRV9USFJFU0hPTEQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRIcmVmICE9PSB0aGlzLmRhdGEucmF3VXJsKSB7XG4gICAgICB0aGlzLmZyYW1lLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzcmMnLCB0aGlzLmRhdGEucmF3VXJsKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgYWNsTXV0YWJsZVxuICBhY2xEcmFnQm91bmRhcnk9XCJodG1sXCJcbiAgKGFjbERyYWdTdGFydGVkKT1cIm92ZXJsYXkgPSB0cnVlXCJcbiAgKGFjbERyYWdFbmRlZCk9XCJvdmVybGF5ID0gZmFsc2VcIlxuICAoYWNsUmVzaXplU3RhcnRlZCk9XCJvdmVybGF5ID0gdHJ1ZVwiXG4gIChhY2xSZXNpemVFbmRlZCk9XCJvdmVybGF5ID0gZmFsc2VcIlxuICBjbGFzcz1cInJlc2l6ZS13cmFwcGVyIHdyYXBwZXJcIlxuICAjY29udGFpbmVyXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImhlYWRlclwiXG4gICAgYWNsRHJhZ0hhbmRsZVxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBpY29uPVwiYXJyb3dfbGVmdFwiXG4gICAgICBzaXplPVwiMTZweFwiXG4gICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgIGNsYXNzPVwiaWNvbi1idG4gbXItNFwiXG4gICAgPjwvYXVpLWljb24+XG4gICAge3sgZGF0YS50aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCI+PC9kaXY+XG4gICAgPGF1aS1pY29uXG4gICAgICBpY29uPVwieG1hcmtcIlxuICAgICAgc2l6ZT1cIjE2cHhcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlLm5leHQoKVwiXG4gICAgICBjbGFzcz1cImljb24tYnRuXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPGlmcmFtZVxuICAgICAgI2lmcmFtZVxuICAgICAgYWNsUmVzaXplXG4gICAgICAocmVzaXplZCk9XCJvblJlc2l6ZWQoJGV2ZW50KVwiXG4gICAgICBbc3JjXT1cImRhdGEucmF3VXJsIHwgYWNsU2FmZTogJ3Jlc291cmNlVXJsJ1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGlzX3NtYWxsOiBzbWFsbCxcbiAgICAgICAgJ2ZyYW1lLWJvZHknOiB0cnVlXG4gICAgICB9XCJcbiAgICA+PC9pZnJhbWU+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmFyX29wZW4tbmV3XCI+XG4gICAgICA8YVxuICAgICAgICBbaHJlZl09XCJjdXJyZW50SHJlZlwiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgPlxuICAgICAgICB7eyAnb3Blbl9pbl9kb2NfY2VudGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTxhdWktaWNvblxuICAgICAgICAgIGljb249XCJqdW1wXCJcbiAgICAgICAgICBtYXJnaW49XCJsZWZ0XCJcbiAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1hc2tcIlxuICAgICpuZ0lmPVwib3ZlcmxheVwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19