@magic-xpa/gui 4.1100.0-dev4110.253 → 4.1100.0-dev4110.256

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.
Files changed (47) hide show
  1. package/esm2022/src/Commands.mjs +1 -1
  2. package/esm2022/src/Events.mjs +1 -1
  3. package/esm2022/src/EventsProcessor.mjs +1 -1
  4. package/esm2022/src/FocusManager.mjs +1 -1
  5. package/esm2022/src/Manager.mjs +1 -1
  6. package/esm2022/src/UIBridge.mjs +1 -1
  7. package/esm2022/src/gui/GuiMgControl.mjs +1 -1
  8. package/esm2022/src/gui/KeyboardItem.mjs +1 -1
  9. package/esm2022/src/gui/low/GuiCommand.mjs +1 -1
  10. package/esm2022/src/gui/low/GuiCommandQueue.mjs +1 -1
  11. package/esm2022/src/gui/low/GuiInteractive.mjs +1 -1
  12. package/esm2022/src/management/RuntimeContextBase.mjs +1 -1
  13. package/esm2022/src/management/data/BlobType.mjs +1 -1
  14. package/esm2022/src/management/data/DcValues.mjs +1 -1
  15. package/esm2022/src/management/data/DcValuesBuilderBase.mjs +1 -1
  16. package/esm2022/src/management/data/FieldDef.mjs +1 -1
  17. package/esm2022/src/management/data/FieldsTable.mjs +1 -1
  18. package/esm2022/src/management/data/GuiDataViewBase.mjs +1 -1
  19. package/esm2022/src/management/data/GuiFieldBase.mjs +1 -1
  20. package/esm2022/src/management/data/NUM_TYPE.mjs +1 -1
  21. package/esm2022/src/management/data/ObjectReferenceBase.mjs +1 -1
  22. package/esm2022/src/management/data/ObjectReferencesCollection.mjs +1 -1
  23. package/esm2022/src/management/data/RecordUtils.mjs +1 -1
  24. package/esm2022/src/management/data/VectorType.mjs +1 -1
  25. package/esm2022/src/management/data/VectorTypeBase.mjs +1 -1
  26. package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +1 -1
  27. package/esm2022/src/management/gui/ControlTable.mjs +1 -1
  28. package/esm2022/src/management/gui/DisplayConvertor.mjs +1 -1
  29. package/esm2022/src/management/gui/FieldValidator.mjs +1 -1
  30. package/esm2022/src/management/gui/HebrewDate.mjs +1 -1
  31. package/esm2022/src/management/gui/Helps.mjs +1 -1
  32. package/esm2022/src/management/gui/MgControlBase.mjs +1 -1
  33. package/esm2022/src/management/gui/MgFormBase.mjs +1 -1
  34. package/esm2022/src/management/gui/PIC.mjs +1 -1
  35. package/esm2022/src/management/gui/PropDefaults.mjs +1 -1
  36. package/esm2022/src/management/gui/PropTable.mjs +1 -1
  37. package/esm2022/src/management/gui/Property.mjs +1 -1
  38. package/esm2022/src/management/gui/ValidationDetails.mjs +1 -1
  39. package/esm2022/src/management/gui/ValidationDetailsBase.mjs +1 -1
  40. package/esm2022/src/management/gui/WrongFormatException.mjs +1 -1
  41. package/esm2022/src/management/tasks/GuiTaskBase.mjs +1 -1
  42. package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +1 -1
  43. package/esm2022/src/util/MemoryUtil.mjs +1 -1
  44. package/esm2022/src/util/ObjectReference.mjs +1 -1
  45. package/esm2022/src/util/UsernamePasswordCredentials.mjs +1 -1
  46. package/fesm2022/magic-xpa-gui.mjs.map +1 -1
  47. package/package.json +2 -2
@@ -245,4 +245,4 @@ export class ValidationDetails extends ValidationDetailsBase {
245
245
  return clone;
246
246
  }
247
247
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBS2xELFFBQVEsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLGVBQWUsR0FBbUIsSUFBSSxDQUFDO0lBQ3ZDLFFBQVEsR0FBUSxJQUFJLENBQUM7SUFDckIsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDckMsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFDbkMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQVcsSUFBSSxDQUFDO0lBQ3pCLElBQUksR0FBUSxJQUFJLENBQUM7SUFDakIsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBRW5DLFVBQVUsR0FBVyxJQUFJLENBQUM7SUFFbEMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNo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QUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUdELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUdELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFNTyx3QkFBd0I7UUFDOUIsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yfSBmcm9tIFwiLi9GaWVsZFZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgUElDSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2UgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRGV0YWlsc0Jhc2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRldGFpbHMgZXh0ZW5kcyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2Uge1xyXG5cclxuICAvLyBBVFRFTlRJT04gISEhIHdoZW4geW91IGFkZC9tb2RpZnkvZGVsZXRlIGEgbWVtYmVyIHZhcmlhYmxlIGRvbid0IGZvcmdldCB0byB0YWtlIGNhcmVcclxuICAvLyBhYm91dCB0aGUgY29weSBjb25zdHJ1Y3RvcjogVmFsaWRhdGlvbkRldGFpbHMoVmFsaWRhdGlvbkRldGFpbHMgdmQpXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsaWRhdG9yOiBGaWVsZFZhbGlkYXRvciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljRGF0YTogUElDID0gbnVsbDtcclxuICBwcml2YXRlIF9waWN0dXJlRW5hYmxlOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5LCBTdHJpbmcgb2YgMSdzIC0+IHBvc3NpYmxlIHRvIHdyaXRlIDsgMCdzIC0+IGltcG9zc2libGUgdG8gd3JpdGUgOyBmb3IgJ1xcJyB1c2luZ1xyXG4gIHByaXZhdGUgX3BpY3R1cmVSZWFsOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5XHJcbiAgcHJpdmF0ZSBfaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfb2xkdmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDsgIC8vIG5ldyB2YWx1ZSwgaW5zZXJ0ZWQgaW50byBjb250cm9sXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVyck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVyck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgRXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVyck1lc3NhZ2UgPSBtc2c7XHJcbiAgfVxyXG5cclxuICBnZXQgVmFsaWRhdGlvbkZhaWxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRmFpbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnN0cnVjdG9yLCB3aGljaCBzZXRzIGFsbCBtZW1iZXIgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk7XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkPzogYW55LCB2YWw/OiBzdHJpbmcsIHJhbmdlPzogc3RyaW5nLCBwaWM/OiBQSUMsIGNvbnRyb2w/OiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcblxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkLCB2YWwsIHJhbmdlLCBwaWMsIGNvbnRyb2wpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZCBpbnN0YW5jZW9mIFZhbGlkYXRpb25EZXRhaWxzKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKG9sZHZhbHVlOiBhbnksIHZhbDogYW55LCByYW5nZTogc3RyaW5nLCBwaWM6IFBJQywgY29udHJvbDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljRGF0YSA9IHBpYztcclxuICAgIHRoaXMuX29sZHZhbHVlID0gb2xkdmFsdWU7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDsgLy8gbmV3ICBpbnNlcnRlZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcclxuXHJcbiAgICBzd2l0Y2ggKHBpYy5nZXRBdHRyKCkpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVFbmFibGUgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2UgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3JhbmdlID0gXCJUcnVlLEZhbHNlXCI7IC8vIGRlZmF1bHQgcmFuZ2UgdmFsdWUgZm9yIExvZ2ljYWxcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlZhbGlkYXRpb25EZXRhaWxzLlZhbGlkYXRpb25EZXRhaWxzOiBUaGVyZSBpcyBubyB0eXBlIFwiICtcclxuICAgICAgICAgIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGdldCBSYW5nZSBmb3IgdGhlIHBpY3R1cmU6XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT0gbnVsbClcclxuICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuXHJcbiAgICAvLyBmcmVlIG1lbW9yeVxyXG4gICAgcmFuZ2UgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnN0cnVjdG9yIGZvciByYW5nZSBvbmx5LCBtYWtlIHBhcnNpbmcgb2YgIFJhbmdlIGFuZCBmaWxsXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgKHVzZWQgaW4gRGlzcGxheUNvbnZlbnRvcilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmFuZ2VcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShyYW5nZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2VTdHI7XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBjb3B5IG9mIHZhbGlkYXRpb24gZGV0YWlscyxcclxuICAvLy8gICBjb3B5IGNvbnN0cnVjdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX29sZHZhbHVlID0gdmQuZ2V0T2xkVmFsdWUoKTtcclxuICAgIHRoaXMuX3ZhbCA9IHZkLl92YWw7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHZkLmdldFJhbmdlKCk7XHJcbiAgICB0aGlzLl9jb250cm9sID0gdmQuZ2V0Q29udHJvbCgpO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZkLl9waWN0dXJlUmVhbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlUmVhbCA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5fcGljdHVyZUVuYWJsZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodmQuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0RGlzY3JldGVSYW5nZVZhbHVlcygpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5nZXRDb250aW51b3VzUmFuZ2VWYWx1ZXMoKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9IHZkLkNsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9waWNEYXRhID0gdmQuZ2V0UElDKCk7XHJcbiAgICB0aGlzLl9pc051bGwgPSB2ZC5nZXRJc051bGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpZWxkVmFsaWRhdG9yID0gbmV3IEZpZWxkVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgKioqKioqKioqKioqKioqKioqKioqKipOdW1lcmljKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk6IHZvaWQge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3BpY0RhdGEuZ2V0TWFzaygpO1xyXG4gICAgbGV0IGRlY186IG51bWJlciA9IHRoaXMuX3BpY0RhdGEuZ2V0RGVjKCk7XHJcbiAgICBsZXQgd2hvbGVfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldFdob2xlcygpO1xyXG4gICAgbGV0IGRlY2ltYWxfOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS53aXRoRGVjaW1hbCgpO1xyXG4gICAgbGV0IGRlY19wbnRfaW5fZmlyc3Q6IGJvb2xlYW4gPSB0aGlzLl9waWNEYXRhLmRlY0luRmlyc3RQb3MoKTtcclxuICAgIGxldCBpc05lZ2F0aXZlOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5pc05lZ2F0aXZlKCk7XHJcbiAgICBsZXQgaXNGaXJzdFBpY19OOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBpc1BvaW50SW5zZXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VyckNoYXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICBjdXJyQ2hhciA9ICttYXNrLmNoYXJBdChpKTsgLy8gaXQncyBBU0NJSSBvZiB0aGUgY2hhclxyXG5cclxuICAgICAgc3dpdGNoIChjdXJyQ2hhcikge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgaWYgKGlzRmlyc3RQaWNfTikge1xyXG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSlcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCctJywgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNfcG50X2luX2ZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNGaXJzdFBpY19OID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkZWNpbWFsXykge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlXyA9PT0gMCAmJiAhaXNQb2ludEluc2VydGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkZWNfID4gMCkge1xyXG4gICAgICAgICAgICAgIGRlY18tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OiAvLyBjb25zdCBzdHJpbmcgaW4gQWxwaGFcclxuICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoY3VyckNoYXIudG9TdHJpbmcoKSwgJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGNoYXJzIHRvIFJlYWwgYW5kIEVuYWJsZSBTdHJpbmcgQnVmZmVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWFsXCI+dG8gUmVhbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJFbmFibGVcIj50byBFbmFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0UGljdHVyZXMoUmVhbDogc3RyaW5nLCBFbmFibGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljdHVyZUVuYWJsZS5BcHBlbmQoRW5hYmxlKTtcclxuICAgIHRoaXMuX3BpY3R1cmVSZWFsLkFwcGVuZChSZWFsKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzZXRPbGRWYWx1ZShvbGR2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmFuZ2UocmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIFwidmFsaWRhdGlvbiBmYWlsZWRcIiBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRWYWxpZGF0aW9uRmFpbGVkKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgaXNOdWxsIGZsYWcgb2YgdGhlIFZhbERldGFpbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE51bGwoaXNOdWxsXzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNOdWxsID0gaXNOdWxsXztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWxpZCBkaXNwbGF5IHZhbHVlICh3aXRoIG1hc2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXREaXNwVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICBsZXQgbWluaW11bVZhbHVlTGVuZ3RoOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldE1pbmltdW1WYWx1ZUxlbmd0aCgpO1xyXG5cclxuICAgICAgLy8gUlRyaW0gdGhlIHZhbHVlIGJleW9uZCB0aGlzIGluZGV4XHJcbiAgICAgIGlmICh0aGlzLl92YWwubGVuZ3RoID4gbWluaW11bVZhbHVlTGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1pbmltdW1WYWx1ZUxlbmd0aCA+IDAgfHwgU3RyVXRpbC5ydHJpbSh0aGlzLl92YWwpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHI6IHN0cmluZyA9IHRoaXMuX3ZhbC5zdWJzdHIobWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC5zdWJzdHIoMCwgbWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbCArIFN0clV0aWwucnRyaW0oc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fY29udHJvbCAhPSBudWxsICYmIHRoaXMuX2NvbnRyb2wuaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fdmFsLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2xkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRBdHRyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlUmVhbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVSZWFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlRW5hYmxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljdHVyZUVuYWJsZS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc05lZ2F0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc1BhZEZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5wYWRGaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpY1xyXG4gIGdldFBhZEZpbGxDaGFyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRQYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljLCBEYXRlLCBUaW1lXHJcbiAgZ2V0SXNaZXJvRmlsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLnplcm9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldFplcm9GaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0WmVyb1BhZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXROZWdhdGl2ZVNpZ25QcmVmKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXROZWdQcmVmXygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldFBJQygpOiBQSUMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRJc051bGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNOdWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoKTogVmFsaWRhdGlvbkRldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsaWRhdG9yLmNoZWNrVmFsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIENsb25lRGlzY3JldGVSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLkdldEVudW1lcmF0b3IoKSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICBsZXQgY2xvbmU6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGNsb25lLkFkZFJhbmdlKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBS2xELFFBQVEsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLGVBQWUsR0FBbUIsSUFBSSxDQUFDO0lBQ3ZDLFFBQVEsR0FBUSxJQUFJLENBQUM7SUFDckIsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDckMsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFDbkMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQVcsSUFBSSxDQUFDO0lBQ3pCLElBQUksR0FBUSxJQUFJLENBQUM7SUFDakIsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBRW5DLFVBQVUsR0FBVyxJQUFJLENBQUM7SUFFbEMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNo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QUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBTU8sd0JBQXdCO1FBQzlCLElBQUksS0FBSyxHQUFpQixJQUFJLElBQUksRUFBVSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksS0FBSyxHQUFpQixJQUFJLElBQUksRUFBVSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuL01nQ29udHJvbEJhc2VcIjtcclxuaW1wb3J0IHtGaWVsZFZhbGlkYXRvcn0gZnJvbSBcIi4vRmllbGRWYWxpZGF0b3JcIjtcclxuaW1wb3J0IHtQSUN9IGZyb20gXCIuL1BJQ1wiO1xyXG5pbXBvcnQge1N0cmluZ0J1aWxkZXIsIExpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGUsIFN0clV0aWwsIFBJQ0ludGVyZmFjZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuLi8uLi9FdmVudHNcIjtcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkRldGFpbHNCYXNlIH0gZnJvbSBcIi4vVmFsaWRhdGlvbkRldGFpbHNCYXNlXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzIGV4dGVuZHMgVmFsaWRhdGlvbkRldGFpbHNCYXNlIHtcclxuXHJcbiAgLy8gQVRURU5USU9OICEhISB3aGVuIHlvdSBhZGQvbW9kaWZ5L2RlbGV0ZSBhIG1lbWJlciB2YXJpYWJsZSBkb24ndCBmb3JnZXQgdG8gdGFrZSBjYXJlXHJcbiAgLy8gYWJvdXQgdGhlIGNvcHkgY29uc3RydWN0b3I6IFZhbGlkYXRpb25EZXRhaWxzKFZhbGlkYXRpb25EZXRhaWxzIHZkKVxyXG5cclxuICBwcml2YXRlIF9jb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIF9maWVsZFZhbGlkYXRvcjogRmllbGRWYWxpZGF0b3IgPSBudWxsO1xyXG4gIHByaXZhdGUgX3BpY0RhdGE6IFBJQyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljdHVyZUVuYWJsZTogU3RyaW5nQnVpbGRlciA9IG51bGw7IC8vIGZvciBpbm5lciAob2YgTnVtZXJpYyB0eXBlKSB1c2Ugb25seSwgU3RyaW5nIG9mIDEncyAtPiBwb3NzaWJsZSB0byB3cml0ZSA7IDAncyAtPiBpbXBvc3NpYmxlIHRvIHdyaXRlIDsgZm9yICdcXCcgdXNpbmdcclxuICBwcml2YXRlIF9waWN0dXJlUmVhbDogU3RyaW5nQnVpbGRlciA9IG51bGw7IC8vIGZvciBpbm5lciAob2YgTnVtZXJpYyB0eXBlKSB1c2Ugb25seVxyXG4gIHByaXZhdGUgX2lzTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX29sZHZhbHVlOiBzdHJpbmcgPSBudWxsOyAvLyBvbGQgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICBwcml2YXRlIF92YWw6IGFueSA9IG51bGw7ICAvLyBuZXcgdmFsdWUsIGluc2VydGVkIGludG8gY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25GYWlsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBlcnJNZXNzYWdlOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBnZXQgRXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lcnJNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgc2V0IEVycm9yTWVzc2FnZShtc2c6IHN0cmluZykge1xyXG4gICAgdGhpcy5lcnJNZXNzYWdlID0gbXNnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IFZhbGlkYXRpb25GYWlsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbkZhaWxlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDb25zdHJ1Y3Rvciwgd2hpY2ggc2V0cyBhbGwgbWVtYmVyIHZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3Iob2xkdmFsdWU6IGFueSwgdmFsOiBhbnksIHJhbmdlOiBzdHJpbmcsIHBpYzogUElDLCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKTtcclxuICBjb25zdHJ1Y3Rvcih2ZDogVmFsaWRhdGlvbkRldGFpbHMpO1xyXG4gIGNvbnN0cnVjdG9yKCk7XHJcbiAgY29uc3RydWN0b3Iob2xkdmFsdWVPclJhbmdlU3RyT3JWZD86IGFueSwgdmFsPzogc3RyaW5nLCByYW5nZT86IHN0cmluZywgcGljPzogUElDLCBjb250cm9sPzogTWdDb250cm9sQmFzZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMygpO1xyXG5cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA1KVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAob2xkdmFsdWVPclJhbmdlU3RyT3JWZCwgdmFsLCByYW5nZSwgcGljLCBjb250cm9sKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkID09PSBudWxsIHx8IG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQuY29uc3RydWN0b3IgPT09IFN0cmluZykpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMShvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkID09PSBudWxsIHx8IG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRGV0YWlscykpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMChvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BpY0RhdGEgPSBwaWM7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlOyAvLyBvbGQgdmFsdWUgb2YgdGhlIGZpZWxkXHJcbiAgICB0aGlzLl92YWwgPSB2YWw7IC8vIG5ldyAgaW5zZXJ0ZWQgdmFsdWUgb2YgdGhlIGZpZWxkXHJcbiAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xyXG4gICAgdGhpcy5fY29udHJvbCA9IGNvbnRyb2w7XHJcblxyXG4gICAgc3dpdGNoIChwaWMuZ2V0QXR0cigpKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVSZWFsID0gbmV3IFN0cmluZ0J1aWxkZXIodGhpcy5fcGljRGF0YS5nZXRNYXNrU2l6ZSgpKTtcclxuICAgICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodGhpcy5fcGljRGF0YS5nZXRNYXNrU2l6ZSgpKTtcclxuICAgICAgICB0aGlzLmdldFJlYWxOdW1lcmljUGljdHVyZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgaWYgKHRoaXMuX3JhbmdlID09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl9yYW5nZSA9IFwiVHJ1ZSxGYWxzZVwiOyAvLyBkZWZhdWx0IHJhbmdlIHZhbHVlIGZvciBMb2dpY2FsXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coXCJWYWxpZGF0aW9uRGV0YWlscy5WYWxpZGF0aW9uRGV0YWlsczogVGhlcmUgaXMgbm8gdHlwZSBcIiArXHJcbiAgICAgICAgICB0aGlzLl9waWNEYXRhLmdldEF0dHIoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICAvLyBnZXQgUmFuZ2UgZm9yIHRoZSBwaWN0dXJlOlxyXG4gICAgaWYgKHRoaXMuX3JhbmdlICE9IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcblxyXG4gICAgLy8gZnJlZSBtZW1vcnlcclxuICAgIHJhbmdlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb25zdHJ1Y3RvciBmb3IgcmFuZ2Ugb25seSwgbWFrZSBwYXJzaW5nIG9mICBSYW5nZSBhbmQgZmlsbFxyXG4gIC8vLyAgIERpc2NyZXRlUmFuZ2VWYWx1ZXMgYW5kIENvbnRpbnVvdXNSYW5nZVZhbHVlc1xyXG4gIC8vLyAgICh1c2VkIGluIERpc3BsYXlDb252ZW50b3IpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJhbmdlXCI+c3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEocmFuZ2VTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgaWYgKHRoaXMuX3JhbmdlICE9PSBudWxsKVxyXG4gICAgICB0aGlzLmZpbGxSYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1ha2UgY29weSBvZiB2YWxpZGF0aW9uIGRldGFpbHMsXHJcbiAgLy8vICAgY29weSBjb25zdHJ1Y3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IHZkLmdldE9sZFZhbHVlKCk7XHJcbiAgICB0aGlzLl92YWwgPSB2ZC5fdmFsO1xyXG4gICAgdGhpcy5fcmFuZ2UgPSB2ZC5nZXRSYW5nZSgpO1xyXG4gICAgdGhpcy5fY29udHJvbCA9IHZkLmdldENvbnRyb2woKTtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcclxuICAgIGlmICh2ZC5fcGljdHVyZVJlYWwgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih2ZC5fcGljdHVyZVJlYWwuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuX3BpY3R1cmVFbmFibGUgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fcGljdHVyZUVuYWJsZSA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlRW5hYmxlLlRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZkLmdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gdmQuQ2xvbmVEaXNjcmV0ZVJhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCkgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZUNvbnRpbnVvdXNSYW5nZVZhbHVlcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGljRGF0YSA9IHZkLmdldFBJQygpO1xyXG4gICAgdGhpcy5faXNOdWxsID0gdmQuZ2V0SXNOdWxsKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWVsZFZhbGlkYXRvciA9IG5ldyBGaWVsZFZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgICoqKioqKioqKioqKioqKioqKioqKioqTnVtZXJpYyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldFJlYWxOdW1lcmljUGljdHVyZSgpOiB2b2lkIHtcclxuICAgIGxldCBtYXNrOiBzdHJpbmcgPSB0aGlzLl9waWNEYXRhLmdldE1hc2soKTtcclxuICAgIGxldCBkZWNfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldERlYygpO1xyXG4gICAgbGV0IHdob2xlXzogbnVtYmVyID0gdGhpcy5fcGljRGF0YS5nZXRXaG9sZXMoKTtcclxuICAgIGxldCBkZWNpbWFsXzogYm9vbGVhbiA9IHRoaXMuX3BpY0RhdGEud2l0aERlY2ltYWwoKTtcclxuICAgIGxldCBkZWNfcG50X2luX2ZpcnN0OiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5kZWNJbkZpcnN0UG9zKCk7XHJcbiAgICBsZXQgaXNOZWdhdGl2ZTogYm9vbGVhbiA9IHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gICAgbGV0IGlzRmlyc3RQaWNfTjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgaXNQb2ludEluc2VydGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IGN1cnJDaGFyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcGljRGF0YS5nZXRNYXNrU2l6ZSgpOyBpID0gaSArIDEpIHtcclxuICAgICAgY3VyckNoYXIgPSArbWFzay5jaGFyQXQoaSk7IC8vIGl0J3MgQVNDSUkgb2YgdGhlIGNoYXJcclxuXHJcbiAgICAgIHN3aXRjaCAoY3VyckNoYXIpIHtcclxuICAgICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfTjpcclxuICAgICAgICAgIGlmIChpc0ZpcnN0UGljX04pIHtcclxuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLScsICcwJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGVjX3BudF9pbl9maXJzdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJy4nLCAnMScpO1xyXG4gICAgICAgICAgICAgIGlzUG9pbnRJbnNlcnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlzRmlyc3RQaWNfTiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoZGVjaW1hbF8pIHtcclxuICAgICAgICAgICAgaWYgKHdob2xlXyA+IDApIHtcclxuICAgICAgICAgICAgICB3aG9sZV8tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPT09IDAgJiYgIWlzUG9pbnRJbnNlcnRlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJy4nLCAnMScpO1xyXG4gICAgICAgICAgICAgIGlzUG9pbnRJbnNlcnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGVjXyA+IDApIHtcclxuICAgICAgICAgICAgICBkZWNfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDogLy8gY29uc3Qgc3RyaW5nIGluIEFscGhhXHJcbiAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKGN1cnJDaGFyLnRvU3RyaW5nKCksICcxJyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fcGljdHVyZVJlYWwuVG9TdHJpbmcoKSk7XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlRW5hYmxlLlRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBjaGFycyB0byBSZWFsIGFuZCBFbmFibGUgU3RyaW5nIEJ1ZmZlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVhbFwiPnRvIFJlYWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiRW5hYmxlXCI+dG8gRW5hYmxlPC9wYXJhbT5cclxuICBwcml2YXRlIHNldFBpY3R1cmVzKFJlYWw6IHN0cmluZywgRW5hYmxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BpY3R1cmVFbmFibGUuQXBwZW5kKEVuYWJsZSk7XHJcbiAgICB0aGlzLl9waWN0dXJlUmVhbC5BcHBlbmQoUmVhbCk7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgc2V0T2xkVmFsdWUob2xkdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb2xkdmFsdWUgPSBvbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldFJhbmdlKHJhbmdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBcInZhbGlkYXRpb24gZmFpbGVkXCIgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VmFsaWRhdGlvbkZhaWxlZCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb25GYWlsZWQgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGlzTnVsbCBmbGFnIG9mIHRoZSBWYWxEZXRhaWxzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXROdWxsKGlzTnVsbF86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzTnVsbCA9IGlzTnVsbF87XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmFsaWQgZGlzcGxheSB2YWx1ZSAod2l0aCBtYXNrKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RGlzcFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgbGV0IG1pbmltdW1WYWx1ZUxlbmd0aDogbnVtYmVyID0gdGhpcy5fcGljRGF0YS5nZXRNaW5pbXVtVmFsdWVMZW5ndGgoKTtcclxuXHJcbiAgICAgIC8vIFJUcmltIHRoZSB2YWx1ZSBiZXlvbmQgdGhpcyBpbmRleFxyXG4gICAgICBpZiAodGhpcy5fdmFsLmxlbmd0aCA+IG1pbmltdW1WYWx1ZUxlbmd0aCkge1xyXG4gICAgICAgIGlmIChtaW5pbXVtVmFsdWVMZW5ndGggPiAwIHx8IFN0clV0aWwucnRyaW0odGhpcy5fdmFsKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBsZXQgc3RyOiBzdHJpbmcgPSB0aGlzLl92YWwuc3Vic3RyKG1pbmltdW1WYWx1ZUxlbmd0aCk7XHJcbiAgICAgICAgICB0aGlzLl92YWwgPSB0aGlzLl92YWwuc3Vic3RyKDAsIG1pbmltdW1WYWx1ZUxlbmd0aCk7XHJcbiAgICAgICAgICB0aGlzLl92YWwgPSB0aGlzLl92YWwgKyBTdHJVdGlsLnJ0cmltKHN0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX2NvbnRyb2wgIT0gbnVsbCAmJiB0aGlzLl9jb250cm9sLmlzQ2hvaWNlQ29udHJvbCgpKVxyXG4gICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbDtcclxuICB9XHJcblxyXG4gIGdldE9sZFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fb2xkdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IFN0b3JhZ2VBdHRyaWJ1dGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGljdHVyZVJlYWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGljdHVyZUVuYWJsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljXHJcbiAgZ2V0SXNOZWdhdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLmlzTmVnYXRpdmUoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljXHJcbiAgZ2V0SXNQYWRGaWxsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEucGFkRmlsbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRQYWRGaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0UGFkKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldElzWmVyb0ZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS56ZXJvRmlsbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWMsIERhdGUsIFRpbWVcclxuICBnZXRaZXJvRmlsbENoYXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLmdldFplcm9QYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljXHJcbiAgZ2V0TmVnYXRpdmVTaWduUHJlZigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0TmVnUHJlZl8oKTtcclxuICB9XHJcblxyXG4gIGdldFJhbmdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRQSUMoKTogUElDIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNOdWxsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlKCk6IFZhbGlkYXRpb25EZXRhaWxzIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbGlkYXRvci5jaGVja1ZhbCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBDbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIGxldCBjbG9uZTogTGlzdDxzdHJpbmc+ID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgY2xvbmUuQWRkUmFuZ2UodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBDbG9uZUNvbnRpbnVvdXNSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMuR2V0RW51bWVyYXRvcigpKTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcbn1cclxuIl19
@@ -90,4 +90,4 @@ export class ValidationDetailsBase {
90
90
  return this._continuousRangeValues;
91
91
  }
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFFdEIsc0JBQXNCLEdBQWlCLElBQUksQ0FBQztJQUM1QyxvQkFBb0IsR0FBaUIsSUFBSSxDQUFDO0lBQzFDLE1BQU0sR0FBVyxJQUFJLENBQUM7SUFJaEMsWUFBWSxRQUFpQjtRQUMzQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUk7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQVFTLFNBQVM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBUTtRQUUxRSxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUks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QUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7O2dCQUVDLE1BQU07UUFDVixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0Qsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFFdEIsc0JBQXNCLEdBQWlCLElBQUksQ0FBQztJQUM1QyxvQkFBb0IsR0FBaUIsSUFBSSxDQUFDO0lBQzFDLE1BQU0sR0FBVyxJQUFJLENBQUM7SUFJaEMsWUFBWSxRQUFpQjtRQUMzQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBUVMsU0FBUztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFRO1FBRTFFLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUks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SUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -26,4 +26,4 @@ export class WrongFormatException extends Exception {
26
26
  return this._type;
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JvbmdGb3JtYXRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1dyb25nRm9ybWF0RXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFTOUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFHekMsS0FBSyxHQUFXLElBQUksQ0FBQztJQUc3QixZQUFZLElBQWE7UUFFdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRVosSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBS08sYUFBYTtRQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFLTyxhQUFhLENBQUMsSUFBWTtRQUNoQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFeGNlcHRpb259IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge01zZ0ludGVyZmFjZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT4gdGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biB3aGVuZXZlciB0aGUgVXNlciBpbnNlcnRlZCBpbnB1dFxyXG4vLy8gdG8gZmllbGQgd2hpY2ggY2FuIG5vdCBiZSBpbml0aWFsaXplZCBieSBtYXNrL2Zvcm1hdCwgc29cclxuLy8vIGFmdGVyIGNhdGNoaW5nIHRoZSBleGNlcHRpb24gaXQgbmVlZHM6XHJcbi8vLyBzZXQgZm9jdXMgYmFjayB0byB0aGUgZmllbGRcclxuLy8vIHJldHVybiB0byB0aGUgZmllbGQgb2xkIHZhbHVlXHJcbi8vLyB3cml0ZSBpbiB0aGUgc3RhdHVzIGJhciByZWxldmFudCBtZXNzYWdlXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBXcm9uZ0Zvcm1hdEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7XHJcblxyXG4gIC8vIHR5cGUgb2YgdGhlIGZpZWxkIHByb2R1Y2VkIHRoZSBleGNlcHRpb25cclxuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IodHlwZT86IHN0cmluZykge1xyXG5cclxuICAgIHN1cGVyKHR5cGUpO1xyXG5cclxuICAgIHRoaXMubmFtZSA9IFwiV3JvbmdGb3JtYXRFeGNlcHRpb25cIjtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcblxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uc3RydWN0b3JfMSh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpIHtcclxuICAgIHRoaXMuX3R5cGUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmNvbnN0cnVjdG9yIG9uIGNhc2Ugb2Ygd3JvbmcgUkFOR0UgT05MWVxyXG4gIC8vLyB0byBpbnNlcnQgcmVsZXZhbnQgcmFuZ2UgdG8gdGhlIHN0YXR1cyBiYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgdGhpcy5fdHlwZSA9IE1zZ0ludGVyZmFjZS5TVFJfUk5HX1RYVDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5jb25zdHJ1Y3RvciBvbiBjYXNlIG9mIHdyb25nIHVzZXIgaW5wdXRcclxuICAvLy8gdG8gaW5zZXJ0ICdCYWQgJ3R5cGUnIC4nbWVzc2FnZSB0byBzdGF0dXMgYmFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEodHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JvbmdGb3JtYXRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1dyb25nRm9ybWF0RXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFTOUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFHekMsS0FBSyxHQUFXLElBQUksQ0FBQztJQUc3QixZQUFZLElBQWE7UUFFdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRVosSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFLTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUtPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TXNnSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW5ldmVyIHRoZSBVc2VyIGluc2VydGVkIGlucHV0XHJcbi8vLyB0byBmaWVsZCB3aGljaCBjYW4gbm90IGJlIGluaXRpYWxpemVkIGJ5IG1hc2svZm9ybWF0LCBzb1xyXG4vLy8gYWZ0ZXIgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiBpdCBuZWVkczpcclxuLy8vIHNldCBmb2N1cyBiYWNrIHRvIHRoZSBmaWVsZFxyXG4vLy8gcmV0dXJuIHRvIHRoZSBmaWVsZCBvbGQgdmFsdWVcclxuLy8vIHdyaXRlIGluIHRoZSBzdGF0dXMgYmFyIHJlbGV2YW50IG1lc3NhZ2VcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFdyb25nRm9ybWF0RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHtcclxuXHJcbiAgLy8gdHlwZSBvZiB0aGUgZmllbGQgcHJvZHVjZWQgdGhlIGV4Y2VwdGlvblxyXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcih0eXBlPzogc3RyaW5nKSB7XHJcblxyXG4gICAgc3VwZXIodHlwZSk7XHJcblxyXG4gICAgdGhpcy5uYW1lID0gXCJXcm9uZ0Zvcm1hdEV4Y2VwdGlvblwiO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fdHlwZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Y29uc3RydWN0b3Igb24gY2FzZSBvZiB3cm9uZyBSQU5HRSBPTkxZXHJcbiAgLy8vIHRvIGluc2VydCByZWxldmFudCByYW5nZSB0byB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB0aGlzLl90eXBlID0gTXNnSW50ZXJmYWNlLlNUUl9STkdfVFhUO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmNvbnN0cnVjdG9yIG9uIGNhc2Ugb2Ygd3JvbmcgdXNlciBpbnB1dFxyXG4gIC8vLyB0byBpbnNlcnQgJ0JhZCAndHlwZScgLidtZXNzYWdlIHRvIHN0YXR1cyBiYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcbn1cclxuIl19
@@ -508,4 +508,4 @@ export class GuiTaskBase {
508
508
  this.WriteToMessagePane(msg);
509
509
  }
510
510
  }
