@huntsman-cancer-institute/input 15.3.0 → 15.4.0

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.
@@ -173,7 +173,7 @@ DateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
173
173
  <input type="text" (keyup)="onKeyUpInput($event)"
174
174
  (ngModelChange)="onChange($event)" class="form-control"
175
175
  formControlName="dateInput" placeholder="{{label}}"
176
- aria-label="date" aria-describedby="basic-addon2" />
176
+ aria-label="date" aria-describedby="basic-addon2" attr.aria-label="hci-ng-date-{{label}}"/>
177
177
  <span class="input-group-text" id="basic-addon2" (click)="clear()">
178
178
  <i class="fas fa-times"></i>
179
179
  </span>
@@ -211,7 +211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
211
211
  <input type="text" (keyup)="onKeyUpInput($event)"
212
212
  (ngModelChange)="onChange($event)" class="form-control"
213
213
  formControlName="dateInput" placeholder="{{label}}"
214
- aria-label="date" aria-describedby="basic-addon2" />
214
+ aria-label="date" aria-describedby="basic-addon2" attr.aria-label="hci-ng-date-{{label}}"/>
215
215
  <span class="input-group-text" id="basic-addon2" (click)="clear()">
216
216
  <i class="fas fa-times"></i>
217
217
  </span>
@@ -260,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
260
260
  }], dateValid: [{
261
261
  type: Output
262
262
  }] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kYXRlL2RhdGUtZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLE1BQU0sRUFDN0YsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsa0JBQWtCLEVBQW9CLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSXJDOzs7O0dBSUc7QUErQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBMEJ6QyxZQUFZLFVBQXNCLEVBQVUsV0FBK0IsRUFBVSxRQUFrQixFQUFVLGlCQUFvQztRQUNuSixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFEd0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnJKLHlDQUF5QztRQUNoQyxlQUFVLEdBQVcsV0FBVyxDQUFDO1FBVWhDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUtsRCxrQ0FBa0M7UUFDbEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVsQixZQUFPLEdBQVksS0FBSyxDQUFDO0lBSWpDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElB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LEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIERvQ2hlY2ssIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5pbXBvcnQge0RhdGVWYWxpZGF0b3J9IGZyb20gXCIuL2RhdGUtdmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7RGF0ZUJhc2V9IGZyb20gXCIuL2RhdGUtYmFzZVwiO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBUT0RPOiBDb25maXJtIHRpbWV6b25lIGJlaGF2aW9yLlxyXG4gKlxyXG4gKiBAc2luY2UgNC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1kYXRlXCIsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIERhdGVWYWxpZGF0b3JdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkLWZsZXhcIj5cclxuICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImRhdGVGb3JtXCIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXBJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZUlucHV0XCIgcGxhY2Vob2xkZXI9XCJ7e2xhYmVsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZGF0ZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJiYXNpYy1hZGRvbjJcIiAvPlxyXG4gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiIGlkPVwiYmFzaWMtYWRkb24yXCIgKGNsaWNrKT1cImNsZWFyKClcIj5cclxuICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRFZGl0KCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGUgJiYgZGF0ZUZvcm0uZ2V0KCdkYXRlSW5wdXQnKS5oYXNFcnJvcignZGF0ZUZvcm1hdFZhbGlkYXRvcicpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImludmFsaWQtZGF0ZVwiPkVudGVyIGRhdGUgYXMgTS9EL1lZWVkgb3IgTU0vREQvWVlZWTwvZGl2PlxyXG4gICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGUgJiYgZGF0ZUZvcm0uZ2V0KCdkYXRlSW5wdXQnKS5oYXNFcnJvcignZGF0ZVJhbmdlVmFsaWRhdG9yJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW52YWxpZC1kYXRlXCI+SW52YWxpZCBEYXRlIFJhbmdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0ZSAmJiBkYXRlRm9ybS5nZXQoJ2RhdGVJbnB1dCcpLmhhc0Vycm9yKCdkYXRlSW52YWxpZFZhbGlkYXRvcicpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImludmFsaWQtZGF0ZVwiPk5vdCBhIHJlYWwgZGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0ZSA9PT0gMVwiIGNsYXNzPVwiaW5saW5lLWVkaXRpbmdcIj5cclxuICAgICAgICA8bmdiLWRhdGVwaWNrZXIgW25nTW9kZWxdPVwibW9kaWZpZWREYXRhXCIgI2RwIFtzdGFydERhdGVdPVwic3RhcnREYXRlXCIgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoZGF0ZVNlbGVjdCk9XCJzYXZlKClcIj48L25nYi1kYXRlcGlja2VyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtaG92ZXItc2F2ZS1vcHRpb25zXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICBgXSxcclxuICBob3N0OiB7XHJcbiAgICBcIihkb2N1bWVudDpjbGljaylcIjogXCJoYW5kbGVPdXRzaWRlRXZlbnQoJGV2ZW50KVwiXHJcbiAgfVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBEYXRlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkcFwiLCB7c3RhdGljOiBmYWxzZX0pIGRwOiBhbnk7XHJcblxyXG4gIC8vIEJpbmRlZCBkYXRhIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nID0gXCJzaG9ydERhdGVcIjtcclxuICBzdGFydERhdGU7XHJcbiAgQElucHV0KCkgbWluRGF0ZTtcclxuICBASW5wdXQoKSBtYXhEYXRlO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgbGFiZWxEYXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5wdXREYXRhOiBPYmplY3Q7XHJcbiAgLy8gVGhlIGRhdGEgdXNlZCBpbiBvdXIgaW5wdXQuICBXZSBzdG9yZWQgdGhpcyBhcyB3ZWxsIGFzIHRoZSBpbnB1dERhdGEgc28gd2UgY2FuIGNhbmNlbCB0aGUgZWRpdCBhbmQgcHJlc2VydmUgdGhlIG9yaWdpbmFsIGRhdGEuXHJcbiAgQElucHV0KCkgbW9kaWZpZWREYXRhOiBPYmplY3Q7XHJcblxyXG4gIEBPdXRwdXQoKSBpbnB1dERhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZGF0ZVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBkYXRlRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBkYXRlSW5wdXQ6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgLy8gb25seSB2YWxpZGF0ZSBpZiB1c2VyIGlzIHR5cGluZ1xyXG4gIHZhbGlkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoZWxlbWVudFJlZik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kYXRlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgZGF0ZUlucHV0IDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChcIlwiLCBbRGF0ZVZhbGlkYXRvci5kYXRlRm9ybWF0VmFsaWRhdG9yLCBEYXRlVmFsaWRhdG9yLmRhdGVSYW5nZVZhbGlkYXRvcl0pXHJcbiAgICB9KTtcclxuICAgIHRoaXMub25DaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbERhdGFGcm9tTW9kZWwoKTtcclxuICAgIC8vIHNldCB0aGUgbWluRGF0ZSB0byAyMCB5ZWFycyBpbiB0aGUgcGFzdCBieSBkZWZhdWx0XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKCF0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgICB0aGlzLm1pbkRhdGUgPSB7eWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSAtIDIwLCBtb250aDogdG9kYXkuZ2V0TW9udGgoKSArIDEsIGRheTogdG9kYXkuZ2V0RGF0ZSgpfTtcclxuICAgIH1cclxuICAgIC8vIHNldCBtYXggZGF0ZSB0byB0b2RheSBieSBkZWZhdWx0XHJcbiAgICBpZiAoIXRoaXMubWF4RGF0ZSkge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IHt5ZWFyOiB0b2RheS5nZXRGdWxsWWVhcigpLCBtb250aDogdG9kYXkuZ2V0TW9udGgoKSArIDEsIGRheTogdG9kYXkuZ2V0RGF0ZSgpfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIEZpbGwgdGhlIGlucHV0IHdpdGggdGhlIGJvdW5kIGRhdGEgc2V0IGluIHRoZSBwYXJlbnQgY29tcG9uZW50LlxyXG4gICAgaWYgKHRoaXMuaW5wdXREYXRhKSB7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oPHN0cmluZz50aGlzLmlucHV0RGF0YSwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgdGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS5zZXRWYWx1ZShmb3JtYXR0ZWREYXRlKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VzKCk6IHZvaWQge31cclxuXHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIC8vIHRoaXMgaXMgdGhlIG9ubHkgd2F5IEkgZm91bmQgdG8gaGF2ZSB0aGUgZm9jdXMgb24gdGhlIHN0YXJ0RGF0ZSBkYXkgd2hlbiB0aGUgdXNlciBvcGVuc1xyXG4gICAgLy8gdGhlIHBvcHVwLiBXZSBvbmx5IHdhbnQgdG8gZm9jdXMgb25jZSBvdGhlcndpc2UgdXNlciBjYW4gbm90IGNsaWNrIGFueXdoZXJlIGVsc2UgaW4gdGhlIHBvcHVwXHJcbiAgICBpZiAodGhpcy5kcCAmJiAhdGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgICAgdGhpcy5kcC5mb2N1cygpO1xyXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBtYXJrIHBpY2tlciBmb3IgZm9jdXNpbmcgbmV4dCB0aW1lIGl0IGlzIG9wZW5cclxuICAgIGlmICh0aGlzLnN0YXRlID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlSW50ZXJuYWxEYXRhRnJvbU1vZGVsKCkge1xyXG4gICAgIGlmICh0aGlzLmlucHV0RGF0YSkge1xyXG4gICAgICAgICB0aGlzLm1vZGlmaWVkRGF0YSA9IG5ldyBEYXRlKDxzdHJpbmc+dGhpcy5pbnB1dERhdGEpO1xyXG4gICAgICAgICBsZXQgbWQ6IERhdGUgPSBuZXcgRGF0ZSg8c3RyaW5nPnRoaXMuaW5wdXREYXRhKTtcclxuICAgICAgICAgdGhpcy5zdGFydERhdGUgPSB7eWVhcjogbWQuZ2V0RnVsbFllYXIoKSwgbW9udGg6IG1kLmdldE1vbnRoKCkgKyAxLCBkYXk6IG1kLmdldERhdGUoKX07XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgICAgbGV0IHRvZGF5OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgdGhpcy5zdGFydERhdGUgPSB7eWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSwgbW9udGg6IHRvZGF5LmdldE1vbnRoKCkgKyAxLCBkYXk6IHRvZGF5LmdldERhdGUoKX07XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgYm91bmQgZGF0YSB3aXRoIHRoZSB3b3JraW5nIGRhdGEuXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZU1vZGVsRnJvbUludGVybmFsRGF0YSgpIHtcclxuICAgICBpZiAodGhpcy5tb2RpZmllZERhdGEpIHtcclxuICAgICAgICAgbGV0IGRzRGF0ZSA9IHRoaXMubmdiRGF0ZVRvU3RyaW5nKDxOZ2JEYXRlU3RydWN0PnRoaXMubW9kaWZpZWREYXRhKTtcclxuICAgICAgICAgaWYgKGRzRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0RGF0YSA9IGRzRGF0ZTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dERhdGEgPSB0aGlzLm1vZGlmaWVkRGF0YTtcclxuICAgICAgICAgfVxyXG5cclxuICAgICAgICAgY29uc3QgZm9ybWF0dGVkTW9kaWZpZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oPHN0cmluZz50aGlzLmlucHV0RGF0YSwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgICAgdGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS5zZXRWYWx1ZShmb3JtYXR0ZWRNb2RpZmllZERhdGUsIHsgZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG5cclxuICAgICB9XHJcbiAgICAgdGhpcy5pbnB1dERhdGFDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RGF0YSk7XHJcbiAgICAgdGhpcy51cGRhdGVJbnRlcm5hbERhdGFGcm9tTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcigpIHtcclxuICAgICAgdGhpcy5tb2RpZmllZERhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLmlucHV0RGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0uc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgIHRoaXMudmFsaWRhdGUgPSBmYWxzZTtcclxuICAgICAgbGV0IHRvZGF5OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSB7eWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSwgbW9udGg6IHRvZGF5LmdldE1vbnRoKCkgKyAxLCBkYXk6IHRvZGF5LmdldERhdGUoKX07XHJcbiAgICAgIHRoaXMuc3RhdGUgPSAwO1xyXG4gICAgICB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0YUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRhKTtcclxuICAgICAgdGhpcy5kYXRlVmFsaWQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbktleVVwSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIENoZWNrIGZvciB3aGVuIHRoZSBpbnB1dCBpcyBkZWxldGVkIGJlZm9yZSBiZWluZyBzYXZlZFxyXG4gICAgaWYgKChldmVudC5rZXkgPT09IFwiRGVsZXRlXCIgfHwgZXZlbnQua2V5ID09PSBcIkJhY2tzcGFjZVwiKSAmJiB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB1cGRhdGUgcmFuZ2Ugc28gdGhhdCB0aGUgZGF0ZSByYW5nZSB2YWxpZGF0b3IgY2FuIHJ1biBhY2N1cmF0ZWx5XHJcbiAgICAgIERhdGVWYWxpZGF0b3IubWluVmFsdWUgPSB0aGlzLm1pbkRhdGU7XHJcbiAgICAgIERhdGVWYWxpZGF0b3IubWF4VmFsdWUgPSB0aGlzLm1heERhdGU7XHJcblxyXG4gICAgICAvLyBHZXQgdGhlIHVwZGF0ZWQgZGF0ZUZvcm0gdmFsdWVcclxuICAgICAgbGV0IGV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgIGxldCBpbnB1dFZhbHVlID0gZXZlbnRUYXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0ucGF0Y2hWYWx1ZShpbnB1dFZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHdlIGhhdmUgYSBnb29kIGRhdGUgYW5kIGlzIHdpdGhpbiB0aGUgcmFuZ2UgdXBkYXRlIHRoZSBwaWNrZXJcclxuICAgICAgaWYgKERhdGVWYWxpZGF0b3IuaW5SYW5nZSh0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdKSkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdldERhdGVWYWxpZCgpO1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS52YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUludGVybmFsRGF0YUZyb21Nb2RlbCgpO1xyXG4gICAgICAgIHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0uc2V0VmFsdWUodGhpcy5pbnB1dERhdGEpO1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhQ2hhbmdlLmVtaXQodGhpcy5pbnB1dERhdGEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0ZVZhbGlkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nYkRhdGVTdHJ1Y3Qgc3RvcmVzIGRheSwgbW9udGggYW5kIHllYXIuICBDb252ZXJ0IHRoaXMgdG8gSVNPODYwMS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkYXRlXHJcbiAgICogQHJldHVybnMge2FueX1cclxuICAgKi9cclxuICBwcml2YXRlIG5nYkRhdGVUb1N0cmluZyhkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRlID09PSB1bmRlZmluZWQgfHwgZGF0ZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAoZGF0ZS55ZWFyID09PSB1bmRlZmluZWQgfHwgZGF0ZS5tb250aCA9PT0gdW5kZWZpbmVkIHx8IGRhdGUuZGF5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUueWVhciArIFwiLVwiICsgKChkYXRlLm1vbnRoIDwgMTApID8gXCIwXCIgOiBcIlwiKSArIGRhdGUubW9udGggKyBcIi1cIiArICgoZGF0ZS5kYXkgPCAxMCkgPyBcIjBcIiA6IFwiXCIpICsgZGF0ZS5kYXkgKyBcIlQxMjowMC0wNjowMFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGVWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmRhdGVGb3JtLmdldChcImRhdGVJbnB1dFwiKS5oYXNFcnJvcihcImRhdGVGb3JtYXRWYWxpZGF0b3JcIilcclxuICAgICAgfHwgdGhpcy5kYXRlRm9ybS5nZXQoXCJkYXRlSW5wdXRcIikuaGFzRXJyb3IoXCJkYXRlUmFuZ2VWYWxpZGF0b3JcIilcclxuICAgICAgfHwgdGhpcy5kYXRlRm9ybS5nZXQoXCJkYXRlSW5wdXRcIikuaGFzRXJyb3IoXCJkYXRlSW52YWxpZFZhbGlkYXRvclwiKSkge1xyXG4gICAgICB0aGlzLmRhdGVWYWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlVmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kYXRlL2RhdGUtZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLE1BQU0sRUFDN0YsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsa0JBQWtCLEVBQW9CLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSXJDOzs7O0dBSUc7QUErQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBMEJ6QyxZQUFZLFVBQXNCLEVBQVUsV0FBK0IsRUFBVSxRQUFrQixFQUFVLGlCQUFvQztRQUNuSixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFEd0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnJKLHlDQUF5QztRQUNoQyxlQUFVLEdBQVcsV0FBVyxDQUFDO1FBVWhDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUtsRCxrQ0FBa0M7UUFDbEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVsQixZQUFPLEdBQVksS0FBSyxDQUFDO0lBSWpDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElB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LEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIERvQ2hlY2ssIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5pbXBvcnQge0RhdGVWYWxpZGF0b3J9IGZyb20gXCIuL2RhdGUtdmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7RGF0ZUJhc2V9IGZyb20gXCIuL2RhdGUtYmFzZVwiO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBUT0RPOiBDb25maXJtIHRpbWV6b25lIGJlaGF2aW9yLlxyXG4gKlxyXG4gKiBAc2luY2UgNC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1kYXRlXCIsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIERhdGVWYWxpZGF0b3JdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkLWZsZXhcIj5cclxuICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImRhdGVGb3JtXCIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXBJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZUlucHV0XCIgcGxhY2Vob2xkZXI9XCJ7e2xhYmVsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZGF0ZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJiYXNpYy1hZGRvbjJcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctZGF0ZS17e2xhYmVsfX1cIi8+XHJcbiAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgaWQ9XCJiYXNpYy1hZGRvbjJcIiAoY2xpY2spPVwiY2xlYXIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydEVkaXQoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0ZSAmJiBkYXRlRm9ybS5nZXQoJ2RhdGVJbnB1dCcpLmhhc0Vycm9yKCdkYXRlRm9ybWF0VmFsaWRhdG9yJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW52YWxpZC1kYXRlXCI+RW50ZXIgZGF0ZSBhcyBNL0QvWVlZWSBvciBNTS9ERC9ZWVlZPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0ZSAmJiBkYXRlRm9ybS5nZXQoJ2RhdGVJbnB1dCcpLmhhc0Vycm9yKCdkYXRlUmFuZ2VWYWxpZGF0b3InKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWRhdGVcIj5JbnZhbGlkIERhdGUgUmFuZ2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZhbGlkYXRlICYmIGRhdGVGb3JtLmdldCgnZGF0ZUlucHV0JykuaGFzRXJyb3IoJ2RhdGVJbnZhbGlkVmFsaWRhdG9yJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW52YWxpZC1kYXRlXCI+Tm90IGEgcmVhbCBkYXRlPC9kaXY+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInN0YXRlID09PSAxXCIgY2xhc3M9XCJpbmxpbmUtZWRpdGluZ1wiPlxyXG4gICAgICAgIDxuZ2ItZGF0ZXBpY2tlciBbbmdNb2RlbF09XCJtb2RpZmllZERhdGFcIiAjZHAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIChkYXRlU2VsZWN0KT1cInNhdmUoKVwiPjwvbmdiLWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlubGluZS1ob3Zlci1zYXZlLW9wdGlvbnNcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIGBdLFxyXG4gIGhvc3Q6IHtcclxuICAgIFwiKGRvY3VtZW50OmNsaWNrKVwiOiBcImhhbmRsZU91dHNpZGVFdmVudCgkZXZlbnQpXCJcclxuICB9XHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZUNvbXBvbmVudCBleHRlbmRzIERhdGVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRwXCIsIHtzdGF0aWM6IGZhbHNlfSkgZHA6IGFueTtcclxuXHJcbiAgLy8gQmluZGVkIGRhdGEgZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICBASW5wdXQoKSBkYXRlRm9ybWF0OiBzdHJpbmcgPSBcInNob3J0RGF0ZVwiO1xyXG4gIHN0YXJ0RGF0ZTtcclxuICBASW5wdXQoKSBtaW5EYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGU7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBsYWJlbERhdGU6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnB1dERhdGE6IE9iamVjdDtcclxuICAvLyBUaGUgZGF0YSB1c2VkIGluIG91ciBpbnB1dC4gIFdlIHN0b3JlZCB0aGlzIGFzIHdlbGwgYXMgdGhlIGlucHV0RGF0YSBzbyB3ZSBjYW4gY2FuY2VsIHRoZSBlZGl0IGFuZCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgZGF0YS5cclxuICBASW5wdXQoKSBtb2RpZmllZERhdGE6IE9iamVjdDtcclxuXHJcbiAgQE91dHB1dCgpIGlucHV0RGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkYXRlVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGRhdGVGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGRhdGVJbnB1dDogVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICAvLyBvbmx5IHZhbGlkYXRlIGlmIHVzZXIgaXMgdHlwaW5nXHJcbiAgdmFsaWRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRhdGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICBkYXRlSW5wdXQgOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKFwiXCIsIFtEYXRlVmFsaWRhdG9yLmRhdGVGb3JtYXRWYWxpZGF0b3IsIERhdGVWYWxpZGF0b3IuZGF0ZVJhbmdlVmFsaWRhdG9yXSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUludGVybmFsRGF0YUZyb21Nb2RlbCgpO1xyXG4gICAgLy8gc2V0IHRoZSBtaW5EYXRlIHRvIDIwIHllYXJzIGluIHRoZSBwYXN0IGJ5IGRlZmF1bHRcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoIXRoaXMubWluRGF0ZSkge1xyXG4gICAgICAgIHRoaXMubWluRGF0ZSA9IHt5ZWFyOiB0b2RheS5nZXRGdWxsWWVhcigpIC0gMjAsIG1vbnRoOiB0b2RheS5nZXRNb250aCgpICsgMSwgZGF5OiB0b2RheS5nZXREYXRlKCl9O1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IG1heCBkYXRlIHRvIHRvZGF5IGJ5IGRlZmF1bHRcclxuICAgIGlmICghdGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlID0ge3llYXI6IHRvZGF5LmdldEZ1bGxZZWFyKCksIG1vbnRoOiB0b2RheS5nZXRNb250aCgpICsgMSwgZGF5OiB0b2RheS5nZXREYXRlKCl9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gRmlsbCB0aGUgaW5wdXQgd2l0aCB0aGUgYm91bmQgZGF0YSBzZXQgaW4gdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGEpIHtcclxuICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSg8c3RyaW5nPnRoaXMuaW5wdXREYXRhLCB0aGlzLmRhdGVGb3JtYXQpO1xyXG4gICAgICB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdLnNldFZhbHVlKGZvcm1hdHRlZERhdGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZXMoKTogdm9pZCB7fVxyXG5cclxuXHJcbiAgbmdEb0NoZWNrKCkge1xyXG4gICAgLy8gdGhpcyBpcyB0aGUgb25seSB3YXkgSSBmb3VuZCB0byBoYXZlIHRoZSBmb2N1cyBvbiB0aGUgc3RhcnREYXRlIGRheSB3aGVuIHRoZSB1c2VyIG9wZW5zXHJcbiAgICAvLyB0aGUgcG9wdXAuIFdlIG9ubHkgd2FudCB0byBmb2N1cyBvbmNlIG90aGVyd2lzZSB1c2VyIGNhbiBub3QgY2xpY2sgYW55d2hlcmUgZWxzZSBpbiB0aGUgcG9wdXBcclxuICAgIGlmICh0aGlzLmRwICYmICF0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgICB0aGlzLmRwLmZvY3VzKCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIG1hcmsgcGlja2VyIGZvciBmb2N1c2luZyBuZXh0IHRpbWUgaXQgaXMgb3BlblxyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IDApIHtcclxuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVJbnRlcm5hbERhdGFGcm9tTW9kZWwoKSB7XHJcbiAgICAgaWYgKHRoaXMuaW5wdXREYXRhKSB7XHJcbiAgICAgICAgIHRoaXMubW9kaWZpZWREYXRhID0gbmV3IERhdGUoPHN0cmluZz50aGlzLmlucHV0RGF0YSk7XHJcbiAgICAgICAgIGxldCBtZDogRGF0ZSA9IG5ldyBEYXRlKDxzdHJpbmc+dGhpcy5pbnB1dERhdGEpO1xyXG4gICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHt5ZWFyOiBtZC5nZXRGdWxsWWVhcigpLCBtb250aDogbWQuZ2V0TW9udGgoKSArIDEsIGRheTogbWQuZ2V0RGF0ZSgpfTtcclxuICAgICB9IGVsc2Uge1xyXG4gICAgICAgICBsZXQgdG9kYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHt5ZWFyOiB0b2RheS5nZXRGdWxsWWVhcigpLCBtb250aDogdG9kYXkuZ2V0TW9udGgoKSArIDEsIGRheTogdG9kYXkuZ2V0RGF0ZSgpfTtcclxuICAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBib3VuZCBkYXRhIHdpdGggdGhlIHdvcmtpbmcgZGF0YS5cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlTW9kZWxGcm9tSW50ZXJuYWxEYXRhKCkge1xyXG4gICAgIGlmICh0aGlzLm1vZGlmaWVkRGF0YSkge1xyXG4gICAgICAgICBsZXQgZHNEYXRlID0gdGhpcy5uZ2JEYXRlVG9TdHJpbmcoPE5nYkRhdGVTdHJ1Y3Q+dGhpcy5tb2RpZmllZERhdGEpO1xyXG4gICAgICAgICBpZiAoZHNEYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXREYXRhID0gZHNEYXRlO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0RGF0YSA9IHRoaXMubW9kaWZpZWREYXRhO1xyXG4gICAgICAgICB9XHJcblxyXG4gICAgICAgICBjb25zdCBmb3JtYXR0ZWRNb2RpZmllZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSg8c3RyaW5nPnRoaXMuaW5wdXREYXRhLCB0aGlzLmRhdGVGb3JtYXQpO1xyXG4gICAgICAgICB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdLnNldFZhbHVlKGZvcm1hdHRlZE1vZGlmaWVkRGF0ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcblxyXG4gICAgIH1cclxuICAgICB0aGlzLmlucHV0RGF0YUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRhKTtcclxuICAgICB0aGlzLnVwZGF0ZUludGVybmFsRGF0YUZyb21Nb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyKCkge1xyXG4gICAgICB0aGlzLm1vZGlmaWVkRGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS5zZXRWYWx1ZShcIlwiKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZSA9IGZhbHNlO1xyXG4gICAgICBsZXQgdG9kYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHt5ZWFyOiB0b2RheS5nZXRGdWxsWWVhcigpLCBtb250aDogdG9kYXkuZ2V0TW9udGgoKSArIDEsIGRheTogdG9kYXkuZ2V0RGF0ZSgpfTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IDA7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0uc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRhQ2hhbmdlLmVtaXQodGhpcy5pbnB1dERhdGEpO1xyXG4gICAgICB0aGlzLmRhdGVWYWxpZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uS2V5VXBJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgLy8gQ2hlY2sgZm9yIHdoZW4gdGhlIGlucHV0IGlzIGRlbGV0ZWQgYmVmb3JlIGJlaW5nIHNhdmVkXHJcbiAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJEZWxldGVcIiB8fCBldmVudC5rZXkgPT09IFwiQmFja3NwYWNlXCIpICYmIHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0udmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHVwZGF0ZSByYW5nZSBzbyB0aGF0IHRoZSBkYXRlIHJhbmdlIHZhbGlkYXRvciBjYW4gcnVuIGFjY3VyYXRlbHlcclxuICAgICAgRGF0ZVZhbGlkYXRvci5taW5WYWx1ZSA9IHRoaXMubWluRGF0ZTtcclxuICAgICAgRGF0ZVZhbGlkYXRvci5tYXhWYWx1ZSA9IHRoaXMubWF4RGF0ZTtcclxuXHJcbiAgICAgIC8vIEdldCB0aGUgdXBkYXRlZCBkYXRlRm9ybSB2YWx1ZVxyXG4gICAgICBsZXQgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgbGV0IGlucHV0VmFsdWUgPSBldmVudFRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS5wYXRjaFZhbHVlKGlucHV0VmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgd2UgaGF2ZSBhIGdvb2QgZGF0ZSBhbmQgaXMgd2l0aGluIHRoZSByYW5nZSB1cGRhdGUgdGhlIHBpY2tlclxyXG4gICAgICBpZiAoRGF0ZVZhbGlkYXRvci5pblJhbmdlKHRoaXMuZGF0ZUZvcm0uY29udHJvbHNbXCJkYXRlSW5wdXRcIl0pKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0ZVZhbGlkKCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dERhdGEgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVGb3JtLmNvbnRyb2xzW1wiZGF0ZUlucHV0XCJdLnZhbHVlLCB0aGlzLmRhdGVGb3JtYXQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSW50ZXJuYWxEYXRhRnJvbU1vZGVsKCk7XHJcbiAgICAgICAgdGhpcy5kYXRlRm9ybS5jb250cm9sc1tcImRhdGVJbnB1dFwiXS5zZXRWYWx1ZSh0aGlzLmlucHV0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dERhdGFDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5nZXREYXRlVmFsaWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmdiRGF0ZVN0cnVjdCBzdG9yZXMgZGF5LCBtb250aCBhbmQgeWVhci4gIENvbnZlcnQgdGhpcyB0byBJU084NjAxLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKiBAcmV0dXJucyB7YW55fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbmdiRGF0ZVRvU3RyaW5nKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGUgPT09IHVuZGVmaW5lZCB8fCBkYXRlID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlLnllYXIgPT09IHVuZGVmaW5lZCB8fCBkYXRlLm1vbnRoID09PSB1bmRlZmluZWQgfHwgZGF0ZS5kYXkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZS55ZWFyICsgXCItXCIgKyAoKGRhdGUubW9udGggPCAxMCkgPyBcIjBcIiA6IFwiXCIpICsgZGF0ZS5tb250aCArIFwiLVwiICsgKChkYXRlLmRheSA8IDEwKSA/IFwiMFwiIDogXCJcIikgKyBkYXRlLmRheSArIFwiVDEyOjAwLTA2OjAwXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZGF0ZUZvcm0uZ2V0KFwiZGF0ZUlucHV0XCIpLmhhc0Vycm9yKFwiZGF0ZUZvcm1hdFZhbGlkYXRvclwiKVxyXG4gICAgICB8fCB0aGlzLmRhdGVGb3JtLmdldChcImRhdGVJbnB1dFwiKS5oYXNFcnJvcihcImRhdGVSYW5nZVZhbGlkYXRvclwiKVxyXG4gICAgICB8fCB0aGlzLmRhdGVGb3JtLmdldChcImRhdGVJbnB1dFwiKS5oYXNFcnJvcihcImRhdGVJbnZhbGlkVmFsaWRhdG9yXCIpKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVWYWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -339,7 +339,7 @@ DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
