UNPKG

dbweb-common

Version:

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

157 lines 21.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, HostBinding } from '@angular/core'; import { moveItemInArray } from '@angular/cdk/drag-drop'; import { ElementService } from '../../service/element.service'; import { CTType } from '../../service/recordview-param'; export class ConditionalTemplateComponent { /** * @param {?} elementSvr */ constructor(elementSvr) { this.elementSvr = elementSvr; this.hostClass = true; this.optionType = '区间选择'; this.optionIndicator = '联系地址'; this.Input = CTType.Input; this.Select = CTType.Select; this.Slider = CTType.Slider; this.MultiSelect = CTType.MultiSelect; this.RangeInput = CTType.RangeInput; this.svr = (/** @type {?} */ (this.elementSvr.data.recordview)); } /** * @return {?} */ ngOnInit() { } /** * @param {?} event * @return {?} */ drop(event) { moveItemInArray(this.svr.Params.ConditionalTemplates, event.previousIndex, event.currentIndex); } /** * @return {?} */ addCondition() { this.svr.Params.ConditionalTemplates = this.svr.Params.ConditionalTemplates || []; /** @type {?} */ const c = (/** @type {?} */ ({ Type: CTType.Input, Field: this.svr.Params.AllColumns.length > 0 ? this.svr.Params.AllColumns[0].Name : undefined, Setting: {} })); this.svr.Params.ConditionalTemplates.push(c); this.svr.currentConditionTemplate = c; } /** * @param {?} data * @return {?} */ SelectCondition(data) { data.Setting = data.Setting || {}; this.svr.currentConditionTemplate = data; } /** * @return {?} */ remove() { /** @type {?} */ const idx = this.svr.Params.ConditionalTemplates.findIndex((/** * @param {?} v * @return {?} */ v => v === this.svr.currentConditionTemplate)); this.svr.Params.ConditionalTemplates.splice(idx, 1); if (this.svr.Params.ConditionalTemplates.length > 0) { this.svr.currentConditionTemplate = this.svr.Params.ConditionalTemplates[Math.min(idx, this.svr.Params.ConditionalTemplates.length - 1)]; } else { this.svr.currentConditionTemplate = undefined; } } /** * @return {?} */ typeChange() { switch (this.svr.currentConditionTemplate.Type) { case CTType.Input: this.svr.currentConditionTemplate.Setting = {}; break; case CTType.Select: this.svr.currentConditionTemplate.Setting = (/** @type {?} */ (this.svr.currentConditionTemplate .Setting)); break; case CTType.MultiSelect: this.svr.currentConditionTemplate.Setting = (/** @type {?} */ (this.svr.currentConditionTemplate .Setting)); break; case CTType.RangeInput: this.svr.currentConditionTemplate.Setting = (/** @type {?} */ (this.svr.currentConditionTemplate .Setting)); break; case CTType.Slider: this.svr.currentConditionTemplate.Setting = (/** @type {?} */ (this.svr.currentConditionTemplate .Setting)); break; } } /** * @param {?} ty * @return {?} */ typeName(ty) { switch (ty) { case CTType.Input: return '录入'; case CTType.Select: return '单选'; case CTType.MultiSelect: return '多选'; case CTType.RangeInput: return '范围录入'; case CTType.Slider: return '范围选择'; } } } ConditionalTemplateComponent.decorators = [ { type: Component, args: [{ selector: 'common-conditional-template', template: "<div class=\"\u6761\u4EF6\u5217\u8868\">\r\n\t<div class=\"\u6761\u4EF6\u6807\u9898 \u5B57\u4F53\u989C\u8272\">\r\n\t\t<span>\u6761\u4EF6\u5217\u8868</span>\r\n\t\t<span class=\"\u65B0\u589E\u6761\u4EF6 \u5B57\u4F53\u989C\u8272\" (click)=\"addCondition()\">\r\n\t\t\t<mat-icon svgIcon=\"add_circle\"></mat-icon>\r\n\t\t\t<span>\u65B0\u589E\u6761\u4EF6</span>\r\n\t\t</span>\r\n\t</div>\r\n\t<div cdkDropList class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\r\n\t\t<div\r\n\t\t\tclass=\"example-box\"\r\n\t\t\t*ngFor=\"let condition of svr.Params.ConditionalTemplates\"\r\n\t\t\tcdkDrag\r\n\t\t\t(click)=\"SelectCondition(condition)\"\r\n\t\t\t[ngClass]=\"{ active: condition == svr.currentConditionTemplate }\"\r\n\t\t>\r\n\t\t\t<mat-icon cdkDragHandle class=\"\u62D6\u52A8 \u56FE\u6807\" svgIcon=\"drag_indicator\"> </mat-icon>\r\n\t\t\t{{ condition.Field }}-{{ typeName(condition.Type) }}\r\n\t\t\t<mat-icon\r\n\t\t\t\tclass=\"\u6307\u793A\u7BAD\u5934\"\r\n\t\t\t\t*ngIf=\"condition == svr.currentConditionTemplate\"\r\n\t\t\t\tsvgIcon=\"chevron_right\"\r\n\t\t\t></mat-icon>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div class=\"\u5206\u5272\u7EBF \u5206\u5272\u7EBF\u8272\u503C\"></div>\r\n<ng-template #emptyUI>\r\n\t<div class=\"\u6761\u4EF6\u8BBE\u7F6E\">\r\n\t\t<div class=\"\u6761\u4EF6\u6807\u9898 \u5B57\u4F53\u989C\u8272\">\r\n\t\t\t<span>\u6761\u4EF6\u8BBE\u7F6E</span>\r\n\t\t</div>\r\n\t\t<div class=\"\u65E0\u6761\u4EF6\u7F16\u8F91\">\r\n\t\t\t<div>\u65E0\u53EF\u7F16\u8F91\u5185\u5BB9</div>\r\n\t\t\t<div class=\"\u9009\u62E9\u63D0\u793A\">\u70B9\u51FB\u5DE6\u4FA7\u67D0\u4E00\u6761\u4EF6\u5217\u5BF9\u5176\u8FDB\u884C\u7F16\u8F91</div>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n\r\n<div class=\"\u6761\u4EF6\u8BBE\u7F6E\" *ngIf=\"svr.currentConditionTemplate; else emptyUI\">\r\n\t<div class=\"\u6761\u4EF6\u6807\u9898 \u5B57\u4F53\u989C\u8272\">\r\n\t\t<span>\u6761\u4EF6\u8BBE\u7F6E</span>\r\n\t\t<button mat-icon-button (click)=\"remove()\">\r\n\t\t\t<mat-icon class=\"\u5220\u9664\" svgIcon=\"outlined:delete\" title=\"\u5220\u9664\"> </mat-icon>\r\n\t\t</button>\r\n\t</div>\r\n\t<div class=\"\u591A\u6761\u4EF6-\u4E8C\u7EA7\u6807\u9898\">\u6307\u6807\u540D\u79F0</div>\r\n\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t<mat-select [(value)]=\"svr.currentConditionTemplate.Field\">\r\n\t\t\t<mat-option *ngFor=\"let col of svr.Params.AllColumns\" [value]=\"col.Name\">{{ col.Name }}</mat-option>\r\n\t\t</mat-select>\r\n\t</mat-form-field>\r\n\t<div class=\"\u591A\u6761\u4EF6-\u4E8C\u7EA7\u6807\u9898\">\u7C7B\u578B</div>\r\n\t<mat-form-field class=\"\u9009\u62E9\u6846\" appearance=\"outline\">\r\n\t\t<mat-select [(value)]=\"svr.currentConditionTemplate.Type\" (valueChange)=\"typeChange()\">\r\n\t\t\t<mat-option [value]=\"Input\">{{ typeName(Input) }}</mat-option>\r\n\t\t\t<mat-option [value]=\"Select\">{{ typeName(Select) }}</mat-option>\r\n\t\t\t<mat-option [value]=\"MultiSelect\">{{ typeName(MultiSelect) }} </mat-option>\r\n\t\t\t<mat-option [value]=\"RangeInput\">{{ typeName(RangeInput) }} </mat-option>\r\n\t\t\t<mat-option [value]=\"Slider\">{{ typeName(Slider) }}</mat-option>\r\n\t\t</mat-select>\r\n\t</mat-form-field>\r\n\t<div class=\"\u6837\u5F0F\u8BBE\u7F6E\" [ngSwitch]=\"true\">\r\n\t\t<common-select-setting\r\n\t\t\t*ngSwitchCase=\"\r\n\t\t\t\tsvr.currentConditionTemplate.Type == Select || svr.currentConditionTemplate.Type == MultiSelect\r\n\t\t\t\"\r\n\t\t\t[data]=\"svr.currentConditionTemplate.Setting\"\r\n\t\t>\r\n\t\t</common-select-setting>\r\n\t\t<common-range-input-setting\r\n\t\t\t*ngSwitchCase=\"svr.currentConditionTemplate.Type == RangeInput\"\r\n\t\t\t[data]=\"svr.currentConditionTemplate.Setting\"\r\n\t\t>\r\n\t\t</common-range-input-setting>\r\n\t\t<common-slider-setting\r\n\t\t\t*ngSwitchCase=\"svr.currentConditionTemplate.Type == Slider\"\r\n\t\t\t[inData]=\"svr.currentConditionTemplate.Setting\"\r\n\t\t>\r\n\t\t</common-slider-setting>\r\n\t</div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;padding:16px 0;box-sizing:border-box;display:flex}.\u6761\u4EF6\u8BBE\u7F6E{min-width:240px;flex-grow:2;height:100%;overflow-y:auto;padding:0 24px;box-sizing:border-box;position:relative;display:flex;flex-direction:column}.\u6761\u4EF6\u8BBE\u7F6E .\u9009\u62E9\u6846{width:100%;max-width:384px}.\u6761\u4EF6\u8BBE\u7F6E .\u9009\u62E9\u6846 ::ng-deep .mat-form-field-wrapper{margin:0;padding-bottom:10px;vertical-align:bottom;-webkit-transform:translateY(0);transform:translateY(0)}.\u6761\u4EF6\u8BBE\u7F6E .\u9009\u62E9\u6846 ::ng-deep .mat-form-field-infix{border:0;font-size:14px;padding:10px 0;box-sizing:border-box}.\u6761\u4EF6\u8BBE\u7F6E .\u9009\u62E9\u6846 ::ng-deep .mat-select-arrow-wrapper{display:block}.\u6761\u4EF6\u8BBE\u7F6E .\u9009\u62E9\u6846 ::ng-deep .mat-form-field.mat-focused .mat-form-field-label{color:#50d0fb!important}.\u6761\u4EF6\u8BBE\u7F6E .\u6837\u5F0F\u8BBE\u7F6E{margin-top:40px;width:100%;height:0;flex-grow:1}.\u6761\u4EF6\u8BBE\u7F6E .\u65E0\u6761\u4EF6\u7F16\u8F91{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;font-size:18px;font-weight:700}.\u6761\u4EF6\u8BBE\u7F6E .\u65E0\u6761\u4EF6\u7F16\u8F91 .\u9009\u62E9\u63D0\u793A{margin-top:8;font-size:12px;font-weight:inherit}.\u5206\u5272\u7EBF{height:100%;width:1px}.\u6761\u4EF6\u5217\u8868{max-width:272px;min-width:200px;flex-grow:1;height:100%;padding:8px 16px;box-sizing:border-box;display:flex;flex-direction:column}.example-list{width:100%;flex-grow:1;display:block;overflow-y:auto;box-shadow:none!important}.example-box{padding:20px;box-shadow:none;box-sizing:border-box;cursor:pointer;font-size:14px;position:relative}.example-box:hover{z-index:99;box-shadow:0 4px 5px 0 rgba(0,0,0,.14)}.example-box:hover .\u56FE\u6807{display:block}.example-box .\u6307\u793A\u7BAD\u5934{width:24px;height:24px;position:absolute;right:8px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.example-box .\u56FE\u6807{width:16px;height:16px;display:none}.example-box .\u62D6\u52A8{position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.\u6761\u4EF6\u6807\u9898{width:100%;margin-bottom:16px;line-height:40px;font-weight:700;display:flex;justify-content:space-between}.\u6761\u4EF6\u6807\u9898 .\u65B0\u589E\u6761\u4EF6{cursor:pointer;font-size:14px}.\u6761\u4EF6\u6807\u9898 .\u65B0\u589E\u6761\u4EF6 .mat-icon{width:24px;height:24px;line-height:24px;margin-right:8px;vertical-align:middle}.\u591A\u6761\u4EF6-\u4E8C\u7EA7\u6807\u9898{display:block;font-size:12px;margin-bottom:8px}.example-box:last-child{border:none}"] }] } ]; /** @nocollapse */ ConditionalTemplateComponent.ctorParameters = () => [ { type: ElementService } ]; ConditionalTemplateComponent.propDecorators = { hostClass: [{ type: HostBinding, args: ['class.conditional-template',] }] }; if (false) { /** @type {?} */ ConditionalTemplateComponent.prototype.hostClass; /** @type {?} */ ConditionalTemplateComponent.prototype.optionType; /** @type {?} */ ConditionalTemplateComponent.prototype.optionIndicator; /** @type {?} */ ConditionalTemplateComponent.prototype.Input; /** @type {?} */ ConditionalTemplateComponent.prototype.Select; /** @type {?} */ ConditionalTemplateComponent.prototype.Slider; /** @type {?} */ ConditionalTemplateComponent.prototype.MultiSelect; /** @type {?} */ ConditionalTemplateComponent.prototype.RangeInput; /** @type {?} */ ConditionalTemplateComponent.prototype.svr; /** @type {?} */ ConditionalTemplateComponent.prototype.elementSvr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnQvc2V0LXByb3BlcnR5LXJlY29yZHZpZXcvY29uZGl0aW9uYWwtdGVtcGxhdGUvY29uZGl0aW9uYWwtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUF5QixjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RixPQUFPLEVBRU4sTUFBTSxFQU1OLE1BQU0sZ0NBQWdDLENBQUM7QUFPeEMsTUFBTSxPQUFPLDRCQUE0Qjs7OztJQVV4QyxZQUFtQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQVRGLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDNUQsZUFBVSxHQUFHLE1BQU0sQ0FBQztRQUNwQixvQkFBZSxHQUFHLE1BQU0sQ0FBQztRQUNoQixVQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNyQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2QixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDakMsUUFBRyxHQUFHLG1CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBeUIsQ0FBQztJQUN0QixDQUFDOzs7O0lBRWpELFFBQVEsS0FBSSxDQUFDOzs7OztJQUNiLElBQUksQ0FBQyxLQUE0QjtRQUNoQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFN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QUFDLEdBQUcsQ0FBQyx3QkFBd0I7cUJBQzNFLE9BQU8sRUFBdUIsQ0FBQztnQkFDakMsTUFBTTtZQUNQLEtBQUssTUFBTSxDQUFDLE1BQU07Z0JBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsT0FBTyxHQUFHLG1CQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCO3FCQUMzRSxPQUFPLEVBQW1CLENBQUM7Z0JBQzdCLE1BQU07U0FDUDtJQUNGLENBQUM7Ozs7O0lBQ0QsUUFBUSxDQUFDLEVBQVU7UUFDbEIsUUFBUSxFQUFFLEVBQUU7WUFDWCxLQUFLLE1BQU0sQ0FBQyxLQUFLO2dCQUNoQixPQUFPLElBQUksQ0FBQztZQUNiLEtBQUssTUFBTSxDQUFDLE1BQU07Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDO1lBQ2IsS0FBSyxNQUFNLENBQUMsV0FBVztnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDYixLQUFLLE1BQU0sQ0FBQyxVQUFVO2dCQUNyQixPQUFPLE1BQU0sQ0FBQztZQUNmLEtBQUssTUFBTSxDQUFDLE1BQU07Z0JBQ2pCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDRixDQUFDOzs7WUFsRkQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLDg1SEFBb0Q7O2FBRXBEOzs7O1lBZitCLGNBQWM7Ozt3QkFpQjVDLFdBQVcsU0FBQyw0QkFBNEI7Ozs7SUFBekMsaURBQTREOztJQUM1RCxrREFBb0I7O0lBQ3BCLHVEQUF5Qjs7SUFDekIsNkNBQThCOztJQUM5Qiw4Q0FBZ0M7O0lBQ2hDLDhDQUFnQzs7SUFDaEMsbURBQTBDOztJQUMxQyxrREFBd0M7O0lBQ3hDLDJDQUFzRTs7SUFDMUQsa0RBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgRWxlbWVudERhdGFSZWNvcmRWaWV3LCBFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZWxlbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuXHRDb25kaXRpb25hbFRlbXBsYXRlLFxyXG5cdENUVHlwZSxcclxuXHRDVE11bHRpU2VsZWN0U2V0dGluZyxcclxuXHRDVFNlbGVjdFNldHRpbmcsXHJcblx0Q1RSYW5nZUlucHV0U2V0dGluZyxcclxuXHRDVFNpbGRlclNldHRpbmcsXHJcblx0U2lsZGVyU2V0dGluZ1xyXG59IGZyb20gJy4uLy4uL3NlcnZpY2UvcmVjb3Jkdmlldy1wYXJhbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2NvbW1vbi1jb25kaXRpb25hbC10ZW1wbGF0ZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbmRpdGlvbmFsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jb25kaXRpb25hbC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25hbFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbmRpdGlvbmFsLXRlbXBsYXRlJykgaG9zdENsYXNzID0gdHJ1ZTtcclxuXHRvcHRpb25UeXBlID0gJ+WMuumXtOmAieaLqSc7XHJcblx0b3B0aW9uSW5kaWNhdG9yID0gJ+iBlOezu+WcsOWdgCc7XHJcblx0cmVhZG9ubHkgSW5wdXQgPSBDVFR5cGUuSW5wdXQ7XHJcblx0cmVhZG9ubHkgU2VsZWN0ID0gQ1RUeXBlLlNlbGVjdDtcclxuXHRyZWFkb25seSBTbGlkZXIgPSBDVFR5cGUuU2xpZGVyO1xyXG5cdHJlYWRvbmx5IE11bHRpU2VsZWN0ID0gQ1RUeXBlLk11bHRpU2VsZWN0O1xyXG5cdHJlYWRvbmx5IFJhbmdlSW5wdXQgPSBDVFR5cGUuUmFuZ2VJbnB1dDtcclxuXHRwdWJsaWMgc3ZyID0gdGhpcy5lbGVtZW50U3ZyLmRhdGEucmVjb3JkdmlldyBhcyBFbGVtZW50RGF0YVJlY29yZFZpZXc7XHJcblx0Y29uc3RydWN0b3IocHVibGljIGVsZW1lbnRTdnI6IEVsZW1lbnRTZXJ2aWNlKSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpIHt9XHJcblx0ZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcblx0XHRtb3ZlSXRlbUluQXJyYXkodGhpcy5zdnIuUGFyYW1zLkNvbmRpdGlvbmFsVGVtcGxhdGVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG5cdH1cclxuXHRhZGRDb25kaXRpb24oKSB7XHJcblx0XHR0aGlzLnN2ci5QYXJhbXMuQ29uZGl0aW9uYWxUZW1wbGF0ZXMgPSB0aGlzLnN2ci5QYXJhbXMuQ29uZGl0aW9uYWxUZW1wbGF0ZXMgfHwgW107XHJcblx0XHRjb25zdCBjID0ge1xyXG5cdFx0XHRUeXBlOiBDVFR5cGUuSW5wdXQsXHJcblx0XHRcdEZpZWxkOiB0aGlzLnN2ci5QYXJhbXMuQWxsQ29sdW1ucy5sZW5ndGggPiAwID8gdGhpcy5zdnIuUGFyYW1zLkFsbENvbHVtbnNbMF0uTmFtZSA6IHVuZGVmaW5lZCxcclxuXHRcdFx0U2V0dGluZzoge31cclxuXHRcdH0gYXMgQ29uZGl0aW9uYWxUZW1wbGF0ZTtcclxuXHRcdHRoaXMuc3ZyLlBhcmFtcy5Db25kaXRpb25hbFRlbXBsYXRlcy5wdXNoKGMpO1xyXG5cdFx0dGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlID0gYztcclxuXHR9XHJcblx0U2VsZWN0Q29uZGl0aW9uKGRhdGE6IENvbmRpdGlvbmFsVGVtcGxhdGUpIHtcclxuXHRcdGRhdGEuU2V0dGluZyA9IGRhdGEuU2V0dGluZyB8fCB7fTtcclxuXHRcdHRoaXMuc3ZyLmN1cnJlbnRDb25kaXRpb25UZW1wbGF0ZSA9IGRhdGE7XHJcblx0fVxyXG5cdHJlbW92ZSgpIHtcclxuXHRcdGNvbnN0IGlkeCA9IHRoaXMuc3ZyLlBhcmFtcy5Db25kaXRpb25hbFRlbXBsYXRlcy5maW5kSW5kZXgodiA9PiB2ID09PSB0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGUpO1xyXG5cdFx0dGhpcy5zdnIuUGFyYW1zLkNvbmRpdGlvbmFsVGVtcGxhdGVzLnNwbGljZShpZHgsIDEpO1xyXG5cdFx0aWYgKHRoaXMuc3ZyLlBhcmFtcy5Db25kaXRpb25hbFRlbXBsYXRlcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRDb25kaXRpb25UZW1wbGF0ZSA9IHRoaXMuc3ZyLlBhcmFtcy5Db25kaXRpb25hbFRlbXBsYXRlc1tcclxuXHRcdFx0XHRNYXRoLm1pbihpZHgsIHRoaXMuc3ZyLlBhcmFtcy5Db25kaXRpb25hbFRlbXBsYXRlcy5sZW5ndGggLSAxKVxyXG5cdFx0XHRdO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR0eXBlQ2hhbmdlKCkge1xyXG5cdFx0c3dpdGNoICh0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGUuVHlwZSkge1xyXG5cdFx0XHRjYXNlIENUVHlwZS5JbnB1dDpcclxuXHRcdFx0XHR0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGUuU2V0dGluZyA9IHt9O1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIENUVHlwZS5TZWxlY3Q6XHJcblx0XHRcdFx0dGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlLlNldHRpbmcgPSB0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGVcclxuXHRcdFx0XHRcdC5TZXR0aW5nIGFzIENUU2VsZWN0U2V0dGluZztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBDVFR5cGUuTXVsdGlTZWxlY3Q6XHJcblx0XHRcdFx0dGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlLlNldHRpbmcgPSB0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGVcclxuXHRcdFx0XHRcdC5TZXR0aW5nIGFzIENUTXVsdGlTZWxlY3RTZXR0aW5nO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIENUVHlwZS5SYW5nZUlucHV0OlxyXG5cdFx0XHRcdHRoaXMuc3ZyLmN1cnJlbnRDb25kaXRpb25UZW1wbGF0ZS5TZXR0aW5nID0gdGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlXHJcblx0XHRcdFx0XHQuU2V0dGluZyBhcyBDVFJhbmdlSW5wdXRTZXR0aW5nO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIENUVHlwZS5TbGlkZXI6XHJcblx0XHRcdFx0dGhpcy5zdnIuY3VycmVudENvbmRpdGlvblRlbXBsYXRlLlNldHRpbmcgPSB0aGlzLnN2ci5jdXJyZW50Q29uZGl0aW9uVGVtcGxhdGVcclxuXHRcdFx0XHRcdC5TZXR0aW5nIGFzIENUU2lsZGVyU2V0dGluZztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHR9XHJcblx0dHlwZU5hbWUodHk6IENUVHlwZSkge1xyXG5cdFx0c3dpdGNoICh0eSkge1xyXG5cdFx0XHRjYXNlIENUVHlwZS5JbnB1dDpcclxuXHRcdFx0XHRyZXR1cm4gJ+W9leWFpSc7XHJcblx0XHRcdGNhc2UgQ1RUeXBlLlNlbGVjdDpcclxuXHRcdFx0XHRyZXR1cm4gJ+WNlemAiSc7XHJcblx0XHRcdGNhc2UgQ1RUeXBlLk11bHRpU2VsZWN0OlxyXG5cdFx0XHRcdHJldHVybiAn5aSa6YCJJztcclxuXHRcdFx0Y2FzZSBDVFR5cGUuUmFuZ2VJbnB1dDpcclxuXHRcdFx0XHRyZXR1cm4gJ+iMg+WbtOW9leWFpSc7XHJcblx0XHRcdGNhc2UgQ1RUeXBlLlNsaWRlcjpcclxuXHRcdFx0XHRyZXR1cm4gJ+iMg+WbtOmAieaLqSc7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==