dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
197 lines • 21.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, HostBinding, Input, ViewChild, ElementRef } from '@angular/core';
import { NodeTypeEnum } from '../../../../services/eleview/types/model';
import { Node } from '../../../../services/eleview/types/node';
import { EditLabelService } from '../edit-label.service';
export class NodeComponent {
/**
* @param {?} lblSvr
* @param {?} ref
*/
constructor(lblSvr, ref) {
this.lblSvr = lblSvr;
this.ref = ref;
this.nodeTypeCondition = NodeTypeEnum.NodeCondition;
this.nodeTypeAnd = NodeTypeEnum.NodeAnd;
this.nodeTypeOr = NodeTypeEnum.NodeOr;
this.nodeTypeUnknow = NodeTypeEnum.unknow;
this.nodeTypePlain = NodeTypeEnum.NodePlain;
this.hostClass = true;
}
/**
* @return {?}
*/
ngOnInit() { }
/**
* @return {?}
*/
svgHeight() {
return this.data.flatHeight() * 50;
}
/**
* @param {?} event
* @return {?}
*/
nodeDragover(event) {
// 判断如果是节点
if (this.data.NodeType === this.nodeTypeAnd || this.data.NodeType === this.nodeTypeOr) {
event.preventDefault();
/** @type {?} */
const rect = ((/** @type {?} */ (this.ref.nativeElement))).getBoundingClientRect();
/** @type {?} */
const offsetY = event.pageY - rect.top;
/** @type {?} */
const clientHeight = rect.height;
if (this.lblSvr.dragOverNode !== this.data && this.lblSvr.prevNodeEle) {
/** @type {?} */
const ref = (/** @type {?} */ (this.lblSvr.prevNodeEle.nativeElement));
ref.style.borderTop = '4px solid transparent';
ref.style.borderBottom = '4px solid transparent';
ref.style.backgroundColor = null;
}
// Handle drag area
/** @type {?} */
const percentageY = offsetY / clientHeight;
if (percentageY < 0.5) {
((/** @type {?} */ (this.nodeMain.nativeElement))).style.borderTop = '4px solid #67c204';
((/** @type {?} */ (this.nodeMain.nativeElement))).style.borderBottom = '4px solid transparent';
this.lblSvr.dragOverArea = 'above';
}
else if (percentageY >= 0.5) {
((/** @type {?} */ (this.nodeMain.nativeElement))).style.borderTop = '4px solid transparent';
((/** @type {?} */ (this.nodeMain.nativeElement))).style.borderBottom = '4px solid #67c204';
this.lblSvr.dragOverArea = 'below';
}
this.lblSvr.dragOverNode = this.data;
this.lblSvr.prevNodeEle = this.nodeMain;
}
event.stopPropagation();
}
// 把拖动的node放到节点上边
/**
* @param {?} event
* @return {?}
*/
dropTop(event) {
if (this.data.parent) {
this.data.addTopSibling(this.lblSvr.buildDragedNode());
if (this.lblSvr.dragData.Type === 'node') {
((/** @type {?} */ (this.lblSvr.dragData.Data))).remove();
}
}
else {
this.data.Children[0].addTopSibling(this.lblSvr.buildDragedNode());
if (this.lblSvr.dragData.Type === 'node') {
((/** @type {?} */ (this.lblSvr.dragData.Data))).remove();
}
}
}
// 把拖动的node放到节点下边
/**
* @param {?} event
* @return {?}
*/
dropBottom(event) {
this.data.addBottomSibling(this.lblSvr.buildDragedNode());
if (this.lblSvr.dragData.Type === 'node') {
((/** @type {?} */ (this.lblSvr.dragData.Data))).remove();
}
}
/**
* @param {?} event
* @return {?}
*/
nodeDrop(event) {
if (this.data.NodeType === this.nodeTypeAnd || this.data.NodeType === this.nodeTypeOr) {
switch (this.lblSvr.dragOverArea) {
case 'above':
this.dropTop(event);
break;
case 'below':
this.dropBottom(event);
break;
}
this.lblSvr.onNodeChange.emit();
this.lblSvr.dragOverNode = null;
if (this.lblSvr.prevNodeEle) {
/** @type {?} */
const ref = (/** @type {?} */ (this.lblSvr.prevNodeEle.nativeElement));
ref.style.borderTop = '4px solid transparent';
ref.style.borderBottom = '4px solid transparent';
ref.style.backgroundColor = null;
}
}
event.stopPropagation();
}
/**
* @param {?} event
* @return {?}
*/
drop(event) {
if (this.data.NodeType === this.nodeTypeUnknow) {
this.data.assign(this.lblSvr.buildDragedNode());
this.lblSvr.onNodeChange.emit();
}
}
/**
* @return {?}
*/
logicClick() {
if (this.data.NodeType === NodeTypeEnum.NodeAnd) {
this.data.NodeType = NodeTypeEnum.NodeOr;
}
else {
this.data.NodeType = NodeTypeEnum.NodeAnd;
}
this.lblSvr.onNodeChange.emit();
}
}
NodeComponent.decorators = [
{ type: Component, args: [{
selector: 'common-node',
template: "<div #nodeMain class=\"node-main\" (drop)=\"nodeDrop($event)\" onselectstart=\"return false;\">\r\n\t<ng-container *ngIf=\"data.NodeType !== nodeTypeUnknow; else else_content\">\r\n\t\t<common-condition-node\r\n\t\t\t*ngIf=\"data.NodeType === nodeTypeCondition || data.NodeType === nodeTypePlain; else parentNode\"\r\n\t\t\t[data]=\"data\">\r\n\t\t</common-condition-node>\r\n\t\t<ng-template #parentNode>\r\n\t\t\t<div class=\"main\" *ngIf=\"data.NodeType !== nodeTypeCondition\" onselectstart=\"return false;\">\r\n\t\t\t\t<div class=\"node-left\" (dragover)=\"nodeDragover($event)\">\r\n\t\t\t\t\t<div class=\"logic\" >\r\n\t\t\t\t\t\t<div class=\"\u903B\u8F91 mat-elevation-z4\" (click)=\"logicClick()\" *ngIf=\"data.NodeType === nodeTypeAnd\">\u548C\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"\u903B\u8F91 mat-elevation-z4\" (click)=\"logicClick()\" *ngIf=\"data.NodeType === nodeTypeOr\">\u6216\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=\"line\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"child-node\">\r\n\t\t\t\t\t<common-node *ngFor=\"let node of data.Children\" [data]=\"node\"> </common-node>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</ng-container>\r\n\t<ng-template #else_content>\r\n\t\t<div class=\"empty\" (drop)=\"drop($event)\" (dragover)=\"$event.preventDefault()\">\r\n\t\t\t<p>\u7A7A\u5185\u5BB9</p>\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>",
styles: ["@charset \"UTF-8\";.node-main{border-top:4px solid transparent;border-bottom:4px solid transparent;margin:-2px 0}.main{display:flex;justify-content:flex-start;align-items:stretch;margin:3px 0}.node-left{display:flex;justify-content:flex-start;align-items:stretch}.child-node{display:flex;flex-direction:column}.empty{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.logic{display:flex;align-items:center}.logic .\u903B\u8F91{width:24px;height:24px;border-radius:4px;font-size:14px;text-align:center;line-height:24px;color:#fff;cursor:pointer}.line{width:15px;flex-shrink:0;border-top:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;margin-left:4px;box-sizing:border-box}"]
}] }
];
/** @nocollapse */
NodeComponent.ctorParameters = () => [
{ type: EditLabelService },
{ type: ElementRef }
];
NodeComponent.propDecorators = {
data: [{ type: Input }],
hostClass: [{ type: HostBinding, args: ['class.node',] }],
nodeMain: [{ type: ViewChild, args: ['nodeMain', { static: true },] }]
};
if (false) {
/** @type {?} */
NodeComponent.prototype.nodeTypeCondition;
/** @type {?} */
NodeComponent.prototype.nodeTypeAnd;
/** @type {?} */
NodeComponent.prototype.nodeTypeOr;
/** @type {?} */
NodeComponent.prototype.nodeTypeUnknow;
/** @type {?} */
NodeComponent.prototype.nodeTypePlain;
/** @type {?} */
NodeComponent.prototype.data;
/** @type {?} */
NodeComponent.prototype.hostClass;
/** @type {?} */
NodeComponent.prototype.nodeMain;
/**
* @type {?}
* @private
*/
NodeComponent.prototype.lblSvr;
/**
* @type {?}
* @private
*/
NodeComponent.prototype.ref;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYWJlbC1tYW5hZ2VyL2VkaXQtbGFiZWwvbm9kZS9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsTUFBTSxPQUFPLGFBQWE7Ozs7O0lBVXpCLFlBQW9CLE1BQXdCLEVBQVUsR0FBZTtRQUFqRCxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFUNUQsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDbkMsZUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDakMsbUJBQWMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUVyQixjQUFTLEdBQUcsSUFBSSxDQUFDO0lBRzRCLENBQUM7Ozs7SUFDekUsUUFBUSxLQUFJLENBQUM7Ozs7SUFDYixTQUFTO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzs7OztJQUNELFlBQVksQ0FBQyxLQUFnQjtRQUM1QixVQUFVO1FBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJ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QUE0Qzs7SUFDNUMsaUNBQ3FCOzs7OztJQUNULCtCQUFnQzs7Ozs7SUFBRSw0QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTm9kZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZWxldmlldy90eXBlcy9tb2RlbCc7XHJcbmltcG9ydCB7IE5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9lbGV2aWV3L3R5cGVzL25vZGUnO1xyXG5pbXBvcnQgeyBFZGl0TGFiZWxTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdC1sYWJlbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLW5vZGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ub2RlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9ub2RlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdHJlYWRvbmx5IG5vZGVUeXBlQ29uZGl0aW9uID0gTm9kZVR5cGVFbnVtLk5vZGVDb25kaXRpb247XHJcblx0cmVhZG9ubHkgbm9kZVR5cGVBbmQgPSBOb2RlVHlwZUVudW0uTm9kZUFuZDtcclxuXHRyZWFkb25seSBub2RlVHlwZU9yID0gTm9kZVR5cGVFbnVtLk5vZGVPcjtcclxuXHRyZWFkb25seSBub2RlVHlwZVVua25vdyA9IE5vZGVUeXBlRW51bS51bmtub3c7XHJcblx0cmVhZG9ubHkgbm9kZVR5cGVQbGFpbiA9IE5vZGVUeXBlRW51bS5Ob2RlUGxhaW47XHJcblx0QElucHV0KCkgZGF0YTogTm9kZTtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLm5vZGUnKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cdEBWaWV3Q2hpbGQoJ25vZGVNYWluJywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRub2RlTWFpbjogRWxlbWVudFJlZjtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGxibFN2cjogRWRpdExhYmVsU2VydmljZSwgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHt9XHJcblx0bmdPbkluaXQoKSB7fVxyXG5cdHN2Z0hlaWdodCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGF0YS5mbGF0SGVpZ2h0KCkgKiA1MDtcclxuXHR9XHJcblx0bm9kZURyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuXHRcdC8vIOWIpOaWreWmguaenOaYr+iKgueCuVxyXG5cdFx0aWYgKHRoaXMuZGF0YS5Ob2RlVHlwZSA9PT0gdGhpcy5ub2RlVHlwZUFuZCB8fCB0aGlzLmRhdGEuTm9kZVR5cGUgPT09IHRoaXMubm9kZVR5cGVPcikge1xyXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRjb25zdCByZWN0ID0gKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRcdGNvbnN0IG9mZnNldFkgPSBldmVudC5wYWdlWSAtIHJlY3QudG9wO1xyXG5cdFx0XHRjb25zdCBjbGllbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuXHRcdFx0aWYgKHRoaXMubGJsU3ZyLmRyYWdPdmVyTm9kZSAhPT0gdGhpcy5kYXRhICYmIHRoaXMubGJsU3ZyLnByZXZOb2RlRWxlKSB7XHJcblx0XHRcdFx0Y29uc3QgcmVmID0gdGhpcy5sYmxTdnIucHJldk5vZGVFbGUubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHRcdFx0XHRyZWYuc3R5bGUuYm9yZGVyVG9wID0gJzRweCBzb2xpZCB0cmFuc3BhcmVudCc7XHJcblx0XHRcdFx0cmVmLnN0eWxlLmJvcmRlckJvdHRvbSA9ICc0cHggc29saWQgdHJhbnNwYXJlbnQnO1xyXG5cdFx0XHRcdHJlZi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIEhhbmRsZSBkcmFnIGFyZWFcclxuXHRcdFx0Y29uc3QgcGVyY2VudGFnZVkgPSBvZmZzZXRZIC8gY2xpZW50SGVpZ2h0O1xyXG5cdFx0XHRpZiAocGVyY2VudGFnZVkgPCAwLjUpIHtcclxuXHRcdFx0XHQodGhpcy5ub2RlTWFpbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5ib3JkZXJUb3AgPSAnNHB4IHNvbGlkICM2N2MyMDQnO1xyXG5cdFx0XHRcdCh0aGlzLm5vZGVNYWluLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICc0cHggc29saWQgdHJhbnNwYXJlbnQnO1xyXG5cdFx0XHRcdHRoaXMubGJsU3ZyLmRyYWdPdmVyQXJlYSA9ICdhYm92ZSc7XHJcblx0XHRcdH0gZWxzZSBpZiAocGVyY2VudGFnZVkgPj0gMC41KSB7XHJcblx0XHRcdFx0KHRoaXMubm9kZU1haW4ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYm9yZGVyVG9wID0gJzRweCBzb2xpZCB0cmFuc3BhcmVudCc7XHJcblx0XHRcdFx0KHRoaXMubm9kZU1haW4ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYm9yZGVyQm90dG9tID0gJzRweCBzb2xpZCAjNjdjMjA0JztcclxuXHRcdFx0XHR0aGlzLmxibFN2ci5kcmFnT3ZlckFyZWEgPSAnYmVsb3cnO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMubGJsU3ZyLmRyYWdPdmVyTm9kZSA9IHRoaXMuZGF0YTtcclxuXHRcdFx0dGhpcy5sYmxTdnIucHJldk5vZGVFbGUgPSB0aGlzLm5vZGVNYWluO1xyXG5cdFx0fVxyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0fVxyXG5cdC8vIOaKiuaLluWKqOeahG5vZGXmlL7liLDoioLngrnkuIrovrlcclxuXHRkcm9wVG9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuXHRcdGlmICh0aGlzLmRhdGEucGFyZW50KSB7XHJcblx0XHRcdHRoaXMuZGF0YS5hZGRUb3BTaWJsaW5nKHRoaXMubGJsU3ZyLmJ1aWxkRHJhZ2VkTm9kZSgpKTtcclxuXHRcdFx0aWYgKHRoaXMubGJsU3ZyLmRyYWdEYXRhLlR5cGUgPT09ICdub2RlJykge1xyXG5cdFx0XHRcdCh0aGlzLmxibFN2ci5kcmFnRGF0YS5EYXRhIGFzIE5vZGUpLnJlbW92ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmRhdGEuQ2hpbGRyZW5bMF0uYWRkVG9wU2libGluZyh0aGlzLmxibFN2ci5idWlsZERyYWdlZE5vZGUoKSk7XHJcblx0XHRcdGlmICh0aGlzLmxibFN2ci5kcmFnRGF0YS5UeXBlID09PSAnbm9kZScpIHtcclxuXHRcdFx0XHQodGhpcy5sYmxTdnIuZHJhZ0RhdGEuRGF0YSBhcyBOb2RlKS5yZW1vdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvLyDmiormi5bliqjnmoRub2Rl5pS+5Yiw6IqC54K55LiL6L65XHJcblx0ZHJvcEJvdHRvbShldmVudDogRHJhZ0V2ZW50KSB7XHJcblx0XHR0aGlzLmRhdGEuYWRkQm90dG9tU2libGluZyh0aGlzLmxibFN2ci5idWlsZERyYWdlZE5vZGUoKSk7XHJcblx0XHRpZiAodGhpcy5sYmxTdnIuZHJhZ0RhdGEuVHlwZSA9PT0gJ25vZGUnKSB7XHJcblx0XHRcdCh0aGlzLmxibFN2ci5kcmFnRGF0YS5EYXRhIGFzIE5vZGUpLnJlbW92ZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRub2RlRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XHJcblx0XHRpZiAodGhpcy5kYXRhLk5vZGVUeXBlID09PSB0aGlzLm5vZGVUeXBlQW5kIHx8IHRoaXMuZGF0YS5Ob2RlVHlwZSA9PT0gdGhpcy5ub2RlVHlwZU9yKSB7XHJcblx0XHRcdHN3aXRjaCAodGhpcy5sYmxTdnIuZHJhZ092ZXJBcmVhKSB7XHJcblx0XHRcdFx0Y2FzZSAnYWJvdmUnOlxyXG5cdFx0XHRcdFx0dGhpcy5kcm9wVG9wKGV2ZW50KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgJ2JlbG93JzpcclxuXHRcdFx0XHRcdHRoaXMuZHJvcEJvdHRvbShldmVudCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmxibFN2ci5vbk5vZGVDaGFuZ2UuZW1pdCgpO1xyXG5cdFx0XHR0aGlzLmxibFN2ci5kcmFnT3Zlck5vZGUgPSBudWxsO1xyXG5cdFx0XHRpZiAodGhpcy5sYmxTdnIucHJldk5vZGVFbGUpIHtcclxuXHRcdFx0XHRjb25zdCByZWYgPSB0aGlzLmxibFN2ci5wcmV2Tm9kZUVsZS5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG5cdFx0XHRcdHJlZi5zdHlsZS5ib3JkZXJUb3AgPSAnNHB4IHNvbGlkIHRyYW5zcGFyZW50JztcclxuXHRcdFx0XHRyZWYuc3R5bGUuYm9yZGVyQm90dG9tID0gJzRweCBzb2xpZCB0cmFuc3BhcmVudCc7XHJcblx0XHRcdFx0cmVmLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdH1cclxuXHRkcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuXHRcdGlmICh0aGlzLmRhdGEuTm9kZVR5cGUgPT09IHRoaXMubm9kZVR5cGVVbmtub3cpIHtcclxuXHRcdFx0dGhpcy5kYXRhLmFzc2lnbih0aGlzLmxibFN2ci5idWlsZERyYWdlZE5vZGUoKSk7XHJcblx0XHRcdHRoaXMubGJsU3ZyLm9uTm9kZUNoYW5nZS5lbWl0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGxvZ2ljQ2xpY2soKSB7XHJcblx0XHRpZiAodGhpcy5kYXRhLk5vZGVUeXBlID09PSBOb2RlVHlwZUVudW0uTm9kZUFuZCkge1xyXG5cdFx0XHR0aGlzLmRhdGEuTm9kZVR5cGUgPSBOb2RlVHlwZUVudW0uTm9kZU9yO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5kYXRhLk5vZGVUeXBlID0gTm9kZVR5cGVFbnVtLk5vZGVBbmQ7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxibFN2ci5vbk5vZGVDaGFuZ2UuZW1pdCgpO1xyXG5cdH1cclxufVxyXG4iXX0=