@colijnit/corecomponents_v12 260.1.4 → 260.1.5

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.
@@ -1,4 +1,4 @@
1
- import { Component, HostBinding, Input, ViewEncapsulation } from "@angular/core";
1
+ import { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
2
2
  export class HourSchedulingExpandableTemplateComponent {
3
3
  constructor() {
4
4
  this.layouts = [];
@@ -14,8 +14,10 @@ export class HourSchedulingExpandableTemplateComponent {
14
14
  return true;
15
15
  }
16
16
  onExpandableDragStart(event, obj, onDragStartCustom) {
17
- onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
18
- event.dataTransfer.setData("text", JSON.stringify({ obj }));
17
+ event.dataTransfer.setData('text', JSON.stringify({ obj }));
18
+ if (onDragStartCustom) {
19
+ onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
20
+ }
19
21
  }
20
22
  calculateLeftAndWidthOfObjects() {
21
23
  const layoutData = new Array(this._objects.length);
@@ -27,8 +29,9 @@ export class HourSchedulingExpandableTemplateComponent {
27
29
  const overlapGroups = [];
28
30
  const processed = new Set();
29
31
  for (let i = 0; i < this._objects.length; i++) {
30
- if (processed.has(i))
32
+ if (processed.has(i)) {
31
33
  continue;
34
+ }
32
35
  const group = [i];
33
36
  const objA = this._objects[i];
34
37
  const startA = new Date(objA.start);
@@ -61,37 +64,37 @@ export class HourSchedulingExpandableTemplateComponent {
61
64
  }
62
65
  HourSchedulingExpandableTemplateComponent.decorators = [
63
66
  { type: Component, args: [{
64
- selector: "co-hour-scheduling-expandable-template",
67
+ selector: 'co-hour-scheduling-expandable-template',
65
68
  template: `
66
-
67
- <div
68
- *ngFor="let obj of objects"
69
- [class]="'custom-scheduled-object'"
70
- [class.selected]="obj.selected"
71
- [draggable]="!obj.selected"
72
- [style.--height]="obj.height + 'px'"
73
- [style.--top]="obj.top + 'px'"
74
- [style.--left]="layouts[objects.indexOf(obj)].leftPercent + '%'"
75
- [style.--width]="layouts[objects.indexOf(obj)].widthPercent + '%'"
76
- (click)="onSelectBlock(obj)"
77
- (dragstart)="onExpandableDragStart($event, obj, onDragStartCustom(obj) )">
78
69
 
79
- <div
80
- *ngIf="obj.selected"
81
- class="top-resizer"
82
- (mousedown)="onResizeStart($event, obj, 'top')"></div>
83
- <ng-template
84
- [ngTemplateOutlet]="objectTemplate"
85
- [ngTemplateOutletContext]="{
70
+ <div
71
+ *ngFor="let obj of objects"
72
+ [class]="'custom-scheduled-object'"
73
+ [class.selected]="obj.selected"
74
+ [draggable]="!obj.selected"
75
+ [style.--height]="obj.height + 'px'"
76
+ [style.--top]="obj.top + 'px'"
77
+ [style.--left]="layouts[objects.indexOf(obj)].leftPercent + '%'"
78
+ [style.--width]="layouts[objects.indexOf(obj)].widthPercent + '%'"
79
+ (click)="onSelectBlock(obj)"
80
+ (dragstart)="onExpandableDragStart($event, obj, onDragStartCustom(obj) )">
81
+
82
+ <div
83
+ *ngIf="obj.selected"
84
+ class="top-resizer"
85
+ (mousedown)="onResizeStart($event, obj, 'top')"></div>
86
+ <ng-template
87
+ [ngTemplateOutlet]="objectTemplate"
88
+ [ngTemplateOutletContext]="{
86
89
  object: obj
87
90
  }"
88
- >
89
- </ng-template>
90
- <div *ngIf="obj.selected"
91
- class="bottom-resizer"
92
- (mousedown)="onResizeStart($event, obj, 'bottom')"></div>
93
- </div>
94
- `,
91
+ >
92
+ </ng-template>
93
+ <div *ngIf="obj.selected"
94
+ class="bottom-resizer"
95
+ (mousedown)="onResizeStart($event, obj, 'bottom')"></div>
96
+ </div>
97
+ `,
95
98
  encapsulation: ViewEncapsulation.None
96
99
  },] }
97
100
  ];
@@ -103,6 +106,6 @@ HourSchedulingExpandableTemplateComponent.propDecorators = {
103
106
  onSelectBlock: [{ type: Input }],
104
107
  startTimeProp: [{ type: Input }],
105
108
  endTimeProp: [{ type: Input }],
106
- showClass: [{ type: HostBinding, args: ["class.co-hour-scheduling-expandable-template",] }]
109
+ showClass: [{ type: HostBinding, args: ['class.co-hour-scheduling-expandable-template',] }]
107
110
  };
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQWxDdEQ7UUFxQ1MsWUFBTyxHQUFtRCxFQUFFLENBQUM7SUFpR3RFLENBQUM7SUE1RkMsSUFDVyxPQUFPLENBQUMsT0FBMkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBcUJNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxxQkFBcUIsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxpQkFBMkI7UUFDckYsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxZQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENB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SUwsS0FBSzs0QkFHTCxLQUFLOzBCQUdMLEtBQUs7d0JBSUwsV0FBVyxTQUFDLDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTY2hlZHVsaW5nT2JqZWN0fSBmcm9tICcuLi8uLi8uLi9ob3VyLXNjaGVkdWxpbmcvbW9kZWwvZW51bS9zY2hlZHVsaW5nLW9iamVjdC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2N1c3RvbS1zY2hlZHVsZWQtb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCIhb2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1oZWlnaHRdPVwib2JqLmhlaWdodCArICdweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvcF09XCJvYmoudG9wICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbGVmdF09XCJsYXlvdXRzW29iamVjdHMuaW5kZXhPZihvYmopXS5sZWZ0UGVyY2VudCArICclJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0td2lkdGhdPVwibGF5b3V0c1tvYmplY3RzLmluZGV4T2Yob2JqKV0ud2lkdGhQZXJjZW50ICsgJyUnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RCbG9jayhvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRXhwYW5kYWJsZURyYWdTdGFydCgkZXZlbnQsIG9iaiwgb25EcmFnU3RhcnRDdXN0b20ob2JqKSApXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wLXJlc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoJGV2ZW50LCBvYmosICd0b3AnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9iamVjdFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBvYmplY3Q6IG9ialxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ2JvdHRvbScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdO1xyXG4gIHB1YmxpYyBsYXlvdXRzOnsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9iamVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgb2JqZWN0cyhvYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10pIHtcclxuICAgIHRoaXMuX29iamVjdHMgPSBvYmplY3RzXHJcbiAgICB0aGlzLmxheW91dHMgPSB0aGlzLmNhbGN1bGF0ZUxlZnRBbmRXaWR0aE9mT2JqZWN0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvblJlc2l6ZVN0YXJ0OiBGdW5jdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2s6IEZ1bmN0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIG9uRHJhZ1N0YXJ0Q3VzdG9tPy5jYWxsKG9iaik7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoXCJ0ZXh0XCIsIEpTT04uc3RyaW5naWZ5KHsgb2JqIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlTGVmdEFuZFdpZHRoT2ZPYmplY3RzKCk6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdIHtcclxuICAgIGNvbnN0IGxheW91dERhdGE6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gbmV3IEFycmF5KHRoaXMuX29iamVjdHMubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IGNoZWNrIGlmIHR3byB0aW1lIHJhbmdlcyBvdmVybGFwXHJcbiAgICBjb25zdCBpc092ZXJsYXBwaW5nID0gKHN0YXJ0QTogRGF0ZSwgZW5kQTogRGF0ZSwgc3RhcnRCOiBEYXRlLCBlbmRCOiBEYXRlKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBzdGFydEEgPCBlbmRCICYmIHN0YXJ0QiA8IGVuZEE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFN0ZXAgMTogYnVpbGQgb3ZlcmxhcCBncm91cHNcclxuICAgIGNvbnN0IG92ZXJsYXBHcm91cHM6IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX29iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHByb2Nlc3NlZC5oYXMoaSkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgZ3JvdXA6IG51bWJlcltdID0gW2ldO1xyXG4gICAgICBjb25zdCBvYmpBID0gdGhpcy5fb2JqZWN0c1tpXTtcclxuICAgICAgY29uc3Qgc3RhcnRBID0gbmV3IERhdGUob2JqQS5zdGFydCk7XHJcbiAgICAgIGNvbnN0IGVuZEEgPSBuZXcgRGF0ZShvYmpBLmVuZCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCB0aGlzLl9vYmplY3RzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JqQiA9IHRoaXMuX29iamVjdHNbal07XHJcbiAgICAgICAgY29uc3Qgc3RhcnRCID0gbmV3IERhdGUob2JqQi5zdGFydCk7XHJcbiAgICAgICAgY29uc3QgZW5kQiA9IG5ldyBEYXRlKG9iakIuZW5kKTtcclxuXHJcbiAgICAgICAgaWYgKGlzT3ZlcmxhcHBpbmcoc3RhcnRBLCBlbmRBLCBzdGFydEIsIGVuZEIpKSB7XHJcbiAgICAgICAgICBncm91cC5wdXNoKGopO1xyXG4gICAgICAgICAgcHJvY2Vzc2VkLmFkZChqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3VwLmZvckVhY2goaW5kZXggPT4gcHJvY2Vzc2VkLmFkZChpbmRleCkpO1xyXG4gICAgICBvdmVybGFwR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0ZXAgMjogYXNzaWduIGxheW91dCBwZXIgZ3JvdXBcclxuICAgIG92ZXJsYXBHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IHRvdGFsID0gZ3JvdXAubGVuZ3RoO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IDEwMCAvIHRvdGFsO1xyXG5cclxuICAgICAgZ3JvdXAuZm9yRWFjaCgob2JqZWN0SW5kZXgsIGkpID0+IHtcclxuICAgICAgICBsYXlvdXREYXRhW29iamVjdEluZGV4XSA9IHtcclxuICAgICAgICAgIGxlZnRQZXJjZW50OiBpICogd2lkdGgsXHJcbiAgICAgICAgICB3aWR0aFBlcmNlbnQ6IHdpZHRoXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGF5b3V0RGF0YTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQWxDdEQ7UUFxQ1MsWUFBTyxHQUFvRCxFQUFFLENBQUM7SUFnR3ZFLENBQUM7SUEzRkMsSUFDVyxPQUFPLENBQUMsT0FBMkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBa0JNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxpQkFBMkI7UUFDckYsS0FBSyxDQUFDLFlBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxJQUFJLENBQUMs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SztzQkFHTCxLQUFLO2dDQVVMLEtBQUs7NEJBR0wsS0FBSzs0QkFHTCxLQUFLOzRCQUdMLEtBQUs7MEJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsOENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTY2hlZHVsaW5nT2JqZWN0fSBmcm9tICcuLi8uLi8uLi9ob3VyLXNjaGVkdWxpbmcvbW9kZWwvZW51bS9zY2hlZHVsaW5nLW9iamVjdC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCInY3VzdG9tLXNjaGVkdWxlZC1vYmplY3QnXCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIiFvYmouc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWhlaWdodF09XCJvYmouaGVpZ2h0ICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tdG9wXT1cIm9iai50b3AgKyAncHgnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuLS1sZWZ0XT1cImxheW91dHNbb2JqZWN0cy5pbmRleE9mKG9iaildLmxlZnRQZXJjZW50ICsgJyUnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuLS13aWR0aF09XCJsYXlvdXRzW29iamVjdHMuaW5kZXhPZihvYmopXS53aWR0aFBlcmNlbnQgKyAnJSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEJsb2NrKG9iailcIlxyXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwib25FeHBhbmRhYmxlRHJhZ1N0YXJ0KCRldmVudCwgb2JqLCBvbkRyYWdTdGFydEN1c3RvbShvYmopIClcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3AtcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ3RvcCcpXCI+PC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib2JqZWN0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIG9iamVjdDogb2JqXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1yZXNpemVyXCJcclxuICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZVN0YXJ0KCRldmVudCwgb2JqLCAnYm90dG9tJylcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZUNvbXBvbmVudCB7XHJcblxyXG4gIHByaXZhdGUgX29iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXTtcclxuICBwdWJsaWMgbGF5b3V0czogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb2JqZWN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBvYmplY3RzKG9iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcbiAgICB0aGlzLmxheW91dHMgPSB0aGlzLmNhbGN1bGF0ZUxlZnRBbmRXaWR0aE9mT2JqZWN0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uUmVzaXplU3RhcnQ6IEZ1bmN0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvblNlbGVjdEJsb2NrOiBGdW5jdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3RhcnRUaW1lUHJvcDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbmRUaW1lUHJvcDogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2ZlciEuc2V0RGF0YSgndGV4dCcsIEpTT04uc3RyaW5naWZ5KHtvYmp9KSk7XHJcbiAgICBpZiAob25EcmFnU3RhcnRDdXN0b20pIHtcclxuICAgICAgb25EcmFnU3RhcnRDdXN0b20/LmNhbGwob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxjdWxhdGVMZWZ0QW5kV2lkdGhPZk9iamVjdHMoKTogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10ge1xyXG4gICAgY29uc3QgbGF5b3V0RGF0YTogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10gPSBuZXcgQXJyYXkodGhpcy5fb2JqZWN0cy5sZW5ndGgpO1xyXG5cclxuICAgIC8vIEhlbHBlcjogY2hlY2sgaWYgdHdvIHRpbWUgcmFuZ2VzIG92ZXJsYXBcclxuICAgIGNvbnN0IGlzT3ZlcmxhcHBpbmcgPSAoc3RhcnRBOiBEYXRlLCBlbmRBOiBEYXRlLCBzdGFydEI6IERhdGUsIGVuZEI6IERhdGUpOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIHN0YXJ0QSA8IGVuZEIgJiYgc3RhcnRCIDwgZW5kQTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gU3RlcCAxOiBidWlsZCBvdmVybGFwIGdyb3Vwc1xyXG4gICAgY29uc3Qgb3ZlcmxhcEdyb3VwczogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IHByb2Nlc3NlZCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fb2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAocHJvY2Vzc2VkLmhhcyhpKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBncm91cDogbnVtYmVyW10gPSBbaV07XHJcbiAgICAgIGNvbnN0IG9iakEgPSB0aGlzLl9vYmplY3RzW2ldO1xyXG4gICAgICBjb25zdCBzdGFydEEgPSBuZXcgRGF0ZShvYmpBLnN0YXJ0KTtcclxuICAgICAgY29uc3QgZW5kQSA9IG5ldyBEYXRlKG9iakEuZW5kKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHRoaXMuX29iamVjdHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBjb25zdCBvYmpCID0gdGhpcy5fb2JqZWN0c1tqXTtcclxuICAgICAgICBjb25zdCBzdGFydEIgPSBuZXcgRGF0ZShvYmpCLnN0YXJ0KTtcclxuICAgICAgICBjb25zdCBlbmRCID0gbmV3IERhdGUob2JqQi5lbmQpO1xyXG5cclxuICAgICAgICBpZiAoaXNPdmVybGFwcGluZyhzdGFydEEsIGVuZEEsIHN0YXJ0QiwgZW5kQikpIHtcclxuICAgICAgICAgIGdyb3VwLnB1c2goaik7XHJcbiAgICAgICAgICBwcm9jZXNzZWQuYWRkKGopO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZ3JvdXAuZm9yRWFjaChpbmRleCA9PiBwcm9jZXNzZWQuYWRkKGluZGV4KSk7XHJcbiAgICAgIG92ZXJsYXBHcm91cHMucHVzaChncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3RlcCAyOiBhc3NpZ24gbGF5b3V0IHBlciBncm91cFxyXG4gICAgb3ZlcmxhcEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgdG90YWwgPSBncm91cC5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gMTAwIC8gdG90YWw7XHJcblxyXG4gICAgICBncm91cC5mb3JFYWNoKChvYmplY3RJbmRleCwgaSkgPT4ge1xyXG4gICAgICAgIGxheW91dERhdGFbb2JqZWN0SW5kZXhdID0ge1xyXG4gICAgICAgICAgbGVmdFBlcmNlbnQ6IGkgKiB3aWR0aCxcclxuICAgICAgICAgIHdpZHRoUGVyY2VudDogd2lkdGhcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBsYXlvdXREYXRhO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -97,6 +97,11 @@ export class HourSchedulingExpandableComponent {
97
97
  this.currentDraggingObject = obj;
98
98
  }
99
99
  handleDrop(dragEvent, hour) {
100
+ dragEvent.preventDefault();
101
+ dragEvent.stopPropagation();
102
+ if (!this.schedule[this.objectsProp] || !this.schedule[this.objectsProp].find((object) => object[this.idProp] === this.currentDraggingObject.id) && this.currentDraggingObject) {
103
+ this.currentDraggingObject = undefined;
104
+ }
100
105
  if (this.currentDraggingObject) {
101
106
  //The order was scheduled and needs to be moved
102
107
  let start = this.currentDraggingObject.start;
@@ -114,17 +119,17 @@ export class HourSchedulingExpandableComponent {
114
119
  scheduledObject.top = this.timeDifference(this.schedule[this.childProp][this.startTimeProp], scheduledObject.start);
115
120
  scheduledObject.height = this.timeDifference(scheduledObject.start, scheduledObject.end);
116
121
  this.timeChangeEvent.emit(originalObject);
117
- this.currentDraggingObject = undefined;
118
122
  }
123
+ this.currentDraggingObject = undefined;
119
124
  }
120
125
  else {
121
126
  let parsed = this.tryParseJSONObject(dragEvent.dataTransfer.getData("text"));
122
127
  if (!parsed) {
123
128
  this.newObjectPlanEvent.emit({ currentHour: hour, data: parsed.toString() });
124
- return;
125
129
  }
126
- //Move between calendars is still too buggy
127
- this.moveBetweenCalendarsEvent.emit({ hour: hour, data: parsed });
130
+ else {
131
+ this.moveBetweenCalendarsEvent.emit({ hour: hour, data: parsed });
132
+ }
128
133
  }
129
134
  }
130
135
  allowDrop(event, hour) {
@@ -328,4 +333,4 @@ HourSchedulingExpandableComponent.propDecorators = {
328
333
  onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }],
329
334
  clickOut: [{ type: HostListener, args: ['document:click', ['$event'],] }]
330
335
  };
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsVUFBVSxFQUNyQixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQWdFdkIsTUFBTSxPQUFPLGlDQUFpQztJQTZENUMsWUFDVSxLQUF3QixFQUN4QixJQUFnQjtRQURoQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0RuQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHekMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQiwwQkFBcUIsR0FBNEIsSUFBSSxDQUFDO1FBQ3RELDBCQUFxQixHQUE0QixJQUFJLENBQUM7UUFDdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBdUJkLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUsdUJBQWtCLEdBQXdELElBQUksWUFBWSxFQUd2RyxDQUFDO1FBRVksOEJBQXlCLEdBQXdELElBQUksWUFBWSxFQUF5QyxDQUFDO1FBR3JKLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFtQmpDLENBQUM7SUFoREQsSUFBb0IsUUFBUSxDQUFFLEtBQWE7UUFDekMsSUFBRyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUks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bmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmludGVyZmFjZSBTY2hlZHVsaW5nT2JqZWN0IHtcclxuICBzdGFydDogRGF0ZTtcclxuICBlbmQ6IERhdGU7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc3ViVGl0bGU/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIHRvcD86IG51bWJlcjtcclxuICBpZDogbnVtYmVyIHwgc3RyaW5nO1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIHNob3dUb3BSZXNpemVyPzogYm9vbGVhbjtcclxuICBzaG93Qm90dG9tUmVzaXplcj86IGJvb2xlYW47XHJcblxyXG5cclxuICBba2V5OiBzdHJpbmddOiBhbnk7IC8vIEFsbG93cyBkeW5hbWljIHByb3BlcnRpZXMgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVyc1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYmxvY2tcIiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3VyTGFiZWxzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItbGFiZWxcIj48c3BhbiBbdGV4dENvbnRlbnRdPVwiaG91clwiPjwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1kaXNwbGF5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3QtaGFsZi1ob3VyIG9iamVjdC1oYWxmXCJcclxuICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIGhvdXIpXCJcclxuICAgICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJoYW5kbGVEcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChkcm9wKT1cImhhbmRsZURyb3AoJGV2ZW50LCBob3VyKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZC1oYWxmLWhvdXIgb2JqZWN0LWhhbGZcIlxyXG4gICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudCwgYWRkSGFsZkhvdXIoaG91cikpXCJcclxuICAgICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJoYW5kbGVEcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChkcm9wKT1cImhhbmRsZURyb3AoJGV2ZW50LCBhZGRIYWxmSG91cihob3VyKSlcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzY2hlZHVsZWQtb2JqZWN0c1wiID5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBvYmplY3RzOiBzY2hlZHVsZWRPYmplY3RzLFxyXG4gICAgICAgICAgICAgIG9uU2VsZWN0QmxvY2s6IHRoaXMub25TZWxlY3RCbG9jay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIG9uUmVzaXplU3RhcnQ6IHRoaXMub25SZXNpemVTdGFydC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0Q3VzdG9tOiB0aGlzLm9uRHJhZ1N0YXJ0Q3VzdG9tLmJpbmQodGhpcylcclxuXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIGhvdXJMYWJlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHVibGljIHNjaGVkdWxlZE9iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXSA9IFtdO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSByZXNpemluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVzaXplRGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nO1xyXG4gIHByaXZhdGUgaW5pdGlhbFk6IG51bWJlcjtcclxuICBwcml2YXRlIGluaXRpYWxIZWlnaHQ6IG51bWJlcjtcclxuICBwcml2YXRlIGluaXRpYWxUb3A6IG51bWJlcjtcclxuICBwcml2YXRlIGN1cnJlbnRSZXNpemluZ09iamVjdDogU2NoZWR1bGluZ09iamVjdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgY3VycmVudERyYWdnaW5nT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBNSU5fSEVJR0hUID0gMzA7XHJcbiAgcHJpdmF0ZSBfc2NoZWR1bGU6IE9iamVjdCA9IHt9O1xyXG5cclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNldCBzY2hlZHVsZSggdmFsdWU6IE9iamVjdCkge1xyXG4gICAgaWYodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMuX3NjaGVkdWxlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyT2JqZWN0cygpO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuX3NjaGVkdWxlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNjaGVkdWxlKCk6IE9iamVjdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgcHVibGljIHN0YXJ0VGltZVByb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZW5kVGltZVByb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgb2JqZWN0c1Byb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hpbGRQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZFByb3A6IHN0cmluZzsgIC8vIElucHV0IGZvciB1bmlxdWUgaWRlbnRpZmllciBwcm9wZXJ0eVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIHRpbWVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG5ld09iamVjdFBsYW5FdmVudDogRXZlbnRFbWl0dGVyPHsgY3VycmVudEhvdXI6IHN0cmluZywgZGF0YTogc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBjdXJyZW50SG91cjogc3RyaW5nLFxyXG4gICAgZGF0YTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50OiBFdmVudEVtaXR0ZXI8e2hvdXI6IHN0cmluZywgZGF0YTpTY2hlZHVsaW5nT2JqZWN0fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtob3VyOiBzdHJpbmcsIGRhdGE6U2NoZWR1bGluZ09iamVjdH0+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgb25SZXNpemUoZXZlbnQ6IHsgdGFyZ2V0OiB7IGlubmVyV2lkdGg6IGFueTsgfTsgfSkge1xyXG4gICAgZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGNsaWNrT3V0KGV2ZW50OiB7IHRhcmdldDogYW55OyB9KSB7XHJcbiAgICBpZighdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmhhbmRsZURlc2VsZWN0QWxsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdlbmVyYXRlVGltZUJsb2NrcygpO1xyXG4gICAgaWYodGhpcy5zY2hlZHVsZSkge1xyXG4gICAgICB0aGlzLnJlbmRlck9iamVjdHMoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vIENhbGN1bGF0ZSBwcm9wZXJ0aWVzIGZvciBlYWNoIHNjaGVkdWxlZCBvYmplY3QgdG8gZGV0ZXJtaW5lIHJlc2l6ZXIgdmlzaWJpbGl0eVxyXG5cclxuXHJcbiAgLy8gRmluZCB0aGUgbmV4dCBvYmplY3QgaW4gdGhlIHNjaGVkdWxlZE9iamVjdHMgbGlzdFxyXG4gIHByaXZhdGUgX2ZpbmROZXh0T2JqZWN0KGN1cnJlbnRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpOiBTY2hlZHVsaW5nT2JqZWN0IHwgbnVsbCB7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLnNjaGVkdWxlZE9iamVjdHMuaW5kZXhPZihjdXJyZW50T2JqZWN0KTtcclxuICAgIGlmIChjdXJyZW50SW5kZXggPj0gMCAmJiBjdXJyZW50SW5kZXggPCB0aGlzLnNjaGVkdWxlZE9iamVjdHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZWRPYmplY3RzW2N1cnJlbnRJbmRleCArIDFdOyAvLyBUaGUgbmV4dCBvYmplY3QgaW4gdGhlIGxpc3RcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsOyAvLyBObyBuZXh0IG9iamVjdCAoaXQncyB0aGUgbGFzdCBvbmUpXHJcbiAgfVxyXG5cclxuICAvLyBGaW5kIHRoZSBwcmV2aW91cyBvYmplY3QgaW4gdGhlIHNjaGVkdWxlZE9iamVjdHMgbGlzdFxyXG4gIHByaXZhdGUgX2ZpbmRQcmV2aW91c09iamVjdChjdXJyZW50T2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KTogU2NoZWR1bGluZ09iamVjdCB8IG51bGwge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmluZGV4T2YoY3VycmVudE9iamVjdCk7XHJcbiAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZWRPYmplY3RzW2N1cnJlbnRJbmRleCAtIDFdOyAvLyBUaGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSBsaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gTm8gcHJldmlvdXMgb2JqZWN0IChpdCdzIHRoZSBmaXJzdCBvbmUpXHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIHJlbmRlck9iamVjdHMoKSB7XHJcbiAgICBpZih0aGlzLnNjaGVkdWxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNjaGVkdWxlZE9iamVjdHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBvYmplY3RzOiBPYmplY3RbXSA9IHRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF07XHJcblxyXG4gICAgICBsZXQgc2NoZWR1bGluZ09iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXSA9IFtdO1xyXG5cclxuXHJcbiAgICAgIGlmIChvYmplY3RzICYmIG9iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9iamVjdHMuZm9yRWFjaChvYmplY3QgPT4ge1xyXG4gICAgICAgICAgbGV0IHRvcERpZmZlcmVuY2U6IG51bWJlciA9IHRoaXMudGltZURpZmZlcmVuY2UodGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSwgb2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0pO1xyXG4gICAgICAgICAgc2NoZWR1bGluZ09iamVjdHMucHVzaChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiBvYmplY3RbJ3RpdGxlJ10sXHJcbiAgICAgICAgICAgICAgc3ViVGl0bGU6IG9iamVjdFsnc3ViVGl0bGUnXSxcclxuXHJcbiAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKG9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdKSxcclxuICAgICAgICAgICAgICBlbmQ6IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKG9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSksXHJcbiAgICAgICAgICAgICAgaWQ6IG9iamVjdFt0aGlzLmlkUHJvcF0sXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnRpbWVEaWZmZXJlbmNlKG9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdLCBvYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0pLFxyXG4gICAgICAgICAgICAgIHRvcDogdG9wRGlmZmVyZW5jZSxcclxuICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cyA9IHNjaGVkdWxpbmdPYmplY3RzO1xyXG5cclxuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TZWxlY3RCbG9jayhvYmo6IFNjaGVkdWxpbmdPYmplY3QpIHtcclxuICAgIG9iai5zZWxlY3RlZCA9ICFvYmouc2VsZWN0ZWQ7XHJcbiAgICBpZihvYmouc2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzLmZvckVhY2goKHNjaGVkdWxlZE9iamVjdDogU2NoZWR1bGluZ09iamVjdCkgPT4ge1xyXG4gICAgICAgIGlmIChzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgJiYgc2NoZWR1bGVkT2JqZWN0ICE9PSBvYmopIHtcclxuICAgICAgICAgIHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCA9IG9iajtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbShvYmo6IFNjaGVkdWxpbmdPYmplY3QpIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0ID0gb2JqO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEcm9wKGRyYWdFdmVudDogRHJhZ0V2ZW50LCBob3VyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QpIHtcclxuICAgICAgLy9UaGUgb3JkZXIgd2FzIHNjaGVkdWxlZCBhbmQgbmVlZHMgdG8gYmUgbW92ZWRcclxuXHJcbiAgICAgIGxldCBzdGFydDogRGF0ZSA9IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LnN0YXJ0O1xyXG4gICAgICBsZXQgaG91clNwbGl0ID0gaG91ci5zcGxpdChcIjpcIilcclxuICAgICAgc3RhcnQuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzBdKSk7XHJcbiAgICAgIHN0YXJ0LnNldE1pbnV0ZXMocGFyc2VJbnQoaG91clNwbGl0WzFdKSk7XHJcbiAgICAgIGxldCBzY2hlZHVsZWRPYmplY3QgPSB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZmluZCggc2NoZWR1bGVkT2JqZWN0ID0+IHNjaGVkdWxlZE9iamVjdC5pZCA9PT0gdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaWQpO1xyXG4gICAgICBpZihzY2hlZHVsZWRPYmplY3QpIHtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Quc3RhcnQgPSBzdGFydDtcclxuXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsT2JqZWN0OiBPYmplY3QgPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdLmZpbmQoKG9iamVjdDogT2JqZWN0KSA9PiBvYmplY3RbdGhpcy5pZFByb3BdID09PSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5pZCk7XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSA9IHN0YXJ0O1xyXG4gICAgICAgIGxldCBlbmQ6IERhdGUgPSB0aGlzLmFkZE1pbnV0ZXMob3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaGVpZ2h0KTtcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSA9IGVuZDtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3QuZW5kID0gZW5kO1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC50b3AgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIHNjaGVkdWxlZE9iamVjdC5zdGFydCk7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LmhlaWdodCA9IHRoaXMudGltZURpZmZlcmVuY2Uoc2NoZWR1bGVkT2JqZWN0LnN0YXJ0LCBzY2hlZHVsZWRPYmplY3QuZW5kKTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvcmlnaW5hbE9iamVjdCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGxldCBwYXJzZWQ6IFNjaGVkdWxpbmdPYmplY3QgPSB0aGlzLnRyeVBhcnNlSlNPTk9iamVjdChkcmFnRXZlbnQuZGF0YVRyYW5zZmVyIS5nZXREYXRhKFwidGV4dFwiKSk7XHJcblxyXG4gICAgICBpZiAoIXBhcnNlZCkge1xyXG4gICAgICAgIHRoaXMubmV3T2JqZWN0UGxhbkV2ZW50LmVtaXQoe2N1cnJlbnRIb3VyOiBob3VyLCBkYXRhOiBwYXJzZWQudG9TdHJpbmcoKX0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9Nb3ZlIGJldHdlZW4gY2FsZW5kYXJzIGlzIHN0aWxsIHRvbyBidWdneVxyXG4gICAgICB0aGlzLm1vdmVCZXR3ZWVuQ2FsZW5kYXJzRXZlbnQuZW1pdCh7aG91cjogaG91ciwgZGF0YTogcGFyc2VkfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhbGxvd0Ryb3AoZXZlbnQ6IERyYWdFdmVudCwgaG91cjogc3RyaW5nKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2RyYWctb3ZlcicpKSB7XHJcbiAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdkcmFnLW92ZXInKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0KSB7XHJcbiAgICAgIGxldCBuZXdTdGFydERhdGU6IERhdGUgPSB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5zdGFydCk7XHJcbiAgICAgIGxldCBob3VyU3BsaXQ6IHN0cmluZ1tdID0gaG91ci5zcGxpdChcIjpcIik7XHJcbiAgICAgIG5ld1N0YXJ0RGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VyU3BsaXRbMF0pKTtcclxuICAgICAgbmV3U3RhcnREYXRlLnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFsxXSkpO1xyXG5cclxuICAgICAgaWYodGhpcy5zY2hlZHVsZWRPYmplY3RzLmZpbmQoIChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHNjaGVkdWxlZE9iamVjdC5zdGFydCA9PT0gbmV3U3RhcnREYXRlICkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHB1YmxpYyBoYW5kbGVEcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2RyYWctb3ZlcicpKSB7XHJcbiAgICAgIHRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLW92ZXInKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gVHJpZ2dlcmVkIHdoZW4gcmVzaXppbmcgc3RhcnRzXHJcblxyXG4gIHB1YmxpYyBvblJlc2l6ZVN0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50LCBvYmo6IFNjaGVkdWxpbmdPYmplY3QsIGRpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xyXG4gICAgdGhpcy5yZXNpemluZyA9IHRydWU7XHJcbiAgICB0aGlzLnJlc2l6ZURpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0ID0gb2JqO1xyXG4gICAgdGhpcy5pbml0aWFsWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICB0aGlzLmluaXRpYWxIZWlnaHQgPSBvYmouaGVpZ2h0IHx8IDA7XHJcbiAgICB0aGlzLmluaXRpYWxUb3AgPSBvYmoudG9wIHx8IDA7XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIG1vdXNlbW92ZSBhbmQgbW91c2V1cCBldmVudHMgZ2xvYmFsbHlcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemluZy5iaW5kKHRoaXMpKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplRW5kLmJpbmQodGhpcykpO1xyXG4gIH1cclxuICAvLyBIYW5kbGUgcmVzaXppbmcgd2l0aCBzbmFwcGluZyB0byAzMHB4IGluY3JlbWVudHMgYW5kIG1pbmltdW0gaGVpZ2h0IHJlc3RyaWN0aW9uXHJcblxyXG4gIHB1YmxpYyBvblJlc2l6aW5nKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMucmVzaXppbmcgfHwgIXRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZGVsdGFZID0gZXZlbnQuY2xpZW50WSAtIHRoaXMuaW5pdGlhbFk7XHJcbiAgICBjb25zdCBzbmFwcGVkRGVsdGFZID0gTWF0aC5yb3VuZChkZWx0YVkgLyAzMCkgKiAzMDtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVEaXJlY3Rpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgIGNvbnN0IG5leHRPYmplY3QgPSB0aGlzLl9maW5kTmV4dE9iamVjdCh0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCk7XHJcbiAgICAgIGNvbnN0IG1heEhlaWdodCA9IG5leHRPYmplY3QgPyBuZXh0T2JqZWN0LnRvcCAtIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LnRvcCA6IEluZmluaXR5O1xyXG5cclxuICAgICAgLy8gQmxvY2sgZXhwYW5kaW5nIGJleW9uZCB0aGUgbmV4dCBvYmplY3QgYW5kIHNocmlua2luZyBiZWxvdyAzMHB4XHJcbiAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGgubWF4KHRoaXMuaW5pdGlhbEhlaWdodCArIHNuYXBwZWREZWx0YVksIHRoaXMuTUlOX0hFSUdIVCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LmhlaWdodCA9IE1hdGgubWluKG5ld0hlaWdodCwgbWF4SGVpZ2h0KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVzaXplRGlyZWN0aW9uID09PSAndG9wJykge1xyXG4gICAgICBjb25zdCBwcmV2aW91c09iamVjdCA9IHRoaXMuX2ZpbmRQcmV2aW91c09iamVjdCh0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCk7XHJcbiAgICAgIGNvbnN0IG1pblRvcCA9IHByZXZpb3VzT2JqZWN0ID8gcHJldmlvdXNPYmplY3QudG9wICsgcHJldmlvdXNPYmplY3QuaGVpZ2h0IDogMDtcclxuXHJcbiAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGgubWF4KHRoaXMuaW5pdGlhbEhlaWdodCAtIHNuYXBwZWREZWx0YVksIHRoaXMuTUlOX0hFSUdIVCk7XHJcbiAgICAgIGNvbnN0IG5ld1RvcCA9IHRoaXMuaW5pdGlhbFRvcCArICh0aGlzLmluaXRpYWxIZWlnaHQgLSBuZXdIZWlnaHQpO1xyXG5cclxuICAgICAgLy8gQmxvY2sgbW92aW5nIGFib3ZlIHRoZSBwcmV2aW91cyBvYmplY3QncyBib3R0b20gYW5kIHNocmlua2luZyBiZWxvdyBNSU5fSEVJR0hUXHJcbiAgICAgIGlmIChuZXdIZWlnaHQgPj0gdGhpcy5NSU5fSEVJR0hUICYmIG5ld1RvcCA+PSBtaW5Ub3ApIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC50b3AgPSBuZXdUb3A7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRW5zdXJlIGNoYW5nZSBkZXRlY3Rpb24gaGFwcGVuc1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIC8vIFRyaWdnZXJlZCB3aGVuIHJlc2l6aW5nIGVuZHNcclxuXHJcbiAgcHVibGljIG9uUmVzaXplRW5kKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgb2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0ID0gdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3Q7XHJcblxyXG4gICAgaWYob2JqZWN0ICYmIG9iamVjdC5zZWxlY3RlZCkge1xyXG4gICAgICBsZXQgb3JpZ2luYWxPYmplY3QgPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdLmZpbmQoKHNjaGVkdWxlZE9iamVjdDogT2JqZWN0KSA9PiBzY2hlZHVsZWRPYmplY3RbdGhpcy5pZFByb3BdID09PSBvYmplY3QuaWQpO1xyXG5cclxuICAgICAgaWYgKG9yaWdpbmFsT2JqZWN0KSB7XHJcbiAgICAgICAgLy8gU3RhcnQgZGF0ZSBjYWxjdWxhdGlvbiBmaXJzdFxyXG4gICAgICAgIG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0gPSB0aGlzLmFkZE1pbnV0ZXModGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSksIG9iamVjdC50b3ApO1xyXG5cclxuICAgICAgICAvLyBUaGVuICBlbmQgZGF0ZSBjYWxjdWxhdGlvbiBiYXNlZCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBvYmplY3RcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSA9IHRoaXMuYWRkTWludXRlcyh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvcmlnaW5hbE9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdKSwgb2JqZWN0LmhlaWdodCk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQob3JpZ2luYWxPYmplY3QpO1xyXG5cclxuICAgICAgdGhpcy5yZXNpemluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCA9IG51bGw7XHJcblxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gUmVtb3ZlIGdsb2JhbCBldmVudCBsaXN0ZW5lcnNcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemluZy5iaW5kKHRoaXMpKTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplRW5kLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRpbWVEaWZmZXJlbmNlKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSkge1xyXG4gICAgbGV0IGRpZmZlcmVuY2UgPSB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihkYXRlMSkuZ2V0VGltZSgpIC8gMTAwMCAtIHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKGRhdGUyKS5nZXRUaW1lKCkgLyAxMDAwO1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKGRpZmZlcmVuY2UgLyA2MCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlVGltZUJsb2NrcygpIHtcclxuICAgIGxldCBzdGFydFVuaXg6IG51bWJlciA9ICF0aGlzLmNoaWxkUHJvcCA/IHRoaXMuZGF0ZVRvVW5peEVwb2NoKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5zdGFydFRpbWVQcm9wXSkpIDogdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSkpO1xyXG4gICAgbGV0IGVuZFVuaXg6IG51bWJlciA9ICF0aGlzLmNoaWxkUHJvcCA/IHRoaXMuZGF0ZVRvVW5peEVwb2NoKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5lbmRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuZW5kVGltZVByb3BdKSk7XHJcblxyXG4gICAgbGV0IGludGVydmFsID0gNjAgKiA2MDtcclxuXHJcbiAgICBmb3IgKGxldCBob3VyQ291bnQgPSBzdGFydFVuaXg7IGhvdXJDb3VudCA8PSBlbmRVbml4OyBob3VyQ291bnQgKz0gaW50ZXJ2YWwpIHtcclxuICAgICAgbGV0IGhvdXIgPSBuZXcgRGF0ZShob3VyQ291bnQgKiAxMDAwKVxyXG4gICAgICBsZXQgaG91clN0cmluZyA9IGAke2hvdXIuZ2V0SG91cnMoKX06JHtob3VyLmdldE1pbnV0ZXMoKSA9PT0gMCA/ICcwMCcgOiBob3VyLmdldE1pbnV0ZXMoKX1gO1xyXG4gICAgICB0aGlzLmhvdXJMYWJlbHMucHVzaChob3VyU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkYXRlVG9Vbml4RXBvY2goZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFRpbWUoKSkgLyAxMDAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE1pbnV0ZXMoZGF0ZTogRGF0ZSwgbWludXRlczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyBtaW51dGVzICogNjAwMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyeVBhcnNlSlNPTk9iamVjdChqc29uU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBvID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcclxuICAgICAgaWYgKG8gJiYgdHlwZW9mIG8gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICByZXR1cm4gbztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRIYWxmSG91cihob3VyOiBzdHJpbmcpIHtcclxuICAgIGxldCBzcGxpdCA9IGhvdXIuc3BsaXQoXCI6XCIpO1xyXG4gICAgc3BsaXRbMV0gPSBcIjMwXCI7XHJcbiAgICByZXR1cm4gc3BsaXQuam9pbignOicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnRUWihkYXRlLCB0elN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKCh0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIiA/IG5ldyBEYXRlKGRhdGUpIDogZGF0ZSkudG9Mb2NhbGVTdHJpbmcoXCJlbi1VU1wiLCB7dGltZVpvbmU6IHR6U3RyaW5nfSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnREYXRlVG9FdXJvcGVhbihkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VFooZGF0ZSwgJ0V1cm9wZS9BbXN0ZXJkYW0nKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlc2VsZWN0QWxsKCkge1xyXG4gICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzLmZvckVhY2goIChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHtcclxuICAgICAgaWYoc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iXX0=
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsVUFBVSxFQUNyQixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQWdFdkIsTUFBTSxPQUFPLGlDQUFpQztJQTZENUMsWUFDVSxLQUF3QixFQUN4QixJQUFnQjtRQURoQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0RuQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHekMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQiwwQkFBcUIsR0FBNEIsSUFBSSxDQUFDO1FBQ3RELDBCQUFxQixHQUE0QixJQUFJLENBQUM7UUFDdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBdUJkLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUsdUJBQWtCLEdBQXdELElBQUksWUFBWSxFQUd2RyxDQUFDO1FBRVksOEJBQXlCLEdBQXdELElBQUksWUFBWSxFQUF5QyxDQUFDO1FBR3JKLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFtQmpDLENBQUM7SUFoREQsSUFBb0IsUUFBUSxDQUFFLEtBQWE7UUFDekMsSUFBRyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUks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QyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBekVDLGlCQUFpQjtZQUNOLFVBQVU7Ozt1QkEwRnBCLEtBQUs7NEJBYUwsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLO3FCQUNMLEtBQUs7OEJBRUwsTUFBTTtpQ0FDTixNQUFNO3dDQUtOLE1BQU07d0JBRU4sV0FBVyxTQUFDLHFDQUFxQzt1QkFHakQsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzt1QkFLeEMsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW50ZXJmYWNlIFNjaGVkdWxpbmdPYmplY3Qge1xyXG4gIHN0YXJ0OiBEYXRlO1xyXG4gIGVuZDogRGF0ZTtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBzdWJUaXRsZT86IHN0cmluZztcclxuICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgdG9wPzogbnVtYmVyO1xyXG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgc2hvd1RvcFJlc2l6ZXI/OiBib29sZWFuO1xyXG4gIHNob3dCb3R0b21SZXNpemVyPzogYm9vbGVhbjtcclxuXHJcblxyXG4gIFtrZXk6IHN0cmluZ106IGFueTsgLy8gQWxsb3dzIGR5bmFtaWMgcHJvcGVydGllcyBpbmNsdWRpbmcgdW5pcXVlIGlkZW50aWZpZXJzXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1ibG9ja1wiICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJMYWJlbHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG91ci1sYWJlbFwiPjxzcGFuIFt0ZXh0Q29udGVudF09XCJob3VyXCI+PC9zcGFuPjwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWRpc3BsYXlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXJzdC1oYWxmLWhvdXIgb2JqZWN0LWhhbGZcIlxyXG4gICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudCwgaG91cilcIlxyXG4gICAgICAgICAgICAgICAoZHJhZ2xlYXZlKT1cImhhbmRsZURyYWdMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQsIGhvdXIpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kLWhhbGYtaG91ciBvYmplY3QtaGFsZlwiXHJcbiAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCBhZGRIYWxmSG91cihob3VyKSlcIlxyXG4gICAgICAgICAgICAgICAoZHJhZ2xlYXZlKT1cImhhbmRsZURyYWdMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQsIGFkZEhhbGZIb3VyKGhvdXIpKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlZC1vYmplY3RzXCIgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIG9iamVjdHM6IHNjaGVkdWxlZE9iamVjdHMsXHJcbiAgICAgICAgICAgICAgb25TZWxlY3RCbG9jazogdGhpcy5vblNlbGVjdEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgb25SZXNpemVTdGFydDogdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgb25EcmFnU3RhcnRDdXN0b206IHRoaXMub25EcmFnU3RhcnRDdXN0b20uYmluZCh0aGlzKVxyXG5cclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICBgLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgaG91ckxhYmVsczogc3RyaW5nW10gPSBbXTtcclxuICBwdWJsaWMgc2NoZWR1bGVkT2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdID0gW107XHJcblxyXG5cclxuICBwcml2YXRlIHJlc2l6aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXNpemVEaXJlY3Rpb246ICd0b3AnIHwgJ2JvdHRvbSc7XHJcbiAgcHJpdmF0ZSBpbml0aWFsWTogbnVtYmVyO1xyXG4gIHByaXZhdGUgaW5pdGlhbEhlaWdodDogbnVtYmVyO1xyXG4gIHByaXZhdGUgaW5pdGlhbFRvcDogbnVtYmVyO1xyXG4gIHByaXZhdGUgY3VycmVudFJlc2l6aW5nT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RHJhZ2dpbmdPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIE1JTl9IRUlHSFQgPSAzMDtcclxuICBwcml2YXRlIF9zY2hlZHVsZTogT2JqZWN0ID0ge307XHJcblxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHNjaGVkdWxlKCB2YWx1ZTogT2JqZWN0KSB7XHJcbiAgICBpZih2YWx1ZSAmJiB2YWx1ZSAhPT0gdGhpcy5fc2NoZWR1bGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJPYmplY3RzKCk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5fc2NoZWR1bGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2NoZWR1bGUoKTogT2JqZWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc3RhcnRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvYmplY3RzUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGlsZFByb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGlkUHJvcDogc3RyaW5nOyAgLy8gSW5wdXQgZm9yIHVuaXF1ZSBpZGVudGlmaWVyIHByb3BlcnR5XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGltZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbmV3T2JqZWN0UGxhbkV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjdXJyZW50SG91cjogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGN1cnJlbnRIb3VyOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBzdHJpbmdcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIG1vdmVCZXR3ZWVuQ2FsZW5kYXJzRXZlbnQ6IEV2ZW50RW1pdHRlcjx7aG91cjogc3RyaW5nLCBkYXRhOlNjaGVkdWxpbmdPYmplY3R9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2hvdXI6IHN0cmluZywgZGF0YTpTY2hlZHVsaW5nT2JqZWN0fT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZScpXHJcbiAgcHVibGljIHNob3dDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvblJlc2l6ZShldmVudDogeyB0YXJnZXQ6IHsgaW5uZXJXaWR0aDogYW55OyB9OyB9KSB7XHJcbiAgICBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgY2xpY2tPdXQoZXZlbnQ6IHsgdGFyZ2V0OiBhbnk7IH0pIHtcclxuICAgIGlmKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRGVzZWxlY3RBbGwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVUaW1lQmxvY2tzKCk7XHJcbiAgICBpZih0aGlzLnNjaGVkdWxlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyT2JqZWN0cygpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHByb3BlcnRpZXMgZm9yIGVhY2ggc2NoZWR1bGVkIG9iamVjdCB0byBkZXRlcm1pbmUgcmVzaXplciB2aXNpYmlsaXR5XHJcblxyXG5cclxuICAvLyBGaW5kIHRoZSBuZXh0IG9iamVjdCBpbiB0aGUgc2NoZWR1bGVkT2JqZWN0cyBsaXN0XHJcbiAgcHJpdmF0ZSBfZmluZE5leHRPYmplY3QoY3VycmVudE9iamVjdDogU2NoZWR1bGluZ09iamVjdCk6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5pbmRleE9mKGN1cnJlbnRPYmplY3QpO1xyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+PSAwICYmIGN1cnJlbnRJbmRleCA8IHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlZE9iamVjdHNbY3VycmVudEluZGV4ICsgMV07IC8vIFRoZSBuZXh0IG9iamVjdCBpbiB0aGUgbGlzdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIG5leHQgb2JqZWN0IChpdCdzIHRoZSBsYXN0IG9uZSlcclxuICB9XHJcblxyXG4gIC8vIEZpbmQgdGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgc2NoZWR1bGVkT2JqZWN0cyBsaXN0XHJcbiAgcHJpdmF0ZSBfZmluZFByZXZpb3VzT2JqZWN0KGN1cnJlbnRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpOiBTY2hlZHVsaW5nT2JqZWN0IHwgbnVsbCB7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLnNjaGVkdWxlZE9iamVjdHMuaW5kZXhPZihjdXJyZW50T2JqZWN0KTtcclxuICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlZE9iamVjdHNbY3VycmVudEluZGV4IC0gMV07IC8vIFRoZSBwcmV2aW91cyBvYmplY3QgaW4gdGhlIGxpc3RcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsOyAvLyBObyBwcmV2aW91cyBvYmplY3QgKGl0J3MgdGhlIGZpcnN0IG9uZSlcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcmVuZGVyT2JqZWN0cygpIHtcclxuICAgIGlmKHRoaXMuc2NoZWR1bGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG9iamVjdHM6IE9iamVjdFtdID0gdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXTtcclxuXHJcbiAgICAgIGxldCBzY2hlZHVsaW5nT2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdID0gW107XHJcblxyXG5cclxuICAgICAgaWYgKG9iamVjdHMgJiYgb2JqZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiB7XHJcbiAgICAgICAgICBsZXQgdG9wRGlmZmVyZW5jZTogbnVtYmVyID0gdGhpcy50aW1lRGlmZmVyZW5jZSh0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdLCBvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSk7XHJcbiAgICAgICAgICBzY2hlZHVsaW5nT2JqZWN0cy5wdXNoKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6IG9iamVjdFsndGl0bGUnXSxcclxuICAgICAgICAgICAgICBzdWJUaXRsZTogb2JqZWN0WydzdWJUaXRsZSddLFxyXG5cclxuICAgICAgICAgICAgICBzdGFydDogdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4ob2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0pLFxyXG4gICAgICAgICAgICAgIGVuZDogdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4ob2JqZWN0W3RoaXMuZW5kVGltZVByb3BdKSxcclxuICAgICAgICAgICAgICBpZDogb2JqZWN0W3RoaXMuaWRQcm9wXSxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMudGltZURpZmZlcmVuY2Uob2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0sIG9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSksXHJcbiAgICAgICAgICAgICAgdG9wOiB0b3BEaWZmZXJlbmNlLFxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzID0gc2NoZWR1bGluZ09iamVjdHM7XHJcblxyXG4gICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbGVjdEJsb2NrKG9iajogU2NoZWR1bGluZ09iamVjdCkge1xyXG4gICAgb2JqLnNlbGVjdGVkID0gIW9iai5zZWxlY3RlZDtcclxuICAgIGlmKG9iai5zZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZm9yRWFjaCgoc2NoZWR1bGVkT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgaWYgKHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCAmJiBzY2hlZHVsZWRPYmplY3QgIT09IG9iaikge1xyXG4gICAgICAgICAgc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0ID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRHJhZ1N0YXJ0Q3VzdG9tKG9iajogU2NoZWR1bGluZ09iamVjdCkge1xyXG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QgPSBvYmo7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGhhbmRsZURyb3AoZHJhZ0V2ZW50OiBEcmFnRXZlbnQsIGhvdXI6IHN0cmluZykge1xyXG4gICAgZHJhZ0V2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBkcmFnRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYoIXRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF0gfHwgIXRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF0uZmluZCgob2JqZWN0OiBPYmplY3QpID0+IG9iamVjdFt0aGlzLmlkUHJvcF0gPT09IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LmlkKSAmJiB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QpIHtcclxuICAgICAgLy9UaGUgb3JkZXIgd2FzIHNjaGVkdWxlZCBhbmQgbmVlZHMgdG8gYmUgbW92ZWRcclxuXHJcbiAgICAgIGxldCBzdGFydDogRGF0ZSA9IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LnN0YXJ0O1xyXG4gICAgICBsZXQgaG91clNwbGl0ID0gaG91ci5zcGxpdChcIjpcIilcclxuICAgICAgc3RhcnQuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzBdKSk7XHJcbiAgICAgIHN0YXJ0LnNldE1pbnV0ZXMocGFyc2VJbnQoaG91clNwbGl0WzFdKSk7XHJcbiAgICAgIGxldCBzY2hlZHVsZWRPYmplY3QgPSB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZmluZCggc2NoZWR1bGVkT2JqZWN0ID0+IHNjaGVkdWxlZE9iamVjdC5pZCA9PT0gdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaWQpO1xyXG4gICAgICBpZihzY2hlZHVsZWRPYmplY3QpIHtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Quc3RhcnQgPSBzdGFydDtcclxuXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsT2JqZWN0OiBPYmplY3QgPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdLmZpbmQoKG9iamVjdDogT2JqZWN0KSA9PiBvYmplY3RbdGhpcy5pZFByb3BdID09PSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5pZCk7XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSA9IHN0YXJ0O1xyXG4gICAgICAgIGxldCBlbmQ6IERhdGUgPSB0aGlzLmFkZE1pbnV0ZXMob3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaGVpZ2h0KTtcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSA9IGVuZDtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3QuZW5kID0gZW5kO1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC50b3AgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIHNjaGVkdWxlZE9iamVjdC5zdGFydCk7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LmhlaWdodCA9IHRoaXMudGltZURpZmZlcmVuY2Uoc2NoZWR1bGVkT2JqZWN0LnN0YXJ0LCBzY2hlZHVsZWRPYmplY3QuZW5kKTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvcmlnaW5hbE9iamVjdCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgbGV0IHBhcnNlZDogU2NoZWR1bGluZ09iamVjdCA9IHRoaXMudHJ5UGFyc2VKU09OT2JqZWN0KGRyYWdFdmVudC5kYXRhVHJhbnNmZXIhLmdldERhdGEoXCJ0ZXh0XCIpKTtcclxuXHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgdGhpcy5uZXdPYmplY3RQbGFuRXZlbnQuZW1pdCh7Y3VycmVudEhvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZC50b1N0cmluZygpfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50LmVtaXQoe2hvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFsbG93RHJvcChldmVudDogRHJhZ0V2ZW50LCBob3VyOiBzdHJpbmcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1vdmVyJykpIHtcclxuICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2RyYWctb3ZlcicpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QpIHtcclxuICAgICAgbGV0IG5ld1N0YXJ0RGF0ZTogRGF0ZSA9IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LnN0YXJ0KTtcclxuICAgICAgbGV0IGhvdXJTcGxpdDogc3RyaW5nW10gPSBob3VyLnNwbGl0KFwiOlwiKTtcclxuICAgICAgbmV3U3RhcnREYXRlLnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFswXSkpO1xyXG4gICAgICBuZXdTdGFydERhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzFdKSk7XHJcblxyXG4gICAgICBpZih0aGlzLnNjaGVkdWxlZE9iamVjdHMuZmluZCggKHNjaGVkdWxlZE9iamVjdDogU2NoZWR1bGluZ09iamVjdCkgPT4gc2NoZWR1bGVkT2JqZWN0LnN0YXJ0ID09PSBuZXdTdGFydERhdGUgKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgcHVibGljIGhhbmRsZURyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1vdmVyJykpIHtcclxuICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctb3ZlcicpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBUcmlnZ2VyZWQgd2hlbiByZXNpemluZyBzdGFydHNcclxuXHJcbiAgcHVibGljIG9uUmVzaXplU3RhcnQoZXZlbnQ6IE1vdXNlRXZlbnQsIG9iajogU2NoZWR1bGluZ09iamVjdCwgZGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nKSB7XHJcbiAgICB0aGlzLnJlc2l6aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzaXplRGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBvYmo7XHJcbiAgICB0aGlzLmluaXRpYWxZID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaW5pdGlhbEhlaWdodCA9IG9iai5oZWlnaHQgfHwgMDtcclxuICAgIHRoaXMuaW5pdGlhbFRvcCA9IG9iai50b3AgfHwgMDtcclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gbW91c2Vtb3ZlIGFuZCBtb3VzZXVwIGV2ZW50cyBnbG9iYWxseVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6aW5nLmJpbmQodGhpcykpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG4gIC8vIEhhbmRsZSByZXNpemluZyB3aXRoIHNuYXBwaW5nIHRvIDMwcHggaW5jcmVtZW50cyBhbmQgbWluaW11bSBoZWlnaHQgcmVzdHJpY3Rpb25cclxuXHJcbiAgcHVibGljIG9uUmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yZXNpemluZyB8fCAhdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkZWx0YVkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5pbml0aWFsWTtcclxuICAgIGNvbnN0IHNuYXBwZWREZWx0YVkgPSBNYXRoLnJvdW5kKGRlbHRhWSAvIDMwKSAqIDMwO1xyXG5cclxuICAgIGlmICh0aGlzLnJlc2l6ZURpcmVjdGlvbiA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgY29uc3QgbmV4dE9iamVjdCA9IHRoaXMuX2ZpbmROZXh0T2JqZWN0KHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0KTtcclxuICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbmV4dE9iamVjdCA/IG5leHRPYmplY3QudG9wIC0gdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QudG9wIDogSW5maW5pdHk7XHJcblxyXG4gICAgICAvLyBCbG9jayBleHBhbmRpbmcgYmV5b25kIHRoZSBuZXh0IG9iamVjdCBhbmQgc2hyaW5raW5nIGJlbG93IDMwcHhcclxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5pbml0aWFsSGVpZ2h0ICsgc25hcHBlZERlbHRhWSwgdGhpcy5NSU5fSEVJR0hUKTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QuaGVpZ2h0ID0gTWF0aC5taW4obmV3SGVpZ2h0LCBtYXhIZWlnaHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemVEaXJlY3Rpb24gPT09ICd0b3AnKSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzT2JqZWN0ID0gdGhpcy5fZmluZFByZXZpb3VzT2JqZWN0KHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0KTtcclxuICAgICAgY29uc3QgbWluVG9wID0gcHJldmlvdXNPYmplY3QgPyBwcmV2aW91c09iamVjdC50b3AgKyBwcmV2aW91c09iamVjdC5oZWlnaHQgOiAwO1xyXG5cclxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5pbml0aWFsSGVpZ2h0IC0gc25hcHBlZERlbHRhWSwgdGhpcy5NSU5fSEVJR0hUKTtcclxuICAgICAgY29uc3QgbmV3VG9wID0gdGhpcy5pbml0aWFsVG9wICsgKHRoaXMuaW5pdGlhbEhlaWdodCAtIG5ld0hlaWdodCk7XHJcblxyXG4gICAgICAvLyBCbG9jayBtb3ZpbmcgYWJvdmUgdGhlIHByZXZpb3VzIG9iamVjdCdzIGJvdHRvbSBhbmQgc2hyaW5raW5nIGJlbG93IE1JTl9IRUlHSFRcclxuICAgICAgaWYgKG5ld0hlaWdodCA+PSB0aGlzLk1JTl9IRUlHSFQgJiYgbmV3VG9wID49IG1pblRvcCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LnRvcCA9IG5ld1RvcDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC5oZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBFbnN1cmUgY2hhbmdlIGRldGVjdGlvbiBoYXBwZW5zXHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gVHJpZ2dlcmVkIHdoZW4gcmVzaXppbmcgZW5kc1xyXG5cclxuICBwdWJsaWMgb25SZXNpemVFbmQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGxldCBvYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgPSB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdDtcclxuXHJcbiAgICBpZihvYmplY3QgJiYgb2JqZWN0LnNlbGVjdGVkKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbE9iamVjdCA9IHRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF0uZmluZCgoc2NoZWR1bGVkT2JqZWN0OiBPYmplY3QpID0+IHNjaGVkdWxlZE9iamVjdFt0aGlzLmlkUHJvcF0gPT09IG9iamVjdC5pZCk7XHJcblxyXG4gICAgICBpZiAob3JpZ2luYWxPYmplY3QpIHtcclxuICAgICAgICAvLyBTdGFydCBkYXRlIGNhbGN1bGF0aW9uIGZpcnN0XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSA9IHRoaXMuYWRkTWludXRlcyh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdKSwgb2JqZWN0LnRvcCk7XHJcblxyXG4gICAgICAgIC8vIFRoZW4gIGVuZCBkYXRlIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHRoZSBoZWlnaHQgb2YgdGhlIG9iamVjdFxyXG4gICAgICAgIG9yaWdpbmFsT2JqZWN0W3RoaXMuZW5kVGltZVByb3BdID0gdGhpcy5hZGRNaW51dGVzKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0pLCBvYmplY3QuaGVpZ2h0KTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvcmlnaW5hbE9iamVjdCk7XHJcblxyXG4gICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0ID0gbnVsbDtcclxuXHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBSZW1vdmUgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6aW5nLmJpbmQodGhpcykpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGltZURpZmZlcmVuY2UoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKSB7XHJcbiAgICBsZXQgZGlmZmVyZW5jZSA9IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKGRhdGUxKS5nZXRUaW1lKCkgLyAxMDAwIC0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTIpLmdldFRpbWUoKSAvIDEwMDA7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMoZGlmZmVyZW5jZSAvIDYwKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVUaW1lQmxvY2tzKCkge1xyXG4gICAgbGV0IHN0YXJ0VW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLnN0YXJ0VGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdKSk7XHJcbiAgICBsZXQgZW5kVW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmVuZFRpbWVQcm9wXSkpIDogdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5lbmRUaW1lUHJvcF0pKTtcclxuXHJcbiAgICBsZXQgaW50ZXJ2YWwgPSA2MCAqIDYwO1xyXG5cclxuICAgIGZvciAobGV0IGhvdXJDb3VudCA9IHN0YXJ0VW5peDsgaG91ckNvdW50IDw9IGVuZFVuaXg7IGhvdXJDb3VudCArPSBpbnRlcnZhbCkge1xyXG4gICAgICBsZXQgaG91ciA9IG5ldyBEYXRlKGhvdXJDb3VudCAqIDEwMDApXHJcbiAgICAgIGxldCBob3VyU3RyaW5nID0gYCR7aG91ci5nZXRIb3VycygpfToke2hvdXIuZ2V0TWludXRlcygpID09PSAwID8gJzAwJyA6IGhvdXIuZ2V0TWludXRlcygpfWA7XHJcbiAgICAgIHRoaXMuaG91ckxhYmVscy5wdXNoKGhvdXJTdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRhdGVUb1VuaXhFcG9jaChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKGRhdGUuZ2V0VGltZSgpKSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTWludXRlcyhkYXRlOiBEYXRlLCBtaW51dGVzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIG1pbnV0ZXMgKiA2MDAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJ5UGFyc2VKU09OT2JqZWN0KGpzb25TdHJpbmc6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IG8gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xyXG4gICAgICBpZiAobyAmJiB0eXBlb2YgbyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEhhbGZIb3VyKGhvdXI6IHN0cmluZykge1xyXG4gICAgbGV0IHNwbGl0ID0gaG91ci5zcGxpdChcIjpcIik7XHJcbiAgICBzcGxpdFsxXSA9IFwiMzBcIjtcclxuICAgIHJldHVybiBzcGxpdC5qb2luKCc6Jyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFRaKGRhdGUsIHR6U3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiID8gbmV3IERhdGUoZGF0ZSkgOiBkYXRlKS50b0xvY2FsZVN0cmluZyhcImVuLVVTXCIsIHt0aW1lWm9uZTogdHpTdHJpbmd9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydERhdGVUb0V1cm9wZWFuKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUWihkYXRlLCAnRXVyb3BlL0Ftc3RlcmRhbScpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVzZWxlY3RBbGwoKSB7XHJcbiAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZm9yRWFjaCggKHNjaGVkdWxlZE9iamVjdDogU2NoZWR1bGluZ09iamVjdCkgPT4ge1xyXG4gICAgICBpZihzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQpIHtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -7,6 +7,7 @@ export class ListOfValuesPopupComponent {
7
7
  this.iconCacheService = iconCacheService;
8
8
  this._elementRef = _elementRef;
9
9
  this.multiselect = false;
10
+ this.showToggleAll = false;
10
11
  this.displayField = 'description';
11
12
  this.searchDisabled = false;
12
13
  this.modelChange = new EventEmitter();
@@ -14,6 +15,7 @@ export class ListOfValuesPopupComponent {
14
15
  this.keyDown = new EventEmitter();
15
16
  this.viewModels = [];
16
17
  this.viewModelsMain = [];
18
+ this.allSelected = false;
17
19
  this._collection = [];
18
20
  this._searchTerm = '';
19
21
  this._lovItems = [];
@@ -159,6 +161,27 @@ export class ListOfValuesPopupComponent {
159
161
  this._scrollIntoView();
160
162
  }
161
163
  }
164
+ selectAll() {
165
+ if (this.viewModels.length > 0) {
166
+ this.viewModels.forEach(vm => vm.checked = true);
167
+ this.selectOptions();
168
+ }
169
+ }
170
+ toggleAll() {
171
+ if (!this.allSelected) {
172
+ if (this.viewModels.length > 0) {
173
+ this.viewModels.forEach(vm => vm.checked = true);
174
+ this.selectOptions();
175
+ }
176
+ }
177
+ else {
178
+ if (this.viewModels.length > 0) {
179
+ this.viewModels.forEach(vm => vm.checked = false);
180
+ this.selectOptions();
181
+ }
182
+ }
183
+ this.allSelected = !this.allSelected;
184
+ }
162
185
  _prepareViewModelsMain() {
163
186
  this.viewModelsMain.length = 0;
164
187
  this.collection.forEach(m => {
@@ -199,36 +222,40 @@ ListOfValuesPopupComponent.decorators = [
199
222
  { type: Component, args: [{
200
223
  selector: 'co-list-of-values-popup',
201
224
  template: `
202
- <div class="lov-options" [overlay]="parentForOverlay" [inheritWidth]="true" [ngClass]="customCssClass"
203
- id="lov-popup"
204
- role="listbox" [tabindex]="-1"
205
- (clickOutside)="closePopup.emit($event)">
206
- <co-input-search *ngIf="multiselect"
207
- tabindex="-1"
208
- [(model)]="searchTerm"
209
- [placeholder]="searchPlaceholder"
210
- (keydown)="handleInputKeyDown($event)"
211
- (modelChange)="filterViewModels()"></co-input-search>
212
- <ul class="dropdown-list" #dropDownList>
213
- <li
214
- #lovItem
215
- *ngFor="let viewModel of viewModels; let index = index"
216
- [class.selected]="viewModel === highLightModel || viewModels.length === 1"
217
- (click)="selectViewModel(viewModel, !multiselect)"
218
- role="option">
219
- <ng-container *ngIf="!multiselect">
220
- <co-icon *ngIf="viewModel.model[optionIcon]" class="input-text-left-icon" [iconData]="iconCacheService.getIcon(viewModel.model[optionIcon])">
221
- </co-icon>
222
- <span class="lov-options-text" [textContent]="viewModel.model[displayField]"></span>
223
- </ng-container>
224
- <ng-container *ngIf="multiselect">
225
- <co-input-checkbox [model]="viewModel.checked"
226
- (modelChange)="selectViewModel(viewModel, false)"></co-input-checkbox>
227
- <span class="lov-options-text" [textContent]="viewModel.model[displayField]"></span>
228
- </ng-container>
229
- </li>
230
- </ul>
231
- </div>
225
+ <div class="lov-options" [overlay]="parentForOverlay" [inheritWidth]="true" [ngClass]="customCssClass"
226
+ id="lov-popup"
227
+ role="listbox" [tabindex]="-1"
228
+ (clickOutside)="closePopup.emit($event)">
229
+ <co-input-search *ngIf="multiselect"
230
+ tabindex="-1"
231
+ [(model)]="searchTerm"
232
+ [placeholder]="searchPlaceholder"
233
+ (keydown)="handleInputKeyDown($event)"
234
+ (modelChange)="filterViewModels()"></co-input-search>
235
+ <div class="row gap" *ngIf="showToggleAll && multiselect">
236
+ <co-input-checkbox [model]="allSelected" (modelChange)="toggleAll()"></co-input-checkbox>
237
+ <span [textContent]="'DESELECT_ALL' | coreLocalize" (click)="toggleAll()"></span>
238
+ </div>
239
+ <ul class="dropdown-list" #dropDownList>
240
+ <li
241
+ #lovItem
242
+ *ngFor="let viewModel of viewModels; let index = index"
243
+ [class.selected]="viewModel === highLightModel || viewModels.length === 1"
244
+ (click)="selectViewModel(viewModel, !multiselect)"
245
+ role="option">
246
+ <ng-container *ngIf="!multiselect">
247
+ <co-icon *ngIf="viewModel.model[optionIcon]" class="input-text-left-icon" [iconData]="iconCacheService.getIcon(viewModel.model[optionIcon])">
248
+ </co-icon>
249
+ <span class="lov-options-text" [textContent]="viewModel.model[displayField]"></span>
250
+ </ng-container>
251
+ <ng-container *ngIf="multiselect">
252
+ <co-input-checkbox [model]="viewModel.checked"
253
+ (modelChange)="selectViewModel(viewModel, false)"></co-input-checkbox>
254
+ <span class="lov-options-text" [textContent]="viewModel.model[displayField]"></span>
255
+ </ng-container>
256
+ </li>
257
+ </ul>
258
+ </div>
232
259
  `,
233
260
  encapsulation: ViewEncapsulation.None
234
261
  },] }
@@ -243,6 +270,7 @@ ListOfValuesPopupComponent.propDecorators = {
243
270
  inputSearch: [{ type: ViewChild, args: [InputSearchComponent,] }],
244
271
  model: [{ type: Input }],
245
272
  multiselect: [{ type: Input }],
273
+ showToggleAll: [{ type: Input }],
246
274
  displayField: [{ type: Input }],
247
275
  searchPlaceholder: [{ type: Input }],
248
276
  customCssClass: [{ type: Input }],
@@ -255,4 +283,4 @@ ListOfValuesPopupComponent.propDecorators = {
255
283
  keyDown: [{ type: Output }],
256
284
  showClass: [{ type: HostBinding, args: ['class.co-list-of-values-popup',] }]
257
285
  };
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi12YWx1ZXMtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBMkM1RCxNQUFNLE9BQU8sMEJBQTBCO0lBc0ZyQyxZQUNTLGdCQUFtQyxFQUNsQyxXQUF1QjtRQUR4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBcEUxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3QixpQkFBWSxHQUFXLGFBQWEsQ0FBQztRQVNyQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQXFCaEMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUd6RCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFHNUQsWUFBTyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQWtCekUsZUFBVSxHQUFtQixFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBR25DLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pC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QyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDOzBCQUc1QyxTQUFTLFNBQUMsb0JBQW9CO29CQU85QixLQUFLOzBCQUdMLEtBQUs7MkJBR0wsS0FBSztnQ0FHTCxLQUFLOzZCQUdMLEtBQUs7NkJBR0wsS0FBSzsrQkFHTCxLQUFLO3lCQUdMLEtBQUs7eUJBR0wsS0FBSzswQkFZTCxNQUFNO3lCQUdOLE1BQU07c0JBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SW5wdXRTZWFyY2hDb21wb25lbnR9IGZyb20gJy4uL2lucHV0LXNlYXJjaC9pbnB1dC1zZWFyY2guY29tcG9uZW50JztcclxuaW1wb3J0IHtLZXlib2FyZEtleX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2tleWJvYXJkLWtleS5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9pY29uL2ljb24tY2FjaGUuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGxvdlZpZXdNb2RlbCB7XHJcbiAgY2hlY2tlZDogYm9vbGVhblxyXG4gIG1vZGVsOiBhbnlcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1saXN0LW9mLXZhbHVlcy1wb3B1cCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJsb3Ytb3B0aW9uc1wiIFtvdmVybGF5XT1cInBhcmVudEZvck92ZXJsYXlcIiBbaW5oZXJpdFdpZHRoXT1cInRydWVcIiBbbmdDbGFzc109XCJjdXN0b21Dc3NDbGFzc1wiXHJcbiAgICAgICAgIGlkPVwibG92LXBvcHVwXCJcclxuICAgICAgICAgcm9sZT1cImxpc3Rib3hcIiBbdGFiaW5kZXhdPVwiLTFcIlxyXG4gICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNsb3NlUG9wdXAuZW1pdCgkZXZlbnQpXCI+XHJcbiAgICAgIDxjby1pbnB1dC1zZWFyY2ggKm5nSWY9XCJtdWx0aXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVJbnB1dEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclZpZXdNb2RlbHMoKVwiPjwvY28taW5wdXQtc2VhcmNoPlxyXG4gICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgI2Ryb3BEb3duTGlzdD5cclxuICAgICAgICA8bGlcclxuICAgICAgICAgICNsb3ZJdGVtXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlld01vZGVsIG9mIHZpZXdNb2RlbHM7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJ2aWV3TW9kZWwgPT09IGhpZ2hMaWdodE1vZGVsIHx8IHZpZXdNb2RlbHMubGVuZ3RoID09PSAxXCJcclxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWaWV3TW9kZWwodmlld01vZGVsLCAhbXVsdGlzZWxlY3QpXCJcclxuICAgICAgICAgIHJvbGU9XCJvcHRpb25cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIj5cclxuICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cInZpZXdNb2RlbC5tb2RlbFtvcHRpb25JY29uXVwiIGNsYXNzPVwiaW5wdXQtdGV4dC1sZWZ0LWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHZpZXdNb2RlbC5tb2RlbFtvcHRpb25JY29uXSlcIj5cclxuICAgICAgICAgICAgICA8L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG92LW9wdGlvbnMtdGV4dFwiIFt0ZXh0Q29udGVudF09XCJ2aWV3TW9kZWwubW9kZWxbZGlzcGxheUZpZWxkXVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbbW9kZWxdPVwidmlld01vZGVsLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInNlbGVjdFZpZXdNb2RlbCh2aWV3TW9kZWwsIGZhbHNlKVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG92LW9wdGlvbnMtdGV4dFwiIFt0ZXh0Q29udGVudF09XCJ2aWV3TW9kZWwubW9kZWxbZGlzcGxheUZpZWxkXVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0T2ZWYWx1ZXNQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZHJlbignbG92SXRlbScsIHtyZWFkOiBFbGVtZW50UmVmfSkgc2V0IGxvdkl0ZW1zKGNoaWxkcmVuKSB7XHJcbiAgICB0aGlzLl9sb3ZJdGVtcyA9IGNoaWxkcmVuLnRvQXJyYXkoKTtcclxuICAgIHRoaXMuX3Njcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdkcm9wRG93bkxpc3QnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIGRyb3BEb3duTGlzdDogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChJbnB1dFNlYXJjaENvbXBvbmVudCkgc2V0IGlucHV0U2VhcmNoKGNvbXBvbmVudDogSW5wdXRTZWFyY2hDb21wb25lbnQpIHtcclxuICAgIHRoaXMuX3NlYXJjaElucHV0ID0gY29tcG9uZW50O1xyXG4gICAgaWYgKHRoaXMuX3NlYXJjaElucHV0KSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaElucHV0LnJlcXVlc3RGb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbW9kZWw6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzcGxheUZpZWxkOiBzdHJpbmcgPSAnZGVzY3JpcHRpb24nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXN0b21Dc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJlbnRGb3JPdmVybGF5OiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvcHRpb25JY29uOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IHZhbHVlIHx8IFtdO1xyXG4gICAgdGhpcy5fcHJlcGFyZVZpZXdNb2RlbHNNYWluKCk7XHJcbiAgICB0aGlzLl9wcmVwYXJlVmlld01vZGVscygpO1xyXG4gICAgdGhpcy5maWx0ZXJWaWV3TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbGxlY3Rpb24oKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZVBvcHVwOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGtleURvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1saXN0LW9mLXZhbHVlcy1wb3B1cCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBzZWFyY2hUZXJtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFRlcm0gPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmhpZ2hMaWdodE1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5maWx0ZXJWaWV3TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlYXJjaFRlcm0oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXJtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZpZXdNb2RlbHM6IGxvdlZpZXdNb2RlbFtdID0gW107XHJcbiAgcHVibGljIHZpZXdNb2RlbHNNYWluOiBsb3ZWaWV3TW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBoaWdoTGlnaHRNb2RlbDogbG92Vmlld01vZGVsO1xyXG5cclxuICBwcml2YXRlIF9jb2xsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3NlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgX2xvdkl0ZW1zOiBFbGVtZW50UmVmW10gPSBbXTtcclxuICBwcml2YXRlIF9zZWFyY2hJbnB1dDogSW5wdXRTZWFyY2hDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2UgOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgICB0aGlzLl9zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tb2RlbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3Qgdmlld01vZGVsOiBsb3ZWaWV3TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbmQodiA9PiBKU09OLnN0cmluZ2lmeSh2Lm1vZGVsKSA9PT0gSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbFtpXSkpO1xyXG4gICAgICAgICAgaWYgKHZpZXdNb2RlbCkge1xyXG4gICAgICAgICAgICB2aWV3TW9kZWwuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgICAgY2FzZSBLZXlib2FyZEtleS5Eb3duOlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROZXh0T3B0aW9uKCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgY2FzZSBLZXlib2FyZEtleS5VcDpcclxuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dE9wdGlvbih0cnVlKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjYXNlIEtleWJvYXJkS2V5LkVudGVyOlxyXG4gICAgICAgICAgaWYgKHRoaXMuaGlnaExpZ2h0TW9kZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RWaWV3TW9kZWwodGhpcy5oaWdoTGlnaHRNb2RlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5rZXlEb3duLm5leHQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5rZXlEb3duLm5leHQoZXZlbnQpO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJWaWV3TW9kZWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcHJlcGFyZVZpZXdNb2RlbHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RWaWV3TW9kZWwodmlld01vZGVsOiBsb3ZWaWV3TW9kZWwsIGNsb3NlUG9wdXA6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgdGhpcy5zZWxlY3RNb2RlbEJ5Vmlld01vZGVsKHZpZXdNb2RlbCwgY2xvc2VQb3B1cCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMudmlld01vZGVscy5maW5kSW5kZXgodm0gPT4gdm0gPT09IHZpZXdNb2RlbCk7XHJcbiAgICAgIHRoaXMudmlld01vZGVsc1tpZHhdLmNoZWNrZWQgPSAhdGhpcy52aWV3TW9kZWxzW2lkeF0uY2hlY2tlZDtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TW9kZWxCeVZpZXdNb2RlbCh2aWV3TW9kZWw6IGxvdlZpZXdNb2RlbCwgY2xvc2VQb3B1cDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbmQodm0gPT4gdm0gPT09IHZpZXdNb2RlbCkubW9kZWw7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB0aGlzLl9zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgaWYgKGNsb3NlUG9wdXApIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGZvciBzaW5nbGUgc2VsZWN0XHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbkFuZENsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3TW9kZWxzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdE5leHRPcHRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubW9kZWwgJiYgdGhpcy5zZWFyY2hUZXJtKSB7XHJcbiAgICAgIGNvbnN0IHdpc2hNb2RlbDogbG92Vmlld01vZGVsID0gdGhpcy52aWV3TW9kZWxzTWFpbi5maW5kKHZtbSA9PiB2bW0ubW9kZWxbdGhpcy5kaXNwbGF5RmllbGRdID09PSB0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICBpZiAod2lzaE1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RWaWV3TW9kZWwod2lzaE1vZGVsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGZvciBtdWx0aSBzZWxlY3RcclxuICBwdWJsaWMgc2VsZWN0T3B0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbHRlcih2ID0+IHYuY2hlY2tlZCkubWFwKG0gPT4gbS5tb2RlbCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TmV4dE9wdGlvbihiYWNrOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGxldCBuZXh0TW9kZWw6IGFueTtcclxuICAgIGlmICghdGhpcy5oaWdoTGlnaHRNb2RlbCkge1xyXG4gICAgICBuZXh0TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNbYmFjayA/IHRoaXMudmlld01vZGVscy5sZW5ndGggLSAxIDogMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjdXJyZW50Vmlld01vZGVsSWR4OiBudW1iZXIgPSB0aGlzLnZpZXdNb2RlbHMuZmluZEluZGV4KHZtID0+IHZtID09PSB0aGlzLmhpZ2hMaWdodE1vZGVsKTtcclxuICAgICAgaWYgKGJhY2spIHtcclxuICAgICAgICBuZXh0TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNbY3VycmVudFZpZXdNb2RlbElkeCA8PSAwID8gdGhpcy52aWV3TW9kZWxzLmxlbmd0aCAtIDEgOiBjdXJyZW50Vmlld01vZGVsSWR4IC0gMV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV4dE1vZGVsID0gdGhpcy52aWV3TW9kZWxzW2N1cnJlbnRWaWV3TW9kZWxJZHggPj0gdGhpcy52aWV3TW9kZWxzLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudFZpZXdNb2RlbElkeCArIDFdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZ2hMaWdodE1vZGVsID0gbmV4dE1vZGVsO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Vmlld01vZGVsKG5leHRNb2RlbCwgZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVWaWV3TW9kZWxzTWFpbigpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld01vZGVsc01haW4ubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICB0aGlzLnZpZXdNb2RlbHNNYWluLnB1c2goe2NoZWNrZWQ6IGZhbHNlLCBtb2RlbDogbX0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVWaWV3TW9kZWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3TW9kZWxzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLnZpZXdNb2RlbHMgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbHRlcihcclxuICAgICAgdm0gPT4gdm0ubW9kZWxbdGhpcy5kaXNwbGF5RmllbGRdICYmIHZtLm1vZGVsW3RoaXMuZGlzcGxheUZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybSA/IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpIDogXCJcIikpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zY3JvbGxJbnRvVmlldygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGl2ZUluZGV4OiBudW1iZXIgPSB0aGlzLnZpZXdNb2RlbHMuZmluZEluZGV4KHZtbSA9PiB2bW0gPT09IHRoaXMuaGlnaExpZ2h0TW9kZWwpO1xyXG4gICAgaWYgKCF0aGlzLl9sb3ZJdGVtcyB8fCB0aGlzLl9sb3ZJdGVtcy5sZW5ndGggPD0gMCB8fCBhY3RpdmVJbmRleCA8IDAgfHwgIXRoaXMuZHJvcERvd25MaXN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLl9sb3ZJdGVtc1thY3RpdmVJbmRleF0ubmF0aXZlRWxlbWVudCA/IHRoaXMuX2xvdkl0ZW1zW2FjdGl2ZUluZGV4XS5uYXRpdmVFbGVtZW50IDogdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgc2Nyb2xsUGFyZW50ID0gdGhpcy5kcm9wRG93bkxpc3QubmF0aXZlRWxlbWVudCA/IHRoaXMuZHJvcERvd25MaXN0Lm5hdGl2ZUVsZW1lbnQgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9zY3JvbGxBY3RpdmVJdGVtSW50b1ZpZXcoYWN0aXZlSXRlbSwgc2Nyb2xsUGFyZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Njcm9sbEFjdGl2ZUl0ZW1JbnRvVmlldyhhY3RpdmVJdGVtOiBhbnksIHNjcm9sbFBhcmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIWFjdGl2ZUl0ZW0gfHwgIXNjcm9sbFBhcmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQge29mZnNldEhlaWdodCwgb2Zmc2V0VG9wfSA9IGFjdGl2ZUl0ZW07XHJcbiAgICBsZXQge29mZnNldEhlaWdodDogcGFyZW50T2Zmc2V0SGVpZ2h0LCBzY3JvbGxUb3AsIG9mZnNldFRvcDogcGFyZW50T2Zmc2V0VG9wfSA9IHNjcm9sbFBhcmVudDtcclxuICAgIG9mZnNldFRvcCA9IG9mZnNldFRvcCAtIHBhcmVudE9mZnNldFRvcDtcclxuXHJcbiAgICBjb25zdCBpc0Fib3ZlID0gb2Zmc2V0VG9wIDwgc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgaXNCZWxvdyA9IG9mZnNldFRvcCArIG9mZnNldEhlaWdodCA+IHNjcm9sbFRvcCArIHBhcmVudE9mZnNldEhlaWdodDtcclxuXHJcbiAgICBpZiAoaXNBYm92ZSkge1xyXG4gICAgICBzY3JvbGxQYXJlbnQuc2Nyb2xsVG8oMCwgb2Zmc2V0VG9wKTtcclxuICAgIH0gZWxzZSBpZiAoaXNCZWxvdykge1xyXG4gICAgICBzY3JvbGxQYXJlbnQuc2Nyb2xsVG8oMCwgb2Zmc2V0VG9wIC0gcGFyZW50T2Zmc2V0SGVpZ2h0ICsgb2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi12YWx1ZXMtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBK0M1RCxNQUFNLE9BQU8sMEJBQTBCO0lBMEZyQyxZQUNTLGdCQUFtQyxFQUNsQyxXQUF1QjtRQUR4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBeEUxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUcvQixpQkFBWSxHQUFXLGFBQWEsQ0FBQztRQVNyQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQXFCaEMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUd6RCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFHNUQsWUFBTyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQWtCekUsZUFBVSxHQUFtQixFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTVC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QkFHTCxLQUFLOzBCQVlMLE1BQU07eUJBR04sTUFBTTtzQkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJbnB1dFNlYXJjaENvbXBvbmVudH0gZnJvbSAnLi4vaW5wdXQtc2VhcmNoL2lucHV0LXNlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0tleWJvYXJkS2V5fSBmcm9tICcuLi8uLi9jb3JlL2VudW0va2V5Ym9hcmQta2V5LmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgbG92Vmlld01vZGVsIHtcclxuICBjaGVja2VkOiBib29sZWFuXHJcbiAgbW9kZWw6IGFueVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWxpc3Qtb2YtdmFsdWVzLXBvcHVwJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG92LW9wdGlvbnNcIiBbb3ZlcmxheV09XCJwYXJlbnRGb3JPdmVybGF5XCIgW2luaGVyaXRXaWR0aF09XCJ0cnVlXCIgW25nQ2xhc3NdPVwiY3VzdG9tQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgIGlkPVwibG92LXBvcHVwXCJcclxuICAgICAgICAgICByb2xlPVwibGlzdGJveFwiIFt0YWJpbmRleF09XCItMVwiXHJcbiAgICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZVBvcHVwLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LXNlYXJjaCAqbmdJZj1cIm11bHRpc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVJbnB1dEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmaWx0ZXJWaWV3TW9kZWxzKClcIj48L2NvLWlucHV0LXNlYXJjaD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ2FwXCIgKm5nSWY9XCJzaG93VG9nZ2xlQWxsICYmIG11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFttb2RlbF09XCJhbGxTZWxlY3RlZFwiIChtb2RlbENoYW5nZSk9XCJ0b2dnbGVBbGwoKVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidERVNFTEVDVF9BTEwnIHwgY29yZUxvY2FsaXplXCIgKGNsaWNrKT1cInRvZ2dsZUFsbCgpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgI2Ryb3BEb3duTGlzdD5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICNsb3ZJdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlld01vZGVsIG9mIHZpZXdNb2RlbHM7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJ2aWV3TW9kZWwgPT09IGhpZ2hMaWdodE1vZGVsIHx8IHZpZXdNb2RlbHMubGVuZ3RoID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWaWV3TW9kZWwodmlld01vZGVsLCAhbXVsdGlzZWxlY3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJ2aWV3TW9kZWwubW9kZWxbb3B0aW9uSWNvbl1cIiBjbGFzcz1cImlucHV0LXRleHQtbGVmdC1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbih2aWV3TW9kZWwubW9kZWxbb3B0aW9uSWNvbl0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvdi1vcHRpb25zLXRleHRcIiBbdGV4dENvbnRlbnRdPVwidmlld01vZGVsLm1vZGVsW2Rpc3BsYXlGaWVsZF1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlzZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbbW9kZWxdPVwidmlld01vZGVsLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJzZWxlY3RWaWV3TW9kZWwodmlld01vZGVsLCBmYWxzZSlcIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb3Ytb3B0aW9ucy10ZXh0XCIgW3RleHRDb250ZW50XT1cInZpZXdNb2RlbC5tb2RlbFtkaXNwbGF5RmllbGRdXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdE9mVmFsdWVzUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2xvdkl0ZW0nLCB7cmVhZDogRWxlbWVudFJlZn0pIHNldCBsb3ZJdGVtcyhjaGlsZHJlbikge1xyXG4gICAgdGhpcy5fbG92SXRlbXMgPSBjaGlsZHJlbi50b0FycmF5KCk7XHJcbiAgICB0aGlzLl9zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJvcERvd25MaXN0Jywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBkcm9wRG93bkxpc3Q6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoSW5wdXRTZWFyY2hDb21wb25lbnQpIHNldCBpbnB1dFNlYXJjaChjb21wb25lbnQ6IElucHV0U2VhcmNoQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLl9zZWFyY2hJbnB1dCA9IGNvbXBvbmVudDtcclxuICAgIGlmICh0aGlzLl9zZWFyY2hJbnB1dCkge1xyXG4gICAgICB0aGlzLl9zZWFyY2hJbnB1dC5yZXF1ZXN0Rm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1vZGVsOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dUb2dnbGVBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzcGxheUZpZWxkOiBzdHJpbmcgPSAnZGVzY3JpcHRpb24nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXN0b21Dc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJlbnRGb3JPdmVybGF5OiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvcHRpb25JY29uOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IHZhbHVlIHx8IFtdO1xyXG4gICAgdGhpcy5fcHJlcGFyZVZpZXdNb2RlbHNNYWluKCk7XHJcbiAgICB0aGlzLl9wcmVwYXJlVmlld01vZGVscygpO1xyXG4gICAgdGhpcy5maWx0ZXJWaWV3TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbGxlY3Rpb24oKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZVBvcHVwOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGtleURvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1saXN0LW9mLXZhbHVlcy1wb3B1cCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBzZWFyY2hUZXJtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFRlcm0gPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmhpZ2hMaWdodE1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5maWx0ZXJWaWV3TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlYXJjaFRlcm0oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXJtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZpZXdNb2RlbHM6IGxvdlZpZXdNb2RlbFtdID0gW107XHJcbiAgcHVibGljIHZpZXdNb2RlbHNNYWluOiBsb3ZWaWV3TW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBoaWdoTGlnaHRNb2RlbDogbG92Vmlld01vZGVsO1xyXG4gIHB1YmxpYyBhbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9jb2xsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3NlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgX2xvdkl0ZW1zOiBFbGVtZW50UmVmW10gPSBbXTtcclxuICBwcml2YXRlIF9zZWFyY2hJbnB1dDogSW5wdXRTZWFyY2hDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2UgOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgICB0aGlzLl9zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tb2RlbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3Qgdmlld01vZGVsOiBsb3ZWaWV3TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbmQodiA9PiBKU09OLnN0cmluZ2lmeSh2Lm1vZGVsKSA9PT0gSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbFtpXSkpO1xyXG4gICAgICAgICAgaWYgKHZpZXdNb2RlbCkge1xyXG4gICAgICAgICAgICB2aWV3TW9kZWwuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgICAgY2FzZSBLZXlib2FyZEtleS5Eb3duOlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROZXh0T3B0aW9uKCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgY2FzZSBLZXlib2FyZEtleS5VcDpcclxuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dE9wdGlvbih0cnVlKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjYXNlIEtleWJvYXJkS2V5LkVudGVyOlxyXG4gICAgICAgICAgaWYgKHRoaXMuaGlnaExpZ2h0TW9kZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RWaWV3TW9kZWwodGhpcy5oaWdoTGlnaHRNb2RlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5rZXlEb3duLm5leHQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5rZXlEb3duLm5leHQoZXZlbnQpO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJWaWV3TW9kZWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcHJlcGFyZVZpZXdNb2RlbHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RWaWV3TW9kZWwodmlld01vZGVsOiBsb3ZWaWV3TW9kZWwsIGNsb3NlUG9wdXA6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgdGhpcy5zZWxlY3RNb2RlbEJ5Vmlld01vZGVsKHZpZXdNb2RlbCwgY2xvc2VQb3B1cCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMudmlld01vZGVscy5maW5kSW5kZXgodm0gPT4gdm0gPT09IHZpZXdNb2RlbCk7XHJcbiAgICAgIHRoaXMudmlld01vZGVsc1tpZHhdLmNoZWNrZWQgPSAhdGhpcy52aWV3TW9kZWxzW2lkeF0uY2hlY2tlZDtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TW9kZWxCeVZpZXdNb2RlbCh2aWV3TW9kZWw6IGxvdlZpZXdNb2RlbCwgY2xvc2VQb3B1cDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbmQodm0gPT4gdm0gPT09IHZpZXdNb2RlbCkubW9kZWw7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB0aGlzLl9zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgaWYgKGNsb3NlUG9wdXApIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGZvciBzaW5nbGUgc2VsZWN0XHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbkFuZENsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3TW9kZWxzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdE5leHRPcHRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubW9kZWwgJiYgdGhpcy5zZWFyY2hUZXJtKSB7XHJcbiAgICAgIGNvbnN0IHdpc2hNb2RlbDogbG92Vmlld01vZGVsID0gdGhpcy52aWV3TW9kZWxzTWFpbi5maW5kKHZtbSA9PiB2bW0ubW9kZWxbdGhpcy5kaXNwbGF5RmllbGRdID09PSB0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICBpZiAod2lzaE1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RWaWV3TW9kZWwod2lzaE1vZGVsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGZvciBtdWx0aSBzZWxlY3RcclxuICBwdWJsaWMgc2VsZWN0T3B0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbHRlcih2ID0+IHYuY2hlY2tlZCkubWFwKG0gPT4gbS5tb2RlbCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TmV4dE9wdGlvbihiYWNrOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGxldCBuZXh0TW9kZWw6IGFueTtcclxuICAgIGlmICghdGhpcy5oaWdoTGlnaHRNb2RlbCkge1xyXG4gICAgICBuZXh0TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNbYmFjayA/IHRoaXMudmlld01vZGVscy5sZW5ndGggLSAxIDogMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjdXJyZW50Vmlld01vZGVsSWR4OiBudW1iZXIgPSB0aGlzLnZpZXdNb2RlbHMuZmluZEluZGV4KHZtID0+IHZtID09PSB0aGlzLmhpZ2hMaWdodE1vZGVsKTtcclxuICAgICAgaWYgKGJhY2spIHtcclxuICAgICAgICBuZXh0TW9kZWwgPSB0aGlzLnZpZXdNb2RlbHNbY3VycmVudFZpZXdNb2RlbElkeCA8PSAwID8gdGhpcy52aWV3TW9kZWxzLmxlbmd0aCAtIDEgOiBjdXJyZW50Vmlld01vZGVsSWR4IC0gMV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV4dE1vZGVsID0gdGhpcy52aWV3TW9kZWxzW2N1cnJlbnRWaWV3TW9kZWxJZHggPj0gdGhpcy52aWV3TW9kZWxzLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudFZpZXdNb2RlbElkeCArIDFdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZ2hMaWdodE1vZGVsID0gbmV4dE1vZGVsO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Vmlld01vZGVsKG5leHRNb2RlbCwgZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3TW9kZWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52aWV3TW9kZWxzLmZvckVhY2godm0gPT4gdm0uY2hlY2tlZCA9IHRydWUpO1xyXG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVBbGwoKTogdm9pZCB7XHJcbiAgICBpZighdGhpcy5hbGxTZWxlY3RlZCkge1xyXG4gICAgICBpZiAodGhpcy52aWV3TW9kZWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnZpZXdNb2RlbHMuZm9yRWFjaCh2bSA9PiB2bS5jaGVja2VkID0gdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdNb2RlbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudmlld01vZGVscy5mb3JFYWNoKHZtID0+IHZtLmNoZWNrZWQgPSBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gIXRoaXMuYWxsU2VsZWN0ZWQ7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVWaWV3TW9kZWxzTWFpbigpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld01vZGVsc01haW4ubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICB0aGlzLnZpZXdNb2RlbHNNYWluLnB1c2goe2NoZWNrZWQ6IGZhbHNlLCBtb2RlbDogbX0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVWaWV3TW9kZWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3TW9kZWxzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLnZpZXdNb2RlbHMgPSB0aGlzLnZpZXdNb2RlbHNNYWluLmZpbHRlcihcclxuICAgICAgdm0gPT4gdm0ubW9kZWxbdGhpcy5kaXNwbGF5RmllbGRdICYmIHZtLm1vZGVsW3RoaXMuZGlzcGxheUZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybSA/IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpIDogXCJcIikpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zY3JvbGxJbnRvVmlldygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGl2ZUluZGV4OiBudW1iZXIgPSB0aGlzLnZpZXdNb2RlbHMuZmluZEluZGV4KHZtbSA9PiB2bW0gPT09IHRoaXMuaGlnaExpZ2h0TW9kZWwpO1xyXG4gICAgaWYgKCF0aGlzLl9sb3ZJdGVtcyB8fCB0aGlzLl9sb3ZJdGVtcy5sZW5ndGggPD0gMCB8fCBhY3RpdmVJbmRleCA8IDAgfHwgIXRoaXMuZHJvcERvd25MaXN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLl9sb3ZJdGVtc1thY3RpdmVJbmRleF0ubmF0aXZlRWxlbWVudCA/IHRoaXMuX2xvdkl0ZW1zW2FjdGl2ZUluZGV4XS5uYXRpdmVFbGVtZW50IDogdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgc2Nyb2xsUGFyZW50ID0gdGhpcy5kcm9wRG93bkxpc3QubmF0aXZlRWxlbWVudCA/IHRoaXMuZHJvcERvd25MaXN0Lm5hdGl2ZUVsZW1lbnQgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9zY3JvbGxBY3RpdmVJdGVtSW50b1ZpZXcoYWN0aXZlSXRlbSwgc2Nyb2xsUGFyZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Njcm9sbEFjdGl2ZUl0ZW1JbnRvVmlldyhhY3RpdmVJdGVtOiBhbnksIHNjcm9sbFBhcmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIWFjdGl2ZUl0ZW0gfHwgIXNjcm9sbFBhcmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQge29mZnNldEhlaWdodCwgb2Zmc2V0VG9wfSA9IGFjdGl2ZUl0ZW07XHJcbiAgICBsZXQge29mZnNldEhlaWdodDogcGFyZW50T2Zmc2V0SGVpZ2h0LCBzY3JvbGxUb3AsIG9mZnNldFRvcDogcGFyZW50T2Zmc2V0VG9wfSA9IHNjcm9sbFBhcmVudDtcclxuICAgIG9mZnNldFRvcCA9IG9mZnNldFRvcCAtIHBhcmVudE9mZnNldFRvcDtcclxuXHJcbiAgICBjb25zdCBpc0Fib3ZlID0gb2Zmc2V0VG9wIDwgc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgaXNCZWxvdyA9IG9mZnNldFRvcCArIG9mZnNldEhlaWdodCA+IHNjcm9sbFRvcCArIHBhcmVudE9mZnNldEhlaWdodDtcclxuXHJcbiAgICBpZiAoaXNBYm92ZSkge1xyXG4gICAgICBzY3JvbGxQYXJlbnQuc2Nyb2xsVG8oMCwgb2Zmc2V0VG9wKTtcclxuICAgIH0gZWxzZSBpZiAoaXNCZWxvdykge1xyXG4gICAgICBzY3JvbGxQYXJlbnQuc2Nyb2xsVG8oMCwgb2Zmc2V0VG9wIC0gcGFyZW50T2Zmc2V0SGVpZ2h0ICsgb2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19