339
339
  (keyup)="onKeyUp($event)"
340
340
  (keydown)="onKeyDown($event)"
341
341
  (keypress)="onKeyPress($event)"
342
- (click)="showResults()" *ngIf="!disabled" />
342
+ (click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
343
343
  </li>
344
344
  </ul>
345
345
  <span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
@@ -394,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
394
394
  (keyup)="onKeyUp($event)"
395
395
  (keydown)="onKeyDown($event)"
396
396
  (keypress)="onKeyPress($event)"
397
- (click)="showResults()" *ngIf="!disabled" />
397
+ (click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
398
398
  </li>
399
399
  </ul>
400
400
  <span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
@@ -456,4 +456,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
456
456
  type: ViewChild,
457
457
  args: ["termInput", { static: false }]
458
458
  }] } });
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3Ryxt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LE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWdDLE9BQU87c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFZWSxTQUFTO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0Ryb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wZG93bi1zZWxlY3QtcmVzdWx0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NlbGVjdEl0ZW0sIEtFWV9DT0RFfSBmcm9tIFwiLi9zZWxlY3QtaXRlbVwiO1xyXG5pbXBvcnQge01lc3NhZ2VzfSBmcm9tIFwiLi9tZXNzYWdlc1wiO1xyXG5cclxuY29uc3QgVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25TZWxlY3RDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge307XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktZHJvcGRvd24tc2VsZWN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbY2xhc3Muc2ltcGxlLXNlbGVjdGlvbl09XCIhbXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbl09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICBbY2xhc3Muc2VhcmNoLWZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiXHJcbiAgICAgICAgICBbY2xhc3MucmVhZG9ubHldPVwiZGlzYWJsZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hGb2N1c2VkIHx8IG11bHRpcGxlXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2VsZWN0LXNlbGVjdGVkIGxhYmVsIGxhYmVsLWluZm9cIiBbY2xhc3MubGFiZWxdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5sYWJlbC1pbmZvXT1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtaXRlbS10ZXh0XCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZWxlY3Qtc2VsZWN0aW9uLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZGVsZXRlSWNvblwiIFtjbGFzcy50ZXh0LWluZm9dPVwiIW11bHRpcGxlXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bGkgY2xhc3M9XCJzZWxlY3QtaW5wdXRcIj5cclxuICAgICAgICAgIDxpbnB1dCAjdGVybUlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRlcm1cIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlYWJsZV09XCJpc0hpZGVhYmxlKClcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRJbnB1dFdpZHRoKClcIlxyXG4gICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIC8+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWRyb3AtbWVudVwiICpuZ0lmPVwiaW5wdXRTdGF0ZT09PTBcIiAoY2xpY2spPVwic2hvd1Jlc3VsdHMoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWZ0ZXJcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdHMtY29udGFpbmVyXCIgKm5nSWY9XCJyZXN1bHRzVmlzaWJsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0cy1tc2dcIiAqbmdJZj1cImxpc3RlZERhdGEgJiYgKGxpc3RlZERhdGEubGVuZ3RoICsgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIDwgcmVzdWx0c0NvdW50XCI+XHJcbiAgICAgICAgICB7e2dldENvdW50TWVzc2FnZSgpfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHRzLW1zZyBuby1yZXN1bHRzLW1zZ1wiICpuZ0lmPVwic2VhcmNoRm9jdXNlZCAmJiBsaXN0ZWREYXRhICYmIGxpc3RlZERhdGEubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICB7e21lc3NhZ2VzICYmIG1lc3NhZ2VzLm5vUmVzdWx0c01zZyA/IG1lc3NhZ2VzLm5vUmVzdWx0c01zZyA6IE5PX1JFU1VMVFNfTVNHfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGhjaS1kcm9wZG93bi1zZWxlY3QtcmVzdWx0ICNyZXN1bHRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwibGlzdGVkRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWRFdmVudCk9XCJvbkl0ZW1TZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlUmVmXT1cInRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiPjwvaGNpLWRyb3Bkb3duLXNlbGVjdC1yZXN1bHQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtWQUxVRV9BQ0NFU1NPUl0sXHJcbiAgaG9zdDoge2NsYXNzOiBcImZsZXgtZ3Jvdy0xXCJ9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93blNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yICB7XHJcblxyXG4gIE1PUkVfUkVTVUxUU19NU0cgPSBcIlNob3dpbmcgXCIgKyBNZXNzYWdlcy5QQVJUSUFMX0NPVU5UX1ZBUiArIFwiIG9mIFwiICsgTWVzc2FnZXMuVE9UQUxfQ09VTlRfVkFSICsgXCIgcmVzdWx0cy5cIjtcclxuICBOT19SRVNVTFRTX01TRyA9IFwiTm8gcmVzdWx0cyBmb3VuZFwiO1xyXG5cclxuICBASW5wdXQoKSBtZXNzYWdlczogTWVzc2FnZXMgPSB7XHJcbiAgICBtb3JlUmVzdWx0c01zZzogdGhpcy5NT1JFX1JFU1VMVFNfTVNHLFxyXG4gICAgbm9SZXN1bHRzTXNnOiB0aGlzLk5PX1JFU1VMVFNfTVNHXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgZGF0YVByb3ZpZGVyOiAoaXRlbTogc3RyaW5nLCBzZWxlY3RlZD86IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBzZWxlY3RlZFByb3ZpZGVyOiAoaWRzOiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgc2VsZWN0SXRlbUFkYXB0ZXI6IChlbnRpdHk6IGFueSkgPT4gU2VsZWN0SXRlbTtcclxuICBASW5wdXQoKSByZWZlcmVuY2VNb2RlOiBcImlkXCIgfCBcImVudGl0eVwiID0gXCJpZFwiO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpZW50TW9kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUljb24gPSBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICBASW5wdXQoKSBpbnB1dFN0YXRlID0gMjsgLy8gc2VsZWN0SWNvbiBjb250cm9sbGVyOiAwLT53aXRoIHNlbGVjdEljb24gMi0+d2l0aG91dCBzZWxlY3RJY29uXHJcbiAgQElucHV0KCkgcmVzdWx0c0NvdW50O1xyXG4gIEBJbnB1dCgpIHNlYXJjaERlbGF5ID0gMTAwO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0OiBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZTogRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwicmVzdWx0c1wiLCB7c3RhdGljOiBmYWxzZX0pIHJlc3VsdHM6IERyb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50O1xyXG5cclxuICBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVybSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBzZWFyY2hGb2N1c2VkID0gZmFsc2U7XHJcbiAgcmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICBsaXN0ZWREYXRhOiBTZWxlY3RJdGVtW107XHJcbiAgbW9kaWZpZWREYXRhOiBTZWxlY3RJdGVtW107XHJcbiAgc2VsZWN0ZWRJdGVtczogU2VsZWN0SXRlbVtdID0gW107XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJ0ZXJtSW5wdXRcIiwge3N0YXRpYzogZmFsc2V9KSBwcml2YXRlIHRlcm1JbnB1dDtcclxuXHJcbiAgcHJpdmF0ZSBwbGFjZWhvbGRlclNlbGVjdGVkID0gXCJcIjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1TZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3RlZERhdGEuaW5kZXhPZihpdGVtLCAwKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmxpc3RlZERhdGEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmJ1aWxkVmFsdWUoKSk7XHJcbiAgICB0aGlzLnRlcm0ucGF0Y2hWYWx1ZShcIlwiLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZvY3VzSW5wdXQoKSwgMSk7XHJcbiAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdC5lbWl0KGl0ZW0pO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IGl0ZW0udGV4dDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzSW5wdXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoc2VsZWN0ZWRWYWx1ZXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkVmFsdWVzKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlZmVyZW5jZU1vZGUgPT09IFwiaWRcIikge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21JZHMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q291bnRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbXNnID0gdGhpcy5tZXNzYWdlcyAmJiB0aGlzLm1lc3NhZ2VzLm1vcmVSZXN1bHRzTXNnID8gdGhpcy5tZXNzYWdlcy5tb3JlUmVzdWx0c01zZyA6IHRoaXMuTU9SRV9SRVNVTFRTX01TRztcclxuICAgIG1zZyA9IG1zZy5yZXBsYWNlKE1lc3NhZ2VzLlBBUlRJQUxfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5saXN0ZWREYXRhLmxlbmd0aCkpO1xyXG4gICAgbXNnID0gbXNnLnJlcGxhY2UoTWVzc2FnZXMuVE9UQUxfQ09VTlRfVkFSLCBTdHJpbmcodGhpcy5yZXN1bHRzQ291bnQgLSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSk7XHJcbiAgICByZXR1cm4gbXNnO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtKGl0ZW06IFNlbGVjdEl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSwgMCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMucmVtb3ZlLmVtaXQoaXRlbSk7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgOiB0aGlzLnBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRXaWR0aCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VhcmNoRW1wdHkgPSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwICYmICh0aGlzLnRlcm0udmFsdWUgPT09IG51bGwgfHwgdGhpcy50ZXJtLnZhbHVlLmxlbmd0aCA9PT0gMCk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLnRlcm0udmFsdWUgPT09IG51bGwgPyAwIDogdGhpcy50ZXJtLnZhbHVlLmxlbmd0aDtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICByZXR1cm4gXCIxMDAlXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc2VhcmNoRW1wdHkgPyBcIjEwMCVcIiA6ICgxICsgbGVuZ3RoICogLjYpICsgXCJlbVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIaWRlYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgIT09IFwiXCI7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKFwiXCIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdHMpIHtcclxuICAgICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkRPV05fQVJST1cpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuYWN0aXZlTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLlVQX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZVByZXZpb3VzKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXRTdGF0ZSA9PT0gMCkge1xyXG4gICAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5FTlRFUiB8fCBldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSZXN1bHRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdHMpIHtcclxuICAgICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLlRBQikge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5zZWxlY3RDdXJyZW50SXRlbSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkRFTEVURSkge1xyXG4gICAgICBpZiAoKCF0aGlzLnRlcm0udmFsdWUgfHwgdGhpcy50ZXJtLnZhbHVlLmxlbmd0aCA9PT0gMCkgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW0odGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5UHJlc3MoZXY6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5FTlRFUikge1xyXG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1Jlc3VsdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvUmVzdWx0cyhvZihcIlwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXJtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0NoYW5nZXNBbmRMb2FkRGF0YUZyb21PYnNlcnZhYmxlKCkge1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMudGVybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuc2VhcmNoRGVsYXkpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2JzZXJ2YWJsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVzdWx0cyhvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZz4pOiB2b2lkIHtcclxuICAgIG9ic2VydmFibGUucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZSksXHJcbiAgICAgIGZpbHRlcigodGVybSkgPT4gdGVybS5sZW5ndGggPj0gdGhpcy5pbnB1dFN0YXRlKSxcclxuICAgICAgc3dpdGNoTWFwKHRlcm0gPT4gdGhpcy5sb2FkRGF0YUZyb21PYnNlcnZhYmxlKHRlcm0pKSxcclxuICAgICAgbWFwKGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+ICEodGhpcy5tdWx0aXBsZSAmJiB0aGlzLmFscmVhZHlTZWxlY3RlZChpdGVtKSkpKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMucmVzdWx0c1Zpc2libGUgPSB0aGlzLnNlYXJjaEZvY3VzZWQpXHJcbiAgICApLnN1YnNjcmliZSgoaXRlbXMpID0+IHRoaXMubGlzdGVkRGF0YSA9IGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50TW9kZSA/IHRoaXMuZmV0Y2hBbmRmaWx0ZXJMb2NhbERhdGEodGVybSkgOiB0aGlzLmZldGNoRGF0YSh0ZXJtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWxyZWFkeVNlbGVjdGVkKGl0ZW06IFNlbGVjdEl0ZW0pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKHNlbGVjdGVkSXRlbSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZEl0ZW0uaWQgPT09IGl0ZW0uaWQpIHtcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kZmlsdGVyTG9jYWxEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICBpZiAoIXRoaXMubW9kaWZpZWREYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRGF0YShcIlwiKS5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKChpdGVtcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tb2RpZmllZERhdGEgPSBpdGVtcztcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckxvY2FsRGF0YSh0ZXJtKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTG9jYWxEYXRhKHRlcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzXHJcbiAgICAgIC5kYXRhUHJvdmlkZXIodGVybSwgdGhpcy5idWlsZFZhbHVlKCkpXHJcbiAgICAgIC5waXBlKG1hcCgoaXRlbXM6IGFueVtdKSA9PiB0aGlzLmFkYXB0SXRlbXMoaXRlbXMpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIG9mKHRoaXMubW9kaWZpZWREYXRhLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5jb250YWluc1RleHQoaXRlbSwgdGVybSkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udGFpbnNUZXh0KGl0ZW0sIHRlcm06IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGl0ZW0udGV4dC50b1VwcGVyQ2FzZSgpLmluZGV4T2YodGVybS50b1VwcGVyQ2FzZSgpKSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkYXB0SXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0SXRlbVtdIHtcclxuICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW1zID0gW107XHJcbiAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIoaXRlbSkpXHJcbiAgICAgIC5mb3JFYWNoKChzZWxlY3RJdGVtKSA9PiBjb252ZXJ0ZWRJdGVtcy5wdXNoKHNlbGVjdEl0ZW0pKTtcclxuICAgIHJldHVybiBjb252ZXJ0ZWRJdGVtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRWYWx1ZSgpIHtcclxuICAgIHJldHVybiBcImlkXCIgPT09IHRoaXMucmVmZXJlbmNlTW9kZSA/IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKSA6IHRoaXMuZ2V0RW50aXRpZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRJZHMoKTogYW55IHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGNvbnN0IGlkczogYW55W10gPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpZHMucHVzaChpdGVtLmlkKSk7XHJcbiAgICAgIHJldHVybiBpZHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCA/IG51bGwgOiB0aGlzLnNlbGVjdGVkSXRlbXNbMF0uaWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0aWVzKCk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0aWVzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGVudGl0aWVzLnB1c2goaXRlbS5lbnRpdHkpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGVudGl0aWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmVudGl0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVJdGVtc0Zyb21FbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdEl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW3NlbGVjdEl0ZW1dO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBzZWxlY3RJdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aEVudGl0aWVzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGVudGl0eSk7XHJcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHJcbiAgICAgIGlmIChpZHMuaW5kZXhPZihpdGVtLmlkKSA9PT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlSXRlbXNGcm9tSWRzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlTXVsdGlwbGVXaXRoSWRzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU2luZ2xlV2l0aElkKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlwbGVXaXRoSWRzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRQcm92aWRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IHVuaXF1ZUlkcyA9IFtdO1xyXG4gICAgICBzZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh1bmlxdWVJZHMuaW5kZXhPZihpZCkgPT09IC0xKSB7XHJcbiAgICAgICAgICB1bmlxdWVJZHMucHVzaChpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcih1bmlxdWVJZHMpLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gaXRlbXMubWFwKHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2luZ2xlV2l0aElkKGlkOiBhbnkpIHtcclxuICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRQcm92aWRlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcihbaWRdKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdEl0ZW0gPSB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW3NlbGVjdEl0ZW1dO1xyXG4gICAgICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gc2VsZWN0SXRlbS50ZXh0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3Ryxt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LE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWdDLE9BQU87c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFZWSxTQUFTO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0Ryb3Bkb3duU2VsZWN0UmVzdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wZG93bi1zZWxlY3QtcmVzdWx0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NlbGVjdEl0ZW0sIEtFWV9DT0RFfSBmcm9tIFwiLi9zZWxlY3QtaXRlbVwiO1xyXG5pbXBvcnQge01lc3NhZ2VzfSBmcm9tIFwiLi9tZXNzYWdlc1wiO1xyXG5cclxuY29uc3QgVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25TZWxlY3RDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge307XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktZHJvcGRvd24tc2VsZWN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbY2xhc3Muc2ltcGxlLXNlbGVjdGlvbl09XCIhbXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbl09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICBbY2xhc3Muc2VhcmNoLWZvY3VzZWRdPVwic2VhcmNoRm9jdXNlZFwiXHJcbiAgICAgICAgICBbY2xhc3MucmVhZG9ubHldPVwiZGlzYWJsZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hGb2N1c2VkIHx8IG11bHRpcGxlXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiIGNsYXNzPVwic2VsZWN0LXNlbGVjdGVkIGxhYmVsIGxhYmVsLWluZm9cIiBbY2xhc3MubGFiZWxdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5sYWJlbC1pbmZvXT1cIm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtaXRlbS10ZXh0XCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZWxlY3Qtc2VsZWN0aW9uLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZGVsZXRlSWNvblwiIFtjbGFzcy50ZXh0LWluZm9dPVwiIW11bHRpcGxlXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bGkgY2xhc3M9XCJzZWxlY3QtaW5wdXRcIj5cclxuICAgICAgICAgIDxpbnB1dCAjdGVybUlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRlcm1cIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlYWJsZV09XCJpc0hpZGVhYmxlKClcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRJbnB1dFdpZHRoKClcIlxyXG4gICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIGF0dHIuYXJpYS1sYWJlbD1cInt7Z2V0UGxhY2Vob2xkZXIoKX19XCIvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1kcm9wLW1lbnVcIiAqbmdJZj1cImlucHV0U3RhdGU9PT0wXCIgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImFmdGVyXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRzLWNvbnRhaW5lclwiICpuZ0lmPVwicmVzdWx0c1Zpc2libGVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdHMtbXNnXCIgKm5nSWY9XCJsaXN0ZWREYXRhICYmIChsaXN0ZWREYXRhLmxlbmd0aCArIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSA8IHJlc3VsdHNDb3VudFwiPlxyXG4gICAgICAgICAge3tnZXRDb3VudE1lc3NhZ2UoKX19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0cy1tc2cgbm8tcmVzdWx0cy1tc2dcIiAqbmdJZj1cInNlYXJjaEZvY3VzZWQgJiYgbGlzdGVkRGF0YSAmJiBsaXN0ZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAge3ttZXNzYWdlcyAmJiBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgPyBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgOiBOT19SRVNVTFRTX01TR319XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxoY2ktZHJvcGRvd24tc2VsZWN0LXJlc3VsdCAjcmVzdWx0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImxpc3RlZERhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkRXZlbnQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hGb2N1c2VkXT1cInNlYXJjaEZvY3VzZWRcIj48L2hjaS1kcm9wZG93bi1zZWxlY3QtcmVzdWx0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbVkFMVUVfQUNDRVNTT1JdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJmbGV4LWdyb3ctMVwifVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciAge1xyXG5cclxuICBNT1JFX1JFU1VMVFNfTVNHID0gXCJTaG93aW5nIFwiICsgTWVzc2FnZXMuUEFSVElBTF9DT1VOVF9WQVIgKyBcIiBvZiBcIiArIE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiArIFwiIHJlc3VsdHMuXCI7XHJcbiAgTk9fUkVTVUxUU19NU0cgPSBcIk5vIHJlc3VsdHMgZm91bmRcIjtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VzID0ge1xyXG4gICAgbW9yZVJlc3VsdHNNc2c6IHRoaXMuTU9SRV9SRVNVTFRTX01TRyxcclxuICAgIG5vUmVzdWx0c01zZzogdGhpcy5OT19SRVNVTFRTX01TR1xyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFQcm92aWRlcjogKGl0ZW06IHN0cmluZywgc2VsZWN0ZWQ/OiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm92aWRlcjogKGlkczogYW55W10pID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdEl0ZW1BZGFwdGVyOiAoZW50aXR5OiBhbnkpID0+IFNlbGVjdEl0ZW07XHJcbiAgQElucHV0KCkgcmVmZXJlbmNlTW9kZTogXCJpZFwiIHwgXCJlbnRpdHlcIiA9IFwiaWRcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsaWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWxldGVJY29uID0gXCJmYXMgZmEtdGltZXMtY2lyY2xlXCI7XHJcbiAgQElucHV0KCkgaW5wdXRTdGF0ZSA9IDI7IC8vIHNlbGVjdEljb24gY29udHJvbGxlcjogMC0+d2l0aCBzZWxlY3RJY29uIDItPndpdGhvdXQgc2VsZWN0SWNvblxyXG4gIEBJbnB1dCgpIHJlc3VsdHNDb3VudDtcclxuICBASW5wdXQoKSBzZWFyY2hEZWxheSA9IDEwMDtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmU6IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInJlc3VsdHNcIiwge3N0YXRpYzogZmFsc2V9KSByZXN1bHRzOiBEcm9wZG93blNlbGVjdFJlc3VsdENvbXBvbmVudDtcclxuXHJcbiAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHRlcm0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gIHJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgbGlzdGVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIG1vZGlmaWVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFNlbGVjdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKFwidGVybUlucHV0XCIsIHtzdGF0aWM6IGZhbHNlfSkgcHJpdmF0ZSB0ZXJtSW5wdXQ7XHJcblxyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogU2VsZWN0SXRlbSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5saXN0ZWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5idWlsZFZhbHVlKCkpO1xyXG4gICAgdGhpcy50ZXJtLnBhdGNoVmFsdWUoXCJcIiwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c0lucHV0KCksIDEpO1xyXG4gICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c0lucHV0KCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWVzOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcykge1xyXG4gICAgICBpZiAodGhpcy5yZWZlcmVuY2VNb2RlID09PSBcImlkXCIpIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tSWRzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvdW50TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1zZyA9IHRoaXMubWVzc2FnZXMgJiYgdGhpcy5tZXNzYWdlcy5tb3JlUmVzdWx0c01zZyA/IHRoaXMubWVzc2FnZXMubW9yZVJlc3VsdHNNc2cgOiB0aGlzLk1PUkVfUkVTVUxUU19NU0c7XHJcbiAgICBtc2cgPSBtc2cucmVwbGFjZShNZXNzYWdlcy5QQVJUSUFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMubGlzdGVkRGF0YS5sZW5ndGgpKTtcclxuICAgIG1zZyA9IG1zZy5yZXBsYWNlKE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMucmVzdWx0c0NvdW50IC0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkpO1xyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBTZWxlY3RJdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0sIDApO1xyXG5cclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmJ1aWxkVmFsdWUoKSk7XHJcbiAgICB0aGlzLnJlbW92ZS5lbWl0KGl0ZW0pO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkIDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIGdldElucHV0V2lkdGgoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlYXJjaEVtcHR5ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiAodGhpcy50ZXJtLnZhbHVlID09PSBudWxsIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy50ZXJtLnZhbHVlID09PSBudWxsID8gMCA6IHRoaXMudGVybS52YWx1ZS5sZW5ndGg7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgcmV0dXJuIFwiMTAwJVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHNlYXJjaEVtcHR5ID8gXCIxMDAlXCIgOiAoMSArIGxlbmd0aCAqIC42KSArIFwiZW1cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSGlkZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkICE9PSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLnRlcm0ucGF0Y2hWYWx1ZShcIlwiLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbktleVVwKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZU5leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5VUF9BUlJPVykge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5hY3RpdmVQcmV2aW91cygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkVOVEVSKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLnNlbGVjdEN1cnJlbnRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0U3RhdGUgPT09IDApIHtcclxuICAgICAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIgfHwgZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRE9XTl9BUlJPVykge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5UQUIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ERUxFVEUpIHtcclxuICAgICAgaWYgKCghdGhpcy50ZXJtLnZhbHVlIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleVByZXNzKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIpIHtcclxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dSZXN1bHRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2YoXCJcIikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpIHtcclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLnRlcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLnNlYXJjaERlbGF5KSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9SZXN1bHRzKG9ic2VydmFibGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc3VsdHMob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBvYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2UpLFxyXG4gICAgICBmaWx0ZXIoKHRlcm0pID0+IHRlcm0ubGVuZ3RoID49IHRoaXMuaW5wdXRTdGF0ZSksXHJcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtKSksXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5hbHJlYWR5U2VsZWN0ZWQoaXRlbSkpKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gdGhpcy5zZWFyY2hGb2N1c2VkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB0aGlzLmxpc3RlZERhdGEgPSBpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWREYXRhRnJvbU9ic2VydmFibGUodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudE1vZGUgPyB0aGlzLmZldGNoQW5kZmlsdGVyTG9jYWxEYXRhKHRlcm0pIDogdGhpcy5mZXRjaERhdGEodGVybSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFscmVhZHlTZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChzZWxlY3RlZEl0ZW0gPT4ge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgaWYgKCF0aGlzLm1vZGlmaWVkRGF0YSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEoXCJcIikucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoaXRlbXMpID0+IHtcclxuICAgICAgICAgIHRoaXMubW9kaWZpZWREYXRhID0gaXRlbXM7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckxvY2FsRGF0YSh0ZXJtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpc1xyXG4gICAgICAuZGF0YVByb3ZpZGVyKHRlcm0sIHRoaXMuYnVpbGRWYWx1ZSgpKVxyXG4gICAgICAucGlwZShtYXAoKGl0ZW1zOiBhbnlbXSkgPT4gdGhpcy5hZGFwdEl0ZW1zKGl0ZW1zKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiBvZih0aGlzLm1vZGlmaWVkRGF0YS5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuY29udGFpbnNUZXh0KGl0ZW0sIHRlcm0pKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnRhaW5zVGV4dChpdGVtLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpdGVtLnRleHQudG9VcHBlckNhc2UoKS5pbmRleE9mKHRlcm0udG9VcHBlckNhc2UoKSkgIT09IC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGFwdEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdEl0ZW1bXSB7XHJcbiAgICBjb25zdCBjb252ZXJ0ZWRJdGVtcyA9IFtdO1xyXG4gICAgaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGl0ZW0pKVxyXG4gICAgICAuZm9yRWFjaCgoc2VsZWN0SXRlbSkgPT4gY29udmVydGVkSXRlbXMucHVzaChzZWxlY3RJdGVtKSk7XHJcbiAgICByZXR1cm4gY29udmVydGVkSXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gXCJpZFwiID09PSB0aGlzLnJlZmVyZW5jZU1vZGUgPyB0aGlzLmdldFNlbGVjdGVkSWRzKCkgOiB0aGlzLmdldEVudGl0aWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdGVkSWRzKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBpZHM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaWRzLnB1c2goaXRlbS5pZCkpO1xyXG4gICAgICByZXR1cm4gaWRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdGllcygpOiBhbnlbXSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBlbnRpdGllcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBlbnRpdGllcy5wdXNoKGl0ZW0uZW50aXR5KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlbnRpdGllcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5lbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gc2VsZWN0SXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihlbnRpdHkpO1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcblxyXG4gICAgICBpZiAoaWRzLmluZGV4T2YoaXRlbS5pZCkgPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVdpdGhJZChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB1bmlxdWVJZHMgPSBbXTtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICBpZiAodW5pcXVlSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xyXG4gICAgICAgICAgdW5pcXVlSWRzLnB1c2goaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIodW5pcXVlSWRzKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNpbmdsZVdpdGhJZChpZDogYW55KSB7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIoW2lkXSkuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IHNlbGVjdEl0ZW0udGV4dDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -480,7 +480,7 @@ CustomComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
480
480
  [tabindex]="tabindex"
