ngx-tethys 13.2.1 → 13.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/collapse/styles/collapse.scss +3 -0
- package/drag-drop/drag-content.directive.d.ts +3 -0
- package/drag-drop/drag-drop.service.d.ts +14 -0
- package/drag-drop/drag-handle.directive.d.ts +3 -0
- package/drag-drop/drag.directive.d.ts +15 -0
- package/drag-drop/drop-container.directive.d.ts +36 -0
- package/drag-drop/examples/{basic/basic.component.scss → tree-drag/tree-drag.component.scss} +0 -0
- package/esm2020/drag-drop/drag-content.directive.mjs +4 -1
- package/esm2020/drag-drop/drag-drop.service.mjs +8 -1
- package/esm2020/drag-drop/drag-handle.directive.mjs +4 -1
- package/esm2020/drag-drop/drag.directive.mjs +12 -1
- package/esm2020/drag-drop/drop-container.directive.mjs +17 -1
- package/esm2020/image/preview/image-preview.component.mjs +2 -5
- package/esm2020/property/properties.component.mjs +54 -36
- package/esm2020/property/property-item.component.mjs +10 -1
- package/esm2020/time-picker/index.mjs +3 -1
- package/esm2020/time-picker/time-picker-panel.component.mjs +230 -0
- package/esm2020/time-picker/time-picker.component.mjs +299 -0
- package/esm2020/time-picker/time-picker.module.mjs +16 -6
- package/esm2020/version.mjs +2 -2
- package/esm2020/watermark/config.mjs +5 -10
- package/esm2020/watermark/watermark.directive.mjs +59 -43
- package/fesm2015/ngx-tethys-drag-drop.mjs +40 -0
- package/fesm2015/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2015/ngx-tethys-image.mjs +1 -1
- package/fesm2015/ngx-tethys-image.mjs.map +1 -1
- package/fesm2015/ngx-tethys-property.mjs +62 -35
- package/fesm2015/ngx-tethys-property.mjs.map +1 -1
- package/fesm2015/ngx-tethys-time-picker.mjs +532 -12
- package/fesm2015/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2015/ngx-tethys-watermark.mjs +61 -49
- package/fesm2015/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2015/ngx-tethys.mjs +1 -1
- package/fesm2015/ngx-tethys.mjs.map +1 -1
- package/fesm2020/ngx-tethys-drag-drop.mjs +40 -0
- package/fesm2020/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2020/ngx-tethys-image.mjs +1 -4
- package/fesm2020/ngx-tethys-image.mjs.map +1 -1
- package/fesm2020/ngx-tethys-property.mjs +62 -35
- package/fesm2020/ngx-tethys-property.mjs.map +1 -1
- package/fesm2020/ngx-tethys-time-picker.mjs +531 -12
- package/fesm2020/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2020/ngx-tethys-watermark.mjs +62 -51
- package/fesm2020/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/property/properties.component.d.ts +10 -4
- package/property/property-item.component.d.ts +5 -1
- package/property/styles/properties.scss +13 -4
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/styles/variables.scss +4 -1
- package/tabs/styles/tabs.scss +4 -2
- package/time-picker/index.d.ts +2 -0
- package/time-picker/styles/index.scss +2 -0
- package/time-picker/styles/time-panel.scss +108 -0
- package/time-picker/styles/time-picker.scss +43 -0
- package/time-picker/styles/variables.scss +26 -0
- package/time-picker/time-picker-panel.component.d.ts +74 -0
- package/time-picker/time-picker.component.d.ts +72 -0
- package/time-picker/time-picker.module.d.ts +11 -2
- package/watermark/config.d.ts +4 -9
- package/watermark/styles/watermark.scss +0 -8
- package/watermark/watermark.directive.d.ts +12 -7
- package/drag-drop/examples/with-handle/with-handle.component.scss +0 -7
- package/property/examples/dynamic-rendering/dynamic-rendering.component.scss +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,47 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [13.2.4](https://github.com/atinc/ngx-tethys/compare/13.2.3...13.2.4) (2022-08-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **image:** fix blob image preview error #INFR-4333 ([#2103](https://github.com/atinc/ngx-tethys/issues/2103)) ([2e8c34d](https://github.com/atinc/ngx-tethys/commit/2e8c34d72ed436ce6dee4eadf5ad997e72a719d5)), closes [#INFR-4333](https://github.com/atinc/ngx-tethys/issues/INFR-4333)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [13.2.3](https://github.com/atinc/ngx-tethys/compare/13.2.2...13.2.3) (2022-08-19)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **property:** update property item align-items is baseline #INFR-4285 ([d8d7c22](https://github.com/atinc/ngx-tethys/commit/d8d7c2295d017e15cb3bb1ad8328dff87678bdc0)), closes [#INFR-4285](https://github.com/atinc/ngx-tethys/issues/INFR-4285)
|
|
20
|
+
* **property:** update style, property label aalways top alignment ##INFR-4285 ([005344b](https://github.com/atinc/ngx-tethys/commit/005344b39b145b8870cbc5752f959c0e21b402c6)), closes [#INFR-4285](https://github.com/atinc/ngx-tethys/issues/INFR-4285)
|
|
21
|
+
* **watermark:** adjust the fake-box style #INFR-4287 ([7e4d96e](https://github.com/atinc/ngx-tethys/commit/7e4d96e076a455e2ac9873f6006a20a098929b33)), closes [#INFR-4287](https://github.com/atinc/ngx-tethys/issues/INFR-4287)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **property:** support keep editing #INFR-4275 ([#2091](https://github.com/atinc/ngx-tethys/issues/2091)) ([ceb67a0](https://github.com/atinc/ngx-tethys/commit/ceb67a0564155154be57dc58e923a3f826425831)), closes [#INFR-4275](https://github.com/atinc/ngx-tethys/issues/INFR-4275)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [13.2.2](https://github.com/atinc/ngx-tethys/compare/13.2.1...13.2.2) (2022-08-17)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* **collapse:** fix collapse empty box style #INFR-4220 ([1f5a788](https://github.com/atinc/ngx-tethys/commit/1f5a7882aef62b23895c290b35787058f3d7bdce)), closes [#INFR-4220](https://github.com/atinc/ngx-tethys/issues/INFR-4220)
|
|
36
|
+
* **watermark:** adjust the var name & add test #INFO-4106 ([#2085](https://github.com/atinc/ngx-tethys/issues/2085)) ([aa4ad36](https://github.com/atinc/ngx-tethys/commit/aa4ad361337935a23fbf35bf41f516e8f326bada)), closes [#INFO-4106](https://github.com/atinc/ngx-tethys/issues/INFO-4106)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
* **tabs:** change padding of tabs content to 16px #INFR-4204 ([#2082](https://github.com/atinc/ngx-tethys/issues/2082)) ([330c1de](https://github.com/atinc/ngx-tethys/commit/330c1deff97b4008e77db9442c2c876f84e9d6f0)), closes [#INFR-4204](https://github.com/atinc/ngx-tethys/issues/INFR-4204)
|
|
42
|
+
* **time-picker:** add new TimePicker #INFR-4147 ([#2087](https://github.com/atinc/ngx-tethys/issues/2087)) ([fa8cc62](https://github.com/atinc/ngx-tethys/commit/fa8cc62f18446ea727a848dc4b76c7222cdf7a53)), closes [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147) [#INFR-4147](https://github.com/atinc/ngx-tethys/issues/INFR-4147)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
5
46
|
## [13.2.1](https://github.com/atinc/ngx-tethys/compare/13.2.0...13.2.1) (2022-08-11)
|
|
6
47
|
|
|
7
48
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ElementRef } from '@angular/core';
|
|
2
2
|
import { ThyDragDirective } from './drag.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* 自定义拖拽时可经过,拖拽结束时可放置的区域内容
|
|
6
|
+
*/
|
|
4
7
|
export declare class ThyDragContentDirective {
|
|
5
8
|
element: ElementRef<HTMLElement>;
|
|
6
9
|
contentClass: boolean;
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { ThyDragDirective } from './drag.directive';
|
|
2
2
|
import { ThyDropPosition } from './drag-drop.class';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* 自定义可放置区域内容
|
|
6
|
+
*/
|
|
4
7
|
export declare class ThyDragDropService<T = any> {
|
|
8
|
+
/**
|
|
9
|
+
* 当前拖拽项,dragEnd 后重置为 undefined
|
|
10
|
+
*/
|
|
5
11
|
previousDrag: ThyDragDirective<T>;
|
|
12
|
+
/**
|
|
13
|
+
* 拖拽的时候,针对 dragOver 的节点有三种情况,即拖拽到节点之上 before ,拖拽到节点上 in ,拖拽到节点之下 after
|
|
14
|
+
* @type ThyDropPosition
|
|
15
|
+
*/
|
|
6
16
|
dropPosition: ThyDropPosition;
|
|
17
|
+
/**
|
|
18
|
+
* 用于拖动过程对 dragover 的元素设置相应的样式
|
|
19
|
+
* @type Map<Element, string>
|
|
20
|
+
*/
|
|
7
21
|
classMap: Map<Element, string>;
|
|
8
22
|
constructor();
|
|
9
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyDragDropService<any>, never>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ElementRef } from '@angular/core';
|
|
2
2
|
import { ThyDragDirective } from './drag.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* 自定义可拖拽区域内容
|
|
6
|
+
*/
|
|
4
7
|
export declare class ThyDragHandleDirective {
|
|
5
8
|
element: ElementRef<HTMLElement>;
|
|
6
9
|
private _disabled;
|
|
@@ -5,13 +5,28 @@ import { MixinBase, Constructor, ThyUnsubscribe } from 'ngx-tethys/core';
|
|
|
5
5
|
import { IThyDropContainerDirective } from './drop-container.class';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
declare const _MixinBase: Constructor<ThyUnsubscribe> & typeof MixinBase;
|
|
8
|
+
/**
|
|
9
|
+
* 拖拽项
|
|
10
|
+
*/
|
|
8
11
|
export declare class ThyDragDirective<T = any> extends _MixinBase implements OnDestroy {
|
|
9
12
|
container: IThyDropContainerDirective;
|
|
10
13
|
private elementRef;
|
|
14
|
+
/**
|
|
15
|
+
* 元数据
|
|
16
|
+
* @type any
|
|
17
|
+
*/
|
|
11
18
|
set dragData(data: T);
|
|
19
|
+
/**
|
|
20
|
+
* 元数据
|
|
21
|
+
* @type any
|
|
22
|
+
*/
|
|
12
23
|
data: T;
|
|
13
24
|
isDraggable: boolean;
|
|
14
25
|
private _disabled;
|
|
26
|
+
/**
|
|
27
|
+
* 是否禁用拖拽
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
15
30
|
set disabled(isDisabled: boolean);
|
|
16
31
|
get disabled(): boolean;
|
|
17
32
|
dragRef: DragRef<T>;
|
|
@@ -7,16 +7,52 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
declare const _MixinBase: Constructor<ThyUnsubscribe> & typeof MixinBase;
|
|
8
8
|
export declare class ThyDropContainerDirective<T = any> extends _MixinBase implements OnInit, AfterContentInit, IThyDropContainerDirective {
|
|
9
9
|
private ngZone;
|
|
10
|
+
/**
|
|
11
|
+
* 元数据
|
|
12
|
+
* @type any[]
|
|
13
|
+
*/
|
|
10
14
|
set dragContainer(data: T[]);
|
|
15
|
+
/**
|
|
16
|
+
* 元数据
|
|
17
|
+
* @type any[]
|
|
18
|
+
*/
|
|
11
19
|
data: T[];
|
|
20
|
+
/**
|
|
21
|
+
* 是否禁用拖拽
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
12
24
|
disabled: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 拖拽之前的回调,函数返回 false 则阻止拖拽
|
|
27
|
+
*/
|
|
13
28
|
beforeStart: (e: ThyDragStartEvent<T>) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* 拖拽时回调,函数返回 false 则阻止移入
|
|
31
|
+
*/
|
|
14
32
|
beforeOver: (e: ThyDragOverEvent<T>) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 拖放到元素时回调,函数返回 false 则阻止放置
|
|
35
|
+
*/
|
|
15
36
|
beforeDrop: (e: ThyDragDropEvent<T>) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* 开始拖拽时调用
|
|
39
|
+
*/
|
|
16
40
|
started: EventEmitter<ThyDragStartEvent<ThyDragDirective<any>>>;
|
|
41
|
+
/**
|
|
42
|
+
* dragend 触发时调用
|
|
43
|
+
*/
|
|
17
44
|
ended: EventEmitter<ThyDragEndEvent<ThyDragDirective<any>>>;
|
|
45
|
+
/**
|
|
46
|
+
* dragover 触发时调用
|
|
47
|
+
*/
|
|
18
48
|
overed: EventEmitter<ThyDragOverEvent<ThyDragDirective<any>>>;
|
|
49
|
+
/**
|
|
50
|
+
* drop 触发时调用
|
|
51
|
+
*/
|
|
19
52
|
dropped: EventEmitter<ThyDragDropEvent<ThyDragDirective<any>>>;
|
|
53
|
+
/**
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
20
56
|
draggables: QueryList<ThyDragDirective>;
|
|
21
57
|
constructor(ngZone: NgZone);
|
|
22
58
|
ngOnInit(): void;
|
package/drag-drop/examples/{basic/basic.component.scss → tree-drag/tree-drag.component.scss}
RENAMED
|
File without changes
|
|
@@ -2,6 +2,9 @@ import { Directive, ElementRef, HostBinding, Optional } from '@angular/core';
|
|
|
2
2
|
import { ThyDragDirective } from './drag.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./drag.directive";
|
|
5
|
+
/**
|
|
6
|
+
* 自定义拖拽时可经过,拖拽结束时可放置的区域内容
|
|
7
|
+
*/
|
|
5
8
|
export class ThyDragContentDirective {
|
|
6
9
|
constructor(element, drag) {
|
|
7
10
|
this.element = element;
|
|
@@ -24,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
24
27
|
type: HostBinding,
|
|
25
28
|
args: ['class.thy-drag-content']
|
|
26
29
|
}] } });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1jb250ZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kcmFnLWRyb3AvZHJhZy1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBUyxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFFcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBR2hDLFlBQW1CLE9BQWdDLEVBQWMsSUFBc0I7UUFBcEUsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFGWixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUd2RCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQzs7b0hBUFEsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFIbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUNBQW1DO2lCQUNoRDs7MEJBSXlELFFBQVE7NENBRnZCLFlBQVk7c0JBQWxELFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgSG9zdEJpbmRpbmcsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICog6Ieq5a6a5LmJ5ouW5ou95pe25Y+v57uP6L+H77yM5ouW5ou957uT5p2f5pe25Y+v5pS+572u55qE5Yy65Z+f5YaF5a65XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAndGh5LWRyYWctY29udGVudCxbdGh5RHJhZ0NvbnRlbnRdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaHlEcmFnQ29udGVudERpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktZHJhZy1jb250ZW50JykgY29udGVudENsYXNzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgQE9wdGlvbmFsKCkgZHJhZzogVGh5RHJhZ0RpcmVjdGl2ZSkge1xuICAgICAgICBpZiAoZHJhZykge1xuICAgICAgICAgICAgZHJhZy5kcmFnUmVmLndpdGhDb250ZW50RWxlbWVudCh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* 自定义可放置区域内容
|
|
5
|
+
*/
|
|
3
6
|
export class ThyDragDropService {
|
|
4
7
|
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* 用于拖动过程对 dragover 的元素设置相应的样式
|
|
10
|
+
* @type Map<Element, string>
|
|
11
|
+
*/
|
|
5
12
|
this.classMap = new Map();
|
|
6
13
|
}
|
|
7
14
|
}
|
|
@@ -11,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
11
18
|
type: Injectable,
|
|
12
19
|
args: [{ providedIn: 'root' }]
|
|
13
20
|
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJhZy1kcm9wL2RyYWctZHJvcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQWlCM0I7UUFMQTs7O1dBR0c7UUFDSSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDOUIsQ0FBQzs7K0dBakJQLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeURyYWdEaXJlY3RpdmUgfSBmcm9tICcuL2RyYWcuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRoeURyb3BQb3NpdGlvbiB9IGZyb20gJy4vZHJhZy1kcm9wLmNsYXNzJztcblxuLyoqXG4gKiDoh6rlrprkuYnlj6/mlL7nva7ljLrln5/lhoXlrrlcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaHlEcmFnRHJvcFNlcnZpY2U8VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIOW9k+WJjeaLluaLvemhue+8jGRyYWdFbmQg5ZCO6YeN572u5Li6IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aW91c0RyYWc6IFRoeURyYWdEaXJlY3RpdmU8VD47XG5cbiAgICAvKipcbiAgICAgKiDmi5bmi73nmoTml7blgJnvvIzpkojlr7kgZHJhZ092ZXIg55qE6IqC54K55pyJ5LiJ56eN5oOF5Ya177yM5Y2z5ouW5ou95Yiw6IqC54K55LmL5LiKIGJlZm9yZSDvvIzmi5bmi73liLDoioLngrnkuIogaW4g77yM5ouW5ou95Yiw6IqC54K55LmL5LiLIGFmdGVyXG4gICAgICogQHR5cGUgVGh5RHJvcFBvc2l0aW9uXG4gICAgICovXG4gICAgcHVibGljIGRyb3BQb3NpdGlvbjogVGh5RHJvcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICog55So5LqO5ouW5Yqo6L+H56iL5a+5IGRyYWdvdmVyIOeahOWFg+e0oOiuvue9ruebuOW6lOeahOagt+W8j1xuICAgICAqIEB0eXBlIE1hcDxFbGVtZW50LCBzdHJpbmc+XG4gICAgICovXG4gICAgcHVibGljIGNsYXNzTWFwID0gbmV3IE1hcDxFbGVtZW50LCBzdHJpbmc+KCk7XG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
|
|
@@ -3,6 +3,9 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
|
3
3
|
import { ThyDragDirective } from './drag.directive';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./drag.directive";
|
|
6
|
+
/**
|
|
7
|
+
* 自定义可拖拽区域内容
|
|
8
|
+
*/
|
|
6
9
|
export class ThyDragHandleDirective {
|
|
7
10
|
constructor(element, drag) {
|
|
8
11
|
this.element = element;
|
|
@@ -31,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
31
34
|
type: Input,
|
|
32
35
|
args: ['thyDisabled']
|
|
33
36
|
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1oYW5kbGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RyYWctZHJvcC9kcmFnLWhhbmRsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQVcvQixZQUFtQixPQUFnQyxFQUFjLElBQXNCO1FBQXBFLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBVjNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFXdEIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFaRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDOzttSEFUUSxzQkFBc0I7dUdBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQ0FBaUM7aUJBQzlDOzswQkFZeUQsUUFBUTs0Q0FQMUQsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IFRoeURyYWdEaXJlY3RpdmUgfSBmcm9tICcuL2RyYWcuZGlyZWN0aXZlJztcblxuLyoqXG4gKiDoh6rlrprkuYnlj6/mi5bmi73ljLrln5/lhoXlrrlcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICd0aHktZHJhZy1oYW5kbGUsW3RoeURyYWdIYW5kbGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaHlEcmFnSGFuZGxlRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KCd0aHlEaXNhYmxlZCcpXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBAT3B0aW9uYWwoKSBkcmFnOiBUaHlEcmFnRGlyZWN0aXZlKSB7XG4gICAgICAgIGlmIChkcmFnKSB7XG4gICAgICAgICAgICBkcmFnLmRyYWdSZWYud2l0aEhhbmRsZXModGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -8,6 +8,9 @@ import { THY_DROP_CONTAINER_DIRECTIVE } from './drop-container.class';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "./drag-drop.service";
|
|
10
10
|
const _MixinBase = mixinUnsubscribe(MixinBase);
|
|
11
|
+
/**
|
|
12
|
+
* 拖拽项
|
|
13
|
+
*/
|
|
11
14
|
export class ThyDragDirective extends _MixinBase {
|
|
12
15
|
constructor(document, container, ngZone, elementRef, service, renderer) {
|
|
13
16
|
super();
|
|
@@ -17,9 +20,17 @@ export class ThyDragDirective extends _MixinBase {
|
|
|
17
20
|
this._disabled = false;
|
|
18
21
|
this.dragRef = new DragRef(elementRef, this, container, service, document, ngZone, renderer);
|
|
19
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* 元数据
|
|
25
|
+
* @type any
|
|
26
|
+
*/
|
|
20
27
|
set dragData(data) {
|
|
21
28
|
this.data = data;
|
|
22
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* 是否禁用拖拽
|
|
32
|
+
* @default false
|
|
33
|
+
*/
|
|
23
34
|
set disabled(isDisabled) {
|
|
24
35
|
this._disabled = isDisabled;
|
|
25
36
|
this.isDraggable = !isDisabled;
|
|
@@ -63,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
63
74
|
type: Input,
|
|
64
75
|
args: ['thyDragDisabled']
|
|
65
76
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJhZy1kcm9wL2RyYWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUErQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsNEJBQTRCLEVBQThCLE1BQU0sd0JBQXdCLENBQUM7OztBQUVsRyxNQUFNLFVBQVUsR0FBbUQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0Y7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQTBCLFNBQVEsVUFBVTtJQW9DckQsWUFDc0IsUUFBYSxFQUMwQixTQUFxQyxFQUM5RixNQUFjLEVBQ04sVUFBbUMsRUFDM0MsT0FBOEIsRUFDOUIsUUFBbUI7UUFFbkIsS0FBSyxFQUFFLENBQUM7UUFOaUQsY0FBUyxHQUFULFNBQVMsQ0FBNEI7UUFFdEYsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUF4QmhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUEyQnRCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUksVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQTdDRDs7O09BR0c7SUFDSCxJQUNJLFFBQVEsQ0FBQyxJQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFZRDs7O09BR0c7SUFHSCxJQUFJLFFBQVEsQ0FBQyxVQUFtQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQWdCRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBbkRRLGdCQUFnQixrQkFxQ2IsUUFBUSxhQUNJLDRCQUE0QjtpR0F0QzNDLGdCQUFnQjtBQTBCekI7SUFEQyxZQUFZLEVBQUU7OztnREFJZDsyRkE3QlEsZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFOzswQkFzQ3BDLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7bUpBaENoRCxRQUFRO3NCQURYLEtBQUs7dUJBQUMsU0FBUztnQkFTTSxJQUFJO3NCQUF6QixLQUFLO3VCQUFDLGFBQWE7Z0JBRVcsV0FBVztzQkFBekMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBVXpCLFFBQVE7c0JBRlgsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE5nWm9uZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBJbmplY3QsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ1JlZiB9IGZyb20gJy4vZHJhZy1yZWYnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi9kcmFnLWRyb3Auc2VydmljZSc7XG5pbXBvcnQgeyBtaXhpblVuc3Vic2NyaWJlLCBNaXhpbkJhc2UsIENvbnN0cnVjdG9yLCBUaHlVbnN1YnNjcmliZSwgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRIWV9EUk9QX0NPTlRBSU5FUl9ESVJFQ1RJVkUsIElUaHlEcm9wQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wLWNvbnRhaW5lci5jbGFzcyc7XG5cbmNvbnN0IF9NaXhpbkJhc2U6IENvbnN0cnVjdG9yPFRoeVVuc3Vic2NyaWJlPiAmIHR5cGVvZiBNaXhpbkJhc2UgPSBtaXhpblVuc3Vic2NyaWJlKE1peGluQmFzZSk7XG5cbi8qKlxuICog5ouW5ou96aG5XG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ3RoeS1kcmFnLFt0aHlEcmFnXScgfSlcbmV4cG9ydCBjbGFzcyBUaHlEcmFnRGlyZWN0aXZlPFQgPSBhbnk+IGV4dGVuZHMgX01peGluQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICog5YWD5pWw5o2uXG4gICAgICogQHR5cGUgYW55XG4gICAgICovXG4gICAgQElucHV0KCd0aHlEcmFnJylcbiAgICBzZXQgZHJhZ0RhdGEoZGF0YTogVCkge1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWFg+aVsOaNrlxuICAgICAqIEB0eXBlIGFueVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RHJhZ0RhdGEnKSBkYXRhOiBUO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRyYWdnYWJsZScpIGlzRHJhZ2dhYmxlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKjmi5bmi71cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RHJhZ0Rpc2FibGVkJylcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgZGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgPSAhaXNEaXNhYmxlZDtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGRyYWdSZWY6IERyYWdSZWY8VD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChUSFlfRFJPUF9DT05UQUlORVJfRElSRUNUSVZFKSBwdWJsaWMgY29udGFpbmVyOiBJVGh5RHJvcENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHNlcnZpY2U6IFRoeURyYWdEcm9wU2VydmljZTxUPixcbiAgICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRyYWdSZWYgPSBuZXcgRHJhZ1JlZjxUPihlbGVtZW50UmVmLCB0aGlzLCBjb250YWluZXIsIHNlcnZpY2UsIGRvY3VtZW50LCBuZ1pvbmUsIHJlbmRlcmVyKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kcmFnUmVmLmRpc3Bvc2UoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -10,11 +10,27 @@ export class ThyDropContainerDirective extends _MixinBase {
|
|
|
10
10
|
constructor(ngZone) {
|
|
11
11
|
super();
|
|
12
12
|
this.ngZone = ngZone;
|
|
13
|
+
/**
|
|
14
|
+
* 开始拖拽时调用
|
|
15
|
+
*/
|
|
13
16
|
this.started = new EventEmitter();
|
|
17
|
+
/**
|
|
18
|
+
* dragend 触发时调用
|
|
19
|
+
*/
|
|
14
20
|
this.ended = new EventEmitter();
|
|
21
|
+
/**
|
|
22
|
+
* dragover 触发时调用
|
|
23
|
+
*/
|
|
15
24
|
this.overed = new EventEmitter();
|
|
25
|
+
/**
|
|
26
|
+
* drop 触发时调用
|
|
27
|
+
*/
|
|
16
28
|
this.dropped = new EventEmitter();
|
|
17
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* 元数据
|
|
32
|
+
* @type any[]
|
|
33
|
+
*/
|
|
18
34
|
set dragContainer(data) {
|
|
19
35
|
this.data = data;
|
|
20
36
|
}
|
|
@@ -101,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
101
117
|
descendants: false
|
|
102
118
|
}]
|
|
103
119
|
}] } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1jb250YWluZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RyYWctZHJvcC9kcm9wLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQW9CLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBYyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBK0IsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLDRCQUE0QixFQUE4QixNQUFNLHdCQUF3QixDQUFDOztBQUVsRyxNQUFNLFVBQVUsR0FBbUQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFXL0YsTUFBTSxPQUFPLHlCQUFtQyxTQUFRLFVBQVU7SUFpRTlELFlBQW9CLE1BQWM7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFEUSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBNUJsQzs7V0FFRztRQUN1QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXVDLENBQUM7UUFFNUY7O1dBRUc7UUFDcUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBRXRGOztXQUVHO1FBQ3NCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBc0MsQ0FBQztRQUV6Rjs7V0FFRztRQUN1QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXNDLENBQUM7SUFZM0YsQ0FBQztJQWxFRDs7O09BR0c7SUFD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O2dCQVNNLElBQUk7c0JBQWxDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQU1NLFFBQVE7c0JBQTFDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUtKLFdBQVc7c0JBQXZDLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUtDLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUtFLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUtBLE9BQU87c0JBQWhDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUtBLEtBQUs7c0JBQTVCLE1BQU07dUJBQUMsY0FBYztnQkFLRyxNQUFNO3NCQUE5QixNQUFNO3VCQUFDLGVBQWU7Z0JBS0csT0FBTztzQkFBaEMsTUFBTTt1QkFBQyxnQkFBZ0I7Z0JBUXhCLFVBQVU7c0JBSFQsZUFBZTt1QkFBQyxnQkFBZ0IsRUFBRTt3QkFDL0IsV0FBVyxFQUFFLEtBQUs7cUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBEaXJlY3RpdmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQWZ0ZXJDb250ZW50SW5pdCwgTmdab25lLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5RHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIGRlZmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtaXhpblVuc3Vic2NyaWJlLCBNaXhpbkJhc2UsIENvbnN0cnVjdG9yLCBUaHlVbnN1YnNjcmliZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHN0YXJ0V2l0aCwgdGFrZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BFdmVudCwgVGh5RHJhZ1N0YXJ0RXZlbnQsIFRoeURyYWdFbmRFdmVudCwgVGh5RHJhZ092ZXJFdmVudCB9IGZyb20gJy4vZHJhZy1kcm9wLmNsYXNzJztcbmltcG9ydCB7IFRIWV9EUk9QX0NPTlRBSU5FUl9ESVJFQ1RJVkUsIElUaHlEcm9wQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wLWNvbnRhaW5lci5jbGFzcyc7XG5cbmNvbnN0IF9NaXhpbkJhc2U6IENvbnN0cnVjdG9yPFRoeVVuc3Vic2NyaWJlPiAmIHR5cGVvZiBNaXhpbkJhc2UgPSBtaXhpblVuc3Vic2NyaWJlKE1peGluQmFzZSk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAndGh5LWRyb3AtY29udGFpbmVyLFt0aHlEcm9wQ29udGFpbmVyXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIWV9EUk9QX0NPTlRBSU5FUl9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGh5RHJvcENvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlEcm9wQ29udGFpbmVyRGlyZWN0aXZlPFQgPSBhbnk+IGV4dGVuZHMgX01peGluQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgSVRoeURyb3BDb250YWluZXJEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIOWFg+aVsOaNrlxuICAgICAqIEB0eXBlIGFueVtdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlEcm9wQ29udGFpbmVyJylcbiAgICBzZXQgZHJhZ0NvbnRhaW5lcihkYXRhOiBUW10pIHtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlhYPmlbDmja5cbiAgICAgKiBAdHlwZSBhbnlbXVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RHJvcENvbnRhaW5lckRhdGEnKSBkYXRhOiBUW107XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKjmi5bmi71cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RHJvcENvbnRhaW5lckRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmi5bmi73kuYvliY3nmoTlm57osIPvvIzlh73mlbDov5Tlm54gZmFsc2Ug5YiZ6Zi75q2i5ouW5ou9XG4gICAgICovXG4gICAgQElucHV0KCd0aHlCZWZvcmVEcmFnU3RhcnQnKSBiZWZvcmVTdGFydDogKGU6IFRoeURyYWdTdGFydEV2ZW50PFQ+KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5ouW5ou95pe25Zue6LCD77yM5Ye95pWw6L+U5ZueIGZhbHNlIOWImemYu+atouenu+WFpVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5QmVmb3JlRHJhZ092ZXInKSBiZWZvcmVPdmVyOiAoZTogVGh5RHJhZ092ZXJFdmVudDxUPikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaLluaUvuWIsOWFg+e0oOaXtuWbnuiwg++8jOWHveaVsOi/lOWbniBmYWxzZSDliJnpmLvmraLmlL7nva5cbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeUJlZm9yZURyYWdEcm9wJykgYmVmb3JlRHJvcDogKGU6IFRoeURyYWdEcm9wRXZlbnQ8VD4pID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDlvIDlp4vmi5bmi73ml7bosIPnlKhcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlEcmFnU3RhcnRlZCcpIHN0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeURyYWdTdGFydEV2ZW50PFRoeURyYWdEaXJlY3RpdmU+PigpO1xuXG4gICAgLyoqXG4gICAgICogZHJhZ2VuZCDop6blj5Hml7bosIPnlKhcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlEcmFnRW5kZWQnKSBlbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5RHJhZ0VuZEV2ZW50PFRoeURyYWdEaXJlY3RpdmU+PigpO1xuXG4gICAgLyoqXG4gICAgICogZHJhZ292ZXIg6Kem5Y+R5pe26LCD55SoXG4gICAgICovXG4gICAgQE91dHB1dCgndGh5RHJhZ092ZXJlZCcpIG92ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5RHJhZ092ZXJFdmVudDxUaHlEcmFnRGlyZWN0aXZlPj4oKTtcblxuICAgIC8qKlxuICAgICAqIGRyb3Ag6Kem5Y+R5pe26LCD55SoXG4gICAgICovXG4gICAgQE91dHB1dCgndGh5RHJhZ0Ryb3BwZWQnKSBkcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlEcmFnRHJvcEV2ZW50PFRoeURyYWdEaXJlY3RpdmU+PigpO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlEcmFnRGlyZWN0aXZlLCB7XG4gICAgICAgIGRlc2NlbmRhbnRzOiBmYWxzZVxuICAgIH0pXG4gICAgZHJhZ2dhYmxlczogUXVlcnlMaXN0PFRoeURyYWdEaXJlY3RpdmU+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGVzLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dhYmxlQ2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRyYWdnYWJsZUNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMucmVzZXREcmFnZ2FibGVDaGFuZ2VzKGl0ZW0gPT4gaXRlbS5kcmFnUmVmLnN0YXJ0ZWQpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0ZWQuZW1pdChldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0RHJhZ2dhYmxlQ2hhbmdlcyhpdGVtID0+IGl0ZW0uZHJhZ1JlZi5lbmRlZCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5kZWQuZW1pdChldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0RHJhZ2dhYmxlQ2hhbmdlcyhpdGVtID0+IGl0ZW0uZHJhZ1JlZi5vdmVyZWQpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLm92ZXJlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzZXREcmFnZ2FibGVDaGFuZ2VzKGl0ZW0gPT4gaXRlbS5kcmFnUmVmLmRyb3BwZWQpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwZWQuZW1pdChldmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXREcmFnZ2FibGVDaGFuZ2VzKGZuOiAoaXRlbTogVGh5RHJhZ0RpcmVjdGl2ZSkgPT4gT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2FibGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlKC4uLnRoaXMuZHJhZ2dhYmxlcy5tYXAoZm4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nWm9uZS5vblN0YWJsZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmVzZXREcmFnZ2FibGVDaGFuZ2VzLmJpbmQodGhpcywgZm4pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSkucGlwZSh0YWtlVW50aWwobWVyZ2UodGhpcy5uZ1Vuc3Vic2NyaWJlJCwgdGhpcy5kcmFnZ2FibGVzLmNoYW5nZXMpKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -129,10 +129,7 @@ export class ThyImagePreviewComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
129
129
|
get previewImage() {
|
|
130
130
|
const image = this.images[this.previewIndex];
|
|
131
131
|
if (image.size) {
|
|
132
|
-
|
|
133
|
-
...image,
|
|
134
|
-
size: isNumber(image.size) ? humanizeBytes(image.size) : image.size
|
|
135
|
-
};
|
|
132
|
+
image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;
|
|
136
133
|
}
|
|
137
134
|
return image;
|
|
138
135
|
}
|
|
@@ -421,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
421
418
|
type: ViewChild,
|
|
422
419
|
args: ['imagePreviewWrapper', { static: true }]
|
|
423
420
|
}] } });
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1hZ2UvcHJldmlldy9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9pbWFnZS9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQyxNQUFNLGVBQWUsR0FBRztJQUNwQixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ1AsQ0FBQztBQUNGLE1BQU0sY0FBYyxHQUFH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QUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTywyQkFBMkI7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFdBQVcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxlQUFlLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQztJQUNwRyxDQUFDO0lBRU8sa0NBQWtDO1FBQ3RDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxlQUFlLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDckcsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7cUhBdFpRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGtjQzlDckMsb3FIQTBGQTsyRkQ1Q2Esd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNJLG1CQUFtQixZQUNuQixpQkFBaUIsbUJBRVYsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQixrQ0FBa0MsRUFBRSxZQUFZO3FCQUNuRDtvUUF1SHVDLFFBQVE7c0JBQS9DLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDYyxtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRlcm5hbEltYWdlSW5mbywgVGh5SW1hZ2VJbmZvLCBUaHlJbWFnZVByZXZpZXdNb2RlLCBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb24sIFRoeUltYWdlUHJldmlld09wdGlvbnMgfSBmcm9tICcuLi9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBNaXhpbkJhc2UsIG1peGluVW5zdWJzY3JpYmUgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGh5RGlhbG9nIH0gZnJvbSAnbmd4LXRldGh5cy9kaWFsb2cnO1xuaW1wb3J0IHsgZ2V0Q2xpZW50U2l6ZSwgZ2V0Rml0Q29udGVudFBvc2l0aW9uLCBnZXRPZmZzZXQsIGh1bWFuaXplQnl0ZXMsIGlzTnVtYmVyLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBUaHlGdWxsc2NyZWVuIH0gZnJvbSAnbmd4LXRldGh5cy9mdWxsc2NyZWVuJztcbmltcG9ydCB7IFRoeUNvcHlFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvY29weSc7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmZXRjaEltYWdlQmxvYiB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgaW5pdGlhbFBvc2l0aW9uID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxufTtcbmNvbnN0IElNQUdFX01BWF9aT09NID0gMztcbmNvbnN0IElNQUdFX01JTl9aT09NID0gMC4xO1xuY29uc3QgSE9SSVpPTlRBTF9TUEFDRSA9IDEwMCAqIDI7IC8vIGxlZnQ6IDEwMHB4OyByaWdodDogMTAwcHhcbmNvbnN0IFZFUlRJQ0FMX1NQQUNFID0gOTYgKyAxMDY7IC8vIHRvcDogOTZweDsgYm90dG9tOiAxMDZweFxuXG4vKipcbiAqIOWbvueJh+mihOiniOe7hOS7tlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1pbWFnZS1wcmV2aWV3JyxcbiAgICBleHBvcnRBczogJ3RoeUltYWdlUHJldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1pbWFnZS1wcmV2aWV3LXdyYXAnLFxuICAgICAgICAnW2NsYXNzLnRoeS1pbWFnZS1wcmV2aWV3LW1vdmluZ10nOiAnaXNEcmFnZ2luZydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoeUltYWdlUHJldmlld0NvbXBvbmVudCBleHRlbmRzIG1peGluVW5zdWJzY3JpYmUoTWl4aW5CYXNlKSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBpbWFnZXM6IEludGVybmFsSW1hZ2VJbmZvW10gPSBbXTtcbiAgICBwcmV2aWV3SW5kZXg6IG51bWJlciA9IDA7XG4gICAgcHJldmlld0NvbmZpZzogVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucztcbiAgICBwcmV2aWV3SW1hZ2VUcmFuc2Zvcm0gPSAnJztcbiAgICBwcmV2aWV3SW1hZ2VXcmFwcGVyVHJhbnNmb3JtID0gJyc7XG4gICAgem9vbURpc2FibGVkID0gZmFsc2U7XG4gICAgem9vbTogbnVtYmVyID0gMTtcbiAgICBwb3NpdGlvbiA9IHsgLi4uaW5pdGlhbFBvc2l0aW9uIH07XG4gICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIGlzTG9hZGluZ0RvbmUgPSBmYWxzZTtcbiAgICBpc0Z1bGxTY3JlZW4gPSBmYWxzZTtcbiAgICBpc0luc2lkZVNjcmVlbiA9IHRydWU7XG4gICAgY3VycmVudEltYWdlTW9kZTogVGh5SW1hZ2VQcmV2aWV3TW9kZSA9ICdvcmlnaW5hbC1zY2FsZSc7XG4gICAgcHJldmlld09wZXJhdGlvbnM6IFRoeUltYWdlUHJldmlld09wZXJhdGlvbltdO1xuICAgIGRlZmF1bHRQcmV2aWV3T3BlcmF0aW9uczogVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICd6b29tLW91dCcsXG4gICAgICAgICAgICBuYW1lOiAn57yp5bCPJyxcbiAgICAgICAgICAgIGFjdGlvbjogKGltYWdlOiBUaHlJbWFnZUluZm8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnpvb21PdXQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnem9vbS1vdXQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICd6b29tLWluJyxcbiAgICAgICAgICAgIG5hbWU6ICfmlL7lpKcnLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbUluKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3pvb20taW4nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdvbmUtdG8tb25lJyxcbiAgICAgICAgICAgIG5hbWU6ICfljp/lp4vmr5TkvosnLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0T3JpZ2luYWxTaXplKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ29yaWdpbmFsLXNjYWxlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnbWF4LXZpZXcnLFxuICAgICAgICAgICAgbmFtZTogJ+mAguW6lOWxj+W5lScsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpdFNjcmVlbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdmaXQtc2NyZWVuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnZXhwYW5kLWFycm93cycsXG4gICAgICAgICAgICBuYW1lOiAn5YWo5bGP5pi+56S6JyxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdmdWxsLXNjcmVlbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3JvdGF0ZS1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiAn5peL6L2sJyxcbiAgICAgICAgICAgIGFjdGlvbjogKGltYWdlOiBUaHlJbWFnZUluZm8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdGF0ZVJpZ2h0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3JvdGF0ZS1yaWdodCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ2Rvd25sb2FkJyxcbiAgICAgICAgICAgIG5hbWU6ICfkuIvovb0nLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoaW1hZ2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3ByZXZpZXcnLFxuICAgICAgICAgICAgbmFtZTogJ+afpeeci+WOn+WbvicsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdPcmlnaW5hbCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICd2aWV3LW9yaWdpbmFsJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgbmFtZTogJ+WkjeWItumTvuaOpScsXG4gICAgICAgICAgICB0eXBlOiAnY29weUxpbmsnXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHByaXZhdGUgcm90YXRlOiBudW1iZXI7XG5cbiAgICBnZXQgcHJldmlld0ltYWdlKCk6IEludGVybmFsSW1hZ2VJbmZvIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLmltYWdlc1t0aGlzLnByZXZpZXdJbmRleF07XG4gICAgICAgIGlmIChpbWFnZS5zaXplKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmltYWdlLFxuICAgICAgICAgICAgICAgIHNpemU6IGlzTnVtYmVyKGltYWdlLnNpemUpID8gaHVtYW5pemVCeXRlcyhpbWFnZS5zaXplKSA6IGltYWdlLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltYWdlO1xuICAgIH1cblxuICAgIGdldCBwcmV2aWV3SW1hZ2VPcmlnaW5TcmMoKSB7XG4gICAgICAgIGxldCBpbWFnZVNyYyA9IHRoaXMucHJldmlld0ltYWdlLm9yaWdpbj8uc3JjIHx8IHRoaXMucHJldmlld0ltYWdlLnNyYztcbiAgICAgICAgaWYgKGltYWdlU3JjLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvJyArIGltYWdlU3JjLnNwbGl0KCcuLycpWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbWFnZVNyYztcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdFpvb20oKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlld0NvbmZpZz8uem9vbSAmJiB0aGlzLnByZXZpZXdDb25maWc/Lnpvb20gPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2aWV3Q29uZmlnLnpvb20gPj0gSU1BR0VfTUFYX1pPT01cbiAgICAgICAgICAgICAgICA/IElNQUdFX01BWF9aT09NXG4gICAgICAgICAgICAgICAgOiB0aGlzLnByZXZpZXdDb25maWcuem9vbSA8PSBJTUFHRV9NSU5fWk9PTVxuICAgICAgICAgICAgICAgID8gSU1BR0VfTUlOX1pPT01cbiAgICAgICAgICAgICAgICA6IHRoaXMucHJldmlld0NvbmZpZy56b29tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1nUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlUmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdpbWFnZVByZXZpZXdXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgaW1hZ2VQcmV2aWV3V3JhcHBlciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB0aHlEaWFsb2c6IFRoeURpYWxvZyxcbiAgICAgICAgcHVibGljIHRoeUZ1bGxzY3JlZW46IFRoeUZ1bGxzY3JlZW4sXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBUaHlOb3RpZnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFByZXZpZXcoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmlzSW5zaWRlU2NyZWVuICYmIHRoaXMuaW1hZ2VQcmV2aWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldmlld0NvbmZpZz8uZGlzYWJsZUNsb3NlXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+ICF0aGlzLmlzRnVsbFNjcmVlbiAmJiB0aGlzLnRoeURpYWxvZy5jbG9zZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5pbWFnZVByZXZpZXdXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gIXRoaXMuaXNJbnNpZGVTY3JlZW4gJiYgdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0T3JpZ2luYWxTaXplKCkge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuY3VycmVudEltYWdlTW9kZSA9ICdmaXQtc2NyZWVuJztcbiAgICAgICAgdGhpcy56b29tID0gMTtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVJbnNpZGVTY3JlZW4oKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHNldEZpdFNjcmVlbigpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmlzSW5zaWRlU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2UoKTtcbiAgICB9XG5cbiAgICB1c2VEZWZhdWx0Wm9vbVVwZGF0ZShpc1VwZGF0ZUltYWdlV3JhcHBlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnpvb20gPSB0aGlzLmRlZmF1bHRab29tO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICBpZiAoaXNVcGRhdGVJbWFnZVdyYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICB1c2VDYWxjdWxhdGVab29tVXBkYXRlKGlzVXBkYXRlSW1hZ2VXcmFwcGVyPzogYm9vbGVhbikge1xuICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5zcmMgPSB0aGlzLnByZXZpZXdJbWFnZS5zcmM7XG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoOiBvZmZzZXRXaWR0aCwgaGVpZ2h0OiBvZmZzZXRIZWlnaHQgfSA9IGdldENsaWVudFNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyV2lkdGggPSBvZmZzZXRXaWR0aCAtIEhPUklaT05UQUxfU1BBQ0U7XG4gICAgICAgICAgICBjb25zdCBpbm5lckhlaWdodCA9IG9mZnNldEhlaWdodCAtIFZFUlRJQ0FMX1NQQUNFO1xuICAgICAgICAgICAgY29uc3QgeyBuYXR1cmFsV2lkdGgsIG5hdHVyYWxIZWlnaHQgfSA9IGltZztcbiAgICAgICAgICAgIGNvbnN0IHhSYXRpbyA9IGlubmVyV2lkdGggLyBuYXR1cmFsV2lkdGg7XG4gICAgICAgICAgICBjb25zdCB5UmF0aW8gPSBpbm5lckhlaWdodCAvIG5hdHVyYWxIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB6b29tID0gTWF0aC5taW4oeFJhdGlvLCB5UmF0aW8pO1xuICAgICAgICAgICAgaWYgKHpvb20gPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b29tID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b29tID0gem9vbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgaWYgKGlzVXBkYXRlSW1hZ2VXcmFwcGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VXcmFwcGVyVHJhbnNmb3JtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdXBkYXRlUHJldmlld0ltYWdlKCkge1xuICAgICAgICB0aGlzLnJlc29sdmVQcmV2aWV3SW1hZ2UoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgLy8gZXJyb3JcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGltYWdlIHNpemVcbiAgICAgICAgICAgIGlmICghdGhpcy5wcmV2aWV3SW1hZ2Uuc2l6ZSAmJiB0aGlzLnByZXZpZXdJbWFnZS5ibG9iKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2Uuc2l6ZSA9IGh1bWFuaXplQnl0ZXModGhpcy5wcmV2aWV3SW1hZ2UuYmxvYi5zaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRab29tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VEZWZhdWx0Wm9vbVVwZGF0ZSh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VDYWxjdWxhdGVab29tVXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc29sdmVQcmV2aWV3SW1hZ2UoKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxCb29sZWFuPihzdWJzY3JpYmVyID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpZXdJbWFnZS5zcmMuc3RhcnRzV2l0aCgnYmxvYjonKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodGhpcy5wcmV2aWV3SW1hZ2Uuc3JjKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpZXdJbWFnZS5vYmplY3RVUkwgfHwgIXRoaXMucHJldmlld0NvbmZpZy5yZXNvbHZlU2l6ZSkge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZldGNoSW1hZ2VCbG9iKHRoaXMucHJldmlld0ltYWdlLnNyYykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICBibG9iID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybENyZWF0b3IgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmplY3RVUkwgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwob2JqZWN0VVJMKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLmJsb2IgPSBibG9iO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdFByZXZpZXcoKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJldmlld0NvbmZpZz8ub3BlcmF0aW9ucykgJiYgdGhpcy5wcmV2aWV3Q29uZmlnPy5vcGVyYXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3T3BlcmF0aW9ucyA9IHRoaXMuZGVmYXVsdFByZXZpZXdPcGVyYXRpb25zLmZpbHRlcihpdGVtID0+IHRoaXMucHJldmlld0NvbmZpZy5vcGVyYXRpb25zLmluY2x1ZGVzKGl0ZW0udHlwZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3T3BlcmF0aW9ucyA9IHRoaXMuZGVmYXVsdFByZXZpZXdPcGVyYXRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm90YXRlID0gdGhpcy5wcmV2aWV3Q29uZmlnPy5yb3RhdGUgPz8gMDtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2UoKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZChpbWFnZTogVGh5SW1hZ2VJbmZvKSB7XG4gICAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1nLnNldEF0dHJpYnV0ZSgnY3Jvc3NPcmlnaW4nLCAnQW5vbnltb3VzJyk7XG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgICBsZXQgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7XG4gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICBsZXQgdXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2VzL3BuZycpO1xuICAgICAgICAgICAgbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnY2xpY2snKTtcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSBpbWFnZS5uYW1lIHx8ICdkZWZhdWx0LnBuZyc7XG4gICAgICAgICAgICBhLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICBhLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBpbWcub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgYS5kb3dubG9hZCA9IGltYWdlLm5hbWUgfHwgJ2RlZmF1bHQucG5nJztcbiAgICAgICAgICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICAgICAgICBhLmhyZWYgPSBpbWFnZS5vcmlnaW4/LnNyYyB8fCBpbWFnZS5zcmM7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnY2xpY2snKTtcbiAgICAgICAgICAgIGEuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5zcmMgPSBpbWFnZS5vcmlnaW4/LnNyYyB8fCBpbWFnZS5zcmM7XG4gICAgfVxuXG4gICAgem9vbUluKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy56b29tIDwgSU1BR0VfTUFYX1pPT00pIHtcbiAgICAgICAgICAgIHRoaXMuem9vbSA9IE1hdGgubWluKHRoaXMuem9vbSArIDAuMSwgSU1BR0VfTUFYX1pPT00pO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVJbnNpZGVTY3JlZW4oKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHpvb21PdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnpvb20gPiBJTUFHRV9NSU5fWk9PTSkge1xuICAgICAgICAgICAgdGhpcy56b29tID0gTWF0aC5tYXgodGhpcy56b29tIC0gMC4xLCBJTUFHRV9NSU5fWk9PTSk7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUluc2lkZVNjcmVlbigpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB7IC4uLmluaXRpYWxQb3NpdGlvbiB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCkge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAqIHRoaXMuem9vbTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAqIHRoaXMuem9vbTtcbiAgICAgICAgY29uc3QgeyB3aWR0aDogY2xpZW50V2lkdGgsIGhlaWdodDogY2xpZW50SGVpZ2h0IH0gPSBnZXRDbGllbnRTaXplKCk7XG4gICAgICAgIGlmICh3aWR0aCA+PSBjbGllbnRXaWR0aCB8fCBoZWlnaHQgPj0gY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5zaWRlU2NyZWVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5zaWRlU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZpZXdPcmlnaW5hbCgpIHtcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5wcmV2aWV3SW1hZ2U/Lm9yaWdpbj8uc3JjIHx8IHRoaXMucHJldmlld0ltYWdlLnNyYywgJ19ibGFuaycpO1xuICAgIH1cblxuICAgIHJvdGF0ZVJpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdGF0ZSArPSA5MDtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICB9XG5cbiAgICBmdWxsU2NyZWVuKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRoeS1pbWFnZS1wcmV2aWV3Jyk7XG4gICAgICAgIHRoaXMuaXNGdWxsU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZnVsbHNjcmVlblJlZiA9IHRoaXMudGh5RnVsbHNjcmVlbi5sYXVuY2goe1xuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgICBmdWxsc2NyZWVuUmVmLmFmdGVyRXhpdGVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNGdWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29weUxpbmsoZXZlbnQ6IFRoeUNvcHlFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uuc3VjY2Vzcygn5aSN5Yi25Zu+54mH5Zyw5Z2A5oiQ5YqfJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuZXJyb3IoJ+WkjeWItuWbvueJh+WcsOWdgOWksei0pScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlld0luZGV4ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW5kZXgtLTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdJbmRleCA8IHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0luZGV4Kys7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmFnUmVsZWFzZWQoKSB7XG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAqIHRoaXMuem9vbTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAqIHRoaXMuem9vbTtcbiAgICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGdldE9mZnNldCh0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQsIHdpbmRvdyk7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGNsaWVudFdpZHRoLCBoZWlnaHQ6IGNsaWVudEhlaWdodCB9ID0gZ2V0Q2xpZW50U2l6ZSgpO1xuICAgICAgICBjb25zdCBpc1JvdGF0ZSA9IHRoaXMucm90YXRlICUgMTgwICE9PSAwO1xuICAgICAgICBjb25zdCBmaXRDb250ZW50UGFyYW1zID0ge1xuICAgICAgICAgICAgd2lkdGg6IGlzUm90YXRlID8gaGVpZ2h0IDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGlzUm90YXRlID8gd2lkdGggOiBoZWlnaHQsXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgICAgICAgICBjbGllbnRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZml0Q29udGVudFBvcyA9IGdldEZpdENvbnRlbnRQb3NpdGlvbihmaXRDb250ZW50UGFyYW1zKTtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChmaXRDb250ZW50UG9zLngpIHx8ICFpc1VuZGVmaW5lZE9yTnVsbChmaXRDb250ZW50UG9zLnkpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi50aGlzLnBvc2l0aW9uLCAuLi5maXRDb250ZW50UG9zIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZU1vZGUgPSAnb3JpZ2luYWwtc2NhbGUnO1xuICAgICAgICB0aGlzLnJvdGF0ZSA9IHRoaXMucHJldmlld0NvbmZpZz8ucm90YXRlID8/IDA7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSB7IC4uLmluaXRpYWxQb3NpdGlvbiB9O1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0ltYWdlVHJhbnNmb3JtID0gYHNjYWxlM2QoJHt0aGlzLnpvb219LCAke3RoaXMuem9vbX0sIDEpIHJvdGF0ZSgke3RoaXMucm90YXRlfWRlZylgO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2VXcmFwcGVyVHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7dGhpcy5wb3NpdGlvbi54fXB4LCAke3RoaXMucG9zaXRpb24ueX1weCwgMClgO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlld1wiIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1mdWxsc2NyZWVuXT1cImlzRnVsbFNjcmVlblwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaGVhZGVyIHBsLTEwIHByLThcIiAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaGVhZGVyLWluZm9cIj5cbiAgICAgIDxwIGNsYXNzPVwidGh5LWltYWdlLW5hbWUgdGV4dC10cnVuY2F0ZVwiIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0ltYWdlPy5uYW1lPy5sZW5ndGggPCAzMlwiIFt0aHlUb29sdGlwXT1cInByZXZpZXdJbWFnZT8ubmFtZVwiPlxuICAgICAgICB7eyBwcmV2aWV3SW1hZ2U/Lm5hbWUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWltYWdlLXNpemVcIj4ge3sgcHJldmlld0ltYWdlPy5zaXplIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxhIHRoeUFjdGlvbiB0aHlJY29uPVwiY2xvc2VcIiB0aHlUb29sdGlwPVwi6YCA5Ye66aKE6KeIXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJ0aHlEaWFsb2cuY2xvc2UoKVwiPjwvYT5cbiAgPC9kaXY+XG4gIDxhXG4gICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1leGl0LWZ1bGxzY3JlZW5cIlxuICAgICpuZ0lmPVwiaXNGdWxsU2NyZWVuXCJcbiAgICB0aHlBY3Rpb25cbiAgICB0aHlJY29uPVwiY2xvc2VcIlxuICAgIHRoeVRvb2x0aXA9XCLpgIDlh7rpooTop4hcIlxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgIChjbGljayk9XCJ0aHlGdWxsc2NyZWVuLmV4aXQoKVwiXG4gICAgdGh5VG9vbHRpcD1cIumAgOWHuuWFqOWxj1wiXG4gID48L2E+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWltZy13cmFwcGVyXCJcbiAgICAjaW1hZ2VQcmV2aWV3V3JhcHBlclxuICAgIGNka0RyYWdcbiAgICBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctaW5zaWRlXT1cImlzSW5zaWRlU2NyZWVuXCJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cInByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm1cIlxuICAgIFtjZGtEcmFnRnJlZURyYWdQb3NpdGlvbl09XCJwb3NpdGlvblwiXG4gICAgKGNka0RyYWdSZWxlYXNlZCk9XCJkcmFnUmVsZWFzZWQoKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZXM7IGluZGV4IGFzIGltYWdlSW5kZXhcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgI2ltZ1JlZlxuICAgICAgICAqbmdJZj1cInByZXZpZXdJbmRleCA9PT0gaW1hZ2VJbmRleCAmJiBpc0xvYWRpbmdEb25lXCJcbiAgICAgICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1pbWdcIlxuICAgICAgICBbc3JjXT1cImltYWdlLm9iamVjdFVSTCB8fCBpbWFnZS5zcmNcIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInByZXZpZXdJbWFnZVRyYW5zZm9ybVwiXG4gICAgICAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDx0aHktbG9hZGluZyBbdGh5RG9uZV09XCJpc0xvYWRpbmdEb25lXCI+PC90aHktbG9hZGluZz5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltYWdlcy5sZW5ndGggPiAxICYmICFpc0Z1bGxTY3JlZW5cIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1sZWZ0XCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgdGh5VG9vbHRpcD1cIuS4iuS4gOW8oFwiXG4gICAgICBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctc3dpdGNoLWxlZnQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4IDw9IDBcIlxuICAgICAgKGNsaWNrKT1cInByZXYoKVwiXG4gICAgPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdC1ib2xkXCI+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1yaWdodFwiXG4gICAgICB0aHlUb29sdGlwPVwi5LiL5LiA5bygXCJcbiAgICAgIFt0aHlUb29sdGlwRGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIFtjbGFzcy50aHktaW1hZ2UtcHJldmlldy1zd2l0Y2gtcmlnaHQtZGlzYWJsZWRdPVwicHJldmlld0luZGV4ID49IGltYWdlcy5sZW5ndGggLSAxXCJcbiAgICAgIChjbGljayk9XCJuZXh0KClcIlxuICAgID5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXJpZ2h0LWJvbGRcIj4gPC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDx0aHktYWN0aW9ucyB0aHlTaXplPVwieHNcIiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LW9wZXJhdGlvbnMgcHktMyBweC00XCIgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByZXZpZXdPcGVyYXRpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIiFbJ29yaWdpbmFsLXNjYWxlJywgJ2ZpdC1zY3JlZW4nLCAnY29weUxpbmsnXS5pbmNsdWRlcyhvcHRpb24udHlwZSkgfHwgY3VycmVudEltYWdlTW9kZSA9PT0gb3B0aW9uLnR5cGVcIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgIFt0aHlBY3Rpb25JY29uXT1cIm9wdGlvbi5pY29uXCJcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICBbdGh5VG9vbHRpcE9mZnNldF09XCIxM1wiXG4gICAgICAgIChjbGljayk9XCJvcHRpb24uYWN0aW9uKHByZXZpZXdJbWFnZSlcIlxuICAgICAgPjwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXItMlwiICpuZ0lmPVwib3B0aW9uPy50eXBlID09PSAnem9vbS1vdXQnXCI+IHt7ICh6b29tICogMTAwKS50b0ZpeGVkKDApICsgJyUnIH19IDwvc3Bhbj5cbiAgICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1sLTJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiICpuZ0lmPVwib3B0aW9uPy50eXBlID09PSAncm90YXRlLXJpZ2h0J1wiPjwvdGh5LWRpdmlkZXI+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIm9wdGlvbi50eXBlID09PSAnY29weUxpbmsnXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICBbdGh5Q29weVRpcHNdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICBbdGh5QWN0aW9uSWNvbl09XCJvcHRpb24uaWNvblwiXG4gICAgICAgIFt0aHlDb3B5VGlwc09mZnNldF09XCIxM1wiXG4gICAgICAgICh0aHlDb3B5KT1cImNvcHlMaW5rKCRldmVudClcIlxuICAgICAgICBbdGh5Q29weUNvbnRlbnRdPVwicHJldmlld0ltYWdlT3JpZ2luU3JjXCJcbiAgICAgICAgW3RoeVNob3dOb3RpZnldPVwiZmFsc2VcIlxuICAgICAgPjwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8dGh5LWRpdmlkZXIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxzcGFuIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctb3BlcmF0aW9ucy10ZXh0XCI+IHt7IHByZXZpZXdJbmRleCArIDEgfX0gLyB7eyBpbWFnZXMubGVuZ3RoIH19IDwvc3Bhbj5cbiAgPC90aHktYWN0aW9ucz5cbjwvZGl2PlxuIl19
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1hZ2UvcHJldmlldy9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9pbWFnZS9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQyxNQUFNLGVBQWUsR0FBRztJQUNwQixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ1AsQ0FBQztBQUNGLE1BQU0sY0FBYyxHQUFH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LGVBQWUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLDJCQUEyQjtRQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsV0FBVyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLGVBQWUsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDO0lBQ3BHLENBQUM7SUFFTyxrQ0FBa0M7UUFDdEMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGVBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNyRyxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOztxSEFuWlEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa2NDOUNyQyxvcUhBMEZBOzJGRDVDYSx3QkFBd0I7a0JBWHBDLFNBQVM7K0JBQ0ksbUJBQW1CLFlBQ25CLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLEtBQUssRUFBRSx3QkFBd0I7d0JBQy9CLGtDQUFrQyxFQUFFLFlBQVk7cUJBQ25EO29RQW9IdUMsUUFBUTtzQkFBL0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNjLG1CQUFtQjtzQkFBdEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVybmFsSW1hZ2VJbmZvLCBUaHlJbWFnZUluZm8sIFRoeUltYWdlUHJldmlld01vZGUsIFRoeUltYWdlUHJldmlld09wZXJhdGlvbiwgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB9IGZyb20gJy4uL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IE1peGluQmFzZSwgbWl4aW5VbnN1YnNjcmliZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUaHlEaWFsb2cgfSBmcm9tICduZ3gtdGV0aHlzL2RpYWxvZyc7XG5pbXBvcnQgeyBnZXRDbGllbnRTaXplLCBnZXRGaXRDb250ZW50UG9zaXRpb24sIGdldE9mZnNldCwgaHVtYW5pemVCeXRlcywgaXNOdW1iZXIsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFRoeUZ1bGxzY3JlZW4gfSBmcm9tICduZ3gtdGV0aHlzL2Z1bGxzY3JlZW4nO1xuaW1wb3J0IHsgVGh5Q29weUV2ZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jb3B5JztcbmltcG9ydCB7IFRoeU5vdGlmeVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL25vdGlmeSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZldGNoSW1hZ2VCbG9iIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBpbml0aWFsUG9zaXRpb24gPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG59O1xuY29uc3QgSU1BR0VfTUFYX1pPT00gPSAzO1xuY29uc3QgSU1BR0VfTUlOX1pPT00gPSAwLjE7XG5jb25zdCBIT1JJWk9OVEFMX1NQQUNFID0gMTAwICogMjsgLy8gbGVmdDogMTAwcHg7IHJpZ2h0OiAxMDBweFxuY29uc3QgVkVSVElDQUxfU1BBQ0UgPSA5NiArIDEwNjsgLy8gdG9wOiA5NnB4OyBib3R0b206IDEwNnB4XG5cbi8qKlxuICog5Zu+54mH6aKE6KeI57uE5Lu2XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWltYWdlLXByZXZpZXcnLFxuICAgIGV4cG9ydEFzOiAndGh5SW1hZ2VQcmV2aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWltYWdlLXByZXZpZXctd3JhcCcsXG4gICAgICAgICdbY2xhc3MudGh5LWltYWdlLXByZXZpZXctbW92aW5nXSc6ICdpc0RyYWdnaW5nJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGh5SW1hZ2VQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGltYWdlczogSW50ZXJuYWxJbWFnZUluZm9bXSA9IFtdO1xuICAgIHByZXZpZXdJbmRleDogbnVtYmVyID0gMDtcbiAgICBwcmV2aWV3Q29uZmlnOiBUaHlJbWFnZVByZXZpZXdPcHRpb25zO1xuICAgIHByZXZpZXdJbWFnZVRyYW5zZm9ybSA9ICcnO1xuICAgIHByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0gPSAnJztcbiAgICB6b29tRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB6b29tOiBudW1iZXIgPSAxO1xuICAgIHBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgaXNMb2FkaW5nRG9uZSA9IGZhbHNlO1xuICAgIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICAgIGlzSW5zaWRlU2NyZWVuID0gdHJ1ZTtcbiAgICBjdXJyZW50SW1hZ2VNb2RlOiBUaHlJbWFnZVByZXZpZXdNb2RlID0gJ29yaWdpbmFsLXNjYWxlJztcbiAgICBwcmV2aWV3T3BlcmF0aW9uczogVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uW107XG4gICAgZGVmYXVsdFByZXZpZXdPcGVyYXRpb25zOiBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3pvb20tb3V0JyxcbiAgICAgICAgICAgIG5hbWU6ICfnvKnlsI8nLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbU91dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICd6b29tLW91dCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ3pvb20taW4nLFxuICAgICAgICAgICAgbmFtZTogJ+aUvuWkpycsXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy56b29tSW4oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnem9vbS1pbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ29uZS10by1vbmUnLFxuICAgICAgICAgICAgbmFtZTogJ+WOn+Wni+avlOS+iycsXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRPcmlnaW5hbFNpemUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAnb3JpZ2luYWwtc2NhbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdtYXgtdmlldycsXG4gICAgICAgICAgICBuYW1lOiAn6YCC5bqU5bGP5bmVJyxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rml0U2NyZWVuKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2ZpdC1zY3JlZW4nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdleHBhbmQtYXJyb3dzJyxcbiAgICAgICAgICAgIG5hbWU6ICflhajlsY/mmL7npLonLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU2NyZWVuKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2Z1bGwtc2NyZWVuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAncm90YXRlLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICfml4vovawnLFxuICAgICAgICAgICAgYWN0aW9uOiAoaW1hZ2U6IFRoeUltYWdlSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm90YXRlUmlnaHQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiAncm90YXRlLXJpZ2h0J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnZG93bmxvYWQnLFxuICAgICAgICAgICAgbmFtZTogJ+S4i+i9vScsXG4gICAgICAgICAgICBhY3Rpb246IChpbWFnZTogVGh5SW1hZ2VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpbWFnZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ2Rvd25sb2FkJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAncHJldmlldycsXG4gICAgICAgICAgICBuYW1lOiAn5p+l55yL5Y6f5Zu+JyxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld09yaWdpbmFsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogJ3ZpZXctb3JpZ2luYWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGljb246ICdsaW5rLWluc2VydCcsXG4gICAgICAgICAgICBuYW1lOiAn5aSN5Yi26ZO+5o6lJyxcbiAgICAgICAgICAgIHR5cGU6ICdjb3B5TGluaydcbiAgICAgICAgfVxuICAgIF07XG4gICAgcHJpdmF0ZSByb3RhdGU6IG51bWJlcjtcblxuICAgIGdldCBwcmV2aWV3SW1hZ2UoKTogSW50ZXJuYWxJbWFnZUluZm8ge1xuICAgICAgICBjb25zdCBpbWFnZSA9IHRoaXMuaW1hZ2VzW3RoaXMucHJldmlld0luZGV4XTtcbiAgICAgICAgaWYgKGltYWdlLnNpemUpIHtcbiAgICAgICAgICAgIGltYWdlLnNpemUgPSBpc051bWJlcihpbWFnZS5zaXplKSA/IGh1bWFuaXplQnl0ZXMoaW1hZ2Uuc2l6ZSkgOiBpbWFnZS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbWFnZTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlld0ltYWdlT3JpZ2luU3JjKCkge1xuICAgICAgICBsZXQgaW1hZ2VTcmMgPSB0aGlzLnByZXZpZXdJbWFnZS5vcmlnaW4/LnNyYyB8fCB0aGlzLnByZXZpZXdJbWFnZS5zcmM7XG4gICAgICAgIGlmIChpbWFnZVNyYy5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnLycgKyBpbWFnZVNyYy5zcGxpdCgnLi8nKVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1hZ2VTcmM7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRab29tKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdDb25maWc/Lnpvb20gJiYgdGhpcy5wcmV2aWV3Q29uZmlnPy56b29tID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlld0NvbmZpZy56b29tID49IElNQUdFX01BWF9aT09NXG4gICAgICAgICAgICAgICAgPyBJTUFHRV9NQVhfWk9PTVxuICAgICAgICAgICAgICAgIDogdGhpcy5wcmV2aWV3Q29uZmlnLnpvb20gPD0gSU1BR0VfTUlOX1pPT01cbiAgICAgICAgICAgICAgICA/IElNQUdFX01JTl9aT09NXG4gICAgICAgICAgICAgICAgOiB0aGlzLnByZXZpZXdDb25maWcuem9vbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ltZ1JlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBpbWFnZVJlZiE6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VQcmV2aWV3V3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIGltYWdlUHJldmlld1dyYXBwZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGh5RGlhbG9nOiBUaHlEaWFsb2csXG4gICAgICAgIHB1YmxpYyB0aHlGdWxsc2NyZWVuOiBUaHlGdWxsc2NyZWVuLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRQcmV2aWV3KCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pc0luc2lkZVNjcmVlbiAmJiB0aGlzLmltYWdlUHJldmlld1dyYXBwZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLnByZXZpZXdDb25maWc/LmRpc2FibGVDbG9zZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiAhdGhpcy5pc0Z1bGxTY3JlZW4gJiYgdGhpcy50aHlEaWFsb2cuY2xvc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuaW1hZ2VQcmV2aWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9ICF0aGlzLmlzSW5zaWRlU2NyZWVuICYmIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldE9yaWdpbmFsU2l6ZSgpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZU1vZGUgPSAnZml0LXNjcmVlbic7XG4gICAgICAgIHRoaXMuem9vbSA9IDE7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBzZXRGaXRTY3JlZW4oKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IHRydWU7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgfVxuXG4gICAgdXNlRGVmYXVsdFpvb21VcGRhdGUoaXNVcGRhdGVJbWFnZVdyYXBwZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy56b29tID0gdGhpcy5kZWZhdWx0Wm9vbTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgaWYgKGlzVXBkYXRlSW1hZ2VXcmFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdXNlQ2FsY3VsYXRlWm9vbVVwZGF0ZShpc1VwZGF0ZUltYWdlV3JhcHBlcj86IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuc3JjID0gdGhpcy5wcmV2aWV3SW1hZ2Uuc3JjO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogb2Zmc2V0V2lkdGgsIGhlaWdodDogb2Zmc2V0SGVpZ2h0IH0gPSBnZXRDbGllbnRTaXplKCk7XG4gICAgICAgICAgICBjb25zdCBpbm5lcldpZHRoID0gb2Zmc2V0V2lkdGggLSBIT1JJWk9OVEFMX1NQQUNFO1xuICAgICAgICAgICAgY29uc3QgaW5uZXJIZWlnaHQgPSBvZmZzZXRIZWlnaHQgLSBWRVJUSUNBTF9TUEFDRTtcbiAgICAgICAgICAgIGNvbnN0IHsgbmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0IH0gPSBpbWc7XG4gICAgICAgICAgICBjb25zdCB4UmF0aW8gPSBpbm5lcldpZHRoIC8gbmF0dXJhbFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgeVJhdGlvID0gaW5uZXJIZWlnaHQgLyBuYXR1cmFsSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgem9vbSA9IE1hdGgubWluKHhSYXRpbywgeVJhdGlvKTtcbiAgICAgICAgICAgIGlmICh6b29tID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbSA9IHpvb207XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3SW1hZ2VUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIGlmIChpc1VwZGF0ZUltYWdlV3JhcHBlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHVwZGF0ZVByZXZpZXdJbWFnZSgpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlUHJldmlld0ltYWdlKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIC8vIGVycm9yXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbWFnZSBzaXplXG4gICAgICAgICAgICBpZiAoIXRoaXMucHJldmlld0ltYWdlLnNpemUgJiYgdGhpcy5wcmV2aWV3SW1hZ2UuYmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlLnNpemUgPSBodW1hbml6ZUJ5dGVzKHRoaXMucHJldmlld0ltYWdlLmJsb2Iuc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Wm9vbSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlRGVmYXVsdFpvb21VcGRhdGUodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlQ2FsY3VsYXRlWm9vbVVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNvbHZlUHJldmlld0ltYWdlKCkge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Qm9vbGVhbj4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW1hZ2Uuc3JjLnN0YXJ0c1dpdGgoJ2Jsb2I6JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHRoaXMucHJldmlld0ltYWdlLnNyYyk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW1hZ2Uub2JqZWN0VVJMIHx8ICF0aGlzLnByZXZpZXdDb25maWcucmVzb2x2ZVNpemUpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmZXRjaEltYWdlQmxvYih0aGlzLnByZXZpZXdJbWFnZS5zcmMpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgYmxvYiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0VVJMID0gdXJsQ3JlYXRvci5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKG9iamVjdFVSTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZS5ibG9iID0gYmxvYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRQcmV2aWV3KCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByZXZpZXdDb25maWc/Lm9wZXJhdGlvbnMpICYmIHRoaXMucHJldmlld0NvbmZpZz8ub3BlcmF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld09wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRQcmV2aWV3T3BlcmF0aW9ucy5maWx0ZXIoaXRlbSA9PiB0aGlzLnByZXZpZXdDb25maWcub3BlcmF0aW9ucy5pbmNsdWRlcyhpdGVtLnR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld09wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRQcmV2aWV3T3BlcmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdGF0ZSA9IHRoaXMucHJldmlld0NvbmZpZz8ucm90YXRlID8/IDA7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgfVxuXG4gICAgZG93bmxvYWQoaW1hZ2U6IFRoeUltYWdlSW5mbykge1xuICAgICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ0Fub255bW91cycpO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGltZy53aWR0aDtcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpO1xuICAgICAgICAgICAgbGV0IHVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlcy9wbmcnKTtcbiAgICAgICAgICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJyk7XG4gICAgICAgICAgICBhLmRvd25sb2FkID0gaW1hZ2UubmFtZSB8fCAnZGVmYXVsdC5wbmcnO1xuICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICAgICAgYS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSBpbWFnZS5uYW1lIHx8ICdkZWZhdWx0LnBuZyc7XG4gICAgICAgICAgICBhLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICAgICAgYS5ocmVmID0gaW1hZ2Uub3JpZ2luPy5zcmMgfHwgaW1hZ2Uuc3JjO1xuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJyk7XG4gICAgICAgICAgICBhLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBpbWcuc3JjID0gaW1hZ2Uub3JpZ2luPy5zcmMgfHwgaW1hZ2Uuc3JjO1xuICAgIH1cblxuICAgIHpvb21JbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbSA8IElNQUdFX01BWF9aT09NKSB7XG4gICAgICAgICAgICB0aGlzLnpvb20gPSBNYXRoLm1pbih0aGlzLnpvb20gKyAwLjEsIElNQUdFX01BWF9aT09NKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSW5zaWRlU2NyZWVuKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZVRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4uaW5pdGlhbFBvc2l0aW9uIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB6b29tT3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy56b29tID4gSU1BR0VfTUlOX1pPT00pIHtcbiAgICAgICAgICAgIHRoaXMuem9vbSA9IE1hdGgubWF4KHRoaXMuem9vbSAtIDAuMSwgSU1BR0VfTUlOX1pPT00pO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVJbnNpZGVTY3JlZW4oKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUluc2lkZVNjcmVlbigpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGNsaWVudFdpZHRoLCBoZWlnaHQ6IGNsaWVudEhlaWdodCB9ID0gZ2V0Q2xpZW50U2l6ZSgpO1xuICAgICAgICBpZiAod2lkdGggPj0gY2xpZW50V2lkdGggfHwgaGVpZ2h0ID49IGNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0luc2lkZVNjcmVlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2aWV3T3JpZ2luYWwoKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMucHJldmlld0ltYWdlPy5vcmlnaW4/LnNyYyB8fCB0aGlzLnByZXZpZXdJbWFnZS5zcmMsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICByb3RhdGVSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3RhdGUgKz0gOTA7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk7XG4gICAgfVxuXG4gICAgZnVsbFNjcmVlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aHktaW1hZ2UtcHJldmlldycpO1xuICAgICAgICB0aGlzLmlzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZ1bGxzY3JlZW5SZWYgPSB0aGlzLnRoeUZ1bGxzY3JlZW4ubGF1bmNoKHtcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgICAgZnVsbHNjcmVlblJlZi5hZnRlckV4aXRlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRnVsbFNjcmVlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvcHlMaW5rKGV2ZW50OiBUaHlDb3B5RXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoJ+WkjeWItuWbvueJh+WcsOWdgOaIkOWKnycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmVycm9yKCflpI3liLblm77niYflnLDlnYDlpLHotKUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXYoKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0luZGV4LS07XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldmlld0ltYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3SW5kZXggPCB0aGlzLmltYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdJbmRleCsrO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEb25lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhZ1JlbGVhc2VkKCkge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmltYWdlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW1hZ2VSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKiB0aGlzLnpvb207XG4gICAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBnZXRPZmZzZXQodGhpcy5pbWFnZVJlZi5uYXRpdmVFbGVtZW50LCB3aW5kb3cpO1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBjbGllbnRXaWR0aCwgaGVpZ2h0OiBjbGllbnRIZWlnaHQgfSA9IGdldENsaWVudFNpemUoKTtcbiAgICAgICAgY29uc3QgaXNSb3RhdGUgPSB0aGlzLnJvdGF0ZSAlIDE4MCAhPT0gMDtcbiAgICAgICAgY29uc3QgZml0Q29udGVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBpc1JvdGF0ZSA/IGhlaWdodCA6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBpc1JvdGF0ZSA/IHdpZHRoIDogaGVpZ2h0LFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGNsaWVudFdpZHRoLFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpdENvbnRlbnRQb3MgPSBnZXRGaXRDb250ZW50UG9zaXRpb24oZml0Q29udGVudFBhcmFtcyk7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy54KSB8fCAhaXNVbmRlZmluZWRPck51bGwoZml0Q29udGVudFBvcy55KSkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4udGhpcy5wb3NpdGlvbiwgLi4uZml0Q29udGVudFBvcyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VNb2RlID0gJ29yaWdpbmFsLXNjYWxlJztcbiAgICAgICAgdGhpcy5yb3RhdGUgPSB0aGlzLnByZXZpZXdDb25maWc/LnJvdGF0ZSA/PyAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0geyAuLi5pbml0aWFsUG9zaXRpb24gfTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJldmlld0ltYWdlVHJhbnNmb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdJbWFnZVRyYW5zZm9ybSA9IGBzY2FsZTNkKCR7dGhpcy56b29tfSwgJHt0aGlzLnpvb219LCAxKSByb3RhdGUoJHt0aGlzLnJvdGF0ZX1kZWcpYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByZXZpZXdJbWFnZVdyYXBwZXJUcmFuc2Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0ltYWdlV3JhcHBlclRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3RoaXMucG9zaXRpb24ueH1weCwgJHt0aGlzLnBvc2l0aW9uLnl9cHgsIDApYDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXdcIiBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctZnVsbHNjcmVlbl09XCJpc0Z1bGxTY3JlZW5cIj5cbiAgPGRpdiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWhlYWRlciBwbC0xMCBwci04XCIgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LWhlYWRlci1pbmZvXCI+XG4gICAgICA8cCBjbGFzcz1cInRoeS1pbWFnZS1uYW1lIHRleHQtdHJ1bmNhdGVcIiBbdGh5VG9vbHRpcERpc2FibGVkXT1cInByZXZpZXdJbWFnZT8ubmFtZT8ubGVuZ3RoIDwgMzJcIiBbdGh5VG9vbHRpcF09XCJwcmV2aWV3SW1hZ2U/Lm5hbWVcIj5cbiAgICAgICAge3sgcHJldmlld0ltYWdlPy5uYW1lIH19XG4gICAgICA8L3A+XG4gICAgICA8c3BhbiBjbGFzcz1cInRoeS1pbWFnZS1zaXplXCI+IHt7IHByZXZpZXdJbWFnZT8uc2l6ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8YSB0aHlBY3Rpb24gdGh5SWNvbj1cImNsb3NlXCIgdGh5VG9vbHRpcD1cIumAgOWHuumihOiniFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwidGh5RGlhbG9nLmNsb3NlKClcIj48L2E+XG4gIDwvZGl2PlxuICA8YVxuICAgIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctZXhpdC1mdWxsc2NyZWVuXCJcbiAgICAqbmdJZj1cImlzRnVsbFNjcmVlblwiXG4gICAgdGh5QWN0aW9uXG4gICAgdGh5SWNvbj1cImNsb3NlXCJcbiAgICB0aHlUb29sdGlwPVwi6YCA5Ye66aKE6KeIXCJcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAoY2xpY2spPVwidGh5RnVsbHNjcmVlbi5leGl0KClcIlxuICAgIHRoeVRvb2x0aXA9XCLpgIDlh7rlhajlsY9cIlxuICA+PC9hPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1pbWctd3JhcHBlclwiXG4gICAgI2ltYWdlUHJldmlld1dyYXBwZXJcbiAgICBjZGtEcmFnXG4gICAgW2NsYXNzLnRoeS1pbWFnZS1wcmV2aWV3LWluc2lkZV09XCJpc0luc2lkZVNjcmVlblwiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCJwcmV2aWV3SW1hZ2VXcmFwcGVyVHJhbnNmb3JtXCJcbiAgICBbY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb25dPVwicG9zaXRpb25cIlxuICAgIChjZGtEcmFnUmVsZWFzZWQpPVwiZHJhZ1JlbGVhc2VkKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgaW1hZ2VzOyBpbmRleCBhcyBpbWFnZUluZGV4XCI+XG4gICAgICA8aW1nXG4gICAgICAgICNpbWdSZWZcbiAgICAgICAgKm5nSWY9XCJwcmV2aWV3SW5kZXggPT09IGltYWdlSW5kZXggJiYgaXNMb2FkaW5nRG9uZVwiXG4gICAgICAgIGNsYXNzPVwidGh5LWltYWdlLXByZXZpZXctaW1nXCJcbiAgICAgICAgW3NyY109XCJpbWFnZS5vYmplY3RVUkwgfHwgaW1hZ2Uuc3JjXCJcbiAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJwcmV2aWV3SW1hZ2VUcmFuc2Zvcm1cIlxuICAgICAgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8dGh5LWxvYWRpbmcgW3RoeURvbmVdPVwiaXNMb2FkaW5nRG9uZVwiPjwvdGh5LWxvYWRpbmc+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWFnZXMubGVuZ3RoID4gMSAmJiAhaXNGdWxsU2NyZWVuXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1zd2l0Y2gtbGVmdFwiXG4gICAgICBbdGh5VG9vbHRpcERpc2FibGVkXT1cInByZXZpZXdJbmRleCA8PSAwXCJcbiAgICAgIHRoeVRvb2x0aXA9XCLkuIrkuIDlvKBcIlxuICAgICAgW2NsYXNzLnRoeS1pbWFnZS1wcmV2aWV3LXN3aXRjaC1sZWZ0LWRpc2FibGVkXT1cInByZXZpZXdJbmRleCA8PSAwXCJcbiAgICAgIChjbGljayk9XCJwcmV2KClcIlxuICAgID5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWxlZnQtYm9sZFwiPjwvdGh5LWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1zd2l0Y2gtcmlnaHRcIlxuICAgICAgdGh5VG9vbHRpcD1cIuS4i+S4gOW8oFwiXG4gICAgICBbdGh5VG9vbHRpcERpc2FibGVkXT1cInByZXZpZXdJbmRleCA+PSBpbWFnZXMubGVuZ3RoIC0gMVwiXG4gICAgICBbY2xhc3MudGh5LWltYWdlLXByZXZpZXctc3dpdGNoLXJpZ2h0LWRpc2FibGVkXT1cInByZXZpZXdJbmRleCA+PSBpbWFnZXMubGVuZ3RoIC0gMVwiXG4gICAgICAoY2xpY2spPVwibmV4dCgpXCJcbiAgICA+XG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodC1ib2xkXCI+IDwvdGh5LWljb24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInhzXCIgY2xhc3M9XCJ0aHktaW1hZ2UtcHJldmlldy1vcGVyYXRpb25zIHB5LTMgcHgtNFwiICpuZ0lmPVwiIWlzRnVsbFNjcmVlblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcmV2aWV3T3BlcmF0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCIhWydvcmlnaW5hbC1zY2FsZScsICdmaXQtc2NyZWVuJywgJ2NvcHlMaW5rJ10uaW5jbHVkZXMob3B0aW9uLnR5cGUpIHx8IGN1cnJlbnRJbWFnZU1vZGUgPT09IG9wdGlvbi50eXBlXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICBbdGh5QWN0aW9uSWNvbl09XCJvcHRpb24uaWNvblwiXG4gICAgICAgIFt0aHlUb29sdGlwXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgW3RoeVRvb2x0aXBPZmZzZXRdPVwiMTNcIlxuICAgICAgICAoY2xpY2spPVwib3B0aW9uLmFjdGlvbihwcmV2aWV3SW1hZ2UpXCJcbiAgICAgID48L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1yLTJcIiAqbmdJZj1cIm9wdGlvbj8udHlwZSA9PT0gJ3pvb20tb3V0J1wiPiB7eyAoem9vbSAqIDEwMCkudG9GaXhlZCgwKSArICclJyB9fSA8L3NwYW4+XG4gICAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtbC0yXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIiAqbmdJZj1cIm9wdGlvbj8udHlwZSA9PT0gJ3JvdGF0ZS1yaWdodCdcIj48L3RoeS1kaXZpZGVyPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJvcHRpb24udHlwZSA9PT0gJ2NvcHlMaW5rJ1wiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgW3RoeUNvcHlUaXBzXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgW3RoeUFjdGlvbkljb25dPVwib3B0aW9uLmljb25cIlxuICAgICAgICBbdGh5Q29weVRpcHNPZmZzZXRdPVwiMTNcIlxuICAgICAgICAodGh5Q29weSk9XCJjb3B5TGluaygkZXZlbnQpXCJcbiAgICAgICAgW3RoeUNvcHlDb250ZW50XT1cInByZXZpZXdJbWFnZU9yaWdpblNyY1wiXG4gICAgICAgIFt0aHlTaG93Tm90aWZ5XT1cImZhbHNlXCJcbiAgICAgID48L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHRoeS1kaXZpZGVyIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICA8c3BhbiBjbGFzcz1cInRoeS1pbWFnZS1wcmV2aWV3LW9wZXJhdGlvbnMtdGV4dFwiPiB7eyBwcmV2aWV3SW5kZXggKyAxIH19IC8ge3sgaW1hZ2VzLmxlbmd0aCB9fSA8L3NwYW4+XG4gIDwvdGh5LWFjdGlvbnM+XG48L2Rpdj5cbiJdfQ==
|