@esotericsoftware/spine-core 4.2.81 → 4.2.82

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.
package/dist/Utils.js CHANGED
@@ -148,8 +148,8 @@ export class Color {
148
148
  const hex = (x) => ("0" + (x * 255).toString(16)).slice(-2);
149
149
  return Number("0x" + hex(this.r) + hex(this.g) + hex(this.b));
150
150
  }
151
- static fromString(hex) {
152
- return new Color().setFromString(hex);
151
+ static fromString(hex, color = new Color()) {
152
+ return color.setFromString(hex);
153
153
  }
154
154
  }
155
155
  export class MathUtils {
@@ -411,4 +411,4 @@ export class WindowedMean {
411
411
  return 0;
412
412
  }
413
413
  }
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBUy9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztJQUV4QyxHQUFHLENBQUUsS0FBYTtRQUNqQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNyQixPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsR0FBRyxDQUFFLEtBQWE7UUFDakIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLENB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QUFVLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDOUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM3QyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUUsR0FBVztRQUM3QixPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O0FBR0YsTUFBTSxPQUFPLFNBQVM7SUFDckIsTUFBTSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5QixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDN0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFFM0MsTUFBTSxDQUFDLEtBQUssQ0FBRSxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDcEQsSUFBSSxLQUFLLEdBQUcsR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzVCLElBQUksS0FBSyxHQUFHLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFFLE9BQWU7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUUsT0FBZTtRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxDQUFTLEVBQUUsQ0FBUztRQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUUsS0FBYTtRQUMzQixPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBRSxDQUFTO1FBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBRSxDQUFTO1FBQ3JCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUUsR0FBVyxFQUFFLEdBQVc7UUFDaEQsT0FBTyxTQUFTLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsSUFBWTtRQUNsRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEUsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBRSxLQUFhO1FBQ2pDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7O0FBR0YsTUFBTSxPQUFnQixhQUFhO0lBRWxDLEtBQUssQ0FBRSxLQUFhLEVBQUUsR0FBVyxFQUFFLENBQVM7UUFDM0MsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sR0FBSSxTQUFRLGFBQWE7SUFDM0IsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVwQixZQUFhLEtBQWE7UUFDekIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYSxDQUFFLENBQVM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0UsQ0FBQztDQUNEO0FBRUQsTUFBTSxPQUFPLE1BQU8sU0FBUSxHQUFHO0lBQzlCLFlBQWEsS0FBYTtRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsYUFBYSxDQUFFLENBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxLQUFLO0lBQ2pCLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssV0FBVyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxTQUFTLENBQUssTUFBb0IsRUFBRSxXQUFtQixFQUFFLElBQWtCLEVBQUUsU0FBaUIsRUFBRSxXQUFtQjtRQUN6SCxLQUFLLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxXQUFXLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEYsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUssS0FBbUIsRUFBRSxTQUFpQixFQUFFLE9BQWUsRUFBRSxLQUFRO1FBQ3JGLEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUssS0FBZSxFQUFFLElBQVksRUFBRSxRQUFhLENBQUM7UUFDcEUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE9BQU8sSUFBSSxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFLLEtBQWUsRUFBRSxJQUFZLEVBQUUsUUFBYSxDQUFDO1FBQzNFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkMsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUssSUFBWSxFQUFFLFlBQWU7UUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUksSUFBSSxDQUFDLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUU7WUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUUsSUFBWTtRQUNqQyxJQUFJLEtBQUssQ0FBQyxxQkFBcUI7WUFDOUIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUN6QixDQUFDO1lBQ0wsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7WUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO2dCQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUUsSUFBWTtRQUNqQyxJQUFJLEtBQUssQ0FBQyxxQkFBcUI7WUFDOUIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUN2QixDQUFDO1lBQ0wsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7WUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO2dCQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUUsS0FBb0I7UUFDeEMsT0FBTyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBRSxLQUFhO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakUsQ0FBQztJQUVELDJJQUEySTtJQUMzSSxNQUFNLENBQUMscUJBQXFCLENBQUUsS0FBYSxFQUFFLEtBQWU7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUssS0FBZSxFQUFFLE9BQVUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUMvRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFFLElBQVMsRUFBRSxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUFHRixNQUFNLE9BQU8sVUFBVTtJQUN0QixNQUFNLENBQUMsUUFBUSxDQUFFLFFBQWtCO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZJLENBQUM7SUFDRixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sSUFBSTtJQUNSLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO0lBQ3ZCLFlBQVksQ0FBVTtJQUU5QixZQUFhLFlBQXFCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxDQUFFLElBQU87UUFDWixJQUFLLElBQVksQ0FBQyxLQUFLO1lBQUcsSUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUUsS0FBbUI7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUs7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNEO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFDQztJQUFjO0lBQWxDLFlBQW9CLElBQUksQ0FBQyxFQUFTLElBQUksQ0FBQztRQUFuQixNQUFDLEdBQUQsQ0FBQyxDQUFJO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBSTtJQUN2QyxDQUFDO0lBRUQsR0FBRyxDQUFFLENBQVMsRUFBRSxDQUFTO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNO1FBQ0wsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVM7UUFDUixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFDdEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRU4sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDN0IsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNmLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFdEIsTUFBTTtRQUNMLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUVwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDRixDQUFDO0NBQ0Q7QUFPRCxNQUFNLE9BQU8sWUFBWTtJQUN4QixNQUFNLENBQWdCO0lBQ3RCLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBRWIsWUFBYSxhQUFxQixFQUFFO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQVMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGFBQWE7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBRSxLQUFhO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBKdWx5IDI4LCAyMDIzLiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjMsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3JcbiAqIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSEVcbiAqIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBNaXhCbGVuZCB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ01hcDxUPiB7XG5cdFtrZXk6IHN0cmluZ106IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnRTZXQge1xuXHRhcnJheSA9IG5ldyBBcnJheTxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG5cblx0YWRkICh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0bGV0IGNvbnRhaW5zID0gdGhpcy5jb250YWlucyh2YWx1ZSk7XG5cdFx0dGhpcy5hcnJheVt2YWx1ZSB8IDBdID0gdmFsdWUgfCAwO1xuXHRcdHJldHVybiAhY29udGFpbnM7XG5cdH1cblxuXHRjb250YWlucyAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLmFycmF5W3ZhbHVlIHwgMF0gIT0gdW5kZWZpbmVkO1xuXHR9XG5cblx0cmVtb3ZlICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5hcnJheVt2YWx1ZSB8IDBdID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y2xlYXIgKCkge1xuXHRcdHRoaXMuYXJyYXkubGVuZ3RoID0gMDtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nU2V0IHtcblx0ZW50cmllczogU3RyaW5nTWFwPGJvb2xlYW4+ID0ge307XG5cdHNpemUgPSAwO1xuXG5cdGFkZCAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGxldCBjb250YWlucyA9IHRoaXMuZW50cmllc1t2YWx1ZV07XG5cdFx0dGhpcy5lbnRyaWVzW3ZhbHVlXSA9IHRydWU7XG5cdFx0aWYgKCFjb250YWlucykge1xuXHRcdFx0dGhpcy5zaXplKys7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0YWRkQWxsICh2YWx1ZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0bGV0IG9sZFNpemUgPSB0aGlzLnNpemU7XG5cdFx0Zm9yICh2YXIgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dGhpcy5hZGQodmFsdWVzW2ldKTtcblx0XHRyZXR1cm4gb2xkU2l6ZSAhPSB0aGlzLnNpemU7XG5cdH1cblxuXHRjb250YWlucyAodmFsdWU6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLmVudHJpZXNbdmFsdWVdO1xuXHR9XG5cblx0Y2xlYXIgKCkge1xuXHRcdHRoaXMuZW50cmllcyA9IHt9O1xuXHRcdHRoaXMuc2l6ZSA9IDA7XG5cdH1cbn1cblxuZXhwb3J0IHR5cGUgTnVtYmVyQXJyYXlMaWtlID0gQXJyYXk8bnVtYmVyPiB8IEZsb2F0MzJBcnJheTtcbmV4cG9ydCB0eXBlIEludEFycmF5TGlrZSA9IEFycmF5PG51bWJlcj4gfCBJbnQxNkFycmF5O1xuXG5leHBvcnQgaW50ZXJmYWNlIERpc3Bvc2FibGUge1xuXHRkaXNwb3NlICgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RvcmFibGUge1xuXHRyZXN0b3JlICgpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgQ29sb3Ige1xuXHRwdWJsaWMgc3RhdGljIFdISVRFID0gbmV3IENvbG9yKDEsIDEsIDEsIDEpO1xuXHRwdWJsaWMgc3RhdGljIFJFRCA9IG5ldyBDb2xvcigxLCAwLCAwLCAxKTtcblx0cHVibGljIHN0YXRpYyBHUkVFTiA9IG5ldyBDb2xvcigwLCAxLCAwLCAxKTtcblx0cHVibGljIHN0YXRpYyBCTFVFID0gbmV3IENvbG9yKDAsIDAsIDEsIDEpO1xuXHRwdWJsaWMgc3RhdGljIE1BR0VOVEEgPSBuZXcgQ29sb3IoMSwgMCwgMSwgMSk7XG5cblx0Y29uc3RydWN0b3IgKHB1YmxpYyByOiBudW1iZXIgPSAwLCBwdWJsaWMgZzogbnVtYmVyID0gMCwgcHVibGljIGI6IG51bWJlciA9IDAsIHB1YmxpYyBhOiBudW1iZXIgPSAwKSB7XG5cdH1cblxuXHRzZXQgKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcikge1xuXHRcdHRoaXMuciA9IHI7XG5cdFx0dGhpcy5nID0gZztcblx0XHR0aGlzLmIgPSBiO1xuXHRcdHRoaXMuYSA9IGE7XG5cdFx0cmV0dXJuIHRoaXMuY2xhbXAoKTtcblx0fVxuXG5cdHNldEZyb21Db2xvciAoYzogQ29sb3IpIHtcblx0XHR0aGlzLnIgPSBjLnI7XG5cdFx0dGhpcy5nID0gYy5nO1xuXHRcdHRoaXMuYiA9IGMuYjtcblx0XHR0aGlzLmEgPSBjLmE7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRzZXRGcm9tU3RyaW5nIChoZXg6IHN0cmluZykge1xuXHRcdGhleCA9IGhleC5jaGFyQXQoMCkgPT0gJyMnID8gaGV4LnN1YnN0cigxKSA6IGhleDtcblx0XHR0aGlzLnIgPSBwYXJzZUludChoZXguc3Vic3RyKDAsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5nID0gcGFyc2VJbnQoaGV4LnN1YnN0cigyLCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYiA9IHBhcnNlSW50KGhleC5zdWJzdHIoNCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmEgPSBoZXgubGVuZ3RoICE9IDggPyAxIDogcGFyc2VJbnQoaGV4LnN1YnN0cig2LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0YWRkIChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLnIgKz0gcjtcblx0XHR0aGlzLmcgKz0gZztcblx0XHR0aGlzLmIgKz0gYjtcblx0XHR0aGlzLmEgKz0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0Y2xhbXAgKCkge1xuXHRcdGlmICh0aGlzLnIgPCAwKSB0aGlzLnIgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuciA+IDEpIHRoaXMuciA9IDE7XG5cblx0XHRpZiAodGhpcy5nIDwgMCkgdGhpcy5nID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmcgPiAxKSB0aGlzLmcgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYiA8IDApIHRoaXMuYiA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5iID4gMSkgdGhpcy5iID0gMTtcblxuXHRcdGlmICh0aGlzLmEgPCAwKSB0aGlzLmEgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuYSA+IDEpIHRoaXMuYSA9IDE7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRzdGF0aWMgcmdiYTg4ODhUb0NvbG9yIChjb2xvcjogQ29sb3IsIHZhbHVlOiBudW1iZXIpIHtcblx0XHRjb2xvci5yID0gKCh2YWx1ZSAmIDB4ZmYwMDAwMDApID4+PiAyNCkgLyAyNTU7XG5cdFx0Y29sb3IuZyA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmEgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0c3RhdGljIHJnYjg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHgwMGZmMDAwMCkgPj4+IDE2KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDAwMGZmMDApID4+PiA4KSAvIDI1NTtcblx0XHRjb2xvci5iID0gKCh2YWx1ZSAmIDB4MDAwMDAwZmYpKSAvIDI1NTtcblx0fVxuXG5cdHRvUmdiODg4ICgpIHtcblx0XHRjb25zdCBoZXggPSAoeDogbnVtYmVyKSA9PiAoXCIwXCIgKyAoeCAqIDI1NSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG5cdFx0cmV0dXJuIE51bWJlcihcIjB4XCIgKyBoZXgodGhpcy5yKSArIGhleCh0aGlzLmcpICsgaGV4KHRoaXMuYikpO1xuXHR9XG5cblx0c3RhdGljIGZyb21TdHJpbmcgKGhleDogc3RyaW5nKTogQ29sb3Ige1xuXHRcdHJldHVybiBuZXcgQ29sb3IoKS5zZXRGcm9tU3RyaW5nKGhleCk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hdGhVdGlscyB7XG5cdHN0YXRpYyBQSSA9IDMuMTQxNTkyNztcblx0c3RhdGljIFBJMiA9IE1hdGhVdGlscy5QSSAqIDI7XG5cdHN0YXRpYyBpbnZQSTIgPSAxIC8gTWF0aFV0aWxzLlBJMjtcblx0c3RhdGljIHJhZGlhbnNUb0RlZ3JlZXMgPSAxODAgLyBNYXRoVXRpbHMuUEk7XG5cdHN0YXRpYyByYWREZWcgPSBNYXRoVXRpbHMucmFkaWFuc1RvRGVncmVlcztcblx0c3RhdGljIGRlZ3JlZXNUb1JhZGlhbnMgPSBNYXRoVXRpbHMuUEkgLyAxODA7XG5cdHN0YXRpYyBkZWdSYWQgPSBNYXRoVXRpbHMuZGVncmVlc1RvUmFkaWFucztcblxuXHRzdGF0aWMgY2xhbXAgKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuXHRcdGlmICh2YWx1ZSA8IG1pbikgcmV0dXJuIG1pbjtcblx0XHRpZiAodmFsdWUgPiBtYXgpIHJldHVybiBtYXg7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cblx0c3RhdGljIGNvc0RlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguY29zKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBzaW5EZWcgKGRlZ3JlZXM6IG51bWJlcikge1xuXHRcdHJldHVybiBNYXRoLnNpbihkZWdyZWVzICogTWF0aFV0aWxzLmRlZ1JhZCk7XG5cdH1cblxuXHRzdGF0aWMgYXRhbjJEZWcgKHk6IG51bWJlciwgeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguYXRhbjIoeSwgeCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHR9XG5cblx0c3RhdGljIHNpZ251bSAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIHZhbHVlID4gMCA/IDEgOiB2YWx1ZSA8IDAgPyAtMSA6IDA7XG5cdH1cblxuXHRzdGF0aWMgdG9JbnQgKHg6IG51bWJlcikge1xuXHRcdHJldHVybiB4ID4gMCA/IE1hdGguZmxvb3IoeCkgOiBNYXRoLmNlaWwoeCk7XG5cdH1cblxuXHRzdGF0aWMgY2JydCAoeDogbnVtYmVyKSB7XG5cdFx0bGV0IHkgPSBNYXRoLnBvdyhNYXRoLmFicyh4KSwgMSAvIDMpO1xuXHRcdHJldHVybiB4IDwgMCA/IC15IDogeTtcblx0fVxuXG5cdHN0YXRpYyByYW5kb21Ucmlhbmd1bGFyIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoVXRpbHMucmFuZG9tVHJpYW5ndWxhcldpdGgobWluLCBtYXgsIChtaW4gKyBtYXgpICogMC41KTtcblx0fVxuXG5cdHN0YXRpYyByYW5kb21Ucmlhbmd1bGFyV2l0aCAobWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBtb2RlOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGxldCB1ID0gTWF0aC5yYW5kb20oKTtcblx0XHRsZXQgZCA9IG1heCAtIG1pbjtcblx0XHRpZiAodSA8PSAobW9kZSAtIG1pbikgLyBkKSByZXR1cm4gbWluICsgTWF0aC5zcXJ0KHUgKiBkICogKG1vZGUgLSBtaW4pKTtcblx0XHRyZXR1cm4gbWF4IC0gTWF0aC5zcXJ0KCgxIC0gdSkgKiBkICogKG1heCAtIG1vZGUpKTtcblx0fVxuXG5cdHN0YXRpYyBpc1Bvd2VyT2ZUd28gKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgKHZhbHVlICYgKHZhbHVlIC0gMSkpID09PSAwO1xuXHR9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcblx0cHJvdGVjdGVkIGFic3RyYWN0IGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlcjtcblx0YXBwbHkgKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBzdGFydCArIChlbmQgLSBzdGFydCkgKiB0aGlzLmFwcGx5SW50ZXJuYWwoYSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvdyBleHRlbmRzIEludGVycG9sYXRpb24ge1xuXHRwcm90ZWN0ZWQgcG93ZXIgPSAyO1xuXG5cdGNvbnN0cnVjdG9yIChwb3dlcjogbnVtYmVyKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLnBvd2VyID0gcG93ZXI7XG5cdH1cblxuXHRhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGlmIChhIDw9IDAuNSkgcmV0dXJuIE1hdGgucG93KGEgKiAyLCB0aGlzLnBvd2VyKSAvIDI7XG5cdFx0cmV0dXJuIE1hdGgucG93KChhIC0gMSkgKiAyLCB0aGlzLnBvd2VyKSAvICh0aGlzLnBvd2VyICUgMiA9PSAwID8gLTIgOiAyKSArIDE7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvd091dCBleHRlbmRzIFBvdyB7XG5cdGNvbnN0cnVjdG9yIChwb3dlcjogbnVtYmVyKSB7XG5cdFx0c3VwZXIocG93ZXIpO1xuXHR9XG5cblx0YXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gTWF0aC5wb3coYSAtIDEsIHRoaXMucG93ZXIpICogKHRoaXMucG93ZXIgJSAyID09IDAgPyAtMSA6IDEpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgVXRpbHMge1xuXHRzdGF0aWMgU1VQUE9SVFNfVFlQRURfQVJSQVlTID0gdHlwZW9mIChGbG9hdDMyQXJyYXkpICE9PSBcInVuZGVmaW5lZFwiO1xuXG5cdHN0YXRpYyBhcnJheUNvcHk8VD4gKHNvdXJjZTogQXJyYXlMaWtlPFQ+LCBzb3VyY2VTdGFydDogbnVtYmVyLCBkZXN0OiBBcnJheUxpa2U8VD4sIGRlc3RTdGFydDogbnVtYmVyLCBudW1FbGVtZW50czogbnVtYmVyKSB7XG5cdFx0Zm9yIChsZXQgaSA9IHNvdXJjZVN0YXJ0LCBqID0gZGVzdFN0YXJ0OyBpIDwgc291cmNlU3RhcnQgKyBudW1FbGVtZW50czsgaSsrLCBqKyspIHtcblx0XHRcdGRlc3Rbal0gPSBzb3VyY2VbaV07XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGFycmF5RmlsbDxUPiAoYXJyYXk6IEFycmF5TGlrZTxUPiwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlciwgdmFsdWU6IFQpIHtcblx0XHRmb3IgKGxldCBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgaSsrKVxuXHRcdFx0YXJyYXlbaV0gPSB2YWx1ZTtcblx0fVxuXG5cdHN0YXRpYyBzZXRBcnJheVNpemU8VD4gKGFycmF5OiBBcnJheTxUPiwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogYW55ID0gMCk6IEFycmF5PFQ+IHtcblx0XHRsZXQgb2xkU2l6ZSA9IGFycmF5Lmxlbmd0aDtcblx0XHRpZiAob2xkU2l6ZSA9PSBzaXplKSByZXR1cm4gYXJyYXk7XG5cdFx0YXJyYXkubGVuZ3RoID0gc2l6ZTtcblx0XHRpZiAob2xkU2l6ZSA8IHNpemUpIHtcblx0XHRcdGZvciAobGV0IGkgPSBvbGRTaXplOyBpIDwgc2l6ZTsgaSsrKSBhcnJheVtpXSA9IHZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXHRzdGF0aWMgZW5zdXJlQXJyYXlDYXBhY2l0eTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGlmIChhcnJheS5sZW5ndGggPj0gc2l6ZSkgcmV0dXJuIGFycmF5O1xuXHRcdHJldHVybiBVdGlscy5zZXRBcnJheVNpemUoYXJyYXksIHNpemUsIHZhbHVlKTtcblx0fVxuXG5cdHN0YXRpYyBuZXdBcnJheTxUPiAoc2l6ZTogbnVtYmVyLCBkZWZhdWx0VmFsdWU6IFQpOiBBcnJheTxUPiB7XG5cdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PFQ+KHNpemUpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSBhcnJheVtpXSA9IGRlZmF1bHRWYWx1ZTtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXHRzdGF0aWMgbmV3RmxvYXRBcnJheSAoc2l6ZTogbnVtYmVyKTogTnVtYmVyQXJyYXlMaWtlIHtcblx0XHRpZiAoVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTKVxuXHRcdFx0cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSlcblx0XHRlbHNlIHtcblx0XHRcdGxldCBhcnJheSA9IG5ldyBBcnJheTxudW1iZXI+KHNpemUpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYXJyYXlbaV0gPSAwO1xuXHRcdFx0cmV0dXJuIGFycmF5O1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBuZXdTaG9ydEFycmF5IChzaXplOiBudW1iZXIpOiBJbnRBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEludDE2QXJyYXkoc2l6ZSlcblx0XHRlbHNlIHtcblx0XHRcdGxldCBhcnJheSA9IG5ldyBBcnJheTxudW1iZXI+KHNpemUpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYXJyYXlbaV0gPSAwO1xuXHRcdFx0cmV0dXJuIGFycmF5O1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyB0b0Zsb2F0QXJyYXkgKGFycmF5OiBBcnJheTxudW1iZXI+KSB7XG5cdFx0cmV0dXJuIFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUyA/IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXkpIDogYXJyYXk7XG5cdH1cblxuXHRzdGF0aWMgdG9TaW5nbGVQcmVjaXNpb24gKHZhbHVlOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTID8gTWF0aC5mcm91bmQodmFsdWUpIDogdmFsdWU7XG5cdH1cblxuXHQvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZml4IFdlYktpdCA2MDIgc3BlY2lmaWMgaXNzdWUgZGVzY3JpYmVkIGF0IGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9mb3J1bS9pT1MtMTAtZGlzYXBwZWFyaW5nLWdyYXBoaWNzLTEwMTA5XG5cdHN0YXRpYyB3ZWJraXQ2MDJCdWdmaXhIZWxwZXIgKGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCkge1xuXHR9XG5cblx0c3RhdGljIGNvbnRhaW5zPFQ+IChhcnJheTogQXJyYXk8VD4sIGVsZW1lbnQ6IFQsIGlkZW50aXR5ID0gdHJ1ZSkge1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspXG5cdFx0XHRpZiAoYXJyYXlbaV0gPT0gZWxlbWVudCkgcmV0dXJuIHRydWU7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0c3RhdGljIGVudW1WYWx1ZSAodHlwZTogYW55LCBuYW1lOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdHlwZVtuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpXTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRGVidWdVdGlscyB7XG5cdHN0YXRpYyBsb2dCb25lcyAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBza2VsZXRvbi5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1tpXTtcblx0XHRcdGNvbnNvbGUubG9nKGJvbmUuZGF0YS5uYW1lICsgXCIsIFwiICsgYm9uZS5hICsgXCIsIFwiICsgYm9uZS5iICsgXCIsIFwiICsgYm9uZS5jICsgXCIsIFwiICsgYm9uZS5kICsgXCIsIFwiICsgYm9uZS53b3JsZFggKyBcIiwgXCIgKyBib25lLndvcmxkWSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBQb29sPFQ+IHtcblx0cHJpdmF0ZSBpdGVtcyA9IG5ldyBBcnJheTxUPigpO1xuXHRwcml2YXRlIGluc3RhbnRpYXRvcjogKCkgPT4gVDtcblxuXHRjb25zdHJ1Y3RvciAoaW5zdGFudGlhdG9yOiAoKSA9PiBUKSB7XG5cdFx0dGhpcy5pbnN0YW50aWF0b3IgPSBpbnN0YW50aWF0b3I7XG5cdH1cblxuXHRvYnRhaW4gKCkge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zLnBvcCgpISA6IHRoaXMuaW5zdGFudGlhdG9yKCk7XG5cdH1cblxuXHRmcmVlIChpdGVtOiBUKSB7XG5cdFx0aWYgKChpdGVtIGFzIGFueSkucmVzZXQpIChpdGVtIGFzIGFueSkucmVzZXQoKTtcblx0XHR0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG5cdH1cblxuXHRmcmVlQWxsIChpdGVtczogQXJyYXlMaWtlPFQ+KSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKylcblx0XHRcdHRoaXMuZnJlZShpdGVtc1tpXSk7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5pdGVtcy5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBWZWN0b3IyIHtcblx0Y29uc3RydWN0b3IgKHB1YmxpYyB4ID0gMCwgcHVibGljIHkgPSAwKSB7XG5cdH1cblxuXHRzZXQgKHg6IG51bWJlciwgeTogbnVtYmVyKTogVmVjdG9yMiB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bGVuZ3RoICgpIHtcblx0XHRsZXQgeCA9IHRoaXMueDtcblx0XHRsZXQgeSA9IHRoaXMueTtcblx0XHRyZXR1cm4gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuXHR9XG5cblx0bm9ybWFsaXplICgpIHtcblx0XHRsZXQgbGVuID0gdGhpcy5sZW5ndGgoKTtcblx0XHRpZiAobGVuICE9IDApIHtcblx0XHRcdHRoaXMueCAvPSBsZW47XG5cdFx0XHR0aGlzLnkgLz0gbGVuO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgVGltZUtlZXBlciB7XG5cdG1heERlbHRhID0gMC4wNjQ7XG5cdGZyYW1lc1BlclNlY29uZCA9IDA7XG5cdGRlbHRhID0gMDtcblx0dG90YWxUaW1lID0gMDtcblxuXHRwcml2YXRlIGxhc3RUaW1lID0gRGF0ZS5ub3coKSAvIDEwMDA7XG5cdHByaXZhdGUgZnJhbWVDb3VudCA9IDA7XG5cdHByaXZhdGUgZnJhbWVUaW1lID0gMDtcblxuXHR1cGRhdGUgKCkge1xuXHRcdGxldCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcblx0XHR0aGlzLmRlbHRhID0gbm93IC0gdGhpcy5sYXN0VGltZTtcblx0XHR0aGlzLmZyYW1lVGltZSArPSB0aGlzLmRlbHRhO1xuXHRcdHRoaXMudG90YWxUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0aWYgKHRoaXMuZGVsdGEgPiB0aGlzLm1heERlbHRhKSB0aGlzLmRlbHRhID0gdGhpcy5tYXhEZWx0YTtcblx0XHR0aGlzLmxhc3RUaW1lID0gbm93O1xuXG5cdFx0dGhpcy5mcmFtZUNvdW50Kys7XG5cdFx0aWYgKHRoaXMuZnJhbWVUaW1lID4gMSkge1xuXHRcdFx0dGhpcy5mcmFtZXNQZXJTZWNvbmQgPSB0aGlzLmZyYW1lQ291bnQgLyB0aGlzLmZyYW1lVGltZTtcblx0XHRcdHRoaXMuZnJhbWVUaW1lID0gMDtcblx0XHRcdHRoaXMuZnJhbWVDb3VudCA9IDA7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlMaWtlPFQ+IHtcblx0bGVuZ3RoOiBudW1iZXI7XG5cdFtuOiBudW1iZXJdOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgV2luZG93ZWRNZWFuIHtcblx0dmFsdWVzOiBBcnJheTxudW1iZXI+O1xuXHRhZGRlZFZhbHVlcyA9IDA7XG5cdGxhc3RWYWx1ZSA9IDA7XG5cdG1lYW4gPSAwO1xuXHRkaXJ0eSA9IHRydWU7XG5cblx0Y29uc3RydWN0b3IgKHdpbmRvd1NpemU6IG51bWJlciA9IDMyKSB7XG5cdFx0dGhpcy52YWx1ZXMgPSBuZXcgQXJyYXk8bnVtYmVyPih3aW5kb3dTaXplKTtcblx0fVxuXG5cdGhhc0Vub3VnaERhdGEgKCkge1xuXHRcdHJldHVybiB0aGlzLmFkZGVkVmFsdWVzID49IHRoaXMudmFsdWVzLmxlbmd0aDtcblx0fVxuXG5cdGFkZFZhbHVlICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuYWRkZWRWYWx1ZXMgPCB0aGlzLnZhbHVlcy5sZW5ndGgpIHRoaXMuYWRkZWRWYWx1ZXMrKztcblx0XHR0aGlzLnZhbHVlc1t0aGlzLmxhc3RWYWx1ZSsrXSA9IHZhbHVlO1xuXHRcdGlmICh0aGlzLmxhc3RWYWx1ZSA+IHRoaXMudmFsdWVzLmxlbmd0aCAtIDEpIHRoaXMubGFzdFZhbHVlID0gMDtcblx0XHR0aGlzLmRpcnR5ID0gdHJ1ZTtcblx0fVxuXG5cdGdldE1lYW4gKCkge1xuXHRcdGlmICh0aGlzLmhhc0Vub3VnaERhdGEoKSkge1xuXHRcdFx0aWYgKHRoaXMuZGlydHkpIHtcblx0XHRcdFx0bGV0IG1lYW4gPSAwO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdG1lYW4gKz0gdGhpcy52YWx1ZXNbaV07XG5cdFx0XHRcdHRoaXMubWVhbiA9IG1lYW4gLyB0aGlzLnZhbHVlcy5sZW5ndGg7XG5cdFx0XHRcdHRoaXMuZGlydHkgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLm1lYW47XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9XG59XG4iXX0=
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBUy9FLE1BQU0sT0FBTyxNQUFNO0lBQ2xCLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztJQUV4QyxHQUFHLENBQUUsS0FBYTtRQUNqQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNyQixPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsR0FBRyxDQUFFLEtBQWE7UUFDakIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLENB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R0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IE1peEJsZW5kIH0gZnJvbSBcIi4vQW5pbWF0aW9uLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwPFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIEludFNldCB7XG5cdGFycmF5ID0gbmV3IEFycmF5PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcblxuXHRhZGQgKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRsZXQgY29udGFpbnMgPSB0aGlzLmNvbnRhaW5zKHZhbHVlKTtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB2YWx1ZSB8IDA7XG5cdFx0cmV0dXJuICFjb250YWlucztcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuYXJyYXlbdmFsdWUgfCAwXSAhPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZW1vdmUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHR0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hcnJheS5sZW5ndGggPSAwO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdTZXQge1xuXHRlbnRyaWVzOiBTdHJpbmdNYXA8Ym9vbGVhbj4gPSB7fTtcblx0c2l6ZSA9IDA7XG5cblx0YWRkICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0bGV0IGNvbnRhaW5zID0gdGhpcy5lbnRyaWVzW3ZhbHVlXTtcblx0XHR0aGlzLmVudHJpZXNbdmFsdWVdID0gdHJ1ZTtcblx0XHRpZiAoIWNvbnRhaW5zKSB7XG5cdFx0XHR0aGlzLnNpemUrKztcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRhZGRBbGwgKHZhbHVlczogc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRsZXQgb2xkU2l6ZSA9IHRoaXMuc2l6ZTtcblx0XHRmb3IgKHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLmFkZCh2YWx1ZXNbaV0pO1xuXHRcdHJldHVybiBvbGRTaXplICE9IHRoaXMuc2l6ZTtcblx0fVxuXG5cdGNvbnRhaW5zICh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW50cmllc1t2YWx1ZV07XG5cdH1cblxuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5lbnRyaWVzID0ge307XG5cdFx0dGhpcy5zaXplID0gMDtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBOdW1iZXJBcnJheUxpa2UgPSBBcnJheTxudW1iZXI+IHwgRmxvYXQzMkFycmF5O1xuZXhwb3J0IHR5cGUgSW50QXJyYXlMaWtlID0gQXJyYXk8bnVtYmVyPiB8IEludDE2QXJyYXk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZSB7XG5cdGRpc3Bvc2UgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yYWJsZSB7XG5cdHJlc3RvcmUgKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvciB7XG5cdHB1YmxpYyBzdGF0aWMgV0hJVEUgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgUkVEID0gbmV3IENvbG9yKDEsIDAsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEdSRUVOID0gbmV3IENvbG9yKDAsIDEsIDAsIDEpO1xuXHRwdWJsaWMgc3RhdGljIEJMVUUgPSBuZXcgQ29sb3IoMCwgMCwgMSwgMSk7XG5cdHB1YmxpYyBzdGF0aWMgTUFHRU5UQSA9IG5ldyBDb2xvcigxLCAwLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvciAocHVibGljIHI6IG51bWJlciA9IDAsIHB1YmxpYyBnOiBudW1iZXIgPSAwLCBwdWJsaWMgYjogbnVtYmVyID0gMCwgcHVibGljIGE6IG51bWJlciA9IDApIHtcblx0fVxuXG5cdHNldCAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0dGhpcy5yID0gcjtcblx0XHR0aGlzLmcgPSBnO1xuXHRcdHRoaXMuYiA9IGI7XG5cdFx0dGhpcy5hID0gYTtcblx0XHRyZXR1cm4gdGhpcy5jbGFtcCgpO1xuXHR9XG5cblx0c2V0RnJvbUNvbG9yIChjOiBDb2xvcikge1xuXHRcdHRoaXMuciA9IGMucjtcblx0XHR0aGlzLmcgPSBjLmc7XG5cdFx0dGhpcy5iID0gYy5iO1xuXHRcdHRoaXMuYSA9IGMuYTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldEZyb21TdHJpbmcgKGhleDogc3RyaW5nKSB7XG5cdFx0aGV4ID0gaGV4LmNoYXJBdCgwKSA9PSAnIycgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xuXHRcdHRoaXMuciA9IHBhcnNlSW50KGhleC5zdWJzdHIoMCwgMiksIDE2KSAvIDI1NTtcblx0XHR0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTU7XG5cdFx0dGhpcy5iID0gcGFyc2VJbnQoaGV4LnN1YnN0cig0LCAyKSwgMTYpIC8gMjU1O1xuXHRcdHRoaXMuYSA9IGhleC5sZW5ndGggIT0gOCA/IDEgOiBwYXJzZUludChoZXguc3Vic3RyKDYsIDIpLCAxNikgLyAyNTU7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhZGQgKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcikge1xuXHRcdHRoaXMuciArPSByO1xuXHRcdHRoaXMuZyArPSBnO1xuXHRcdHRoaXMuYiArPSBiO1xuXHRcdHRoaXMuYSArPSBhO1xuXHRcdHJldHVybiB0aGlzLmNsYW1wKCk7XG5cdH1cblxuXHRjbGFtcCAoKSB7XG5cdFx0aWYgKHRoaXMuciA8IDApIHRoaXMuciA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5yID4gMSkgdGhpcy5yID0gMTtcblxuXHRcdGlmICh0aGlzLmcgPCAwKSB0aGlzLmcgPSAwO1xuXHRcdGVsc2UgaWYgKHRoaXMuZyA+IDEpIHRoaXMuZyA9IDE7XG5cblx0XHRpZiAodGhpcy5iIDwgMCkgdGhpcy5iID0gMDtcblx0XHRlbHNlIGlmICh0aGlzLmIgPiAxKSB0aGlzLmIgPSAxO1xuXG5cdFx0aWYgKHRoaXMuYSA8IDApIHRoaXMuYSA9IDA7XG5cdFx0ZWxzZSBpZiAodGhpcy5hID4gMSkgdGhpcy5hID0gMTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHN0YXRpYyByZ2JhODg4OFRvQ29sb3IgKGNvbG9yOiBDb2xvciwgdmFsdWU6IG51bWJlcikge1xuXHRcdGNvbG9yLnIgPSAoKHZhbHVlICYgMHhmZjAwMDAwMCkgPj4+IDI0KSAvIDI1NTtcblx0XHRjb2xvci5nID0gKCh2YWx1ZSAmIDB4MDBmZjAwMDApID4+PiAxNikgLyAyNTU7XG5cdFx0Y29sb3IuYiA9ICgodmFsdWUgJiAweDAwMDBmZjAwKSA+Pj4gOCkgLyAyNTU7XG5cdFx0Y29sb3IuYSA9ICgodmFsdWUgJiAweDAwMDAwMGZmKSkgLyAyNTU7XG5cdH1cblxuXHRzdGF0aWMgcmdiODg4VG9Db2xvciAoY29sb3I6IENvbG9yLCB2YWx1ZTogbnVtYmVyKSB7XG5cdFx0Y29sb3IuciA9ICgodmFsdWUgJiAweDAwZmYwMDAwKSA+Pj4gMTYpIC8gMjU1O1xuXHRcdGNvbG9yLmcgPSAoKHZhbHVlICYgMHgwMDAwZmYwMCkgPj4+IDgpIC8gMjU1O1xuXHRcdGNvbG9yLmIgPSAoKHZhbHVlICYgMHgwMDAwMDBmZikpIC8gMjU1O1xuXHR9XG5cblx0dG9SZ2I4ODggKCkge1xuXHRcdGNvbnN0IGhleCA9ICh4OiBudW1iZXIpID0+IChcIjBcIiArICh4ICogMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcblx0XHRyZXR1cm4gTnVtYmVyKFwiMHhcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKSk7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVN0cmluZyAoaGV4OiBzdHJpbmcsIGNvbG9yID0gbmV3IENvbG9yKCkpOiBDb2xvciB7XG5cdFx0cmV0dXJuIGNvbG9yLnNldEZyb21TdHJpbmcoaGV4KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcblx0c3RhdGljIFBJID0gMy4xNDE1OTI3O1xuXHRzdGF0aWMgUEkyID0gTWF0aFV0aWxzLlBJICogMjtcblx0c3RhdGljIGludlBJMiA9IDEgLyBNYXRoVXRpbHMuUEkyO1xuXHRzdGF0aWMgcmFkaWFuc1RvRGVncmVlcyA9IDE4MCAvIE1hdGhVdGlscy5QSTtcblx0c3RhdGljIHJhZERlZyA9IE1hdGhVdGlscy5yYWRpYW5zVG9EZWdyZWVzO1xuXHRzdGF0aWMgZGVncmVlc1RvUmFkaWFucyA9IE1hdGhVdGlscy5QSSAvIDE4MDtcblx0c3RhdGljIGRlZ1JhZCA9IE1hdGhVdGlscy5kZWdyZWVzVG9SYWRpYW5zO1xuXG5cdHN0YXRpYyBjbGFtcCAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG5cdFx0aWYgKHZhbHVlIDwgbWluKSByZXR1cm4gbWluO1xuXHRcdGlmICh2YWx1ZSA+IG1heCkgcmV0dXJuIG1heDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblxuXHRzdGF0aWMgY29zRGVnIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5jb3MoZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQpO1xuXHR9XG5cblx0c3RhdGljIHNpbkRlZyAoZGVncmVlczogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIE1hdGguc2luKGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkKTtcblx0fVxuXG5cdHN0YXRpYyBhdGFuMkRlZyAoeTogbnVtYmVyLCB4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gTWF0aC5hdGFuMih5LCB4KSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdH1cblxuXHRzdGF0aWMgc2lnbnVtICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdmFsdWUgPiAwID8gMSA6IHZhbHVlIDwgMCA/IC0xIDogMDtcblx0fVxuXG5cdHN0YXRpYyB0b0ludCAoeDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHggPiAwID8gTWF0aC5mbG9vcih4KSA6IE1hdGguY2VpbCh4KTtcblx0fVxuXG5cdHN0YXRpYyBjYnJ0ICh4OiBudW1iZXIpIHtcblx0XHRsZXQgeSA9IE1hdGgucG93KE1hdGguYWJzKHgpLCAxIC8gMyk7XG5cdFx0cmV0dXJuIHggPCAwID8gLXkgOiB5O1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXIgKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5yYW5kb21Ucmlhbmd1bGFyV2l0aChtaW4sIG1heCwgKG1pbiArIG1heCkgKiAwLjUpO1xuXHR9XG5cblx0c3RhdGljIHJhbmRvbVRyaWFuZ3VsYXJXaXRoIChtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG1vZGU6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IHUgPSBNYXRoLnJhbmRvbSgpO1xuXHRcdGxldCBkID0gbWF4IC0gbWluO1xuXHRcdGlmICh1IDw9IChtb2RlIC0gbWluKSAvIGQpIHJldHVybiBtaW4gKyBNYXRoLnNxcnQodSAqIGQgKiAobW9kZSAtIG1pbikpO1xuXHRcdHJldHVybiBtYXggLSBNYXRoLnNxcnQoKDEgLSB1KSAqIGQgKiAobWF4IC0gbW9kZSkpO1xuXHR9XG5cblx0c3RhdGljIGlzUG93ZXJPZlR3byAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiB2YWx1ZSAmJiAodmFsdWUgJiAodmFsdWUgLSAxKSkgPT09IDA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVycG9sYXRpb24ge1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgYXBwbHlJbnRlcm5hbCAoYTogbnVtYmVyKTogbnVtYmVyO1xuXHRhcHBseSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHRoaXMuYXBwbHlJbnRlcm5hbChhKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93IGV4dGVuZHMgSW50ZXJwb2xhdGlvbiB7XG5cdHByb3RlY3RlZCBwb3dlciA9IDI7XG5cblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMucG93ZXIgPSBwb3dlcjtcblx0fVxuXG5cdGFwcGx5SW50ZXJuYWwgKGE6IG51bWJlcik6IG51bWJlciB7XG5cdFx0aWYgKGEgPD0gMC41KSByZXR1cm4gTWF0aC5wb3coYSAqIDIsIHRoaXMucG93ZXIpIC8gMjtcblx0XHRyZXR1cm4gTWF0aC5wb3coKGEgLSAxKSAqIDIsIHRoaXMucG93ZXIpIC8gKHRoaXMucG93ZXIgJSAyID09IDAgPyAtMiA6IDIpICsgMTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUG93T3V0IGV4dGVuZHMgUG93IHtcblx0Y29uc3RydWN0b3IgKHBvd2VyOiBudW1iZXIpIHtcblx0XHRzdXBlcihwb3dlcik7XG5cdH1cblxuXHRhcHBseUludGVybmFsIChhOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnBvdyhhIC0gMSwgdGhpcy5wb3dlcikgKiAodGhpcy5wb3dlciAlIDIgPT0gMCA/IC0xIDogMSkgKyAxO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG5cdHN0YXRpYyBTVVBQT1JUU19UWVBFRF9BUlJBWVMgPSB0eXBlb2YgKEZsb2F0MzJBcnJheSkgIT09IFwidW5kZWZpbmVkXCI7XG5cblx0c3RhdGljIGFycmF5Q29weTxUPiAoc291cmNlOiBBcnJheUxpa2U8VD4sIHNvdXJjZVN0YXJ0OiBudW1iZXIsIGRlc3Q6IEFycmF5TGlrZTxUPiwgZGVzdFN0YXJ0OiBudW1iZXIsIG51bUVsZW1lbnRzOiBudW1iZXIpIHtcblx0XHRmb3IgKGxldCBpID0gc291cmNlU3RhcnQsIGogPSBkZXN0U3RhcnQ7IGkgPCBzb3VyY2VTdGFydCArIG51bUVsZW1lbnRzOyBpKyssIGorKykge1xuXHRcdFx0ZGVzdFtqXSA9IHNvdXJjZVtpXTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYXJyYXlGaWxsPFQ+IChhcnJheTogQXJyYXlMaWtlPFQ+LCBmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCB2YWx1ZTogVCkge1xuXHRcdGZvciAobGV0IGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyBpKyspXG5cdFx0XHRhcnJheVtpXSA9IHZhbHVlO1xuXHR9XG5cblx0c3RhdGljIHNldEFycmF5U2l6ZTxUPiAoYXJyYXk6IEFycmF5PFQ+LCBzaXplOiBudW1iZXIsIHZhbHVlOiBhbnkgPSAwKTogQXJyYXk8VD4ge1xuXHRcdGxldCBvbGRTaXplID0gYXJyYXkubGVuZ3RoO1xuXHRcdGlmIChvbGRTaXplID09IHNpemUpIHJldHVybiBhcnJheTtcblx0XHRhcnJheS5sZW5ndGggPSBzaXplO1xuXHRcdGlmIChvbGRTaXplIDwgc2l6ZSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IG9sZFNpemU7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gdmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBlbnN1cmVBcnJheUNhcGFjaXR5PFQ+IChhcnJheTogQXJyYXk8VD4sIHNpemU6IG51bWJlciwgdmFsdWU6IGFueSA9IDApOiBBcnJheTxUPiB7XG5cdFx0aWYgKGFycmF5Lmxlbmd0aCA+PSBzaXplKSByZXR1cm4gYXJyYXk7XG5cdFx0cmV0dXJuIFV0aWxzLnNldEFycmF5U2l6ZShhcnJheSwgc2l6ZSwgdmFsdWUpO1xuXHR9XG5cblx0c3RhdGljIG5ld0FycmF5PFQ+IChzaXplOiBudW1iZXIsIGRlZmF1bHRWYWx1ZTogVCk6IEFycmF5PFQ+IHtcblx0XHRsZXQgYXJyYXkgPSBuZXcgQXJyYXk8VD4oc2l6ZSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIGFycmF5W2ldID0gZGVmYXVsdFZhbHVlO1xuXHRcdHJldHVybiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyBuZXdGbG9hdEFycmF5IChzaXplOiBudW1iZXIpOiBOdW1iZXJBcnJheUxpa2Uge1xuXHRcdGlmIChVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMpXG5cdFx0XHRyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIG5ld1Nob3J0QXJyYXkgKHNpemU6IG51bWJlcik6IEludEFycmF5TGlrZSB7XG5cdFx0aWYgKFV0aWxzLlNVUFBPUlRTX1RZUEVEX0FSUkFZUylcblx0XHRcdHJldHVybiBuZXcgSW50MTZBcnJheShzaXplKVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oc2l6ZSk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IDA7XG5cdFx0XHRyZXR1cm4gYXJyYXk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHRvRmxvYXRBcnJheSAoYXJyYXk6IEFycmF5PG51bWJlcj4pIHtcblx0XHRyZXR1cm4gVXRpbHMuU1VQUE9SVFNfVFlQRURfQVJSQVlTID8gbmV3IEZsb2F0MzJBcnJheShhcnJheSkgOiBhcnJheTtcblx0fVxuXG5cdHN0YXRpYyB0b1NpbmdsZVByZWNpc2lvbiAodmFsdWU6IG51bWJlcikge1xuXHRcdHJldHVybiBVdGlscy5TVVBQT1JUU19UWVBFRF9BUlJBWVMgPyBNYXRoLmZyb3VuZCh2YWx1ZSkgOiB2YWx1ZTtcblx0fVxuXG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmaXggV2ViS2l0IDYwMiBzcGVjaWZpYyBpc3N1ZSBkZXNjcmliZWQgYXQgaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL2ZvcnVtL2lPUy0xMC1kaXNhcHBlYXJpbmctZ3JhcGhpY3MtMTAxMDlcblx0c3RhdGljIHdlYmtpdDYwMkJ1Z2ZpeEhlbHBlciAoYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kKSB7XG5cdH1cblxuXHRzdGF0aWMgY29udGFpbnM8VD4gKGFycmF5OiBBcnJheTxUPiwgZWxlbWVudDogVCwgaWRlbnRpdHkgPSB0cnVlKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKylcblx0XHRcdGlmIChhcnJheVtpXSA9PSBlbGVtZW50KSByZXR1cm4gdHJ1ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRzdGF0aWMgZW51bVZhbHVlICh0eXBlOiBhbnksIG5hbWU6IHN0cmluZykge1xuXHRcdHJldHVybiB0eXBlW25hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSldO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z1V0aWxzIHtcblx0c3RhdGljIGxvZ0JvbmVzIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNrZWxldG9uLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW2ldO1xuXHRcdFx0Y29uc29sZS5sb2coYm9uZS5kYXRhLm5hbWUgKyBcIiwgXCIgKyBib25lLmEgKyBcIiwgXCIgKyBib25lLmIgKyBcIiwgXCIgKyBib25lLmMgKyBcIiwgXCIgKyBib25lLmQgKyBcIiwgXCIgKyBib25lLndvcmxkWCArIFwiLCBcIiArIGJvbmUud29ybGRZKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvb2w8VD4ge1xuXHRwcml2YXRlIGl0ZW1zID0gbmV3IEFycmF5PFQ+KCk7XG5cdHByaXZhdGUgaW5zdGFudGlhdG9yOiAoKSA9PiBUO1xuXG5cdGNvbnN0cnVjdG9yIChpbnN0YW50aWF0b3I6ICgpID0+IFQpIHtcblx0XHR0aGlzLmluc3RhbnRpYXRvciA9IGluc3RhbnRpYXRvcjtcblx0fVxuXG5cdG9idGFpbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuaXRlbXMucG9wKCkhIDogdGhpcy5pbnN0YW50aWF0b3IoKTtcblx0fVxuXG5cdGZyZWUgKGl0ZW06IFQpIHtcblx0XHRpZiAoKGl0ZW0gYXMgYW55KS5yZXNldCkgKGl0ZW0gYXMgYW55KS5yZXNldCgpO1xuXHRcdHRoaXMuaXRlbXMucHVzaChpdGVtKTtcblx0fVxuXG5cdGZyZWVBbGwgKGl0ZW1zOiBBcnJheUxpa2U8VD4pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKVxuXHRcdFx0dGhpcy5mcmVlKGl0ZW1zW2ldKTtcblx0fVxuXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLml0ZW1zLmxlbmd0aCA9IDA7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlY3RvcjIge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIHggPSAwLCBwdWJsaWMgeSA9IDApIHtcblx0fVxuXG5cdHNldCAoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBWZWN0b3IyIHtcblx0XHR0aGlzLnggPSB4O1xuXHRcdHRoaXMueSA9IHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRsZW5ndGggKCkge1xuXHRcdGxldCB4ID0gdGhpcy54O1xuXHRcdGxldCB5ID0gdGhpcy55O1xuXHRcdHJldHVybiBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdH1cblxuXHRub3JtYWxpemUgKCkge1xuXHRcdGxldCBsZW4gPSB0aGlzLmxlbmd0aCgpO1xuXHRcdGlmIChsZW4gIT0gMCkge1xuXHRcdFx0dGhpcy54IC89IGxlbjtcblx0XHRcdHRoaXMueSAvPSBsZW47XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lS2VlcGVyIHtcblx0bWF4RGVsdGEgPSAwLjA2NDtcblx0ZnJhbWVzUGVyU2Vjb25kID0gMDtcblx0ZGVsdGEgPSAwO1xuXHR0b3RhbFRpbWUgPSAwO1xuXG5cdHByaXZhdGUgbGFzdFRpbWUgPSBEYXRlLm5vdygpIC8gMTAwMDtcblx0cHJpdmF0ZSBmcmFtZUNvdW50ID0gMDtcblx0cHJpdmF0ZSBmcmFtZVRpbWUgPSAwO1xuXG5cdHVwZGF0ZSAoKSB7XG5cdFx0bGV0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuXHRcdHRoaXMuZGVsdGEgPSBub3cgLSB0aGlzLmxhc3RUaW1lO1xuXHRcdHRoaXMuZnJhbWVUaW1lICs9IHRoaXMuZGVsdGE7XG5cdFx0dGhpcy50b3RhbFRpbWUgKz0gdGhpcy5kZWx0YTtcblx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMubWF4RGVsdGEpIHRoaXMuZGVsdGEgPSB0aGlzLm1heERlbHRhO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBub3c7XG5cblx0XHR0aGlzLmZyYW1lQ291bnQrKztcblx0XHRpZiAodGhpcy5mcmFtZVRpbWUgPiAxKSB7XG5cdFx0XHR0aGlzLmZyYW1lc1BlclNlY29uZCA9IHRoaXMuZnJhbWVDb3VudCAvIHRoaXMuZnJhbWVUaW1lO1xuXHRcdFx0dGhpcy5mcmFtZVRpbWUgPSAwO1xuXHRcdFx0dGhpcy5mcmFtZUNvdW50ID0gMDtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnJheUxpa2U8VD4ge1xuXHRsZW5ndGg6IG51bWJlcjtcblx0W246IG51bWJlcl06IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dlZE1lYW4ge1xuXHR2YWx1ZXM6IEFycmF5PG51bWJlcj47XG5cdGFkZGVkVmFsdWVzID0gMDtcblx0bGFzdFZhbHVlID0gMDtcblx0bWVhbiA9IDA7XG5cdGRpcnR5ID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3RvciAod2luZG93U2l6ZTogbnVtYmVyID0gMzIpIHtcblx0XHR0aGlzLnZhbHVlcyA9IG5ldyBBcnJheTxudW1iZXI+KHdpbmRvd1NpemUpO1xuXHR9XG5cblx0aGFzRW5vdWdoRGF0YSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkZWRWYWx1ZXMgPj0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXHR9XG5cblx0YWRkVmFsdWUgKHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5hZGRlZFZhbHVlcyA8IHRoaXMudmFsdWVzLmxlbmd0aCkgdGhpcy5hZGRlZFZhbHVlcysrO1xuXHRcdHRoaXMudmFsdWVzW3RoaXMubGFzdFZhbHVlKytdID0gdmFsdWU7XG5cdFx0aWYgKHRoaXMubGFzdFZhbHVlID4gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMSkgdGhpcy5sYXN0VmFsdWUgPSAwO1xuXHRcdHRoaXMuZGlydHkgPSB0cnVlO1xuXHR9XG5cblx0Z2V0TWVhbiAoKSB7XG5cdFx0aWYgKHRoaXMuaGFzRW5vdWdoRGF0YSgpKSB7XG5cdFx0XHRpZiAodGhpcy5kaXJ0eSkge1xuXHRcdFx0XHRsZXQgbWVhbiA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZXMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bWVhbiArPSB0aGlzLnZhbHVlc1tpXTtcblx0XHRcdFx0dGhpcy5tZWFuID0gbWVhbiAvIHRoaXMudmFsdWVzLmxlbmd0aDtcblx0XHRcdFx0dGhpcy5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMubWVhbjtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH1cbn1cbiJdfQ==