@worktile/theia 14.3.16 → 14.3.18

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.
@@ -28,6 +28,11 @@ export class TableStore {
28
28
  const pos = this.createTablePosition();
29
29
  return !!this.selectedCells.length && pos.getHeight() * pos.getWidth() === this.selectedCells.length;
30
30
  };
31
+ this.createTablePosition = () => {
32
+ const { path } = this.editor.selection.anchor;
33
+ const opts = new TableOptions();
34
+ return TablePosition.create(opts, this.editor, path);
35
+ };
31
36
  }
32
37
  get selectedCells() {
33
38
  return this.selectedCells$.getValue();
@@ -437,11 +442,6 @@ export class TableStore {
437
442
  const { dangerousRowsIndex, dangerousColumnsIndex } = this;
438
443
  this.removeColumnOrRows(dangerousRowsIndex, dangerousColumnsIndex);
439
444
  }
440
- createTablePosition() {
441
- const { path } = this.editor.selection.anchor;
442
- const opts = new TableOptions();
443
- return TablePosition.create(opts, this.editor, path);
444
- }
445
445
  removeColumnOrRows(selectedRowIndexs = this.selectedRowsIndex, selectedColumnIndexs = this.selectedColumnsIndex) {
446
446
  const { isSelectedTable } = this;
447
447
  const tablePosition = this.createTablePosition();
@@ -486,4 +486,4 @@ TableStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
486
486
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TableStore, decorators: [{
487
487
  type: Injectable
488
488
  }], ctorParameters: function () { return []; } });
