UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

136 lines 21.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, HostBinding } from '@angular/core'; import { Router } from '@angular/router'; import ace from 'ace-builds'; import { ElementsService, fullApiPath } from 'dbweb-core'; import { ThemeService } from '../services/theme.service'; import { TaskState } from './task'; import { TaskService } from './task.service'; export class TaskComponent { /** * @param {?} theme * @param {?} tservice * @param {?} eles * @param {?} router * @param {?} taskState */ constructor(theme, tservice, eles, router, taskState) { this.theme = theme; this.tservice = tservice; this.eles = eles; this.router = router; this.taskState = taskState; this.hostClass = true; this.detailMode = false; this.IsMoreProgressUrl = false; this.options = { maxLines: 20, printMargin: false }; this.subs = []; this.subs.push(this.theme.theme.subscribe((/** * @param {?} v * @return {?} */ v => { this.themeModel = v.model; }))); } /** * @return {?} */ ngOnInit() { ace.config.set('basePath', '/front/assets/ace-builds/src-min-noconflict'); this.tservice.GetTaskMessage().subscribe((/** * @param {?} n * @return {?} */ n => { this.resultInfo = n; if (this.resultInfo.MoreProgressURL !== '') { this.eles.setURLSign(this.resultInfo.MoreProgressURL, this.resultInfo.MoreProgressURLSign); this.IsMoreProgressUrl = true; } if (this.resultInfo.ZipFileURL !== '') { this.resultInfo.ZipFileURL = fullApiPath(this.resultInfo.ZipFileURL); } })); } /** * @return {?} */ ngOnDestroy() { this.subs.forEach((/** * @param {?} v * @return {?} */ v => v.unsubscribe())); } /** * @param {?} event * @return {?} */ moreProgressClick(event) { this.router.navigateByUrl(this.resultInfo.MoreProgressURL); } } TaskComponent.decorators = [ { type: Component, args: [{ selector: 'common-task', template: "<common-bill #bill>\r\n\t<div class=\"backgroundstyle\" [formGroup]=\"bill.formGroup\"\r\n\t\t*ngIf=\"bill.formGroup\">\r\n\t\t<div *ngIf=\"detailMode\" class=\"Task-public Task-open mat-elevation-z2\">\r\n\t\t\t<!-- <ng-template matStepLabel>\u4E0B\u8F7D</ng-template> -->\r\n\t\t\t<div class=\"title\">\u67E5\u770B\u4EFB\u52A1</div>\r\n\t\t\t<div class=\"task-content\">\r\n\t\t\t\t<div class=\"\u67E5\u770B\u4EFB\u52A1\">\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"link\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u540D\u79F0</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Name').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"picture_in_picture_alt\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6D41\u6C34\u53F7</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ID').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:person\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6267\u884C\u4EBA</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Executor').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"domain\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6240\u5C5E\u90E8\u95E8</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeDept').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:router\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">IP\u5730\u5740</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeIP').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"schedule\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u5F00\u59CB\u65F6\u95F4</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeTime').value | date: 'yyyy-MM-dd HH:mm:ss' }}</span>\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('CompletedTime').value | date: 'yyyy-MM-dd HH:mm:ss' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:flag\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u72B6\u6001</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Status').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"\u5206\u5272\u7EBF\"></div>\r\n\t\t\t\t<div class=\"\u8BE6\u60C5\">\r\n\t\t\t\t\t<div class=\"\u8FDB\u5EA6\u62A5\u544A\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\r\n\t\t\t\t\t\t\t\u8FDB\u5EA6\u62A5\u544A\r\n\t\t\t\t\t\t\t<span *ngIf=\"IsMoreProgressUrl\"\r\n\t\t\t\t\t\t\t\t(click)=\"moreProgressClick($event)\">\u67E5\u770B\u6240\u6709\u8FDB\u5EA6\r\n\t\t\t\t\t\t\t\t<mat-icon svgIcon=\"chevron_right\"></mat-icon>\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"prTable\">\r\n\t\t\t\t\t\t\t<tr *ngFor=\"let res of resultInfo?.PROGRESS; let index = index\"\r\n\t\t\t\t\t\t\t\tclass=\"prStrip\">\r\n\t\t\t\t\t\t\t\t<td class=\"prtableID\">{{ index + 1 }}</td>\r\n\t\t\t\t\t\t\t\t<td class=\"prtableTime\">\r\n\t\t\t\t\t\t\t\t\t{{ res.LOGTIME | date: 'yyyy-MM-dd HH:mm:ss' }}\r\n\t\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t\t\t<td class=\"prtableContent\">{{ res.CONTENT }}\r\n\t\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"\u53C2\u6570\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\u53C2\u6570</div>\r\n\t\t\t\t\t\t<div class=\"parameterbox\">\r\n\t\t\t\t\t\t\t<div ace-editor\r\n\t\t\t\t\t\t\t\t[text]=\"bill.formGroup.get('Params').value\"\r\n\t\t\t\t\t\t\t\tmode=\"yaml\" [theme]=\"themeModel === 'dark' ? 'tomorrow_night' : 'eclipse'\"\r\n\t\t\t\t\t\t\t\t[options]=\"options\" [autoUpdateContent]=\"true\"\r\n\t\t\t\t\t\t\t\t[durationBeforeCallback]=\"1000\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-height: 124px; width:100%; overflow: auto;\">\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"\u7ED3\u679C\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\u7ED3\u679C</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.complete\"\r\n\t\t\t\t\t\t\tclass=\"complete state-content\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"check_circle\"></mat-icon>\r\n\t\t\t\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.running\"\r\n\t\t\t\t\t\t\tclass=\"running state-content\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"info\"></mat-icon>\r\n\t\t\t\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.error\"\r\n\t\t\t\t\t\t\tclass=\"error state-content \u62A5\u9519\u8BE6\u7EC6\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"warning\"></mat-icon>\r\n\t\t\t\t\t\t\t\u62A5\u9519\u8BE6\u60C5\uFF1A<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t\t<div class=\"\u5168\u90E8\u4FE1\u606F\"\r\n\t\t\t\t\t\t\t\t[innerHtml]=\"bill.formGroup.get('Result').value|newline\">\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"download\">\r\n\t\t\t\t<a *ngIf=\"resultInfo?.ZipFileURL\"\r\n\t\t\t\t\t[href]=\"resultInfo?.ZipFileURL\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"save_alt\"></mat-icon>\r\n\t\t\t\t\t\u4E0B\u8F7D\u7ED3\u679C&nbsp;({{ resultInfo?.ZipFileSize | number }}K)\r\n\t\t\t\t</a>\r\n\t\t\t\t<div class=\"\u5C55\u5F00\u6309\u94AE\" (click)=\"detailMode = false\">\r\n\t\t\t\t\t\u6536\u8D77\u8BE6\u7EC6\u4FE1\u606F<mat-icon svgIcon=\"expand_less\"></mat-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"!detailMode\"\r\n\t\t\tclass=\"Task-narrow Task-public mat-elevation-z2\">\r\n\t\t\t<div class=\"title\">\u67E5\u770B\u4EFB\u52A1</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.complete\"\r\n\t\t\t\tclass=\"complete state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"check_circle\"></mat-icon>\r\n\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.running\"\r\n\t\t\t\tclass=\"running state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"info\"></mat-icon>\r\n\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.error\"\r\n\t\t\t\tclass=\"error state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"warning\"></mat-icon>\r\n\t\t\t\t\u62A5\u9519\u8BE6\u60C5\uFF1A<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"download\">\r\n\t\t\t\t<a *ngIf=\"resultInfo?.ZipFileURL\"\r\n\t\t\t\t\thref=\"{{ resultInfo?.ZipFileURL }}\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"save_alt\"></mat-icon>\r\n\t\t\t\t\t\u4E0B\u8F7D\u7ED3\u679C&nbsp;({{ resultInfo?.ZipFileSize | number }}K)\r\n\t\t\t\t</a>\r\n\t\t\t\t<div class=\"\u5C55\u5F00\u6309\u94AE\" (click)=\"detailMode = true\">\r\n\t\t\t\t\t\u5C55\u5F00\u8BE6\u7EC6\u4FE1\u606F<mat-icon svgIcon=\"expand_more\"></mat-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</common-bill>", providers: [TaskState], styles: ["@charset \"UTF-8\";.backgroundstyle{width:100%;height:100%;padding:24px 0;box-sizing:border-box;overflow-y:auto}.backgroundstyle .Task-open{width:100%;height:100%;display:flex;flex-direction:column}.backgroundstyle .Task-open .task-content{flex-grow:1;width:100%;display:flex;align-items:center;overflow-y:auto}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1{width:284px;height:100%;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr{width:100%;padding-left:56px;box-sizing:border-box;margin:24px 0 0;position:relative}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .mat-icon{position:absolute;left:8px;top:8px;width:32px;height:32px;line-height:32px}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .\u4EFB\u52A1\u6807\u9898{font-size:14px;padding:8px 0}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .\u4EFB\u52A1\u53C2\u6570 span{font-size:16px;padding:0 0 8px;display:block}.backgroundstyle .Task-open .task-content .\u5206\u5272\u7EBF{width:1px;flex-shrink:0;height:calc(100% - 110px);margin:0 16px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5{width:0;flex-grow:1;height:100%}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A{width:100%;overflow:auto}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable{width:100%;overflow-x:auto;margin:16px 0 24px;max-height:176px;min-height:96px;padding:8px;box-sizing:border-box;border-radius:2px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip{height:32px;line-height:32px;font-size:16px;display:flex}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableID{width:48px;padding-left:8px;box-sizing:border-box;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableTime{width:200px;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableContent{flex-grow:1;flex-shrink:0;padding-right:8px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u53C2\u6570{min-height:124px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u53C2\u6570 .parameterbox{max-height:300px;margin:16px 0 24px;min-height:124px;border-radius:4px;box-sizing:border-box;vertical-align:top;overflow:hidden}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u7ED3\u679C{min-height:80px;max-height:28%}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle{width:100%;font-size:14px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle span{float:right}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle span .mat-icon{vertical-align:middle;width:22px;height:22px}.backgroundstyle .Task-narrow{height:auto}.backgroundstyle .Task-public{max-width:960px;width:100%;margin:0 auto;overflow-y:auto;padding:24px;box-sizing:border-box;border-radius:4px}.backgroundstyle .Task-public .title{font-size:20px;font-weight:700}.backgroundstyle .Task-public .state-content{margin:16px 0 24px;padding:16px 0 16px 24px;font-size:16px}.backgroundstyle .Task-public .state-content .mat-icon{margin-right:16px;vertical-align:middle}.backgroundstyle .Task-public .state-content div{display:inline-block}.backgroundstyle .Task-public .\u62A5\u9519\u8BE6\u7EC6{padding:16px 0 16px 24px;height:156px;overflow-y:auto}.backgroundstyle .Task-public .\u62A5\u9519\u8BE6\u7EC6 .\u5168\u90E8\u4FE1\u606F{font-size:12px;margin-top:8px}.backgroundstyle .Task-public .download{text-align:right;height:24px;line-height:24px}.backgroundstyle .Task-public .download a{height:24px;font-size:14px;text-decoration:none}.backgroundstyle .Task-public .download a .mat-icon{vertical-align:middle;margin-right:4px}.backgroundstyle .Task-public .download .\u5C55\u5F00\u6309\u94AE{cursor:pointer;display:inline-block;height:24px;font-size:14px;margin-left:32px}.backgroundstyle .Task-public .download .\u5C55\u5F00\u6309\u94AE .mat-icon{vertical-align:middle;margin-left:4px}"] }] } ]; /** @nocollapse */ TaskComponent.ctorParameters = () => [ { type: ThemeService }, { type: TaskService }, { type: ElementsService }, { type: Router }, { type: TaskState } ]; TaskComponent.propDecorators = { hostClass: [{ type: HostBinding, args: ['class.task',] }] }; if (false) { /** @type {?} */ TaskComponent.prototype.hostClass; /** @type {?} */ TaskComponent.prototype.detailMode; /** @type {?} */ TaskComponent.prototype.IsMoreProgressUrl; /** @type {?} */ TaskComponent.prototype.moreEle; /** @type {?} */ TaskComponent.prototype.resultInfo; /** @type {?} */ TaskComponent.prototype.themeModel; /** @type {?} */ TaskComponent.prototype.options; /** @type {?} */ TaskComponent.prototype.subs; /** * @type {?} * @private */ TaskComponent.prototype.theme; /** * @type {?} * @private */ TaskComponent.prototype.tservice; /** * @type {?} * @private */ TaskComponent.prototype.eles; /** * @type {?} * @private */ TaskComponent.prototype.router; /** @type {?} */ TaskComponent.prototype.taskState; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvdGFzay90YXNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sUUFBUSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVM3QyxNQUFNLE9BQU8sYUFBYTs7Ozs7Ozs7SUFVekIsWUFDUyxLQUFtQixFQUNuQixRQUFxQixFQUNyQixJQUFxQixFQUNyQixNQUFjLEVBQ2YsU0FBb0I7UUFKbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBZEQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUM1QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUsxQixZQUFPLEdBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNwRCxTQUFJLEdBQW1CLEVBQUUsQ0FBQztRQVF6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUNGLENBQUM7SUFDSCxDQUFDOzs7O0lBQ0QsUUFBUTtRQUNQLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEtBQUssRUFBRSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDOUI7WUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDckU7UUFDRixDQUFDLEVBQUMsQ0FBQztJQUNKLENBQUM7Ozs7SUFDRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQztJQUN6QyxDQUFDOzs7OztJQUNELGlCQUFpQixDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7O1lBL0NELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsNnVQQUFvQztnQkFFcEMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDOzthQUN0Qjs7OztZQVZvQixZQUFZO1lBRXhCLFdBQVc7WUFIWCxlQUFlO1lBRmYsTUFBTTtZQUlOLFNBQVM7Ozt3QkFXaEIsV0FBVyxTQUFDLFlBQVk7Ozs7SUFBekIsa0NBQTRDOztJQUM1QyxtQ0FBbUI7O0lBQ25CLDBDQUEwQjs7SUFDMUIsZ0NBQWdCOztJQUNoQixtQ0FBMkI7O0lBRTNCLG1DQUF1Qjs7SUFDdkIsZ0NBQW9EOztJQUNwRCw2QkFBMEI7Ozs7O0lBRXpCLDhCQUEyQjs7Ozs7SUFDM0IsaUNBQTZCOzs7OztJQUM3Qiw2QkFBNkI7Ozs7O0lBQzdCLCtCQUFzQjs7SUFDdEIsa0NBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IGFjZSBmcm9tICdhY2UtYnVpbGRzJztcclxuaW1wb3J0IHsgRWxlbWVudHNTZXJ2aWNlLCBmdWxsQXBpUGF0aCB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsLCBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFza1N0YXRlLCBUYXNsUmVzdWx0VHlwZSB9IGZyb20gJy4vdGFzayc7XHJcbmltcG9ydCB7IFRhc2tTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLXRhc2snLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90YXNrLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90YXNrLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbVGFza1N0YXRlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFza0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLnRhc2snKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cdGRldGFpbE1vZGUgPSBmYWxzZTtcclxuXHRJc01vcmVQcm9ncmVzc1VybCA9IGZhbHNlO1xyXG5cdG1vcmVFbGU6IHN0cmluZztcclxuXHRyZXN1bHRJbmZvOiBUYXNsUmVzdWx0VHlwZTtcclxuXHJcblx0dGhlbWVNb2RlbDogVGhlbWVNb2RlbDtcclxuXHRvcHRpb25zOiBhbnkgPSB7IG1heExpbmVzOiAyMCwgcHJpbnRNYXJnaW46IGZhbHNlIH07XHJcblx0c3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgdGhlbWU6IFRoZW1lU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHNlcnZpY2U6IFRhc2tTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBlbGVzOiBFbGVtZW50c1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHVibGljIHRhc2tTdGF0ZTogVGFza1N0YXRlXHJcblx0KSB7XHJcblx0XHR0aGlzLnN1YnMucHVzaChcclxuXHRcdFx0dGhpcy50aGVtZS50aGVtZS5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdFx0dGhpcy50aGVtZU1vZGVsID0gdi5tb2RlbDtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0YWNlLmNvbmZpZy5zZXQoJ2Jhc2VQYXRoJywgJy9mcm9udC9hc3NldHMvYWNlLWJ1aWxkcy9zcmMtbWluLW5vY29uZmxpY3QnKTtcclxuXHRcdHRoaXMudHNlcnZpY2UuR2V0VGFza01lc3NhZ2UoKS5zdWJzY3JpYmUobiA9PiB7XHJcblx0XHRcdHRoaXMucmVzdWx0SW5mbyA9IG47XHJcblx0XHRcdGlmICh0aGlzLnJlc3VsdEluZm8uTW9yZVByb2dyZXNzVVJMICE9PSAnJykge1xyXG5cdFx0XHRcdHRoaXMuZWxlcy5zZXRVUkxTaWduKHRoaXMucmVzdWx0SW5mby5Nb3JlUHJvZ3Jlc3NVUkwsIHRoaXMucmVzdWx0SW5mby5Nb3JlUHJvZ3Jlc3NVUkxTaWduKTtcclxuXHRcdFx0XHR0aGlzLklzTW9yZVByb2dyZXNzVXJsID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5yZXN1bHRJbmZvLlppcEZpbGVVUkwgIT09ICcnKSB7XHJcblx0XHRcdFx0dGhpcy5yZXN1bHRJbmZvLlppcEZpbGVVUkwgPSBmdWxsQXBpUGF0aCh0aGlzLnJlc3VsdEluZm8uWmlwRmlsZVVSTCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuc3Vicy5mb3JFYWNoKHYgPT4gdi51bnN1YnNjcmliZSgpKTtcclxuXHR9XHJcblx0bW9yZVByb2dyZXNzQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yZXN1bHRJbmZvLk1vcmVQcm9ncmVzc1VSTCk7XHJcblx0fVxyXG59XHJcbiJdfQ==