ng-devui
Version:
DevUI components based on Angular
112 lines • 14.1 kB
JavaScript
import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core';
import * as i0 from "@angular/core";
export class ResizeDirective {
constructor(el, ngZone) {
this.el = el;
this.ngZone = ngZone;
// 是否允许拖动
this.enableResize = true;
// 按下事件,mousedown,touchstart等
this.pressEvent = new EventEmitter();
// 拖动中事件,mousemove,touchmove等
this.dragEvent = new EventEmitter();
// 释放事件,mouseup,touchend等
this.releaseEvent = new EventEmitter();
this.bind = (el, event, callback) => el.addEventListener && el.addEventListener(event, callback);
this.unbind = (el, event, callback) => el && el.removeEventListener && el.removeEventListener(event, callback);
this.mousedown = (e) => {
this.bind(document, 'mousemove', this.mousemove);
this.bind(document, 'mouseup', this.mouseup);
this.pressEvent.emit(this.normalizeEvent(e));
};
this.mousemove = (e) => {
this.dragEvent.emit(this.normalizeEvent(e));
};
this.mouseup = (e) => {
this.unbind(document, 'mousemove', this.mousemove);
this.unbind(document, 'mouseup', this.mouseup);
this.releaseEvent.emit(this.normalizeEvent(e));
};
this.touchstart = (e) => {
this.bind(document, 'touchmove', this.touchmove);
this.bind(document, 'touchend', this.touchend);
if (e.touches.length === 1) {
this.pressEvent.emit(this.normalizeEvent(e));
}
};
this.touchmove = (e) => {
if (e.touches.length === 1) {
this.dragEvent.emit(this.normalizeEvent(e));
}
};
this.touchend = (e) => {
this.unbind(document, 'touchmove', this.touchmove);
this.unbind(document, 'touchend', this.touchend);
if (e.touches.length === 0) {
this.releaseEvent.emit(this.normalizeEvent(e));
}
};
}
ngOnInit() {
if (this.enableResize) {
this.ngZone.runOutsideAngular(() => {
this.bindEvent();
});
}
}
ngOnDestroy() {
if (this.enableResize) {
this.unbind(this.el.nativeElement, 'mousedown', this.mousedown);
this.unbind(this.el.nativeElement, 'touchstart', this.touchstart);
}
}
bindEvent() {
const element = this.el.nativeElement;
// 绑定mousedown事件
this.bind(element, 'mousedown', this.mousedown);
// 绑定触屏事件
this.bind(element, 'touchstart', this.touchstart);
}
// 返回常用位置信息
normalizeEvent(e) {
// 判断事件类型,用于计算位置坐标
if (e.type.match(/touch/)) {
return {
pageX: e.changedTouches[0].pageX,
pageY: e.changedTouches[0].pageY,
clientX: e.changedTouches[0].clientX,
clientY: e.changedTouches[0].clientY,
type: e.type,
originalEvent: e,
isTouch: true
};
}
return {
pageX: e.pageX,
pageY: e.pageY,
clientX: e.clientX,
clientY: e.clientY,
offsetX: e.offsetX,
offsetY: e.offsetY,
type: e.type,
originalEvent: e
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ResizeDirective, selector: "[dResize]", inputs: { enableResize: "enableResize" }, outputs: { pressEvent: "pressEvent", dragEvent: "dragEvent", releaseEvent: "releaseEvent" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizeDirective, decorators: [{
type: Directive,
args: [{
selector: '[dResize]'
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { enableResize: [{
type: Input
}], pressEvent: [{
type: Output
}], dragEvent: [{
type: Output
}], releaseEvent: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL3NwbGl0dGVyL3Jlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUcsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFBb0IsRUFBYyxFQUFVLE1BQWM7UUFBdEMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSMUQsU0FBUztRQUNBLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzdCLDZCQUE2QjtRQUNuQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMvQyw2QkFBNkI7UUFDbkIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUMseUJBQXlCO1FBQ2YsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBa0JqRCxTQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFNUYsV0FBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQVUxRyxjQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztRQUVGLGNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFFRixZQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDO1FBRUYsZUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsY0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixhQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUMsQ0FBQztJQWpFMkQsQ0FBQztJQUU5RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFNRCxTQUFTO1FBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDdEMsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsU0FBUztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQXdDRCxXQUFXO0lBQ1gsY0FBYyxDQUFDLENBQUM7UUFDZCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDcEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDcEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixPQUFPLEVBQUUsSUFBSTthQUNkLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTztZQUNMLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87WUFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixhQUFhLEVBQUUsQ0FBQztTQUNqQixDQUFDO0lBQ0osQ0FBQzsrR0FwR1UsZUFBZTttR0FBZixlQUFlOzs0RkFBZixlQUFlO2tCQUgzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO2lCQUN0QjtvR0FHVSxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RSZXNpemVdJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIOaYr+WQpuWFgeiuuOaLluWKqFxuICBASW5wdXQoKSBlbmFibGVSZXNpemUgPSB0cnVlO1xuICAvLyDmjInkuIvkuovku7bvvIxtb3VzZWRvd27vvIx0b3VjaHN0YXJ0562JXG4gIEBPdXRwdXQoKSBwcmVzc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIOaLluWKqOS4reS6i+S7tu+8jG1vdXNlbW92Ze+8jHRvdWNobW92ZeetiVxuICBAT3V0cHV0KCkgZHJhZ0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIOmHiuaUvuS6i+S7tu+8jG1vdXNldXDvvIx0b3VjaGVuZOetiVxuICBAT3V0cHV0KCkgcmVsZWFzZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlUmVzaXplKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYmluZEV2ZW50KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5lbmFibGVSZXNpemUpIHtcbiAgICAgIHRoaXMudW5iaW5kKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicsIHRoaXMubW91c2Vkb3duKTtcbiAgICAgIHRoaXMudW5iaW5kKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RvdWNoc3RhcnQnLCB0aGlzLnRvdWNoc3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmQgPSAoZWwsIGV2ZW50LCBjYWxsYmFjaykgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lciAmJiBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjayk7XG5cbiAgdW5iaW5kID0gKGVsLCBldmVudCwgY2FsbGJhY2spID0+IGVsICYmIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2spO1xuXG4gIGJpbmRFdmVudCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIC8vIOe7keWumm1vdXNlZG93buS6i+S7tlxuICAgIHRoaXMuYmluZChlbGVtZW50LCAnbW91c2Vkb3duJywgdGhpcy5tb3VzZWRvd24pO1xuICAgIC8vIOe7keWumuinpuWxj+S6i+S7tlxuICAgIHRoaXMuYmluZChlbGVtZW50LCAndG91Y2hzdGFydCcsIHRoaXMudG91Y2hzdGFydCk7XG4gIH1cblxuICBtb3VzZWRvd24gPSAoZSkgPT4ge1xuICAgIHRoaXMuYmluZChkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMubW91c2Vtb3ZlKTtcbiAgICB0aGlzLmJpbmQoZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5tb3VzZXVwKTtcbiAgICB0aGlzLnByZXNzRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcbiAgfTtcblxuICBtb3VzZW1vdmUgPSAoZSkgPT4ge1xuICAgIHRoaXMuZHJhZ0V2ZW50LmVtaXQodGhpcy5ub3JtYWxpemVFdmVudChlKSk7XG4gIH07XG5cbiAgbW91c2V1cCA9IChlKSA9PiB7XG4gICAgdGhpcy51bmJpbmQoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlbW92ZSk7XG4gICAgdGhpcy51bmJpbmQoZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5tb3VzZXVwKTtcbiAgICB0aGlzLnJlbGVhc2VFdmVudC5lbWl0KHRoaXMubm9ybWFsaXplRXZlbnQoZSkpO1xuICB9O1xuXG4gIHRvdWNoc3RhcnQgPSAoZSkgPT4ge1xuICAgIHRoaXMuYmluZChkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMudG91Y2htb3ZlKTtcbiAgICB0aGlzLmJpbmQoZG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMudG91Y2hlbmQpO1xuICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnByZXNzRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcbiAgICB9XG4gIH07XG5cbiAgdG91Y2htb3ZlID0gKGUpID0+IHtcbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5kcmFnRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcbiAgICB9XG4gIH07XG5cbiAgdG91Y2hlbmQgPSAoZSkgPT4ge1xuICAgIHRoaXMudW5iaW5kKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy50b3VjaG1vdmUpO1xuICAgIHRoaXMudW5iaW5kKGRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLnRvdWNoZW5kKTtcbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZWxlYXNlRXZlbnQuZW1pdCh0aGlzLm5vcm1hbGl6ZUV2ZW50KGUpKTtcbiAgICB9XG4gIH07XG5cbiAgLy8g6L+U5Zue5bi455So5L2N572u5L+h5oGvXG4gIG5vcm1hbGl6ZUV2ZW50KGUpIHtcbiAgICAvLyDliKTmlq3kuovku7bnsbvlnovvvIznlKjkuo7orqHnrpfkvY3nva7lnZDmoIdcbiAgICBpZiAoZS50eXBlLm1hdGNoKC90b3VjaC8pKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlWDogZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCxcbiAgICAgICAgcGFnZVk6IGUuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVksXG4gICAgICAgIGNsaWVudFg6IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCxcbiAgICAgICAgY2xpZW50WTogZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZLFxuICAgICAgICB0eXBlOiBlLnR5cGUsXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIGlzVG91Y2g6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYWdlWDogZS5wYWdlWCxcbiAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxuICAgICAgY2xpZW50WDogZS5jbGllbnRYLFxuICAgICAgY2xpZW50WTogZS5jbGllbnRZLFxuICAgICAgb2Zmc2V0WDogZS5vZmZzZXRYLFxuICAgICAgb2Zmc2V0WTogZS5vZmZzZXRZLFxuICAgICAgdHlwZTogZS50eXBlLFxuICAgICAgb3JpZ2luYWxFdmVudDogZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==