@alauda-fe/common
Version:
Alauda frontend team common codes.
110 lines • 18.8 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";
import * as i2 from "@angular/common";
import * as i3 from "@alauda/ui";
import * as i4 from "../core/directives/resize.directive";
import * as i5 from "../effect-directive/e2e-attribute-binding.directive";
import * as i6 from "../mutable/mutable.directive";
import * as i7 from "../translate/translate.pipe";
import * as i8 from "../core/pipes/safe.pipe";
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);
} }, dependencies: [i2.NgClass, i2.NgIf, i3.IconComponent, i4.ResizeDirective, i5.E2eAttributeBindingDirective, i6.MutableDirective, i6.DragHandleDirective, i7.TranslatePipe, i8.SafePipe], 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2hlbHAtZG9jdW1lbnQvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2hlbHAtZG9jdW1lbnQvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUVkLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7SUM0Q2hFLDBCQUdPOztBRDNDVCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsNEJBQTRCLENBQzdCLENBQUM7QUFFRixNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQztBQU81QyxNQUFNLE9BQU8scUJBQXFCO0lBV2hDLFlBRVMsSUFHTixFQUNlLEdBQXNCLEVBQ3RCLFNBQXVCO1FBTGhDLFNBQUksR0FBSixJQUFJLENBR1Y7UUFDZSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBZHpDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFXL0IsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7YUFDekIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQWlCLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQXdCLENBQUMsSUFBSSxDQUUvQyxDQUFDO1lBQ0osQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pCO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBZTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRywrQkFBK0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztzRkFyRFUscUJBQXFCLHVCQVl0QixtQkFBbUI7b0VBWmxCLHFCQUFxQjs7Ozs7OztZQzNCbEMsaUNBU0M7WUFIQyxBQURBLEFBREEsQUFEQSxxS0FBNEIsSUFBSSxLQUFDLG9KQUNQLEtBQUssS0FBQyw0SkFDRixJQUFJLEtBQUMsd0pBQ1AsS0FBSyxLQUFDO1lBUWhDLEFBSkYsOEJBR0Msa0JBTUU7WUFGQywwSUFBUyxVQUFNLEtBQUM7WUFFakIsaUJBQVc7WUFDWixZQUNBOztZQUFBLHlCQUEyQjtZQUMzQixtQ0FLQztZQUZDLDBJQUFTLGdCQUFZLEtBQUM7WUFHMUIsQUFERyxpQkFBVyxFQUNSO1lBRUosQUFERiw4QkFBcUIsbUJBVWxCOztZQU5DLGtKQUFXLHFCQUFpQixLQUFDO1lBTTlCLGlCQUFTO1lBR1IsQUFERiwrQkFBMEIsYUFLdkI7WUFDQyxhQUNFOztZQUFBLGdDQUdVO1lBR2xCLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0Y7WUFFTix5RUFHQztZQUNILGlCQUFNOztZQXhDRixlQUNBO1lBREEscUVBQ0E7WUFhRSxlQUE0QztZQUM1QyxBQURBLHFHQUE0QyxtREFJMUM7WUFLQSxlQUFvQjtZQUFwQix3REFBb0I7WUFJcEIsY0FDRTtZQURGLDRFQUNFO1lBVUwsZUFBYTtZQUFiLGtDQUFhOzs7aUZEL0JMLHFCQUFxQjtjQUxqQyxTQUFTO2tDQUdTLHVCQUF1QixDQUFDLE1BQU07O3NCQWM1QyxNQUFNO3VCQUFDLG1CQUFtQjtnRkFWN0IsS0FBSztrQkFESixTQUFTO21CQUFDLFFBQVE7O2tGQURSLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCBmcm9tRXZlbnQsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlc2l6ZUV2ZW50IH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGNvbnN0IFRPS0VOX0hFTFBfRE9DX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48dW5rbm93bj4oXG4gICdoZWxwIGRvY3VtZW50IGRhdGEgY29udGV4dCcsXG4pO1xuXG5jb25zdCBET0NfV0lORE9XX1NNQUxMX1NJWkVfVEhSRVNIT0xEID0gNzcwO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBIZWxwRG9jdW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBmcmFtZTogRWxlbWVudFJlZjxIVE1MRnJhbWVFbGVtZW50PjtcblxuICBvdmVybGF5ID0gZmFsc2U7XG5cbiAgY3VycmVudEhyZWYgPSB0aGlzLmRhdGEucmF3VXJsO1xuICBzbWFsbCA9IHRydWU7XG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVE9LRU5fSEVMUF9ET0NfREFUQSlcbiAgICBwdWJsaWMgZGF0YToge1xuICAgICAgcmF3VXJsOiBzdHJpbmc7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgIH0sXG4gICAgcHVibGljIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICApIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAnbWVzc2FnZScpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSgoZXZ0IGFzIHsgZGF0YTogc3RyaW5nIH0pLmRhdGEpIGFzIHtcbiAgICAgICAgICAgICAgaHJlZjogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgICAgIGZpbHRlcihpID0+ICEhaSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRIcmVmID0gZGF0YS5ocmVmO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25SZXNpemVkKHsgd2lkdGggfTogUmVzaXplRXZlbnQpIHtcbiAgICB0aGlzLnNtYWxsID0gd2lkdGggPCBET0NfV0lORE9XX1NNQUxMX1NJWkVfVEhSRVNIT0xEO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYmFjaygpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50SHJlZiAhPT0gdGhpcy5kYXRhLnJhd1VybCkge1xuICAgICAgdGhpcy5mcmFtZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3JjJywgdGhpcy5kYXRhLnJhd1VybCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGFjbE11dGFibGVcbiAgYWNsRHJhZ0JvdW5kYXJ5PVwiaHRtbFwiXG4gIChhY2xEcmFnU3RhcnRlZCk9XCJvdmVybGF5ID0gdHJ1ZVwiXG4gIChhY2xEcmFnRW5kZWQpPVwib3ZlcmxheSA9IGZhbHNlXCJcbiAgKGFjbFJlc2l6ZVN0YXJ0ZWQpPVwib3ZlcmxheSA9IHRydWVcIlxuICAoYWNsUmVzaXplRW5kZWQpPVwib3ZlcmxheSA9IGZhbHNlXCJcbiAgY2xhc3M9XCJyZXNpemUtd3JhcHBlciB3cmFwcGVyXCJcbiAgI2NvbnRhaW5lclxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJoZWFkZXJcIlxuICAgIGFjbERyYWdIYW5kbGVcbiAgPlxuICAgIDxhdWktaWNvblxuICAgICAgaWNvbj1cImFycm93X2xlZnRcIlxuICAgICAgc2l6ZT1cIjE2cHhcIlxuICAgICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgICBjbGFzcz1cImljb24tYnRuIG1yLTRcIlxuICAgID48L2F1aS1pY29uPlxuICAgIHt7IGRhdGEudGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgICA8ZGl2IHN0eWxlPVwiZmxleDogMVwiPjwvZGl2PlxuICAgIDxhdWktaWNvblxuICAgICAgaWNvbj1cInhtYXJrXCJcbiAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgIChjbGljayk9XCJjbG9zZS5uZXh0KClcIlxuICAgICAgY2xhc3M9XCJpY29uLWJ0blwiXG4gICAgPjwvYXVpLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxpZnJhbWVcbiAgICAgICNpZnJhbWVcbiAgICAgIGFjbFJlc2l6ZVxuICAgICAgKHJlc2l6ZWQpPVwib25SZXNpemVkKCRldmVudClcIlxuICAgICAgW3NyY109XCJkYXRhLnJhd1VybCB8IGFjbFNhZmU6ICdyZXNvdXJjZVVybCdcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBpc19zbWFsbDogc21hbGwsXG4gICAgICAgICdmcmFtZS1ib2R5JzogdHJ1ZVxuICAgICAgfVwiXG4gICAgPjwvaWZyYW1lPlxuXG4gICAgPGRpdiBjbGFzcz1cImJhcl9vcGVuLW5ld1wiPlxuICAgICAgPGFcbiAgICAgICAgW2hyZWZdPVwiY3VycmVudEhyZWZcIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgID5cbiAgICAgICAge3sgJ29wZW5faW5fZG9jX2NlbnRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08YXVpLWljb25cbiAgICAgICAgICBpY29uPVwianVtcFwiXG4gICAgICAgICAgbWFyZ2luPVwibGVmdFwiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJtYXNrXCJcbiAgICAqbmdJZj1cIm92ZXJsYXlcIlxuICA+PC9kaXY+XG48L2Rpdj5cbiJdfQ==