dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
209 lines • 25.8 kB
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2luZy1saXN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvZWxlbWVudC9zZXQtcHJvcGVydHktcmVjb3Jkdmlldy9wcm9jZXNzaW5nLWxpc3RzL3Byb2Nlc3NpbmctbGlzdHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sK0JBQStCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGVBQWUsRUFBVyxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzQyxNQUFNLE9BQU8sd0JBQXdCOzs7Ozs7SUFNcEMsWUFBbUIsVUFBMEIsRUFBUyxJQUFxQixFQUFTLE1BQWlCO1FBQWxGLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBTDlELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakQsUUFBRyxHQUFHLG1CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBeUIsQ0FBQztRQUN0RSxvQkFBZSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFNUIsU0FBSSxHQUFtQixFQUFFLENBQUM7SUFDc0UsQ0FBQzs7OztJQUN6RyxXQUFXO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQztJQUN6QyxDQUFDOzs7O0lBQ0QsUUFBUTtRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVM7Ozs7UUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFDdkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUzs7O1FBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlO3FCQUMzQyxNQUFNOzs7O2dCQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQztxQkFDNUIsSUFBSTs7Ozs7Z0JBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUFDLEVBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtvQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7aUJBQ2hEO1lBQ0YsQ0FBQyxFQUFDLENBQ0YsQ0FBQztRQUNILENBQUMsRUFBQyxDQUNGLENBQUM7SUFDSCxDQUFDOzs7OztJQUNELFFBQVEsQ0FBQyxLQUE4QjtRQUN0QyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFDRCxXQUFXLENBQUMsS0FBOEI7UUFDekMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7SUFDRCxHQUFHOztjQUNJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLO1FBQ3pDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ0g7YUFBTTtZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxLQUFLO2FBQ2pCLENBQUMsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFDRCxNQUFNO1FBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVM7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUMsRUFDN0UsQ0FBQyxDQUNELENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDNUI7SUFDRixDQUFDOzs7O0lBQ0QsY0FBYzs7Y0FDUCxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSztRQUN6QyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsT0FBTztTQUNQOztjQUNLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFOztjQUN4QyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxDQUFDO1lBQ1AsUUFBUSxFQUFFO2dCQUNULEdBQUcsRUFBRSxLQUFLO2dCQUNWLEtBQUssRUFBRSxLQUFLO2FBQ1o7U0FDRCxDQUFDO1FBQ0YsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRTtZQUMxQyxJQUFJLE1BQU0sRUFBRTtnQkFDWCxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUN6QjtRQUNGLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQzs7O1lBaEdELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyw4N0tBQWdEOzthQUVoRDs7OztZQVorQixjQUFjO1lBQ3JDLGVBQWU7WUFFZixTQUFTOzs7d0JBV2hCLFdBQVcsU0FBQyx3QkFBd0I7Ozs7SUFBckMsNkNBQXdEOztJQUN4RCx1Q0FBc0U7O0lBQ3RFLG1EQUFvQzs7SUFDcEMsaURBQXdCOzs7OztJQUN4Qix3Q0FBa0M7O0lBQ3RCLDhDQUFpQzs7SUFBRSx3Q0FBNEI7O0lBQUUsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhUmVjb3JkVmlldywgRWxlbWVudFNlcnZpY2UsIElQcm9jZXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZS9lbGVtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50c1NlcnZpY2UsIEVsZW1lbnQgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgSWNvblNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QvaWNvbi1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLXByb2Nlc3NpbmctbGlzdHMnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzaW5nLWxpc3RzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wcm9jZXNzaW5nLWxpc3RzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NpbmdMaXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLnByb2Nlc3NpbmctbGlzdHMnKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cdHB1YmxpYyBzdnIgPSB0aGlzLmVsZW1lbnRTdnIuZGF0YS5yZWNvcmR2aWV3IGFzIEVsZW1lbnREYXRhUmVjb3JkVmlldztcclxuXHRjdHJsRWxlbWVudE5hbWUgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHRmaWx0ZXJFbGVtZXRzOiBzdHJpbmdbXTtcclxuXHRwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblx0Y29uc3RydWN0b3IocHVibGljIGVsZW1lbnRTdnI6IEVsZW1lbnRTZXJ2aWNlLCBwdWJsaWMgZWxlczogRWxlbWVudHNTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHt9XHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN1YnMuZm9yRWFjaCh2ID0+IHYudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5zdWJzLnB1c2goXHJcblx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnN1YnNjcmliZShwcm8gPT4gdGhpcy5jdHJsRWxlbWVudE5hbWUucGF0Y2hWYWx1ZShwcm8gPyBwcm8uRWxlbWVudE5hbWUgOiBudWxsKSksXHJcblx0XHRcdHRoaXMuc3ZyLmluaXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc3Vicy5wdXNoKFxyXG5cdFx0XHRcdFx0dGhpcy5jdHJsRWxlbWVudE5hbWUudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSkuc3Vic2NyaWJlKHZhbCA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZmlsdGVyRWxlbWV0cyA9IHRoaXMuc3ZyLmFsbEVsZW1lbnROYW1lc1xyXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIodiA9PiB2LmluY2x1ZGVzKHZhbCkpXHJcblx0XHRcdFx0XHRcdFx0LnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHRoaXMuY3RybEVsZW1lbnROYW1lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWUuRWxlbWVudE5hbWUgPSB2YWw7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdGRyb3BCaW5kKGV2ZW50OiBDZGtEcmFnRHJvcDxJUHJvY2Vzc1tdPikge1xyXG5cdFx0bW92ZUl0ZW1JbkFycmF5KHRoaXMuc3ZyLmJpbmRSZWNvcmRQcm9jZXNzZXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcblx0XHR0aGlzLnN2ci5jb2xsZWN0aW9uUHJvY2Vzc2VzKCk7XHJcblx0fVxyXG5cdGRyb3BOb3RCaW5kKGV2ZW50OiBDZGtEcmFnRHJvcDxJUHJvY2Vzc1tdPikge1xyXG5cdFx0bW92ZUl0ZW1JbkFycmF5KHRoaXMuc3ZyLm5vdEJpbmRSZWNvcmRQcm9jZXNzZXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcblx0XHR0aGlzLnN2ci5jb2xsZWN0aW9uUHJvY2Vzc2VzKCk7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RQcm9jZXNzKHBybzogSVByb2Nlc3MpIHtcclxuXHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLm5leHQocHJvKTtcclxuXHR9XHJcblx0YWRkKCkge1xyXG5cdFx0Y29uc3QgcHJvID0gdGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWU7XHJcblx0XHRpZiAocHJvICYmIHByby5CaW5kUmVjb3JkKSB7XHJcblx0XHRcdHRoaXMuc3ZyLmJpbmRSZWNvcmRQcm9jZXNzZXMgPSB0aGlzLnN2ci5iaW5kUmVjb3JkUHJvY2Vzc2VzIHx8IFtdO1xyXG5cdFx0XHR0aGlzLnN2ci5iaW5kUmVjb3JkUHJvY2Vzc2VzLnB1c2goe1xyXG5cdFx0XHRcdE5hbWU6ICfmlrDnmoTlpITnkIYnLFxyXG5cdFx0XHRcdEJpbmRSZWNvcmQ6IHRydWVcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnN2ci5ub3RCaW5kUmVjb3JkUHJvY2Vzc2VzID0gdGhpcy5zdnIubm90QmluZFJlY29yZFByb2Nlc3NlcyB8fCBbXTtcclxuXHRcdFx0dGhpcy5zdnIubm90QmluZFJlY29yZFByb2Nlc3Nlcy5wdXNoKHtcclxuXHRcdFx0XHROYW1lOiAn5paw55qE5aSE55CGJyxcclxuXHRcdFx0XHRCaW5kUmVjb3JkOiBmYWxzZVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdHRoaXMuc3ZyLmNvbGxlY3Rpb25Qcm9jZXNzZXMoKTtcclxuXHR9XHJcblx0ZGVsZXRlKCkge1xyXG5cdFx0aWYgKHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlKSB7XHJcblx0XHRcdHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMuc3BsaWNlKFxyXG5cdFx0XHRcdHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMuZmluZEluZGV4KHYgPT4gdiA9PT0gdGhpcy5zdnIuY3VycmVudFByb2Nlc3MudmFsdWUpLFxyXG5cdFx0XHRcdDFcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHRoaXMuc3ZyLlBhcmFtcy5Qcm9jZXNzZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLm5leHQodGhpcy5zdnIuUGFyYW1zLlByb2Nlc3Nlc1swXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zdnIucmVmcmVzaFByb2Nlc3NlcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRvcGVuSWNvbkRpYWxvZygpIHtcclxuXHRcdGNvbnN0IHBybyA9IHRoaXMuc3ZyLmN1cnJlbnRQcm9jZXNzLnZhbHVlO1xyXG5cdFx0aWYgKCFwcm8pIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdiA9IHsgaWNvbjogcHJvLkljb24sIGNvbG9yOiBwcm8uQ29sb3IgfTtcclxuXHRcdGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oSWNvblNlbGVjdENvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzM4NHB4JyxcclxuXHRcdFx0aGVpZ2h0OiAnMTAwJScsXHJcblx0XHRcdGRhdGE6IHYsXHJcblx0XHRcdHBvc2l0aW9uOiB7XHJcblx0XHRcdFx0dG9wOiAnMHB4JyxcclxuXHRcdFx0XHRyaWdodDogJzBweCdcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHByby5JY29uID0gcmVzdWx0Lmljb247XHJcblx0XHRcdFx0cHJvLkNvbG9yID0gcmVzdWx0LmNvbG9yO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19