speechrecorderng 2.25.2 → 2.25.3

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,6 +1,7 @@
1
1
  export class AudioClip {
2
2
  constructor(buffer) {
3
3
  this._selection = null;
4
+ this._levelInfos = null;
4
5
  this.selectionObservers = new Array();
5
6
  this._buffer = buffer;
6
7
  }
@@ -22,6 +23,12 @@ export class AudioClip {
22
23
  selObs(this);
23
24
  }
24
25
  }
26
+ get levelInfos() {
27
+ return this._levelInfos;
28
+ }
29
+ set levelInfos(value) {
30
+ this._levelInfos = value;
31
+ }
25
32
  addSelectionObserver(selectionObserver, init = false) {
26
33
  let obsAlreadyInList = this.selectionObservers.find((obs) => (obs === selectionObserver));
27
34
  if (!obsAlreadyInList) {
@@ -66,4 +73,4 @@ export class Selection {
66
73
  return "Selection: from: " + this.leftFrame + " to: " + this.rightFrame + " frame. Refers to sample rate :" + this._sampleRate;
67
74
  }
68
75
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BlcnNpc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBSSxNQUFNLE9BQU8sU0FBUztJQUtsQixZQUFZLE1BQW1CO1FBSHZCLGVBQVUsR0FBZ0IsSUFBSSxDQUFDO1FBSXJDLElBQUksQ0FBQyxrQkFBa0IsR0FBQyxJQUFJLEtBQUssRUFBK0IsQ0FBQTtRQUM5RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFBQSxDQUFDO0lBRUosSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFxQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4Qiw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLG9DQUFvQztRQUNwQyxjQUFjO1FBQ2QsTUFBTTtRQUNOLEtBQUksSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNiO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLGlCQUE2QyxFQUFDLElBQUksR0FBQyxLQUFLO1FBQzNFLElBQUksZ0JBQWdCLEdBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUEsQ0FBQyxHQUFHLEtBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFBO1FBQ25GLElBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7U0FDaEQ7UUFDRCxJQUFHLElBQUksRUFBQztZQUNOLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLGlCQUE2QztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFLEdBQUMsR0FBRyxLQUFHLGlCQUFpQixDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUE7SUFDMUYsQ0FBQztDQUNGO0FBU0QsTUFBTSxPQUFPLFNBQVM7SUFLcEIsWUFBWSxVQUFpQixFQUFDLFVBQWlCLEVBQUMsUUFBZTtRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFDLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFDLFVBQVUsQ0FBQTtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFDLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUMsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBO0lBQ2pGLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDakYsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUF1QztRQUM1QyxJQUFHLGNBQWMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLGNBQWMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sbUJBQW1CLEdBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyxpQ0FBaUMsR0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIiAgICBleHBvcnQgY2xhc3MgQXVkaW9DbGlwIHtcclxuICAgICAgICBwcml2YXRlIF9idWZmZXI6IEF1ZGlvQnVmZmVyO1xyXG4gICAgICAgIHByaXZhdGUgX3NlbGVjdGlvbjpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgICAgIHByaXZhdGUgc2VsZWN0aW9uT2JzZXJ2ZXJzOkFycmF5PChhdWRpb0NsaXA6QXVkaW9DbGlwKT0+dm9pZD47XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGJ1ZmZlcjogQXVkaW9CdWZmZXIpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzPW5ldyBBcnJheTwoYXVkaW9DbGlwOkF1ZGlvQ2xpcCk9PnZvaWQ+KClcclxuICAgICAgICAgICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IGJ1ZmZlcigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgZ2V0IHNlbGVjdGlvbigpOiBTZWxlY3Rpb258bnVsbHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXQgc2VsZWN0aW9uKHZhbHVlOiBTZWxlY3Rpb258bnVsbCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHZhbHVlO1xyXG4gICAgICAgIC8vIGxldCBvYnNDbnQ9dGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMubGVuZ3RoXHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMuZm9yRWFjaCgob2JzKT0+IHtcclxuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKFwiQ2FsbGluZyBvYnNlcnZlclwiKVxyXG4gICAgICAgIC8vICAgb2JzKHRoaXMpXHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgZm9yKGxldCBzZWxPYnMgb2YgdGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMpe1xyXG4gICAgICAgICAgc2VsT2JzKHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBhZGRTZWxlY3Rpb25PYnNlcnZlcihzZWxlY3Rpb25PYnNlcnZlcjooYXVkaW9DbGlwOkF1ZGlvQ2xpcCk9PnZvaWQsaW5pdD1mYWxzZSl7XHJcbiAgICAgICAgbGV0IG9ic0FscmVhZHlJbkxpc3Q9dGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMuZmluZCgob2JzKT0+KG9icz09PXNlbGVjdGlvbk9ic2VydmVyKSlcclxuICAgICAgICBpZighb2JzQWxyZWFkeUluTGlzdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMucHVzaChzZWxlY3Rpb25PYnNlcnZlcilcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoaW5pdCl7XHJcbiAgICAgICAgICBzZWxlY3Rpb25PYnNlcnZlcih0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmVtb3ZlU2VsZWN0aW9uT2JzZXJ2ZXIoc2VsZWN0aW9uT2JzZXJ2ZXI6KGF1ZGlvQ2xpcDpBdWRpb0NsaXApPT52b2lkKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbk9ic2VydmVycz10aGlzLnNlbGVjdGlvbk9ic2VydmVycy5maWx0ZXIoKG9icyk9PntvYnMhPT1zZWxlY3Rpb25PYnNlcnZlcn0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgaW50ZXJmYWNlIFJlYWRlciB7XHJcbiAgICAgICAgcmVhZChkYXRhOiBCbG9iKTogQXVkaW9DbGlwO1xyXG4gICAgfVxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBXcml0ZXIge1xyXG4gICAgICAgIHdyaXRlKGF1ZGlvRGF0YTogQXVkaW9DbGlwKTogQmxvYjtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgY2xhc3MgU2VsZWN0aW9ue1xyXG4gICAgICBwcml2YXRlIF9zYW1wbGVSYXRlOm51bWJlcjtcclxuICAgICAgcHJpdmF0ZSBfc3RhcnRGcmFtZTpudW1iZXI7XHJcbiAgICAgIHByaXZhdGUgX2VuZEZyYW1lOm51bWJlcjtcclxuXHJcbiAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGU6bnVtYmVyLHN0YXJ0RnJhbWU6bnVtYmVyLGVuZEZyYW1lOm51bWJlcil7XHJcbiAgICAgICAgICB0aGlzLl9zYW1wbGVSYXRlPXNhbXBsZVJhdGU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRGcmFtZT1zdGFydEZyYW1lXHJcbiAgICAgICAgdGhpcy5fZW5kRnJhbWU9ZW5kRnJhbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHNhbXBsZVJhdGUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NhbXBsZVJhdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldCBlbmRGcmFtZSgpOm51bWJlcntcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9lbmRGcmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIGdldCBzdGFydEZyYW1lKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RnJhbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdldCBsZWZ0RnJhbWUoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuX3N0YXJ0RnJhbWUgPD0gdGhpcy5fZW5kRnJhbWUpID8gdGhpcy5fc3RhcnRGcmFtZSA6IHRoaXMuX2VuZEZyYW1lXHJcbiAgICAgIH1cclxuICAgICAgZ2V0IHJpZ2h0RnJhbWUoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuX3N0YXJ0RnJhbWUgPD0gdGhpcy5fZW5kRnJhbWUpID8gdGhpcy5fZW5kRnJhbWUgOiB0aGlzLl9zdGFydEZyYW1lXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGVxdWFscyhvdGhlclNlbGVjdGlvbjpTZWxlY3Rpb258bnVsbHx1bmRlZmluZWQpOmJvb2xlYW57XHJcbiAgICAgICAgaWYob3RoZXJTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9zYW1wbGVSYXRlID09IG90aGVyU2VsZWN0aW9uLl9zYW1wbGVSYXRlICYmIHRoaXMuX3N0YXJ0RnJhbWUgPT09IG90aGVyU2VsZWN0aW9uLl9zdGFydEZyYW1lICYmIHRoaXMuX2VuZEZyYW1lID09PSBvdGhlclNlbGVjdGlvbi5fZW5kRnJhbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRvU3RyaW5nKCl7XHJcbiAgICAgICAgICByZXR1cm4gXCJTZWxlY3Rpb246IGZyb206IFwiK3RoaXMubGVmdEZyYW1lK1wiIHRvOiBcIit0aGlzLnJpZ2h0RnJhbWUrXCIgZnJhbWUuIFJlZmVycyB0byBzYW1wbGUgcmF0ZSA6XCIrdGhpcy5fc2FtcGxlUmF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BlcnNpc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQU9kLFlBQVksTUFBbUI7UUFKdkIsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFDL0IsZ0JBQVcsR0FBbUIsSUFBSSxDQUFDO1FBSXpDLElBQUksQ0FBQyxrQkFBa0IsR0FBQyxJQUFJLEtBQUssRUFBK0IsQ0FBQTtRQUM5RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFBQSxDQUFDO0lBRUosSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFxQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4Qiw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLG9DQUFvQztRQUNwQyxjQUFjO1FBQ2QsTUFBTTtRQUNOLEtBQUksSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNiO0lBQ0gsQ0FBQztJQUVMLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBd0I7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVHLG9CQUFvQixDQUFDLGlCQUE2QyxFQUFDLElBQUksR0FBQyxLQUFLO1FBQzNFLElBQUksZ0JBQWdCLEdBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUEsQ0FBQyxHQUFHLEtBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFBO1FBQ25GLElBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7U0FDaEQ7UUFDRCxJQUFHLElBQUksRUFBQztZQUNOLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLGlCQUE2QztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFLEdBQUMsR0FBRyxLQUFHLGlCQUFpQixDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUE7SUFDMUYsQ0FBQztDQUNGO0FBU0QsTUFBTSxPQUFPLFNBQVM7SUFLcEIsWUFBWSxVQUFpQixFQUFDLFVBQWlCLEVBQUMsUUFBZTtRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFDLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFDLFVBQVUsQ0FBQTtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFDLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUMsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBO0lBQ2pGLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDakYsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUF1QztRQUM1QyxJQUFHLGNBQWMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLGNBQWMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sbUJBQW1CLEdBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyxpQ0FBaUMsR0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGV2ZWxJbmZvc30gZnJvbSBcIi4vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBdWRpb0NsaXAge1xyXG5cclxuICAgICAgICBwcml2YXRlIF9idWZmZXI6IEF1ZGlvQnVmZmVyO1xyXG4gICAgICAgIHByaXZhdGUgX3NlbGVjdGlvbjpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgICAgIHByaXZhdGUgX2xldmVsSW5mb3M6TGV2ZWxJbmZvcyB8IG51bGw9bnVsbDtcclxuICAgICAgICBwcml2YXRlIHNlbGVjdGlvbk9ic2VydmVyczpBcnJheTwoYXVkaW9DbGlwOkF1ZGlvQ2xpcCk9PnZvaWQ+O1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihidWZmZXI6IEF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk9ic2VydmVycz1uZXcgQXJyYXk8KGF1ZGlvQ2xpcDpBdWRpb0NsaXApPT52b2lkPigpXHJcbiAgICAgICAgICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCBidWZmZXIoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9idWZmZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgIGdldCBzZWxlY3Rpb24oKTogU2VsZWN0aW9ufG51bGx7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc2V0IHNlbGVjdGlvbih2YWx1ZTogU2VsZWN0aW9ufG51bGwpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSB2YWx1ZTtcclxuICAgICAgICAvLyBsZXQgb2JzQ250PXRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzLmxlbmd0aFxyXG4gICAgICAgIC8vIHRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzLmZvckVhY2goKG9icyk9PiB7XHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIkNhbGxpbmcgb2JzZXJ2ZXJcIilcclxuICAgICAgICAvLyAgIG9icyh0aGlzKVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIGZvcihsZXQgc2VsT2JzIG9mIHRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzKXtcclxuICAgICAgICAgIHNlbE9icyh0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICBnZXQgbGV2ZWxJbmZvcygpOiBMZXZlbEluZm9zIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGV2ZWxJbmZvcztcclxuICB9XHJcblxyXG4gIHNldCBsZXZlbEluZm9zKHZhbHVlOiBMZXZlbEluZm9zIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbGV2ZWxJbmZvcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgICAgIGFkZFNlbGVjdGlvbk9ic2VydmVyKHNlbGVjdGlvbk9ic2VydmVyOihhdWRpb0NsaXA6QXVkaW9DbGlwKT0+dm9pZCxpbml0PWZhbHNlKXtcclxuICAgICAgICBsZXQgb2JzQWxyZWFkeUluTGlzdD10aGlzLnNlbGVjdGlvbk9ic2VydmVycy5maW5kKChvYnMpPT4ob2JzPT09c2VsZWN0aW9uT2JzZXJ2ZXIpKVxyXG4gICAgICAgIGlmKCFvYnNBbHJlYWR5SW5MaXN0KSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk9ic2VydmVycy5wdXNoKHNlbGVjdGlvbk9ic2VydmVyKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihpbml0KXtcclxuICAgICAgICAgIHNlbGVjdGlvbk9ic2VydmVyKHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZW1vdmVTZWxlY3Rpb25PYnNlcnZlcihzZWxlY3Rpb25PYnNlcnZlcjooYXVkaW9DbGlwOkF1ZGlvQ2xpcCk9PnZvaWQpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzPXRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzLmZpbHRlcigob2JzKT0+e29icyE9PXNlbGVjdGlvbk9ic2VydmVyfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyIHtcclxuICAgICAgICByZWFkKGRhdGE6IEJsb2IpOiBBdWRpb0NsaXA7XHJcbiAgICB9XHJcbiAgICBleHBvcnQgaW50ZXJmYWNlIFdyaXRlciB7XHJcbiAgICAgICAgd3JpdGUoYXVkaW9EYXRhOiBBdWRpb0NsaXApOiBCbG9iO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBTZWxlY3Rpb257XHJcbiAgICAgIHByaXZhdGUgX3NhbXBsZVJhdGU6bnVtYmVyO1xyXG4gICAgICBwcml2YXRlIF9zdGFydEZyYW1lOm51bWJlcjtcclxuICAgICAgcHJpdmF0ZSBfZW5kRnJhbWU6bnVtYmVyO1xyXG5cclxuICAgICAgY29uc3RydWN0b3Ioc2FtcGxlUmF0ZTpudW1iZXIsc3RhcnRGcmFtZTpudW1iZXIsZW5kRnJhbWU6bnVtYmVyKXtcclxuICAgICAgICAgIHRoaXMuX3NhbXBsZVJhdGU9c2FtcGxlUmF0ZTtcclxuICAgICAgICB0aGlzLl9zdGFydEZyYW1lPXN0YXJ0RnJhbWVcclxuICAgICAgICB0aGlzLl9lbmRGcmFtZT1lbmRGcmFtZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgc2FtcGxlUmF0ZSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0IGVuZEZyYW1lKCk6bnVtYmVye1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZEZyYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgZ2V0IHN0YXJ0RnJhbWUoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRGcmFtZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZ2V0IGxlZnRGcmFtZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5fc3RhcnRGcmFtZSA8PSB0aGlzLl9lbmRGcmFtZSkgPyB0aGlzLl9zdGFydEZyYW1lIDogdGhpcy5fZW5kRnJhbWVcclxuICAgICAgfVxyXG4gICAgICBnZXQgcmlnaHRGcmFtZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5fc3RhcnRGcmFtZSA8PSB0aGlzLl9lbmRGcmFtZSkgPyB0aGlzLl9lbmRGcmFtZSA6IHRoaXMuX3N0YXJ0RnJhbWVcclxuICAgICAgfVxyXG5cclxuICAgICAgZXF1YWxzKG90aGVyU2VsZWN0aW9uOlNlbGVjdGlvbnxudWxsfHVuZGVmaW5lZCk6Ym9vbGVhbntcclxuICAgICAgICBpZihvdGhlclNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuX3NhbXBsZVJhdGUgPT0gb3RoZXJTZWxlY3Rpb24uX3NhbXBsZVJhdGUgJiYgdGhpcy5fc3RhcnRGcmFtZSA9PT0gb3RoZXJTZWxlY3Rpb24uX3N0YXJ0RnJhbWUgJiYgdGhpcy5fZW5kRnJhbWUgPT09IG90aGVyU2VsZWN0aW9uLl9lbmRGcmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdG9TdHJpbmcoKXtcclxuICAgICAgICAgIHJldHVybiBcIlNlbGVjdGlvbjogZnJvbTogXCIrdGhpcy5sZWZ0RnJhbWUrXCIgdG86IFwiK3RoaXMucmlnaHRGcmFtZStcIiBmcmFtZS4gUmVmZXJzIHRvIHNhbXBsZSByYXRlIDpcIit0aGlzLl9zYW1wbGVSYXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuIl19
@@ -49,13 +49,14 @@ export class LevelBar {
49
49
  }
50
50
  }
51
51
  set displayLevelInfos(levelInfos) {
52
- this._staticLevelInfos = levelInfos;
53
52
  if (levelInfos) {
53
+ this._staticLevelInfos = levelInfos;
54
54
  this.dbValues = levelInfos.bufferLevelInfos.map((li) => {
55
55
  return li.powerLevelsDB();
56
56
  });
57
57
  }
58
58
  else {
59
+ this._staticLevelInfos = null;
59
60
  this.dbValues = new Array();
60
61
  }
61
62
  this.layoutStatic();
@@ -343,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
343
344
  type: HostListener,
344
345
  args: ['window:resize', ['$event']]
345
346
  }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2xpdmVsZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQTs7QUFHckgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFlBQVksR0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFDLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBc0N4QyxNQUFNLE9BQU8sUUFBUTtJQWlCbkIsWUFBb0IsR0FBZSxFQUFVLGlCQUFvQztRQUE3RCxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVBqRixjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFzQixJQUFJLENBQUM7UUFDNUMsdUJBQWtCLEdBQWMsSUFBSSxDQUFDO1FBRTdDLGdCQUFXLEdBQUcscUJBQXFCLENBQUM7UUFHbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBaUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFJRCxRQUFRLENBQUMsRUFBUztRQUNoQixVQUFVLENBQUMsR0FBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLDZDQUE2QztRQUM3QyxJQUFJLGlCQUFpQixHQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxhQUFzQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssYUFBYSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxJQUNJLGlCQUFpQixDQUFDLFVBQTZCO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7UUFDcEMsSUFBSSxVQUFVLEVBQUU7WUFFZCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDckQsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDM0IsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBaUIsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsWUFBb0I7UUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsaUJBQXlCO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQVk7UUFFbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNO1FBRUosbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBRW5ELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBRWhELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQXFCO1FBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZO1FBRWxCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUVqQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN0RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFFSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRTtZQUM3RixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUVuRCw4REFBOEQ7WUFDL0QsZ0JBQWdCO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxDQUEyQixFQUFFLENBQVMsRUFBRSxDQUFTO1FBQzNFLENBQUMsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxVQUFVLEdBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCw0RkFBNEY7SUFDNUYsNEJBQTRCO0lBQzVCLHFDQUFxQztJQUNyQyxFQUFFO0lBQ0Ysc0NBQXNDO0lBQ3RDLDhCQUE4QjtJQUM5QixxQ0FBcUM7SUFDckMsNkJBQTZCO0lBQzdCLDJCQUEyQjtJQUMzQixFQUFFO0lBQ0YsYUFBYTtJQUNiLGlDQUFpQztJQUNqQywrQkFBK0I7SUFDL0IsTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsNkRBQTZEO0lBQzdELEVBQUU7SUFDRiw0QkFBNEI7SUFDNUIsbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQixFQUFFO0lBQ0YsSUFBSTtJQUVJLGNBQWMsQ0FBQyxDQUEyQixFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsTUFBcUI7UUFDN0YsdUJBQXVCO1FBQ3ZCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUVqQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDekIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDekMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXZCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzdCLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUNyQjtpQkFBTSxJQUFHLEtBQUssR0FBRywyQkFBMkIsRUFBRTtnQkFDN0MsQ0FBQyxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxTQUFTLEdBQUMsTUFBTSxDQUFBO2FBQ25CO2lCQUFLO2dCQUNGLENBQUMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUMxQixDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTthQUMxQjtZQUNELENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixDQUFDLENBQUM7WUFDL0MsSUFBSSxLQUFLLEdBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25ELElBQUksaUJBQWlCLEdBQUMsc0JBQXNCLEdBQUMsYUFBYSxDQUFDO1lBQzNELElBQUksTUFBTSxHQUFDLEdBQUcsR0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQzFCLElBQUcsSUFBSSxHQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7Z0JBQ2YsSUFBSSxHQUFDLE1BQU0sR0FBQyxDQUFDLENBQUE7YUFDZDtpQkFBSyxJQUFHLElBQUksR0FBQyxDQUFDLEVBQUM7Z0JBQ2QsSUFBSSxHQUFDLENBQUMsQ0FBQTthQUNQO1lBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ1o7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLENBQVMsRUFBRSxNQUFxQjtRQUVwRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN0QztTQUNGO0lBQ0gsQ0FBQztJQUVRLE9BQU87UUFDZCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsZUFBZTtnQkFDZixDQUFDLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztnQkFDckIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFdkIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7Z0JBRXpCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM1QiwyQkFBMkI7b0JBRTNCLHFCQUFxQjtvQkFDckIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQzVCLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFFbEMsb0NBQW9DO29CQUNwQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN0RCxxQkFBcUI7b0JBQ3JCLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ1IsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDUixTQUFTO29CQUNULElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDVixFQUFFLEdBQUcsQ0FBQyxDQUFDO3FCQUNSO29CQUNELElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO3dCQUM3QixFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7cUJBQzNCO29CQUVELElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQztvQkFDUixLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLENBQUM7d0JBQ3pDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzlCLElBQUksTUFBTSxFQUFFOzRCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7NEJBQ3JDLENBQUMsRUFBRSxDQUFDO3lCQUNQO3FCQUVKO2lCQUNGO2FBRUY7U0FDRjtJQUNILENBQUM7SUFHTyxjQUFjO1FBQ3BCLGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDL0QsSUFBSSxlQUFlLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQztZQUVqRCxPQUFPLGVBQWUsR0FBRyxlQUFlLENBQUM7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxFQUFFO2dCQUNMLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUM3QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsY0FBYyxDQUFDO29CQUVqRCwyQkFBMkI7b0JBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDaEMsK0NBQStDO29CQUMvQyxJQUFHLEVBQUUsSUFBRSxDQUFDLElBQUksRUFBRSxJQUFFLENBQUMsRUFBRTt3QkFDakIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUN0QixDQUFDLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNkLDBCQUEwQjt3QkFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNoQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2QsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNaO2lCQUNGO2FBQ0Y7U0FDRjtJQUVILENBQUM7O3NHQXZVVSxRQUFROzBGQUFSLFFBQVEsc2tCQWhDVDs7Ozs7R0FLVDs0RkEyQlUsUUFBUTtrQkFuQ3BCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELE1BQU0sRUFBRSxDQUFDOzs7Ozs7Ozs7SUFTUCxFQUFFOzs7Ozs7OztJQVFGLEVBQUU7Ozs7OztJQU1GLENBQUM7aUJBRUo7aUlBRytDLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVILGtCQUFrQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVNLGVBQWU7c0JBQTNELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEyQjNDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUI5QixhQUFhO3NCQURoQixLQUFLO2dCQVVGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkF3Qk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7TGV2ZWxJbmZvLCBMZXZlbEluZm9zLCBMZXZlbExpc3RlbmVyfSBmcm9tIFwiLi4vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBUk5fREJfTEVWRUwgPSAtMjtcclxuZXhwb3J0IGNvbnN0IE1JTl9EQl9MRVZFTCA9IC02MC4wO1xyXG5leHBvcnQgY29uc3QgQ09OU0lERVJFRF9TSUxFTkNFX0RCX0xFVkVMID0gTUlOX0RCX0xFVkVMKjI7XHJcbmV4cG9ydCBjb25zdCBMSU5FX1dJRFRIID0gMjtcclxuZXhwb3J0IGNvbnN0IExJTkVfRElTVEFOQ0UgPSAyO1xyXG5leHBvcnQgY29uc3QgTEVWRUxfSU5ESUNBVE9SX0hFSUdIVD0zO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9WRVJGTE9XX1RIUkVTSE9MRCA9IDAuMjU7XHJcbmV4cG9ydCBjb25zdCBPVkVSRkxPV19JTkNSX0ZBQ1RPUiA9IDAuNTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhdWRpby1sZXZlbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgI3ZpcnR1YWxDYW52YXM+XHJcbiAgICAgIDxjYW52YXMgI2xldmVsYmFyPjwvY2FudmFzPlxyXG4gICAgICA8Y2FudmFzICNtYXJrZXJDYW52YXM+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcblxyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiBkYXJrZ3JheTtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIH1gLCBgZGl2IHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAvKnBvc2l0aW9uOiBhYnNvbHV0ZTsqL1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9YCwgYGNhbnZhcyB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGV2ZWxCYXIgaW1wbGVtZW50cyBMZXZlbExpc3RlbmVyLEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQ2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgdmlydHVhbENhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgdmlydHVhbENhbnZhcyE6IEhUTUxEaXZFbGVtZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2xldmVsYmFyJywgeyBzdGF0aWM6IHRydWUgfSkgbGl2ZUxldmVsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBsaXZlTGV2ZWxDYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdtYXJrZXJDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYXJrZXJDYW52YXNSZWYhOiBFbGVtZW50UmVmO1xyXG4gIG1hcmtlckNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIGNlITogSFRNTERpdkVsZW1lbnQ7XHJcbiAgZGJWYWx1ZXM6IEFycmF5PEFycmF5PG51bWJlcj4+O1xyXG4gIHBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuICBwcml2YXRlIF9zdHJlYW1pbmdNb2RlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3RhdGljTGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3BsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICB3YXJuREJMZXZlbCA9IERFRkFVTFRfV0FSTl9EQl9MRVZFTDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmRiVmFsdWVzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4+KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNlID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubGl2ZUxldmVsQ2FudmFzID0gdGhpcy5saXZlTGV2ZWxDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzID0gdGhpcy5tYXJrZXJDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLnpJbmRleCA9ICc0JztcclxuICAgIHRoaXMudmlydHVhbENhbnZhcyA9IHRoaXMudmlydHVhbENhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pXHJcbiAgb25TY3JvbGwoc2U6IEV2ZW50KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gICAgICAgICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3cG9ydFBvc2l0aW9uKCl7XHJcbiAgICAvLyBNb3ZlIGNhbnZhc2VzIHRvIHZpc2libGUgdmlld3BvcnQgcG9zaXRpb25cclxuICAgIGxldCB2aWV3UG9ydFN0eWxlTGVmdD10aGlzLmNlLnNjcm9sbExlZnQgKyAncHgnO1xyXG4gICAgdGhpcy5saXZlTGV2ZWxDYW52YXMuc3R5bGUubGVmdCA9IHZpZXdQb3J0U3R5bGVMZWZ0O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUubGVmdCA9IHZpZXdQb3J0U3R5bGVMZWZ0O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RyZWFtaW5nTW9kZShzdHJlYW1pbmdNb2RlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fc3RyZWFtaW5nTW9kZSAhPT0gc3RyZWFtaW5nTW9kZSkge1xyXG4gICAgICB0aGlzLl9zdHJlYW1pbmdNb2RlID0gc3RyZWFtaW5nTW9kZTtcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgIHRoaXMuX3N0YXRpY0xldmVsSW5mb3MgPSBsZXZlbEluZm9zO1xyXG4gICAgaWYgKGxldmVsSW5mb3MpIHtcclxuXHJcbiAgICAgIHRoaXMuZGJWYWx1ZXMgPSBsZXZlbEluZm9zLmJ1ZmZlckxldmVsSW5mb3MubWFwKChsaSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsaS5wb3dlckxldmVsc0RCKClcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRiVmFsdWVzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4+KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNoYW5uZWxDb3VudChjaGFubmVsQ291bnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xyXG5cclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICB0aGlzLmRyYXdBbGwoKTtcclxuICB9XHJcblxyXG4gIGxheW91dCgpIHtcclxuXHJcbiAgICAvLyBzZXQgQ2FudmFzIHNpemUgdG8gdmlld3BvcnQgc2l6ZVxyXG4gICAgdGhpcy5saXZlTGV2ZWxDYW52YXMud2lkdGggPSB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG4gICAgdGhpcy5saXZlTGV2ZWxDYW52YXMuaGVpZ2h0ID0gdGhpcy5jZS5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMud2lkdGggPSB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuaGVpZ2h0ID0gdGhpcy5jZS5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgLy8gYW5kIG1vdmUgdG8gdmlld3BvcnQgcG9zaXRpb25cclxuICAgIHRoaXMudXBkYXRlVmlld3BvcnRQb3NpdGlvbigpO1xyXG5cclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUobGV2ZWxJbmZvczogTGV2ZWxJbmZvKSB7XHJcbiAgICBpZiAodGhpcy5fc3RyZWFtaW5nTW9kZSkge1xyXG4gICAgICBsZXQgZGJWYWxzID0gbGV2ZWxJbmZvcy5wb3dlckxldmVsc0RCKCk7XHJcbiAgICAgIGxldCBwZWFrREJWYWwgPSBsZXZlbEluZm9zLnBvd2VyTGV2ZWxEQigpO1xyXG4gICAgICBpZiAodGhpcy5wZWFrRGJMdmwgPCBwZWFrREJWYWwpIHtcclxuICAgICAgICB0aGlzLnBlYWtEYkx2bCA9IHBlYWtEQlZhbDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRiVmFsdWVzLnB1c2goZGJWYWxzKTtcclxuICAgICAgbGV0IGkgPSB0aGlzLmRiVmFsdWVzLmxlbmd0aCAtIDE7XHJcbiAgICAgIGxldCB4ID0gaSAqIChMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSCk7XHJcbiAgICAgIHRoaXMuZHJhd1B1c2hWYWx1ZSh4LCBkYlZhbHMpO1xyXG4gICAgICB0aGlzLmNoZWNrV2lkdGgoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0cmVhbUZpbmlzaGVkKCkge1xyXG4gICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGF5b3V0U3RhdGljKCkge1xyXG5cclxuICAgIGxldCByZXF1aXJlZFdpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmRiVmFsdWVzLmxlbmd0aCAqIChMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSCkpO1xyXG4gICAgaWYgKHRoaXMudmlydHVhbENhbnZhcyAmJiB0aGlzLmNlKSB7XHJcblxyXG4gICAgICB0aGlzLnZpcnR1YWxDYW52YXMuc3R5bGUud2lkdGggPSByZXF1aXJlZFdpZHRoICsgJ3B4JztcclxuICAgICAgdGhpcy5jZS5zY3JvbGxMZWZ0ID0gcmVxdWlyZWRXaWR0aCAtIHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1dpZHRoKCkge1xyXG4gICAgbGV0IHJlcXVpcmVkV2lkdGggPSB0aGlzLmRiVmFsdWVzLmxlbmd0aCAqIChMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSCk7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsQ2FudmFzLm9mZnNldFdpZHRoIC0gcmVxdWlyZWRXaWR0aCA8IHRoaXMuY2Uub2Zmc2V0V2lkdGggKiBPVkVSRkxPV19USFJFU0hPTEQpIHtcclxuICAgICAgbGV0IG5ld1dpZHRoID0gTWF0aC5mbG9vcih0aGlzLnZpcnR1YWxDYW52YXMub2Zmc2V0V2lkdGggKyAodGhpcy5jZS5vZmZzZXRXaWR0aCAqIE9WRVJGTE9XX0lOQ1JfRkFDVE9SKSk7XHJcbiAgICAgIHRoaXMudmlydHVhbENhbnZhcy5zdHlsZS53aWR0aCA9IG5ld1dpZHRoICsgJ3B4JztcclxuICAgICAgdGhpcy5jZS5zY3JvbGxMZWZ0ID0gbmV3V2lkdGggLSB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgIC8vIGRvIG5vdCBjYWxsIGxheW91dCBoZXJlIGl0IGlzIHRyaWdnZXJlZCBieSB0aGUgc2Nyb2xsIGV2ZW50XHJcbiAgICAgIC8vdGhpcy5sYXlvdXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5wZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcbiAgICB0aGlzLmRiVmFsdWVzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4+KCk7XHJcbiAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJhd0xldmVsQmFja2dyb3VuZChnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHg6IG51bWJlciwgaDogbnVtYmVyKXtcclxuICAgIGcuc3Ryb2tlU3R5bGUgPSAnYmxhY2snO1xyXG4gICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xyXG4gICAgZy5maWxsUmVjdCh4LDAsTElORV9XSURUSCtMSU5FX0RJU1RBTkNFLGgpXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGRyYXdMZXZlbExpbmUoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4OiBudW1iZXIsIGg6IG51bWJlciwgZGJWYWw6IG51bWJlcikge1xyXG4gIC8vICAgLy90cmFuc2xhdGUgdG8gdmlld3BvcnRcclxuICAvLyAgIGxldCB4YyA9IHggLSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgLy9cclxuICAvLyAgIHRoaXMuZHJhd0xldmVsQmFja2dyb3VuZChnLHhjLGgpO1xyXG4gIC8vICAgZy5saW5lV2lkdGggPSBMSU5FX1dJRFRIO1xyXG4gIC8vICAgaWYgKGRiVmFsID49IHRoaXMud2FybkRCTGV2ZWwpIHtcclxuICAvLyAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gIC8vICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gIC8vXHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICBnLnN0cm9rZVN0eWxlID0gJyMwMGM4NTMnO1xyXG4gIC8vICAgICBnLmZpbGxTdHlsZSA9ICcjMDBjODUzJztcclxuICAvLyAgIH1cclxuICAvLyAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgLy8gICBnLm1vdmVUbyh4YywgaCk7XHJcbiAgLy8gICBsZXQgcFZhbCA9ICgoZGJWYWwgLSBNSU5fREJfTEVWRUwpIC8gLU1JTl9EQl9MRVZFTCkgKiBoO1xyXG4gIC8vXHJcbiAgLy8gICBnLmxpbmVUbyh4YywgaCAtIHBWYWwpO1xyXG4gIC8vICAgZy5jbG9zZVBhdGgoKTtcclxuICAvLyAgIGcuc3Ryb2tlKCk7XHJcbiAgLy9cclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgZHJhd0xldmVsTGluZXMoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4OiBudW1iZXIsIGg6IG51bWJlciwgZGJWYWxzOiBBcnJheTxudW1iZXI+KSB7XHJcbiAgICAvL3RyYW5zbGF0ZSB0byB2aWV3cG9ydFxyXG4gICAgbGV0IHhjID0geCAtIHRoaXMuY2Uuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuZHJhd0xldmVsQmFja2dyb3VuZChnLHhjLGgpO1xyXG5cclxuICAgIGxldCBjaEggPSBNYXRoLmZsb29yKGggLyBkYlZhbHMubGVuZ3RoKTtcclxuICAgIGcubGluZVdpZHRoID0gTElORV9XSURUSDtcclxuICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBkYlZhbHMubGVuZ3RoOyBjaCsrKSB7XHJcbiAgICAgIGxldCBkYlZhbCA9IGRiVmFsc1tjaF07XHJcblxyXG4gICAgICBsZXQgeSA9IE1hdGguZmxvb3IoY2ggKiBjaEgpO1xyXG4gICAgICBpZiAoZGJWYWwgPj0gdGhpcy53YXJuREJMZXZlbCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAncmVkJztcclxuICAgICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICB9IGVsc2UgaWYoZGJWYWwgPCBDT05TSURFUkVEX1NJTEVOQ0VfREJfTEVWRUwpIHtcclxuICAgICAgICBnLnN0cm9rZVN0eWxlPSdncmV5JztcclxuICAgICAgICBnLmZpbGxTdHlsZT0nZ3JleSdcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICcjMDBjODUzJztcclxuICAgICAgICAgIGcuZmlsbFN0eWxlID0gJyMwMGM4NTMnXHJcbiAgICAgIH1cclxuICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgZy5tb3ZlVG8oeGMsIHkgKyBjaEgpO1xyXG4gICAgICBnLmxpbmVUbyh4YywgeSArIGNoSCAtIExFVkVMX0lORElDQVRPUl9IRUlHSFQpO1xyXG4gICAgICBsZXQgcG5WYWw9KChkYlZhbCAtIE1JTl9EQl9MRVZFTCkgLyAtTUlOX0RCX0xFVkVMKTtcclxuICAgICAgbGV0IGx2bEluZGljYXRvclNwYWNlPUxFVkVMX0lORElDQVRPUl9IRUlHSFQrTElORV9ESVNUQU5DRTtcclxuICAgICAgbGV0IGxldmVsSD1jaEgtbHZsSW5kaWNhdG9yU3BhY2U7XHJcbiAgICAgIGxldCBwVmFsID0gcG5WYWwgKiBsZXZlbEg7XHJcbiAgICAgIGlmKHBWYWw+bGV2ZWxILTEpe1xyXG4gICAgICAgIHBWYWw9bGV2ZWxILTFcclxuICAgICAgfWVsc2UgaWYocFZhbDwwKXtcclxuICAgICAgICBwVmFsPTBcclxuICAgICAgfVxyXG4gICAgICBnLm1vdmVUbyh4YywgeSArIGNoSCAtIGx2bEluZGljYXRvclNwYWNlICk7XHJcbiAgICAgIGcubGluZVRvKHhjLCB5ICsgY2hIIC0gbHZsSW5kaWNhdG9yU3BhY2UgLSBwVmFsKTtcclxuICAgICAgZy5jbG9zZVBhdGgoKTtcclxuICAgICAgZy5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJhd1B1c2hWYWx1ZSh4OiBudW1iZXIsIGRiVmFsczogQXJyYXk8bnVtYmVyPikge1xyXG5cclxuICAgIGlmICh0aGlzLmxpdmVMZXZlbENhbnZhcykge1xyXG4gICAgICBsZXQgaCA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmhlaWdodDtcclxuICAgICAgbGV0IGcgPSB0aGlzLmxpdmVMZXZlbENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgdGhpcy5kcmF3TGV2ZWxMaW5lcyhnLCB4LCBoLCBkYlZhbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlICBkcmF3QWxsKCkge1xyXG4gICAgaWYgKHRoaXMubGl2ZUxldmVsQ2FudmFzKSB7XHJcbiAgICAgIGxldCB3ID0gdGhpcy5saXZlTGV2ZWxDYW52YXMud2lkdGg7XHJcbiAgICAgIGxldCBoID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuaGVpZ2h0O1xyXG4gICAgICBsZXQgZyA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgaWYgKGcpIHtcclxuICAgICAgICAvLyBjbGVhciBjYW52YXNcclxuICAgICAgICBnLmZpbGxTdHlsZSA9ICdncmV5JztcclxuICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG5cclxuICAgICAgICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRiVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIC8vIGRyYXcgb25seSB2aWV3cG9ydCBwYXJ0OlxyXG5cclxuICAgICAgICAgIC8vIGRyYXcgZnJvbSB4MSB0byB4MlxyXG4gICAgICAgICAgbGV0IHgxID0gdGhpcy5jZS5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgbGV0IHgyID0geDEgKyB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgIC8vIGNvcnJlc3BvbmRzIHRvIHRoaXMgbGV2ZWwgdmFsdWVzOlxyXG4gICAgICAgICAgbGV0IGkxID0gTWF0aC5mbG9vcih4MSAvIChMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSCkpO1xyXG4gICAgICAgICAgbGV0IGkyID0gTWF0aC5jZWlsKHgyIC8gKExJTkVfRElTVEFOQ0UgKyBMSU5FX1dJRFRIKSk7XHJcbiAgICAgICAgICAvLyBzb21lIHZhbHVlcyBhcm91bmRcclxuICAgICAgICAgIGkxIC09IDI7XHJcbiAgICAgICAgICBpMiArPSAyO1xyXG4gICAgICAgICAgLy8gbGltaXRzXHJcbiAgICAgICAgICBpZiAoaTEgPCAwKSB7XHJcbiAgICAgICAgICAgIGkxID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpMiA+IHRoaXMuZGJWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGkyID0gdGhpcy5kYlZhbHVlcy5sZW5ndGg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdmFyIGM9MDtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSBpMTsgaSA8IGkyOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgeCA9IGkgKiAoTElORV9ESVNUQU5DRSArIExJTkVfV0lEVEgpO1xyXG4gICAgICAgICAgICAgIGxldCBkYlZhbHMgPSB0aGlzLmRiVmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgIGlmIChkYlZhbHMpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGV2ZWxMaW5lcyhnLCB4LCBoLCBkYlZhbHMpO1xyXG4gICAgICAgICAgICAgICAgICBjKys7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBmcmFtZXNQZXJQaXhlbCgpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIC8vIG9uZSBidWZmZXJcclxuICAgIGlmICh0aGlzLl9zdGF0aWNMZXZlbEluZm9zKSB7XHJcbiAgICAgIGxldCBmcmFtZXNQZXJCdWZmZXIgPSB0aGlzLl9zdGF0aWNMZXZlbEluZm9zLmZyYW1lc1BlckJ1ZmZlcigpO1xyXG4gICAgICBsZXQgcGl4ZWxzUGVyQnVmZmVyID0gTElORV9ESVNUQU5DRSArIExJTkVfV0lEVEg7XHJcblxyXG4gICAgICByZXR1cm4gZnJhbWVzUGVyQnVmZmVyIC8gcGl4ZWxzUGVyQnVmZmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBkcmF3UGxheVBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMubWFya2VyQ2FudmFzKSB7XHJcbiAgICAgIGxldCB3ID0gdGhpcy5tYXJrZXJDYW52YXMud2lkdGg7XHJcbiAgICAgIGxldCBoID0gdGhpcy5tYXJrZXJDYW52YXMuaGVpZ2h0O1xyXG4gICAgICBsZXQgZyA9IHRoaXMubWFya2VyQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgaWYgKGcpIHtcclxuICAgICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSB0aGlzLmZyYW1lc1BlclBpeGVsKCk7XHJcbiAgICAgICAgaWYgKGZyYW1lc1BlclBpeGVsICYmIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uKSB7XHJcbiAgICAgICAgICBsZXQgeCA9IHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uIC8gZnJhbWVzUGVyUGl4ZWw7XHJcblxyXG4gICAgICAgICAgLy8gR2V0IHBvc2l0aW9uIGluIHZpZXdwb3J0XHJcbiAgICAgICAgICBsZXQgeGMgPSB4IC0gdGhpcy5jZS5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgLy8gT25seSBkcmF3IGlmIGluc2lkZSBtYXJrZXIgKHZpZXdwb3J0KSBjYW52YXNcclxuICAgICAgICAgIGlmKHhjPj0wICYmIHhjPD13KSB7XHJcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAncmVkJztcclxuICAgICAgICAgICAgZy5saW5lV2lkdGggPSBMSU5FX1dJRFRIO1xyXG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAvLyBwYWludCBvdmVyIGFsbCBjaGFubmVsc1xyXG4gICAgICAgICAgICBnLm1vdmVUbyh4YywgMCk7XHJcbiAgICAgICAgICAgIGcubGluZVRvKHhjLCBoKTtcclxuICAgICAgICAgICAgZy5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgZy5zdHJva2UoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2xpdmVsZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQTs7QUFHckgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFlBQVksR0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFDLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBc0N4QyxNQUFNLE9BQU8sUUFBUTtJQWlCbkIsWUFBb0IsR0FBZSxFQUFVLGlCQUFvQztRQUE3RCxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVBqRixjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFzQixJQUFJLENBQUM7UUFDNUMsdUJBQWtCLEdBQWMsSUFBSSxDQUFDO1FBRTdDLGdCQUFXLEdBQUcscUJBQXFCLENBQUM7UUFHbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBaUIsQ0FBQztJQUM3QyxDQUFDO0lB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TixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHtMZXZlbEluZm8sIExldmVsSW5mb3MsIExldmVsTGlzdGVuZXJ9IGZyb20gXCIuLi9kc3AvbGV2ZWxfbWVhc3VyZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0FSTl9EQl9MRVZFTCA9IC0yO1xyXG5leHBvcnQgY29uc3QgTUlOX0RCX0xFVkVMID0gLTYwLjA7XHJcbmV4cG9ydCBjb25zdCBDT05TSURFUkVEX1NJTEVOQ0VfREJfTEVWRUwgPSBNSU5fREJfTEVWRUwqMjtcclxuZXhwb3J0IGNvbnN0IExJTkVfV0lEVEggPSAyO1xyXG5leHBvcnQgY29uc3QgTElORV9ESVNUQU5DRSA9IDI7XHJcbmV4cG9ydCBjb25zdCBMRVZFTF9JTkRJQ0FUT1JfSEVJR0hUPTM7XHJcblxyXG5leHBvcnQgY29uc3QgT1ZFUkZMT1dfVEhSRVNIT0xEID0gMC4yNTtcclxuZXhwb3J0IGNvbnN0IE9WRVJGTE9XX0lOQ1JfRkFDVE9SID0gMC41O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLWxldmVsYmFyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAjdmlydHVhbENhbnZhcz5cclxuICAgICAgPGNhbnZhcyAjbGV2ZWxiYXI+PC9jYW52YXM+XHJcbiAgICAgIDxjYW52YXMgI21hcmtlckNhbnZhcz48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuXHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgfWAsIGBkaXYge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIC8qcG9zaXRpb246IGFic29sdXRlOyovXHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1gLCBgY2FudmFzIHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMZXZlbEJhciBpbXBsZW1lbnRzIExldmVsTGlzdGVuZXIsQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSB2aXJ0dWFsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICB2aXJ0dWFsQ2FudmFzITogSFRNTERpdkVsZW1lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnbGV2ZWxiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXZlTGV2ZWxDYW52YXNSZWYhOiBFbGVtZW50UmVmO1xyXG4gIGxpdmVMZXZlbENhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ21hcmtlckNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1hcmtlckNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgbWFya2VyQ2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgY2UhOiBIVE1MRGl2RWxlbWVudDtcclxuICBkYlZhbHVlczogQXJyYXk8QXJyYXk8bnVtYmVyPj47XHJcbiAgcGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG4gIHByaXZhdGUgX3N0cmVhbWluZ01vZGUgPSBmYWxzZTtcclxuICBwcml2YXRlIF9zdGF0aWNMZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGxheUZyYW1lUG9zaXRpb246IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIHdhcm5EQkxldmVsID0gREVGQVVMVF9XQVJOX0RCX0xFVkVMO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuZGJWYWx1ZXMgPSBuZXcgQXJyYXk8QXJyYXk8bnVtYmVyPj4oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5saXZlTGV2ZWxDYW52YXMgPSB0aGlzLmxpdmVMZXZlbENhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMgPSB0aGlzLm1hcmtlckNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUuekluZGV4ID0gJzQnO1xyXG4gICAgdGhpcy52aXJ0dWFsQ2FudmFzID0gdGhpcy52aXJ0dWFsQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcclxuICBvblNjcm9sbChzZTogRXZlbnQpIHtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgICAgICAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oKXtcclxuICAgIC8vIE1vdmUgY2FudmFzZXMgdG8gdmlzaWJsZSB2aWV3cG9ydCBwb3NpdGlvblxyXG4gICAgbGV0IHZpZXdQb3J0U3R5bGVMZWZ0PXRoaXMuY2Uuc2Nyb2xsTGVmdCArICdweCc7XHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcy5zdHlsZS5sZWZ0ID0gdmlld1BvcnRTdHlsZUxlZnQ7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy5zdHlsZS5sZWZ0ID0gdmlld1BvcnRTdHlsZUxlZnQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzdHJlYW1pbmdNb2RlKHN0cmVhbWluZ01vZGU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9zdHJlYW1pbmdNb2RlICE9PSBzdHJlYW1pbmdNb2RlKSB7XHJcbiAgICAgIHRoaXMuX3N0cmVhbWluZ01vZGUgPSBzdHJlYW1pbmdNb2RlO1xyXG4gICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMubGF5b3V0U3RhdGljKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNwbGF5TGV2ZWxJbmZvcyhsZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKGxldmVsSW5mb3MpIHtcclxuICAgICAgdGhpcy5fc3RhdGljTGV2ZWxJbmZvcyA9IGxldmVsSW5mb3M7XHJcbiAgICAgIHRoaXMuZGJWYWx1ZXMgPSBsZXZlbEluZm9zLmJ1ZmZlckxldmVsSW5mb3MubWFwKChsaSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsaS5wb3dlckxldmVsc0RCKClcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zdGF0aWNMZXZlbEluZm9zID1udWxsO1xyXG4gICAgICAgIHRoaXMuZGJWYWx1ZXMgPSBuZXcgQXJyYXk8QXJyYXk8bnVtYmVyPj4oKTtcclxuICAgIH1cclxuICAgIHRoaXMubGF5b3V0U3RhdGljKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgY2hhbm5lbENvdW50KGNoYW5uZWxDb3VudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBzZXQgcGxheUZyYW1lUG9zaXRpb24ocGxheUZyYW1lUG9zaXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5fcGxheUZyYW1lUG9zaXRpb24gPSBwbGF5RnJhbWVQb3NpdGlvbjtcclxuICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KSB7XHJcblxyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgbGF5b3V0KCkge1xyXG5cclxuICAgIC8vIHNldCBDYW52YXMgc2l6ZSB0byB2aWV3cG9ydCBzaXplXHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcy53aWR0aCA9IHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcy5oZWlnaHQgPSB0aGlzLmNlLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy53aWR0aCA9IHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy5oZWlnaHQgPSB0aGlzLmNlLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAvLyBhbmQgbW92ZSB0byB2aWV3cG9ydCBwb3NpdGlvblxyXG4gICAgdGhpcy51cGRhdGVWaWV3cG9ydFBvc2l0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZShsZXZlbEluZm9zOiBMZXZlbEluZm8pIHtcclxuICAgIGlmICh0aGlzLl9zdHJlYW1pbmdNb2RlKSB7XHJcbiAgICAgIGxldCBkYlZhbHMgPSBsZXZlbEluZm9zLnBvd2VyTGV2ZWxzREIoKTtcclxuICAgICAgbGV0IHBlYWtEQlZhbCA9IGxldmVsSW5mb3MucG93ZXJMZXZlbERCKCk7XHJcbiAgICAgIGlmICh0aGlzLnBlYWtEYkx2bCA8IHBlYWtEQlZhbCkge1xyXG4gICAgICAgIHRoaXMucGVha0RiTHZsID0gcGVha0RCVmFsO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGJWYWx1ZXMucHVzaChkYlZhbHMpO1xyXG4gICAgICBsZXQgaSA9IHRoaXMuZGJWYWx1ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgbGV0IHggPSBpICogKExJTkVfRElTVEFOQ0UgKyBMSU5FX1dJRFRIKTtcclxuICAgICAgdGhpcy5kcmF3UHVzaFZhbHVlKHgsIGRiVmFscyk7XHJcbiAgICAgIHRoaXMuY2hlY2tXaWR0aCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RyZWFtRmluaXNoZWQoKSB7XHJcbiAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsYXlvdXRTdGF0aWMoKSB7XHJcblxyXG4gICAgbGV0IHJlcXVpcmVkV2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuZGJWYWx1ZXMubGVuZ3RoICogKExJTkVfRElTVEFOQ0UgKyBMSU5FX1dJRFRIKSk7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsQ2FudmFzICYmIHRoaXMuY2UpIHtcclxuXHJcbiAgICAgIHRoaXMudmlydHVhbENhbnZhcy5zdHlsZS53aWR0aCA9IHJlcXVpcmVkV2lkdGggKyAncHgnO1xyXG4gICAgICB0aGlzLmNlLnNjcm9sbExlZnQgPSByZXF1aXJlZFdpZHRoIC0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrV2lkdGgoKSB7XHJcbiAgICBsZXQgcmVxdWlyZWRXaWR0aCA9IHRoaXMuZGJWYWx1ZXMubGVuZ3RoICogKExJTkVfRElTVEFOQ0UgKyBMSU5FX1dJRFRIKTtcclxuICAgIGlmICh0aGlzLnZpcnR1YWxDYW52YXMub2Zmc2V0V2lkdGggLSByZXF1aXJlZFdpZHRoIDwgdGhpcy5jZS5vZmZzZXRXaWR0aCAqIE9WRVJGTE9XX1RIUkVTSE9MRCkge1xyXG4gICAgICBsZXQgbmV3V2lkdGggPSBNYXRoLmZsb29yKHRoaXMudmlydHVhbENhbnZhcy5vZmZzZXRXaWR0aCArICh0aGlzLmNlLm9mZnNldFdpZHRoICogT1ZFUkZMT1dfSU5DUl9GQUNUT1IpKTtcclxuICAgICAgdGhpcy52aXJ0dWFsQ2FudmFzLnN0eWxlLndpZHRoID0gbmV3V2lkdGggKyAncHgnO1xyXG4gICAgICB0aGlzLmNlLnNjcm9sbExlZnQgPSBuZXdXaWR0aCAtIHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgLy8gZG8gbm90IGNhbGwgbGF5b3V0IGhlcmUgaXQgaXMgdHJpZ2dlcmVkIGJ5IHRoZSBzY3JvbGwgZXZlbnRcclxuICAgICAgLy90aGlzLmxheW91dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuICAgIHRoaXMuZGJWYWx1ZXMgPSBuZXcgQXJyYXk8QXJyYXk8bnVtYmVyPj4oKTtcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICB0aGlzLmRyYXdBbGwoKTtcclxuICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3TGV2ZWxCYWNrZ3JvdW5kKGc6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgeDogbnVtYmVyLCBoOiBudW1iZXIpe1xyXG4gICAgZy5zdHJva2VTdHlsZSA9ICdibGFjayc7XHJcbiAgICBnLmZpbGxTdHlsZSA9ICdibGFjayc7XHJcbiAgICBnLmZpbGxSZWN0KHgsMCxMSU5FX1dJRFRIK0xJTkVfRElTVEFOQ0UsaClcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZHJhd0xldmVsTGluZShnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHg6IG51bWJlciwgaDogbnVtYmVyLCBkYlZhbDogbnVtYmVyKSB7XHJcbiAgLy8gICAvL3RyYW5zbGF0ZSB0byB2aWV3cG9ydFxyXG4gIC8vICAgbGV0IHhjID0geCAtIHRoaXMuY2Uuc2Nyb2xsTGVmdDtcclxuICAvL1xyXG4gIC8vICAgdGhpcy5kcmF3TGV2ZWxCYWNrZ3JvdW5kKGcseGMsaCk7XHJcbiAgLy8gICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcbiAgLy8gICBpZiAoZGJWYWwgPj0gdGhpcy53YXJuREJMZXZlbCkge1xyXG4gIC8vICAgICBnLnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgLy8gICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgLy9cclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGcuc3Ryb2tlU3R5bGUgPSAnIzAwYzg1Myc7XHJcbiAgLy8gICAgIGcuZmlsbFN0eWxlID0gJyMwMGM4NTMnO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZy5iZWdpblBhdGgoKTtcclxuICAvLyAgIGcubW92ZVRvKHhjLCBoKTtcclxuICAvLyAgIGxldCBwVmFsID0gKChkYlZhbCAtIE1JTl9EQl9MRVZFTCkgLyAtTUlOX0RCX0xFVkVMKSAqIGg7XHJcbiAgLy9cclxuICAvLyAgIGcubGluZVRvKHhjLCBoIC0gcFZhbCk7XHJcbiAgLy8gICBnLmNsb3NlUGF0aCgpO1xyXG4gIC8vICAgZy5zdHJva2UoKTtcclxuICAvL1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3TGV2ZWxMaW5lcyhnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHg6IG51bWJlciwgaDogbnVtYmVyLCBkYlZhbHM6IEFycmF5PG51bWJlcj4pIHtcclxuICAgIC8vdHJhbnNsYXRlIHRvIHZpZXdwb3J0XHJcbiAgICBsZXQgeGMgPSB4IC0gdGhpcy5jZS5zY3JvbGxMZWZ0O1xyXG4gICAgdGhpcy5kcmF3TGV2ZWxCYWNrZ3JvdW5kKGcseGMsaCk7XHJcblxyXG4gICAgbGV0IGNoSCA9IE1hdGguZmxvb3IoaCAvIGRiVmFscy5sZW5ndGgpO1xyXG4gICAgZy5saW5lV2lkdGggPSBMSU5FX1dJRFRIO1xyXG4gICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGRiVmFscy5sZW5ndGg7IGNoKyspIHtcclxuICAgICAgbGV0IGRiVmFsID0gZGJWYWxzW2NoXTtcclxuXHJcbiAgICAgIGxldCB5ID0gTWF0aC5mbG9vcihjaCAqIGNoSCk7XHJcbiAgICAgIGlmIChkYlZhbCA+PSB0aGlzLndhcm5EQkxldmVsKSB7XHJcbiAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgICAgIH0gZWxzZSBpZihkYlZhbCA8IENPTlNJREVSRURfU0lMRU5DRV9EQl9MRVZFTCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGU9J2dyZXknO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlPSdncmV5J1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJyMwMGM4NTMnO1xyXG4gICAgICAgICAgZy5maWxsU3R5bGUgPSAnIzAwYzg1MydcclxuICAgICAgfVxyXG4gICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICBnLm1vdmVUbyh4YywgeSArIGNoSCk7XHJcbiAgICAgIGcubGluZVRvKHhjLCB5ICsgY2hIIC0gTEVWRUxfSU5ESUNBVE9SX0hFSUdIVCk7XHJcbiAgICAgIGxldCBwblZhbD0oKGRiVmFsIC0gTUlOX0RCX0xFVkVMKSAvIC1NSU5fREJfTEVWRUwpO1xyXG4gICAgICBsZXQgbHZsSW5kaWNhdG9yU3BhY2U9TEVWRUxfSU5ESUNBVE9SX0hFSUdIVCtMSU5FX0RJU1RBTkNFO1xyXG4gICAgICBsZXQgbGV2ZWxIPWNoSC1sdmxJbmRpY2F0b3JTcGFjZTtcclxuICAgICAgbGV0IHBWYWwgPSBwblZhbCAqIGxldmVsSDtcclxuICAgICAgaWYocFZhbD5sZXZlbEgtMSl7XHJcbiAgICAgICAgcFZhbD1sZXZlbEgtMVxyXG4gICAgICB9ZWxzZSBpZihwVmFsPDApe1xyXG4gICAgICAgIHBWYWw9MFxyXG4gICAgICB9XHJcbiAgICAgIGcubW92ZVRvKHhjLCB5ICsgY2hIIC0gbHZsSW5kaWNhdG9yU3BhY2UgKTtcclxuICAgICAgZy5saW5lVG8oeGMsIHkgKyBjaEggLSBsdmxJbmRpY2F0b3JTcGFjZSAtIHBWYWwpO1xyXG4gICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICBnLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3UHVzaFZhbHVlKHg6IG51bWJlciwgZGJWYWxzOiBBcnJheTxudW1iZXI+KSB7XHJcblxyXG4gICAgaWYgKHRoaXMubGl2ZUxldmVsQ2FudmFzKSB7XHJcbiAgICAgIGxldCBoID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuaGVpZ2h0O1xyXG4gICAgICBsZXQgZyA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgaWYgKGcpIHtcclxuICAgICAgICB0aGlzLmRyYXdMZXZlbExpbmVzKGcsIHgsIGgsIGRiVmFscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGRyYXdBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5saXZlTGV2ZWxDYW52YXMpIHtcclxuICAgICAgbGV0IHcgPSB0aGlzLmxpdmVMZXZlbENhbnZhcy53aWR0aDtcclxuICAgICAgbGV0IGggPSB0aGlzLmxpdmVMZXZlbENhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGxldCBnID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICBpZiAoZykge1xyXG4gICAgICAgIC8vIGNsZWFyIGNhbnZhc1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ2dyZXknO1xyXG4gICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdywgaCk7XHJcblxyXG4gICAgICAgIGcubGluZVdpZHRoID0gTElORV9XSURUSDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGJWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgLy8gZHJhdyBvbmx5IHZpZXdwb3J0IHBhcnQ6XHJcblxyXG4gICAgICAgICAgLy8gZHJhdyBmcm9tIHgxIHRvIHgyXHJcbiAgICAgICAgICBsZXQgeDEgPSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgICAgICAgICBsZXQgeDIgPSB4MSArIHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhpcyBsZXZlbCB2YWx1ZXM6XHJcbiAgICAgICAgICBsZXQgaTEgPSBNYXRoLmZsb29yKHgxIC8gKExJTkVfRElTVEFOQ0UgKyBMSU5FX1dJRFRIKSk7XHJcbiAgICAgICAgICBsZXQgaTIgPSBNYXRoLmNlaWwoeDIgLyAoTElORV9ESVNUQU5DRSArIExJTkVfV0lEVEgpKTtcclxuICAgICAgICAgIC8vIHNvbWUgdmFsdWVzIGFyb3VuZFxyXG4gICAgICAgICAgaTEgLT0gMjtcclxuICAgICAgICAgIGkyICs9IDI7XHJcbiAgICAgICAgICAvLyBsaW1pdHNcclxuICAgICAgICAgIGlmIChpMSA8IDApIHtcclxuICAgICAgICAgICAgaTEgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGkyID4gdGhpcy5kYlZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaTIgPSB0aGlzLmRiVmFsdWVzLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB2YXIgYz0wO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IGkxOyBpIDwgaTI7IGkrKykge1xyXG4gICAgICAgICAgICAgIGxldCB4ID0gaSAqIChMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSCk7XHJcbiAgICAgICAgICAgICAgbGV0IGRiVmFscyA9IHRoaXMuZGJWYWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKGRiVmFscykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMZXZlbExpbmVzKGcsIHgsIGgsIGRiVmFscyk7XHJcbiAgICAgICAgICAgICAgICAgIGMrKztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGZyYW1lc1BlclBpeGVsKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgLy8gb25lIGJ1ZmZlclxyXG4gICAgaWYgKHRoaXMuX3N0YXRpY0xldmVsSW5mb3MpIHtcclxuICAgICAgbGV0IGZyYW1lc1BlckJ1ZmZlciA9IHRoaXMuX3N0YXRpY0xldmVsSW5mb3MuZnJhbWVzUGVyQnVmZmVyKCk7XHJcbiAgICAgIGxldCBwaXhlbHNQZXJCdWZmZXIgPSBMSU5FX0RJU1RBTkNFICsgTElORV9XSURUSDtcclxuXHJcbiAgICAgIHJldHVybiBmcmFtZXNQZXJCdWZmZXIgLyBwaXhlbHNQZXJCdWZmZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGRyYXdQbGF5UG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5tYXJrZXJDYW52YXMpIHtcclxuICAgICAgbGV0IHcgPSB0aGlzLm1hcmtlckNhbnZhcy53aWR0aDtcclxuICAgICAgbGV0IGggPSB0aGlzLm1hcmtlckNhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGxldCBnID0gdGhpcy5tYXJrZXJDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICBpZiAoZykge1xyXG4gICAgICAgIGcuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgIGxldCBmcmFtZXNQZXJQaXhlbCA9IHRoaXMuZnJhbWVzUGVyUGl4ZWwoKTtcclxuICAgICAgICBpZiAoZnJhbWVzUGVyUGl4ZWwgJiYgdGhpcy5fcGxheUZyYW1lUG9zaXRpb24pIHtcclxuICAgICAgICAgIGxldCB4ID0gdGhpcy5fcGxheUZyYW1lUG9zaXRpb24gLyBmcmFtZXNQZXJQaXhlbDtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgcG9zaXRpb24gaW4gdmlld3BvcnRcclxuICAgICAgICAgIGxldCB4YyA9IHggLSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgICAgICAgICAvLyBPbmx5IGRyYXcgaWYgaW5zaWRlIG1hcmtlciAodmlld3BvcnQpIGNhbnZhc1xyXG4gICAgICAgICAgaWYoeGM+PTAgJiYgeGM8PXcpIHtcclxuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAncmVkJztcclxuICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgICAgICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcbiAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIC8vIHBhaW50IG92ZXIgYWxsIGNoYW5uZWxzXHJcbiAgICAgICAgICAgIGcubW92ZVRvKHhjLCAwKTtcclxuICAgICAgICAgICAgZy5saW5lVG8oeGMsIGgpO1xyXG4gICAgICAgICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=