@alauda-fe/common
Version:
Alauda frontend team common codes.
151 lines • 16.5 kB
JavaScript
/**
* @packageDocumentation
* @module async-data
*/
import { ButtonComponent } from '@alauda/ui';
import { NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { PageGuardComponent, PageGuardOperationDirective, Reason, } from '../../page-guard/public-api';
import { TranslateModule } from '../../translate/public-api';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "../../translate/translate.pipe";
function ErrorStateComponent_div_0_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementContainerStart(0);
i0.ɵɵelementStart(1, "button", 3);
i0.ɵɵlistener("click", function ErrorStateComponent_div_0_ng_container_3_ng_container_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.backToList()); });
i0.ɵɵtext(2);
i0.ɵɵpipe(3, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "return_resource_list"), " ");
} }
function ErrorStateComponent_div_0_ng_container_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, ErrorStateComponent_div_0_ng_container_3_ng_container_1_Template, 4, 3, "ng-container", 2);
i0.ɵɵelementContainerEnd();
} }
function ErrorStateComponent_div_0_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div")(1, "acl-page-guard", 1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵtemplate(3, ErrorStateComponent_div_0_ng_container_3_Template, 2, 0, "ng-container", 0);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("allowed", false)("reason", ctx_r1.reason.NoPermission)("title", i0.ɵɵpipeBind1(2, 5, "no_view_permission"))("description", "");
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx_r1.showBackButton);
} }
function ErrorStateComponent_div_1_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
const _r3 = i0.ɵɵgetCurrentView();
i0.ɵɵelementContainerStart(0);
i0.ɵɵelementStart(1, "button", 3);
i0.ɵɵlistener("click", function ErrorStateComponent_div_1_ng_container_3_ng_container_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.backToList()); });
i0.ɵɵtext(2);
i0.ɵɵpipe(3, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "return_resource_list"), " ");
} }
function ErrorStateComponent_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, ErrorStateComponent_div_1_ng_container_3_ng_container_1_Template, 4, 3, "ng-container", 2);
i0.ɵɵelementContainerEnd();
} }
function ErrorStateComponent_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div")(1, "acl-page-guard", 1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵtemplate(3, ErrorStateComponent_div_1_ng_container_3_Template, 2, 0, "ng-container", 0);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("allowed", false)("reason", ctx_r1.reason.NotFound)("title", i0.ɵɵpipeBind1(2, 5, "resource_not_exist"))("description", "");
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx_r1.showBackButton);
} }
function ErrorStateComponent_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
const _r4 = i0.ɵɵgetCurrentView();
i0.ɵɵelementContainerStart(0);
i0.ɵɵelementStart(1, "button", 3);
i0.ɵɵlistener("click", function ErrorStateComponent_div_2_ng_container_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.reload.emit()); });
i0.ɵɵtext(2);
i0.ɵɵpipe(3, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "reload"), " ");
} }
function ErrorStateComponent_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div")(1, "acl-page-guard", 1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵtemplate(3, ErrorStateComponent_div_2_ng_container_3_Template, 4, 3, "ng-container", 2);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("allowed", false)("reason", ctx_r1.reason.Disconnected)("title", i0.ɵɵpipeBind1(2, 4, "error_loading_data"))("description", "");
} }
export class ErrorStateComponent {
constructor(router, route) {
this.router = router;
this.route = route;
this.reload = new EventEmitter();
this.redirect = new EventEmitter();
this.reason = Reason;
}
backToList() {
this.redirect.emit();
if (this.autoRedirect && this.showBackButton) {
this.router.navigate([this.backLink || '../..'], {
relativeTo: this.route,
});
}
}
static { this.ɵfac = function ErrorStateComponent_Factory(t) { return new (t || ErrorStateComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ErrorStateComponent, selectors: [["acl-error-state"]], inputs: { errorCode: "errorCode", autoRedirect: "autoRedirect", showBackButton: "showBackButton", backLink: "backLink" }, outputs: { reload: "reload", redirect: "redirect" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 3, consts: [[4, "ngIf"], [3, "allowed", "reason", "title", "description"], [4, "aclPageGuardOperation"], ["aui-button", "primary", 3, "click"]], template: function ErrorStateComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, ErrorStateComponent_div_0_Template, 4, 7, "div", 0)(1, ErrorStateComponent_div_1_Template, 4, 7, "div", 0)(2, ErrorStateComponent_div_2_Template, 4, 6, "div", 0);
} if (rf & 2) {
i0.ɵɵproperty("ngIf", ctx.errorCode === 403);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", ctx.errorCode === 404);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", ctx.errorCode !== 403 && ctx.errorCode !== 404);
} }, dependencies: [PageGuardComponent,
NgIf,
PageGuardOperationDirective,
ButtonComponent,
TranslateModule, i2.TranslatePipe], encapsulation: 2, changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorStateComponent, [{
type: Component,
args: [{ selector: 'acl-error-state', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
PageGuardComponent,
NgIf,
PageGuardOperationDirective,
ButtonComponent,
TranslateModule,
], standalone: true, template: "<div *ngIf=\"errorCode === 403\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.NoPermission\"\n [title]=\"'no_view_permission' | translate\"\n [description]=\"''\"\n >\n <ng-container *ngIf=\"showBackButton\">\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"backToList()\"\n >\n {{ 'return_resource_list' | translate }}\n </button>\n </ng-container>\n </ng-container>\n </acl-page-guard>\n</div>\n<div *ngIf=\"errorCode === 404\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.NotFound\"\n [title]=\"'resource_not_exist' | translate\"\n [description]=\"''\"\n >\n <ng-container *ngIf=\"showBackButton\">\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"backToList()\"\n >\n {{ 'return_resource_list' | translate }}\n </button>\n </ng-container>\n </ng-container>\n </acl-page-guard>\n</div>\n<div *ngIf=\"errorCode !== 403 && errorCode !== 404\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.Disconnected\"\n [title]=\"'error_loading_data' | translate\"\n [description]=\"''\"\n >\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"reload.emit()\"\n >\n {{ 'reload' | translate }}\n </button>\n </ng-container>\n </acl-page-guard>\n</div>\n" }]
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }], { errorCode: [{
type: Input
}], autoRedirect: [{
type: Input
}], showBackButton: [{
type: Input
}], backLink: [{
type: Input
}], reload: [{
type: Output
}], redirect: [{
type: Output
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorStateComponent, { className: "ErrorStateComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FzeW5jLWRhdGEvZXJyb3ItcGFnZS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYXN5bmMtZGF0YS9lcnJvci1wYWdlL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixNQUFNLEdBQ1AsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztJQ2J2RCw2QkFBcUM7SUFDbkMsaUNBR0M7SUFEQyw4TUFBUyxtQkFBWSxLQUFDO0lBRXRCLFlBQ0Y7O0lBQUEsaUJBQVM7OztJQURQLGVBQ0Y7SUFERSw2RUFDRjs7O0lBUEosNkJBQXFDO0lBQ25DLDJHQUFxQzs7OztJQVB6QyxBQURGLDJCQUErQix3QkFNNUI7O0lBQ0MsNEZBQXFDO0lBV3pDLEFBREUsaUJBQWlCLEVBQ2I7OztJQWhCRixjQUFpQjtJQUdqQixBQURBLEFBREEsQUFEQSwrQkFBaUIsc0NBQ2EscURBQ1ksbUJBQ3hCO0lBRUgsZUFBb0I7SUFBcEIsNENBQW9COzs7O0lBb0JqQyw2QkFBcUM7SUFDbkMsaUNBR0M7SUFEQyw4TUFBUyxtQkFBWSxLQUFDO0lBRXRCLFlBQ0Y7O0lBQUEsaUJBQVM7OztJQURQLGVBQ0Y7SUFERSw2RUFDRjs7O0lBUEosNkJBQXFDO0lBQ25DLDJHQUFxQzs7OztJQVB6QyxBQURGLDJCQUErQix3QkFNNUI7O0lBQ0MsNEZBQXFDO0lBV3pDLEFBREUsaUJBQWlCLEVBQ2I7OztJQWhCRixjQUFpQjtJQUdqQixBQURBLEFBREEsQUFEQSwrQkFBaUIsa0NBQ1MscURBQ2dCLG1CQUN4QjtJQUVILGVBQW9CO0lBQXBCLDRDQUFvQjs7OztJQW1CbkMsNkJBQXFDO0lBQ25DLGlDQUdDO0lBREMsK0xBQVMsb0JBQWEsS0FBQztJQUV2QixZQUNGOztJQUFBLGlCQUFTOzs7SUFEUCxlQUNGO0lBREUsK0RBQ0Y7OztJQVpKLEFBREYsMkJBQW9ELHdCQU1qRDs7SUFDQyw0RkFBcUM7SUFTekMsQUFERSxpQkFBaUIsRUFDYjs7O0lBZEYsY0FBaUI7SUFHakIsQUFEQSxBQURBLEFBREEsK0JBQWlCLHNDQUNhLHFEQUNZLG1CQUN4Qjs7QURQdEIsTUFBTSxPQUFPLG1CQUFtQjtJQWM5QixZQUNtQixNQUFjLEVBQ2QsS0FBcUI7UUFEckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBVHhDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR2xDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBDLFdBQU0sR0FBRyxNQUFNLENBQUM7SUFLYixDQUFDO0lBRUosVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUU7Z0JBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztvRkExQlUsbUJBQW1CO29FQUFuQixtQkFBbUI7WUNFaEMsQUFuQkEsQUFuQkEsb0VBQStCLHVEQW1CQSx1REFtQnFCOztZQXRDOUMsNENBQXVCO1lBbUJ2QixjQUF1QjtZQUF2Qiw0Q0FBdUI7WUFtQnZCLGNBQTRDO1lBQTVDLHFFQUE0Qzs0QkRWOUMsa0JBQWtCO1lBQ2xCLElBQUk7WUFDSiwyQkFBMkI7WUFDM0IsZUFBZTtZQUNmLGVBQWU7O2lGQUlOLG1CQUFtQjtjQWIvQixTQUFTOzJCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO29CQUNQLGtCQUFrQjtvQkFDbEIsSUFBSTtvQkFDSiwyQkFBMkI7b0JBQzNCLGVBQWU7b0JBQ2YsZUFBZTtpQkFDaEIsY0FDVyxJQUFJO29FQUdQLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFHTixNQUFNO2tCQURMLE1BQU07WUFJUCxRQUFRO2tCQURQLE1BQU07O2tGQVRJLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGFzeW5jLWRhdGFcbiAqL1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICBQYWdlR3VhcmRDb21wb25lbnQsXG4gIFBhZ2VHdWFyZE9wZXJhdGlvbkRpcmVjdGl2ZSxcbiAgUmVhc29uLFxufSBmcm9tICcuLi8uLi9wYWdlLWd1YXJkL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtZXJyb3Itc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFBhZ2VHdWFyZENvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIFBhZ2VHdWFyZE9wZXJhdGlvbkRpcmVjdGl2ZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBFcnJvclN0YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZXJyb3JDb2RlOiBudW1iZXI7XG4gIEBJbnB1dCgpIGF1dG9SZWRpcmVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b246IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tMaW5rOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHJlbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVkaXJlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcmVhc29uID0gUmVhc29uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge31cblxuICBiYWNrVG9MaXN0KCkge1xuICAgIHRoaXMucmVkaXJlY3QuZW1pdCgpO1xuICAgIGlmICh0aGlzLmF1dG9SZWRpcmVjdCAmJiB0aGlzLnNob3dCYWNrQnV0dG9uKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5iYWNrTGluayB8fCAnLi4vLi4nXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZXJyb3JDb2RlID09PSA0MDNcIj5cbiAgPGFjbC1wYWdlLWd1YXJkXG4gICAgW2FsbG93ZWRdPVwiZmFsc2VcIlxuICAgIFtyZWFzb25dPVwicmVhc29uLk5vUGVybWlzc2lvblwiXG4gICAgW3RpdGxlXT1cIidub192aWV3X3Blcm1pc3Npb24nIHwgdHJhbnNsYXRlXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJydcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dCYWNrQnV0dG9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICphY2xQYWdlR3VhcmRPcGVyYXRpb24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImJhY2tUb0xpc3QoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAncmV0dXJuX3Jlc291cmNlX2xpc3QnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYWNsLXBhZ2UtZ3VhcmQ+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJlcnJvckNvZGUgPT09IDQwNFwiPlxuICA8YWNsLXBhZ2UtZ3VhcmRcbiAgICBbYWxsb3dlZF09XCJmYWxzZVwiXG4gICAgW3JlYXNvbl09XCJyZWFzb24uTm90Rm91bmRcIlxuICAgIFt0aXRsZV09XCIncmVzb3VyY2Vfbm90X2V4aXN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgW2Rlc2NyaXB0aW9uXT1cIicnXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QmFja0J1dHRvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqYWNsUGFnZUd1YXJkT3BlcmF0aW9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAgIChjbGljayk9XCJiYWNrVG9MaXN0KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3JldHVybl9yZXNvdXJjZV9saXN0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FjbC1wYWdlLWd1YXJkPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZXJyb3JDb2RlICE9PSA0MDMgJiYgZXJyb3JDb2RlICE9PSA0MDRcIj5cbiAgPGFjbC1wYWdlLWd1YXJkXG4gICAgW2FsbG93ZWRdPVwiZmFsc2VcIlxuICAgIFtyZWFzb25dPVwicmVhc29uLkRpc2Nvbm5lY3RlZFwiXG4gICAgW3RpdGxlXT1cIidlcnJvcl9sb2FkaW5nX2RhdGEnIHwgdHJhbnNsYXRlXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJydcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsUGFnZUd1YXJkT3BlcmF0aW9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJyZWxvYWQuZW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ3JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FjbC1wYWdlLWd1YXJkPlxuPC9kaXY+XG4iXX0=