UNPKG

dbweb-common

Version:

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

209 lines 25.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { moveItemInArray } from '@angular/cdk/drag-drop'; import { Component, HostBinding } from '@angular/core'; import { ElementService } from '../../service/element.service'; import { ElementsService } from 'dbweb-core'; import { IconSelectComponent } from '../../../components/icon-select/icon-select.component'; import { MatDialog } from '@angular/material'; import { FormControl } from '@angular/forms'; import { startWith } from 'rxjs/operators'; export class ProcessingListsComponent { /** * @param {?} elementSvr * @param {?} eles * @param {?} dialog */ constructor(elementSvr, eles, dialog) { this.elementSvr = elementSvr; this.eles = eles; this.dialog = dialog; this.hostClass = true; this.svr = (/** @type {?} */ (this.elementSvr.data.recordview)); this.ctrlElementName = new FormControl(); this.subs = []; } /** * @return {?} */ ngOnDestroy() { this.subs.forEach((/** * @param {?} v * @return {?} */ v => v.unsubscribe())); } /** * @return {?} */ ngOnInit() { this.subs.push(this.svr.currentProcess.subscribe((/** * @param {?} pro * @return {?} */ pro => this.ctrlElementName.patchValue(pro ? pro.ElementName : null))), this.svr.inited.subscribe((/** * @return {?} */ () => { this.subs.push(this.ctrlElementName.valueChanges.pipe(startWith('')).subscribe((/** * @param {?} val * @return {?} */ val => { this.filterElemets = this.svr.allElementNames .filter((/** * @param {?} v * @return {?} */ v => v.includes(val))) .sort((/** * @param {?} a * @param {?} b * @return {?} */ (a, b) => a.localeCompare(b))); })), this.ctrlElementName.valueChanges.subscribe((/** * @param {?} val * @return {?} */ val => { if (this.svr.currentProcess.value) { this.svr.currentProcess.value.ElementName = val; } }))); }))); } /** * @param {?} event * @return {?} */ dropBind(event) { moveItemInArray(this.svr.bindRecordProcesses, event.previousIndex, event.currentIndex); this.svr.collectionProcesses(); } /** * @param {?} event * @return {?} */ dropNotBind(event) { moveItemInArray(this.svr.notBindRecordProcesses, event.previousIndex, event.currentIndex); this.svr.collectionProcesses(); } /** * @param {?} pro * @return {?} */ selectProcess(pro) { this.svr.currentProcess.next(pro); } /** * @return {?} */ add() { /** @type {?} */ const pro = this.svr.currentProcess.value; if (pro && pro.BindRecord) { this.svr.bindRecordProcesses = this.svr.bindRecordProcesses || []; this.svr.bindRecordProcesses.push({ Name: '新的处理', BindRecord: true }); } else { this.svr.notBindRecordProcesses = this.svr.notBindRecordProcesses || []; this.svr.notBindRecordProcesses.push({ Name: '新的处理', BindRecord: false }); } this.svr.collectionProcesses(); } /** * @return {?} */ delete() { if (this.svr.currentProcess.value) { this.svr.Params.Processes.splice(this.svr.Params.Processes.findIndex((/** * @param {?} v * @return {?} */ v => v === this.svr.currentProcess.value)), 1); if (this.svr.Params.Processes.length > 0) { this.svr.currentProcess.next(this.svr.Params.Processes[0]); } this.svr.refreshProcesses(); } } /** * @return {?} */ openIconDialog() { /** @type {?} */ const pro = this.svr.currentProcess.value; if (!pro) { return; } /** @type {?} */ const v = { icon: pro.Icon, color: pro.Color }; /** @type {?} */ const dialogRef = this.dialog.open(IconSelectComponent, { width: '384px', height: '100%', data: v, position: { top: '0px', right: '0px' } }); dialogRef.afterClosed().subscribe((/** * @param {?} result * @return {?} */ result => { if (result) { pro.Icon = result.icon; pro.Color = result.color; } })); } } ProcessingListsComponent.decorators = [ { type: Component, args: [{ selector: 'common-processing-lists', template: "<div class=\"content\">\r\n\t<div class=\"left\">\r\n\t\t<div class=\"title\">\r\n\t\t\t<div class=\"list-\u4E00\u7EA7\u6807\u9898 \u5B57\u4F53\u989C\u8272\">\u5904\u7406\u5217\u8868</div>\r\n\t\t\t<div class=\"\u65B0\u589E\" (click)=\"add()\">\r\n\t\t\t\t<mat-icon svgIcon=\"add\"></mat-icon>\r\n\t\t\t\t<span>\u65B0\u589E\u5904\u7406\u5217</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"\u8BB0\u5F55\u6807\u9898\">\u7ED1\u5B9A\u8BB0\u5F55</div>\r\n\t\t<div cdkDropList class=\"pro-list\"\r\n\t\t\t(cdkDropListDropped)=\"dropBind($event)\">\r\n\t\t\t<div *ngFor=\"let pro of svr.bindRecordProcesses\" class=\"process\"\r\n\t\t\t\t[class.\u9009\u4E2D]=\"(svr.currentProcess|async).Name == pro.Name\"\r\n\t\t\t\t(click)=\"selectProcess(pro)\" cdkDrag>\r\n\t\t\t\t<mat-icon class=\"\u62D6\u62FD\u56FE\u6807\" svgIcon=\"drag_indicator\" cdkDragHandle>\r\n\t\t\t\t</mat-icon>\r\n\t\t\t\t<mat-icon class=\"\u5904\u7406\u5217\u56FE\u6807\" [svgIcon]=\"pro.Icon\"\r\n\t\t\t\t\t[ngClass]=\"pro.Color\"></mat-icon>\r\n\t\t\t\t<span>{{ pro.Name }}</span>\r\n\t\t\t\t<mat-icon *ngIf=\"(svr.currentProcess|async).Name == pro.Name\"\r\n\t\t\t\t\tclass=\"\u53F3\u6307\u793A\u7BAD\u5934\" svgIcon=\"keyboard_arrow_right\"></mat-icon>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"\u8BB0\u5F55\u6807\u9898\">\u672A\u7ED1\u5B9A\u8BB0\u5F55</div>\r\n\t\t<div cdkDropList class=\"pro-list\"\r\n\t\t\t(cdkDropListDropped)=\"dropNotBind($event)\">\r\n\t\t\t<div class=\"process\" *ngFor=\"let pro of svr.notBindRecordProcesses\"\r\n\t\t\t\t[class.\u9009\u4E2D]=\"(svr.currentProcess|async)?.Name == pro.Name\"\r\n\t\t\t\t(click)=\"selectProcess(pro)\" cdkDrag>\r\n\t\t\t\t<mat-icon class=\"\u62D6\u62FD\u56FE\u6807\" svgIcon=\"drag_indicator\" cdkDragHandle>\r\n\t\t\t\t</mat-icon>\r\n\t\t\t\t<mat-icon class=\"\u5904\u7406\u5217\u56FE\u6807\" [svgIcon]=\"pro.Icon\"\r\n\t\t\t\t\t[ngClass]=\"pro.Color\"></mat-icon>\r\n\t\t\t\t<span>{{ pro.Name }}</span>\r\n\t\t\t\t<mat-icon *ngIf=\"(svr.currentProcess|async)?.Name == pro.Name\"\r\n\t\t\t\t\tclass=\"\u53F3\u6307\u793A\u7BAD\u5934\" svgIcon=\"keyboard_arrow_right\"></mat-icon>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"right\" *ngIf=\"svr.currentProcess|async\">\r\n\t\t<div class=\"list-\u4E00\u7EA7\u6807\u9898 \u5B57\u4F53\u989C\u8272\">\u5C5E\u6027\u8BBE\u7F6E</div>\r\n\t\t<div class=\"\u5220\u9664\">\r\n\t\t\t<mat-icon svgIcon=\"outlined:delete\" (click)=\"delete()\"\r\n\t\t\t\t*ngIf=\"svr.currentProcess\"></mat-icon>\r\n\t\t</div>\r\n\t\t<div class=\"\u5217\u4FE1\u606F\">\r\n\t\t\t<div class=\"\u56FE\u6807 mat-elevation-z4\" (click)=\"openIconDialog()\">\r\n\t\t\t\t<mat-icon [svgIcon]=\"(svr.currentProcess|async).Icon\"\r\n\t\t\t\t\t[ngClass]=\"(svr.currentProcess|async).Color\"></mat-icon>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"\u540D\u79F0\">\r\n\t\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">\u540D\u79F0</div>\r\n\t\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t\t<input matInput [(ngModel)]=\"svr.currentProcess.value.Name\"/>\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t\t<mat-checkbox class=\"checkbox\"\r\n\t\t\t\t[(ngModel)]=\"svr.currentProcess.value.WithSql\">\r\n\t\t\t\t<span>\u4F20\u9001SQL</span>\r\n\t\t\t</mat-checkbox>\r\n\t\t\t<mat-checkbox class=\"checkbox\"\r\n\t\t\t\t[(ngModel)]=\"svr.currentProcess.value.BindRecord\"\r\n\t\t\t\t(change)=\"svr.refreshProcesses()\">\r\n\t\t\t\t<span>\u7ED1\u5B9A\u8BB0\u5F55</span>\r\n\t\t\t</mat-checkbox>\r\n\t\t</div>\r\n\t\t<div class=\"\u83DC\u5355\u9879\">\r\n\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">\u83DC\u5355\u9879</div>\r\n\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t<input matInput [formControl]=\"ctrlElementName\"\r\n\t\t\t\t\t[matAutocomplete]=\"autoElements\" />\r\n\t\t\t</mat-form-field>\r\n\t\t\t<mat-autocomplete #autoElements=\"matAutocomplete\">\r\n\t\t\t\t<mat-option *ngFor=\"let ele of filterElemets\"\r\n\t\t\t\t\t[value]=\"ele\"> {{ ele }}</mat-option>\r\n\t\t\t</mat-autocomplete>\r\n\t\t</div>\r\n\t\t<div class=\"\u4E3B\u952E\">\r\n\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">\u4E3B\u952E</div>\r\n\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t<mat-select [(ngModel)]=\"svr.currentProcess.value.TransPath\" multiple>\r\n\t\t\t\t\t<mat-option *ngFor=\"let col of svr.allColumnNames\"\r\n\t\t\t\t\t\t[value]=\"col\">{{ col }}</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"\u53C2\u6570\">\r\n\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">Query\u53C2\u6570</div>\r\n\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t<textarea matInput\r\n\t\t\t\t\t[(ngModel)]=\"svr.currentProcess.value.TransQuery\"></textarea>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"\u53C2\u6570\">\r\n\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">\u663E\u793A\u6761\u4EF6</div>\r\n\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t<textarea matInput\r\n\t\t\t\t\t[(ngModel)]=\"svr.currentProcess.value.Visable\"></textarea>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"\u53C2\u6570\">\r\n\t\t\t<div class=\"list-\u4E8C\u7EA7\u6807\u9898\">MoreStr</div>\r\n\t\t\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t\t\t<textarea matInput\r\n\t\t\t\t\t[(ngModel)]=\"svr.currentProcess.value.MoreStr\"></textarea>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t</div>\r\n</div>", styles: ["@charset \"UTF-8\";:host{width:100%;height:100%}.content{height:100%;display:flex;padding:16px 0;box-sizing:border-box}.left{flex-grow:1;max-width:272px;min-width:172px;padding:8px;box-sizing:border-box;display:flex;flex-direction:column;overflow-y:auto}.left .title{display:flex;justify-content:space-between;margin-bottom:8px}.left .title .\u65B0\u589E{font-size:14px;cursor:pointer}.left .title .\u65B0\u589E span{display:inline-block;height:24px;line-height:24px;vertical-align:top}.left .\u8BB0\u5F55\u6807\u9898{font-size:14px;margin:16px 24px}.left .\u5904\u7406\u5217\u56FE\u6807{margin:8px 0;vertical-align:top}.process{height:40px;line-height:40px;font-size:14px;padding:0 24px;margin-bottom:8px;box-sizing:border-box;position:relative;cursor:pointer}.process span{vertical-align:top;margin-left:16px}.process .\u62D6\u62FD\u56FE\u6807{width:16px;height:16px;line-height:16px;position:absolute;left:0;top:12px;display:none}.process .\u53F3\u6307\u793A\u7BAD\u5934{position:absolute;right:0;top:8px}.process:hover{padding:0 24px 0 32px;box-shadow:0 2px 4px 0 rgba(0,0,0,.14)}.process:hover .\u62D6\u62FD\u56FE\u6807{display:block}.right{max-width:536px;flex-grow:2;height:100%;padding:8px 0 8px 8px;box-sizing:border-box;position:relative;display:flex;flex-wrap:wrap;align-content:flex-start;overflow-y:auto}.right ::ng-deep .mat-form-field-wrapper{margin:0;padding-bottom:10px}.right ::ng-deep .mat-form-field-infix{border:0;padding:8px 0}.right ::ng-deep .mat-select-arrow-wrapper{display:block}.right .\u5217\u4FE1\u606F{width:100%;height:136px;padding:16px 0 24px 32px;box-sizing:border-box}.right .\u5217\u4FE1\u606F .\u56FE\u6807{display:inline-block;width:80px;height:80px;border-radius:4px;overflow:hidden;position:relative;cursor:pointer}.right .\u5217\u4FE1\u606F .\u56FE\u6807 .mat-icon{width:24px;height:24px;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.right .\u5217\u4FE1\u606F .\u540D\u79F0{display:inline-block;width:200px;margin-left:16px;vertical-align:bottom}.right .\u5217\u4FE1\u606F .checkbox{float:right;margin-right:12px;font-size:14px}.right .\u5220\u9664{cursor:pointer;position:absolute;right:24px;top:8px}.right .\u9009\u62E9\u6846{font-size:14px}.right .\u4E3B\u952E,.right .\u83DC\u5355\u9879{width:216px;margin-left:32px}.right .\u4E3B\u952E .\u9009\u62E9\u6846,.right .\u83DC\u5355\u9879 .\u9009\u62E9\u6846{width:216px}.right .\u53C2\u6570{margin-left:32px}.right .\u53C2\u6570 .\u9009\u62E9\u6846{width:462px}.right .\u53C2\u6570 .\u9009\u62E9\u6846 .mat-form-field-autofill-control{height:144px;resize:none}.list-\u4E00\u7EA7\u6807\u9898{font-size:16px;font-weight:700;margin-bottom:16px}.list-\u4E8C\u7EA7\u6807\u9898{margin:4px 0;display:block;font-size:12px}"] }] } ]; /** @nocollapse */ ProcessingListsComponent.ctorParameters = () => [ { type: ElementService }, { type: ElementsService }, { type: MatDialog } ]; ProcessingListsComponent.propDecorators = { hostClass: [{ type: HostBinding, args: ['class.processing-lists',] }] }; if (false) { /** @type {?} */ ProcessingListsComponent.prototype.hostClass; /** @type {?} */ ProcessingListsComponent.prototype.svr; /** @type {?} */ ProcessingListsComponent.prototype.ctrlElementName; /** @type {?} */ ProcessingListsComponent.prototype.filterElemets; /** * @type {?} * @private */ ProcessingListsComponent.prototype.subs; /** @type {?} */ ProcessingListsComponent.prototype.elementSvr; /** @type {?} */ ProcessingListsComponent.prototype.eles; /** @type {?} */ ProcessingListsComponent.prototype.dialog; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2luZy1saXN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvZWxlbWVudC9zZXQtcHJvcGVydHktcmVjb3Jkdmlldy9wcm9jZXNzaW5nLWxpc3RzL3Byb2Nlc3NpbmctbGlzdHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sK0JBQStCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGVBQWUsRUFBVyxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzQyxNQUFNLE9BQU8sd0JBQXdCOzs7Ozs7SUFNcEMsWUFBbUIsVUFBMEIsRUFBUyxJQUFxQixFQUFTLE1BQWlCO1FBQWxGLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBTDlELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakQsUUFBRyxHQUFHLG1CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBeUIsQ0FBQztRQUN0RSxvQkFBZSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFNUIsU0FBSSxHQUFtQixFQUFFLENBQUM7SUFDc0UsQ0FBQzs7OztJQUN6RyxXQUFXO1FBQ1YsSUFB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QUMsbUJBQW1CLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxDQUFDO1lBQ1AsUUFBUSxFQUFFO2dCQUNULEdBQUcsRUFBRSxLQUFLO2dCQUNWLEtBQUssRUFBRSxLQUFLO2FBQ1o7U0FDRCxDQUFDO1FBQ0YsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRTtZQUMxQyxJQUFJLE1BQU0sRUFBRTtnQkFDWCxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUN6QjtRQUNGLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQzs7O1lBaEdELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyw4N0tBQWdEOzthQUVoRDs7OztZQVorQixjQUFjO1lBQ3JDLGVBQWU7WUFFZixTQUFTOzs7d0JBV2hCLFdBQVcsU0FBQyx3QkFBd0I7Ozs7SUFBckMsNkNBQXdEOztJQUN4RCx1Q0FBc0U7O0lBQ3RFLG1EQUFvQzs7SUFDcEMsaURBQXdCOzs7OztJQUN4Qix3Q0FBa0M7O0lBQ3RCLDhDQUFpQzs7SUFBRSx3Q0FBNEI7O0lBQUUsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhUmVjb3JkVmlldywgRWxlbWVudFNlcnZpY2UsIElQcm9jZXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZS9lbGVtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50c1NlcnZpY2UsIEVsZW1lbnQgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgSWNvblNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QvaWNvbi1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLXByb2Nlc3NpbmctbGlzdHMnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzaW5nLWxpc3RzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wcm9jZXNzaW5nLWxpc3RzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NpbmdMaXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLnByb2Nlc3NpbmctbGlzdHMnKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cdHB1YmxpYyBzdnIgPSB0aGlzLmVsZW1lbnRTdnIuZGF0YS5yZWNvcmR2aWV3IGFzIEVsZW1lbnREYXRhUmVjb3JkVmlldztcclxuXHRjdHJsRWxlbWVudE5hbWUgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHRmaWx0ZXJFbGVtZXRzOiBzdHJpbmdbXTtcclxuXHRwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblx0Y29uc3RydWN0b3IocHVibGljIGVsZW1lbnRTdnI6IEVsZW1lbnRTZXJ2aWNlLCBwdWJsaWMgZWxlczogRWxlbWVudHNTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHt9XHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN1YnMuZm9yRWFjaCh2ID0+IHYudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5zdWJzLnB1c2goXHJcblx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnN1YnNjcmliZShwcm8gPT4gdGhpcy5jdHJsRWxlbWVudE5hbWUucGF0Y2hWYWx1ZShwcm8gPyBwcm8uRWxlbWVudE5hbWUgOiBudWxsKSksXHJcblx0XHRcdHRoaXMuc3ZyLmluaXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc3Vicy5wdXNoKFxyXG5cdFx0XHRcdFx0dGhpcy5jdHJsRWxlbWVudE5hbWUudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSkuc3Vic2NyaWJlKHZhbCA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZmlsdGVyRWxlbWV0cyA9IHRoaXMuc3ZyLmFsbEVsZW1lbnROYW1lc1xyXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIodiA9PiB2LmluY2x1ZGVzKHZhbCkpXHJcblx0XHRcdFx0XHRcdFx0LnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHRoaXMuY3RybEVsZW1lbnROYW1lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWUuRWxlbWVudE5hbWUgPSB2YWw7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdGRyb3BCaW5kKGV2ZW50OiBDZGtEcmFnRHJvcDxJUHJvY2Vzc1tdPikge1xyXG5cdFx0bW92ZUl0ZW1JbkFycmF5KHRoaXMuc3ZyLmJpbmRSZWNvcmRQcm9jZXNzZXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcblx0XHR0aGlzLnN2ci5jb2xsZWN0aW9uUHJvY2Vzc2VzKCk7XHJcblx0fVxyXG5cdGRyb3BOb3RCaW5kKGV2ZW50OiBDZGtEcmFnRHJvcDxJUHJvY2Vzc1tdPikge1xyXG5cdFx0bW92ZUl0ZW1JbkFycmF5KHRoaXMuc3ZyLm5vdEJpbmRSZWNvcmRQcm9jZXNzZXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcblx0XHR0aGlzLnN2ci5jb2xsZWN0aW9uUHJvY2Vzc2VzKCk7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RQcm9jZXNzKHBybzogSVByb2Nlc3MpIHtcclxuXHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLm5leHQocHJvKTtcclxuXHR9XHJcblx0YWRkKCkge1xyXG5cdFx0Y29uc3QgcHJvID0gdGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWU7XHJcblx0XHRpZiAocHJvICYmIHByby5CaW5kUmVjb3JkKSB7XHJcblx0XHRcdHRoaXMuc3ZyLmJpbmRSZWNvcmRQcm9jZXNzZXMgPSB0aGlzLnN2ci5iaW5kUmVjb3JkUHJvY2Vzc2VzIHx8IFtdO1xyXG5cdFx0XHR0aGlzLnN2ci5iaW5kUmVjb3JkUHJvY2Vzc2VzLnB1c2goe1xyXG5cdFx0XHRcdE5hbWU6ICfmlrDnmoTlpITnkIYnLFxyXG5cdFx0XHRcdEJpbmRSZWNvcmQ6IHRydWVcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnN2ci5ub3RCaW5kUmVjb3JkUHJvY2Vzc2VzID0gdGhpcy5zdnIubm90QmluZFJlY29yZFByb2Nlc3NlcyB8fCBbXTtcclxuXHRcdFx0dGhpcy5zdnIubm90QmluZFJlY29yZFByb2Nlc3Nlcy5wdXNoKHtcclxuXHRcdFx0XHROYW1lOiAn5paw55qE5aSE55CGJyxcclxuXHRcdFx0XHRCaW5kUmVjb3JkOiBmYWxzZVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdHRoaXMuc3ZyLmNvbGxlY3Rpb25Qcm9jZXNzZXMoKTtcclxuXHR9XHJcblx0ZGVsZXRlKCkge1xyXG5cdFx0aWYgKHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlKSB7XHJcblx0XHRcdHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMuc3BsaWNlKFxyXG5cdFx0XHRcdHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMuZmluZEluZGV4KHYgPT4gdiA9PT0gdGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWUpLFxyXG5cdFx0XHRcdDFcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLm5leHQodGhpcy5zdnIuUGFyYW1zLlByb2Nlc3Nlc1swXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zdnIucmVmcmVzaFByb2Nlc3NlcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRvcGVuSWNvbkRpYWxvZygpIHtcclxuXHRcdGNvbnN0IHBybyA9IHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlO1xyXG5cdFx0aWYgKCFwcm8pIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdiA9IHsgaWNvbjogcHJvLkljb24sIGNvbG9yOiBwcm8uQ29sb3IgfTtcclxuXHRcdGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oSWNvblNlbGVjdENvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzM4NHB4JyxcclxuXHRcdFx0aGVpZ2h0OiAnMTAwJScsXHJcblx0XHRcdGRhdGE6IHYsXHJcblx0XHRcdHBvc2l0aW9uOiB7XHJcblx0XHRcdFx0dG9wOiAnMHB4JyxcclxuXHRcdFx0XHRyaWdodDogJzBweCdcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHByby5JY29uID0gcmVzdWx0Lmljb247XHJcblx0XHRcdFx0cHJvLkNvbG9yID0gcmVzdWx0LmNvbG9yO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19