489
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFnQixZQUFZLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxVQUFVO0lBbURuQjtRQWxEUSxtQkFBYyxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRSxvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRSx1QkFBa0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwRCxpQkFBWSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXRELHlCQUFvQixHQUFh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Q0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7O3dHQS9pQlEsVUFBVTs0R0FBVixVQUFVOzRGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcywgTm9kZSwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgRUxFTUVOVF9UT19DT01QT05FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdyb3VwQnksIHVuaXEsIG1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyBtZXJnZUNlbGwgfSBmcm9tICcuL3V0aWxzL21lcmdlLWNlbGwnO1xuaW1wb3J0IHsgQ29sb3JUeXBlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXNlbGVjdCc7XG5pbXBvcnQgeyBDZWxsUG9zaXRpb24sIFRhYmxlT3B0aW9ucywgVGhlVGFibGVPcHRpb25zIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGxFbGVtZW50LCBUYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxDZWxsUG9zaXRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JDogU3ViamVjdDxvYmplY3Q+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgdGFibGVDaGFuZ2UkOiBTdWJqZWN0PG9iamVjdD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgc2VsZWN0ZWRDb2x1bW5zSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBzZWxlY3RlZFJvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c0NvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c1Jvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGlzU2VsZWN0ZWRUYWJsZTogYm9vbGVhbjtcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgcHVibGljIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBhbmNob3JDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgcHJlRm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgbGFzdEZvY3VzQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGZvY3VzQ2VsbEVsZW1lbnQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgcHVibGljIGlzUHJlcGFyZVNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzQ2VsbFNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzUmlnaHRDbGlja2luZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIHBvaW50ZXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBtYXhDb2w6IG51bWJlcjtcblxuICAgIGdldCBzZWxlY3RlZENlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldCBkYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgaXNTZWxlY3RlZEFsbENlbGwgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoICYmIHBvcy5nZXRIZWlnaHQoKSAqIHBvcy5nZXRXaWR0aCgpID09PSB0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoO1xuICAgIH07XG5cbiAgICBnZXRUYWJsZUVudHJ5KCkge1xuICAgICAgICBjb25zdCB7IHRhYmxlRW50cnkgfSA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gdGFibGVFbnRyeTtcbiAgICB9XG5cbiAgICBnZXRUYWJsZVBhdGgoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlRW50cnkgPSB0aGlzLmdldFRhYmxlRW50cnkoKTtcbiAgICAgICAgcmV0dXJuIHRhYmxlRW50cnlbMV07XG4gICAgfVxuXG4gICAgdXBkYXRlQ2VsbFBvc2l0aW9uUmVmcyhyb3cgPSAwLCBjb2wgPSAwKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgY2VsbHMucHVzaCh7IC4uLmNlbGwsIHJvdzogY2VsbC5yb3cgKyByb3csIGNvbDogY2VsbC5jb2wgKyBjb2wgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHMoY2VsbHM6IENlbGxQb3NpdGlvbltdLCBwb3M6IFRhYmxlUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3Qgcm93R3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyByb3csIGNvbCB9KSA9PiByb3cpO1xuICAgICAgICBjb25zdCBjb2xHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IHJvdywgY29sIH0pID0+IGNvbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBpbiByb3dHcm91cCkge1xuICAgICAgICAgICAgaWYgKHJvd0dyb3VwW3Jvd10ubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgucHVzaChwYXJzZUludChyb3csIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBjb2wgaW4gY29sR3JvdXApIHtcbiAgICAgICAgICAgIGlmIChjb2xHcm91cFtjb2xdLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5wdXNoKHBhcnNlSW50KGNvbCwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkUm93c0luZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIGluaXRFZGl0b3IoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Y676YeN6YeN5aSN55qE5Y2V5YWD5qC85L2N572uXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHVuaXF1ZUNlbGxQb3NpdGlvbihjZWxsczogQ2VsbFBvc2l0aW9uW10pOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIGxldCByZXN1bHQ6IENlbGxQb3NpdGlvbltdID0gW107XG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZENlbGxzID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgY2VsbHMuY29uY2F0KHRoaXMuc2VsZWN0ZWRDZWxscykuZm9yRWFjaChjZWxsID0+IG1vZENlbGxzLmFkZChKU09OLnN0cmluZ2lmeShjZWxsKSkpO1xuICAgICAgICAgICAgbW9kQ2VsbHMuZm9yRWFjaCgoY2VsbDogc3RyaW5nKSA9PiByZXN1bHQucHVzaChKU09OLnBhcnNlKGNlbGwpKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjZWxscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bkuIDlrprojIPlm7TlhoXmiYDmnInnmoTljZXlhYPmoLxcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShzdGFydFJvdzogbnVtYmVyLCBzdGFydENvbDogbnVtYmVyLCBlbmRSb3c6IG51bWJlciwgZW5kQ29sOiBudW1iZXIpOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogQ2VsbFBvc2l0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gc3RhcnRSb3c7IHJvdyA8IGVuZFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNvbCA9IHN0YXJ0Q29sOyBjb2wgPCBlbmRDb2w7IGNvbCsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goeyByb3csIGNvbCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHNlbGVjdFJvdyhlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKGluZGV4LCAwLCBpbmRleCArIDEsIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHRoaXMudW5pcXVlQ2VsbFBvc2l0aW9uKHJlc3VsdCksIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtpbmRleCwgMF0pKTtcbiAgICB9XG5cbiAgICBzZWxlY3RDb2x1bW4oZWRpdG9yOiBFZGl0b3IsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jbGVhckxhc3RGb2N1c1BhdGgoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtpbmRleF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCBpbmRleCwgcG9zLmdldEhlaWdodCgpLCBpbmRleCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHModGhpcy51bmlxdWVDZWxsUG9zaXRpb24ocmVzdWx0KSwgcG9zKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIGluZGV4XSkpO1xuICAgIH1cblxuICAgIHNlbGVjdFRhYmxlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCAwXSkpO1xuICAgIH1cblxuICAgIC8vIOaLlumAiVxuICAgIHNlbGVjdENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IGZvY3VzUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aC5zbGljZSgtMik7XG5cbiAgICAgICAgY29uc3Qgcm93cyA9IFthbmNob3JQYXRoWzBdLCBmb2N1c1BhdGhbMF1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFthbmNob3JQYXRoWzFdLCBmb2N1c1BhdGhbMV1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcblxuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGFuY2hvckNvbHNwYW5Db3VudCwgcm93c3BhbjogYW5jaG9yUm93c3BhbkNvdW50IH0gPSBFZGl0b3Iubm9kZShcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGhcbiAgICAgICAgKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGZvY3VzQ29sc3BhbkNvdW50LCByb3dzcGFuOiBmb2N1c1Jvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpWzBdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yUm93ID0gYW5jaG9yUGF0aFswXSArIChhbmNob3JSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBmb2N1c1JvdyA9IGZvY3VzUGF0aFswXSArIChmb2N1c1Jvd3NwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGFuY2hvckNvbCA9IGFuY2hvclBhdGhbMV0gKyAoYW5jaG9yQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNDb2wgPSBmb2N1c1BhdGhbMV0gKyAoZm9jdXNDb2xzcGFuQ291bnQgfHwgMSkgLSAxO1xuXG4gICAgICAgIGxldCBpbml0TWF4Q29sID0gTWF0aC5tYXgoYW5jaG9yQ29sLCBmb2N1c0NvbCk7XG4gICAgICAgIGxldCBpbml0TWF4Um93ID0gTWF0aC5tYXgoYW5jaG9yUm93LCBmb2N1c1Jvdyk7XG4gICAgICAgIGNvbnN0IHsgbWluUm93LCBtYXhSb3csIG1pbkNvbCwgbWF4Q29sIH0gPSB0aGlzLmdldE1pbkFuZE1heENlbGxJbmRleChpbml0TWF4Um93LCBpbml0TWF4Q29sLCByb3dzWzBdLCBjb2x1bW5zWzBdLCBwb3MudGFibGUpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UobWluUm93LCBtaW5Db2wsIG1heFJvdyArIDEsIG1heENvbCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHModGhpcy51bmlxdWVDZWxsUG9zaXRpb24ocmVzdWx0KSwgcG9zKTtcbiAgICB9XG5cbiAgICBnZXRNaW5BbmRNYXhDZWxsSW5kZXgobWF4Um93OiBudW1iZXIsIG1heENvbDogbnVtYmVyLCBtaW5Sb3c6IG51bWJlciwgbWluQ29sOiBudW1iZXIsIHRhYmxlOiBUYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYmVmb3JlQ29scyA9IFtdO1xuICAgICAgICBjb25zdCBiZWZvcmVSb3dzID0gW107XG4gICAgICAgIGxldCBzcGFuU2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BhblNlbGVjdGVkQ2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHNcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJvdywgY29sIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGFibGUuY2hpbGRyZW5bcm93XS5jaGlsZHJlbltjb2xdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzcGFuOiBub2RlLmNvbHNwYW4gfHwgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzcGFuOiBub2RlLnJvd3NwYW4gfHwgMVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRhYmxlLmNoaWxkcmVuLm1hcCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDw9IG1heFJvdykge1xuICAgICAgICAgICAgICAgIHJvdy5jaGlsZHJlbi5tYXAoKGNlbGw6IFRhYmxlQ2VsbEVsZW1lbnQsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2xJbmRleCA8PSBtYXhDb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSb3dJbmRleCA9IHJvd0luZGV4ICsgKGNlbGwucm93c3BhbiB8fCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIChjZWxsLmNvbHNwYW4gfHwgMSkgLSAxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhblNlbGVjdGVkQ2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByb3c6IHNlbGVjdFJvdywgY29sOiBzZWxlY3RDb2wsIHJvd3NwYW46IHNlbGVjdFJvd3NwYW4sIGNvbHNwYW46IHNlbGVjdENvbHNwYW4gfSA9IHNwYW5TZWxlY3RlZENlbGxzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RSb3cgKyBzZWxlY3RSb3dzcGFuIC0gMSA+PSBtaW5Sb3cgJiYgc2VsZWN0Q29sICsgc2VsZWN0Q29sc3BhbiAtIDEgPj0gbWluQ29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblJvdyA9IE1hdGgubWluKHNwYW5TZWxlY3RlZENlbGxzWzBdLnJvdywgbWluUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluQ29sID0gTWF0aC5taW4oc3BhblNlbGVjdGVkQ2VsbHNbMF0uY29sLCBtaW5Db2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwuY29sc3BhbiAmJiBjZWxsLmNvbHNwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQ29scy5wdXNoKHsgcm93SW5kZXgsIGNvbEluZGV4LCBjZWxsQ29sSW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxDb2xJbmRleCA+PSBtaW5Db2wgJiYgY2VsbFJvd0luZGV4ID49IG1pblJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDb2wgPSBNYXRoLm1heChtYXhDb2wsIGNlbGxDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvbCA9IE1hdGgubWluKG1pbkNvbCwgY29sSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwucm93c3BhbiAmJiBjZWxsLnJvd3NwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlUm93cy5wdXNoKHsgcm93SW5kZXgsIGNvbEluZGV4LCBjZWxsUm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxDb2xJbmRleCA+PSBtaW5Db2wgJiYgY2VsbFJvd0luZGV4ID49IG1pblJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Sb3cgPSBNYXRoLm1pbihtaW5Sb3csIHJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um93ID0gTWF0aC5tYXgobWF4Um93LCBjZWxsUm93SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDliKTmlq3pgInljLrojIPlm7TlhoXkuYvliY3nmoTljZXlhYPmoLwg5aaC5p6c5a2Y5ZyoY2VsbENvbEluZGV4ID09PSBtaW5Db2zvvIzooajnpLrlvZPliY3ojrflj5bnmoRtaW5Db2zlubbkuI3mmK/mnIDlsI/nmoTvvIzph43mlrDojrflj5ZtaW5Db2xcbiAgICAgICAgY29uc3QgY29sTm9kZSA9IGJlZm9yZUNvbHMuZmlsdGVyKFxuICAgICAgICAgICAgaXRlbSA9PiBpdGVtLnJvd0luZGV4IDw9IG1heFJvdyAmJiBpdGVtLmNvbEluZGV4IDw9IG1heENvbCAmJiBpdGVtLnJvd0luZGV4ID49IG1pblJvdyAmJiBpdGVtLmNlbGxDb2xJbmRleCA9PT0gbWluQ29sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd05vZGUgPSBiZWZvcmVSb3dzLmZpbHRlcihcbiAgICAgICAgICAgIGl0ZW0gPT4gaXRlbS5yb3dJbmRleCA8PSBtYXhSb3cgJiYgaXRlbS5jb2xJbmRleCA8PSBtYXhDb2wgJiYgaXRlbS5jb2xJbmRleCA+PSBtaW5Db2wgJiYgaXRlbS5jZWxsUm93SW5kZXggPT09IG1pblJvd1xuICAgICAgICApO1xuICAgICAgICBpZiAoY29sTm9kZS5sZW5ndGggfHwgcm93Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1pbkFuZE1heENlbGxJbmRleChtYXhSb3csIG1heENvbCwgbWluUm93LCBtaW5Db2wsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluUm93LFxuICAgICAgICAgICAgbWF4Um93LFxuICAgICAgICAgICAgbWluQ29sLFxuICAgICAgICAgICAgbWF4Q29sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8g6YCJ5oup5Y2V5YWD5qC8XG4gICAgc2VsZWN0Q2VsbChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSBwYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogQ2VsbFBvc2l0aW9uW10gPSBbeyByb3csIGNvbCB9XTtcbiAgICAgICAgaWYgKHRoaXMucG9pbnRlclNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5zZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIC8vIOWkhOeQhuWNleWFg+agvOmAieS4reaXtu+8jOWkhOeQhuS4uumAieS4reWkmuWNleWFg+agvFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UoeyByb3csIGNvbCB9KSk7XG4gICAgICAgICAgICAvLyDlt7LogZrnhKbnmoTljZXlhYPmoLzlnKjlpJrpgInmqKHlvI/kuIvpgInkuK3vvIjmmoLlrZjkuIrmrKHogZrnhKbnmoTljZXlhYPmoLzmlbDmja7vvIlcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbCA9IHRoaXMubGFzdEZvY3VzQ2VsbFBhdGg/LnNsaWNlKC0yKTtcbiAgICAgICAgICAgIGZvY3VzQ2VsbCAmJiByZXN1bHQucHVzaCguLi50aGlzLmdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh7IHJvdzogZm9jdXNDZWxsWzBdLCBjb2w6IGZvY3VzQ2VsbFsxXSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHRoaXMudW5pcXVlQ2VsbFBvc2l0aW9uKHJlc3VsdCksIHBvcyk7XG4gICAgfVxuXG4gICAgLy8g6K6h566X5ZCI5bm25YmN55qE5Y2V5YWD5qC8XG4gICAgZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHsgcm93LCBjb2wgfTogQ2VsbFBvc2l0aW9uKTogQ2VsbFBvc2l0aW9uW10ge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgeyByb3dzcGFuLCBjb2xzcGFuIH0gPSBwb3MuZmluZENlbGxCeVBhdGgoeyByb3csIGNvbCB9KTtcbiAgICAgICAgaWYgKHJvd3NwYW4gJiYgY29sc3Bhbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShyb3csIGNvbCwgcm93ICsgcm93c3BhbiwgY29sICsgY29sc3Bhbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt7IHJvdywgY29sIH1dO1xuICAgIH1cblxuICAgIHNlbGVjdGVkQ2VsbHNDaGFuZ2UoKTogT2JzZXJ2YWJsZTxDZWxsUG9zaXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIGNlbGxzUG9zaXRpb25DaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDZWxscygpIHtcbiAgICAgICAgdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQubmV4dCgpO1xuICAgIH1cblxuICAgIGVtaXRUYWJsZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cblxuICAgIHRhYmxlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3RlZENlbGxzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JpZ2h0Q2xpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENlbGxzJC5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICBjbGVhckxhc3RGb2N1c1BhdGgoKSB7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIC8vIOaLlumAieW8gOWniyB8fCDorrDlvZXogZrnhKbngrlcbiAgICBzZWxlY3RDZWxsU3RhcnQoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoIXRoaXMucHJlRm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENlbGxPbmdvaW5nKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KGVkaXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDaGFuZ2VkOiBib29sZWFuO1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8IHRoaXMuZm9jdXNDZWxsUGF0aC50b1N0cmluZygpICE9PSBwYXRoLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxFbGVtZW50ID0gY2VsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgIXRoaXMuZm9jdXNDZWxsUGF0aCB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmZvY3VzQ2VsbFBhdGgudG9TdHJpbmcoKSA9PT0gdGhpcy5hbmNob3JDZWxsUGF0aC50b1N0cmluZygpICYmIHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyAmJiBpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnByZUZvY3VzQ2VsbFBhdGgpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvY3VzQ2VsbFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q2VsbHMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsRW5kKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2VsbFNlbGVjdGluZykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXNDZWxsKGVkaXRvcjogRWRpdG9yLCBwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBhdCA9IEVkaXRvci5zdGFydChlZGl0b3IsIHBhdGgpO1xuICAgICAgICBUaGVFZGl0b3IuZm9jdXModGhpcy5lZGl0b3IpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGF0KTtcbiAgICB9XG5cbiAgICBkYW5nZXJvdXNDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXg7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dCh0aGlzLnNlbGVjdGVkQ2VsbHMpO1xuICAgIH1cblxuICAgIGNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoW10pO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHBvcy50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhbmdlcm91c09yU2VsZWN0ZWRDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBtZXJnZSh0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpLCB0aGlzLnNlbGVjdGVkQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c1Jvd3MoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzO1xuICAgICAgICBjb25zdCByb3dzID0gdW5pcShtYXAoY2VsbHMsICdyb3cnKSkudmFsdWVPZigpIGFzIG51bWJlcltdO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSByb3dzO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHJvd3MubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKHYsIGkpID0+IGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCByb3dJbmRleCBvZiByb3dzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5nZXRXaWR0aCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGNvbDogaVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNDb2x1bW5zKCkge1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscztcbiAgICAgICAgY29uc3QgY29scyA9IHVuaXEobWFwKGNlbGxzLCAnY29sJykpLnZhbHVlT2YoKSBhcyBudW1iZXJbXTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gY29scztcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBjb2xzLmxlbmd0aCA9PT0gcG9zLmdldFdpZHRoKCk7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY29sSW5kZXggb2YgY29scykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MuZ2V0SGVpZ2h0KCk7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiBpLFxuICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbEluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c1RhYmxlKCkge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KGNlbGxzKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaXJzdENlbGwoKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wgfSA9IHRoaXMuc2VsZWN0ZWRDZWxsc1swXTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gdGhpcy5nZXRUYWJsZVBhdGgoKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgWy4uLnRhYmxlUGF0aCwgcm93LCBjb2xdKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yOiBDb2xvclR5cGUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHM7XG4gICAgICAgIGNvbnN0IHRhYmxlUGF0aCA9IHRoaXMuZ2V0VGFibGVQYXRoKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQYXRoLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBiYWNrZ3JvdW5kQ29sb3IgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNlbGwgfSA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGNlbGwgJiYgY2VsbC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzO1xuICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWVyZ2VDZWxsKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIG1lcmdlQ2VsbChlZGl0b3IsIHRoaXMuc2VsZWN0ZWRDZWxscyk7XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGVkaXRvcjogRWRpdG9yLCBuZXdPcHRpb25zOiBUaGVUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSB0aGlzLmdldFRhYmxlUGF0aCgpO1xuICAgICAgICBjb25zdCB0YWJsZSA9IHRhYmxlUG9zaXRpb24udGFibGU7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRhYmxlLm9wdGlvbnMsIC4uLm5ld09wdGlvbnMgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgb3B0aW9ucyB9LCB7IGF0OiB0YWJsZVBhdGggfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpIHtcbiAgICAgICAgY29uc3QgeyBkYW5nZXJvdXNSb3dzSW5kZXgsIGRhbmdlcm91c0NvbHVtbnNJbmRleCB9ID0gdGhpcztcbiAgICAgICAgdGhpcy5yZW1vdmVDb2x1bW5PclJvd3MoZGFuZ2Vyb3VzUm93c0luZGV4LCBkYW5nZXJvdXNDb2x1bW5zSW5kZXgpO1xuICAgIH1cblxuICAgIGNyZWF0ZVRhYmxlUG9zaXRpb24oKTogVGFibGVQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcjtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIFRhYmxlUG9zaXRpb24uY3JlYXRlKG9wdHMsIHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICByZW1vdmVDb2x1bW5PclJvd3Moc2VsZWN0ZWRSb3dJbmRleHMgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4LCBzZWxlY3RlZENvbHVtbkluZGV4cyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgpIHtcbiAgICAgICAgY29uc3QgeyBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgVGFibGVFZGl0b3IucmVtb3ZlVGFibGUodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRhYmxlUG9zaXRpb24udGFibGUpIGFzIGFueTtcbiAgICAgICAgaWYgKHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRDb2x1bW5JbmRleHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyDliKDpmaTooYzml7blj5bmtojmoIfpopjooYxcbiAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlICYmIHRhYmxlQ29tcG9uZW50LmhlYWRlclJvdyAmJiBzZWxlY3RlZFJvd0luZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlclJvdzogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgLy8gaGVhZGVyUm93IOWFvOWuueS7o+eggSwg5Y+W5raI5qCH6aKY6KGM55qE5pe25YCZ5ZCM5pe26K6+572uIHJvdyDkuK3nmoQgaGVhZGVyIOWxnuaAp1xuICAgICAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdLmhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBoZWFkZXI6IG51bGwgfSwgeyBhdDogcm93UGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFJvd0luZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVJvdyh0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZENvbHVtbkluZGV4cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5Yig6Zmk5YiX5pe25Y+W5raI5qCH6aKY5YiXXG4gICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi50YWJsZSAmJiB0YWJsZVBvc2l0aW9uLnRhYmxlLm9wdGlvbnM/LmhlYWRlckNvbHVtbiAmJiBzZWxlY3RlZENvbHVtbkluZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlckNvbHVtbjogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkluZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZUNvbHVtbih0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFnQixZQUFZLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxVQUFVO0lBbURuQjtRQWxEUSxtQkFBYyxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRSxvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRSx1QkFBa0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwRCxpQkFBWSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXRELHlCQUFvQixHQUFh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QUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7O3dHQS9pQlEsVUFBVTs0R0FBVixVQUFVOzRGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcywgTm9kZSwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgRUxFTUVOVF9UT19DT01QT05FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdyb3VwQnksIHVuaXEsIG1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyBtZXJnZUNlbGwgfSBmcm9tICcuL3V0aWxzL21lcmdlLWNlbGwnO1xuaW1wb3J0IHsgQ29sb3JUeXBlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXNlbGVjdCc7XG5pbXBvcnQgeyBDZWxsUG9zaXRpb24sIFRhYmxlT3B0aW9ucywgVGhlVGFibGVPcHRpb25zIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGxFbGVtZW50LCBUYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxDZWxsUG9zaXRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JDogU3ViamVjdDxvYmplY3Q+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgdGFibGVDaGFuZ2UkOiBTdWJqZWN0PG9iamVjdD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgc2VsZWN0ZWRDb2x1bW5zSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBzZWxlY3RlZFJvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c0NvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c1Jvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGlzU2VsZWN0ZWRUYWJsZTogYm9vbGVhbjtcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgcHVibGljIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBhbmNob3JDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgcHJlRm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgbGFzdEZvY3VzQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGZvY3VzQ2VsbEVsZW1lbnQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgcHVibGljIGlzUHJlcGFyZVNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzQ2VsbFNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzUmlnaHRDbGlja2luZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIHBvaW50ZXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBtYXhDb2w6IG51bWJlcjtcblxuICAgIGdldCBzZWxlY3RlZENlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldCBkYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgaXNTZWxlY3RlZEFsbENlbGwgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoICYmIHBvcy5nZXRIZWlnaHQoKSAqIHBvcy5nZXRXaWR0aCgpID09PSB0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoO1xuICAgIH07XG5cbiAgICBnZXRUYWJsZUVudHJ5KCkge1xuICAgICAgICBjb25zdCB7IHRhYmxlRW50cnkgfSA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gdGFibGVFbnRyeTtcbiAgICB9XG5cbiAgICBnZXRUYWJsZVBhdGgoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlRW50cnkgPSB0aGlzLmdldFRhYmxlRW50cnkoKTtcbiAgICAgICAgcmV0dXJuIHRhYmxlRW50cnlbMV07XG4gICAgfVxuXG4gICAgdXBkYXRlQ2VsbFBvc2l0aW9uUmVmcyhyb3cgPSAwLCBjb2wgPSAwKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgY2VsbHMucHVzaCh7IC4uLmNlbGwsIHJvdzogY2VsbC5yb3cgKyByb3csIGNvbDogY2VsbC5jb2wgKyBjb2wgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHMoY2VsbHM6IENlbGxQb3NpdGlvbltdLCBwb3M6IFRhYmxlUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3Qgcm93R3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyByb3csIGNvbCB9KSA9PiByb3cpO1xuICAgICAgICBjb25zdCBjb2xHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IHJvdywgY29sIH0pID0+IGNvbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBpbiByb3dHcm91cCkge1xuICAgICAgICAgICAgaWYgKHJvd0dyb3VwW3Jvd10ubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgucHVzaChwYXJzZUludChyb3csIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBjb2wgaW4gY29sR3JvdXApIHtcbiAgICAgICAgICAgIGlmIChjb2xHcm91cFtjb2xdLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5wdXNoKHBhcnNlSW50KGNvbCwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkUm93c0luZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIGluaXRFZGl0b3IoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Y676YeN6YeN5aSN55qE5Y2V5YWD5qC85L2N572uXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHVuaXF1ZUNlbGxQb3NpdGlvbihjZWxsczogQ2VsbFBvc2l0aW9uW10pOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIGxldCByZXN1bHQ6IENlbGxQb3NpdGlvbltdID0gW107XG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZENlbGxzID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgY2VsbHMuY29uY2F0KHRoaXMuc2VsZWN0ZWRDZWxscykuZm9yRWFjaChjZWxsID0+IG1vZENlbGxzLmFkZChKU09OLnN0cmluZ2lmeShjZWxsKSkpO1xuICAgICAgICAgICAgbW9kQ2VsbHMuZm9yRWFjaCgoY2VsbDogc3RyaW5nKSA9PiByZXN1bHQucHVzaChKU09OLnBhcnNlKGNlbGwpKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjZWxscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bkuIDlrprojIPlm7TlhoXmiYDmnInnmoTljZXlhYPmoLxcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShzdGFydFJvdzogbnVtYmVyLCBzdGFydENvbDogbnVtYmVyLCBlbmRSb3c6IG51bWJlciwgZW5kQ29sOiBudW1iZXIpOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogQ2VsbFBvc2l0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gc3RhcnRSb3c7IHJvdyA8IGVuZFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNvbCA9IHN0YXJ0Q29sOyBjb2wgPCBlbmRDb2w7IGNvbCsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goeyByb3csIGNvbCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHNlbGVjdFJvdyhlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKGluZGV4LCAwLCBpbmRleCArIDEsIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHRoaXMudW5pcXVlQ2VsbFBvc2l0aW9uKHJlc3VsdCksIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtpbmRleCwgMF0pKTtcbiAgICB9XG5cbiAgICBzZWxlY3RDb2x1bW4oZWRpdG9yOiBFZGl0b3IsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jbGVhckxhc3RGb2N1c1BhdGgoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtpbmRleF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCBpbmRleCwgcG9zLmdldEhlaWdodCgpLCBpbmRleCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHModGhpcy51bmlxdWVDZWxsUG9zaXRpb24ocmVzdWx0KSwgcG9zKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIGluZGV4XSkpO1xuICAgIH1cblxuICAgIHNlbGVjdFRhYmxlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCAwXSkpO1xuICAgIH1cblxuICAgIC8vIOaLlumAiVxuICAgIHNlbGVjdENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IGZvY3VzUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aC5zbGljZSgtMik7XG5cbiAgICAgICAgY29uc3Qgcm93cyA9IFthbmNob3JQYXRoWzBdLCBmb2N1c1BhdGhbMF1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFthbmNob3JQYXRoWzFdLCBmb2N1c1BhdGhbMV1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcblxuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGFuY2hvckNvbHNwYW5Db3VudCwgcm93c3BhbjogYW5jaG9yUm93c3BhbkNvdW50IH0gPSBFZGl0b3Iubm9kZShcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGhcbiAgICAgICAgKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGZvY3VzQ29sc3BhbkNvdW50LCByb3dzcGFuOiBmb2N1c1Jvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpWzBdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yUm93ID0gYW5jaG9yUGF0aFswXSArIChhbmNob3JSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBmb2N1c1JvdyA9IGZvY3VzUGF0aFswXSArIChmb2N1c1Jvd3NwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGFuY2hvckNvbCA9IGFuY2hvclBhdGhbMV0gKyAoYW5jaG9yQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNDb2wgPSBmb2N1c1BhdGhbMV0gKyAoZm9jdXNDb2xzcGFuQ291bnQgfHwgMSkgLSAxO1xuXG4gICAgICAgIGxldCBpbml0TWF4Q29sID0gTWF0aC5tYXgoYW5jaG9yQ29sLCBmb2N1c0NvbCk7XG4gICAgICAgIGxldCBpbml0TWF4Um93ID0gTWF0aC5tYXgoYW5jaG9yUm93LCBmb2N1c1Jvdyk7XG4gICAgICAgIGNvbnN0IHsgbWluUm93LCBtYXhSb3csIG1pbkNvbCwgbWF4Q29sIH0gPSB0aGlzLmdldE1pbkFuZE1heENlbGxJbmRleChpbml0TWF4Um93LCBpbml0TWF4Q29sLCByb3dzWzBdLCBjb2x1bW5zWzBdLCBwb3MudGFibGUpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UobWluUm93LCBtaW5Db2wsIG1heFJvdyArIDEsIG1heENvbCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHModGhpcy51bmlxdWVDZWxsUG9zaXRpb24ocmVzdWx0KSwgcG9zKTtcbiAgICB9XG5cbiAgICBnZXRNaW5BbmRNYXhDZWxsSW5kZXgobWF4Um93OiBudW1iZXIsIG1heENvbDogbnVtYmVyLCBtaW5Sb3c6IG51bWJlciwgbWluQ29sOiBudW1iZXIsIHRhYmxlOiBUYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYmVmb3JlQ29scyA9IFtdO1xuICAgICAgICBjb25zdCBiZWZvcmVSb3dzID0gW107XG4gICAgICAgIGxldCBzcGFuU2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BhblNlbGVjdGVkQ2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHNcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJvdywgY29sIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGFibGUuY2hpbGRyZW5bcm93XS5jaGlsZHJlbltjb2xdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzcGFuOiBub2RlLmNvbHNwYW4gfHwgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzcGFuOiBub2RlLnJvd3NwYW4gfHwgMVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRhYmxlLmNoaWxkcmVuLm1hcCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDw9IG1heFJvdykge1xuICAgICAgICAgICAgICAgIHJvdy5jaGlsZHJlbi5tYXAoKGNlbGw6IFRhYmxlQ2VsbEVsZW1lbnQsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2xJbmRleCA8PSBtYXhDb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSb3dJbmRleCA9IHJvd0luZGV4ICsgKGNlbGwucm93c3BhbiB8fCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIChjZWxsLmNvbHNwYW4gfHwgMSkgLSAxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhblNlbGVjdGVkQ2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByb3c6IHNlbGVjdFJvdywgY29sOiBzZWxlY3RDb2wsIHJvd3NwYW46IHNlbGVjdFJvd3NwYW4sIGNvbHNwYW46IHNlbGVjdENvbHNwYW4gfSA9IHNwYW5TZWxlY3RlZENlbGxzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RSb3cgKyBzZWxlY3RSb3dzcGFuIC0gMSA+PSBtaW5Sb3cgJiYgc2VsZWN0Q29sICsgc2VsZWN0Q29sc3BhbiAtIDEgPj0gbWluQ29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblJvdyA9IE1hdGgubWluKHNwYW5TZWxlY3RlZENlbGxzWzBdLnJvdywgbWluUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluQ29sID0gTWF0aC5taW4oc3BhblNlbGVjdGVkQ2VsbHNbMF0uY29sLCBtaW5Db2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwuY29sc3BhbiAmJiBjZWxsLmNvbHNwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQ29scy5wdXNoKHsgcm93SW5kZXgsIGNvbEluZGV4LCBjZWxsQ29sSW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxDb2xJbmRleCA+PSBtaW5Db2wgJiYgY2VsbFJvd0luZGV4ID49IG1pblJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDb2wgPSBNYXRoLm1heChtYXhDb2wsIGNlbGxDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvbCA9IE1hdGgubWluKG1pbkNvbCwgY29sSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwucm93c3BhbiAmJiBjZWxsLnJvd3NwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlUm93cy5wdXNoKHsgcm93SW5kZXgsIGNvbEluZGV4LCBjZWxsUm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxDb2xJbmRleCA+PSBtaW5Db2wgJiYgY2VsbFJvd0luZGV4ID49IG1pblJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Sb3cgPSBNYXRoLm1pbihtaW5Sb3csIHJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um93ID0gTWF0aC5tYXgobWF4Um93LCBjZWxsUm93SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDliKTmlq3pgInljLrojIPlm7TlhoXkuYvliY3nmoTljZXlhYPmoLwg5aaC5p6c5a2Y5ZyoY2VsbENvbEluZGV4ID09PSBtaW5Db2zvvIzooajnpLrlvZPliY3ojrflj5bnmoRtaW5Db2zlubbkuI3mmK/mnIDlsI/nmoTvvIzph43mlrDojrflj5ZtaW5Db2xcbiAgICAgICAgY29uc3QgY29sTm9kZSA9IGJlZm9yZUNvbHMuZmlsdGVyKFxuICAgICAgICAgICAgaXRlbSA9PiBpdGVtLnJvd0luZGV4IDw9IG1heFJvdyAmJiBpdGVtLmNvbEluZGV4IDw9IG1heENvbCAmJiBpdGVtLnJvd0luZGV4ID49IG1pblJvdyAmJiBpdGVtLmNlbGxDb2xJbmRleCA9PT0gbWluQ29sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd05vZGUgPSBiZWZvcmVSb3dzLmZpbHRlcihcbiAgICAgICAgICAgIGl0ZW0gPT4gaXRlbS5yb3dJbmRleCA8PSBtYXhSb3cgJiYgaXRlbS5jb2xJbmRleCA8PSBtYXhDb2wgJiYgaXRlbS5jb2xJbmRleCA+PSBtaW5Db2wgJiYgaXRlbS5jZWxsUm93SW5kZXggPT09IG1pblJvd1xuICAgICAgICApO1xuICAgICAgICBpZiAoY29sTm9kZS5sZW5ndGggfHwgcm93Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1pbkFuZE1heENlbGxJbmRleChtYXhSb3csIG1heENvbCwgbWluUm93LCBtaW5Db2wsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluUm93LFxuICAgICAgICAgICAgbWF4Um93LFxuICAgICAgICAgICAgbWluQ29sLFxuICAgICAgICAgICAgbWF4Q29sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8g6YCJ5oup5Y2V5YWD5qC8XG4gICAgc2VsZWN0Q2VsbChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSBwYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogQ2VsbFBvc2l0aW9uW10gPSBbeyByb3csIGNvbCB9XTtcbiAgICAgICAgaWYgKHRoaXMucG9pbnRlclNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5zZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIC8vIOWkhOeQhuWNleWFg+agvOmAieS4reaXtu+8jOWkhOeQhuS4uumAieS4reWkmuWNleWFg+agvFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UoeyByb3csIGNvbCB9KSk7XG4gICAgICAgICAgICAvLyDlt7LogZrnhKbnmoTljZXlhYPmoLzlnKjlpJrpgInmqKHlvI/kuIvpgInkuK3vvIjmmoLlrZjkuIrmrKHogZrnhKbnmoTljZXlhYPmoLzmlbDmja7vvIlcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbCA9IHRoaXMubGFzdEZvY3VzQ2VsbFBhdGg/LnNsaWNlKC0yKTtcbiAgICAgICAgICAgIGZvY3VzQ2VsbCAmJiByZXN1bHQucHVzaCguLi50aGlzLmdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh7IHJvdzogZm9jdXNDZWxsWzBdLCBjb2w6IGZvY3VzQ2VsbFsxXSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHRoaXMudW5pcXVlQ2VsbFBvc2l0aW9uKHJlc3VsdCksIHBvcyk7XG4gICAgfVxuXG4gICAgLy8g6K6h566X5ZCI5bm25YmN55qE5Y2V5YWD5qC8XG4gICAgZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHsgcm93LCBjb2wgfTogQ2VsbFBvc2l0aW9uKTogQ2VsbFBvc2l0aW9uW10ge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgeyByb3dzcGFuLCBjb2xzcGFuIH0gPSBwb3MuZmluZENlbGxCeVBhdGgoeyByb3csIGNvbCB9KTtcbiAgICAgICAgaWYgKHJvd3NwYW4gJiYgY29sc3Bhbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShyb3csIGNvbCwgcm93ICsgcm93c3BhbiwgY29sICsgY29sc3Bhbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt7IHJvdywgY29sIH1dO1xuICAgIH1cblxuICAgIHNlbGVjdGVkQ2VsbHNDaGFuZ2UoKTogT2JzZXJ2YWJsZTxDZWxsUG9zaXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIGNlbGxzUG9zaXRpb25DaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDZWxscygpIHtcbiAgICAgICAgdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQubmV4dCgpO1xuICAgIH1cblxuICAgIGVtaXRUYWJsZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cblxuICAgIHRhYmxlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3RlZENlbGxzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JpZ2h0Q2xpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENlbGxzJC5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICBjbGVhckxhc3RGb2N1c1BhdGgoKSB7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIC8vIOaLlumAieW8gOWniyB8fCDorrDlvZXogZrnhKbngrlcbiAgICBzZWxlY3RDZWxsU3RhcnQoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoIXRoaXMucHJlRm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENlbGxPbmdvaW5nKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KGVkaXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDaGFuZ2VkOiBib29sZWFuO1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8IHRoaXMuZm9jdXNDZWxsUGF0aC50b1N0cmluZygpICE9PSBwYXRoLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxFbGVtZW50ID0gY2VsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgIXRoaXMuZm9jdXNDZWxsUGF0aCB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmZvY3VzQ2VsbFBhdGgudG9TdHJpbmcoKSA9PT0gdGhpcy5hbmNob3JDZWxsUGF0aC50b1N0cmluZygpICYmIHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyAmJiBpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnByZUZvY3VzQ2VsbFBhdGgpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvY3VzQ2VsbFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q2VsbHMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsRW5kKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2VsbFNlbGVjdGluZykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXNDZWxsKGVkaXRvcjogRWRpdG9yLCBwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBhdCA9IEVkaXRvci5zdGFydChlZGl0b3IsIHBhdGgpO1xuICAgICAgICBUaGVFZGl0b3IuZm9jdXModGhpcy5lZGl0b3IpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGF0KTtcbiAgICB9XG5cbiAgICBkYW5nZXJvdXNDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXg7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dCh0aGlzLnNlbGVjdGVkQ2VsbHMpO1xuICAgIH1cblxuICAgIGNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoW10pO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHBvcy50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhbmdlcm91c09yU2VsZWN0ZWRDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBtZXJnZSh0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpLCB0aGlzLnNlbGVjdGVkQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c1Jvd3MoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzO1xuICAgICAgICBjb25zdCByb3dzID0gdW5pcShtYXAoY2VsbHMsICdyb3cnKSkudmFsdWVPZigpIGFzIG51bWJlcltdO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNyZWF0ZVRhYmxlUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSByb3dzO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHJvd3MubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKHYsIGkpID0+IGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCByb3dJbmRleCBvZiByb3dzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5nZXRXaWR0aCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGNvbDogaVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNDb2x1bW5zKCkge1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscztcbiAgICAgICAgY29uc3QgY29scyA9IHVuaXEobWFwKGNlbGxzLCAnY29sJykpLnZhbHVlT2YoKSBhcyBudW1iZXJbXTtcbiAgICAgICAgY29uc3QgcG9zID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gY29scztcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBjb2xzLmxlbmd0aCA9PT0gcG9zLmdldFdpZHRoKCk7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY29sSW5kZXggb2YgY29scykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MuZ2V0SGVpZ2h0KCk7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiBpLFxuICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbEluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c1RhYmxlKCkge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KGNlbGxzKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaXJzdENlbGwoKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wgfSA9IHRoaXMuc2VsZWN0ZWRDZWxsc1swXTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gdGhpcy5nZXRUYWJsZVBhdGgoKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgWy4uLnRhYmxlUGF0aCwgcm93LCBjb2xdKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yOiBDb2xvclR5cGUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHM7XG4gICAgICAgIGNvbnN0IHRhYmxlUGF0aCA9IHRoaXMuZ2V0VGFibGVQYXRoKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQYXRoLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBiYWNrZ3JvdW5kQ29sb3IgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNlbGwgfSA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGNlbGwgJiYgY2VsbC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzO1xuICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWVyZ2VDZWxsKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIG1lcmdlQ2VsbChlZGl0b3IsIHRoaXMuc2VsZWN0ZWRDZWxscyk7XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGVkaXRvcjogRWRpdG9yLCBuZXdPcHRpb25zOiBUaGVUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IHRoaXMuY3JlYXRlVGFibGVQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSB0aGlzLmdldFRhYmxlUGF0aCgpO1xuICAgICAgICBjb25zdCB0YWJsZSA9IHRhYmxlUG9zaXRpb24udGFibGU7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRhYmxlLm9wdGlvbnMsIC4uLm5ld09wdGlvbnMgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgb3B0aW9ucyB9LCB7IGF0OiB0YWJsZVBhdGggfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpIHtcbiAgICAgICAgY29uc3QgeyBkYW5nZXJvdXNSb3dzSW5kZXgsIGRhbmdlcm91c0NvbHVtbnNJbmRleCB9ID0gdGhpcztcbiAgICAgICAgdGhpcy5yZW1vdmVDb2x1bW5PclJvd3MoZGFuZ2Vyb3VzUm93c0luZGV4LCBkYW5nZXJvdXNDb2x1bW5zSW5kZXgpO1xuICAgIH1cblxuICAgIGNyZWF0ZVRhYmxlUG9zaXRpb24gPSAoKTogVGFibGVQb3NpdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcjtcbiAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIFRhYmxlUG9zaXRpb24uY3JlYXRlKG9wdHMsIHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9O1xuXG4gICAgcmVtb3ZlQ29sdW1uT3JSb3dzKHNlbGVjdGVkUm93SW5kZXhzID0gdGhpcy5zZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5JbmRleHMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4KSB7XG4gICAgICAgIGNvbnN0IHsgaXNTZWxlY3RlZFRhYmxlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gdGhpcy5jcmVhdGVUYWJsZVBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVRhYmxlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWJsZUNvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh0YWJsZVBvc2l0aW9uLnRhYmxlKSBhcyBhbnk7XG4gICAgICAgIGlmIChzZWxlY3RlZFJvd0luZGV4cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkQ29sdW1uSW5kZXhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5Yig6Zmk6KGM5pe25Y+W5raI5qCH6aKY6KGMXG4gICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi50YWJsZSAmJiB0YWJsZUNvbXBvbmVudC5oZWFkZXJSb3cgJiYgc2VsZWN0ZWRSb3dJbmRleHMuaW5jbHVkZXMoMCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYmxlT3B0aW9ucyh0aGlzLmVkaXRvciwgeyBoZWFkZXJSb3c6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIC8vIGhlYWRlclJvdyDlhbzlrrnku6PnoIEsIOWPlua2iOagh+mimOihjOeahOaXtuWAmeWQjOaXtuiuvue9riByb3cg5Lit55qEIGhlYWRlciDlsZ7mgKdcbiAgICAgICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi50YWJsZS5jaGlsZHJlblswXS5oZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93UGF0aCA9IFRoZUVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGFibGVQb3NpdGlvbi50YWJsZS5jaGlsZHJlblswXSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXModGhpcy5lZGl0b3IsIHsgaGVhZGVyOiBudWxsIH0sIHsgYXQ6IHJvd1BhdGggfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dJbmRleHNcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5yZW1vdmVSb3codGhpcy5lZGl0b3IsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRDb2x1bW5JbmRleHMubGVuZ3RoID4gMCAmJiBzZWxlY3RlZFJvd0luZGV4cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIOWIoOmZpOWIl+aXtuWPlua2iOagh+mimOWIl1xuICAgICAgICAgICAgaWYgKHRhYmxlUG9zaXRpb24udGFibGUgJiYgdGFibGVQb3NpdGlvbi50YWJsZS5vcHRpb25zPy5oZWFkZXJDb2x1bW4gJiYgc2VsZWN0ZWRDb2x1bW5JbmRleHMuaW5jbHVkZXMoMCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYmxlT3B0aW9ucyh0aGlzLmVkaXRvciwgeyBoZWFkZXJDb2x1bW46IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5JbmRleHNcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5yZW1vdmVDb2x1bW4odGhpcy5lZGl0b3IsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -38,12 +38,18 @@ getCell) {
38
38
  });