481
481
  (keydown)="onKey($event)"
482
482
  (focus)="onFocus()"
483
- (focusout)="onFocusOut()"
483
+ (focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
484
484
  >
485
485
  <div matSuffix
486
486
  class="hci-combobox-arrow-wrapper"
@@ -557,7 +557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
557
557
  [tabindex]="tabindex"
558
558
  (keydown)="onKey($event)"
559
559
  (focus)="onFocus()"
560
- (focusout)="onFocusOut()"
560
+ (focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
561
561
  >
562
562
  <div matSuffix
563
563
  class="hci-combobox-arrow-wrapper"
@@ -676,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
676
676
  type: ViewChild,
677
677
  args: ["input", { read: MatAutocompleteTrigger, static: false }]
678
678
  }] } });
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBeUJJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlyQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJbEMsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7TWF0TGVnYWN5QXV0b2NvbXBsZXRlVHJpZ2dlciBhcyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWF1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0xpc3RLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7TWF0TGVnYWN5T3B0aW9uIGFzIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlXCI7XHJcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWNvbWJvYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybS1maWVsZCAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidGhpcy50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21GaWVsZENsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsICE9PSB1bmRlZmluZWRcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWwgPT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgIHt7IHRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXIgfX1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBuYW1lPVwiY3VzdG9tQ29tYm9Cb3hGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5uZXJDb250cm9sXCJcclxuICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJjZGtGb2N1c0luaXRpYWwgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjZGtGb2N1c0luaXRpYWxcIlxyXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgICAgICAgID5cclxuICAgICAgPGRpdiBtYXRTdWZmaXhcclxuICAgICAgICAgICBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyXCJcclxuICAgICAgICAgICAoY2xpY2spID0gXCJ0b2dnbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRDbGljaygpXCJcclxuICAgICAgICAgICAobW91c2V1cCk9XCJlbmRDbGljaygpXCJcclxuICAgICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvd1wiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1zcGlubmVyIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dMb2FkZXIoKVwiIFtkaWFtZXRlcl09XCIzMFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tbGVmdDogOHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInRoaXMuc2VsZWN0T3B0aW9uKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJ0aGlzLm9uT3BlbmVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cInRoaXMub25DbG9zZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJ0aGlzLmRpc3BsYXlGblwiPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc09wZW4gPyBudWxsIDogJ25vbmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGNpLWNvbWJvYm94LXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT0gXCJjdXN0b21WaWV3cG9ydENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4ICogMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4QnVmZmVyUHhdPVwibnVtT3B0aW9uc1RvU2hvdyAqIG9wdGlvblNpemVQeCAqIDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImFsbG93Tm9uZSAmJiBpc09wZW4gJiYgKHRoaXMuZm9yY2VTaG93Tm9uZSB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImN1c3RvbU9wdGlvbkNsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICBOb25lXHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBvcHQgb2YgdGhpcy5sb2FkZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tT3B0aW9uQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGNpLWNvbWJvYm94LXNlbGVjdGVkXT1cIih2YWx1ZUZpZWxkID8gb3B0W3ZhbHVlRmllbGRdIDogb3B0KSA9PT0gb3V0ZXJDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtc2VsZWN0ZWRdPVwiKHZhbHVlRmllbGQgPyBvcHRbdmFsdWVGaWVsZF0gOiBvcHQpID09PSBvdXRlckNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkaXNwbGF5RmllbGQgPyBvcHRbZGlzcGxheUZpZWxkXSA6IG9wdCB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAge3sgZ2V0RXJyb3IoKSB9fVxyXG4gICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tQ29tYm9Cb3hDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgfV0sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6IFwiaGNpLWNvbWJvYm94LWNvbnRhaW5lclwiXHJcbiAgfSxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuaGNpLWNvbWJvYm94LWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LWFycm93IHtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZDtcclxuICAgICAgbWFyZ2luOiAwIDRweDtcclxuICAgICAgY29sb3I6IHZhcigtLWJsYWNrLWRhcmtlc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtYXJyb3ctd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCBtYXQtb3B0aW9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgcGFkZGluZzogMCAuMnJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IG1hdC1vcHRpb24gLm1hdC1vcHRpb24tdGV4dCB7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCAuaGNpLWNvbWJvYm94LXNlbGVjdGVkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IC5tYXQtYWN0aXZlIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxuICAgIH1cclxuXHJcbiAgICAvKiBmaXggaml0dGVyeSBzY3JvbGwgYnVnIGluIGNocm9tZSAqL1xyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCB7XHJcbiAgICAgIG92ZXJmbG93LWFuY2hvcjogbm9uZTtcclxuICAgIH1cclxuICBgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tYm9Cb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHB1YmxpYyBvcHRpb25TaXplUHg6IG51bWJlciA9IDI1O1xyXG4gIHB1YmxpYyBudW1PcHRpb25zVG9TaG93OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4T3B0aW9uc1RvU2hvdzogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbVZpZXdwb3J0Q2xhc3M6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjdXN0b21GaWVsZENsYXNzZXModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzID0gdmFsdWUgPyB2YWx1ZSA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1c3RvbUZpZWxkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzID8gdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzIDogXCJtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRcIjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjdXN0b21PcHRpb25DbGFzc2VzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1c3RvbU9wdGlvbkNsYXNzZXMgPSB2YWx1ZSA/IHZhbHVlIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tT3B0aW9uQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA/IHRoaXMuX2N1c3RvbU9wdGlvbkNsYXNzZXMgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgYSBsYWJlbCBpcyBub3Qgc3BlY2lmaWVkIHRoZSBwbGFjZWhvbGRlciBpcyBwcm9tb3RlZCB0byBhIGxhYmVsLlxyXG4gIC8vIFRvIGNyZWF0ZSBhIGZvcm0gZmllbGQgd2l0aCBvbmx5IGEgcGxhY2Vob2xkZXIsIHNwZWNpZnkgYW4gZW1wdHlcclxuICAvLyBsYWJlbCB0byBwcmV2ZW50IHRoZSBwbGFjZWhvbGRlciBmcm9tIGJlaW5nIHByb21vdGVkLlxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy8gUmVtb3ZlcyB0aGUgcGxhY2Vob2xkZXIgYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZVxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0ZW1wb3JhcnlQbGFjZWhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dOb25lOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdFRleHRPbk9wZW4gPSB0cnVlO1xyXG5cclxuICAvLyB0ZWxsIG1hdC1kaWFsb2cgdG8gcGFzcyBpbml0aWFsIGZvY3VzIHRvIHRoZSBpbm5lciBpbnB1dFxyXG4gIEBIb3N0QmluZGluZyhcImF0dHIuY2RrRm9jdXNJbml0aWFsXCIpIF9jZGtGb2N1c0luaXRpYWwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjZGtGb2N1c0luaXRpYWw6IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gb24gdGFiLCBza2lwIHRoZSBob3N0IGVsZW1lbnQgYW5kIGZvY3VzIHRoZSBpbnB1dFxyXG4gIEBIb3N0QmluZGluZyhcImF0dHIudGFiaW5kZXhcIikgX3RhYmluZGV4ID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBmb3JjZVNob3dOb25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFsbG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbG9hZGVkT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHZhbHVlRmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwcml2YXRlIGZvcmNlRW1pdE9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgYXBwZWFyYW5jZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGU7XHJcblxyXG4gIC8vIFNldCB0byBlbXB0eSB0byBub3Qgc2hvdyBlcnJvcnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZpbmVFcnJvcnM6IGFueSA9IHtyZXF1aXJlZDogXCJUaGlzIGlzIGEgcmVxdWlyZWQgZmllbGRcIn07XHJcblxyXG4gIHByaXZhdGUgX3Nob3dMb2FkZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jdXN0b21GaWVsZENsYXNzZXM6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBfY3VzdG9tT3B0aW9uQ2xhc3Nlczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIG91dGVyQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBpbm5lckNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XHJcbiAgcHJpdmF0ZSBpZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBub05nQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblxyXG4gIGtleU1hbmFnZXI6IExpc3RLZXlNYW5hZ2VyPEhpZ2hsaWdodGFibGU+O1xyXG4gIHZpZXdwb3J0UmVuZGVyUmFuZ2U6IExpc3RSYW5nZTtcclxuICB2aWV3cG9ydFZpc2libGVSYW5nZTogTGlzdFJhbmdlID0ge1xyXG4gICAgc3RhcnQ6IDAsXHJcbiAgICBlbmQ6IHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDFcclxuICB9O1xyXG5cclxuICBhY3RpdmVWYWx1ZTogYW55O1xyXG5cclxuICBwdWJsaWMgY2xpY2tJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3B0aW9uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJ2aWV3cG9ydFwiLCB7c3RhdGljOiB0cnVlfSlcclxuICB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwge3JlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHN0YXRpYzogZmFsc2V9KVxyXG4gIGF1dG9Db21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VGbjogKHZhbDogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgZGlzcGxheUZuOiAob3B0PzogYW55KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQgPSAob3B0PzogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gb3B0ID8gKHRoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdCkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nob3dMb2FkZXIgPSB0aGlzLmFsbG93TG9hZGVyICYmICghIHRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICBpZiAobmdDb250cm9sICYmIG5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wudmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vTmdDb250cm9sID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKF92YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyB3b3JrIGFyb3VuZCBmb3IgdmFsaWRhdG9ycyBub3QgYWx3YXlzIHByb3BhZ2F0aW5nXHJcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMub3V0ZXJDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChfZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLnZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC5hc3luY1ZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0RXJyb3JzKHRoaXMub3V0ZXJDb250cm9sLmVycm9ycyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5vdXRlckNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgIHRoaXMuaW5uZXJDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIHRoaXMgb2JqZWN0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgYWN0aXZlIHN0YXRlIHdoZW4ga2V5aW5nIHVwIGFuZCBkb3duXHJcbiAgICB0aGlzLmtleU1hbmFnZXIgPSB0aGlzLmF1dG9Db21wbGV0ZVRyaWdnZXIuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyO1xyXG4gICAgdGhpcy5rZXlNYW5hZ2VyLndpdGhXcmFwKGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnN1YnMuYWRkKGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLnZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW0sXHJcbiAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZVxyXG4gICAgXSkuc3Vic2NyaWJlKChbcmVuZGVyZWRSYW5nZSwgc2Nyb2xsZWRJbmRleF06IFtMaXN0UmFuZ2UsIG51bWJlcl0pID0+IHtcclxuXHJcbiAgICAgIC8vIEluc3RlYWQgb2YgbG9hZGluZyB0aGUgd2hvbGUgaXRlbSBsaXN0IGF0IG9uY2UsIHRoZSB2aXJ0dWFsIHNjcm9sbCB2aWV3cG9ydCBidWZmZXJzXHJcbiAgICAgIC8vIGEgcmFuZ2Ugb2YgZW50cmllcywgb25seSBhIHBvcnRpb24gb2Ygd2hpY2ggYXJlIHdpdGhpbiB0aGUgdmlzaWJsZSBmb2xkXHJcbiAgICAgIHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZSA9IHJlbmRlcmVkUmFuZ2U7XHJcblxyXG4gICAgICAvLyB3ZSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIHZpc2libGUgcmFuZ2Ugb3Vyc2VsdmVzXHJcbiAgICAgIGxldCBsZW46IG51bWJlciA9IE1hdGgubWluKHRoaXMubG9hZGVkT3B0aW9ucy5sZW5ndGggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCksIHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDEpO1xyXG5cclxuICAgICAgdGhpcy52aWV3cG9ydFZpc2libGVSYW5nZSA9IHtcclxuICAgICAgICBzdGFydDogc2Nyb2xsZWRJbmRleCxcclxuICAgICAgICBlbmQ6IHNjcm9sbGVkSW5kZXggKyBsZW5cclxuICAgICAgfTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMpIHtcclxuICAgICAgbGV0IG9wdGlvbnNDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMub3B0aW9ucztcclxuICAgICAgaWYgKCFvcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZSB8fCBvcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgICAgaWYodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAvL1Jlc2V0IHRoZSBpbm5lckNvbnRyb2wgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGxpc3QgdG8gYW4gZW1wdHkgYXJyYXkgaW4gY2FzZSBvZiBubyByZXN1bHRzIGFyZSBwcmVzZW50IHRvIGJlIGRpc3BsYXllZC5cclxuICAgICAgICAgIC8vVGhpcyBmbHVzaGVzIG91dCB0aGUgc3RhbGUgdmFsdWUgZnJvbSB0aGUgbGlzdCBpZiB0aGVyZSBhcmUgbm8gcmVzdWx0cyB0byBiZSBkaXNwbGF5ZWQuXHJcbiAgICAgICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY3VycmVudE9wdHM6IGFueVtdID0gPGFueVtdPm9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAoY3VycmVudE9wdHMgJiYgXCJsZW5ndGhcIiBpbiBjdXJyZW50T3B0cyAmJiBjdXJyZW50T3B0cyAhPT0gb3B0aW9uc0NoYW5nZS5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3B0aW9uc0xvYWRlZC5lbWl0KCk7XHJcblxyXG4gICAgICAgIC8vIElmIG51bWJlciBvZiBvcHRpb25zIGlzIGxlc3MgdGhhbiBvdXIgbWF4LCByZWR1Y2Ugc2l6ZSBvZiBvdmVybGF5XHJcbiAgICAgICAgdGhpcy5udW1PcHRpb25zVG9TaG93ID0gTWF0aC5taW4oY3VycmVudE9wdHMubGVuZ3RoICsgKHRoaXMuYWxsb3dOb25lID8gMSA6IDApLCB0aGlzLm1heE9wdGlvbnNUb1Nob3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3Nob3dMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIFRoZSBhdXRvY29tcGxldGUgd2lsbCBhdXRvbWF0aWNhbGx5IHBvcCBvcGVuIG9uY2UgaXQgaGFzIG9wdGlvbnMgZmlsdGVyZWQgaW50byBpdCxcclxuICAgICAgLy8gYnV0IHdlIGRvbid0IHdhbnQgaXQgdG8gb24gaW5pdGlhbCBwYWdlIGxvYWQgb3Igd2hlbiB0YWJiaW5nIHRob3VnaFxyXG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKG9iaik7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEVycm9yKCk6IHN0cmluZyB7XHJcbiAgICBmb3IgKGNvbnN0IGVycm9yIGluIHRoaXMub3V0ZXJDb250cm9sLmVycm9ycykge1xyXG4gICAgICBpZiAodGhpcy5kZWZpbmVFcnJvcnMgJiYgZXJyb3IgaW4gdGhpcy5kZWZpbmVFcnJvcnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZpbmVFcnJvcnNbZXJyb3JdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRPbmx5Q3VycmVudFZhbHVlKGNudHJsVmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IG51bGw7XHJcbiAgICBpZiAoY250cmxWYWwgIT09IG51bGwgJiYgY250cmxWYWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgY3VycmVudGx5U2VsZWN0ZWQ6IGFueSA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvcHRWYWx1ZTogYW55ID0gdGhpcy52YWx1ZUZpZWxkID8gb3B0W3RoaXMudmFsdWVGaWVsZF0gOiBvcHQ7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9yY2VFbWl0T2JqZWN0KSB7XHJcbiAgICAgICAgICBsZXQgb3V0ZXJWYWx1ZTogYW55ID0gY250cmxWYWwgPyAodGhpcy52YWx1ZUZpZWxkID8gY250cmxWYWxbdGhpcy52YWx1ZUZpZWxkXSA6IGNudHJsVmFsKSA6IG51bGw7XHJcbiAgICAgICAgICBpZiAob3B0VmFsdWUgPT09IG91dGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBvcHRWYWx1ZSA9PT0gY250cmxWYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50bHlTZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHByZWZlciB0byBjaGVjayBpZCBpZiBpdCBoYXMgb25lICB2cyBzdHJhaWdodCBhZ2FpbnN0IGl0J3Mgb2JqZWN0IGlkZW50aXR5XHJcbiAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgJiYgbmV3VmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgaWYgKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlW3RoaXMudmFsdWVGaWVsZF0gIT09IG5ld1ZhbHVlW3RoaXMudmFsdWVGaWVsZF0pIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgIT09IG5ld1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgbGV0IG52ID0gbmV3VmFsdWUgPyAoKHRoaXMudmFsdWVGaWVsZCAmJiAhdGhpcy5mb3JjZUVtaXRPYmplY3QpID8gbmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSA6IG5ld1ZhbHVlKSA6IG51bGw7XHJcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChudik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlck9wdGlvbnMoc2hvd0FsbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSBzaG93QWxsO1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG93QWxsIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzZWFyY2hWYWx1ZTogc3RyaW5nID0gXCJcIjtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmlubmVyQ29udHJvbC52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWVbdGhpcy5kaXNwbGF5RmllbGRdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0OiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgb3B0RGlzcGxheTogc3RyaW5nID0gKHRoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gb3B0RGlzcGxheS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSB0aGlzLmxvYWRlZE9wdGlvbnMubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0T3B0SW5kZXgodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dMb2FkZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxvd0xvYWRlciAmJiB0aGlzLl9zaG93TG9hZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSBhdXRvY29tcGxldGUgd2lsbCBvbmx5IG9wZW4gd2hlbiBvcHRpb25zIGFyZSBsb2FkZWRcclxuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh0cnVlKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpIHtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdFRleHRPbk9wZW4pe1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpOyAvLyBIaWdobGlnaHRzIHRleHRcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCkge1xyXG4gICAgICAvLyBtYWtlIHRoZSBzZWxlY3RlZCBvcHRpb24gYWxzbyB0aGUgYWN0aXZlIG9wdGlvblxyXG4gICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdGhpcy5nZXRPcHRWYWwodGhpcy5sb2FkZWRPcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9uKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlICYmIHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgIC8vIHJlc2V0IHRoZSBvcHRpb25zIHNvIHRoZSBhdXRvY29tcGxldGUgd29uJ3QgYXV0b21hdGljYWxseSBvcGVuIG9uIHRoZSBuZXh0IHRhYiB0aHJvdWdoXHJcbiAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGFydENsaWNrKCkge1xyXG4gICAgLy8gY2xpY2tpbmcgb24gY2VydGFpbiBwYXJ0cyBvZiB0aGUgbWF0LWZpZWxkIHdpbGwgXCJmbGlja2VyXCIgdGhlIGZvY3VzLCB0cmlnZ2VyaW5nXHJcbiAgICAvLyBlcnJvciB2YWxpZGF0aW9uIGVhcmx5LiBUaGlzIHRyYWNrcyB0aG9zZSBpbnRlcm5hbCBjbGlja3Mgc28gdGhleSBjYW4gYmUgaWdub3JlZFxyXG4gICAgdGhpcy5jbGlja0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZENsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlT3BlbihldmVudDogTW91c2VFdmVudCk6dm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09IFwiVGFiXCIgfHwgZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyB3aGVyZSB0aGUgY2RrIGExMXkgS2V5TWFuYWdlciBpbXBsZW1lbnRhdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoXHJcbiAgICAgIC8vIHRoZSBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB3aGljaCBjYXVzZXMgdGhlIERyb3AtZG93biBub3Qgc2Nyb2xsIHdpdGgga2V5Ym9hcmRcclxuICAgICAgLy8gb24gbG9uZyBvcHRpb24gbGlzdHMuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzE2NTk4XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFRoaXMgd29yayBhcm91bmQgdGFrZXMgY29udHJvbCBvZiB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNjcm9sbHMgYW5kIGFjdGl2YXRlc1xyXG4gICAgICAvLyB0aGUgb3B0aW9uc1xyXG4gICAgICAvL1xyXG4gICAgICAvLyBSZWZlcmVuY2VzOlxyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtdHJpZ2dlci50c1xyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9hMTF5L2tleS1tYW5hZ2VyL2xpc3Qta2V5LW1hbmFnZXIudHNcclxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci9hY3RpdmVkZXNjZW5kYW50LWtleS1tYW5hZ2VyLnRzXHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiIHx8IGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRBY3RpdmVJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5zaGlmdEFjdGl2ZUl0ZW0oZXZlbnQua2V5KTtcclxuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlQm91bmRhcmllcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBiZWZvcmUgb3VyIGtleXByZXNzIGJpbmRpbmcgZXZlbiB0cmlnZ2VycywgYW5ndWxhciBoYXMgYWxyZWFkeSBtb3ZlZCB0aGUgYWN0aXZlIHNlbGVjdGlvblxyXG4gIC8vIHVuc3luY2luZyBpdCB3aXRoIG91ciBkaXNwbGF5LiB0aGlzIGNvZGUgcmUtaW5pdGlhbGl6ZXMgdGhlIGFjdGl2ZSBvcHRpb25cclxuICBpbml0QWN0aXZlSXRlbSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY3RpdmVWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKTtcclxuXHJcbiAgICAgIC8vIHRoaXMgZG9lcyB0aGUgY29udmVyc2lvbiBmcm9tIGFuIGluZGV4IHdpdGhpbiBhbGwgb3B0aW9ucyBkb3duIHRvIGEgcG9zaXRpb24gd2l0aGluIHRoZVxyXG4gICAgICAvLyBkaXNwbGF5ZWQgcmFuZ2UsIHdoaWNoIGlzIGFsbCB0aGUga2V5bWFuYWdlciBpcyBhd2FyZSBvZlxyXG4gICAgICBsZXQgcG9zaXRpb24gPSBhY3RpdmVJbmRleCAtIHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5zdGFydDtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0ocG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hpZnRBY3RpdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoa2V5ID09PSBcIkFycm93VXBcIikge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcclxuICAgICAgdGhpcy5hY3RpdmVWYWx1ZSA9IHRoaXMuZ2V0T3B0VmFsKCg8TWF0T3B0aW9uPnRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayBpZiB0aGUgYWN0aXZlIG9wdGlvbiBpbmRleCBpcyB3aXRoaW4gdGhlIGRpc3BsYXllZCB2aWV3cG9ydCB3aW5kb3dcclxuICAvLyBpZiBub3QsIHNjcm9sbCBpdCBpbnRvIHZpZXdcclxuICBjaGVja0FjdGl2ZUJvdW5kYXJpZXMoKTogdm9pZCB7XHJcbiAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlSW5kZXggPCB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlLnN0YXJ0KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQoYWN0aXZlSW5kZXggKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoYWN0aXZlSW5kZXggPiB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlLmVuZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvT2Zmc2V0KChhY3RpdmVJbmRleCAtICh0aGlzLm51bU9wdGlvbnNUb1Nob3cgLSAxKSkgKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlSW5kZXgoKSB7XHJcbiAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZVZhbHVlICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAvLyBpZiB3ZSBhZGRlZCBhIG5vbmUgb3B0aW9uIHRoZSByZXR1cm5lZCBpbmRleCB3b3VsZCBiZSBvZmYgYnkgb25lXHJcbiAgICAgIGxldCB2YWxJbmRleCA9IHRoaXMuZ2V0T3B0SW5kZXgodGhpcy5hY3RpdmVWYWx1ZSkgKyAodGhpcy5hbGxvd05vbmUgJiYgKHRoaXMuZm9yY2VTaG93Tm9uZSB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpID8gMSA6IDApO1xyXG5cclxuICAgICAgLy8gdGhlIGluZGV4IHNob3VsZCBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIG91ciBlbnRpcmUgYnVmZmVyLCBvciBqdXN0IGFsbG93IGl0IHRvIHJlc2V0XHJcbiAgICAgIGlmICh2YWxJbmRleCA+PSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2Uuc3RhcnRcclxuICAgICAgICAmJiAoIXRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5lbmQgfHwgdmFsSW5kZXggPD0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLmVuZClcclxuICAgICAgKSB7XHJcbiAgICAgICAgYWN0aXZlSW5kZXggPSB2YWxJbmRleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY3RpdmVJbmRleDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICAvLyBIaWdobGlnaHRzIHRleHRcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0VGV4dE9uT3Blbikge1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzT3V0KCkge1xyXG4gICAgLy8gbWFyayBjb250cm9sIHRvdWNoZWQgYW5kIHRyaWdnZXIgZXJyb3IgdmFsaWRhdGlvblxyXG4gICAgaWYgKCF0aGlzLmNsaWNrSW5Qcm9ncmVzcykge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RPcHRpb24ob3B0OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBuZXdWYWwgPSB0aGlzLmdldE9wdFZhbChvcHQsIHRoaXMuZm9yY2VFbWl0T2JqZWN0KTtcclxuXHJcbiAgICBpZiAodGhpcy5ub05nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm91dGVyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VGbihuZXdWYWwpO1xyXG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG5ld1ZhbCk7XHJcbiAgICB0aGlzLm9wdGlvbkNoYW5nZWQuZW1pdChuZXdWYWwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNjcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XHJcbiAgICAvLyBzY3JvbGwgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gd2hlbiB3ZSBvcGVuIHRoZSBkcm9wZG93blxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApIHtcclxuICAgICAgbGV0IG9mZnNldEluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkSW5kZXggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCk7IC8vIGFkanVzdCBmb3IgTm9uZSBlbnRyeVxyXG4gICAgICBvZmZzZXRJbmRleCAtPSAodGhpcy5udW1PcHRpb25zVG9TaG93IC8gMikgLSAxOyAvLyBjYWxjdWxhdGUgbWlkZGxlIG9mIHZpZXdwb3J0XHJcbiAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQob2Zmc2V0SW5kZXggKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPcHRWYWwob3B0OiBhbnksIGZvcmNlT2JqZWN0OiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMudmFsdWVGaWVsZCAmJiAhZm9yY2VPYmplY3QpIHtcclxuICAgICAgaWYgKG9wdCAhPT0gbnVsbCAmJiBvcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0ID09PSBcIm9iamVjdFwiICYmIHRoaXMudmFsdWVGaWVsZCBpbiBvcHQpIHtcclxuICAgICAgICByZXR1cm4gb3B0W3RoaXMudmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdDtcclxuICB9XHJcblxyXG4gIGdldE9wdEluZGV4KG9wdFZhbHVlOiBhbnkpOiBudW1iZXIge1xyXG4gICAgLy8gZmluZCB0aGUgaW5kZXggZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uXHJcbiAgICBpZiAob3B0VmFsdWUgIT09IG51bGwgJiYgb3B0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRWYWwob3B0aW9uKSA9PT0gb3B0VmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
679
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBeUJJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlyQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJbEMsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7TWF0TGVnYWN5QXV0b2NvbXBsZXRlVHJpZ2dlciBhcyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWF1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0xpc3RLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7TWF0TGVnYWN5T3B0aW9uIGFzIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlXCI7XHJcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWNvbWJvYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybS1maWVsZCAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidGhpcy50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21GaWVsZENsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsICE9PSB1bmRlZmluZWRcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWwgPT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgIHt7IHRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXIgfX1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCAjaW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBuYW1lPVwiY3VzdG9tQ29tYm9Cb3hGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKGlubmVyQ29udHJvbC52YWx1ZSA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5uZXJDb250cm9sXCJcclxuICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJjZGtGb2N1c0luaXRpYWwgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjZGtGb2N1c0luaXRpYWxcIlxyXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWN1c3RvbS1jb21ib2JveC17e2xhYmVsfX1cIlxyXG4gICAgICAgICAgICAgPlxyXG4gICAgICA8ZGl2IG1hdFN1ZmZpeFxyXG4gICAgICAgICAgIGNsYXNzPVwiaGNpLWNvbWJvYm94LWFycm93LXdyYXBwZXJcIlxyXG4gICAgICAgICAgIChjbGljaykgPSBcInRvZ2dsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgIChtb3VzZXVwKT1cImVuZENsaWNrKClcIlxyXG4gICAgICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGNpLWNvbWJvYm94LWFycm93XCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LXNwaW5uZXIgbWF0U3VmZml4ICpuZ0lmPVwic2hvd0xvYWRlcigpXCIgW2RpYW1ldGVyXT1cIjMwXCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7IG1hcmdpbi1sZWZ0OiA4cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwidGhpcy5zZWxlY3RPcHRpb24oJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cInRoaXMub25PcGVuZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwidGhpcy5vbkNsb3NlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cInRoaXMuZGlzcGxheUZuXCI+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzT3BlbiA/IG51bGwgOiAnbm9uZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoY2ktY29tYm9ib3gtdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPSBcImN1c3RvbVZpZXdwb3J0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm51bU9wdGlvbnNUb1Nob3cgKiBvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm51bU9wdGlvbnNUb1Nob3cgKiBvcHRpb25TaXplUHggKiAyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhCdWZmZXJQeF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4ICogM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJlbmRDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiYWxsb3dOb25lICYmIGlzT3BlbiAmJiAodGhpcy5mb3JjZVNob3dOb25lIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tT3B0aW9uQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE5vbmVcclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdCBvZiB0aGlzLmxvYWRlZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21PcHRpb25DbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oY2ktY29tYm9ib3gtc2VsZWN0ZWRdPVwiKHZhbHVlRmllbGQgPyBvcHRbdmFsdWVGaWVsZF0gOiBvcHQpID09PSBvdXRlckNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1zZWxlY3RlZF09XCIodmFsdWVGaWVsZCA/IG9wdFt2YWx1ZUZpZWxkXSA6IG9wdCkgPT09IG91dGVyQ29udHJvbC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGRpc3BsYXlGaWVsZCA/IG9wdFtkaXNwbGF5RmllbGRdIDogb3B0IH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICB7eyBnZXRFcnJvcigpIH19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21Db21ib0JveENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICB9XSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogXCJoY2ktY29tYm9ib3gtY29udGFpbmVyXCJcclxuICB9LFxyXG4gIHN0eWxlczogW2BcclxuICAgIC5oY2ktY29tYm9ib3gtY29udGFpbmVyIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtYXJyb3cge1xyXG4gICAgICB3aWR0aDogMDtcclxuICAgICAgaGVpZ2h0OiAwO1xyXG4gICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkO1xyXG4gICAgICBtYXJnaW46IDAgNHB4O1xyXG4gICAgICBjb2xvcjogdmFyKC0tYmxhY2stZGFya2VzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IG1hdC1vcHRpb24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAwIC4ycmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgbWF0LW9wdGlvbiAubWF0LW9wdGlvbi10ZXh0IHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IC5oY2ktY29tYm9ib3gtc2VsZWN0ZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgLm1hdC1hY3RpdmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIGZpeCBqaXR0ZXJ5IHNjcm9sbCBidWcgaW4gY2hyb21lICovXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IHtcclxuICAgICAgb3ZlcmZsb3ctYW5jaG9yOiBub25lO1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21Db21ib0JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHVibGljIG9wdGlvblNpemVQeDogbnVtYmVyID0gMjU7XHJcbiAgcHVibGljIG51bU9wdGlvbnNUb1Nob3c6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhPcHRpb25zVG9TaG93OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tVmlld3BvcnRDbGFzczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbUZpZWxkQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPSB2YWx1ZSA/IHZhbHVlIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tRmllbGRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPyB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgOiBcIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFwiO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbU9wdGlvbkNsYXNzZXModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA9IHZhbHVlID8gdmFsdWUgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXN0b21PcHRpb25DbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21PcHRpb25DbGFzc2VzID8gdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLyBJZiBhIGxhYmVsIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBsYWNlaG9sZGVyIGlzIHByb21vdGVkIHRvIGEgbGFiZWwuXHJcbiAgLy8gVG8gY3JlYXRlIGEgZm9ybSBmaWVsZCB3aXRoIG9ubHkgYSBwbGFjZWhvbGRlciwgc3BlY2lmeSBhbiBlbXB0eVxyXG4gIC8vIGxhYmVsIHRvIHByZXZlbnQgdGhlIHBsYWNlaG9sZGVyIGZyb20gYmVpbmcgcHJvbW90ZWQuXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvLyBSZW1vdmVzIHRoZSBwbGFjZWhvbGRlciBhZnRlciBhIHNlbGVjdGlvbiBpcyBtYWRlXHJcbiAgQElucHV0KCkgcHVibGljIHRlbXBvcmFyeVBsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05vbmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0VGV4dE9uT3BlbiA9IHRydWU7XHJcblxyXG4gIC8vIHRlbGwgbWF0LWRpYWxvZyB0byBwYXNzIGluaXRpYWwgZm9jdXMgdG8gdGhlIGlubmVyIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5jZGtGb2N1c0luaXRpYWxcIikgX2Nka0ZvY3VzSW5pdGlhbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGNka0ZvY3VzSW5pdGlhbDogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAvLyBvbiB0YWIsIHNraXAgdGhlIGhvc3QgZWxlbWVudCBhbmQgZm9jdXMgdGhlIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci50YWJpbmRleFwiKSBfdGFiaW5kZXggPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIGZvcmNlU2hvd05vbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgYWxsb3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBsb2FkZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaXZhdGUgZm9yY2VFbWl0T2JqZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcclxuXHJcbiAgLy8gU2V0IHRvIGVtcHR5IHRvIG5vdCBzaG93IGVycm9yc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmluZUVycm9yczogYW55ID0ge3JlcXVpcmVkOiBcIlRoaXMgaXMgYSByZXF1aXJlZCBmaWVsZFwifTtcclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2N1c3RvbUZpZWxkQ2xhc3Nlczogc3RyaW5nID0gXCJcIjtcclxuICBwcml2YXRlIF9jdXN0b21PcHRpb25DbGFzc2VzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgb3V0ZXJDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIGlubmVyQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcclxuICBwcml2YXRlIGlnbm9yZUlubmVyQ29udHJvbENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIG5vTmdDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAga2V5TWFuYWdlcjogTGlzdEtleU1hbmFnZXI8SGlnaGxpZ2h0YWJsZT47XHJcbiAgdmlld3BvcnRSZW5kZXJSYW5nZTogTGlzdFJhbmdlO1xyXG4gIHZpZXdwb3J0VmlzaWJsZVJhbmdlOiBMaXN0UmFuZ2UgPSB7XHJcbiAgICBzdGFydDogMCxcclxuICAgIGVuZDogdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMVxyXG4gIH07XHJcblxyXG4gIGFjdGl2ZVZhbHVlOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBjbGlja0luUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9wdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInZpZXdwb3J0XCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7c3RhdGljOiB0cnVlfSlcclxuICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7cmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiBmYWxzZX0pXHJcbiAgYXV0b0NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZEZuOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHB1YmxpYyBkaXNwbGF5Rm46IChvcHQ/OiBhbnkpID0+IHN0cmluZyB8IHVuZGVmaW5lZCA9IChvcHQ/OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBvcHQgPyAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvd0xvYWRlciA9IHRoaXMuYWxsb3dMb2FkZXIgJiYgKCEgdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vdXRlckNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbDtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9OZ0NvbnRyb2wgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5pbm5lckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoX3ZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIHdvcmsgYXJvdW5kIGZvciB2YWxpZGF0b3JzIG5vdCBhbHdheXMgcHJvcGFnYXRpbmdcclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5vdXRlckNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKF9ldmVudDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wudmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRFcnJvcnModGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm91dGVyQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgLy8gdGhpcyBvYmplY3QgaXMgdXNlZCB0byBjb250cm9sIHRoZSBhY3RpdmUgc3RhdGUgd2hlbiBrZXlpbmcgdXAgYW5kIGRvd25cclxuICAgIHRoaXMua2V5TWFuYWdlciA9IHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI7XHJcbiAgICB0aGlzLmtleU1hbmFnZXIud2l0aFdyYXAoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQoY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMudmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbSxcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxlZEluZGV4Q2hhbmdlXHJcbiAgICBdKS5zdWJzY3JpYmUoKFtyZW5kZXJlZFJhbmdlLCBzY3JvbGxlZEluZGV4XTogW0xpc3RSYW5nZSwgbnVtYmVyXSkgPT4ge1xyXG5cclxuICAgICAgLy8gSW5zdGVhZCBvZiBsb2FkaW5nIHRoZSB3aG9sZSBpdGVtIGxpc3QgYXQgb25jZSwgdGhlIHZpcnR1YWwgc2Nyb2xsIHZpZXdwb3J0IGJ1ZmZlcnNcclxuICAgICAgLy8gYSByYW5nZSBvZiBlbnRyaWVzLCBvbmx5IGEgcG9ydGlvbiBvZiB3aGljaCBhcmUgd2l0aGluIHRoZSB2aXNpYmxlIGZvbGRcclxuICAgICAgdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlID0gcmVuZGVyZWRSYW5nZTtcclxuXHJcbiAgICAgIC8vIHdlIGhhdmUgdG8gZmlndXJlIG91dCB0aGUgdmlzaWJsZSByYW5nZSBvdXJzZWx2ZXNcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gTWF0aC5taW4odGhpcy5sb2FkZWRPcHRpb25zLmxlbmd0aCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKSwgdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMSk7XHJcblxyXG4gICAgICB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0OiBzY3JvbGxlZEluZGV4LFxyXG4gICAgICAgIGVuZDogc2Nyb2xsZWRJbmRleCArIGxlblxyXG4gICAgICB9O1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgb3B0aW9uc0NoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5vcHRpb25zO1xyXG4gICAgICBpZiAoIW9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlIHx8IG9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICBpZih0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgICAgIC8vUmVzZXQgdGhlIGlubmVyQ29udHJvbCB2YWx1ZSBvZiB0aGUgZHJvcGRvd24gbGlzdCB0byBhbiBlbXB0eSBhcnJheSBpbiBjYXNlIG9mIG5vIHJlc3VsdHMgYXJlIHByZXNlbnQgdG8gYmUgZGlzcGxheWVkLlxyXG4gICAgICAgICAgLy9UaGlzIGZsdXNoZXMgb3V0IHRoZSBzdGFsZSB2YWx1ZSBmcm9tIHRoZSBsaXN0IGlmIHRoZXJlIGFyZSBubyByZXN1bHRzIHRvIGJlIGRpc3BsYXllZC5cclxuICAgICAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjdXJyZW50T3B0czogYW55W10gPSA8YW55W10+b3B0aW9uc0NoYW5nZS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChjdXJyZW50T3B0cyAmJiBcImxlbmd0aFwiIGluIGN1cnJlbnRPcHRzICYmIGN1cnJlbnRPcHRzICE9PSBvcHRpb25zQ2hhbmdlLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zTG9hZGVkLmVtaXQoKTtcclxuXHJcbiAgICAgICAgLy8gSWYgbnVtYmVyIG9mIG9wdGlvbnMgaXMgbGVzcyB0aGFuIG91ciBtYXgsIHJlZHVjZSBzaXplIG9mIG92ZXJsYXlcclxuICAgICAgICB0aGlzLm51bU9wdGlvbnNUb1Nob3cgPSBNYXRoLm1pbihjdXJyZW50T3B0cy5sZW5ndGggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCksIHRoaXMubWF4T3B0aW9uc1RvU2hvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIGF1dG9tYXRpY2FsbHkgcG9wIG9wZW4gb25jZSBpdCBoYXMgb3B0aW9ucyBmaWx0ZXJlZCBpbnRvIGl0LFxyXG4gICAgICAvLyBidXQgd2UgZG9uJ3Qgd2FudCBpdCB0byBvbiBpbml0aWFsIHBhZ2UgbG9hZCBvciB3aGVuIHRhYmJpbmcgdGhvdWdoXHJcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUob2JqKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3IoKTogc3RyaW5nIHtcclxuICAgIGZvciAoY29uc3QgZXJyb3IgaW4gdGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlZmluZUVycm9ycyAmJiBlcnJvciBpbiB0aGlzLmRlZmluZUVycm9ycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmluZUVycm9yc1tlcnJvcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE9ubHlDdXJyZW50VmFsdWUoY250cmxWYWw6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gbnVsbDtcclxuICAgIGlmIChjbnRybFZhbCAhPT0gbnVsbCAmJiBjbnRybFZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBjdXJyZW50bHlTZWxlY3RlZDogYW55ID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9wdFZhbHVlOiBhbnkgPSB0aGlzLnZhbHVlRmllbGQgPyBvcHRbdGhpcy52YWx1ZUZpZWxkXSA6IG9wdDtcclxuICAgICAgICBpZiAodGhpcy5mb3JjZUVtaXRPYmplY3QpIHtcclxuICAgICAgICAgIGxldCBvdXRlclZhbHVlOiBhbnkgPSBjbnRybFZhbCA/ICh0aGlzLnZhbHVlRmllbGQgPyBjbnRybFZhbFt0aGlzLnZhbHVlRmllbGRdIDogY250cmxWYWwpIDogbnVsbDtcclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSA9PT0gb3V0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdFZhbHVlID09PSBjbnRybFZhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRseVNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJlZmVyIHRvIGNoZWNrIGlkIGlmIGl0IGhhcyBvbmUgIHZzIHN0cmFpZ2h0IGFnYWluc3QgaXQncyBvYmplY3QgaWRlbnRpdHlcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAmJiBuZXdWYWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWVbdGhpcy52YWx1ZUZpZWxkXSAhPT0gbmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSkge1xyXG4gICAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICBsZXQgbnYgPSBuZXdWYWx1ZSA/ICgodGhpcy52YWx1ZUZpZWxkICYmICF0aGlzLmZvcmNlRW1pdE9iamVjdCkgPyBuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdIDogbmV3VmFsdWUpIDogbnVsbDtcclxuICAgICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG52KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucyhzaG93QWxsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHNob3dBbGw7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3dBbGwgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5uZXJDb250cm9sLnZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZVt0aGlzLmRpc3BsYXlGaWVsZF0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvcHREaXNwbGF5OiBzdHJpbmcgPSAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBvcHREaXNwbGF5LmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRoaXMubG9hZGVkT3B0aW9ucy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0xvYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93TG9hZGVyICYmIHRoaXMuX3Nob3dMb2FkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIG9ubHkgb3BlbiB3aGVuIG9wdGlvbnMgYXJlIGxvYWRlZFxyXG4gICAgdGhpcy5maWx0ZXJPcHRpb25zKHRydWUpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wZW5lZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0VGV4dE9uT3Blbil7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7IC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKSB7XHJcbiAgICAgIC8vIG1ha2UgdGhlIHNlbGVjdGVkIG9wdGlvbiBhbHNvIHRoZSBhY3RpdmUgb3B0aW9uXHJcbiAgICAgIHRoaXMuYWN0aXZlVmFsdWUgPSB0aGlzLmdldE9wdFZhbCh0aGlzLmxvYWRlZE9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghdGhpcy5pbm5lckNvbnRyb2wudmFsdWUgJiYgdGhpcy5vdXRlckNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb24obnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgLy8gcmVzZXQgdGhlIG9wdGlvbnMgc28gdGhlIGF1dG9jb21wbGV0ZSB3b24ndCBhdXRvbWF0aWNhbGx5IG9wZW4gb24gdGhlIG5leHQgdGFiIHRocm91Z2hcclxuICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0Q2xpY2soKSB7XHJcbiAgICAvLyBjbGlja2luZyBvbiBjZXJ0YWluIHBhcnRzIG9mIHRoZSBtYXQtZmllbGQgd2lsbCBcImZsaWNrZXJcIiB0aGUgZm9jdXMsIHRyaWdnZXJpbmdcclxuICAgIC8vIGVycm9yIHZhbGlkYXRpb24gZWFybHkuIFRoaXMgdHJhY2tzIHRob3NlIGludGVybmFsIGNsaWNrcyBzbyB0aGV5IGNhbiBiZSBpZ25vcmVkXHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5kQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVPcGVuKGV2ZW50OiBNb3VzZUV2ZW50KTp2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIiB8fCBldmVudC5rZXkgPT09IFwiRW50ZXJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBjZGsgYTExeSBLZXlNYW5hZ2VyIGltcGxlbWVudGF0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGhcclxuICAgICAgLy8gdGhlIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHdoaWNoIGNhdXNlcyB0aGUgRHJvcC1kb3duIG5vdCBzY3JvbGwgd2l0aCBrZXlib2FyZFxyXG4gICAgICAvLyBvbiBsb25nIG9wdGlvbiBsaXN0cy5cclxuICAgICAgLy9cclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMTY1OThcclxuICAgICAgLy9cclxuICAgICAgLy8gVGhpcyB3b3JrIGFyb3VuZCB0YWtlcyBjb250cm9sIG9mIHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2Nyb2xscyBhbmQgYWN0aXZhdGVzXHJcbiAgICAgIC8vIHRoZSBvcHRpb25zXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFJlZmVyZW5jZXM6XHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10cmlnZ2VyLnRzXHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvY2RrL2ExMXkva2V5LW1hbmFnZXIvbGlzdC1rZXktbWFuYWdlci50c1xyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9hMTF5L2tleS1tYW5hZ2VyL2FjdGl2ZWRlc2NlbmRhbnQta2V5LW1hbmFnZXIudHNcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIgfHwgZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgICAgICB0aGlzLnNoaWZ0QWN0aXZlSXRlbShldmVudC5rZXkpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVCb3VuZGFyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGJlZm9yZSBvdXIga2V5cHJlc3MgYmluZGluZyBldmVuIHRyaWdnZXJzLCBhbmd1bGFyIGhhcyBhbHJlYWR5IG1vdmVkIHRoZSBhY3RpdmUgc2VsZWN0aW9uXHJcbiAgLy8gdW5zeW5jaW5nIGl0IHdpdGggb3VyIGRpc3BsYXkuIHRoaXMgY29kZSByZS1pbml0aWFsaXplcyB0aGUgYWN0aXZlIG9wdGlvblxyXG4gIGluaXRBY3RpdmVJdGVtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmFjdGl2ZVZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgICAgLy8gdGhpcyBkb2VzIHRoZSBjb252ZXJzaW9uIGZyb20gYW4gaW5kZXggd2l0aGluIGFsbCBvcHRpb25zIGRvd24gdG8gYSBwb3NpdGlvbiB3aXRoaW4gdGhlXHJcbiAgICAgIC8vIGRpc3BsYXllZCByYW5nZSwgd2hpY2ggaXMgYWxsIHRoZSBrZXltYW5hZ2VyIGlzIGF3YXJlIG9mXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IGFjdGl2ZUluZGV4IC0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLnN0YXJ0O1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaGlmdEFjdGl2ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChrZXkgPT09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdGhpcy5nZXRPcHRWYWwoKDxNYXRPcHRpb24+dGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSBhY3RpdmUgb3B0aW9uIGluZGV4IGlzIHdpdGhpbiB0aGUgZGlzcGxheWVkIHZpZXdwb3J0IHdpbmRvd1xyXG4gIC8vIGlmIG5vdCwgc2Nyb2xsIGl0IGludG8gdmlld1xyXG4gIGNoZWNrQWN0aXZlQm91bmRhcmllcygpOiB2b2lkIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgIGlmIChhY3RpdmVJbmRleCA8IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2Uuc3RhcnQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChhY3RpdmVJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChhY3RpdmVJbmRleCA+IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2UuZW5kKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQoKGFjdGl2ZUluZGV4IC0gKHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDEpKSAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVJbmRleCgpIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aXZlVmFsdWUgIT09IG51bGwpIHtcclxuXHJcbiAgICAgIC8vIGlmIHdlIGFkZGVkIGEgbm9uZSBvcHRpb24gdGhlIHJldHVybmVkIGluZGV4IHdvdWxkIGJlIG9mZiBieSBvbmVcclxuICAgICAgbGV0IHZhbEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLmFjdGl2ZVZhbHVlKSArICh0aGlzLmFsbG93Tm9uZSAmJiAodGhpcy5mb3JjZVNob3dOb25lIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkgPyAxIDogMCk7XHJcblxyXG4gICAgICAvLyB0aGUgaW5kZXggc2hvdWxkIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2Ygb3VyIGVudGlyZSBidWZmZXIsIG9yIGp1c3QgYWxsb3cgaXQgdG8gcmVzZXRcclxuICAgICAgaWYgKHZhbEluZGV4ID49IHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5zdGFydFxyXG4gICAgICAgICYmICghdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLmVuZCB8fCB2YWxJbmRleCA8PSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2UuZW5kKVxyXG4gICAgICApIHtcclxuICAgICAgICBhY3RpdmVJbmRleCA9IHZhbEluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RUZXh0T25PcGVuKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXNPdXQoKSB7XHJcbiAgICAvLyBtYXJrIGNvbnRyb2wgdG91Y2hlZCBhbmQgdHJpZ2dlciBlcnJvciB2YWxpZGF0aW9uXHJcbiAgICBpZiAoIXRoaXMuY2xpY2tJblByb2dyZXNzKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHQ6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IG5ld1ZhbCA9IHRoaXMuZ2V0T3B0VmFsKG9wdCwgdGhpcy5mb3JjZUVtaXRPYmplY3QpO1xyXG5cclxuICAgIGlmICh0aGlzLm5vTmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUZuKG5ld1ZhbCk7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobmV3VmFsKTtcclxuICAgIHRoaXMub3B0aW9uQ2hhbmdlZC5lbWl0KG5ld1ZhbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcclxuICAgIC8vIHNjcm9sbCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiB3aGVuIHdlIG9wZW4gdGhlIGRyb3Bkb3duXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCkge1xyXG4gICAgICBsZXQgb2Zmc2V0SW5kZXg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWRJbmRleCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKTsgLy8gYWRqdXN0IGZvciBOb25lIGVudHJ5XHJcbiAgICAgIG9mZnNldEluZGV4IC09ICh0aGlzLm51bU9wdGlvbnNUb1Nob3cgLyAyKSAtIDE7IC8vIGNhbGN1bGF0ZSBtaWRkbGUgb2Ygdmlld3BvcnRcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChvZmZzZXRJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9wdFZhbChvcHQ6IGFueSwgZm9yY2VPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUZpZWxkICYmICFmb3JjZU9iamVjdCkge1xyXG4gICAgICBpZiAob3B0ICE9PSBudWxsICYmIG9wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHQgPT09IFwib2JqZWN0XCIgJiYgdGhpcy52YWx1ZUZpZWxkIGluIG9wdCkge1xyXG4gICAgICAgIHJldHVybiBvcHRbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0SW5kZXgob3B0VmFsdWU6IGFueSk6IG51bWJlciB7XHJcbiAgICAvLyBmaW5kIHRoZSBpbmRleCBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25cclxuICAgIGlmIChvcHRWYWx1ZSAhPT0gbnVsbCAmJiBvcHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRlZE9wdGlvbnMuZmluZEluZGV4KChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdFZhbChvcHRpb24pID09PSBvcHRWYWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19