511
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpVGFza0Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBT3hHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdELE1BQU0sT0FBZ0IsV0FBVztJQUNyQixNQUFNLENBQUMsa0JBQWtCLEdBQVcsS0FBSyxDQUFDO0lBQ3BELFlBQVksR0FBc0IsSUFBSSxDQUFDO0lBQy9CLHFCQUFxQixHQUFXLFVBQVUsQ0FBQztJQUNuRCxZQUFZLEdBQVcsR0FBRyxDQUFDO0lBQzNCLGVBQWUsR0FBa0IsSUFBSSxDQUFDO0lBQzlCLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFDekIsY0FBYyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFVBQVUs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LHlCQUF5QixDQUFDLEtBQWE7UUFDckMsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0LCBOTnVtYmVyLCBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0NvbnN0YW50cywgTG9nZ2VyX0xvZ0xldmVscywgU3RvcmFnZUF0dHJpYnV0ZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SVRhc2t9IGZyb20gXCIuL0lUYXNrXCI7XHJcbmltcG9ydCB7UHJvcFBhcmVudEludGVyZmFjZX0gZnJvbSBcIi4uLy4uL2d1aS9Qcm9wUGFyZW50SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7SUZsb3dNb25pdG9yUXVldWV9IGZyb20gXCIuLi8uLi9JRmxvd01vbml0b3JRdWV1ZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuLi9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0d1aUZpZWxkQmFzZX0gZnJvbSBcIi4uL2RhdGEvR3VpRmllbGRCYXNlXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4uL2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7UHJvcFRhYmxlfSBmcm9tIFwiLi4vZ3VpL1Byb3BUYWJsZVwiO1xyXG5pbXBvcnQge0hlbHBzLCBNYWdpY0hlbHB9IGZyb20gXCIuLi9ndWkvSGVscHNcIjtcclxuaW1wb3J0IHtHdWlEYXRhVmlld0Jhc2V9IGZyb20gXCIuLi9kYXRhL0d1aURhdGFWaWV3QmFzZVwiO1xyXG5pbXBvcnQge0lBY3Rpb25NYW5hZ2VyfSBmcm9tIFwiLi4vZXZlbnRzL0lBY3Rpb25NYW5hZ2VyXCI7XHJcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gXCIuLi9ndWkvUHJvcGVydHlcIjtcclxuaW1wb3J0IHtQcm9wSW50ZXJmYWNlfSBmcm9tIFwiLi4vZ3VpL1Byb3BJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGaWVsZERlZn0gZnJvbSBcIi4uL2RhdGEvRmllbGREZWZcIjtcclxuaW1wb3J0IHtDb21tYW5kc30gZnJvbSBcIi4uLy4uL0NvbW1hbmRzXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi4vLi4vRXZlbnRzXCI7XHJcbmltcG9ydCB7R3VpQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vR3VpQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7R3VpRGF0YUNvbGxlY3Rpb259IGZyb20gXCIuL0d1aURhdGFDb2xsZWN0aW9uXCI7XHJcbmltcG9ydCB7IENvbW1hbmRUeXBlLCBIdG1sUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9HdWlFbnVtc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gdGFzayBwcm9wZXJ0aWVzICgrIGZldyBhY2Nlc3MgbWV0aG9kcykgcmVxdWlyZWQgYW5kIHJlbGV2YW50IGZvciB0aGUgR1VJIG5hbWVzcGFjZS5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1aVRhc2tCYXNlIGltcGxlbWVudHMgSVRhc2ssIFByb3BQYXJlbnRJbnRlcmZhY2Uge1xyXG4gIHByb3RlY3RlZCBzdGF0aWMgTUFJTl9QUkdfUEFSRU5UX0lEOiBudW1iZXIgPSAzMjc2ODtcclxuICBfZmxvd01vbml0b3I6IElGbG93TW9uaXRvclF1ZXVlID0gbnVsbDtcclxuICBwcml2YXRlIF9rZXlib2FyZE1hcHBpbmdTdGF0ZTogbnVtYmVyID0gMHhGRkZGMDAwMDtcclxuICBfcmVmcmVzaFR5cGU6IHN0cmluZyA9IFwiVFwiO1xyXG4gIF9sYXN0UGFya2VkQ3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYnJrTGV2ZWw6IHN0cmluZyA9IG51bGw7IC8vIHRoZSBydW50aW1lIGxldmVsIChSZWNvcmQgIFN1ZmZpeCwgR3VpVGFza0Jhc2UgUHJlZml4LCBldGMuKVxyXG4gIHByaXZhdGUgX2Jya0xldmVsSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHByaXZhdGUgX21haW5MZXZlbDogc3RyaW5nID0gbnVsbDsgLy8gdGhlIHJ1bnRpbWUgbWFpbmxldmVsXHJcbiAgcHJpdmF0ZSBfbGV2ZWw6IHN0cmluZyA9IFwiXFwwXCI7IC8vICdDJyA9IGluIGNvbnRyb2wsICdSJyA9IGluIHJlY29yZCAob3V0IG9mIGNvbnRyb2wpLCAnVCcgPSBpbiB0YXNrIChvdXQgb2YgcmVjb3JkKVxyXG4gIF9lbnRlcmVkUmVjTGV2ZWw6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVFJVRSBvbmx5IGlmIHRoZSB0YXNrIHdhcyBldmVyIG1vdmVkIHRvIHJlY29yZCBsZXZlbC5cclxuICBfY3VyclBhcmtlZEZsZDogR3VpRmllbGRCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIGlzSW5SZWNvbXB1dGUgPSBmYWxzZTtcclxuICAvLyBUaGlzIGZsYWcgcmVwcmVzZW50cyB0aGUgY3VycmVudCBlZGl0aW5nIGNvbnRyb2wuXHJcbiAgLy8gSXQgaXMgcmVzZXQgdG8gbnVsbCB3aGVuIHdlIGFyZSBpbiBiZXR3ZWVuIHNldHRpbmcgdGhlIGZvY3VzIGFuZCBvbmNlIHdlIHNldCB0aGUgZm9jdXMgdG8gY29udHJvbCB0aGVuIHdlIHNldCB0aGlzIGZsYWcgdG8gY3VycmVudCBmb2N1c2VkIGNvbnRyb2wuXHJcbiAgQ3VycmVudEVkaXRpbmdDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIHNob3VsZFJlc3VtZVN1YmZvcm1MYXlvdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEFwcGxpY2F0aW9uR3VpZDogc3RyaW5nID0gbnVsbDtcclxuICBQcm9ncmFtSXNuOiBudW1iZXIgPSAwO1xyXG4gIFRhc2tJc246IG51bWJlciA9IDA7XHJcbiAgQ29udGV4dElEOiBudW1iZXIgPSAwO1xyXG4gIElzU3ViRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIF9jdGxJZHg6IG51bWJlciA9IDA7XHJcbiAgX2NvbXBJZHg6IG51bWJlciA9IDA7XHJcbiAgX2lzUHJnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX2lzTWFpblByZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIElzSW50ZXJhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfdGFza1RhZzogc3RyaW5nID0gbnVsbDtcclxuICBfb3BlbldpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FsbG93RXZlbnRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcbiAgX3Byb3BUYWI6IFByb3BUYWJsZSA9IG51bGw7XHJcbiAgX2hlbHBUYWI6IEhlbHBzID0gbnVsbDtcclxuICBfbnVsbEFyaXRobWV0aWM6IHN0cmluZztcclxuICBJY29uRmlsZU5hbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIElzUGFyYWxsZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEYXRhVmlldzogR3VpRGF0YVZpZXdCYXNlID0gbnVsbDtcclxuICBBY3Rpb25NYW5hZ2VyOiBJQWN0aW9uTWFuYWdlciA9IG51bGw7XHJcbiAgU3R1ZGlvUGFyZW50VGFzazogR3VpVGFza0Jhc2UgPSBudWxsOyAvLyBwYXJlbnQgdGFzayBvZiB0aGUgc3VidGFzayBieSB0b29sa2l0IHRyZWUuXHJcblxyXG4gIHByaXZhdGUgcm91dGVyUGF0aDogc3RyaW5nID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpbkRlZmF1bHRSb3V0ZXJPdXRsZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkRhdGFWaWV3LkluaXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBSb3V0ZXJQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXJQYXRoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IFJvdXRlclBhcmFtcygpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgSW5EZWZhdWx0Um91dGVyT3V0bGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5EZWZhdWx0Um91dGVyT3V0bGV0O1xyXG4gIH1cclxuXHJcbiAgSXNTdWJ0YXNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRGF0YVZpZXdXYXNSZXRyaWV2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgdmlldyB3YXMgcmV0cmlldmVkLCBpLmUuIGl0IGlzIHBvc3NpYmxlIHRvIGV2YWx1YXRlIGV4cHJlc3Npb25zXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhc2sgcHJlZml4IHdhcyBwZXJmb3JtZWQgZm9yIHRoaXMgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgVGFza1ByZWZpeEV4ZWN1dGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyB0cnVlIGlmIHRoaXMgdGFzayBzaG91bGQgYmxvY2sgYWN0aXZhdGlvbiBvZiBpdHMgYWNzZXN0b3JzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXQgSXNCbG9ja2luZ0JhdGNoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl9pc01haW5QcmcgJiYgdGhpcy5pc09wZW5XaW4oKSAmJiAhdGhpcy5fYWxsb3dFdmVudHMgJiYgIXRoaXMuSXNJbnRlcmFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fbnVsbEFyaXRobWV0aWMgPSBDb25zdGFudHMuTlVMTF9BUklUSF9VU0VfREVGO1xyXG4gICAgdGhpcy5fcHJvcFRhYiA9IG5ldyBQcm9wVGFibGUodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRhc2sgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRhc2tUYWcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90YXNrVGFnO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgY3RsIGlkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3RsSWR4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3RsSWR4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHRhc2sgaXMgYSBtYWluIHByb2dyYW0gb2YgYW4gaW50ZXJuYWwgb3IgZXh0ZXJuYWwgY29tcG9uZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc01haW5Qcm9nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTWFpblByZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIHRvcG1vc3QgbWdmb3JtIG9mIHRoZSBzdWJmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFRvcE1vc3RGb3JtKCk6IE1nRm9ybUJhc2Uge1xyXG4gICAgbGV0IGZvcm06IE1nRm9ybUJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLkZvcm0gIT09IG51bGwpXHJcbiAgICAgIGZvcm0gPSB0aGlzLkZvcm0uZ2V0VG9wTW9zdEZvcm0oKTtcclxuICAgIC8vIGVsc2VcclxuICAgIC8vIEFzc2VydCBzaG91bGQgbm90IGJlIGhlcmUgYmVjYXVzZSB3ZSBoYXZlIGRpZmZlcmVudCBjb25kaXRpb25zIGZvciBSQyAmIE9MLlxyXG4gICAgLy8gT3RoZXIgdGhlbiBNYWluIFByb2dyYW0sIHRhc2sncyBmb3JtIHNob3VsZCBub3QgYmUgbnVsbC5cclxuICAgIC8vIERlYnVnLkFzc2VydChpc01haW5Qcm9nKCkpO1xyXG5cclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHJlcXVlc3RlZCBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDdHJsKGN0cmxJZHg6IG51bWJlcik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuRm9ybS5nZXRDdHJsKGN0cmxJZHgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0cyB0aGUgY3VycmVudCB0YXNrIG1vZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbFwiPm5ldyB0YXNrIG1vZGU8L3BhcmFtPlxyXG4gIHNldE1vZGUodmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdldE1vZGUoKSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuc2V0UHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX01PREUsIHZhbCk7XHJcbiAgICAgIGlmICh0aGlzLl9mbG93TW9uaXRvciAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLl9mbG93TW9uaXRvci5hZGRUYXNrQ25nTW9kZSh2YWwsIHRoaXMuR2V0VGFza0RldGFpbHMoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdGFzayBtb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRNb2RlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGFza01vZGU6IHN0cmluZyA9IENvbnN0YW50cy5UQVNLX01PREVfTU9ESUZZO1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX01PREUpO1xyXG4gICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgdGFza01vZGUgPSBwcm9wLkdldENvbXB1dGVkVmFsdWUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0YXNrTW9kZTtcclxuICB9XHJcblxyXG4gIFNldEluUmVjb21wdXRlKGluUmVjb21wdXRlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzSW5SZWNvbXB1dGUgPSBpblJlY29tcHV0ZTtcclxuICB9XHJcblxyXG4gIElzSW5SZWNvbXB1dGUoKSA6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNJblJlY29tcHV0ZTtcclxuICB9XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJlc2V0IHJlZnJlc2ggdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVzZXRSZWZyZXNoVHlwZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlZnJlc2hUeXBlID0gQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9OT05FO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCByZWZyZXNoIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0UmVmcmVzaFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWZyZXNoVHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJlZnJlc2ggdHlwZSBmb3IgdGhlIG5leHQgUmVmcmVzaERpc3BsYXkoKSBjYWxsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlZnJlc2hUeXBlXCI+dGhlIG5ldyByZWZyZXNoIHR5cGU8L3BhcmFtPlxyXG4gIFNldFJlZnJlc2hUeXBlKHJlZnJlc2hUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAocmVmcmVzaFR5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19SRUZSRVNIX0ZPUk06XHJcbiAgICAgIGNhc2UgQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9UQUJMRTpcclxuICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19SRUZSRVNIX0NVUlJfUkVDOlxyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUeXBlID0gcmVmcmVzaFR5cGU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgR2V0Um91dGVyUGFyYW1zKCk6IExpc3Q8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbGFzdCBwYXJrZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGFzdFBhcmtlZEN0cmwoKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFzdFBhcmtlZEN0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgb3BlbiB3aW5kb3dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzT3BlbldpbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVuV2luO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgcmV0dXJucyBpdHMgYm9vbGVhbiB2YWx1ZSBvdGhlcndpc2UgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5pZCBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVmYXVsdFJldFZhbFwiPnRoZSB2YWx1ZSB0byByZXR1cm4gaW4gY2FzZSB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3Q8L3BhcmFtPlxyXG4gIGFzeW5jIGNoZWNrUHJvcChwcm9wSWQ6IG51bWJlciwgZGVmYXVsdFJldFZhbDogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5nZXRQcm9wKHByb3BJZCk7XHJcbiAgICBpZiAocHJvcCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGF3YWl0IHByb3AuZ2V0VmFsdWVCb29sZWFuKCk7XHJcbiAgICByZXR1cm4gZGVmYXVsdFJldFZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjbGlja2VkIGNvbnRyb2wgb24gdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENsaWNrZWRDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgbGV0IGNsaWNrZWRDdHJsOiBNZ0NvbnRyb2xCYXNlID0gRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KG51bGwpLkN1cnJlbnRDbGlja2VkQ3RybDtcclxuXHJcbiAgICBpZiAoY2xpY2tlZEN0cmwgIT09IG51bGwgJiYgY2xpY2tlZEN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKSAhPT0gdGhpcylcclxuICAgICAgY2xpY2tlZEN0cmwgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBjbGlja2VkQ3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4ga2V5Ym9hcmRNYXBwaW5nU3RhdGVcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGdldEtleWJvYXJkTWFwcGluZ1N0YXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHN0YXRlIGVuYWJsZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNTdGF0ZUVuYWJsZWQoc3RhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChzdGF0ZSAmIHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSA+IDA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU2V0cyB0aGUgc3RhdGUgb24vb2ZmXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9uXCI+PC9wYXJhbT5cclxuICBzZXRLZXlib2FyZE1hcHBpbmdTdGF0ZShzdGF0ZTogbnVtYmVyLCBvbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUgPSBvblxyXG4gICAgICA/IEd1aVRhc2tCYXNlLm1rSW50KEd1aVRhc2tCYXNlLmhpU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgJiB+c3RhdGUsIEd1aVRhc2tCYXNlLmxvU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgfCBzdGF0ZSlcclxuICAgICAgOiBHdWlUYXNrQmFzZS5ta0ludChHdWlUYXNrQmFzZS5oaVNocnQodGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpIHwgc3RhdGUsIEd1aVRhc2tCYXNlLmxvU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgJiB+c3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGhpZ2hlciBoYWxmIG9mIHRoZSBpbnRlZ2VyPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBoaVNocnQobjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAobiAmIDB4ZmZmZjAwMDApID4+IDE2O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGxvdyBoYWxmIG9mIHRoZSBpbnRlZ2VyPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBsb1NocnQobjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuICYgMHgwMDAwZmZmZjtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibjFcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibjJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdW5pdGVzIGxvdyBoYWx2ZXMgb2YgMiBpbnRlZ2VycyAvLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIG1rSW50KG4xOiBudW1iZXIsIG4yOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIG4xIDw8IDE2IHwgbjI7XHJcbiAgfVxyXG5cclxuICBnZXRIZWxwSXRlbShpZHg6IG51bWJlcik6IE1hZ2ljSGVscCB7XHJcbiAgICBpZiAodGhpcy5faGVscFRhYiAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2hlbHBUYWIuZ2V0SGVscChpZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIHByb3BlcnR5IG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BJZFwiPnRoZSBpZCBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+dGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eTwvcGFyYW0+XHJcbiAgc2V0UHJvcChwcm9wSWQ6IG51bWJlciwgdmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb3BUYWIuc2V0UHJvcChwcm9wSWQsIHZhbCwgdGhpcywgXCJUXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcnVudGltZSBsZXZlbCBvZiB0aGUgdGFzayAoUmVjb3JkIFN1ZmZpeCwgR3VpVGFza0Jhc2UgUHJlZml4LCBldGMuKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0QnJrTGV2ZWwoY0Jya0xldmVsOiBzdHJpbmcsIE5ld0Jya0xldmVsSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fYnJrTGV2ZWwgPSBjQnJrTGV2ZWw7XHJcbiAgICB0aGlzLl9icmtMZXZlbEluZGV4ID0gTmV3QnJrTGV2ZWxJbmRleDtcclxuXHJcbiAgICB0aGlzLnNldE1haW5MZXZlbChjQnJrTGV2ZWwpOyAvLyBVcGRhdGUgdGhlIE1haW5MZXZlbCBhY2NvcmRpbmcgdG8gdGhlIG5ldyBMZXZlbFxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHJ1bnRpbWUgbGV2ZWwgb2YgdGhlIHRhc2sgKFJlY29yZCBTdWZmaXgsIEd1aVRhc2tCYXNlIFByZWZpeCwgZXRjLilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJrTGV2ZWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBpZCBvZiB0aGUgY3VycmVudCBleGVjdXRpbmcgaGFuZGxlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgaW50IGlkIG9mIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBoYW5kbGVyPC9yZXR1cm5zPlxyXG4gIGdldEJya0xldmVsSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9icmtMZXZlbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcnVudGltZSBtYWlubGV2ZWwgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE1haW5MZXZlbChjQnJrTGV2ZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNCcmtMZXZlbCAhPT0gbnVsbCAmJiBjQnJrTGV2ZWwubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbGV2ZWw6IHN0cmluZyA9IGNCcmtMZXZlbC5jaGFyQXQoMCk7XHJcbiAgICAgIC8qIHRoZW4gTUFJTkxFVkVMIGlzIHVwZGF0ZWQgb25seSBpZiB0aGUgYWN0dWFsIExldmVsIGlzIGEgVEFTSyBvciBSRUNPUkQgKCBvciBub25lICkgbGV2ZWwgKi9cclxuICAgICAgaWYgKGxldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9OT05FIHx8IGxldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9UQVNLIHx8XHJcbiAgICAgICAgbGV2ZWwgPT09IENvbnN0YW50cy5UQVNLX0xFVkVMX1JFQ09SRClcclxuICAgICAgICB0aGlzLl9tYWluTGV2ZWwgPSBjQnJrTGV2ZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBydW50aW1lIG1haW5sZXZlbCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TWFpbkxldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFpbkxldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgbGV2ZWwgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY0xldmVsXCI+J0MnID0gaW4gY29udHJvbCwgJ1InID0gaW4gcmVjb3JkIChvdXQgb2YgY29udHJvbCksICdUJyA9IGluIHRhc2sgKG91dCBvZiByZWNvcmQpICAgICAgLy8vIDwvcGFyYW0+XHJcbiAgc2V0TGV2ZWwoY0xldmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xldmVsID0gY0xldmVsO1xyXG5cclxuICAgIGlmICh0aGlzLl9sZXZlbCA9PT0gQ29uc3RhbnRzLlRBU0tfTEVWRUxfUkVDT1JEKVxyXG4gICAgICB0aGlzLl9lbnRlcmVkUmVjTGV2ZWwgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgbGV2ZWwgb2YgdGhlIHRhc2s6ICdDJyA9IGluIGNvbnRyb2wsICdSJyA9IGluIHJlY29yZCAob3V0IG9mIGNvbnRyb2wpLCAnVCcgPSBpbiB0YXNrIChvdXQgb2YgcmVjb3JkKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIERhdGFTeW5jZWQgcHJvcGVydHkgb2YgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0RGF0YVN5bmNlZChzeW5jZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHNjaGVtZSBmb3IgbnVsbCBhcml0aG1ldGljXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXROdWxsQXJpdGhtZXRpYygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX251bGxBcml0aG1ldGljO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgbGFzdCBwYXJrZWQgY29udHJvbCBpbiB0aGlzIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPmxhc3QgZm9jdXNlZCBjb250cm9sPC9wYXJhbT5cclxuICBzZXRMYXN0UGFya2VkQ3RybChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sYXN0UGFya2VkQ3RybCA9IGN0cmw7XHJcbiAgICB0aGlzLl9jdXJyUGFya2VkRmxkID0gKCh0aGlzLl9sYXN0UGFya2VkQ3RybCAhPT0gbnVsbClcclxuICAgICAgPyB0aGlzLl9sYXN0UGFya2VkQ3RybC5nZXRGaWVsZCgpXHJcbiAgICAgIDogbnVsbCk7XHJcbiAgICB0aGlzLkN1cnJlbnRFZGl0aW5nQ29udHJvbCA9IGN0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGN1cnJlbnQgZmllbGQgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEN1cnJGaWVsZCgpOiBHdWlGaWVsZEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJQYXJrZWRGbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGN1cnJlbnQgZmllbGQgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEN1cnJGaWVsZChjdXJyRmllbGQ6IEd1aUZpZWxkQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VyclBhcmtlZEZsZCA9IGN1cnJGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmllbGQgb2YgdGhlIGN1cnJlbnQgcGFya2VkIGNvbnRyb2wgb3IgLTEgaWYgdGhlcmUgaXMgbm8gc3VjaCBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3VyckZpZWxkSWR4KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fY3VyclBhcmtlZEZsZCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2N1cnJQYXJrZWRGbGQuZ2V0SWQoKTtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkQnlWYWx1ZVN0cih2YWx1ZVN0cjogc3RyaW5nKTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudDogUmVmUGFyYW08bnVtYmVyPiwgdmVlOiBSZWZQYXJhbTxudW1iZXI+KTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudD86IFJlZlBhcmFtPG51bWJlcj4sIHZlZT86IFJlZlBhcmFtPG51bWJlcj4pOiBGaWVsZERlZiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRCeVZhbHVlU3RyXzAodmFsdWVTdHIpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZEJ5VmFsdWVTdHJfMSh2YWx1ZVN0ciwgcGFyZW50LCB2ZWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZEJ5VmFsdWVTdHJfMCh2YWx1ZVN0cjogc3RyaW5nKTogRmllbGREZWYge1xyXG4gICAgbGV0IHBhcmVudDogbnVtYmVyO1xyXG4gICAgbGV0IHZlZTogbnVtYmVyO1xyXG4gICAgbGV0IHJlZlBhcmVudDogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbShwYXJlbnQpO1xyXG4gICAgbGV0IHJlZlZlZTogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSh2ZWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRCeVZhbHVlU3RyXzEodmFsdWVTdHIsIHJlZlBhcmVudCwgcmVmVmVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBmaWVsZCBieSAndmFsdWVTdHInXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZpZWxkQnlWYWx1ZVN0cl8xKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudDogUmVmUGFyYW08bnVtYmVyPiwgdmVlOiBSZWZQYXJhbTxudW1iZXI+KTogRmllbGREZWYge1xyXG4gICAgcGFyZW50LnZhbHVlID0gdmVlLnZhbHVlID0gMDtcclxuICAgIGxldCB0ZW1wRmllbGQ6IEZpZWxkRGVmID0gbnVsbDtcclxuICAgIGxldCBjb21tYTogbnVtYmVyID0gdmFsdWVTdHIuaW5kZXhPZihcIixcIik7XHJcbiAgICBpZiAoY29tbWEgPiAwKSB7XHJcbiAgICAgIGxldCBwYXJlbnRJZDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoMCwgY29tbWEpKTtcclxuICAgICAgbGV0IGZsZElkeDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoY29tbWEgKyAxKSk7XHJcbiAgICAgIHRlbXBGaWVsZCA9ICgocGFyZW50SWQgIT09IDApXHJcbiAgICAgICAgPyB0aGlzLmdldEZpZWxkRGVmKHBhcmVudElkLCBmbGRJZHgpXHJcbiAgICAgICAgOiB0aGlzLmdldEZpZWxkRGVmKGZsZElkeCkpO1xyXG4gICAgICBwYXJlbnQudmFsdWUgPSBwYXJlbnRJZDtcclxuICAgICAgdmVlLnZhbHVlID0gZmxkSWR4O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXBGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBmaWVsZCBmcm9tIGEgMS1iYXNlZCBtYWluIHByb2cgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldE1haW5Qcm9nRmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcpOiBGaWVsZERlZiB7XHJcbiAgICAvLyBzdHJpbmcgaXMgMS1iYXNlZCAtIG5lZWQgdG8gc3VidHJhY3QgMSB0byBnZXQgdG8gMC1iYXNlZCB2YWx1ZVxyXG4gICAgbGV0IGZsZElkeDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0cikgLSAxO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGREZWYoZmxkSWR4KTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkRGVmKGZsZElkOiBudW1iZXIpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZERlZihwYXJlbnQ6IG51bWJlciwgZmxkSWR4OiBudW1iZXIpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZERlZihmbGRJZE9yUGFyZW50OiBudW1iZXIsIGZsZElkeD86IG51bWJlcik6IEZpZWxkRGVmIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8wKGZsZElkT3JQYXJlbnQpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8xKGZsZElkT3JQYXJlbnQsIGZsZElkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgZmllbGQgYnkgaXRzIGlkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRJZFwiPmlkIG9mIHRoZSBmaWVsZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgZ2V0RmllbGRfMChmbGRJZDogbnVtYmVyKTogRmllbGREZWYge1xyXG4gICAgcmV0dXJuIHRoaXMuRGF0YVZpZXcuZ2V0RmllbGQoZmxkSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbml0aWFsaXplIHRoZSBjdXJyZW50IHRhc2sncyBmb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgSW5pdEZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5Gb3JtICE9PSBudWxsICYmIHRoaXMuaXNPcGVuV2luKCkpIHtcclxuICAgICAgdGhpcy5Gb3JtLkluSW5pdEZvcm0gPSB0cnVlO1xyXG4gICAgICBhd2FpdCB0aGlzLkZvcm0uaW5pdCgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuU2V0UmVmcmVzaFR5cGUoQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9GT1JNKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuUmVmcmVzaERpc3BsYXkoKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICAgIHRoaXMuRm9ybS5JbkluaXRGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJlc3VtZSBzdWJmb3JtIGxheW91dFxyXG4gIC8vLyA8L3N1bW1hcnlcclxuICBSZXN1bWVTdWJmb3JtTGF5b3V0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgc3ViRm9ybUN0cmw6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT50aGlzLkZvcm0uZ2V0U3ViRm9ybUN0cmwoKTtcclxuICAgICAgaWYgKHN1YkZvcm1DdHJsICE9PSBudWxsICYmIHRoaXMuc2hvdWxkUmVzdW1lU3ViZm9ybUxheW91dCkge1xyXG4gICAgICAgIC8vIHJlZnJlc2ggdGhlIHZpc2libGUgcHJvcGVydHlcclxuICAgICAgICBDb21tYW5kcy5hZGRPcGVyYXRpb25XaXRoTGluZShDb21tYW5kVHlwZS5TRVRfUFJPUEVSVFksIHN1YkZvcm1DdHJsLCAwLFxyXG4gICAgICAgICAgIEh0bWxQcm9wZXJ0aWVzLlZpc2libGUgLCBzdWJGb3JtQ3RybC5pc1Zpc2libGUoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvdWxkUmVzdW1lU3ViZm9ybUxheW91dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCB3aGljaCB3YXMgbGFzdCBwYXJrZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVwdGhcIj50aGUgZ2VuZXJhdGlvbjwvcGFyYW0+XHJcbiAgR2V0TGFzdFBhcmtlZEN0cmxOYW1lKGRlcHRoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGFuY2VzdG9yOiBHdWlUYXNrQmFzZSA9IDxHdWlUYXNrQmFzZT50aGlzLkdldFRhc2tBbmNlc3RvcihkZXB0aCk7XHJcbiAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwgfHwgYW5jZXN0b3IuX2xhc3RQYXJrZWRDdHJsID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIHJldHVybiBhbmNlc3Rvci5fbGFzdFBhcmtlZEN0cmwuTmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGZvcm0gb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gRm9ybSBpcyB0aGUgZm9ybSBvZiB0aGUgdGFzazwvcmV0dXJucz5cclxuICBnZXRGb3JtKCk6IE1nRm9ybUJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuRm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0IHRhc2sncyBmb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBGb3JtIGlzIHRoZSBmb3JtIG9mIHRoZSB0YXNrPC9yZXR1cm5zPlxyXG4gIFNldEZvcm0odmFsdWU6IE1nRm9ybUJhc2UpOiBNZ0Zvcm1CYXNlIHtcclxuICAgIHRoaXMuRm9ybSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkV4aXN0UHJvcChwcm9wSWQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGV4aXN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Byb3BUYWIgIT09IG51bGwpIHtcclxuICAgICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG4gICAgICBleGlzdCA9IChwcm9wICE9PSBudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBleGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSB0YXNrIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BJZFwiPklkIG9mIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHlcclxuICAvLy8gPC9wYXJhbT5cclxuICBnZXRQcm9wKHByb3BJZDogbnVtYmVyKTogUHJvcGVydHkge1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYiAhPT0gbnVsbCkge1xyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG5cclxuICAgICAgLy8gaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3QgdGhlbiBjcmVhdGUgYSBuZXcgcHJvcGVydHkgYW5kIGdpdmUgaXQgdGhlIGRlZmF1bHQgdmFsdWVcclxuICAgICAgLy8gaW4gYWRkaXRpb24gYWRkIHRoaXMgcHJvcGVydHkgdG8gdGhlIHByb3BlcnRpZXMgdGFibGVcclxuICAgICAgaWYgKHByb3AgPT09IG51bGwpIHtcclxuICAgICAgICBwcm9wID0gUHJvcGVydHkuZ2V0RGVmYXVsdFByb3AocHJvcElkLCBHdWlDb25zdGFudHMuUEFSRU5UX1RZUEVfVEFTSywgdGhpcyk7XHJcbiAgICAgICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgICAgIHByb3AuU3R1ZGlvVmFsdWUgPSBwcm9wLmdldE9yZ1ZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLl9wcm9wVGFiLmFkZFByb3AocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcDtcclxuICB9XHJcblxyXG4gIEdldENvbXB1dGVkUHJvcGVydHkocHJvcElkOiBudW1iZXIpOiBQcm9wZXJ0eSB7XHJcbiAgICBsZXQgcHJvcDogUHJvcGVydHkgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9wcm9wVGFiICE9PSBudWxsKVxyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG4gICAgcmV0dXJuIHByb3A7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBjb21wb25lbnQgaWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDb21wSWR4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcElkeDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGZpcnN0IHJlZnJlc2hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgSXNGaXJzdFJlZnJlc2hPZlByb3BzKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgSUQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJleHBJZFwiPkV4cCBJRDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzVHlwZVwiPmV4cGVjdGVkIHJldHVybiB0eXBlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW5ndGhcIj5FeHBlY3RlZCBsZW4gLSBpcyBub3QgdXNlZCwgaXQgbXVzdCBiZSBoZXJlIGJlY2F1c2Ugb2YgY29tcHV0YWJpbGl0eSB3aXRoIFJpY2ggQ2xpZW50PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZW50VHlwZVVuaWNvZGVcIj5zaG91bGQgdGhlIHJlc3VsdCBiZSB1bmljb2RlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNDZWxsVHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYWx3YXlzRXZhbHVhdGVcIj5mb3IgZm9ybSBwcm9wZXJ0aWVzIGFuZCBzb21lIGNvbnRyb2wgcHJvcGVydGllcyB3ZSBhbHdheXMgZXZhbHVhdGUgZXhwcmVzc2lvbnM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIndhc0V2YWx1YXRlZFwiPmluZGljYXRlcyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIHdhcyBldmFsdWF0ZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5ldmFsdWF0ZWQgdmFsdWU8L3JldHVybnM+XHJcbiAgYXN5bmMgRXZhbHVhdGVFeHByZXNzaW9uKGV4cElkOiBudW1iZXIsIHJlc1R5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGxlbmd0aDogbnVtYmVyLCBjb250ZW50VHlwZVVuaWNvZGU6IGJvb2xlYW4sIHJlc0NlbGxUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBhbHdheXNFdmFsdWF0ZTogYm9vbGVhbiwgd2FzRXZhbHVhdGVkOiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgd2FzRXZhbHVhdGVkLnZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGFsd2F5c0V2YWx1YXRlIHx8IHRoaXMuRGF0YVZpZXdXYXNSZXRyaWV2ZWQpIHtcclxuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5DYWxjdWxhdGVFeHByZXNzaW9uKGV4cElkLCByZXNUeXBlLCBsZW5ndGgpO1xyXG4gICAgICB3YXNFdmFsdWF0ZWQudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIEdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkOiBudW1iZXIpOiBTdG9yYWdlQXR0cmlidXRlIHtcclxuICAgIHJldHVybiB0aGlzLkdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2FsY3VsYXRlIGV4cHJlc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZXhwSWRcIj5UaGUgZXhwcmVzc2lvbiB0byBldmFsdWF0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzVHlwZVwiPlRoZSBleHBlY3RlZCByZXN1bHQgdHlwZS48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlbmd0aFwiPlRoZSBleHBlY3RlZCBsZW5ndGggb2YgdGhlIHJlc3VsdC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRUeXBlVW5pY29kZVwiPkRlbm90ZXMgd2hldGhlciB0aGUgcmVzdWx0IGlzIGV4cGVjdGVkIHRvIGJlIGEgdW5pY29kZSBzdHJpbmcuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNDZWxsVHlwZVwiPk5vdCB1c2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhc3luYyBDYWxjdWxhdGVFeHByZXNzaW9uKGV4cElkOiBudW1iZXIsIHJlc1R5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGxlbmd0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIlwiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY3JlYXRlcyBhIG1nZm9ybSBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgQ29uc3RydWN0TWdGb3JtKGFscmVhZHlTZXRQYXJlbnRGb3JtOiBSZWZQYXJhbTxib29sZWFuPik6IE1nRm9ybUJhc2UgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSB0YXNrIGlzIHN0YXJ0ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzU3RhcnRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRlbGxzIHdoZXRoZXIgdGhlIHRhc2sgaXMgYWJvcnRpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzQWJvcnRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhbmNlc3RvciBvZiB0aGUgR3VpVGFza0Jhc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ2VuZXJhdGlvblwiPm9mIHRoZSBhbmNlc3RvciB0YXNrPC9wYXJhbT5cclxuICBhYnN0cmFjdCBHZXRUYXNrQW5jZXN0b3IoZ2VuZXJhdGlvbjogbnVtYmVyKTogSVRhc2s7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBjb250ZXh0IHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgR2V0Q29udGV4dFRhc2soKTogSVRhc2s7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0YXNrIGRlcHRoXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IEdldFRhc2tEZXB0aCgpOiBudW1iZXI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVmcmVzaCB0aGUgZGlzcGxheSwgcGFpbnQgdGhlIGNvbnRyb2xzIGFuZCB0aGVpciBwcm9wZXJ0aWVzIGFnYWluIDwvc3VtbWFyeT5cclxuICBhYnN0cmFjdCBSZWZyZXNoRGlzcGxheSgpOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBnZXQgdGhlIHZhbHVlIG9mIGEgZmllbGQuIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWVsZERlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzTnVsbFwiPjwvcGFyYW0+XHJcbiAgLy8gVE9ETyBzYWRoYW4gcmVtb3ZlIHVudXNlZFxyXG4gIC8vIGFic3RyYWN0IGFzeW5jIGdldEZpZWxkVmFsdWUoZmllbGREZWY6IEZpZWxkRGVmLCB2YWx1ZTogUmVmUGFyYW08c3RyaW5nPiwgaXNOdWxsOiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8dm9pZD4gO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgZGlzcGxheSB2YWx1ZSBvZiBhIGZpZWxkLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmllbGREZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc051bGxcIj48L3BhcmFtPlxyXG4gIGFic3RyYWN0IGdldEZpZWxkRGlzcGxheVZhbHVlKGZpZWxkRGVmOiBGaWVsZERlZiwgdmFsdWU6IFJlZlBhcmFtPHN0cmluZz4sIGlzTnVsbDogUmVmUGFyYW08Ym9vbGVhbj4pOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB1cGRhdGVzIHRoZSBmaWVsZCdzIHZhbHVlIGFuZCBzdGFydHMgcmVjb21wdXRlLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmllbGREZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc051bGxcIj48L3BhcmFtPlxyXG4gIGFic3RyYWN0IFVwZGF0ZUZpZWxkVmFsdWVBbmRTdGFydFJlY29tcHV0ZShmaWVsZERlZjogRmllbGREZWYsIHZhbHVlOiBzdHJpbmcsIGlzTnVsbDogYm9vbGVhbik6IHZvaWQgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGEgZmllbGQgZnJvbSB0aGUgdGFzay50cmF2ZWwgYnkgcGFyZW50cyAoaS5lLiBOT1QgYnkgdHJpZ2dlcmluZyB0YXNrcykuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyZW50XCI+Z2VuZXJhdGlvbiBudW1iZXIgKDAgaXMgY3VycmVudCB0YXNrKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRJZHhcIj50aGUgZmllbGQgaW5kZXggd2l0aGluIGl0cyB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBpZCBvZiB0aGUgZmllbGQgZGVzY3JpYmVkIGJ5IHBhcmVudCArIGlkeDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZpZWxkXzEocGFyZW50OiBudW1iZXIsIGZsZElkeDogbnVtYmVyKTogRmllbGREZWYge1xyXG5cclxuICAgIHN3aXRjaCAocGFyZW50KSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZERlZihmbGRJZHgpO1xyXG5cclxuICAgICAgY2FzZSBHdWlUYXNrQmFzZS5NQUlOX1BSR19QQVJFTlRfSUQ6XHJcbiAgICAgICAgLy8gZmluZCB0aGUgbWFpbiBwcm9ncmFtIHVzaW5nIHRoZSBjb21wb25lbnQgaWQgKGN0bCBpZHgpXHJcbiAgICAgICAgbGV0IGNvbXBNYWluUHJvZzogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+IEd1aURhdGFDb2xsZWN0aW9uLk1HRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgodGhpcy5Db250ZXh0SUQsIHRoaXMuX2N0bElkeCk7XHJcbiAgICAgICAgcmV0dXJuIGNvbXBNYWluUHJvZy5nZXRGaWVsZERlZihmbGRJZHgpO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwYXJlbnQtLTtcclxuICAgICAgICBpZiAodGhpcy5TdHVkaW9QYXJlbnRUYXNrICE9IG51bGwpXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5TdHVkaW9QYXJlbnRUYXNrLmdldEZpZWxkRGVmKHBhcmVudCwgZmxkSWR4KTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHRhc2sgYXR0cmlidXRlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbEF0dHJpYnV0ZXMocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfVEFTSykgKyBYTUxDb25zdGFudHMuTUdfVEFHX1RBU0subGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnM6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSB0b2tlbnMuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSB0b2tlbnMuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgIGlmICghdGhpcy5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cikgJiYgRXZlbnRzLlNob3VsZExvZyhMb2dnZXJfTG9nTGV2ZWxzLkRldmVsb3BtZW50KSlcclxuICAgICAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiSW4gVGFza0Jhc2UuZmlsbEF0dHJpYnV0ZXMoKTogVW5wcm9jZXNzZWQoISkgYXR0cmlidXRlOiAnezB9JyA9ICd7MX0nXCIsIGF0dHJpYnV0ZSwgdmFsdWVTdHIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArIDEpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIGF0dHJpYnV0ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVGFnUHJvY2Vzc2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0FQUExfR1VJRDpcclxuICAgICAgICB0aGlzLkFwcGxpY2F0aW9uR3VpZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9QUk9HUkFNX0lTTjpcclxuICAgICAgICB0aGlzLlByb2dyYW1Jc24gPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS19JU046XHJcbiAgICAgICAgdGhpcy5UYXNrSXNuID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1RPT0xLSVRfUEFSRU5UX1RBU0s6XHJcbiAgICAgICAgaWYgKE5OdW1iZXIuUGFyc2UodmFsdWVTdHIpICE9PSAwKVxyXG4gICAgICAgICAgdGhpcy5TdHVkaW9QYXJlbnRUYXNrID0gPEd1aVRhc2tCYXNlPkd1aURhdGFDb2xsZWN0aW9uLk1HRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZhbHVlU3RyKTtcclxuXHJcbiAgICAgICAgdGhpcy5Jc1N1YnRhc2sgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9UQVNLSUQ6XHJcbiAgICAgICAgdGhpcy5zZXRUYXNrSWQodmFsdWVTdHIpO1xyXG4gICAgICAgIGlmIChFdmVudHMuU2hvdWxkTG9nKExvZ2dlcl9Mb2dMZXZlbHMuRGV2ZWxvcG1lbnQpKVxyXG4gICAgICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2coXCJUQVNLOiBcIiArIHRoaXMuX3Rhc2tUYWcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9DVExfSURYOlxyXG4gICAgICAgIHRoaXMuc2V0Q3RsQW5kQ29tcElkeCh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX01BSU5QUkc6XHJcbiAgICAgICAgdGhpcy5zZXRNYWluUHJnKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTlVMTF9BUklUSE1FVElDOlxyXG4gICAgICAgIHRoaXMuc2V0TnVsbEFyaXRobWV0aWModmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUkFDVElWRTpcclxuICAgICAgICB0aGlzLnNldElzSW50ZXJhY2l2ZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX09QRU5fV0lOOlxyXG4gICAgICAgIHRoaXMuc2V0T3Blbldpbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0FMTE9XX0VWRU5UUzpcclxuICAgICAgICB0aGlzLlNldEFsbG93RXZlbnRzKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSVNQUkc6XHJcbiAgICAgICAgdGhpcy5zZXRJc1ByZyh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lDT05fRklMRV9OQU1FOlxyXG4gICAgICAgIHRoaXMuSWNvbkZpbGVOYW1lID0gdmFsdWVTdHI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9QQVJBTExFTDpcclxuICAgICAgICB0aGlzLklzUGFyYWxsZWwgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1JPVVRFUl9QQVRIOlxyXG4gICAgICAgIGlmICh2YWx1ZVN0ci50cmltKCkgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMucm91dGVyUGF0aCA9IHZhbHVlU3RyO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTl9ERUZBVUxUX1JPVVRFUl9PVVRMRVQ6XHJcbiAgICAgICAgdGhpcy5pbkRlZmF1bHRSb3V0ZXJPdXRsZXQgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlzVGFnUHJvY2Vzc2VkID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzVGFnUHJvY2Vzc2VkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbml0IGRhdGEgZm9yIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm91bmRUYWdOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwYXJlbnRGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEZvcm1Jbml0RGF0YShwYXJlbnRGb3JtOiBNZ0Zvcm1CYXNlKTogTWdGb3JtQmFzZSB7XHJcbiAgICBsZXQgYWxyZWFkeVNldFBhcmVudEZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCByZWZBbHJlYWR5U2V0UGFyZW50Rm9ybTogUmVmUGFyYW08Ym9vbGVhbj4gPSBuZXcgUmVmUGFyYW0oYWxyZWFkeVNldFBhcmVudEZvcm0pO1xyXG5cclxuICAgIGlmICh0aGlzLkZvcm0gPT09IG51bGwpXHJcbiAgICAgIHRoaXMuRm9ybSA9IHRoaXMuQ29uc3RydWN0TWdGb3JtKHJlZkFscmVhZHlTZXRQYXJlbnRGb3JtKTtcclxuXHJcbiAgICBpZiAoIWFscmVhZHlTZXRQYXJlbnRGb3JtKVxyXG4gICAgICB0aGlzLkZvcm0uUGFyZW50Rm9ybSA9IHBhcmVudEZvcm07XHJcblxyXG4gICAgaWYgKEV2ZW50cy5TaG91bGRMb2coTG9nZ2VyX0xvZ0xldmVscy5EZXZlbG9wbWVudCkpXHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKFwiZm9ybVwiKTtcclxuXHJcbiAgICB0aGlzLkZvcm0uZmlsbERhdGEodGhpcyk7XHJcbiAgICByZXR1cm4gdGhpcy5Gb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0YXNrIGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRUYXNrSWQodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza1RhZyA9IHZhbHVlU3RyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBjdGxJZHggJiBjb21wSWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHNldEN0bEFuZENvbXBJZHgodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGk6IG51bWJlciA9IHZhbHVlU3RyLmluZGV4T2YoXCIsXCIpO1xyXG4gICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICB0aGlzLl9jdGxJZHggPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cigwLCBpKSk7XHJcbiAgICAgIHRoaXMuX2NvbXBJZHggPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cihpICsgMSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgYW5jZXN0b3IgdGFzayBjb250YWluaW5nIGZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5HdWlUYXNrQmFzZTwvcmV0dXJucz5cclxuICBHZXRBbmNlc3RvclRhc2tDb250YWluaW5nRm9ybSgpOiBHdWlUYXNrQmFzZSB7XHJcbiAgICBsZXQgcGFyZW50VGFzazogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+dGhpcy5HZXRUYXNrQW5jZXN0b3IoMSk7XHJcbiAgICB3aGlsZSAocGFyZW50VGFzayAhPT0gbnVsbCAmJiBwYXJlbnRUYXNrLmdldEZvcm0oKSA9PT0gbnVsbCkge1xyXG4gICAgICBwYXJlbnRUYXNrID0gPEd1aVRhc2tCYXNlPnBhcmVudFRhc2suR2V0VGFza0FuY2VzdG9yKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJlbnRUYXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgaXNNYWluUHJnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRNYWluUHJnKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzTWFpblByZyA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IG51bGxBcml0aG1ldGljXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXROdWxsQXJpdGhtZXRpYyh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9udWxsQXJpdGhtZXRpYyA9IHZhbHVlU3RyLmNoYXJBdCgwKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IGlzSW50ZXJhY3RpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldElzSW50ZXJhY2l2ZSh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLklzSW50ZXJhY3RpdmUgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBvcGVuV2luXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRPcGVuV2luKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX29wZW5XaW4gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBvcGVuV2luXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgU2V0T3Blbldpbih2YWx1ZWJvb2w6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX29wZW5XaW4gPSB2YWx1ZWJvb2w7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBBbGxvd0V2ZW50c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIFNldEFsbG93RXZlbnRzKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FsbG93RXZlbnRzID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgaXNQcmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldElzUHJnKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzUHJnID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgU2hvdWxkRXZhbHVhdGVQcm9wZXJ0eUxvY2FsbHkocHJvcElkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IEdldFRhc2tEZXRhaWxzKCk6IHN0cmluZztcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gU2V0cyB0aGUgbWVzc2FnZSBvbiB0aGUgbWVzc2FnZSBwYW5lIG9mIHN0YXR1cyBiYXIuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPm1lc3NhZ2UgdG8gYmUgc2hvd248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvdW5kQmVlcFwiPnRvIGJlZXAgb3Igbm90PC9wYXJhbT5cclxuICBXcml0ZVRvTWVzc2FnZVBhbmUobXNnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIFN0b3J5IDE0OTMxNiA6IHNlbmQgbWVzc2FnZSB0byBjb25zb2xlXHJcbiAgICBpZiAobXNnICE9IG51bGwpXHJcbiAgICAgIGNvbnNvbGUubG9nKG1zZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHdyaXRlIGEgbWVzc2FnZSB0byBzdGF0dXMgYmFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+aWQgb2YgbWVzc2FnZSB0byBiZSB3cml0dGVuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VuZEJlZXBcIj48L3BhcmFtPlxyXG4gIFdyaXRlVG9NZXNzYWdlUGFuZWJ5TXNnSWQobXNnSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1zZzogc3RyaW5nID0gRXZlbnRzLkdldE1lc3NhZ2VTdHJpbmcobXNnSWQpO1xyXG4gICAgdGhpcy5Xcml0ZVRvTWVzc2FnZVBhbmUobXNnKTtcclxuICB9XHJcbn1cclxuIl19
511
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpVGFza0Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBT3hHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdELE1BQU0sT0FBZ0IsV0FBVztJQUNyQixNQUFNLENBQUMsa0JBQWtCLEdBQVcsS0FBSyxDQUFDO0lBQ3BELFlBQVksR0FBc0IsSUFBSSxDQUFDO0lBQy9CLHFCQUFxQixHQUFXLFVBQVUsQ0FBQztJQUNuRCxZQUFZLEdBQVcsR0FBRyxDQUFDO0lBQzNCLGVBQWUsR0FBa0IsSUFBSSxDQUFDO0lBQzlCLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFDekIsY0FBYyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFVBQVUs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cHRpb24sIE5TdHJpbmcsIFJlZlBhcmFtfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtDb25zdGFudHMsIExvZ2dlcl9Mb2dMZXZlbHMsIFN0b3JhZ2VBdHRyaWJ1dGUsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0lUYXNrfSBmcm9tIFwiLi9JVGFza1wiO1xyXG5pbXBvcnQge1Byb3BQYXJlbnRJbnRlcmZhY2V9IGZyb20gXCIuLi8uLi9ndWkvUHJvcFBhcmVudEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0lGbG93TW9uaXRvclF1ZXVlfSBmcm9tIFwiLi4vLi4vSUZsb3dNb25pdG9yUXVldWVcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi4vZ3VpL01nQ29udHJvbEJhc2VcIjtcclxuaW1wb3J0IHtHdWlGaWVsZEJhc2V9IGZyb20gXCIuLi9kYXRhL0d1aUZpZWxkQmFzZVwiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuLi9ndWkvTWdGb3JtQmFzZVwiO1xyXG5pbXBvcnQge1Byb3BUYWJsZX0gZnJvbSBcIi4uL2d1aS9Qcm9wVGFibGVcIjtcclxuaW1wb3J0IHtIZWxwcywgTWFnaWNIZWxwfSBmcm9tIFwiLi4vZ3VpL0hlbHBzXCI7XHJcbmltcG9ydCB7R3VpRGF0YVZpZXdCYXNlfSBmcm9tIFwiLi4vZGF0YS9HdWlEYXRhVmlld0Jhc2VcIjtcclxuaW1wb3J0IHtJQWN0aW9uTWFuYWdlcn0gZnJvbSBcIi4uL2V2ZW50cy9JQWN0aW9uTWFuYWdlclwiO1xyXG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tIFwiLi4vZ3VpL1Byb3BlcnR5XCI7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSBcIi4uL2d1aS9Qcm9wSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7RmllbGREZWZ9IGZyb20gXCIuLi9kYXRhL0ZpZWxkRGVmXCI7XHJcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gXCIuLi8uLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQge0d1aUNvbnN0YW50c30gZnJvbSBcIi4uLy4uL0d1aUNvbnN0YW50c1wiO1xyXG5pbXBvcnQge0d1aURhdGFDb2xsZWN0aW9ufSBmcm9tIFwiLi9HdWlEYXRhQ29sbGVjdGlvblwiO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSwgSHRtbFByb3BlcnRpZXMgfSBmcm9tIFwiLi4vLi4vR3VpRW51bXNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIHRhc2sgcHJvcGVydGllcyAoKyBmZXcgYWNjZXNzIG1ldGhvZHMpIHJlcXVpcmVkIGFuZCByZWxldmFudCBmb3IgdGhlIEdVSSBuYW1lc3BhY2UuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWlUYXNrQmFzZSBpbXBsZW1lbnRzIElUYXNrLCBQcm9wUGFyZW50SW50ZXJmYWNlIHtcclxuICBwcm90ZWN0ZWQgc3RhdGljIE1BSU5fUFJHX1BBUkVOVF9JRDogbnVtYmVyID0gMzI3Njg7XHJcbiAgX2Zsb3dNb25pdG9yOiBJRmxvd01vbml0b3JRdWV1ZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfa2V5Ym9hcmRNYXBwaW5nU3RhdGU6IG51bWJlciA9IDB4RkZGRjAwMDA7XHJcbiAgX3JlZnJlc2hUeXBlOiBzdHJpbmcgPSBcIlRcIjtcclxuICBfbGFzdFBhcmtlZEN0cmw6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2Jya0xldmVsOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgcnVudGltZSBsZXZlbCAoUmVjb3JkICBTdWZmaXgsIEd1aVRhc2tCYXNlIFByZWZpeCwgZXRjLilcclxuICBwcml2YXRlIF9icmtMZXZlbEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIF9tYWluTGV2ZWw6IHN0cmluZyA9IG51bGw7IC8vIHRoZSBydW50aW1lIG1haW5sZXZlbFxyXG4gIHByaXZhdGUgX2xldmVsOiBzdHJpbmcgPSBcIlxcMFwiOyAvLyAnQycgPSBpbiBjb250cm9sLCAnUicgPSBpbiByZWNvcmQgKG91dCBvZiBjb250cm9sKSwgJ1QnID0gaW4gdGFzayAob3V0IG9mIHJlY29yZClcclxuICBfZW50ZXJlZFJlY0xldmVsOiBib29sZWFuID0gZmFsc2U7IC8vIFRSVUUgb25seSBpZiB0aGUgdGFzayB3YXMgZXZlciBtb3ZlZCB0byByZWNvcmQgbGV2ZWwuXHJcbiAgX2N1cnJQYXJrZWRGbGQ6IEd1aUZpZWxkQmFzZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpc0luUmVjb21wdXRlID0gZmFsc2U7XHJcbiAgLy8gVGhpcyBmbGFnIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgZWRpdGluZyBjb250cm9sLlxyXG4gIC8vIEl0IGlzIHJlc2V0IHRvIG51bGwgd2hlbiB3ZSBhcmUgaW4gYmV0d2VlbiBzZXR0aW5nIHRoZSBmb2N1cyBhbmQgb25jZSB3ZSBzZXQgdGhlIGZvY3VzIHRvIGNvbnRyb2wgdGhlbiB3ZSBzZXQgdGhpcyBmbGFnIHRvIGN1cnJlbnQgZm9jdXNlZCBjb250cm9sLlxyXG4gIEN1cnJlbnRFZGl0aW5nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBzaG91bGRSZXN1bWVTdWJmb3JtTGF5b3V0OiBib29sZWFuID0gdHJ1ZTtcclxuICBBcHBsaWNhdGlvbkd1aWQ6IHN0cmluZyA9IG51bGw7XHJcbiAgUHJvZ3JhbUlzbjogbnVtYmVyID0gMDtcclxuICBUYXNrSXNuOiBudW1iZXIgPSAwO1xyXG4gIENvbnRleHRJRDogbnVtYmVyID0gMDtcclxuICBJc1N1YkZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfY3RsSWR4OiBudW1iZXIgPSAwO1xyXG4gIF9jb21wSWR4OiBudW1iZXIgPSAwO1xyXG4gIF9pc1ByZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIF9pc01haW5Qcmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ludGVyYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX3Rhc2tUYWc6IHN0cmluZyA9IG51bGw7XHJcbiAgX29wZW5XaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9hbGxvd0V2ZW50czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEZvcm06IE1nRm9ybUJhc2UgPSBudWxsO1xyXG4gIF9wcm9wVGFiOiBQcm9wVGFibGUgPSBudWxsO1xyXG4gIF9oZWxwVGFiOiBIZWxwcyA9IG51bGw7XHJcbiAgX251bGxBcml0aG1ldGljOiBzdHJpbmc7XHJcbiAgSWNvbkZpbGVOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBJc1BhcmFsbGVsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRGF0YVZpZXc6IEd1aURhdGFWaWV3QmFzZSA9IG51bGw7XHJcbiAgQWN0aW9uTWFuYWdlcjogSUFjdGlvbk1hbmFnZXIgPSBudWxsO1xyXG4gIFN0dWRpb1BhcmVudFRhc2s6IEd1aVRhc2tCYXNlID0gbnVsbDsgLy8gcGFyZW50IHRhc2sgb2YgdGhlIHN1YnRhc2sgYnkgdG9vbGtpdCB0cmVlLlxyXG5cclxuICBwcml2YXRlIHJvdXRlclBhdGg6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHJvdXRlUGFyYW1zOiBMaXN0PGFueT4gPSBudWxsO1xyXG4gIHByaXZhdGUgaW5EZWZhdWx0Um91dGVyT3V0bGV0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5EYXRhVmlldy5Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgUm91dGVyUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyUGF0aDtcclxuICB9XHJcblxyXG4gIGdldCBSb3V0ZXJQYXJhbXMoKTogTGlzdDxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IEluRGVmYXVsdFJvdXRlck91dGxldCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmluRGVmYXVsdFJvdXRlck91dGxldDtcclxuICB9XHJcblxyXG4gIElzU3VidGFzazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIERhdGFWaWV3V2FzUmV0cmlldmVkOiBib29sZWFuID0gZmFsc2U7IC8vIGluZGljYXRlcyB0aGF0IHRoZSBkYXRhIHZpZXcgd2FzIHJldHJpZXZlZCwgaS5lLiBpdCBpcyBwb3NzaWJsZSB0byBldmFsdWF0ZSBleHByZXNzaW9uc1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGluZGljYXRlcyB3aGV0aGVyIHRoZSB0YXNrIHByZWZpeCB3YXMgcGVyZm9ybWVkIGZvciB0aGlzIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFRhc2tQcmVmaXhFeGVjdXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHRhc2sgc2hvdWxkIGJsb2NrIGFjdGl2YXRpb24gb2YgaXRzIGFjc2VzdG9yc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0IElzQmxvY2tpbmdCYXRjaCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5faXNNYWluUHJnICYmIHRoaXMuaXNPcGVuV2luKCkgJiYgIXRoaXMuX2FsbG93RXZlbnRzICYmICF0aGlzLklzSW50ZXJhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX251bGxBcml0aG1ldGljID0gQ29uc3RhbnRzLk5VTExfQVJJVEhfVVNFX0RFRjtcclxuICAgIHRoaXMuX3Byb3BUYWIgPSBuZXcgUHJvcFRhYmxlKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0YXNrIGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUYXNrVGFnKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFza1RhZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGN0bCBpZHhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEN0bElkeCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N0bElkeDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhpcyB0YXNrIGlzIGEgbWFpbiBwcm9ncmFtIG9mIGFuIGludGVybmFsIG9yIGV4dGVybmFsIGNvbXBvbmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNNYWluUHJvZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc01haW5Qcmc7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSB0b3Btb3N0IG1nZm9ybSBvZiB0aGUgc3ViZm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRUb3BNb3N0Rm9ybSgpOiBNZ0Zvcm1CYXNlIHtcclxuICAgIGxldCBmb3JtOiBNZ0Zvcm1CYXNlID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5Gb3JtICE9PSBudWxsKVxyXG4gICAgICBmb3JtID0gdGhpcy5Gb3JtLmdldFRvcE1vc3RGb3JtKCk7XHJcbiAgICAvLyBlbHNlXHJcbiAgICAvLyBBc3NlcnQgc2hvdWxkIG5vdCBiZSBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSBkaWZmZXJlbnQgY29uZGl0aW9ucyBmb3IgUkMgJiBPTC5cclxuICAgIC8vIE90aGVyIHRoZW4gTWFpbiBQcm9ncmFtLCB0YXNrJ3MgZm9ybSBzaG91bGQgbm90IGJlIG51bGwuXHJcbiAgICAvLyBEZWJ1Zy5Bc3NlcnQoaXNNYWluUHJvZygpKTtcclxuXHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSByZXF1ZXN0ZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3RybChjdHJsSWR4OiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLkZvcm0uZ2V0Q3RybChjdHJsSWR4KTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldHMgdGhlIGN1cnJlbnQgdGFzayBtb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWxcIj5uZXcgdGFzayBtb2RlPC9wYXJhbT5cclxuICBzZXRNb2RlKHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nZXRNb2RlKCkgIT09IHZhbCkge1xyXG4gICAgICB0aGlzLnNldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFTS19NT0RFLCB2YWwpO1xyXG4gICAgICBpZiAodGhpcy5fZmxvd01vbml0b3IgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5fZmxvd01vbml0b3IuYWRkVGFza0NuZ01vZGUodmFsLCB0aGlzLkdldFRhc2tEZXRhaWxzKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHRhc2sgbW9kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TW9kZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2tNb2RlOiBzdHJpbmcgPSBDb25zdGFudHMuVEFTS19NT0RFX01PRElGWTtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BUYWIuZ2V0UHJvcEJ5SWQoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFTS19NT0RFKTtcclxuICAgIGlmIChwcm9wICE9PSBudWxsKSB7XHJcbiAgICAgIHRhc2tNb2RlID0gcHJvcC5HZXRDb21wdXRlZFZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGFza01vZGU7XHJcbiAgfVxyXG5cclxuICBTZXRJblJlY29tcHV0ZShpblJlY29tcHV0ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0luUmVjb21wdXRlID0gaW5SZWNvbXB1dGU7XHJcbiAgfVxyXG5cclxuICBJc0luUmVjb21wdXRlKCkgOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzSW5SZWNvbXB1dGU7XHJcbiAgfVxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXNldCByZWZyZXNoIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlc2V0UmVmcmVzaFR5cGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWZyZXNoVHlwZSA9IENvbnN0YW50cy5UQVNLX1JFRlJFU0hfTk9ORTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgcmVmcmVzaCB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFJlZnJlc2hUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFR5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZWZyZXNoIHR5cGUgZm9yIHRoZSBuZXh0IFJlZnJlc2hEaXNwbGF5KCkgY2FsbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWZyZXNoVHlwZVwiPnRoZSBuZXcgcmVmcmVzaCB0eXBlPC9wYXJhbT5cclxuICBTZXRSZWZyZXNoVHlwZShyZWZyZXNoVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHJlZnJlc2hUeXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9GT1JNOlxyXG4gICAgICBjYXNlIENvbnN0YW50cy5UQVNLX1JFRlJFU0hfVEFCTEU6XHJcbiAgICAgIGNhc2UgQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9DVVJSX1JFQzpcclxuICAgICAgICB0aGlzLl9yZWZyZXNoVHlwZSA9IHJlZnJlc2hUeXBlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEdldFJvdXRlclBhcmFtcygpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGxhc3QgcGFya2VkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExhc3RQYXJrZWRDdHJsKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3RQYXJrZWRDdHJsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBnZXQgdGhlIG9wZW4gd2luZG93XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc09wZW5XaW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlbldpbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpZiB0aGUgcHJvcGVydHkgZXhpc3RzIHJldHVybnMgaXRzIGJvb2xlYW4gdmFsdWUgb3RoZXJ3aXNlIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+aWQgb2YgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRlZmF1bHRSZXRWYWxcIj50aGUgdmFsdWUgdG8gcmV0dXJuIGluIGNhc2UgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0PC9wYXJhbT5cclxuICBhc3luYyBjaGVja1Byb3AocHJvcElkOiBudW1iZXIsIGRlZmF1bHRSZXRWYWw6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcChwcm9wSWQpO1xyXG4gICAgaWYgKHByb3AgIT09IG51bGwpXHJcbiAgICAgIHJldHVybiBhd2FpdCBwcm9wLmdldFZhbHVlQm9vbGVhbigpO1xyXG4gICAgcmV0dXJuIGRlZmF1bHRSZXRWYWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY2xpY2tlZCBjb250cm9sIG9uIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDbGlja2VkQ29udHJvbCgpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGxldCBjbGlja2VkQ3RybDogTWdDb250cm9sQmFzZSA9IEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChudWxsKS5DdXJyZW50Q2xpY2tlZEN0cmw7XHJcblxyXG4gICAgaWYgKGNsaWNrZWRDdHJsICE9PSBudWxsICYmIGNsaWNrZWRDdHJsLmdldEZvcm0oKS5nZXRUYXNrKCkgIT09IHRoaXMpXHJcbiAgICAgIGNsaWNrZWRDdHJsID0gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gY2xpY2tlZEN0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IGtleWJvYXJkTWFwcGluZ1N0YXRlXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRLZXlib2FyZE1hcHBpbmdTdGF0ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiBzdGF0ZSBlbmFibGVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzU3RhdGVFbmFibGVkKHN0YXRlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoc3RhdGUgJiB0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgPiAwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldHMgdGhlIHN0YXRlIG9uL29mZlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJvblwiPjwvcGFyYW0+XHJcbiAgc2V0S2V5Ym9hcmRNYXBwaW5nU3RhdGUoc3RhdGU6IG51bWJlciwgb246IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlID0gb25cclxuICAgICAgPyBHdWlUYXNrQmFzZS5ta0ludChHdWlUYXNrQmFzZS5oaVNocnQodGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpICYgfnN0YXRlLCBHdWlUYXNrQmFzZS5sb1NocnQodGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpIHwgc3RhdGUpXHJcbiAgICAgIDogR3VpVGFza0Jhc2UubWtJbnQoR3VpVGFza0Jhc2UuaGlTaHJ0KHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSB8IHN0YXRlLCBHdWlUYXNrQmFzZS5sb1NocnQodGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpICYgfnN0YXRlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBoaWdoZXIgaGFsZiBvZiB0aGUgaW50ZWdlcjwvcmV0dXJucz5cclxuICBzdGF0aWMgaGlTaHJ0KG46IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKG4gJiAweGZmZmYwMDAwKSA+PiAxNjtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBsb3cgaGFsZiBvZiB0aGUgaW50ZWdlcjwvcmV0dXJucz5cclxuICBzdGF0aWMgbG9TaHJ0KG46IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbiAmIDB4MDAwMGZmZmY7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm4xXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm4yXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHVuaXRlcyBsb3cgaGFsdmVzIG9mIDIgaW50ZWdlcnMgLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBta0ludChuMTogbnVtYmVyLCBuMjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuMSA8PCAxNiB8IG4yO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGVscEl0ZW0oaWR4OiBudW1iZXIpOiBNYWdpY0hlbHAge1xyXG4gICAgaWYgKHRoaXMuX2hlbHBUYWIgIT09IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLl9oZWxwVGFiLmdldEhlbHAoaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBwcm9wZXJ0eSBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj50aGUgaWQgb2YgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPnRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIHNldFByb3AocHJvcElkOiBudW1iZXIsIHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wVGFiLnNldFByb3AocHJvcElkLCB2YWwsIHRoaXMsIFwiVFwiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJ1bnRpbWUgbGV2ZWwgb2YgdGhlIHRhc2sgKFJlY29yZCBTdWZmaXgsIEd1aVRhc2tCYXNlIFByZWZpeCwgZXRjLilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEJya0xldmVsKGNCcmtMZXZlbDogc3RyaW5nLCBOZXdCcmtMZXZlbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Jya0xldmVsID0gY0Jya0xldmVsO1xyXG4gICAgdGhpcy5fYnJrTGV2ZWxJbmRleCA9IE5ld0Jya0xldmVsSW5kZXg7XHJcblxyXG4gICAgdGhpcy5zZXRNYWluTGV2ZWwoY0Jya0xldmVsKTsgLy8gVXBkYXRlIHRoZSBNYWluTGV2ZWwgYWNjb3JkaW5nIHRvIHRoZSBuZXcgTGV2ZWxcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBydW50aW1lIGxldmVsIG9mIHRoZSB0YXNrIChSZWNvcmQgU3VmZml4LCBHdWlUYXNrQmFzZSBQcmVmaXgsIGV0Yy4pXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRCcmtMZXZlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Jya0xldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgaWQgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGhhbmRsZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGludCBpZCBvZiB0aGUgY3VycmVudCBleGVjdXRpbmcgaGFuZGxlcjwvcmV0dXJucz5cclxuICBnZXRCcmtMZXZlbEluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJrTGV2ZWxJbmRleDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJ1bnRpbWUgbWFpbmxldmVsIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRNYWluTGV2ZWwoY0Jya0xldmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChjQnJrTGV2ZWwgIT09IG51bGwgJiYgY0Jya0xldmVsLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGxldmVsOiBzdHJpbmcgPSBjQnJrTGV2ZWwuY2hhckF0KDApO1xyXG4gICAgICAvKiB0aGVuIE1BSU5MRVZFTCBpcyB1cGRhdGVkIG9ubHkgaWYgdGhlIGFjdHVhbCBMZXZlbCBpcyBhIFRBU0sgb3IgUkVDT1JEICggb3Igbm9uZSApIGxldmVsICovXHJcbiAgICAgIGlmIChsZXZlbCA9PT0gQ29uc3RhbnRzLlRBU0tfTEVWRUxfTk9ORSB8fCBsZXZlbCA9PT0gQ29uc3RhbnRzLlRBU0tfTEVWRUxfVEFTSyB8fFxyXG4gICAgICAgIGxldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9SRUNPUkQpXHJcbiAgICAgICAgdGhpcy5fbWFpbkxldmVsID0gY0Jya0xldmVsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgcnVudGltZSBtYWlubGV2ZWwgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1haW5MZXZlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX21haW5MZXZlbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGxldmVsIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNMZXZlbFwiPidDJyA9IGluIGNvbnRyb2wsICdSJyA9IGluIHJlY29yZCAob3V0IG9mIGNvbnRyb2wpLCAnVCcgPSBpbiB0YXNrIChvdXQgb2YgcmVjb3JkKSAgICAgIC8vLyA8L3BhcmFtPlxyXG4gIHNldExldmVsKGNMZXZlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sZXZlbCA9IGNMZXZlbDtcclxuXHJcbiAgICBpZiAodGhpcy5fbGV2ZWwgPT09IENvbnN0YW50cy5UQVNLX0xFVkVMX1JFQ09SRClcclxuICAgICAgdGhpcy5fZW50ZXJlZFJlY0xldmVsID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGxldmVsIG9mIHRoZSB0YXNrOiAnQycgPSBpbiBjb250cm9sLCAnUicgPSBpbiByZWNvcmQgKG91dCBvZiBjb250cm9sKSwgJ1QnID0gaW4gdGFzayAob3V0IG9mIHJlY29yZClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGV2ZWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBEYXRhU3luY2VkIHByb3BlcnR5IG9mIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldERhdGFTeW5jZWQoc3luY2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBzY2hlbWUgZm9yIG51bGwgYXJpdGhtZXRpY1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TnVsbEFyaXRobWV0aWMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9udWxsQXJpdGhtZXRpYztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGxhc3QgcGFya2VkIGNvbnRyb2wgaW4gdGhpcyB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5sYXN0IGZvY3VzZWQgY29udHJvbDwvcGFyYW0+XHJcbiAgc2V0TGFzdFBhcmtlZEN0cmwoY3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbGFzdFBhcmtlZEN0cmwgPSBjdHJsO1xyXG4gICAgdGhpcy5fY3VyclBhcmtlZEZsZCA9ICgodGhpcy5fbGFzdFBhcmtlZEN0cmwgIT09IG51bGwpXHJcbiAgICAgID8gdGhpcy5fbGFzdFBhcmtlZEN0cmwuZ2V0RmllbGQoKVxyXG4gICAgICA6IG51bGwpO1xyXG4gICAgdGhpcy5DdXJyZW50RWRpdGluZ0NvbnRyb2wgPSBjdHJsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBjdXJyZW50IGZpZWxkIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDdXJyRmllbGQoKTogR3VpRmllbGRCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyUGFya2VkRmxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBjdXJyZW50IGZpZWxkIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRDdXJyRmllbGQoY3VyckZpZWxkOiBHdWlGaWVsZEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJQYXJrZWRGbGQgPSBjdXJyRmllbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpZWxkIG9mIHRoZSBjdXJyZW50IHBhcmtlZCBjb250cm9sIG9yIC0xIGlmIHRoZXJlIGlzIG5vIHN1Y2ggZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEN1cnJGaWVsZElkeCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJQYXJrZWRGbGQgIT09IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyUGFya2VkRmxkLmdldElkKCk7XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZEJ5VmFsdWVTdHIodmFsdWVTdHI6IHN0cmluZyk6IEZpZWxkRGVmO1xyXG4gIGdldEZpZWxkQnlWYWx1ZVN0cih2YWx1ZVN0cjogc3RyaW5nLCBwYXJlbnQ6IFJlZlBhcmFtPG51bWJlcj4sIHZlZTogUmVmUGFyYW08bnVtYmVyPik6IEZpZWxkRGVmO1xyXG4gIGdldEZpZWxkQnlWYWx1ZVN0cih2YWx1ZVN0cjogc3RyaW5nLCBwYXJlbnQ/OiBSZWZQYXJhbTxudW1iZXI+LCB2ZWU/OiBSZWZQYXJhbTxudW1iZXI+KTogRmllbGREZWYge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkQnlWYWx1ZVN0cl8wKHZhbHVlU3RyKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRCeVZhbHVlU3RyXzEodmFsdWVTdHIsIHBhcmVudCwgdmVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGRCeVZhbHVlU3RyXzAodmFsdWVTdHI6IHN0cmluZyk6IEZpZWxkRGVmIHtcclxuICAgIGxldCBwYXJlbnQ6IG51bWJlcjtcclxuICAgIGxldCB2ZWU6IG51bWJlcjtcclxuICAgIGxldCByZWZQYXJlbnQ6IFJlZlBhcmFtPG51bWJlcj4gPSBuZXcgUmVmUGFyYW0ocGFyZW50KTtcclxuICAgIGxldCByZWZWZWU6IFJlZlBhcmFtPG51bWJlcj4gPSBuZXcgUmVmUGFyYW0odmVlKTtcclxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkQnlWYWx1ZVN0cl8xKHZhbHVlU3RyLCByZWZQYXJlbnQsIHJlZlZlZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCB0aGUgZmllbGQgYnkgJ3ZhbHVlU3RyJ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRGaWVsZEJ5VmFsdWVTdHJfMSh2YWx1ZVN0cjogc3RyaW5nLCBwYXJlbnQ6IFJlZlBhcmFtPG51bWJlcj4sIHZlZTogUmVmUGFyYW08bnVtYmVyPik6IEZpZWxkRGVmIHtcclxuICAgIHBhcmVudC52YWx1ZSA9IHZlZS52YWx1ZSA9IDA7XHJcbiAgICBsZXQgdGVtcEZpZWxkOiBGaWVsZERlZiA9IG51bGw7XHJcbiAgICBsZXQgY29tbWE6IG51bWJlciA9IHZhbHVlU3RyLmluZGV4T2YoXCIsXCIpO1xyXG4gICAgaWYgKGNvbW1hID4gMCkge1xyXG4gICAgICBsZXQgcGFyZW50SWQ6IG51bWJlciA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIuc3Vic3RyKDAsIGNvbW1hKSk7XHJcbiAgICAgIGxldCBmbGRJZHg6IG51bWJlciA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIuc3Vic3RyKGNvbW1hICsgMSkpO1xyXG4gICAgICB0ZW1wRmllbGQgPSAoKHBhcmVudElkICE9PSAwKVxyXG4gICAgICAgID8gdGhpcy5nZXRGaWVsZERlZihwYXJlbnRJZCwgZmxkSWR4KVxyXG4gICAgICAgIDogdGhpcy5nZXRGaWVsZERlZihmbGRJZHgpKTtcclxuICAgICAgcGFyZW50LnZhbHVlID0gcGFyZW50SWQ7XHJcbiAgICAgIHZlZS52YWx1ZSA9IGZsZElkeDtcclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wRmllbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCB0aGUgZmllbGQgZnJvbSBhIDEtYmFzZWQgbWFpbiBwcm9nIGFyZ3VtZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRNYWluUHJvZ0ZpZWxkQnlWYWx1ZVN0cih2YWx1ZVN0cjogc3RyaW5nKTogRmllbGREZWYge1xyXG4gICAgLy8gc3RyaW5nIGlzIDEtYmFzZWQgLSBuZWVkIHRvIHN1YnRyYWN0IDEgdG8gZ2V0IHRvIDAtYmFzZWQgdmFsdWVcclxuICAgIGxldCBmbGRJZHg6IG51bWJlciA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIpIC0gMTtcclxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkRGVmKGZsZElkeCk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZERlZihmbGRJZDogbnVtYmVyKTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGREZWYocGFyZW50OiBudW1iZXIsIGZsZElkeDogbnVtYmVyKTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGREZWYoZmxkSWRPclBhcmVudDogbnVtYmVyLCBmbGRJZHg/OiBudW1iZXIpOiBGaWVsZERlZiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRfMChmbGRJZE9yUGFyZW50KTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRfMShmbGRJZE9yUGFyZW50LCBmbGRJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIGZpZWxkIGJ5IGl0cyBpZHhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkSWRcIj5pZCBvZiB0aGUgZmllbGQgPC9wYXJhbT5cclxuICBwcml2YXRlIGdldEZpZWxkXzAoZmxkSWQ6IG51bWJlcik6IEZpZWxkRGVmIHtcclxuICAgIHJldHVybiB0aGlzLkRhdGFWaWV3LmdldEZpZWxkKGZsZElkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5pdGlhbGl6ZSB0aGUgY3VycmVudCB0YXNrJ3MgZm9ybS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIEluaXRGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuRm9ybSAhPT0gbnVsbCAmJiB0aGlzLmlzT3BlbldpbigpKSB7XHJcbiAgICAgIHRoaXMuRm9ybS5JbkluaXRGb3JtID0gdHJ1ZTtcclxuICAgICAgYXdhaXQgdGhpcy5Gb3JtLmluaXQoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLlNldFJlZnJlc2hUeXBlKENvbnN0YW50cy5UQVNLX1JFRlJFU0hfRk9STSk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLlJlZnJlc2hEaXNwbGF5KCk7XHJcblxyXG4gICAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gICAgICB0aGlzLkZvcm0uSW5Jbml0Rm9ybSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXN1bWUgc3ViZm9ybSBsYXlvdXRcclxuICAvLy8gPC9zdW1tYXJ5XHJcbiAgUmVzdW1lU3ViZm9ybUxheW91dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZvcm0gIT09IG51bGwpIHtcclxuICAgICAgbGV0IHN1YkZvcm1DdHJsOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+dGhpcy5Gb3JtLmdldFN1YkZvcm1DdHJsKCk7XHJcbiAgICAgIGlmIChzdWJGb3JtQ3RybCAhPT0gbnVsbCAmJiB0aGlzLnNob3VsZFJlc3VtZVN1YmZvcm1MYXlvdXQpIHtcclxuICAgICAgICAvLyByZWZyZXNoIHRoZSB2aXNpYmxlIHByb3BlcnR5XHJcbiAgICAgICAgQ29tbWFuZHMuYWRkT3BlcmF0aW9uV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX1BST1BFUlRZLCBzdWJGb3JtQ3RybCwgMCxcclxuICAgICAgICAgICBIdG1sUHJvcGVydGllcy5WaXNpYmxlICwgc3ViRm9ybUN0cmwuaXNWaXNpYmxlKCkpO1xyXG5cclxuICAgICAgICB0aGlzLnNob3VsZFJlc3VtZVN1YmZvcm1MYXlvdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgd2hpY2ggd2FzIGxhc3QgcGFya2VkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRlcHRoXCI+dGhlIGdlbmVyYXRpb248L3BhcmFtPlxyXG4gIEdldExhc3RQYXJrZWRDdHJsTmFtZShkZXB0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBhbmNlc3RvcjogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+dGhpcy5HZXRUYXNrQW5jZXN0b3IoZGVwdGgpO1xyXG4gICAgaWYgKGFuY2VzdG9yID09PSBudWxsIHx8IGFuY2VzdG9yLl9sYXN0UGFya2VkQ3RybCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICByZXR1cm4gYW5jZXN0b3IuX2xhc3RQYXJrZWRDdHJsLk5hbWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBmb3JtIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IEZvcm0gaXMgdGhlIGZvcm0gb2YgdGhlIHRhc2s8L3JldHVybnM+XHJcbiAgZ2V0Rm9ybSgpOiBNZ0Zvcm1CYXNlIHtcclxuICAgIHJldHVybiB0aGlzLkZvcm07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNldCB0YXNrJ3MgZm9ybS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gRm9ybSBpcyB0aGUgZm9ybSBvZiB0aGUgdGFzazwvcmV0dXJucz5cclxuICBTZXRGb3JtKHZhbHVlOiBNZ0Zvcm1CYXNlKTogTWdGb3JtQmFzZSB7XHJcbiAgICB0aGlzLkZvcm0gPSB2YWx1ZTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZFeGlzdFByb3AocHJvcElkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBleGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLl9wcm9wVGFiICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BUYWIuZ2V0UHJvcEJ5SWQocHJvcElkKTtcclxuICAgICAgZXhpc3QgPSAocHJvcCAhPT0gbnVsbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgdGFzayBwcm9wZXJ0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5JZCBvZiB0aGUgcmVxdWVzdGVkIHByb3BlcnR5XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgZ2V0UHJvcChwcm9wSWQ6IG51bWJlcik6IFByb3BlcnR5IHtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Byb3BUYWIgIT09IG51bGwpIHtcclxuICAgICAgcHJvcCA9IHRoaXMuX3Byb3BUYWIuZ2V0UHJvcEJ5SWQocHJvcElkKTtcclxuXHJcbiAgICAgIC8vIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0IGV4aXN0IHRoZW4gY3JlYXRlIGEgbmV3IHByb3BlcnR5IGFuZCBnaXZlIGl0IHRoZSBkZWZhdWx0IHZhbHVlXHJcbiAgICAgIC8vIGluIGFkZGl0aW9uIGFkZCB0aGlzIHByb3BlcnR5IHRvIHRoZSBwcm9wZXJ0aWVzIHRhYmxlXHJcbiAgICAgIGlmIChwcm9wID09PSBudWxsKSB7XHJcbiAgICAgICAgcHJvcCA9IFByb3BlcnR5LmdldERlZmF1bHRQcm9wKHByb3BJZCwgR3VpQ29uc3RhbnRzLlBBUkVOVF9UWVBFX1RBU0ssIHRoaXMpO1xyXG4gICAgICAgIGlmIChwcm9wICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBwcm9wLlN0dWRpb1ZhbHVlID0gcHJvcC5nZXRPcmdWYWx1ZSgpO1xyXG4gICAgICAgICAgdGhpcy5fcHJvcFRhYi5hZGRQcm9wKHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3A7XHJcbiAgfVxyXG5cclxuICBHZXRDb21wdXRlZFByb3BlcnR5KHByb3BJZDogbnVtYmVyKTogUHJvcGVydHkge1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYiAhPT0gbnVsbClcclxuICAgICAgcHJvcCA9IHRoaXMuX3Byb3BUYWIuZ2V0UHJvcEJ5SWQocHJvcElkKTtcclxuICAgIHJldHVybiBwcm9wO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgY29tcG9uZW50IGlkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q29tcElkeCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBJZHg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhpcyBpcyBmaXJzdCByZWZyZXNoXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIElzRmlyc3RSZWZyZXNoT2ZQcm9wcygpOiBib29sZWFuIHtcclxuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBFdmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIElELlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZXhwSWRcIj5FeHAgSUQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1R5cGVcIj5leHBlY3RlZCByZXR1cm4gdHlwZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuZ3RoXCI+RXhwZWN0ZWQgbGVuIC0gaXMgbm90IHVzZWQsIGl0IG11c3QgYmUgaGVyZSBiZWNhdXNlIG9mIGNvbXB1dGFiaWxpdHkgd2l0aCBSaWNoIENsaWVudDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGVudFR5cGVVbmljb2RlXCI+c2hvdWxkIHRoZSByZXN1bHQgYmUgdW5pY29kZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzQ2VsbFR5cGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFsd2F5c0V2YWx1YXRlXCI+Zm9yIGZvcm0gcHJvcGVydGllcyBhbmQgc29tZSBjb250cm9sIHByb3BlcnRpZXMgd2UgYWx3YXlzIGV2YWx1YXRlIGV4cHJlc3Npb25zPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ3YXNFdmFsdWF0ZWRcIj5pbmRpY2F0ZXMgd2hldGhlciB0aGUgZXhwcmVzc2lvbiB3YXMgZXZhbHVhdGVkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+ZXZhbHVhdGVkIHZhbHVlPC9yZXR1cm5zPlxyXG4gIGFzeW5jIEV2YWx1YXRlRXhwcmVzc2lvbihleHBJZDogbnVtYmVyLCByZXNUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBsZW5ndGg6IG51bWJlciwgY29udGVudFR5cGVVbmljb2RlOiBib29sZWFuLCByZXNDZWxsVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgYWx3YXlzRXZhbHVhdGU6IGJvb2xlYW4sIHdhc0V2YWx1YXRlZDogUmVmUGFyYW08Ym9vbGVhbj4pOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gbnVsbDtcclxuICAgIHdhc0V2YWx1YXRlZC52YWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChhbHdheXNFdmFsdWF0ZSB8fCB0aGlzLkRhdGFWaWV3V2FzUmV0cmlldmVkKSB7XHJcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuQ2FsY3VsYXRlRXhwcmVzc2lvbihleHBJZCwgcmVzVHlwZSwgbGVuZ3RoKTtcclxuICAgICAgd2FzRXZhbHVhdGVkLnZhbHVlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBHZXRFeHByZXNzaW9uU3RvcmFnZShleHBJZDogbnVtYmVyKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5HZXRFeHByZXNzaW9uU3RvcmFnZShleHBJZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENhbGN1bGF0ZSBleHByZXNpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4cElkXCI+VGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1R5cGVcIj5UaGUgZXhwZWN0ZWQgcmVzdWx0IHR5cGUuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW5ndGhcIj5UaGUgZXhwZWN0ZWQgbGVuZ3RoIG9mIHRoZSByZXN1bHQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZW50VHlwZVVuaWNvZGVcIj5EZW5vdGVzIHdoZXRoZXIgdGhlIHJlc3VsdCBpcyBleHBlY3RlZCB0byBiZSBhIHVuaWNvZGUgc3RyaW5nLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzQ2VsbFR5cGVcIj5Ob3QgdXNlZC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYXN5bmMgQ2FsY3VsYXRlRXhwcmVzc2lvbihleHBJZDogbnVtYmVyLCByZXNUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBsZW5ndGg6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPntcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXCJcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNyZWF0ZXMgYSBtZ2Zvcm0gb2JqZWN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IENvbnN0cnVjdE1nRm9ybShhbHJlYWR5U2V0UGFyZW50Rm9ybTogUmVmUGFyYW08Ym9vbGVhbj4pOiBNZ0Zvcm1CYXNlIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgdGFzayBpcyBzdGFydGVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc1N0YXJ0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0ZWxscyB3aGV0aGVyIHRoZSB0YXNrIGlzIGFib3J0aW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc0Fib3J0aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYW5jZXN0b3Igb2YgdGhlIEd1aVRhc2tCYXNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImdlbmVyYXRpb25cIj5vZiB0aGUgYW5jZXN0b3IgdGFzazwvcGFyYW0+XHJcbiAgYWJzdHJhY3QgR2V0VGFza0FuY2VzdG9yKGdlbmVyYXRpb246IG51bWJlcik6IElUYXNrO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCB0aGUgY29udGV4dCB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IEdldENvbnRleHRUYXNrKCk6IElUYXNrO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybnMgdGFzayBkZXB0aFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhYnN0cmFjdCBHZXRUYXNrRGVwdGgoKTogbnVtYmVyO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlZnJlc2ggdGhlIGRpc3BsYXksIHBhaW50IHRoZSBjb250cm9scyBhbmQgdGhlaXIgcHJvcGVydGllcyBhZ2FpbiA8L3N1bW1hcnk+XHJcbiAgYWJzdHJhY3QgUmVmcmVzaERpc3BsYXkoKTogdm9pZCA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZ2V0IHRoZSB2YWx1ZSBvZiBhIGZpZWxkLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmllbGREZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc051bGxcIj48L3BhcmFtPlxyXG4gIC8vIFRPRE8gc2FkaGFuIHJlbW92ZSB1bnVzZWRcclxuICAvLyBhYnN0cmFjdCBhc3luYyBnZXRGaWVsZFZhbHVlKGZpZWxkRGVmOiBGaWVsZERlZiwgdmFsdWU6IFJlZlBhcmFtPHN0cmluZz4sIGlzTnVsbDogUmVmUGFyYW08Ym9vbGVhbj4pOiBQcm9taXNlPHZvaWQ+IDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBnZXQgdGhlIGRpc3BsYXkgdmFsdWUgb2YgYSBmaWVsZC4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZpZWxkRGVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNOdWxsXCI+PC9wYXJhbT5cclxuICBhYnN0cmFjdCBnZXRGaWVsZERpc3BsYXlWYWx1ZShmaWVsZERlZjogRmllbGREZWYsIHZhbHVlOiBSZWZQYXJhbTxzdHJpbmc+LCBpc051bGw6IFJlZlBhcmFtPGJvb2xlYW4+KTogdm9pZCA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdXBkYXRlcyB0aGUgZmllbGQncyB2YWx1ZSBhbmQgc3RhcnRzIHJlY29tcHV0ZS4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZpZWxkRGVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNOdWxsXCI+PC9wYXJhbT5cclxuICBhYnN0cmFjdCBVcGRhdGVGaWVsZFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoZmllbGREZWY6IEZpZWxkRGVmLCB2YWx1ZTogc3RyaW5nLCBpc051bGw6IGJvb2xlYW4pOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBhIGZpZWxkIGZyb20gdGhlIHRhc2sudHJhdmVsIGJ5IHBhcmVudHMgKGkuZS4gTk9UIGJ5IHRyaWdnZXJpbmcgdGFza3MpLjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmVudFwiPmdlbmVyYXRpb24gbnVtYmVyICgwIGlzIGN1cnJlbnQgdGFzayk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkSWR4XCI+dGhlIGZpZWxkIGluZGV4IHdpdGhpbiBpdHMgdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgaWQgb2YgdGhlIGZpZWxkIGRlc2NyaWJlZCBieSBwYXJlbnQgKyBpZHg8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRGaWVsZF8xKHBhcmVudDogbnVtYmVyLCBmbGRJZHg6IG51bWJlcik6IEZpZWxkRGVmIHtcclxuXHJcbiAgICBzd2l0Y2ggKHBhcmVudCkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGREZWYoZmxkSWR4KTtcclxuXHJcbiAgICAgIGNhc2UgR3VpVGFza0Jhc2UuTUFJTl9QUkdfUEFSRU5UX0lEOlxyXG4gICAgICAgIC8vIGZpbmQgdGhlIG1haW4gcHJvZ3JhbSB1c2luZyB0aGUgY29tcG9uZW50IGlkIChjdGwgaWR4KVxyXG4gICAgICAgIGxldCBjb21wTWFpblByb2c6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPiBHdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZS5HZXRNYWluUHJvZ0J5Q3RsSWR4KHRoaXMuQ29udGV4dElELCB0aGlzLl9jdGxJZHgpO1xyXG4gICAgICAgIHJldHVybiBjb21wTWFpblByb2cuZ2V0RmllbGREZWYoZmxkSWR4KTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcGFyZW50LS07XHJcbiAgICAgICAgaWYgKHRoaXMuU3R1ZGlvUGFyZW50VGFzayAhPSBudWxsKVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuU3R1ZGlvUGFyZW50VGFzay5nZXRGaWVsZERlZihwYXJlbnQsIGZsZElkeCk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIGF0dHJpYnV0ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxBdHRyaWJ1dGVzKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICBsZXQgdGFnOiBzdHJpbmcgPSBwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICBwYXJzZXIuYWRkMkN1cnJJbmRleCh0YWcuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX1RBU0spICsgWE1MQ29uc3RhbnRzLk1HX1RBR19UQVNLLmxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgdG9rZW5zLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gdG9rZW5zLmdldF9JdGVtKGopO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gdG9rZW5zLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICBpZiAoIXRoaXMuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWVTdHIpICYmIEV2ZW50cy5TaG91bGRMb2coTG9nZ2VyX0xvZ0xldmVscy5EZXZlbG9wbWVudCkpXHJcbiAgICAgICAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyhOU3RyaW5nLkZvcm1hdChcIkluIFRhc2tCYXNlLmZpbGxBdHRyaWJ1dGVzKCk6IFVucHJvY2Vzc2VkKCEpIGF0dHJpYnV0ZTogJ3swfScgPSAnezF9J1wiLCBhdHRyaWJ1dGUsIHZhbHVlU3RyKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTsgLy8gdG8gZGVsZXRlIFwiPlwiIHRvb1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdGFzayBhdHRyaWJ1dGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlU3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1RhZ1Byb2Nlc3NlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9BUFBMX0dVSUQ6XHJcbiAgICAgICAgdGhpcy5BcHBsaWNhdGlvbkd1aWQgPSB2YWx1ZVN0cjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfUFJPR1JBTV9JU046XHJcbiAgICAgICAgdGhpcy5Qcm9ncmFtSXNuID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1RBU0tfSVNOOlxyXG4gICAgICAgIHRoaXMuVGFza0lzbiA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9UT09MS0lUX1BBUkVOVF9UQVNLOlxyXG4gICAgICAgIGlmIChOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKSAhPT0gMClcclxuICAgICAgICAgIHRoaXMuU3R1ZGlvUGFyZW50VGFzayA9IDxHdWlUYXNrQmFzZT5HdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh2YWx1ZVN0cik7XHJcblxyXG4gICAgICAgIHRoaXMuSXNTdWJ0YXNrID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS0lEOlxyXG4gICAgICAgIHRoaXMuc2V0VGFza0lkKHZhbHVlU3RyKTtcclxuICAgICAgICBpZiAoRXZlbnRzLlNob3VsZExvZyhMb2dnZXJfTG9nTGV2ZWxzLkRldmVsb3BtZW50KSlcclxuICAgICAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKFwiVEFTSzogXCIgKyB0aGlzLl90YXNrVGFnKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfQ1RMX0lEWDpcclxuICAgICAgICB0aGlzLnNldEN0bEFuZENvbXBJZHgodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9NQUlOUFJHOlxyXG4gICAgICAgIHRoaXMuc2V0TWFpblByZyh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX05VTExfQVJJVEhNRVRJQzpcclxuICAgICAgICB0aGlzLnNldE51bGxBcml0aG1ldGljKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJBQ1RJVkU6XHJcbiAgICAgICAgdGhpcy5zZXRJc0ludGVyYWNpdmUodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9PUEVOX1dJTjpcclxuICAgICAgICB0aGlzLnNldE9wZW5XaW4odmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9BTExPV19FVkVOVFM6XHJcbiAgICAgICAgdGhpcy5TZXRBbGxvd0V2ZW50cyh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lTUFJHOlxyXG4gICAgICAgIHRoaXMuc2V0SXNQcmcodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JQ09OX0ZJTEVfTkFNRTpcclxuICAgICAgICB0aGlzLkljb25GaWxlTmFtZSA9IHZhbHVlU3RyO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfUEFSQUxMRUw6XHJcbiAgICAgICAgdGhpcy5Jc1BhcmFsbGVsID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ST1VURVJfUEFUSDpcclxuICAgICAgICBpZiAodmFsdWVTdHIudHJpbSgpICE9IFwiXCIpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlclBhdGggPSB2YWx1ZVN0cjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5fREVGQVVMVF9ST1VURVJfT1VUTEVUOlxyXG4gICAgICAgIHRoaXMuaW5EZWZhdWx0Um91dGVyT3V0bGV0ID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpc1RhZ1Byb2Nlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc1RhZ1Byb2Nlc3NlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5pdCBkYXRhIGZvciBmb3JtIGFuZCByZXR1cm4gdGhlIGZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvdW5kVGFnTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicGFyZW50Rm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBGb3JtSW5pdERhdGEocGFyZW50Rm9ybTogTWdGb3JtQmFzZSk6IE1nRm9ybUJhc2Uge1xyXG4gICAgbGV0IGFscmVhZHlTZXRQYXJlbnRGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgcmVmQWxyZWFkeVNldFBhcmVudEZvcm06IFJlZlBhcmFtPGJvb2xlYW4+ID0gbmV3IFJlZlBhcmFtKGFscmVhZHlTZXRQYXJlbnRGb3JtKTtcclxuXHJcbiAgICBpZiAodGhpcy5Gb3JtID09PSBudWxsKVxyXG4gICAgICB0aGlzLkZvcm0gPSB0aGlzLkNvbnN0cnVjdE1nRm9ybShyZWZBbHJlYWR5U2V0UGFyZW50Rm9ybSk7XHJcblxyXG4gICAgaWYgKCFhbHJlYWR5U2V0UGFyZW50Rm9ybSlcclxuICAgICAgdGhpcy5Gb3JtLlBhcmVudEZvcm0gPSBwYXJlbnRGb3JtO1xyXG5cclxuICAgIGlmIChFdmVudHMuU2hvdWxkTG9nKExvZ2dlcl9Mb2dMZXZlbHMuRGV2ZWxvcG1lbnQpKVxyXG4gICAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyhcImZvcm1cIik7XHJcblxyXG4gICAgdGhpcy5Gb3JtLmZpbGxEYXRhKHRoaXMpO1xyXG4gICAgcmV0dXJuIHRoaXMuRm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGFzayBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VGFza0lkKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rhc2tUYWcgPSB2YWx1ZVN0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgY3RsSWR4ICYgY29tcElkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzZXRDdGxBbmRDb21wSWR4KHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBpOiBudW1iZXIgPSB2YWx1ZVN0ci5pbmRleE9mKFwiLFwiKTtcclxuICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgdGhpcy5fY3RsSWR4ID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoMCwgaSkpO1xyXG4gICAgICB0aGlzLl9jb21wSWR4ID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoaSArIDEpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IGFuY2VzdG9yIHRhc2sgY29udGFpbmluZyBmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+R3VpVGFza0Jhc2U8L3JldHVybnM+XHJcbiAgR2V0QW5jZXN0b3JUYXNrQ29udGFpbmluZ0Zvcm0oKTogR3VpVGFza0Jhc2Uge1xyXG4gICAgbGV0IHBhcmVudFRhc2s6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPnRoaXMuR2V0VGFza0FuY2VzdG9yKDEpO1xyXG4gICAgd2hpbGUgKHBhcmVudFRhc2sgIT09IG51bGwgJiYgcGFyZW50VGFzay5nZXRGb3JtKCkgPT09IG51bGwpIHtcclxuICAgICAgcGFyZW50VGFzayA9IDxHdWlUYXNrQmFzZT5wYXJlbnRUYXNrLkdldFRhc2tBbmNlc3RvcigxKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50VGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IGlzTWFpblByZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0TWFpblByZyh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc01haW5QcmcgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBudWxsQXJpdGhtZXRpY1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0TnVsbEFyaXRobWV0aWModmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbnVsbEFyaXRobWV0aWMgPSB2YWx1ZVN0ci5jaGFyQXQoMCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBpc0ludGVyYWN0aXZlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRJc0ludGVyYWNpdmUodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5Jc0ludGVyYWN0aXZlID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgb3BlbldpblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0T3Blbldpbih2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vcGVuV2luID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgb3BlbldpblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIFNldE9wZW5XaW4odmFsdWVib29sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vcGVuV2luID0gdmFsdWVib29sO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgQWxsb3dFdmVudHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBTZXRBbGxvd0V2ZW50cyh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbGxvd0V2ZW50cyA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IGlzUHJnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRJc1ByZyh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1ByZyA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIFNob3VsZEV2YWx1YXRlUHJvcGVydHlMb2NhbGx5KHByb3BJZDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCBHZXRUYXNrRGV0YWlscygpOiBzdHJpbmc7XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFNldHMgdGhlIG1lc3NhZ2Ugb24gdGhlIG1lc3NhZ2UgcGFuZSBvZiBzdGF0dXMgYmFyLjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj5tZXNzYWdlIHRvIGJlIHNob3duPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VuZEJlZXBcIj50byBiZWVwIG9yIG5vdDwvcGFyYW0+XHJcbiAgV3JpdGVUb01lc3NhZ2VQYW5lKG1zZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBTdG9yeSAxNDkzMTYgOiBzZW5kIG1lc3NhZ2UgdG8gY29uc29sZVxyXG4gICAgaWYgKG1zZyAhPSBudWxsKVxyXG4gICAgICBjb25zb2xlLmxvZyhtc2cpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB3cml0ZSBhIG1lc3NhZ2UgdG8gc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPmlkIG9mIG1lc3NhZ2UgdG8gYmUgd3JpdHRlbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic291bmRCZWVwXCI+PC9wYXJhbT5cclxuICBXcml0ZVRvTWVzc2FnZVBhbmVieU1zZ0lkKG1zZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtc2c6IHN0cmluZyA9IEV2ZW50cy5HZXRNZXNzYWdlU3RyaW5nKG1zZ0lkKTtcclxuICAgIHRoaXMuV3JpdGVUb01lc3NhZ2VQYW5lKG1zZyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -38,4 +38,4 @@ export class TaskDefinitionIdTableSaxHandler {
38
38
  this._newTaskDefinitionIdHandler(taskDefinitionId);
39
39
  }