39
39
  });
40
40
  }
41
+ const theTableWrapper = AngularEditor.toDOMNode(editor, table).querySelector('.the-table-wrapper');
42
+ const scrollWidth = theTableWrapper.scrollWidth;
43
+ const clientWidth = theTableWrapper.clientWidth;
44
+ const columnLength = table?.children[0].children.length;
45
+ const columnWidth = clientWidth / (columnLength + 1);
41
46
  if (table?.columns) {
42
- const theTableWrapper = AngularEditor.toDOMNode(editor, table).querySelector('.the-table-wrapper');
43
- const scrollWidth = theTableWrapper.scrollWidth;
44
- const clientWidth = theTableWrapper.clientWidth;
45
47
  Transforms.setNodes(editor, { columns: addColumns(table, table.columns.length + 1, insertColumnIndex, scrollWidth > clientWidth) }, { at: tableEntry[1] });
46
48
  }
49
+ else if (columnWidth < opts.minWidthPx) {
50
+ const columns = Array(columnLength + 1).fill({ width: opts.minWidthPx });
51
+ Transforms.setNodes(editor, { columns }, { at: tableEntry[1] });
52
+ }
47
53
  });
48
54
  }
49
55
  /**
@@ -59,4 +65,4 @@ export function insertColumnAtRow(opts, editor, count = 1, tableEntry, rowIndex,
59
65
  }
60
66
  });
61
67
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3RyYW5zZm9ybXMvaW5zZXJ0LWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLE9BQU8sQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQ3hCLElBQWtCLEVBQ2xCLE1BQWMsRUFDZCxLQUFLLEdBQUcsQ0FBQyxFQUNULEVBQVcsRUFBRSxlQUFlO0FBQzVCLE9BQTJEO0lBRTNELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDN0IsTUFBTSxFQUNGLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUNuQixHQUFHLFNBQVMsQ0FBQztJQUVkLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2hDLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7SUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU5RixzQkFBc0I7SUFFdEIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRixJQUFJLFFBQVEsRUFBRTtvQkFDVixPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDdEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQy9CLENBQUMsSUFBc0IsRUFBRSxXQUFtQixFQUFFLEVBQUUsQ0FDNUMsQ0FBQyxJQUFJLENBQUMsTUFBTTt3QkFDWixXQUFXLEdBQUcsaUJBQWlCO3dCQUMvQixJQUFJLENBQUMsT0FBTzt3QkFDWixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxpQkFBaUIsQ0FDakMsQ0FBQztvQkFDdEIsSUFBSSxTQUFTLEVBQUU7d0JBQ1gsVUFBVSxDQUFDLFFBQVEsQ0FDZixNQUFNLEVBQ04sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFDbEM7NEJBQ0ksRUFBRSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDM0YsQ0FDSixDQUFDO3FCQUNMO2lCQUNKO2dCQUNELFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3RDLEVBQUUsRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7aUJBQzdFLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDaEIsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFFbkcsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztZQUNoRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO1lBQ2hELFVBQVUsQ0FBQyxRQUFRLENBQ2YsTUFBTSxFQUNOLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxFQUN0RyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDeEIsQ0FBQztTQUNMO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLElBQWtCLEVBQ2xCLE1BQWMsRUFDZCxLQUFLLEdBQUcsQ0FBQyxFQUNULFVBQW1DLEVBQ25DLFFBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLE9BQTJEO0lBRTNELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDdEMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDcEQsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1zLCBFZGl0b3IsIE5vZGVFbnRyeSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24sIGNyZWF0ZUNlbGwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBjYWxjU3BhbkZvckNvbHVtbiB9IGZyb20gJy4uL3V0aWxzL2NhbGMtc3Bhbic7XG5pbXBvcnQgeyBhZGRDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvYWRkLWNvbHVtbnMnO1xuaW1wb3J0IHsgVGFibGVPcHRpb25zIH0gZnJvbSAnLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVDZWxsRWxlbWVudCwgVGFibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcblxuLyoqXG4gKiBJbnNlcnQgYSBuZXcgY29sdW1uIGluIGN1cnJlbnQgdGFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvbHVtbihcbiAgICBvcHRzOiBUYWJsZU9wdGlvbnMsXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgY291bnQgPSAxLFxuICAgIGF0PzogbnVtYmVyLCAvLyBDb2x1bW4gaW5kZXhcbiAgICBnZXRDZWxsPzogKGNvbHVtbjogbnVtYmVyLCByb3c6IG51bWJlcikgPT4gVGFibGVDZWxsRWxlbWVudFxuKSB7XG4gICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICBjb25zdCB7XG4gICAgICAgIGFuY2hvcjogeyBwYXRoIH1cbiAgICB9ID0gc2VsZWN0aW9uO1xuXG4gICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IFRhYmxlUG9zaXRpb24uY3JlYXRlKG9wdHMsIGVkaXRvciwgcGF0aCk7XG4gICAgbGV0IHRhYmxlID0gdGFibGVQb3NpdGlvbi50YWJsZTtcbiAgICBsZXQgdGFibGVFbnRyeSA9IHRhYmxlUG9zaXRpb24udGFibGVFbnRyeTtcblxuICAgIGNvbnN0IGluc2VydENvbHVtbkluZGV4ID0gdHlwZW9mIGF0ID09PSAndW5kZWZpbmVkJyA/IHRhYmxlUG9zaXRpb24uZ2V0Q29sdW1uSW5kZXgoKSArIDEgOiBhdDtcblxuICAgIC8vIEluc2VydCB0aGUgbmV3IGNlbGxcblxuICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHNwYW4gPSBjYWxjU3BhbkZvckNvbHVtbih0YWJsZSwgaW5zZXJ0Q29sdW1uSW5kZXgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlLmNoaWxkcmVuLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0luc2lkZSA9IGNvbHNwYW5bcm93SW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbGwgPSBnZXRDZWxsID8gZ2V0Q2VsbChpbnNlcnRDb2x1bW5JbmRleCwgcm93SW5kZXgpIDogY3JlYXRlQ2VsbChvcHRzKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2VsbC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJ0eUNlbGwgPSByb3cuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZWxsOiBUYWJsZUNlbGxFbGVtZW50LCBjb2x1bW5JbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjZWxsLmhpZGRlbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4IDwgaW5zZXJ0Q29sdW1uSW5kZXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNvbHNwYW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNvbHNwYW4gKyBjb2x1bW5JbmRleCA+IGluc2VydENvbHVtbkluZGV4XG4gICAgICAgICAgICAgICAgICAgICkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5Q2VsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjb2xzcGFuOiBkaXJ0eUNlbGwuY29sc3BhbiArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0OiB0YWJsZVBvc2l0aW9uLnRhYmxlRW50cnlbMV0uY29uY2F0KHJvd0luZGV4KS5jb25jYXQocm93LmNoaWxkcmVuLmluZGV4T2YoZGlydHlDZWxsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBbbmV3Q2VsbF0sIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IHRhYmxlUG9zaXRpb24udGFibGVFbnRyeVsxXS5jb25jYXQocm93SW5kZXgpLmNvbmNhdChpbnNlcnRDb2x1bW5JbmRleClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZT8uY29sdW1ucykge1xuICAgICAgICAgICAgY29uc3QgdGhlVGFibGVXcmFwcGVyID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCB0YWJsZSkucXVlcnlTZWxlY3RvcignLnRoZS10YWJsZS13cmFwcGVyJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFdpZHRoID0gdGhlVGFibGVXcmFwcGVyLnNjcm9sbFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgY2xpZW50V2lkdGggPSB0aGVUYWJsZVdyYXBwZXIuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICB7IGNvbHVtbnM6IGFkZENvbHVtbnModGFibGUsIHRhYmxlLmNvbHVtbnMubGVuZ3RoICsgMSwgaW5zZXJ0Q29sdW1uSW5kZXgsIHNjcm9sbFdpZHRoID4gY2xpZW50V2lkdGgpIH0sXG4gICAgICAgICAgICAgICAgeyBhdDogdGFibGVFbnRyeVsxXSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0IG5ldyBjb2x1bW4gaW4gdGhlIHJvd1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29sdW1uQXRSb3coXG4gICAgb3B0czogVGFibGVPcHRpb25zLFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIGNvdW50ID0gMSxcbiAgICB0YWJsZUVudHJ5OiBOb2RlRW50cnk8VGFibGVFbGVtZW50PixcbiAgICByb3dJbmRleDogbnVtYmVyLFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgZ2V0Q2VsbD86IChjb2x1bW46IG51bWJlciwgcm93OiBudW1iZXIpID0+IFRhYmxlQ2VsbEVsZW1lbnRcbikge1xuICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbmV3Q2VsbCA9IGdldENlbGwgPyBnZXRDZWxsKGNvbHVtbkluZGV4LCByb3dJbmRleCkgOiBjcmVhdGVDZWxsKG9wdHMpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIFtuZXdDZWxsXSwge1xuICAgICAgICAgICAgICAgIGF0OiB0YWJsZUVudHJ5WzFdLmNvbmNhdChbcm93SW5kZXgsIGNvbHVtbkluZGV4XSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3RyYW5zZm9ybXMvaW5zZXJ0LWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLE9BQU8sQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQ3hCLElBQWtCLEVBQ2xCLE1BQWMsRUFDZCxLQUFLLEdBQUcsQ0FBQyxFQUNULEVBQVcsRUFBRSxlQUFlO0FBQzVCLE9BQTJEO0lBRTNELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDN0IsTUFBTSxFQUNGLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUNuQixHQUFHLFNBQVMsQ0FBQztJQUVkLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2hDLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7SUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU5RixzQkFBc0I7SUFFdEIsTUFBTSxD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LElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuRTtJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixJQUFrQixFQUNsQixNQUFjLEVBQ2QsS0FBSyxHQUFHLENBQUMsRUFDVCxVQUFtQyxFQUNuQyxRQUFnQixFQUNoQixXQUFtQixFQUNuQixPQUEyRDtJQUUzRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVFLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3RDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQ3BELENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtcywgRWRpdG9yLCBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVBvc2l0aW9uLCBjcmVhdGVDZWxsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgY2FsY1NwYW5Gb3JDb2x1bW4gfSBmcm9tICcuLi91dGlscy9jYWxjLXNwYW4nO1xuaW1wb3J0IHsgYWRkQ29sdW1ucyB9IGZyb20gJy4uL3V0aWxzL2FkZC1jb2x1bW5zJztcbmltcG9ydCB7IFRhYmxlT3B0aW9ucyB9IGZyb20gJy4uL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQsIFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5cbi8qKlxuICogSW5zZXJ0IGEgbmV3IGNvbHVtbiBpbiBjdXJyZW50IHRhYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRDb2x1bW4oXG4gICAgb3B0czogVGFibGVPcHRpb25zLFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIGNvdW50ID0gMSxcbiAgICBhdD86IG51bWJlciwgLy8gQ29sdW1uIGluZGV4XG4gICAgZ2V0Q2VsbD86IChjb2x1bW46IG51bWJlciwgcm93OiBudW1iZXIpID0+IFRhYmxlQ2VsbEVsZW1lbnRcbikge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgY29uc3Qge1xuICAgICAgICBhbmNob3I6IHsgcGF0aCB9XG4gICAgfSA9IHNlbGVjdGlvbjtcblxuICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBUYWJsZVBvc2l0aW9uLmNyZWF0ZShvcHRzLCBlZGl0b3IsIHBhdGgpO1xuICAgIGxldCB0YWJsZSA9IHRhYmxlUG9zaXRpb24udGFibGU7XG4gICAgbGV0IHRhYmxlRW50cnkgPSB0YWJsZVBvc2l0aW9uLnRhYmxlRW50cnk7XG5cbiAgICBjb25zdCBpbnNlcnRDb2x1bW5JbmRleCA9IHR5cGVvZiBhdCA9PT0gJ3VuZGVmaW5lZCcgPyB0YWJsZVBvc2l0aW9uLmdldENvbHVtbkluZGV4KCkgKyAxIDogYXQ7XG5cbiAgICAvLyBJbnNlcnQgdGhlIG5ldyBjZWxsXG5cbiAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xzcGFuID0gY2FsY1NwYW5Gb3JDb2x1bW4odGFibGUsIGluc2VydENvbHVtbkluZGV4KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICB0YWJsZS5jaGlsZHJlbi5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNJbnNpZGUgPSBjb2xzcGFuW3Jvd0luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDZWxsID0gZ2V0Q2VsbCA/IGdldENlbGwoaW5zZXJ0Q29sdW1uSW5kZXgsIHJvd0luZGV4KSA6IGNyZWF0ZUNlbGwob3B0cyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW5zaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0NlbGwuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlydHlDZWxsID0gcm93LmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2VsbDogVGFibGVDZWxsRWxlbWVudCwgY29sdW1uSW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY2VsbC5oaWRkZW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCA8IGluc2VydENvbHVtbkluZGV4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jb2xzcGFuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jb2xzcGFuICsgY29sdW1uSW5kZXggPiBpbnNlcnRDb2x1bW5JbmRleFxuICAgICAgICAgICAgICAgICAgICApIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eUNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29sc3BhbjogZGlydHlDZWxsLmNvbHNwYW4gKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdDogdGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLmNvbmNhdChyb3dJbmRleCkuY29uY2F0KHJvdy5jaGlsZHJlbi5pbmRleE9mKGRpcnR5Q2VsbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGVkaXRvciwgW25ld0NlbGxdLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiB0YWJsZVBvc2l0aW9uLnRhYmxlRW50cnlbMV0uY29uY2F0KHJvd0luZGV4KS5jb25jYXQoaW5zZXJ0Q29sdW1uSW5kZXgpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoZVRhYmxlV3JhcHBlciA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgdGFibGUpLnF1ZXJ5U2VsZWN0b3IoJy50aGUtdGFibGUtd3JhcHBlcicpO1xuICAgICAgICBjb25zdCBzY3JvbGxXaWR0aCA9IHRoZVRhYmxlV3JhcHBlci5zY3JvbGxXaWR0aDtcbiAgICAgICAgY29uc3QgY2xpZW50V2lkdGggPSB0aGVUYWJsZVdyYXBwZXIuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxlbmd0aCA9IHRhYmxlPy5jaGlsZHJlblswXS5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY2xpZW50V2lkdGggLyAoY29sdW1uTGVuZ3RoICsgMSk7XG5cbiAgICAgICAgaWYgKHRhYmxlPy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICB7IGNvbHVtbnM6IGFkZENvbHVtbnModGFibGUsIHRhYmxlLmNvbHVtbnMubGVuZ3RoICsgMSwgaW5zZXJ0Q29sdW1uSW5kZXgsIHNjcm9sbFdpZHRoID4gY2xpZW50V2lkdGgpIH0sXG4gICAgICAgICAgICAgICAgeyBhdDogdGFibGVFbnRyeVsxXSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbldpZHRoIDwgb3B0cy5taW5XaWR0aFB4KSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gQXJyYXkoY29sdW1uTGVuZ3RoICsgMSkuZmlsbCh7IHdpZHRoOiBvcHRzLm1pbldpZHRoUHggfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgeyBjb2x1bW5zIH0sIHsgYXQ6IHRhYmxlRW50cnlbMV0gfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgbmV3IGNvbHVtbiBpbiB0aGUgcm93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRDb2x1bW5BdFJvdyhcbiAgICBvcHRzOiBUYWJsZU9wdGlvbnMsXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgY291bnQgPSAxLFxuICAgIHRhYmxlRW50cnk6IE5vZGVFbnRyeTxUYWJsZUVsZW1lbnQ+LFxuICAgIHJvd0luZGV4OiBudW1iZXIsXG4gICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICBnZXRDZWxsPzogKGNvbHVtbjogbnVtYmVyLCByb3c6IG51bWJlcikgPT4gVGFibGVDZWxsRWxlbWVudFxuKSB7XG4gICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDZWxsID0gZ2V0Q2VsbCA/IGdldENlbGwoY29sdW1uSW5kZXgsIHJvd0luZGV4KSA6IGNyZWF0ZUNlbGwob3B0cyk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGVkaXRvciwgW25ld0NlbGxdLCB7XG4gICAgICAgICAgICAgICAgYXQ6IHRhYmxlRW50cnlbMV0uY29uY2F0KFtyb3dJbmRleCwgY29sdW1uSW5kZXhdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -9,15 +9,17 @@ export function sortCell(cells) {
9
9
  }
10
10
  export function setCellIndent(editor, indentType, child, at) {
11
11
  const allowedTypes = IndentEditor.getAllowedTypes(editor);
12
+ if (!Element.isElement(child) || !allowedTypes.includes(child.type)) {
13
+ return;
14
+ }
12
15
  const maxIndent = getPluginOptions(editor, PluginKeys.indent)?.maxIndent ?? [];
13
16
  let { indent } = child;
14
17
  indent = indentType === Indents.indentRight ? (indent ? ++indent : 1) : indent ? --indent : 0;
15
18
  if (indent <= maxIndent) {
16
19
  Transforms.setNodes(editor, { indent }, {
17
20
  at,
18
- mode: 'highest',
19
- match: n => Element.isElement(n) && allowedTypes.includes(n.type)
21
+ mode: 'highest'
20
22
  });
21
23
  }
22
24
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS91dGlscy9oYW5kbGUtY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxPQUFPLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHN0MsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFxQjtJQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLEtBQW9CLEVBQUUsRUFBUTtJQUM3RixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDcEcsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN2QixNQUFNLEdBQUcsVUFBVSxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7UUFDckIsVUFBVSxDQUFDLFFBQVEsQ0FDZixNQUFNLEVBQ04sRUFBRSxNQUFNLEVBQUUsRUFDVjtZQUNJLEVBQUU7WUFDRixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3BFLENBQ0osQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGxQb3NpdGlvbiB9IGZyb20gJy4uL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRyYW5zZm9ybXMsIEVsZW1lbnQsIEVkaXRvciwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEluZGVudFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9wbHVnaW5zL2luZGVudC9pbmRlbnQucGx1Z2luJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEluZGVudEVkaXRvciB9IGZyb20gJy4uLy4uLy4uL3BsdWdpbnMvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJbmRlbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydENlbGwoY2VsbHM6IENlbGxQb3NpdGlvbltdKSB7XG4gICAgY2VsbHMuc29ydCgoYSwgYikgPT4gYS5yb3cgLSBiLnJvdyk7XG4gICAgY2VsbHMuc29ydCgoYSwgYikgPT4gYS5jb2wgLSBiLmNvbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDZWxsSW5kZW50KGVkaXRvcjogRWRpdG9yLCBpbmRlbnRUeXBlOiBJbmRlbnRzLCBjaGlsZDogQ3VzdG9tRWxlbWVudCwgYXQ6IFBhdGgpIHtcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBJbmRlbnRFZGl0b3IuZ2V0QWxsb3dlZFR5cGVzKGVkaXRvcik7XG4gICAgY29uc3QgbWF4SW5kZW50ID0gZ2V0UGx1Z2luT3B0aW9uczxJbmRlbnRQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMuaW5kZW50KT8ubWF4SW5kZW50ID8/IFtdO1xuICAgIGxldCB7IGluZGVudCB9ID0gY2hpbGQ7XG4gICAgaW5kZW50ID0gaW5kZW50VHlwZSA9PT0gSW5kZW50cy5pbmRlbnRSaWdodCA/IChpbmRlbnQgPyArK2luZGVudCA6IDEpIDogaW5kZW50ID8gLS1pbmRlbnQgOiAwO1xuICAgIGlmIChpbmRlbnQgPD0gbWF4SW5kZW50KSB7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB7IGluZGVudCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0LFxuICAgICAgICAgICAgICAgIG1vZGU6ICdoaWdoZXN0JyxcbiAgICAgICAgICAgICAgICBtYXRjaDogbiA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBhbGxvd2VkVHlwZXMuaW5jbHVkZXMobi50eXBlKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS91dGlscy9oYW5kbGUtY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxPQUFPLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHN0MsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFxQjtJQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLEtBQW9CLEVBQUUsRUFBUTtJQUM3RixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakUsT0FBTztLQUNWO0lBRUQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQXNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUNwRyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sR0FBRyxVQUFVLEtBQUssT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtRQUNyQixVQUFVLENBQUMsUUFBUSxDQUNmLE1BQU0sRUFDTixFQUFFLE1BQU0sRUFBRSxFQUNWO1lBQ0ksRUFBRTtZQUNGLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQ0osQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGxQb3NpdGlvbiB9IGZyb20gJy4uL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRyYW5zZm9ybXMsIEVsZW1lbnQsIEVkaXRvciwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEluZGVudFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9wbHVnaW5zL2luZGVudC9pbmRlbnQucGx1Z2luJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEluZGVudEVkaXRvciB9IGZyb20gJy4uLy4uLy4uL3BsdWdpbnMvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJbmRlbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydENlbGwoY2VsbHM6IENlbGxQb3NpdGlvbltdKSB7XG4gICAgY2VsbHMuc29ydCgoYSwgYikgPT4gYS5yb3cgLSBiLnJvdyk7XG4gICAgY2VsbHMuc29ydCgoYSwgYikgPT4gYS5jb2wgLSBiLmNvbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDZWxsSW5kZW50KGVkaXRvcjogRWRpdG9yLCBpbmRlbnRUeXBlOiBJbmRlbnRzLCBjaGlsZDogQ3VzdG9tRWxlbWVudCwgYXQ6IFBhdGgpIHtcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBJbmRlbnRFZGl0b3IuZ2V0QWxsb3dlZFR5cGVzKGVkaXRvcik7XG4gICAgaWYgKCFFbGVtZW50LmlzRWxlbWVudChjaGlsZCkgfHwgIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhjaGlsZC50eXBlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWF4SW5kZW50ID0gZ2V0UGx1Z2luT3B0aW9uczxJbmRlbnRQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMuaW5kZW50KT8ubWF4SW5kZW50ID8/IFtdO1xuICAgIGxldCB7IGluZGVudCB9ID0gY2hpbGQ7XG4gICAgaW5kZW50ID0gaW5kZW50VHlwZSA9PT0gSW5kZW50cy5pbmRlbnRSaWdodCA/IChpbmRlbnQgPyArK2luZGVudCA6IDEpIDogaW5kZW50ID8gLS1pbmRlbnQgOiAwO1xuICAgIGlmIChpbmRlbnQgPD0gbWF4SW5kZW50KSB7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB7IGluZGVudCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0LFxuICAgICAgICAgICAgICAgIG1vZGU6ICdoaWdoZXN0J1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -167,6 +167,7 @@ export class TheTableContextMenuService {
167
167
  actionHandle: () => {
168
168
  this.tableStore.removeDangerousColumnsOrRows();
169
169
  this.tableStore.clearDangerousCells();
170
+ this.tableStore.clearSelectedCells();
170
171
  },
171
172
  activeHandle: () => {
172
173
  this.tableStore.setDangerousColumns();
@@ -180,6 +181,7 @@ export class TheTableContextMenuService {
180
181
  actionHandle: () => {
181
182
  TableEditor.removeTable(this.editor);
182
183
  this.tableStore.clearDangerousCells();
184
+ this.tableStore.clearSelectedCells();
183
185
  },
184
186
  activeHandle: () => {
185
187
  this.tableStore.setDangerousTable();
@@ -286,4 +288,4 @@ TheTableContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12
286
288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableContextMenuService, decorators: [{
287
289
  type: Injectable
288
290
  }], ctorParameters: function () { return [{ type: i1.TheColorSelectService }, { type: i2.TableStore }, { type: i3.ThyPopover }, { type: i0.NgZone }, { type: i4.TheContextService }]; } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGV4dG1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9zZXJ2aWNlcy90YWJsZS1jb250ZXh0bWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFlbkMsWUFDWSxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUdoRCxpQkFBWSxHQUFpQjtZQUN6QjtnQkFDSSxHQUFHLEVBQUUsa0JBQWtCO2dCQUN2QixJQUFJLEVBQUUsZUFBZTtnQkFDckIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztnQkFDdEIsWUFBWSxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO29CQUNoQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRTt3QkFDM0MsT0FBTztxQkFDVjtvQkFDRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUNyQyxLQUFLLENBQUMsTUFBcUIsRUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFDcEIsZ0JBQWdCLEVBQ2hCO3dCQUNJLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JCLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTt3QkFDcEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtxQkFDL0UsRUFDRCxDQUFDLFFBQW1CLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFFBQVEsS0FBSywwQkFBMEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxzQkFBc0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUM3RyxJQUFJLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUN6RDs2QkFBTTs0QkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUM3RDt3QkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN0QyxDQUFDLEVBQ0QsVUFBVSxFQUNWLENBQUMsQ0FDSixDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7b0JBQ3BDLElBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSxXQUFXLEVBQUU7d0JBQzVDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7NEJBQ2xFLE9BQU87eUJBQ1Y7cUJBQ0o7b0JBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUU7d0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3FCQUM5QztnQkFDTCxDQUFDO2FBQ0o7WUFFRDtnQkFDSSxHQUFHLEVBQUUsZUFBZSxDQUFDLFlBQVk7Z0JBQ2pDLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLElBQUksRUFBRSxPQUFPO2dCQUNiLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFO29CQUMvQixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3pELFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLGVBQWUsQ0FBQyxjQUFjO2dCQUNuQyxJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLFVBQVUsRUFBRSxHQUFHO2dCQUNmLFlBQVksRUFBRSxDQUFDLElBQWdCLEVBQUUsRUFBRTtvQkFDL0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7b0JBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLENBQUM7YUFDSjtZQUNEO2dCQUNJLEdBQUcsRUFBRSxlQUFlLENBQUMsaUJBQWlCO2dCQUN0QyxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLFVBQVUsRUFBRSxHQUFHO2dCQUNmLFlBQVksRUFBRSxDQUFDLElBQWdCLEVBQUUsRUFBRTtvQkFDL0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUN6RCxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsZUFBZSxDQUFDLGtCQUFrQjtnQkFDdkMsSUFBSSxFQUFFLDRCQUE0QjtnQkFDbEMsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixVQUFVLEVBQUUsR0FBRztnQkFDZixZQUFZLEVBQUUsQ0FBQyxJQUFnQixFQUFFLEVBQUU7b0JBQy9CLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlELFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2FBQ0o7WUFFRDtnQkFDSSxHQUFHLEVBQUUsaUJBQWlCO2dCQUN0QixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLENBQUM7YUFDSjtZQUNEO2dCQUNJLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDSjtZQUNEO2dCQUNJLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsSUFBSTtnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsdUJBQXVCO2dCQUM1QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN2QyxDQUFDO2FBQ0o7WUFDRDtnQkFDSSxHQUFHLEVBQUUsMEJBQTBCO2dCQUMvQixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksR0FBRyxFQUFFLGNBQWM7Z0JBQ25CLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNmLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzFDLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hDLENBQUM7YUFDSjtTQUNKLENBQUM7SUFoTEMsQ0FBQztJQWxCSixJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBMExELGVBQWU7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFPLEdBQUcsSUFBSTtRQUNqQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7UUFDakYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEgsTUFBTSxTQUFTLEdBQUcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzVHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzVDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVqRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDN0IsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNkLEtBQUssa0JBQWtCO3dCQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLEVBQUUsQ0FBQzt3QkFDeEUsTUFBTTtvQkFDVixLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUM7b0JBQ2xDLEtBQUssZUFBZSxDQUFDLGNBQWM7d0JBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO3dCQUNqQixNQUFNO29CQUNWLEtBQUssZUFBZSxDQUFDLGlCQUFpQixDQUFDO29CQUN2QyxLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7d0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO3dCQUNqQixNQUFNO2lCQUNiO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO2dCQUN6RCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQXFCO2dCQUNuQyxZQUFZLEVBQUU7b0JBQ1YsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUMvQixZQUFZLEVBQUUsQ0FBQyxNQUFrQixFQUFFLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTs0QkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDeEI7d0JBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztvQkFDRCxZQUFZLEVBQUUsQ0FBQyxTQUFxQixFQUFFLE1BQWtCLEVBQUUsRUFBRTt3QkFDeEQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFOzRCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0NBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7NkJBQzVCOzRCQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7eUJBQ2xDO29CQUNMLENBQUM7b0JBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFxQixFQUFFLE1BQWtCLEVBQUUsRUFBRTt3QkFDNUQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt5QkFDekM7d0JBQ0QsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQ0FDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs2QkFDNUI7NEJBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUN0QztvQkFDTCxDQUFDO2lCQUNKO2dCQUNELGNBQWMsRUFBRTtvQkFDWixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUNmLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDYjtnQkFDRCxXQUFXLEVBQUUsS0FBSztnQkFDbEIsU0FBUyxFQUFFLFlBQVk7Z0JBQ3ZCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQ3RFLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsS0FBSztnQkFDckIsZ0JBQWdCLEVBQUUsS0FBSzthQUMxQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztJQUNMLENBQUM7O3dIQWhTUSwwQkFBMEI7NEhBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmLCBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4vY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uL3BsdWdpbnMvdGFibGUvdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBzcGxpdENlbGwgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL3NwbGl0LWNlbGwnO1xuaW1wb3J0IHsgc2V0Q2VsbE1lbnVWaXNpYmlsaXR5IH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5LCBUYWJsZUluc2VydFR5cGUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUNlbGxTcGFuLCBnZXRMZWZ0Q2VsbERpY3QgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL21lcmdlLWNlbGwnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0Q2VsbE5vZGUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3V0aWxzL2dldC1zZWxlY3QtY2VsbC1ub2RlJztcbmltcG9ydCB7IFRoZUNvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb250ZXh0bWVudS9jb250ZXh0bWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kQ29sb3JzLCBDb2xvclR5cGUsIFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IsIFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IHJlZm9jdXMsIHJlU2VsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2Uge1xuICAgIG1lbnVSZWY6IFRoeVBvcG92ZXJSZWY8VGhlQ29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4gICAgZ2V0IGlzT3BlbmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51UmVmICYmIHRoaXMubWVudVJlZi5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVN0b3JlICYmIHRoaXMudGFibGVTdG9yZS5lZGl0b3I7XG4gICAgfVxuXG4gICAgZ2V0IGJhY2tncm91bmRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb2xvclNlbGVjdFNlcnZpY2U6IFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbWVudUVudGl0aWVzOiBNZW51RW50aXR5W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgICAgaWNvbjogJ2JhY2tncm91bmQtdHQnLFxuICAgICAgICAgICAgZGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICfljZXlhYPmoLzog4zmma8nLFxuICAgICAgICAgICAgZXh0ZW5kSWNvbjogJ2FuZ2xlLXJpZ2h0JyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHt9LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuaXNPcGVuQ29sb3JTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hlYWRlciA9IFRhYmxlRWRpdG9yLmlzQWN0aXZlSGVhZGVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS50b2dnbGVDb2xvclNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZENvbG9ycyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyUm93Q29sb3JOdW1iZXJzOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93T3B0aW9uczogeyAxOiAnI2JiYicsIDI6ICcjYmJiJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbENvbG9yOiBpc0hlYWRlciA/IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yIDogU3BlY2lhbEJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAobmV3Q29sb3I6IENvbG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZXdDb2xvciA9PT0gVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IgJiYgaXNIZWFkZXIpIHx8IChuZXdDb2xvciA9PT0gU3BlY2lhbEJhY2tncm91bmRDb2xvciAmJiAhaXNIZWFkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RGaXJzdENlbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0VG9wJyxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVhY3RpdmF0ZUhhbmRsZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvbG9yLXNlbGVjdC1jb250YWluZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yU2VsZWN0U2VydmljZS5pc09wZW5Db2xvclNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS5jbG9zZUNvbG9yU2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtcm93cy10b3AnLFxuICAgICAgICAgICAgbmFtZTogJ+WQkeS4iuaPkuWFpeihjCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgaXNJbnB1dE51bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICfooYwnLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoaXRlbTogTWVudUVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0Um93SW5kZXggfSA9IHRoaXMuZ2V0VGFyZ2V0Um93T3JDb2xJbmRleCgpO1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmluc2VydFJvdyh0aGlzLmVkaXRvciwgaXRlbS5jb3VudCwgdGFyZ2V0Um93SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS51cGRhdGVDZWxsUG9zaXRpb25SZWZzKGl0ZW0uY291bnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jaGFuZ2VDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRSb3dzRG93bixcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtcm93cy1kb3duJyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHkuIvmj5LlhaXooYwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn6KGMJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFJvd0luZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoZmFsc2UpO1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmluc2VydFJvdyh0aGlzLmVkaXRvciwgaXRlbS5jb3VudCwgdGFyZ2V0Um93SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jaGFuZ2VDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zTGVmdCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtY29sdW1ucy1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHlt6bmj5LlhaXliJcnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn5YiXJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldENvbEluZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRDb2x1bW4odGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldENvbEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUudXBkYXRlQ2VsbFBvc2l0aW9uUmVmcygwLCBpdGVtLmNvdW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Q29sdW1uc1JpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLWluc2VydC1jb2x1bW5zLXJpZ2h0JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5Y+z5o+S5YWl5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+WIlycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRDb2xJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRDb2x1bW4odGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldENvbEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdjbGVhci1zZWxlY3Rpb24nLFxuICAgICAgICAgICAgaWNvbjogJ3N3ZWVwJyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5riF56m66YCJ5Lit5Yy65Z+fJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzQ29udGVudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RGaXJzdENlbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLW1lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICflkIjlubbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5tZXJnZUNlbGwodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdzcGxpdC1jZWxscycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ouG5YiG5Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3BsaXRDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZGVsZXRlLXNlbGVjdGlvbi1yb3dzJyxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1kZWxldGUtcm93cycsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6Zmk5omA5Zyo6KGMJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNSb3dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2RlbGV0ZS1zZWxlY3Rpb24tY29sdW1ucycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICAgICAgICAgZGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaTmiYDlnKjliJcnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5yZW1vdmVEYW5nZXJvdXNDb2x1bW5zT3JSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzQ29sdW1ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdkZWxldGUtdGFibGUnLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaTooajmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVRhYmxlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNUYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldFNlbGVjdGVkQ2VsbCgpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscztcbiAgICAgICAgY29uc3Qgc2VsZWN0Q2VsbE5vZGVzID0gZ2V0U2VsZWN0Q2VsbE5vZGUodGhpcy5lZGl0b3IsIGNlbGxzKTtcbiAgICAgICAgY29uc3QgbGVmdENlbGxEaWN0ID0gZ2V0TGVmdENlbGxEaWN0KHNlbGVjdENlbGxOb2Rlcyk7XG4gICAgICAgIGNvbnN0IHsgcm93c3BhbiwgY29sc3BhbiB9ID0gY2FsY3VsYXRlQ2VsbFNwYW4oc2VsZWN0Q2VsbE5vZGVzLCBsZWZ0Q2VsbERpY3QpO1xuXG4gICAgICAgIHJldHVybiB7IHJvdzogcm93c3BhbiwgY29sOiBjb2xzcGFuLCBzZWxlY3RDZWxsTm9kZXMgfTtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRSb3dPckNvbEluZGV4KGlzRnJvbnQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wsIHNlbGVjdENlbGxOb2RlcyB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgY29uc3QgZmlyc3RTZWxlY3RDZWxsID0gc2VsZWN0Q2VsbE5vZGVzWzBdO1xuICAgICAgICBjb25zdCB0YXJnZXRSb3dJbmRleCA9IGlzRnJvbnQgPyBmaXJzdFNlbGVjdENlbGwucm93IDogcm93ICsgZmlyc3RTZWxlY3RDZWxsLnJvdztcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sSW5kZXggPSBpc0Zyb250ID8gZmlyc3RTZWxlY3RDZWxsLmNvbCA6IGNvbCArIGZpcnN0U2VsZWN0Q2VsbC5jb2w7XG5cbiAgICAgICAgcmV0dXJuIHsgdGFyZ2V0Um93SW5kZXgsIHRhcmdldENvbEluZGV4IH07XG4gICAgfVxuXG4gICAgb3Blbk1lbnVMaXN0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkQ2VsbHMsIGlzRnVsbHNjcmVlbiwgc2VsZWN0ZWRSb3dzSW5kZXgsIHNlbGVjdGVkQ29sdW1uc0luZGV4LCBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXMudGFibGVTdG9yZTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxscywgaXNGdWxsc2NyZWVuLCBzZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5zSW5kZXgsIGlzU2VsZWN0ZWRUYWJsZSB9O1xuICAgICAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgICAgIHNldENlbGxNZW51VmlzaWJpbGl0eSh0aGlzLmVkaXRvciwgdGhpcy5tZW51RW50aXRpZXMsIHRhYmxlSW5mbyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVudUVudGl0aWVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kLWNvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZENvbG9yID0gdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd246XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNMZWZ0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zUmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gY29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm1lbnVSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVDb250ZXh0TWVudUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBtZW51RW50aXRpZXM6IHRoaXMubWVudUVudGl0aWVzLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKG1lbnVFdmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmFjdGl2ZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LmFjdGl2ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlSGFuZGxlOiAobWVudUV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkua2V5LmluZGV4T2YoJ2RlbGV0ZScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS5kZWFjdGl2YXRlSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuZGVhY3RpdmF0ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC54ICsgMzAsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VDb250ZXh0TWVudSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZi5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGV4dG1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9zZXJ2aWNlcy90YWJsZS1jb250ZXh0bWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFlbkMsWUFDWSxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUdoRCxpQkFBWSxHQUFpQjtZQUN6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QUFtQixFQUFFLENBQUM7eUJBQ3pDO3dCQUNELElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFOzRCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0NBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7NkJBQzVCOzRCQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDdEM7b0JBQ0wsQ0FBQztpQkFDSjtnQkFDRCxjQUFjLEVBQUU7b0JBQ1osQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDZixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ2I7Z0JBQ0QsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFNBQVMsRUFBRSxZQUFZO2dCQUN2QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCO2dCQUN0RSxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7YUFDMUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDckM7SUFDTCxDQUFDOzt3SEFsU1EsMEJBQTBCOzRIQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiwgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9zcGxpdC1jZWxsJztcbmltcG9ydCB7IHNldENlbGxNZW51VmlzaWJpbGl0eSB9IGZyb20gJy4uL3BsdWdpbnMvdGFibGUvdXRpbHMvc2V0LW1lbnUtY2VsbC1pbnZpc2liaWxpdHknO1xuaW1wb3J0IHsgTWVudUVudGl0eSwgVGFibGVJbnNlcnRUeXBlIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVDZWxsU3BhbiwgZ2V0TGVmdENlbGxEaWN0IH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9tZXJnZS1jZWxsJztcbmltcG9ydCB7IGdldFNlbGVjdENlbGxOb2RlIH0gZnJvbSAnLi4vcGx1Z2lucy90YWJsZS91dGlscy9nZXQtc2VsZWN0LWNlbGwtbm9kZSc7XG5pbXBvcnQgeyBUaGVDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFja2dyb3VuZENvbG9ycywgQ29sb3JUeXBlLCBTcGVjaWFsQmFja2dyb3VuZENvbG9yLCBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyByZWZvY3VzLCByZVNlbGVjdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlIHtcbiAgICBtZW51UmVmOiBUaHlQb3BvdmVyUmVmPFRoZUNvbnRleHRNZW51Q29tcG9uZW50PjtcblxuICAgIGdldCBpc09wZW5lZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZiAmJiB0aGlzLm1lbnVSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZSAmJiB0aGlzLnRhYmxlU3RvcmUuZWRpdG9yO1xuICAgIH1cblxuICAgIGdldCBiYWNrZ3JvdW5kQ29sb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUuZ2V0U2VsZWN0ZWRDZWxsQmFja2dyb3VuZENvbG9yKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29sb3JTZWxlY3RTZXJ2aWNlOiBUaGVDb2xvclNlbGVjdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFibGVTdG9yZTogVGFibGVTdG9yZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZVxuICAgICkge31cblxuICAgIG1lbnVFbnRpdGllczogTWVudUVudGl0eVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICAgIGljb246ICdiYWNrZ3JvdW5kLXR0JyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5Y2V5YWD5qC86IOM5pmvJyxcbiAgICAgICAgICAgIGV4dGVuZEljb246ICdhbmdsZS1yaWdodCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sb3JTZWxlY3RTZXJ2aWNlLmlzT3BlbkNvbG9yU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UudG9nZ2xlQ29sb3JTZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRDb2xvcnMsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlclJvd0NvbG9yTnVtYmVyczogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd09wdGlvbnM6IHsgMTogJyNiYmInLCAyOiAnI2JiYicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxDb2xvcjogaXNIZWFkZXIgPyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciA6IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKG5ld0NvbG9yOiBDb2xvclR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmV3Q29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fCAobmV3Q29sb3IgPT09IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgJiYgIWlzSGVhZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihuZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Rmlyc3RDZWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdyaWdodFRvcCcsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlYWN0aXZhdGVIYW5kbGU6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2xvci1zZWxlY3QtY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuaXNPcGVuQ29sb3JTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuY2xvc2VDb2xvclNlbGVjdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRSb3dzVXAsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LXJvd3MtdG9wJyxcbiAgICAgICAgICAgIG5hbWU6ICflkJHkuIrmj5LlhaXooYwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlzSW5wdXROdW1iZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAn6KGMJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKGl0ZW06IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFJvd0luZGV4IH0gPSB0aGlzLmdldFRhcmdldFJvd09yQ29sSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRSb3codGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUudXBkYXRlQ2VsbFBvc2l0aW9uUmVmcyhpdGVtLmNvdW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd24sXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LXJvd3MtZG93bicsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5LiL5o+S5YWl6KGMJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+ihjCcsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRSb3dJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5pbnNlcnRSb3codGhpcy5lZGl0b3IsIGl0ZW0uY291bnQsIHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2hhbmdlQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Q29sdW1uc0xlZnQsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtaW5zZXJ0LWNvbHVtbnMtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5ZCR5bem5o+S5YWl5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpc0lucHV0TnVtYmVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJ+WIlycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChpdGVtOiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRDb2xJbmRleCB9ID0gdGhpcy5nZXRUYXJnZXRSb3dPckNvbEluZGV4KCk7XG4gICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuaW5zZXJ0Q29sdW1uKHRoaXMuZWRpdG9yLCBpdGVtLmNvdW50LCB0YXJnZXRDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnVwZGF0ZUNlbGxQb3NpdGlvblJlZnMoMCwgaXRlbS5jb3VudCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNoYW5nZUNlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNSaWdodCxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1pbnNlcnQtY29sdW1ucy1yaWdodCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZTogJ+WQkeWPs+aPkuWFpeWIlycsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgaXNJbnB1dE51bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICfliJcnLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoaXRlbTogTWVudUVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0Q29sSW5kZXggfSA9IHRoaXMuZ2V0VGFyZ2V0Um93T3JDb2xJbmRleChmYWxzZSk7XG4gICAgICAgICAgICAgICAgVGFibGVFZGl0b3IuaW5zZXJ0Q29sdW1uKHRoaXMuZWRpdG9yLCBpdGVtLmNvdW50LCB0YXJnZXRDb2xJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNoYW5nZUNlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnY2xlYXItc2VsZWN0aW9uJyxcbiAgICAgICAgICAgIGljb246ICdzd2VlcCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgbmFtZTogJ+a4heepuumAieS4reWMuuWfnycsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Rmlyc3RDZWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ21lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ZCI5bm25Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUubWVyZ2VDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc3BsaXQtY2VsbHMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLXVubWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+aLhuWIhuWNleWFg+agvCcsXG4gICAgICAgICAgICBkaXZpZGVyOiB0cnVlLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2RlbGV0ZS1zZWxlY3Rpb24tcm93cycsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtZGVsZXRlLXJvd3MnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpOaJgOWcqOihjCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnJlbW92ZURhbmdlcm91c0NvbHVtbnNPclJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzUm93cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdkZWxldGUtc2VsZWN0aW9uLWNvbHVtbnMnLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLWRlbGV0ZS1jb2x1bW5zJyxcbiAgICAgICAgICAgIGRpdmlkZXI6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6Zmk5omA5Zyo5YiXJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucmVtb3ZlRGFuZ2Vyb3VzQ29sdW1uc09yUm93cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNDb2x1bW5zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2RlbGV0ZS10YWJsZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpOihqOagvCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgVGFibGVFZGl0b3IucmVtb3ZlVGFibGUodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNUYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldFNlbGVjdGVkQ2VsbCgpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscztcbiAgICAgICAgY29uc3Qgc2VsZWN0Q2VsbE5vZGVzID0gZ2V0U2VsZWN0Q2VsbE5vZGUodGhpcy5lZGl0b3IsIGNlbGxzKTtcbiAgICAgICAgY29uc3QgbGVmdENlbGxEaWN0ID0gZ2V0TGVmdENlbGxEaWN0KHNlbGVjdENlbGxOb2Rlcyk7XG4gICAgICAgIGNvbnN0IHsgcm93c3BhbiwgY29sc3BhbiB9ID0gY2FsY3VsYXRlQ2VsbFNwYW4oc2VsZWN0Q2VsbE5vZGVzLCBsZWZ0Q2VsbERpY3QpO1xuXG4gICAgICAgIHJldHVybiB7IHJvdzogcm93c3BhbiwgY29sOiBjb2xzcGFuLCBzZWxlY3RDZWxsTm9kZXMgfTtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRSb3dPckNvbEluZGV4KGlzRnJvbnQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wsIHNlbGVjdENlbGxOb2RlcyB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgY29uc3QgZmlyc3RTZWxlY3RDZWxsID0gc2VsZWN0Q2VsbE5vZGVzWzBdO1xuICAgICAgICBjb25zdCB0YXJnZXRSb3dJbmRleCA9IGlzRnJvbnQgPyBmaXJzdFNlbGVjdENlbGwucm93IDogcm93ICsgZmlyc3RTZWxlY3RDZWxsLnJvdztcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sSW5kZXggPSBpc0Zyb250ID8gZmlyc3RTZWxlY3RDZWxsLmNvbCA6IGNvbCArIGZpcnN0U2VsZWN0Q2VsbC5jb2w7XG5cbiAgICAgICAgcmV0dXJuIHsgdGFyZ2V0Um93SW5kZXgsIHRhcmdldENvbEluZGV4IH07XG4gICAgfVxuXG4gICAgb3Blbk1lbnVMaXN0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkQ2VsbHMsIGlzRnVsbHNjcmVlbiwgc2VsZWN0ZWRSb3dzSW5kZXgsIHNlbGVjdGVkQ29sdW1uc0luZGV4LCBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXMudGFibGVTdG9yZTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxscywgaXNGdWxsc2NyZWVuLCBzZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5zSW5kZXgsIGlzU2VsZWN0ZWRUYWJsZSB9O1xuICAgICAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gdGhpcy5nZXRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgICAgIHNldENlbGxNZW51VmlzaWJpbGl0eSh0aGlzLmVkaXRvciwgdGhpcy5tZW51RW50aXRpZXMsIHRhYmxlSW5mbyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVudUVudGl0aWVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kLWNvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZENvbG9yID0gdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbEJhY2tncm91bmRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydFJvd3NVcDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJsZUluc2VydFR5cGUuaW5zZXJ0Um93c0Rvd246XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVGFibGVJbnNlcnRUeXBlLmluc2VydENvbHVtbnNMZWZ0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYmxlSW5zZXJ0VHlwZS5pbnNlcnRDb2x1bW5zUmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvdW50ID0gY29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm1lbnVSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVDb250ZXh0TWVudUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBtZW51RW50aXRpZXM6IHRoaXMubWVudUVudGl0aWVzLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25IYW5kbGU6IChlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuYWN0aW9uSGFuZGxlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUhhbmRsZTogKG1lbnVFdmVudDogTW91c2VFdmVudCwgZW50aXR5OiBNZW51RW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmFjdGl2ZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LmFjdGl2ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlSGFuZGxlOiAobWVudUV2ZW50OiBNb3VzZUV2ZW50LCBlbnRpdHk6IE1lbnVFbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkua2V5LmluZGV4T2YoJ2RlbGV0ZScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS5kZWFjdGl2YXRlSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuZGVhY3RpdmF0ZUhhbmRsZShtZW51RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcmlnaW5Qb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC54ICsgMzAsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VDb250ZXh0TWVudSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudVJlZi5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19