40
40
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC90YXNrcy9UYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU16RCxNQUFNLE9BQU8sK0JBQStCO0lBSXpCLDJCQUEyQixHQUFpRCxJQUFJLENBQUM7SUFFbEcsWUFBWSx5QkFBdUU7UUFDakYsSUFBSSxDQUFDLDJCQUEyQixHQUFHLHlCQUF5QixDQUFDO0lBQy9ELENBQUM7SUFNRCxLQUFLLENBQUUsaUNBQXlDO1FBQzlDLElBQUksQ0FBQztZQUNILElBQUksaUNBQWlDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQy9DLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUUsS0FBSyxFQUFFLE1BQU07UUFHOUIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksS0FBSyxHQUFZLEtBQUssQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBVyxDQUFDLENBQUM7UUFDdkIsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRXhCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdELFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRSxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBRXhELElBQUksZ0JBQWdCLEdBQXFCLElBQUksZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSlNPTl9VdGlscywgWE1MQ29uc3RhbnRzIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgVGFza0RlZmluaXRpb25JZCB9IGZyb20gXCIuL1Rhc2tEZWZpbml0aW9uSWRcIjtcclxuaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gSGFuZGxlciBmb3IgcGFyc2luZyBYTUwgc2VyaWFsaXplZCBUYXNrRGVmaW5pdGlvbklkIChURElEKSB0YWJsZS4gVGhlIHBhcnNlciB3aWxsIHBhcnNlIGFsbFxyXG4vLy8gVERJRCBlbnRyaWVzLCBpbnZva2luZyBhbiBhc3NpZ25lZCBkZWxlZ2F0ZSBmb3IgZWFjaCBvbmUgaXQgcGFyc2VzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlciB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBIYW5kbGVyIHRvIGJlIGludm9rZWQgYWZ0ZXIgcGFyc2luZyBlYWNoIFRESUQgZW50cnkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9uZXdUYXNrRGVmaW5pdGlvbklkSGFuZGxlcjogKHRhc2tEZWZpbml0aW9uSWQ6IFRhc2tEZWZpbml0aW9uSWQpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihuZXdUYXNrRGVmaW50aW9uSWRIYW5kbGVyOiAodGFza0RlZmluaXRpb25JZDogVGFza0RlZmluaXRpb25JZCkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy5fbmV3VGFza0RlZmluaXRpb25JZEhhbmRsZXIgPSBuZXdUYXNrRGVmaW50aW9uSWRIYW5kbGVyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBwYXJzZSB0aGUgc3VwcGxpZWQgYnVmZmVyIHVzaW5nIHRoZSBwcmV2aW91c2x5IHN1cHBsaWVkIGhhbmRsZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInhtbFNlcmlhbGl6ZWRUYXNrRGVmaW5pdGlvbnNUYWJsZVwiPjwvcGFyYW0+XHJcbiAgcGFyc2UgKHhtbFNlcmlhbGl6ZWRUYXNrRGVmaW5pdGlvbnNUYWJsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoeG1sU2VyaWFsaXplZFRhc2tEZWZpbml0aW9uc1RhYmxlICE9PSBudWxsKSB7XHJcbiAgICAgICAgSlNPTl9VdGlscy5KU09ORnJvbVhNTCh4bWxTZXJpYWxpemVkVGFza0RlZmluaXRpb25zVGFibGUsIHRoaXMuUGFyc2VKU09OLmJpbmQodGhpcykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBQYXJzZUpTT04gKGVycm9yLCByZXN1bHQpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gcGFyc2luZyB0aGUgWE1MLFxyXG4gICAgaWYgKGVycm9yICE9IG51bGwpIHtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGN0bEluZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGlzUHJnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgcHJnSXNuOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IHRhc2tJc246IG51bWJlciA9IDA7XHJcblxyXG4gICAgbGV0IHRhc2tEZWZJZCA9IHJlc3VsdFsndGFza0RlZmluaXRpb25JZCddWyckJ107XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfQ1RMX0lEWF0pKVxyXG4gICAgICBjdGxJbmRleCA9ICt0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfQ1RMX0lEWF07XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfUFJPR1JBTV9JU05dKSlcclxuICAgICAgcHJnSXNuID0gK3Rhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9QUk9HUkFNX0lTTl07XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS19JU05dKSlcclxuICAgICAgdGFza0lzbiA9ICt0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS19JU05dO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGFza0RlZklkW1hNTENvbnN0YW50cy5NR19BVFRSX0lTUFJHXSkpXHJcbiAgICAgIGlzUHJnID0gdGFza0RlZklkW1hNTENvbnN0YW50cy5NR19BVFRSX0lTUFJHXSA9PT0gJzEnO1xyXG5cclxuICAgIGxldCB0YXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkID0gbmV3IFRhc2tEZWZpbml0aW9uSWQoY3RsSW5kZXgsIHByZ0lzbiwgdGFza0lzbiwgaXNQcmcpO1xyXG4gICAgdGhpcy5fbmV3VGFza0RlZmluaXRpb25JZEhhbmRsZXIodGFza0RlZmluaXRpb25JZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC90YXNrcy9UYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU16RCxNQUFNLE9BQU8sK0JBQStCO0lBSXpCLDJCQUEyQixHQUFpRCxJQUFJLENBQUM7SUFFbEcsWUFBWSx5QkFBdUU7UUFDakYsSUFBSSxDQUFDLDJCQUEyQixHQUFHLHlCQUF5QixDQUFDO0lBQy9ELENBQUM7SUFNRCxLQUFLLENBQUUsaUNBQXlDO1FBQzlDLElBQUk7WUFDRixJQUFJLGlDQUFpQyxLQUFLLElBQUksRUFBRTtnQkFDOUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3RGO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsRUFBRTtZQUNULE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUUsS0FBSyxFQUFFLE1BQU07UUFHOUIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsR0FBVyxDQUFDLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQVksS0FBSyxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFXLENBQUMsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBVyxDQUFDLENBQUM7UUFFeEIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDN0QsUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlELE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzRCxLQUFLLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLENBQUM7UUFFeEQsSUFBSSxnQkFBZ0IsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKU09OX1V0aWxzLCBYTUxDb25zdGFudHMgfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQgeyBUYXNrRGVmaW5pdGlvbklkIH0gZnJvbSBcIi4vVGFza0RlZmluaXRpb25JZFwiO1xyXG5pbXBvcnQgeyBFdmVudHMgfSBmcm9tIFwiLi4vLi4vRXZlbnRzXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBIYW5kbGVyIGZvciBwYXJzaW5nIFhNTCBzZXJpYWxpemVkIFRhc2tEZWZpbml0aW9uSWQgKFRESUQpIHRhYmxlLiBUaGUgcGFyc2VyIHdpbGwgcGFyc2UgYWxsXHJcbi8vLyBURElEIGVudHJpZXMsIGludm9raW5nIGFuIGFzc2lnbmVkIGRlbGVnYXRlIGZvciBlYWNoIG9uZSBpdCBwYXJzZXMuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyIHtcclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEhhbmRsZXIgdG8gYmUgaW52b2tlZCBhZnRlciBwYXJzaW5nIGVhY2ggVERJRCBlbnRyeS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ld1Rhc2tEZWZpbml0aW9uSWRIYW5kbGVyOiAodGFza0RlZmluaXRpb25JZDogVGFza0RlZmluaXRpb25JZCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5ld1Rhc2tEZWZpbnRpb25JZEhhbmRsZXI6ICh0YXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLl9uZXdUYXNrRGVmaW5pdGlvbklkSGFuZGxlciA9IG5ld1Rhc2tEZWZpbnRpb25JZEhhbmRsZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHBhcnNlIHRoZSBzdXBwbGllZCBidWZmZXIgdXNpbmcgdGhlIHByZXZpb3VzbHkgc3VwcGxpZWQgaGFuZGxlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwieG1sU2VyaWFsaXplZFRhc2tEZWZpbml0aW9uc1RhYmxlXCI+PC9wYXJhbT5cclxuICBwYXJzZSAoeG1sU2VyaWFsaXplZFRhc2tEZWZpbml0aW9uc1RhYmxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh4bWxTZXJpYWxpemVkVGFza0RlZmluaXRpb25zVGFibGUgIT09IG51bGwpIHtcclxuICAgICAgICBKU09OX1V0aWxzLkpTT05Gcm9tWE1MKHhtbFNlcmlhbGl6ZWRUYXNrRGVmaW5pdGlvbnNUYWJsZSwgdGhpcy5QYXJzZUpTT04uYmluZCh0aGlzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFBhcnNlSlNPTiAoZXJyb3IsIHJlc3VsdCk6IHZvaWQge1xyXG5cclxuICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBwYXJzaW5nIHRoZSBYTUwsXHJcbiAgICBpZiAoZXJyb3IgIT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY3RsSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgaXNQcmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBwcmdJc246IG51bWJlciA9IDA7XHJcbiAgICBsZXQgdGFza0lzbjogbnVtYmVyID0gMDtcclxuXHJcbiAgICBsZXQgdGFza0RlZklkID0gcmVzdWx0Wyd0YXNrRGVmaW5pdGlvbklkJ11bJyQnXTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9DVExfSURYXSkpXHJcbiAgICAgIGN0bEluZGV4ID0gK3Rhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9DVExfSURYXTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9QUk9HUkFNX0lTTl0pKVxyXG4gICAgICBwcmdJc24gPSArdGFza0RlZklkW1hNTENvbnN0YW50cy5NR19BVFRSX1BST0dSQU1fSVNOXTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9UQVNLX0lTTl0pKVxyXG4gICAgICB0YXNrSXNuID0gK3Rhc2tEZWZJZFtYTUxDb25zdGFudHMuTUdfQVRUUl9UQVNLX0lTTl07XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfSVNQUkddKSlcclxuICAgICAgaXNQcmcgPSB0YXNrRGVmSWRbWE1MQ29uc3RhbnRzLk1HX0FUVFJfSVNQUkddID09PSAnMSc7XHJcblxyXG4gICAgbGV0IHRhc2tEZWZpbml0aW9uSWQ6IFRhc2tEZWZpbml0aW9uSWQgPSBuZXcgVGFza0RlZmluaXRpb25JZChjdGxJbmRleCwgcHJnSXNuLCB0YXNrSXNuLCBpc1ByZyk7XHJcbiAgICB0aGlzLl9uZXdUYXNrRGVmaW5pdGlvbklkSGFuZGxlcih0YXNrRGVmaW5pdGlvbklkKTtcclxuICB9XHJcbn1cclxuIl19
@@ -32,4 +32,4 @@ export class MemoryUtil {
32
32
  return len;
33
33
  }
34
34
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvdXRpbC9NZW1vcnlVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBWXJCLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBbUIsRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxHQUFXO1FBRWpGLElBQUksR0FBRyxJQUFJLENBQUM7WUFDVixPQUFPO1FBRVQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBZUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFZLEVBQUUsSUFBWSxFQUFFLElBQWMsRUFBRSxJQUFZLEVBQUUsR0FBVztRQUN0RixJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ1YsT0FBTztRQUVULEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFlRCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQVksRUFBRSxJQUFZLEVBQUUsSUFBYyxFQUFFLElBQVksRUFBRSxHQUFXO1FBRXZGLElBQUksR0FBRyxJQUFJLENBQUM7WUFDVixPQUFPO1FBRVQsSUFBSSxHQUFHLEdBQWEsSUFBSSxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFNRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQVcsRUFBRSxJQUFZLEVBQUUsR0FBVztRQUNwRCxJQUFJLENBQVMsQ0FBQztRQUVkLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQzFELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtnQkFDbkMsTUFBTTtRQUNWLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE1lbW9yeVV0aWwge1xyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIEphdmEgdmVyc2lvbiBvZiBtZW1zZXQgZnVuY3Rpb24gdG8gY2hhcltdXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwiY2hhckFycmF5XCI+ICBBIGNoYXJhY3RlciBhcnJheVxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJwb3NcIj4gICAgICAgIFBvc2l0aW9uIHRvIHN0YXJ0XHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcImNoYXJUb1NldFwiPiAgQ2hhcmFjdGVyIHRvIHNldFxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJsZW5cIj4gICAgICAgIG51bWJlciBvZiBDaGFyYWN0ZXJzIHRvIHNldFxyXG4vLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgY2hhcl9tZW1zZXQoY2hhckFycmF5OiBzdHJpbmdbXSwgcG9zOiBudW1iZXIsIGNoYXJUb1NldDogc3RyaW5nLCBsZW46IG51bWJlcik6IHZvaWQge1xyXG5cclxuICAgIGlmIChsZW4gPD0gMClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkgPSBpICsgMSkge1xyXG4gICAgICBjaGFyQXJyYXlbcG9zICsgaV0gPSBjaGFyVG9TZXQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBKYXZhIHZlcnNpb24gb2YgbWVtY29weSBmdW5jdGlvbiB0byBjaGFyW11cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJ0b1wiPiAgICBkZXN0aW5hdGlvbiBhcnJheVxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJwb3MxXCI+ICBQb3NpdGlvbiB0byBzdGFydCBpbiBkZXN0aW5hdGlvblxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJmcm9tXCI+ICBzb3VyY2UgYXJyYXlcclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwicG9zMlwiPiAgUG9zaXRpb24gdG8gc3RhcnQgaW4gc291cmNlXHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcImxlblwiPiAgIG51bWJlciBvZiBDaGFyYWN0ZXJzIHRvIGNvcHlcclxuLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIGNoYXJfbWVtY3B5KHRvOiBzdHJpbmdbXSwgcG9zMTogbnVtYmVyLCBmcm9tOiBzdHJpbmdbXSwgcG9zMjogbnVtYmVyLCBsZW46IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGxlbiA8PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIHRvW3BvczEgKyBpXSA9IGZyb21bcG9zMiArIGldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgSmF2YSB2ZXJzaW9uIG9mIG1lbW1vdmUgZnVuY3Rpb24gdG8gY2hhcltdXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwidG9cIj4gICAgZGVzdGluYXRpb24gYXJyYXlcclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwicG9zMVwiPiAgUG9zaXRpb24gdG8gc3RhcnQgaW4gZGVzdGluYXRpb25cclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwiZnJvbVwiPiAgc291cmNlIGFycmF5XHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcInBvczJcIj4gIFBvc2l0aW9uIHRvIHN0YXJ0IGluIHNvdXJjZVxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJsZW5cIj4gICBudW1iZXIgb2YgQ2hhcmFjdGVycyB0byBtb3ZlXHJcbi8vLyA8L3BhcmFtPlxyXG4gIHN0YXRpYyBjaGFyX21lbW1vdmUodG86IHN0cmluZ1tdLCBwb3MxOiBudW1iZXIsIGZyb206IHN0cmluZ1tdLCBwb3MyOiBudW1iZXIsIGxlbjogbnVtYmVyKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGxlbiA8PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHRtcDogc3RyaW5nW10gPSBuZXcgQXJyYXk8c3RyaW5nPihsZW4pO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIHRtcFtpXSA9IGZyb21bcG9zMiArIGldO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIHRvW3BvczEgKyBpXSA9IHRtcFtpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBNYWdpYydzIG1lbV90cmltIGZ1bmN0aW9uXHJcbi8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIG1lbV90cmltKHM6IHN0cmluZ1tdLCBzUG9zOiBudW1iZXIsIGxlbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcblxyXG4gICAgZm9yIChpID0gc1BvcyArIGxlbiAtIDE7IGxlbiA+IDAgJiYgaSA8IHMubGVuZ3RoOyBpLS0sIGxlbi0tKVxyXG4gICAgICBpZiAoc1tpXSAhPT0gXCIgXCIgJiYgc1tpXSAhPT0gXCJcXHgwMDAwXCIpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICByZXR1cm4gbGVuO1xyXG4gIH1cclxufVxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvdXRpbC9NZW1vcnlVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBWXJCLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBbUIsRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxHQUFXO1FBRWpGLElBQUksR0FBRyxJQUFJLENBQUM7WUFDVixPQUFPO1FBRVQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFlRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQVksRUFBRSxJQUFZLEVBQUUsSUFBYyxFQUFFLElBQVksRUFBRSxHQUFXO1FBQ3RGLElBQUksR0FBRyxJQUFJLENBQUM7WUFDVixPQUFPO1FBRVQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBZUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFZLEVBQUUsSUFBWSxFQUFFLElBQWMsRUFBRSxJQUFZLEVBQUUsR0FBVztRQUV2RixJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ1YsT0FBTztRQUVULElBQUksR0FBRyxHQUFhLElBQUksS0FBSyxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekI7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQU1ELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBVyxFQUFFLElBQVksRUFBRSxHQUFXO1FBQ3BELElBQUksQ0FBUyxDQUFDO1FBRWQsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUU7WUFDMUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO2dCQUNuQyxNQUFNO1FBQ1YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTWVtb3J5VXRpbCB7XHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgSmF2YSB2ZXJzaW9uIG9mIG1lbXNldCBmdW5jdGlvbiB0byBjaGFyW11cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJjaGFyQXJyYXlcIj4gIEEgY2hhcmFjdGVyIGFycmF5XHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcInBvc1wiPiAgICAgICAgUG9zaXRpb24gdG8gc3RhcnRcclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwiY2hhclRvU2V0XCI+ICBDaGFyYWN0ZXIgdG8gc2V0XHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcImxlblwiPiAgICAgICAgbnVtYmVyIG9mIENoYXJhY3RlcnMgdG8gc2V0XHJcbi8vLyA8L3BhcmFtPlxyXG4gIHN0YXRpYyBjaGFyX21lbXNldChjaGFyQXJyYXk6IHN0cmluZ1tdLCBwb3M6IG51bWJlciwgY2hhclRvU2V0OiBzdHJpbmcsIGxlbjogbnVtYmVyKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGxlbiA8PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGNoYXJBcnJheVtwb3MgKyBpXSA9IGNoYXJUb1NldDtcclxuICAgIH1cclxuICB9XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIEphdmEgdmVyc2lvbiBvZiBtZW1jb3B5IGZ1bmN0aW9uIHRvIGNoYXJbXVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcInRvXCI+ICAgIGRlc3RpbmF0aW9uIGFycmF5XHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcInBvczFcIj4gIFBvc2l0aW9uIHRvIHN0YXJ0IGluIGRlc3RpbmF0aW9uXHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcImZyb21cIj4gIHNvdXJjZSBhcnJheVxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJwb3MyXCI+ICBQb3NpdGlvbiB0byBzdGFydCBpbiBzb3VyY2VcclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwibGVuXCI+ICAgbnVtYmVyIG9mIENoYXJhY3RlcnMgdG8gY29weVxyXG4vLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgY2hhcl9tZW1jcHkodG86IHN0cmluZ1tdLCBwb3MxOiBudW1iZXIsIGZyb206IHN0cmluZ1tdLCBwb3MyOiBudW1iZXIsIGxlbjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAobGVuIDw9IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpID0gaSArIDEpIHtcclxuICAgICAgdG9bcG9zMSArIGldID0gZnJvbVtwb3MyICsgaV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBKYXZhIHZlcnNpb24gb2YgbWVtbW92ZSBmdW5jdGlvbiB0byBjaGFyW11cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJ0b1wiPiAgICBkZXN0aW5hdGlvbiBhcnJheVxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJwb3MxXCI+ICBQb3NpdGlvbiB0byBzdGFydCBpbiBkZXN0aW5hdGlvblxyXG4vLy8gPC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lID0gXCJmcm9tXCI+ICBzb3VyY2UgYXJyYXlcclxuLy8vIDwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZSA9IFwicG9zMlwiPiAgUG9zaXRpb24gdG8gc3RhcnQgaW4gc291cmNlXHJcbi8vLyA8L3BhcmFtPlxyXG4vLy8gPHBhcmFtIG5hbWUgPSBcImxlblwiPiAgIG51bWJlciBvZiBDaGFyYWN0ZXJzIHRvIG1vdmVcclxuLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIGNoYXJfbWVtbW92ZSh0bzogc3RyaW5nW10sIHBvczE6IG51bWJlciwgZnJvbTogc3RyaW5nW10sIHBvczI6IG51bWJlciwgbGVuOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAobGVuIDw9IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBsZXQgdG1wOiBzdHJpbmdbXSA9IG5ldyBBcnJheTxzdHJpbmc+KGxlbik7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpID0gaSArIDEpIHtcclxuICAgICAgdG1wW2ldID0gZnJvbVtwb3MyICsgaV07XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpID0gaSArIDEpIHtcclxuICAgICAgdG9bcG9zMSArIGldID0gdG1wW2ldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIE1hZ2ljJ3MgbWVtX3RyaW0gZnVuY3Rpb25cclxuLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgbWVtX3RyaW0oczogc3RyaW5nW10sIHNQb3M6IG51bWJlciwgbGVuOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKGkgPSBzUG9zICsgbGVuIC0gMTsgbGVuID4gMCAmJiBpIDwgcy5sZW5ndGg7IGktLSwgbGVuLS0pXHJcbiAgICAgIGlmIChzW2ldICE9PSBcIiBcIiAmJiBzW2ldICE9PSBcIlxceDAwMDBcIilcclxuICAgICAgICBicmVhaztcclxuICAgIHJldHVybiBsZW47XHJcbiAgfVxyXG59XHJcbiJdfQ==