valtech-components 4.0.420 → 4.0.421

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.
@@ -229,6 +229,62 @@ export class RetroAudioService {
229
229
  [146.83, 0.18],
230
230
  ]);
231
231
  }
232
+ bubblePop(size = 2, combo = 1) {
233
+ const safeSize = Math.max(2, Math.min(12, Math.round(size)));
234
+ const safeCombo = Math.max(1, Math.min(9, Math.round(combo)));
235
+ const base = 520 + safeSize * 18;
236
+ void this.filteredNoise(0.065, 0.018 + safeSize * 0.0018, 'bandpass', 1200 + safeSize * 85);
237
+ void this.sweep(base, base * 1.9, 0.09, 'sine', 0.026 + safeSize * 0.0014);
238
+ window.setTimeout(() => void this.tone(base * 1.25, 0.055, 'triangle', 0.018), 38);
239
+ if (safeSize >= 5 || safeCombo > 1) {
240
+ window.setTimeout(() => void this.bubbleCombo(safeCombo), 82);
241
+ }
242
+ }
243
+ bubbleCombo(combo = 1) {
244
+ const safeCombo = Math.max(1, Math.min(9, Math.round(combo)));
245
+ const root = 660 + safeCombo * 26;
246
+ void this.sequence([
247
+ [root, 0.045],
248
+ [root * 1.25, 0.055],
249
+ [root * 1.5, 0.07],
250
+ ], 'triangle', 0.024 + safeCombo * 0.0016, 42);
251
+ }
252
+ bubbleInvalid() {
253
+ void this.sequence([
254
+ [246.94, 0.055],
255
+ [196, 0.085],
256
+ ], 'sine', 0.034, 54);
257
+ }
258
+ bubbleSettle(drop = 1) {
259
+ const safeDrop = Math.max(1, Math.min(9, Math.round(drop)));
260
+ void this.filteredNoise(0.055, 0.009 + safeDrop * 0.001, 'lowpass', 360 + safeDrop * 28);
261
+ void this.tone(164.81 + safeDrop * 8, 0.045, 'triangle', 0.012);
262
+ }
263
+ bubbleShuffle() {
264
+ void this.sequence([
265
+ [392, 0.04],
266
+ [523.25, 0.04],
267
+ [659.25, 0.05],
268
+ [783.99, 0.07],
269
+ ], 'sine', 0.024, 38);
270
+ window.setTimeout(() => void this.filteredNoise(0.16, 0.018, 'bandpass', 950), 28);
271
+ }
272
+ bubbleFever() {
273
+ void this.sweep(392, 1567.98, 0.24, 'triangle', 0.034);
274
+ window.setTimeout(() => void this.sequence([[987.77, 0.055], [1318.51, 0.085]], 'sine', 0.025, 48), 128);
275
+ window.setTimeout(() => void this.filteredNoise(0.12, 0.014, 'highpass', 2400), 72);
276
+ }
277
+ bubbleFinish() {
278
+ this.stopMusic();
279
+ void this.sequence([
280
+ [523.25, 0.07],
281
+ [659.25, 0.07],
282
+ [783.99, 0.08],
283
+ [1046.5, 0.13],
284
+ [1318.51, 0.18],
285
+ ], 'triangle', 0.042, 62);
286
+ window.setTimeout(() => void this.filteredNoise(0.18, 0.016, 'bandpass', 1800), 110);
287
+ }
232
288
  chessimalsMove() {
233
289
  void this.sequence([
234
290
  [392, 0.045],
@@ -805,4 +861,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
805
861
  type: Injectable,
806
862
  args: [{ providedIn: 'root' }]
807
863
  }], ctorParameters: () => [] });
808
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cm8tYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9yZXRyby1hdWRpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRCxNQUFNLHdCQUF3QixHQUEwQztJQUN0RSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNyRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBQ0YsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNsRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUN0RSxDQUFDO0FBQ0YsTUFBTSxxQkFBcUIsR0FBc0I7SUFDL0MsR0FBRyxFQUFFLHVDQUF1QztJQUM1QyxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFDRixNQUFNLHFCQUFxQixHQUFzQjtJQUMvQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUdGLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCO1FBckJRLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFJTCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBTzVDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDOUQsWUFBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsa0JBQWtCLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RixlQUFVLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGdCQUFXLEdBQUcsTUFBTSxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGNBQVMsR0FBRyxNQUFNLENBQVMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUE0dUJsRCwyQkFBc0IsR0FBRyxHQUFTLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFZSx5QkFBb0IsR0FBRyxHQUFTLEVBQUU7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFBRSxPQUFPO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2pDLE9BQU87WUFDVCxDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBandCQSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMzRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx1REFBdUQ7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QjtRQUM1QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekQsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1lBQUUsT0FBTztRQUN6QztZQUNFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztZQUMxQywwQkFBMEIsQ0FBQyxPQUFPO1lBQ2xDLDBCQUEwQixDQUFDLE1BQU07U0FDbEMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFtQixNQUFNO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQUUsT0FBTztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzFELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBbUIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLEtBQUssTUFBTTtnQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSztRQUNILEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDVixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ2YsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFzQjtRQUMzQyxNQUFNLEtBQUssR0FBb0M7WUFDN0MsS0FBSyxFQUFFLEdBQUc7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ1gsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDWixLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCO1lBQ0UsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQ1osQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQ2hCLEVBQ0QsVUFBVSxFQUNWLEtBQUssRUFDTCxFQUFFLENBQ0gsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxpQkFBaUI7UUFDZixLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCO1lBQ0UsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGlCQUFpQjtRQUNmLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDaEI7WUFDRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDZixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDZixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixFQUNELFFBQVEsRUFDUixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNwQyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ2xELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBc0I7UUFDcEQsTUFBTSxLQUFLLEdBQW9DO1lBQzdDLEtBQUssRUFBRTtnQkFDTCxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0JBQ2YsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO2dCQUNaLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQzthQUNoQjtZQUNELElBQUksRUFBRTtnQkFDSixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ1osQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dCQUNmLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQzthQUNmO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztnQkFDWixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7Z0JBQ1QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO2dCQUNkLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztnQkFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO2FBQ2Y7U0FDRixDQUFDO1FBQ0YsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRCxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFD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T0FBTyxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzdELENBQUM7K0dBLzFCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbnR5cGUgTm90ZSA9IFtudW1iZXIsIG51bWJlcl07XG50eXBlIE1lbG9keU1vZGUgPSAnbWVudScgfCAnZ2FtZSc7XG50eXBlIENoZXNzaW1hbHNQb3dlciA9ICdlYWdsZScgfCAnYnVsbCcgfCAna2FuZ2Fyb28nIHwgJ2xpb24nO1xudHlwZSBTYW1wbGVDb25maWcgPSB7IHNyYzogc3RyaW5nOyB2b2x1bWU6IG51bWJlciB9O1xudHlwZSBTYW1wbGVNdXNpY0NvbmZpZyA9IHsgc3JjOiBzdHJpbmc7IHZvbHVtZTogbnVtYmVyIH07XG5cbmNvbnN0IENIRVNTSU1BTFNfUE9XRVJfU0FNUExFUzogUmVjb3JkPENoZXNzaW1hbHNQb3dlciwgU2FtcGxlQ29uZmlnPiA9IHtcbiAgZWFnbGU6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUtY3J5LndhdicsIHZvbHVtZTogMC42MiB9LFxuICBidWxsOiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwud2F2Jywgdm9sdW1lOiAwLjkgfSxcbiAga2FuZ2Fyb286IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28tanVtcC5tcDMnLCB2b2x1bWU6IDAuODIgfSxcbiAgbGlvbjogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9saW9uLXJvYXIud2F2Jywgdm9sdW1lOiAwLjgyIH0sXG59O1xuY29uc3QgQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMgPSB7XG4gIHZpY3Rvcnk6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdGFkYS5tcDMnLCB2b2x1bWU6IDAuNzIgfSxcbiAgZGVmZWF0OiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3lvdS1sb3NlLm1wMycsIHZvbHVtZTogMC43MiB9LFxufTtcbmNvbnN0IENIRVNTSU1BTFNfTUVOVV9NVVNJQzogU2FtcGxlTXVzaWNDb25maWcgPSB7XG4gIHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21haW4tbWVudS5tcDMnLFxuICB2b2x1bWU6IDAuMzIsXG59O1xuY29uc3QgQ0hFU1NJTUFMU19HQU1FX01VU0lDOiBTYW1wbGVNdXNpY0NvbmZpZyA9IHtcbiAgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvR2FtZS5tcDMnLFxuICB2b2x1bWU6IDAuMzIsXG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJldHJvQXVkaW9TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0PzogQXVkaW9Db250ZXh0O1xuICBwcml2YXRlIG1hc3RlckdhaW4/OiBHYWluTm9kZTtcbiAgcHJpdmF0ZSBtdXNpY1RpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIG5vdGVJbmRleCA9IDA7XG4gIHByaXZhdGUgYWN0aXZlTWVsb2R5PzogTWVsb2R5TW9kZTtcbiAgcHJpdmF0ZSBwYXVzZWRNZWxvZHk/OiBNZWxvZHlNb2RlO1xuICBwcml2YXRlIHN1c3BlbmRUaW1lcj86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVTYW1wbGVzID0gbmV3IFNldDxIVE1MQXVkaW9FbGVtZW50PigpO1xuICBwcml2YXRlIHNhbXBsZU11c2ljPzogSFRNTEF1ZGlvRWxlbWVudDtcbiAgcHJpdmF0ZSBzYW1wbGVNdXNpY0NvbmZpZz86IFNhbXBsZU11c2ljQ29uZmlnO1xuICBwcml2YXRlIHNhbXBsZU11c2ljU291cmNlPzogTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlO1xuICBwcml2YXRlIHNhbXBsZU11c2ljR2Fpbj86IEdhaW5Ob2RlO1xuICBwcml2YXRlIHBhdXNlZFNhbXBsZU11c2ljPzogU2FtcGxlTXVzaWNDb25maWc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0c1JlYWR5ID0gdGhpcy5taWdyYXRlQ2hlc3NpbWFsc0F1ZGlvRGVmYXVsdHMoKTtcbiAgcmVhZG9ubHkgZW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRFbmFibGVkKCkpO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4odGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLWVuYWJsZWQnLCB0cnVlKSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4odGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLXNmeC1lbmFibGVkJywgdHJ1ZSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZSA9IHNpZ25hbDxudW1iZXI+KHRoaXMucmVhZFZvbHVtZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScsIDAuMjUpKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lID0gc2lnbmFsPG51bWJlcj4odGhpcy5yZWFkVm9sdW1lU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScsIDAuOCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxBdWRpb0VsZW1lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQXVkaW9CdWZmZXI+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyUHJlbG9hZHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuaGFuZGxlVXNlckFjdGl2YXRpb24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLmhhbmRsZVVzZXJBY3RpdmF0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVVc2VyQWN0aXZhdGlvbik7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgdGhpcy5oYW5kbGVQYWdlSGlkZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCB0aGlzLmhhbmRsZVBhZ2VTaG93KTtcbiAgICB9XG4gIH1cblxuICBzZXRFbmFibGVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVkLnNldCh2YWx1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1hdWRpbycsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkgdGhpcy5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHNldE11c2ljRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubXVzaWNFbmFibGVkLnNldCh2YWx1ZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLWVuYWJsZWQnLCB2YWx1ZSA/ICcxJyA6ICcwJyk7XG4gICAgaWYgKCF2YWx1ZSkgdGhpcy5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHNldFNmeEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNmeEVuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LWVuYWJsZWQnLCB2YWx1ZSA/ICcxJyA6ICcwJyk7XG4gIH1cblxuICBzZXRNdXNpY1ZvbHVtZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5ub3JtYWxpemVWb2x1bWUodmFsdWUpO1xuICAgIHRoaXMubXVzaWNWb2x1bWUuc2V0KHZvbHVtZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScsIGAke3ZvbHVtZX1gKTtcbiAgICBpZiAodm9sdW1lIDw9IDApIHtcbiAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwbHlTYW1wbGVNdXNpY1ZvbHVtZSgpO1xuICB9XG5cbiAgc2V0U2Z4Vm9sdW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSk7XG4gICAgdGhpcy5zZnhWb2x1bWUuc2V0KHZvbHVtZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnLCBgJHt2b2x1bWV9YCk7XG4gICAgdGhpcy5hcHBseUFjdGl2ZVNhbXBsZVZvbHVtZXMoKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0TWVudU11c2ljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc3RhcnRNdXNpYygnbWVudScpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgYXdhaXQgdGhpcy5zdGFydFNhbXBsZU11c2ljKENIRVNTSU1BTFNfTUVOVV9NVVNJQyk7XG4gIH1cblxuICBhc3luYyBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoQ0hFU1NJTUFMU19HQU1FX01VU0lDKTtcbiAgfVxuXG4gIHByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKENIRVNTSU1BTFNfUE9XRVJfU0FNUExFUykuZm9yRWFjaCgoc2FtcGxlKSA9PiB7XG4gICAgICB2b2lkIHRoaXMucHJlbG9hZFNhbXBsZUJ1ZmZlcihzYW1wbGUuc3JjKTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIFtcbiAgICAgIC4uLk9iamVjdC52YWx1ZXMoQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTKSxcbiAgICAgIENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLnZpY3RvcnksXG4gICAgICBDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy5kZWZlYXQsXG4gICAgXS5mb3JFYWNoKChzYW1wbGUpID0+IHRoaXMucHJlbG9hZFNhbXBsZShzYW1wbGUuc3JjKSk7XG4gIH1cblxuICBhc3luYyBzdGFydEdhbWVNdXNpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0TXVzaWMoJ2dhbWUnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0TXVzaWMobW9kZTogTWVsb2R5TW9kZSA9ICdnYW1lJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5TXVzaWMoKSkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc0RvY3VtZW50VmlzaWJsZSgpKSB7XG4gICAgICB0aGlzLnBhdXNlZE1lbG9keSA9IG1vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgaWYgKHRoaXMubXVzaWNUaW1lciAmJiB0aGlzLmFjdGl2ZU1lbG9keSA9PT0gbW9kZSkgcmV0dXJuO1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdGhpcy5mYWRlTWFzdGVyVG8oMSwgMC4yNCk7XG4gICAgdGhpcy5hY3RpdmVNZWxvZHkgPSBtb2RlO1xuICAgIHRoaXMubm90ZUluZGV4ID0gMDtcbiAgICBjb25zdCBtZWxvZHkgPSBtb2RlID09PSAnbWVudScgPyB0aGlzLm1lbnVNZWxvZHkoKSA6IHRoaXMuZ2FtZU1lbG9keSgpO1xuICAgIGNvbnN0IGludGVydmFsTXMgPSBtb2RlID09PSAnbWVudScgPyA2NDAgOiAxOTA7XG4gICAgY29uc3Qgd2F2ZTogT3NjaWxsYXRvclR5cGUgPSBtb2RlID09PSAnbWVudScgPyAndHJpYW5nbGUnIDogJ3NxdWFyZSc7XG4gICAgY29uc3QgZ2FpbiA9IG1vZGUgPT09ICdtZW51JyA/IDAuMDE4IDogMC4wMjU7XG4gICAgdGhpcy5tdXNpY1RpbWVyID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLm5vdGVJbmRleDtcbiAgICAgIGNvbnN0IFtmcmVxLCBkdXJhdGlvbl0gPSBtZWxvZHlbdGhpcy5ub3RlSW5kZXggJSBtZWxvZHkubGVuZ3RoXTtcbiAgICAgIHRoaXMubm90ZUluZGV4ICs9IDE7XG4gICAgICB0aGlzLnRvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pO1xuICAgICAgaWYgKG1vZGUgPT09ICdtZW51JykgdGhpcy5zYXZhbm5hUHVsc2Uoc3RlcCk7XG4gICAgfSwgaW50ZXJ2YWxNcyk7XG4gIH1cblxuICBzdG9wTXVzaWMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVzaWNUaW1lcikge1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5tdXNpY1RpbWVyKTtcbiAgICAgIHRoaXMubXVzaWNUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVNZWxvZHkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYXVzZWRNZWxvZHkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0b3BTYW1wbGVNdXNpYygpO1xuICB9XG5cbiAgZmxpcCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMudG9uZSg0NDAsIDAuMDU1LCAnc3F1YXJlJywgMC4wNSk7XG4gIH1cblxuICBtYXRjaCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzY2MCwgMC4wOF0sXG4gICAgICBbODgwLCAwLjFdLFxuICAgICAgWzk5MCwgMC4xMl0sXG4gICAgXSk7XG4gIH1cblxuICBtaXNzKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbMjIwLCAwLjA4XSxcbiAgICAgIFsxNzQuNjEsIDAuMTJdLFxuICAgIF0pO1xuICB9XG5cbiAgd2luKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFs1MjMuMjUsIDAuMDldLFxuICAgICAgWzY1OS4yNSwgMC4wOV0sXG4gICAgICBbNzgzLjk5LCAwLjA5XSxcbiAgICAgIFsxMDQ2LjUsIDAuMTRdLFxuICAgICAgWzEzMTguNTEsIDAuMjJdLFxuICAgICAgWzE1NjcuOTgsIDAuMjZdLFxuICAgIF0pO1xuICB9XG5cbiAgbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbMjkzLjY2LCAwLjEyXSxcbiAgICAgIFsyNDYuOTQsIDAuMTJdLFxuICAgICAgWzE5NiwgMC4yXSxcbiAgICBdKTtcbiAgfVxuXG4gIHNpbW9uUGFkKGZyZXE6IG51bWJlcik6IHZvaWQge1xuICAgIHZvaWQgdGhpcy50b25lKGZyZXEsIDAuMjIsICdzaW5lJywgMC4wNTUpO1xuICB9XG5cbiAgY2hlc3NpbWFsc1Bvd2VyUHJldmlldyhwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogdm9pZCB7XG4gICAgY29uc3QgdG9uZXM6IFJlY29yZDxDaGVzc2ltYWxzUG93ZXIsIG51bWJlcj4gPSB7XG4gICAgICBlYWdsZTogODgwLFxuICAgICAgYnVsbDogMzQ5LjIzLFxuICAgICAga2FuZ2Fyb286IDY1OS4yNSxcbiAgICAgIGxpb246IDUyMy4yNSxcbiAgICB9O1xuICAgIHZvaWQgdGhpcy50b25lKHRvbmVzW3Bvd2VyXSwgMC4xMiwgcG93ZXIgPT09ICdidWxsJyA/ICdzYXd0b290aCcgOiAndHJpYW5nbGUnLCAwLjAzOCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUodG9uZXNbcG93ZXJdICogMS4yNSwgMC4wNywgJ3NpbmUnLCAwLjAxOCksIDcyKTtcbiAgfVxuXG4gIHNpbW9uU3RlcE9rKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy50b25lKDg4MCwgMC4wOCwgJ3RyaWFuZ2xlJywgMC4wMzUpO1xuICB9XG5cbiAgc2ltb25Sb3VuZE9rKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbNjU5LjI1LCAwLjA4XSxcbiAgICAgIFs4ODAsIDAuMDhdLFxuICAgICAgWzExNzQuNjYsIDAuMTJdLFxuICAgIF0pO1xuICB9XG5cbiAgc2ltb25GYWlsKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbMTk2LCAwLjEyXSxcbiAgICAgIFsxNDYuODMsIDAuMThdLFxuICAgIF0pO1xuICB9XG5cbiAgY2hlc3NpbWFsc01vdmUoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMzkyLCAwLjA0NV0sXG4gICAgICAgIFs0OTMuODgsIDAuMDU1XSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMzIsXG4gICAgICA0OCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDM1LCAwLjAxMiwgJ2JhbmRwYXNzJywgODIwKSwgOCk7XG4gIH1cblxuICBjaGVzc2ltYWxzQm90TW92ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszMjkuNjMsIDAuMDU1XSxcbiAgICAgICAgWzI0Ni45NCwgMC4wN10sXG4gICAgICBdLFxuICAgICAgJ3Nhd3Rvb3RoJyxcbiAgICAgIDAuMDI0LFxuICAgICAgNTYsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1LCAwLjAxLCAnbG93cGFzcycsIDQyMCksIDE2KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNDYXB0dXJlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzE3NC42MSwgMC4wNF0sXG4gICAgICAgIFsyNDYuOTQsIDAuMDQ1XSxcbiAgICAgICAgWzU4Ny4zMywgMC4wOTVdLFxuICAgICAgICBbNzgzLjk5LCAwLjA4XSxcbiAgICAgIF0sXG4gICAgICAnc3F1YXJlJyxcbiAgICAgIDAuMDQ2LFxuICAgICAgNDQsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoOTYsIDQyLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDIwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE4LCAwLjA1LCAnbG93cGFzcycsIDUyMCksIDE4KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA3LCAwLjAyOCwgJ2JhbmRwYXNzJywgMTgwMCksIDg0KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlcihwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcikpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNQb3dlckZhbGxiYWNrKHBvd2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXI6IENoZXNzaW1hbHNQb3dlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdGVzOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBOb3RlW10+ID0ge1xuICAgICAgZWFnbGU6IFtcbiAgICAgICAgWzY1OS4yNSwgMC4wNTVdLFxuICAgICAgICBbODgwLCAwLjA2NV0sXG4gICAgICAgIFsxMzE4LjUxLCAwLjEyXSxcbiAgICAgIF0sXG4gICAgICBidWxsOiBbXG4gICAgICAgIFsxOTYsIDAuMDc1XSxcbiAgICAgICAgWzE2NC44MSwgMC4wNzVdLFxuICAgICAgICBbMjQ2Ljk0LCAwLjEzXSxcbiAgICAgIF0sXG4gICAgICBrYW5nYXJvbzogW1xuICAgICAgICBbMzkyLCAwLjA1NV0sXG4gICAgICAgIFswLCAwLjA0XSxcbiAgICAgICAgWzc4My45OSwgMC4xMV0sXG4gICAgICBdLFxuICAgICAgbGlvbjogW1xuICAgICAgICBbMjYxLjYzLCAwLjA2XSxcbiAgICAgICAgWzM5MiwgMC4wNl0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDZdLFxuICAgICAgICBbNzgzLjk5LCAwLjE0XSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2Uobm90ZXNbcG93ZXJdLCBwb3dlciA9PT0gJ2J1bGwnID8gJ3Nhd3Rvb3RoJyA6ICd0cmlhbmdsZScsIDAuMDQ2LCA1OCk7XG4gICAgaWYgKHBvd2VyID09PSAnZWFnbGUnKSB7XG4gICAgICB2b2lkIHRoaXMuc3dlZXAoNzIwLCAxNTY4LCAwLjE4LCAndHJpYW5nbGUnLCAwLjAyOCk7XG4gICAgICB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjIyLCAwLjAyNSwgJ2hpZ2hwYXNzJywgMTYwMCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA4LCAwLjAxOCwgJ2JhbmRwYXNzJywgMjYwMCksIDkyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDE3NjAsIDAuMDU1LCAnc2luZScsIDAuMDE4KSwgMTUwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBvd2VyID09PSAnYnVsbCcpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDgyLjQxLCAwLjE2LCAnc2F3dG9vdGgnLCAwLjAzOCksIDcyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxMzguNTksIDY1LjQxLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDExOCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAzOCwgJ2xvd3Bhc3MnLCAyNjApLCAzNik7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1NSwgMC4wMjYsICdiYW5kcGFzcycsIDk2MCksIDE3MCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3dlciA9PT0gJ2thbmdhcm9vJykge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDQyMCwgOTQwLCAwLjExLCAnc2luZScsIDAuMDMyKSwgODgpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDk0MCwgNTIwLCAwLjEsICdzaW5lJywgMC4wMjYpLCAxOTApO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMjYxLjYzLCAwLjA1NSwgJ3RyaWFuZ2xlJywgMC4wMTgpLCAyNDUpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wMzUsIDAuMDE4LCAnYmFuZHBhc3MnLCAxMTgwKSwgMjE4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDE2NC44MSwgMzkyLCAwLjI0LCAnc2F3dG9vdGgnLCAwLjAzNCksIDcwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSg5OCwgMC4xOCwgJ3Nhd3Rvb3RoJywgMC4wMiksIDE1MCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4yOCwgMC4wMzIsICdiYW5kcGFzcycsIDM0MCksIDYyKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTk2LCAxNDYuODMsIDAuMjIsICdzYXd0b290aCcsIDAuMDIyKSwgMTE2KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2FtcGxlID0gQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTW3Bvd2VyXTtcbiAgICBpZiAodGhpcy5wbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMucGxheVNhbXBsZShzYW1wbGUsICgpID0+IHRoaXMuY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheVNhbXBsZShzYW1wbGU6IFNhbXBsZUNvbmZpZywgZmFsbGJhY2s6ICgpID0+IHZvaWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpIHx8IHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkID0gdGhpcy5zYW1wbGVDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgICBjb25zdCBhdWRpbyA9IGNhY2hlZCA/IChjYWNoZWQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxBdWRpb0VsZW1lbnQpIDogbmV3IEF1ZGlvKHNhbXBsZS5zcmMpO1xuICAgICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICAgIGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA9IGAke3NhbXBsZS52b2x1bWV9YDtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IHRoaXMuc2FtcGxlVm9sdW1lKHNhbXBsZSk7XG4gICAgICB0aGlzLmFjdGl2ZVNhbXBsZXMuYWRkKGF1ZGlvKTtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSAoKSA9PiB0aGlzLmFjdGl2ZVNhbXBsZXMuZGVsZXRlKGF1ZGlvKTtcbiAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgcmVsZWFzZSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWxlYXNlLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICBjb25zdCBwbGF5UmVzdWx0ID0gYXVkaW8ucGxheSgpO1xuICAgICAgaWYgKHBsYXlSZXN1bHQpIHtcbiAgICAgICAgcGxheVJlc3VsdC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlOiBTYW1wbGVDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYnVmZmVyID0gdGhpcy5idWZmZXJDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0O1xuICAgIGlmICghYnVmZmVyIHx8ICFjdHggfHwgY3R4LnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdm9pZCB0aGlzLnByZWxvYWRTYW1wbGVCdWZmZXIoc2FtcGxlLnNyYyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpZiAoY3R4LnN0YXRlID09PSAnc3VzcGVuZGVkJykgdm9pZCBjdHgucmVzdW1lKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgIGdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZSh0aGlzLnNhbXBsZVZvbHVtZShzYW1wbGUpLCBjdHguY3VycmVudFRpbWUpO1xuICAgICAgc291cmNlLmNvbm5lY3QoZ2Fpbik7XG4gICAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgICBzb3VyY2Uuc3RhcnQoY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNoZXNzaW1hbHNWaWN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgaWYgKHRoaXMucGxheVNhbXBsZShDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy52aWN0b3J5LCAoKSA9PiB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKSkpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNEZWZlYXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodGhpcy5wbGF5U2FtcGxlKENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLmRlZmVhdCwgKCkgPT4gdGhpcy5sb3NlKCkpKSByZXR1cm47XG4gICAgdGhpcy5sb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMTk2LCAwLjA4XSxcbiAgICAgICAgWzI2MS42MywgMC4wOF0sXG4gICAgICAgIFszMjkuNjMsIDAuMDhdLFxuICAgICAgICBbMzkyLCAwLjFdLFxuICAgICAgICBbNTIzLjI1LCAwLjEyXSxcbiAgICAgICAgWzc4My45OSwgMC4xNl0sXG4gICAgICAgIFsxMDQ2LjUsIDAuMjJdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjA1LFxuICAgICAgNzIsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTMwLjgxLCA2NS40MSwgMC4yOCwgJ3Nhd3Rvb3RoJywgMC4wMiksIDQwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoNTIzLjI1LCAxNTY3Ljk4LCAwLjM0LCAnc2luZScsIDAuMDI2KSwgMjQwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAyMiwgJ2JhbmRwYXNzJywgMTQwMCksIDEyMCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnNlcXVlbmNlKFtbOTg3Ljc3LCAwLjA4XSwgWzEzMTguNTEsIDAuMTJdXSwgJ3RyaWFuZ2xlJywgMC4wMzIsIDg2KSwgNTIwKTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNKb2luUmVxdWVzdCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFs1MjMuMjUsIDAuMDU1XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wNl0sXG4gICAgICAgIFs5ODcuNzcsIDAuMTJdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAzNCxcbiAgICAgIDU4LFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMTMxOC41MSwgMC4wNzUsICdzaW5lJywgMC4wMiksIDEzNik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wNiwgMC4wMSwgJ2hpZ2hwYXNzJywgMTgwMCksIDk4KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlclVubG9ja2VkKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzM5MiwgMC4wNTVdLFxuICAgICAgICBbNTIzLjI1LCAwLjA1NV0sXG4gICAgICAgIFs2NTkuMjUsIDAuMDhdLFxuICAgICAgICBbOTg3Ljc3LCAwLjEzXSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMzgsXG4gICAgICA2NCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgyMjAsIDg4MCwgMC4yMiwgJ3NpbmUnLCAwLjAyNCksIDcwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjI0LCAwLjAxOCwgJ2JhbmRwYXNzJywgMTIwMCksIDU0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZEJvb2xlYW5TZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1hdWRpbycsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkQm9vbGVhblNldHRpbmcoa2V5OiBzdHJpbmcsIGZhbGxiYWNrOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSAnMCc7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkVm9sdW1lU2V0dGluZyhrZXk6IHN0cmluZywgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gICAgdm9pZCB0aGlzLmRlZmF1bHRzUmVhZHk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAoc3RvcmVkID09PSBudWxsIHx8IHN0b3JlZC50cmltKCkgPT09ICcnKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICBjb25zdCB2YWx1ZSA9IE51bWJlcihzdG9yZWQpO1xuICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSkgOiBmYWxsYmFjaztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlU2V0dGluZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVZvbHVtZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlbG9hZFNhbXBsZShzcmM6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNhbXBsZUNhY2hlLmhhcyhzcmMpKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKHNyYyk7XG4gICAgICBhdWRpby5wcmVsb2FkID0gJ2F1dG8nO1xuICAgICAgYXVkaW8ubG9hZCgpO1xuICAgICAgdGhpcy5zYW1wbGVDYWNoZS5zZXQoc3JjLCBhdWRpbyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaSBlbCBuYXZlZ2Fkb3Igbm8gcGVybWl0ZSBwcmVjYXJnYXIsIHNlIGludGVudGFyYSBhbCByZXByb2R1Y2lyLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlbG9hZFNhbXBsZUJ1ZmZlcihzcmM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmJ1ZmZlckNhY2hlLmhhcyhzcmMpKSByZXR1cm47XG4gICAgY29uc3QgYWN0aXZlUHJlbG9hZCA9IHRoaXMuYnVmZmVyUHJlbG9hZHMuZ2V0KHNyYyk7XG4gICAgaWYgKGFjdGl2ZVByZWxvYWQpIHJldHVybiBhY3RpdmVQcmVsb2FkO1xuXG4gICAgY29uc3QgcHJlbG9hZCA9IChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGZldGNoID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy5lbnN1cmVDb250ZXh0KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNyYyk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGN0eC5kZWNvZGVBdWRpb0RhdGEoZGF0YS5zbGljZSgwKSk7XG4gICAgICB0aGlzLmJ1ZmZlckNhY2hlLnNldChzcmMsIGJ1ZmZlcik7XG4gICAgfSkoKVxuICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXJQcmVsb2Fkcy5kZWxldGUoc3JjKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5idWZmZXJQcmVsb2Fkcy5zZXQoc3JjLCBwcmVsb2FkKTtcbiAgICByZXR1cm4gcHJlbG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgbWlncmF0ZUNoZXNzaW1hbHNBdWRpb0RlZmF1bHRzKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtaWdyYXRpb25LZXkgPSAndmFsLW1pbmktZ2FtZXMtY2hlc3NpbWFscy1hdWRpby1kZWZhdWx0cy12Mic7XG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0obWlncmF0aW9uS2V5KSA9PT0gJzEnKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGNvbnN0IHN0b3JlZE11c2ljVm9sdW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScpO1xuICAgICAgY29uc3Qgc3RvcmVkU2Z4Vm9sdW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnKTtcbiAgICAgIGlmICghc3RvcmVkTXVzaWNWb2x1bWUgfHwgc3RvcmVkTXVzaWNWb2x1bWUgPT09ICcwJykge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgJzAuMjUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RvcmVkU2Z4Vm9sdW1lIHx8IHN0b3JlZFNmeFZvbHVtZSA9PT0gJzAnKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1zZngtdm9sdW1lJywgJzAuOCcpO1xuICAgICAgfVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obWlncmF0aW9uS2V5LCAnMScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUGxheU11c2ljKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQoKSAmJiB0aGlzLm11c2ljRW5hYmxlZCgpICYmIHRoaXMubXVzaWNWb2x1bWUoKSA+IDA7XG4gIH1cblxuICBwcml2YXRlIGNhblBsYXlTZngoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCgpICYmIHRoaXMuc2Z4RW5hYmxlZCgpICYmIHRoaXMuc2Z4Vm9sdW1lKCkgPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVDb250ZXh0KCk6IFByb21pc2U8QXVkaW9Db250ZXh0PiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQgfHwgdGhpcy5jb250ZXh0LnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhpcy5jb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluID0gdGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKTtcbiAgICAgIHRoaXMubWFzdGVyR2Fpbi5nYWluLnZhbHVlID0gMTtcbiAgICAgIHRoaXMubWFzdGVyR2Fpbi5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIG1lbnVNZWxvZHkoKTogTm90ZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgWzIyMCwgMC4zOF0sXG4gICAgICBbMCwgMC4xMl0sXG4gICAgICBbMjYxLjYzLCAwLjM0XSxcbiAgICAgIFszMjkuNjMsIDAuNDJdLFxuICAgICAgWzI5My42NiwgMC4yOF0sXG4gICAgICBbMCwgMC4xMl0sXG4gICAgICBbMzkyLCAwLjQ4XSxcbiAgICAgIFszMjkuNjMsIDAuMzRdLFxuICAgICAgWzI2MS42MywgMC4zNl0sXG4gICAgICBbMjIwLCAwLjU4XSxcbiAgICAgIFswLCAwLjJdLFxuICAgICAgWzI5My42NiwgMC4zNF0sXG4gICAgICBbMzI5LjYzLCAwLjQyXSxcbiAgICAgIFs0NDAsIDAuNV0sXG4gICAgICBbMzkyLCAwLjM2XSxcbiAgICAgIFsyNjEuNjMsIDAuNjJdLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHNhdmFubmFQdWxzZShzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoc3RlcCAlIDQgPT09IDApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCg5NiwgNDgsIDAuMTgsICdzaW5lJywgMC4wMTIpLCAxOCk7XG4gICAgfVxuICAgIGlmIChzdGVwICUgOCA9PT0gNSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMTY0LjgxLCAwLjA0NSwgJ3RyaWFuZ2xlJywgMC4wMTIpLCA5Nik7XG4gICAgfVxuICAgIGlmIChzdGVwICUgMTYgPT09IDEwKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTQ2LjgzLCAxOTYsIDAuMDgsICd0cmlhbmdsZScsIDAuMDEpLCAxNDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2FtZU1lbG9keSgpOiBOb3RlW10ge1xuICAgIHJldHVybiBbXG4gICAgICBbNTIzLjI1LCAwLjEzXSxcbiAgICAgIFs2NTkuMjUsIDAuMTNdLFxuICAgICAgWzc4My45OSwgMC4xM10sXG4gICAgICBbMTA0Ni41LCAwLjE4XSxcbiAgICAgIFs3ODMuOTksIDAuMTNdLFxuICAgICAgWzY1OS4yNSwgMC4xM10sXG4gICAgICBbNTg3LjMzLCAwLjE4XSxcbiAgICAgIFs2NTkuMjUsIDAuMThdLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcXVlbmNlKFxuICAgIG5vdGVzOiBOb3RlW10sXG4gICAgd2F2ZTogT3NjaWxsYXRvclR5cGUgPSAnc3F1YXJlJyxcbiAgICBnYWluID0gMC4wNTUsXG4gICAgaW50ZXJ2YWxNcyA9IDkwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG5vdGVzW2ldO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pLCBpICogaW50ZXJ2YWxNcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNhbXBsZU11c2ljKGNvbmZpZzogU2FtcGxlTXVzaWNDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNEb2N1bWVudFZpc2libGUoKSkge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWNDb25maWc/LnNyYyA9PT0gY29uZmlnLnNyYyAmJiAhdGhpcy5zYW1wbGVNdXNpYz8ucGF1c2VkKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oY29uZmlnLnNyYyk7XG4gICAgYXVkaW8ubG9vcCA9IHRydWU7XG4gICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICB0aGlzLnNhbXBsZU11c2ljID0gYXVkaW87XG4gICAgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZyA9IGNvbmZpZztcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbywgY29uZmlnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXVkaW8ucGxheSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BTYW1wbGVNdXNpYygpOiB2b2lkIHtcbiAgICBjb25zdCBtdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWM7XG4gICAgdGhpcy5zYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNhbXBsZU11c2ljQ29uZmlnID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzY29ubmVjdFNhbXBsZU11c2ljR3JhcGgoKTtcbiAgICBpZiAoIW11c2ljKSByZXR1cm47XG4gICAgbXVzaWMucGF1c2UoKTtcbiAgICBtdXNpYy5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2FtcGxlTXVzaWNWb2x1bWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNhbXBsZU11c2ljIHx8ICF0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSByZXR1cm47XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5zYW1wbGVNdXNpY1ZvbHVtZSh0aGlzLnNhbXBsZU11c2ljQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpY0dhaW4gJiYgdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljR2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh2b2x1bWUsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwgMC4wMjUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljLnZvbHVtZSA9IHZvbHVtZTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIGNvbmZpZy52b2x1bWUgKiB0aGlzLm11c2ljVm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlVm9sdW1lKHNhbXBsZTogU2FtcGxlQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgc2FtcGxlLnZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBY3RpdmVTYW1wbGVWb2x1bWVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYXVkaW8gb2YgdGhpcy5hY3RpdmVTYW1wbGVzKSB7XG4gICAgICBjb25zdCBiYXNlVm9sdW1lID0gTnVtYmVyKGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA/PyAnMScpO1xuICAgICAgYXVkaW8udm9sdW1lID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgYmFzZVZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCwgY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMuc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnKTtcbiAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgICBjb25zdCBzb3VyY2UgPSBjdHguY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGF1ZGlvKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKHZvbHVtZSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHNvdXJjZS5jb25uZWN0KGdhaW4pO1xuICAgICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gZ2FpbjtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IDE7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY0dhaW4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNjb25uZWN0U2FtcGxlTXVzaWNHcmFwaCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZT8uZGlzY29ubmVjdCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRWwgbm9kbyBwdWVkZSBlc3RhciBkZXNjb25lY3RhZG8gc2kgZWwgbmF2ZWdhZG9yIGxpYmVybyBsYSBwaXN0YS5cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluPy5kaXNjb25uZWN0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCBub2RvIHB1ZWRlIGVzdGFyIGRlc2NvbmVjdGFkbyBzaSBlbCBuYXZlZ2Fkb3IgbGliZXJvIGxhIHBpc3RhLlxuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0b25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3NxdWFyZScsIGdhaW5WYWx1ZSA9IDAuMDQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgaWYgKGZyZXEgPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXE7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3dlZXAoXG4gICAgZnJvbUZyZXE6IG51bWJlcixcbiAgICB0b0ZyZXE6IG51bWJlcixcbiAgICBkdXJhdGlvbiA9IDAuMTYsXG4gICAgdHlwZTogT3NjaWxsYXRvclR5cGUgPSAndHJpYW5nbGUnLFxuICAgIGdhaW5WYWx1ZSA9IDAuMDMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5U2Z4KCkpIHJldHVybjtcbiAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLndha2VBdWRpbygpO1xuICAgIGNvbnN0IG9zY2lsbGF0b3IgPSBjdHguY3JlYXRlT3NjaWxsYXRvcigpO1xuICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgIG9zY2lsbGF0b3IudHlwZSA9IHR5cGU7XG4gICAgb3NjaWxsYXRvci5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoZnJvbUZyZXEsIGN0eC5jdXJyZW50VGltZSk7XG4gICAgb3NjaWxsYXRvci5mcmVxdWVuY3kuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShNYXRoLm1heCgxLCB0b0ZyZXEpLCBjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbik7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIC8vIENoZXNzaW1hbHMgdXNlcyBnZW5lcmF0ZWQgV2ViQXVkaW8gbGF5ZXJzIGluc3RlYWQgb2YgdGhpcmQtcGFydHkgc2FtcGxlcyxcbiAgLy8gYXZvaWRpbmcgbGljZW5zaW5nIHJpc2sgd2hpbGUga2VlcGluZyBlYWNoIGFuaW1hbCBwb3dlciBleHByZXNzaXZlLlxuICBwcml2YXRlIGFzeW5jIGZpbHRlcmVkTm9pc2UoXG4gICAgZHVyYXRpb24gPSAwLjEyLFxuICAgIGdhaW5WYWx1ZSA9IDAuMDI1LFxuICAgIGZpbHRlclR5cGU6IEJpcXVhZEZpbHRlclR5cGUgPSAnYmFuZHBhc3MnLFxuICAgIGZyZXF1ZW5jeSA9IDkwMCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlTZngoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgc2FtcGxlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGN0eC5zYW1wbGVSYXRlICogZHVyYXRpb24pKTtcbiAgICBjb25zdCBidWZmZXIgPSBjdHguY3JlYXRlQnVmZmVyKDEsIHNhbXBsZUNvdW50LCBjdHguc2FtcGxlUmF0ZSk7XG4gICAgY29uc3QgY2hhbm5lbCA9IGJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGRlY2F5ID0gMSAtIGkgLyBzYW1wbGVDb3VudDtcbiAgICAgIGNoYW5uZWxbaV0gPSAoTWF0aC5yYW5kb20oKSAqIDIgLSAxKSAqIGRlY2F5O1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcbiAgICBjb25zdCBmaWx0ZXIgPSBjdHguY3JlYXRlQmlxdWFkRmlsdGVyKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgZmlsdGVyLnR5cGUgPSBmaWx0ZXJUeXBlO1xuICAgIGZpbHRlci5mcmVxdWVuY3kudmFsdWUgPSBmcmVxdWVuY3k7XG4gICAgZmlsdGVyLlEudmFsdWUgPSBmaWx0ZXJUeXBlID09PSAnbG93cGFzcycgPyAwLjcgOiAxLjg7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxMik7XG4gICAgZ2Fpbi5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbik7XG4gICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICBzb3VyY2UuY29ubmVjdChmaWx0ZXIpO1xuICAgIGZpbHRlci5jb25uZWN0KGdhaW4pO1xuICAgIGdhaW4uY29ubmVjdCh0aGlzLm1hc3RlckdhaW4gPz8gY3R4LmRlc3RpbmF0aW9uKTtcbiAgICBzb3VyY2Uuc3RhcnQoKTtcbiAgICBzb3VyY2Uuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgIHRoaXMucGF1c2VGb3JCYWNrZ3JvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgdGhpcy5yZXN1bWVGcm9tQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlUGFnZUhpZGUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5wYXVzZUZvckJhY2tncm91bmQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVBhZ2VTaG93ID0gKCk6IHZvaWQgPT4ge1xuICAgIHZvaWQgdGhpcy5yZXN1bWVGcm9tQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVXNlckFjdGl2YXRpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQoKSB8fCAhdGhpcy5pc0RvY3VtZW50VmlzaWJsZSgpKSByZXR1cm47XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBpZiAodGhpcy5wYXVzZWRTYW1wbGVNdXNpYykge1xuICAgICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgdGhpcy53YWtlQXVkaW8oKTtcbiAgfTtcblxuICBwcml2YXRlIHBhdXNlRm9yQmFja2dyb3VuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVNZWxvZHkpIHRoaXMucGF1c2VkTWVsb2R5ID0gdGhpcy5hY3RpdmVNZWxvZHk7XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWMgJiYgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZykge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWNDb25maWc7XG4gICAgICB0aGlzLnN0b3BTYW1wbGVNdXNpYygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLm11c2ljVGltZXIpO1xuICAgICAgdGhpcy5tdXNpY1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygwLjAwMDEsIDAuMik7XG4gICAgaWYgKHRoaXMuc3VzcGVuZFRpbWVyKSB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc3VzcGVuZFRpbWVyKTtcbiAgICB0aGlzLnN1c3BlbmRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgdm9pZCB0aGlzLmNvbnRleHQ/LnN1c3BlbmQoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDI2MCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3VtZUZyb21CYWNrZ3JvdW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnN1c3BlbmRUaW1lcikge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnN1c3BlbmRUaW1lcik7XG4gICAgICB0aGlzLnN1c3BlbmRUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHNhbXBsZU11c2ljID0gdGhpcy5wYXVzZWRTYW1wbGVNdXNpYztcbiAgICBpZiAoc2FtcGxlTXVzaWMpIHtcbiAgICAgIHRoaXMucGF1c2VkU2FtcGxlTXVzaWMgPSB1bmRlZmluZWQ7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoc2FtcGxlTXVzaWMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZWxvZHkgPSB0aGlzLnBhdXNlZE1lbG9keTtcbiAgICBpZiAoIW1lbG9keSkgcmV0dXJuO1xuICAgIHRoaXMucGF1c2VkTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMuZW5zdXJlQ29udGV4dCgpO1xuICAgIGF3YWl0IHRoaXMucmVzdW1lQ29udGV4dChjdHgpO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDEsIDAuMzUpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRNdXNpYyhtZWxvZHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWtlQXVkaW8oKTogUHJvbWlzZTxBdWRpb0NvbnRleHQ+IHtcbiAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLmVuc3VyZUNvbnRleHQoKTtcbiAgICBhd2FpdCB0aGlzLnJlc3VtZUNvbnRleHQoY3R4KTtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygxLCAwLjEyKTtcbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN1bWVDb250ZXh0KGN0eDogQXVkaW9Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGN0eC5zdGF0ZSA9PT0gJ3J1bm5pbmcnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGN0eC5yZXN1bWUoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlPUyBwdWVkZSBleGlnaXIgdW5hIG51ZXZhIGludGVyYWNjacOzbiBkZWwgdXN1YXJpbzsgZWwgbGlzdGVuZXIgZGUgYWN0aXZhY2nDs24gcmVpbnRlbnRhcsOhLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmFkZU1hc3RlclRvKHZhbHVlOiBudW1iZXIsIHNlY29uZHM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0IHx8ICF0aGlzLm1hc3RlckdhaW4pIHJldHVybjtcbiAgICBjb25zdCBnYWluID0gdGhpcy5tYXN0ZXJHYWluLmdhaW47XG4gICAgY29uc3Qgbm93ID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xuICAgIGdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKG5vdyk7XG4gICAgZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodmFsdWUsIG5vdywgTWF0aC5tYXgoMC4wMSwgc2Vjb25kcyAvIDQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEb2N1bWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRvY3VtZW50LmhpZGRlbjtcbiAgfVxufVxuIl19
864
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cm8tYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9yZXRyby1hdWRpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRCxNQUFNLHdCQUF3QixHQUEwQztJQUN0RSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNyRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBQ0YsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNsRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUN0RSxDQUFDO0FBQ0YsTUFBTSxxQkFBcUIsR0FBc0I7SUFDL0MsR0FBRyxFQUFFLHVDQUF1QztJQUM1QyxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFDRixNQUFNLHFCQUFxQixHQUFzQjtJQUMvQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUdGLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCO1FBckJRLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFJTCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBTzVDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDOUQsWUFBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsa0JBQWtCLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RixlQUFVLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGdCQUFXLEdBQUcsTUFBTSxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGNBQVMsR0FBRyxNQUFNLENBQVMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUErekJsRCwyQkFBc0IsR0FBRyxHQUFTLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFZSx5QkFBb0IsR0FBRyxHQUFTLEVBQUU7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFBRSxPQUFPO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2pDLE9BQU87WUFDVCxDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBcDFCQSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMzRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx1REFBdUQ7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QjtRQUM1QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekQsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1lBQUUsT0FBTztRQUN6QztZQUNFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztZQUMxQywwQkFBMEIsQ0FBQyxPQUFPO1lBQ2xDLDBCQUEwQixDQUFDLE1BQU07U0FDbEMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFtQixNQUFNO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQUUsT0FBTztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzFELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBbUIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLEtBQUssTUFBTTtnQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSztRQUNILEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDVixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ2YsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFzQjtRQUMzQyxNQUFNLEtBQUssR0FBb0M7WUFDN0MsS0FBSyxFQUFFLEdBQUc7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ1gsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLFFBQVEsR0FBRyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUYsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCO1lBQ0UsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQ2IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUNwQixDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDO1NBQ25CLEVBQ0QsVUFBVSxFQUNWLEtBQUssR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUMxQixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUNoQjtZQUNFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUNmLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztTQUNiLEVBQ0QsTUFBTSxFQUNOLEtBQUssRUFDTCxFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsUUFBUSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6RixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsYUFBYTtRQUNYLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDaEI7WUFDRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixFQUNELE1BQU0sRUFDTixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUNoQjtZQUNFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNkLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNkLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNkLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNkLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztTQUNoQixFQUNELFVBQVUsRUFDVixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsY0FBYztRQUNaLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDaEI7WUFDRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7WUFDWixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDaEIsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELGlCQUFpQjtRQUNmLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDaEI7WUFDRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDZixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixFQUNELFVBQVUsRUFDVixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUNoQjtZQUNFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNkLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUNmLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUNmLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztTQUNmLEVBQ0QsUUFBUSxFQUNSLEtBQUssRUFDTCxFQUFFLENBQ0gsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDbEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFzQjtRQUNwRCxNQUFNLEtBQUssR0FBb0M7WUFDN0MsS0FBSyxFQUFFO2dCQUNMLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQkFDZixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ1osQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztnQkFDWixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0JBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztnQkFDVCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2dCQUNYLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztnQkFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7YUFDZjtTQUNGLENBQUM7UUFDRixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RixJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN0QixLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6RSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFD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T0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDN0QsQ0FBQzsrR0FsN0JVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxudHlwZSBOb3RlID0gW251bWJlciwgbnVtYmVyXTtcbnR5cGUgTWVsb2R5TW9kZSA9ICdtZW51JyB8ICdnYW1lJztcbnR5cGUgQ2hlc3NpbWFsc1Bvd2VyID0gJ2VhZ2xlJyB8ICdidWxsJyB8ICdrYW5nYXJvbycgfCAnbGlvbic7XG50eXBlIFNhbXBsZUNvbmZpZyA9IHsgc3JjOiBzdHJpbmc7IHZvbHVtZTogbnVtYmVyIH07XG50eXBlIFNhbXBsZU11c2ljQ29uZmlnID0geyBzcmM6IHN0cmluZzsgdm9sdW1lOiBudW1iZXIgfTtcblxuY29uc3QgQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBTYW1wbGVDb25maWc+ID0ge1xuICBlYWdsZTogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9lYWdsZS1jcnkud2F2Jywgdm9sdW1lOiAwLjYyIH0sXG4gIGJ1bGw6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnVsbC53YXYnLCB2b2x1bWU6IDAuOSB9LFxuICBrYW5nYXJvbzogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9rYW5nYXJvby1qdW1wLm1wMycsIHZvbHVtZTogMC44MiB9LFxuICBsaW9uOiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24tcm9hci53YXYnLCB2b2x1bWU6IDAuODIgfSxcbn07XG5jb25zdCBDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUyA9IHtcbiAgdmljdG9yeTogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy90YWRhLm1wMycsIHZvbHVtZTogMC43MiB9LFxuICBkZWZlYXQ6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMveW91LWxvc2UubXAzJywgdm9sdW1lOiAwLjcyIH0sXG59O1xuY29uc3QgQ0hFU1NJTUFMU19NRU5VX01VU0lDOiBTYW1wbGVNdXNpY0NvbmZpZyA9IHtcbiAgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbWFpbi1tZW51Lm1wMycsXG4gIHZvbHVtZTogMC4zMixcbn07XG5jb25zdCBDSEVTU0lNQUxTX0dBTUVfTVVTSUM6IFNhbXBsZU11c2ljQ29uZmlnID0ge1xuICBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9HYW1lLm1wMycsXG4gIHZvbHVtZTogMC4zMixcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmV0cm9BdWRpb1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ/OiBBdWRpb0NvbnRleHQ7XG4gIHByaXZhdGUgbWFzdGVyR2Fpbj86IEdhaW5Ob2RlO1xuICBwcml2YXRlIG11c2ljVGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgbm90ZUluZGV4ID0gMDtcbiAgcHJpdmF0ZSBhY3RpdmVNZWxvZHk/OiBNZWxvZHlNb2RlO1xuICBwcml2YXRlIHBhdXNlZE1lbG9keT86IE1lbG9keU1vZGU7XG4gIHByaXZhdGUgc3VzcGVuZFRpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZVNhbXBsZXMgPSBuZXcgU2V0PEhUTUxBdWRpb0VsZW1lbnQ+KCk7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWM/OiBIVE1MQXVkaW9FbGVtZW50O1xuICBwcml2YXRlIHNhbXBsZU11c2ljQ29uZmlnPzogU2FtcGxlTXVzaWNDb25maWc7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWNTb3VyY2U/OiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWNHYWluPzogR2Fpbk5vZGU7XG4gIHByaXZhdGUgcGF1c2VkU2FtcGxlTXVzaWM/OiBTYW1wbGVNdXNpY0NvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRzUmVhZHkgPSB0aGlzLm1pZ3JhdGVDaGVzc2ltYWxzQXVkaW9EZWZhdWx0cygpO1xuICByZWFkb25seSBlbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KHRoaXMucmVhZEVuYWJsZWQoKSk7XG4gIHJlYWRvbmx5IG11c2ljRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRCb29sZWFuU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtZW5hYmxlZCcsIHRydWUpKTtcbiAgcmVhZG9ubHkgc2Z4RW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRCb29sZWFuU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LWVuYWJsZWQnLCB0cnVlKSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lID0gc2lnbmFsPG51bWJlcj4odGhpcy5yZWFkVm9sdW1lU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgMC4yNSkpO1xuICByZWFkb25seSBzZnhWb2x1bWUgPSBzaWduYWw8bnVtYmVyPih0aGlzLnJlYWRWb2x1bWVTZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1zZngtdm9sdW1lJywgMC44KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FtcGxlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgSFRNTEF1ZGlvRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWZmZXJDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBdWRpb0J1ZmZlcj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWZmZXJQcmVsb2FkcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5oYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5oYW5kbGVVc2VyQWN0aXZhdGlvbiwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuaGFuZGxlVXNlckFjdGl2YXRpb24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZVVzZXJBY3RpdmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCB0aGlzLmhhbmRsZVBhZ2VIaWRlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlc2hvdycsIHRoaXMuaGFuZGxlUGFnZVNob3cpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLWF1ZGlvJywgdmFsdWUgPyAnMScgOiAnMCcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgICBpZiAoIXZhbHVlKSB0aGlzLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgc2V0TXVzaWNFbmFibGVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5tdXNpY0VuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtZW5hYmxlZCcsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgICBpZiAoIXZhbHVlKSB0aGlzLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgc2V0U2Z4RW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2Z4RW5hYmxlZC5zZXQodmFsdWUpO1xuICAgIHRoaXMud3JpdGVTZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1zZngtZW5hYmxlZCcsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSk7XG4gICAgdGhpcy5tdXNpY1ZvbHVtZS5zZXQodm9sdW1lKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgYCR7dm9sdW1lfWApO1xuICAgIGlmICh2b2x1bWUgPD0gMCkge1xuICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBseVNhbXBsZU11c2ljVm9sdW1lKCk7XG4gIH1cblxuICBzZXRTZnhWb2x1bWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMubm9ybWFsaXplVm9sdW1lKHZhbHVlKTtcbiAgICB0aGlzLnNmeFZvbHVtZS5zZXQodm9sdW1lKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScsIGAke3ZvbHVtZX1gKTtcbiAgICB0aGlzLmFwcGx5QWN0aXZlU2FtcGxlVm9sdW1lcygpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRNZW51TXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKCdtZW51Jyk7XG4gIH1cblxuICBhc3luYyBzdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoQ0hFU1NJTUFMU19NRU5VX01VU0lDKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRTYW1wbGVNdXNpYyhDSEVTU0lNQUxTX0dBTUVfTVVTSUMpO1xuICB9XG5cbiAgcHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXMoQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTKS5mb3JFYWNoKChzYW1wbGUpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5wcmVsb2FkU2FtcGxlQnVmZmVyKHNhbXBsZS5zcmMpO1xuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgQXVkaW8gPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgW1xuICAgICAgLi4uT2JqZWN0LnZhbHVlcyhDSEVTU0lNQUxTX1BPV0VSX1NBTVBMRVMpLFxuICAgICAgQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMudmljdG9yeSxcbiAgICAgIENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLmRlZmVhdCxcbiAgICBdLmZvckVhY2goKHNhbXBsZSkgPT4gdGhpcy5wcmVsb2FkU2FtcGxlKHNhbXBsZS5zcmMpKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0R2FtZU11c2ljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc3RhcnRNdXNpYygnZ2FtZScpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRNdXNpYyhtb2RlOiBNZWxvZHlNb2RlID0gJ2dhbWUnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlNdXNpYygpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmlzRG9jdW1lbnRWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMucGF1c2VkTWVsb2R5ID0gbW9kZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyICYmIHRoaXMuYWN0aXZlTWVsb2R5ID09PSBtb2RlKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygxLCAwLjI0KTtcbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IG1vZGU7XG4gICAgdGhpcy5ub3RlSW5kZXggPSAwO1xuICAgIGNvbnN0IG1lbG9keSA9IG1vZGUgPT09ICdtZW51JyA/IHRoaXMubWVudU1lbG9keSgpIDogdGhpcy5nYW1lTWVsb2R5KCk7XG4gICAgY29uc3QgaW50ZXJ2YWxNcyA9IG1vZGUgPT09ICdtZW51JyA/IDY0MCA6IDE5MDtcbiAgICBjb25zdCB3YXZlOiBPc2NpbGxhdG9yVHlwZSA9IG1vZGUgPT09ICdtZW51JyA/ICd0cmlhbmdsZScgOiAnc3F1YXJlJztcbiAgICBjb25zdCBnYWluID0gbW9kZSA9PT0gJ21lbnUnID8gMC4wMTggOiAwLjAyNTtcbiAgICB0aGlzLm11c2ljVGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3Qgc3RlcCA9IHRoaXMubm90ZUluZGV4O1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG1lbG9keVt0aGlzLm5vdGVJbmRleCAlIG1lbG9keS5sZW5ndGhdO1xuICAgICAgdGhpcy5ub3RlSW5kZXggKz0gMTtcbiAgICAgIHRoaXMudG9uZShmcmVxLCBkdXJhdGlvbiwgd2F2ZSwgZ2Fpbik7XG4gICAgICBpZiAobW9kZSA9PT0gJ21lbnUnKSB0aGlzLnNhdmFubmFQdWxzZShzdGVwKTtcbiAgICB9LCBpbnRlcnZhbE1zKTtcbiAgfVxuXG4gIHN0b3BNdXNpYygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLm11c2ljVGltZXIpO1xuICAgICAgdGhpcy5tdXNpY1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdXNlZE1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdXNlZFNhbXBsZU11c2ljID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcFNhbXBsZU11c2ljKCk7XG4gIH1cblxuICBmbGlwKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy50b25lKDQ0MCwgMC4wNTUsICdzcXVhcmUnLCAwLjA1KTtcbiAgfVxuXG4gIG1hdGNoKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbNjYwLCAwLjA4XSxcbiAgICAgIFs4ODAsIDAuMV0sXG4gICAgICBbOTkwLCAwLjEyXSxcbiAgICBdKTtcbiAgfVxuXG4gIG1pc3MoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsyMjAsIDAuMDhdLFxuICAgICAgWzE3NC42MSwgMC4xMl0sXG4gICAgXSk7XG4gIH1cblxuICB3aW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzUyMy4yNSwgMC4wOV0sXG4gICAgICBbNjU5LjI1LCAwLjA5XSxcbiAgICAgIFs3ODMuOTksIDAuMDldLFxuICAgICAgWzEwNDYuNSwgMC4xNF0sXG4gICAgICBbMTMxOC41MSwgMC4yMl0sXG4gICAgICBbMTU2Ny45OCwgMC4yNl0sXG4gICAgXSk7XG4gIH1cblxuICBsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsyOTMuNjYsIDAuMTJdLFxuICAgICAgWzI0Ni45NCwgMC4xMl0sXG4gICAgICBbMTk2LCAwLjJdLFxuICAgIF0pO1xuICB9XG5cbiAgc2ltb25QYWQoZnJlcTogbnVtYmVyKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnRvbmUoZnJlcSwgMC4yMiwgJ3NpbmUnLCAwLjA1NSk7XG4gIH1cblxuICBjaGVzc2ltYWxzUG93ZXJQcmV2aWV3KHBvd2VyOiBDaGVzc2ltYWxzUG93ZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0b25lczogUmVjb3JkPENoZXNzaW1hbHNQb3dlciwgbnVtYmVyPiA9IHtcbiAgICAgIGVhZ2xlOiA4ODAsXG4gICAgICBidWxsOiAzNDkuMjMsXG4gICAgICBrYW5nYXJvbzogNjU5LjI1LFxuICAgICAgbGlvbjogNTIzLjI1LFxuICAgIH07XG4gICAgdm9pZCB0aGlzLnRvbmUodG9uZXNbcG93ZXJdLCAwLjEyLCBwb3dlciA9PT0gJ2J1bGwnID8gJ3Nhd3Rvb3RoJyA6ICd0cmlhbmdsZScsIDAuMDM4KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSh0b25lc1twb3dlcl0gKiAxLjI1LCAwLjA3LCAnc2luZScsIDAuMDE4KSwgNzIpO1xuICB9XG5cbiAgc2ltb25TdGVwT2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnRvbmUoODgwLCAwLjA4LCAndHJpYW5nbGUnLCAwLjAzNSk7XG4gIH1cblxuICBzaW1vblJvdW5kT2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFs2NTkuMjUsIDAuMDhdLFxuICAgICAgWzg4MCwgMC4wOF0sXG4gICAgICBbMTE3NC42NiwgMC4xMl0sXG4gICAgXSk7XG4gIH1cblxuICBzaW1vbkZhaWwoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsxOTYsIDAuMTJdLFxuICAgICAgWzE0Ni44MywgMC4xOF0sXG4gICAgXSk7XG4gIH1cblxuICBidWJibGVQb3Aoc2l6ZSA9IDIsIGNvbWJvID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVTaXplID0gTWF0aC5tYXgoMiwgTWF0aC5taW4oMTIsIE1hdGgucm91bmQoc2l6ZSkpKTtcbiAgICBjb25zdCBzYWZlQ29tYm8gPSBNYXRoLm1heCgxLCBNYXRoLm1pbig5LCBNYXRoLnJvdW5kKGNvbWJvKSkpO1xuICAgIGNvbnN0IGJhc2UgPSA1MjAgKyBzYWZlU2l6ZSAqIDE4O1xuICAgIHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDY1LCAwLjAxOCArIHNhZmVTaXplICogMC4wMDE4LCAnYmFuZHBhc3MnLCAxMjAwICsgc2FmZVNpemUgKiA4NSk7XG4gICAgdm9pZCB0aGlzLnN3ZWVwKGJhc2UsIGJhc2UgKiAxLjksIDAuMDksICdzaW5lJywgMC4wMjYgKyBzYWZlU2l6ZSAqIDAuMDAxNCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoYmFzZSAqIDEuMjUsIDAuMDU1LCAndHJpYW5nbGUnLCAwLjAxOCksIDM4KTtcbiAgICBpZiAoc2FmZVNpemUgPj0gNSB8fCBzYWZlQ29tYm8gPiAxKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuYnViYmxlQ29tYm8oc2FmZUNvbWJvKSwgODIpO1xuICAgIH1cbiAgfVxuXG4gIGJ1YmJsZUNvbWJvKGNvbWJvID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVDb21ibyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDksIE1hdGgucm91bmQoY29tYm8pKSk7XG4gICAgY29uc3Qgcm9vdCA9IDY2MCArIHNhZmVDb21ibyAqIDI2O1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgW3Jvb3QsIDAuMDQ1XSxcbiAgICAgICAgW3Jvb3QgKiAxLjI1LCAwLjA1NV0sXG4gICAgICAgIFtyb290ICogMS41LCAwLjA3XSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMjQgKyBzYWZlQ29tYm8gKiAwLjAwMTYsXG4gICAgICA0MixcbiAgICApO1xuICB9XG5cbiAgYnViYmxlSW52YWxpZCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFsyNDYuOTQsIDAuMDU1XSxcbiAgICAgICAgWzE5NiwgMC4wODVdLFxuICAgICAgXSxcbiAgICAgICdzaW5lJyxcbiAgICAgIDAuMDM0LFxuICAgICAgNTQsXG4gICAgKTtcbiAgfVxuXG4gIGJ1YmJsZVNldHRsZShkcm9wID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVEcm9wID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oOSwgTWF0aC5yb3VuZChkcm9wKSkpO1xuICAgIHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDU1LCAwLjAwOSArIHNhZmVEcm9wICogMC4wMDEsICdsb3dwYXNzJywgMzYwICsgc2FmZURyb3AgKiAyOCk7XG4gICAgdm9pZCB0aGlzLnRvbmUoMTY0LjgxICsgc2FmZURyb3AgKiA4LCAwLjA0NSwgJ3RyaWFuZ2xlJywgMC4wMTIpO1xuICB9XG5cbiAgYnViYmxlU2h1ZmZsZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszOTIsIDAuMDRdLFxuICAgICAgICBbNTIzLjI1LCAwLjA0XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wNV0sXG4gICAgICAgIFs3ODMuOTksIDAuMDddLFxuICAgICAgXSxcbiAgICAgICdzaW5lJyxcbiAgICAgIDAuMDI0LFxuICAgICAgMzgsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAxOCwgJ2JhbmRwYXNzJywgOTUwKSwgMjgpO1xuICB9XG5cbiAgYnViYmxlRmV2ZXIoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnN3ZWVwKDM5MiwgMTU2Ny45OCwgMC4yNCwgJ3RyaWFuZ2xlJywgMC4wMzQpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zZXF1ZW5jZShbWzk4Ny43NywgMC4wNTVdLCBbMTMxOC41MSwgMC4wODVdXSwgJ3NpbmUnLCAwLjAyNSwgNDgpLCAxMjgpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTIsIDAuMDE0LCAnaGlnaHBhc3MnLCAyNDAwKSwgNzIpO1xuICB9XG5cbiAgYnViYmxlRmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbNTIzLjI1LCAwLjA3XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wN10sXG4gICAgICAgIFs3ODMuOTksIDAuMDhdLFxuICAgICAgICBbMTA0Ni41LCAwLjEzXSxcbiAgICAgICAgWzEzMTguNTEsIDAuMThdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjA0MixcbiAgICAgIDYyLFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4xOCwgMC4wMTYsICdiYW5kcGFzcycsIDE4MDApLCAxMTApO1xuICB9XG5cbiAgY2hlc3NpbWFsc01vdmUoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMzkyLCAwLjA0NV0sXG4gICAgICAgIFs0OTMuODgsIDAuMDU1XSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMzIsXG4gICAgICA0OCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDM1LCAwLjAxMiwgJ2JhbmRwYXNzJywgODIwKSwgOCk7XG4gIH1cblxuICBjaGVzc2ltYWxzQm90TW92ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszMjkuNjMsIDAuMDU1XSxcbiAgICAgICAgWzI0Ni45NCwgMC4wN10sXG4gICAgICBdLFxuICAgICAgJ3Nhd3Rvb3RoJyxcbiAgICAgIDAuMDI0LFxuICAgICAgNTYsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1LCAwLjAxLCAnbG93cGFzcycsIDQyMCksIDE2KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNDYXB0dXJlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzE3NC42MSwgMC4wNF0sXG4gICAgICAgIFsyNDYuOTQsIDAuMDQ1XSxcbiAgICAgICAgWzU4Ny4zMywgMC4wOTVdLFxuICAgICAgICBbNzgzLjk5LCAwLjA4XSxcbiAgICAgIF0sXG4gICAgICAnc3F1YXJlJyxcbiAgICAgIDAuMDQ2LFxuICAgICAgNDQsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoOTYsIDQyLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDIwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE4LCAwLjA1LCAnbG93cGFzcycsIDUyMCksIDE4KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA3LCAwLjAyOCwgJ2JhbmRwYXNzJywgMTgwMCksIDg0KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlcihwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcikpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNQb3dlckZhbGxiYWNrKHBvd2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXI6IENoZXNzaW1hbHNQb3dlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdGVzOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBOb3RlW10+ID0ge1xuICAgICAgZWFnbGU6IFtcbiAgICAgICAgWzY1OS4yNSwgMC4wNTVdLFxuICAgICAgICBbODgwLCAwLjA2NV0sXG4gICAgICAgIFsxMzE4LjUxLCAwLjEyXSxcbiAgICAgIF0sXG4gICAgICBidWxsOiBbXG4gICAgICAgIFsxOTYsIDAuMDc1XSxcbiAgICAgICAgWzE2NC44MSwgMC4wNzVdLFxuICAgICAgICBbMjQ2Ljk0LCAwLjEzXSxcbiAgICAgIF0sXG4gICAgICBrYW5nYXJvbzogW1xuICAgICAgICBbMzkyLCAwLjA1NV0sXG4gICAgICAgIFswLCAwLjA0XSxcbiAgICAgICAgWzc4My45OSwgMC4xMV0sXG4gICAgICBdLFxuICAgICAgbGlvbjogW1xuICAgICAgICBbMjYxLjYzLCAwLjA2XSxcbiAgICAgICAgWzM5MiwgMC4wNl0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDZdLFxuICAgICAgICBbNzgzLjk5LCAwLjE0XSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2Uobm90ZXNbcG93ZXJdLCBwb3dlciA9PT0gJ2J1bGwnID8gJ3Nhd3Rvb3RoJyA6ICd0cmlhbmdsZScsIDAuMDQ2LCA1OCk7XG4gICAgaWYgKHBvd2VyID09PSAnZWFnbGUnKSB7XG4gICAgICB2b2lkIHRoaXMuc3dlZXAoNzIwLCAxNTY4LCAwLjE4LCAndHJpYW5nbGUnLCAwLjAyOCk7XG4gICAgICB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjIyLCAwLjAyNSwgJ2hpZ2hwYXNzJywgMTYwMCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA4LCAwLjAxOCwgJ2JhbmRwYXNzJywgMjYwMCksIDkyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDE3NjAsIDAuMDU1LCAnc2luZScsIDAuMDE4KSwgMTUwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBvd2VyID09PSAnYnVsbCcpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDgyLjQxLCAwLjE2LCAnc2F3dG9vdGgnLCAwLjAzOCksIDcyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxMzguNTksIDY1LjQxLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDExOCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAzOCwgJ2xvd3Bhc3MnLCAyNjApLCAzNik7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1NSwgMC4wMjYsICdiYW5kcGFzcycsIDk2MCksIDE3MCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3dlciA9PT0gJ2thbmdhcm9vJykge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDQyMCwgOTQwLCAwLjExLCAnc2luZScsIDAuMDMyKSwgODgpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDk0MCwgNTIwLCAwLjEsICdzaW5lJywgMC4wMjYpLCAxOTApO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMjYxLjYzLCAwLjA1NSwgJ3RyaWFuZ2xlJywgMC4wMTgpLCAyNDUpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wMzUsIDAuMDE4LCAnYmFuZHBhc3MnLCAxMTgwKSwgMjE4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDE2NC44MSwgMzkyLCAwLjI0LCAnc2F3dG9vdGgnLCAwLjAzNCksIDcwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSg5OCwgMC4xOCwgJ3Nhd3Rvb3RoJywgMC4wMiksIDE1MCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4yOCwgMC4wMzIsICdiYW5kcGFzcycsIDM0MCksIDYyKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTk2LCAxNDYuODMsIDAuMjIsICdzYXd0b290aCcsIDAuMDIyKSwgMTE2KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2FtcGxlID0gQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTW3Bvd2VyXTtcbiAgICBpZiAodGhpcy5wbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMucGxheVNhbXBsZShzYW1wbGUsICgpID0+IHRoaXMuY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheVNhbXBsZShzYW1wbGU6IFNhbXBsZUNvbmZpZywgZmFsbGJhY2s6ICgpID0+IHZvaWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpIHx8IHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkID0gdGhpcy5zYW1wbGVDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgICBjb25zdCBhdWRpbyA9IGNhY2hlZCA/IChjYWNoZWQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxBdWRpb0VsZW1lbnQpIDogbmV3IEF1ZGlvKHNhbXBsZS5zcmMpO1xuICAgICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICAgIGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA9IGAke3NhbXBsZS52b2x1bWV9YDtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IHRoaXMuc2FtcGxlVm9sdW1lKHNhbXBsZSk7XG4gICAgICB0aGlzLmFjdGl2ZVNhbXBsZXMuYWRkKGF1ZGlvKTtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSAoKSA9PiB0aGlzLmFjdGl2ZVNhbXBsZXMuZGVsZXRlKGF1ZGlvKTtcbiAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgcmVsZWFzZSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWxlYXNlLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICBjb25zdCBwbGF5UmVzdWx0ID0gYXVkaW8ucGxheSgpO1xuICAgICAgaWYgKHBsYXlSZXN1bHQpIHtcbiAgICAgICAgcGxheVJlc3VsdC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlOiBTYW1wbGVDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYnVmZmVyID0gdGhpcy5idWZmZXJDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0O1xuICAgIGlmICghYnVmZmVyIHx8ICFjdHggfHwgY3R4LnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdm9pZCB0aGlzLnByZWxvYWRTYW1wbGVCdWZmZXIoc2FtcGxlLnNyYyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpZiAoY3R4LnN0YXRlID09PSAnc3VzcGVuZGVkJykgdm9pZCBjdHgucmVzdW1lKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgIGdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZSh0aGlzLnNhbXBsZVZvbHVtZShzYW1wbGUpLCBjdHguY3VycmVudFRpbWUpO1xuICAgICAgc291cmNlLmNvbm5lY3QoZ2Fpbik7XG4gICAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgICBzb3VyY2Uuc3RhcnQoY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNoZXNzaW1hbHNWaWN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgaWYgKHRoaXMucGxheVNhbXBsZShDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy52aWN0b3J5LCAoKSA9PiB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKSkpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNEZWZlYXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodGhpcy5wbGF5U2FtcGxlKENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLmRlZmVhdCwgKCkgPT4gdGhpcy5sb3NlKCkpKSByZXR1cm47XG4gICAgdGhpcy5sb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMTk2LCAwLjA4XSxcbiAgICAgICAgWzI2MS42MywgMC4wOF0sXG4gICAgICAgIFszMjkuNjMsIDAuMDhdLFxuICAgICAgICBbMzkyLCAwLjFdLFxuICAgICAgICBbNTIzLjI1LCAwLjEyXSxcbiAgICAgICAgWzc4My45OSwgMC4xNl0sXG4gICAgICAgIFsxMDQ2LjUsIDAuMjJdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjA1LFxuICAgICAgNzIsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTMwLjgxLCA2NS40MSwgMC4yOCwgJ3Nhd3Rvb3RoJywgMC4wMiksIDQwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoNTIzLjI1LCAxNTY3Ljk4LCAwLjM0LCAnc2luZScsIDAuMDI2KSwgMjQwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAyMiwgJ2JhbmRwYXNzJywgMTQwMCksIDEyMCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnNlcXVlbmNlKFtbOTg3Ljc3LCAwLjA4XSwgWzEzMTguNTEsIDAuMTJdXSwgJ3RyaWFuZ2xlJywgMC4wMzIsIDg2KSwgNTIwKTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNKb2luUmVxdWVzdCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFs1MjMuMjUsIDAuMDU1XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wNl0sXG4gICAgICAgIFs5ODcuNzcsIDAuMTJdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAzNCxcbiAgICAgIDU4LFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMTMxOC41MSwgMC4wNzUsICdzaW5lJywgMC4wMiksIDEzNik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wNiwgMC4wMSwgJ2hpZ2hwYXNzJywgMTgwMCksIDk4KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlclVubG9ja2VkKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzM5MiwgMC4wNTVdLFxuICAgICAgICBbNTIzLjI1LCAwLjA1NV0sXG4gICAgICAgIFs2NTkuMjUsIDAuMDhdLFxuICAgICAgICBbOTg3Ljc3LCAwLjEzXSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMzgsXG4gICAgICA2NCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgyMjAsIDg4MCwgMC4yMiwgJ3NpbmUnLCAwLjAyNCksIDcwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjI0LCAwLjAxOCwgJ2JhbmRwYXNzJywgMTIwMCksIDU0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZEJvb2xlYW5TZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1hdWRpbycsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkQm9vbGVhblNldHRpbmcoa2V5OiBzdHJpbmcsIGZhbGxiYWNrOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSAnMCc7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkVm9sdW1lU2V0dGluZyhrZXk6IHN0cmluZywgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gICAgdm9pZCB0aGlzLmRlZmF1bHRzUmVhZHk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAoc3RvcmVkID09PSBudWxsIHx8IHN0b3JlZC50cmltKCkgPT09ICcnKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICBjb25zdCB2YWx1ZSA9IE51bWJlcihzdG9yZWQpO1xuICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSkgOiBmYWxsYmFjaztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlU2V0dGluZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVZvbHVtZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlbG9hZFNhbXBsZShzcmM6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNhbXBsZUNhY2hlLmhhcyhzcmMpKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKHNyYyk7XG4gICAgICBhdWRpby5wcmVsb2FkID0gJ2F1dG8nO1xuICAgICAgYXVkaW8ubG9hZCgpO1xuICAgICAgdGhpcy5zYW1wbGVDYWNoZS5zZXQoc3JjLCBhdWRpbyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaSBlbCBuYXZlZ2Fkb3Igbm8gcGVybWl0ZSBwcmVjYXJnYXIsIHNlIGludGVudGFyYSBhbCByZXByb2R1Y2lyLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlbG9hZFNhbXBsZUJ1ZmZlcihzcmM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmJ1ZmZlckNhY2hlLmhhcyhzcmMpKSByZXR1cm47XG4gICAgY29uc3QgYWN0aXZlUHJlbG9hZCA9IHRoaXMuYnVmZmVyUHJlbG9hZHMuZ2V0KHNyYyk7XG4gICAgaWYgKGFjdGl2ZVByZWxvYWQpIHJldHVybiBhY3RpdmVQcmVsb2FkO1xuXG4gICAgY29uc3QgcHJlbG9hZCA9IChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGZldGNoID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy5lbnN1cmVDb250ZXh0KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNyYyk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGN0eC5kZWNvZGVBdWRpb0RhdGEoZGF0YS5zbGljZSgwKSk7XG4gICAgICB0aGlzLmJ1ZmZlckNhY2hlLnNldChzcmMsIGJ1ZmZlcik7XG4gICAgfSkoKVxuICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5idWZmZXJQcmVsb2Fkcy5kZWxldGUoc3JjKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5idWZmZXJQcmVsb2Fkcy5zZXQoc3JjLCBwcmVsb2FkKTtcbiAgICByZXR1cm4gcHJlbG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgbWlncmF0ZUNoZXNzaW1hbHNBdWRpb0RlZmF1bHRzKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtaWdyYXRpb25LZXkgPSAndmFsLW1pbmktZ2FtZXMtY2hlc3NpbWFscy1hdWRpby1kZWZhdWx0cy12Mic7XG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0obWlncmF0aW9uS2V5KSA9PT0gJzEnKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGNvbnN0IHN0b3JlZE11c2ljVm9sdW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScpO1xuICAgICAgY29uc3Qgc3RvcmVkU2Z4Vm9sdW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnKTtcbiAgICAgIGlmICghc3RvcmVkTXVzaWNWb2x1bWUgfHwgc3RvcmVkTXVzaWNWb2x1bWUgPT09ICcwJykge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgJzAuMjUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RvcmVkU2Z4Vm9sdW1lIHx8IHN0b3JlZFNmeFZvbHVtZSA9PT0gJzAnKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1zZngtdm9sdW1lJywgJzAuOCcpO1xuICAgICAgfVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obWlncmF0aW9uS2V5LCAnMScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUGxheU11c2ljKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQoKSAmJiB0aGlzLm11c2ljRW5hYmxlZCgpICYmIHRoaXMubXVzaWNWb2x1bWUoKSA+IDA7XG4gIH1cblxuICBwcml2YXRlIGNhblBsYXlTZngoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCgpICYmIHRoaXMuc2Z4RW5hYmxlZCgpICYmIHRoaXMuc2Z4Vm9sdW1lKCkgPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVDb250ZXh0KCk6IFByb21pc2U8QXVkaW9Db250ZXh0PiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQgfHwgdGhpcy5jb250ZXh0LnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhpcy5jb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluID0gdGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKTtcbiAgICAgIHRoaXMubWFzdGVyR2Fpbi5nYWluLnZhbHVlID0gMTtcbiAgICAgIHRoaXMubWFzdGVyR2Fpbi5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIG1lbnVNZWxvZHkoKTogTm90ZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgWzIyMCwgMC4zOF0sXG4gICAgICBbMCwgMC4xMl0sXG4gICAgICBbMjYxLjYzLCAwLjM0XSxcbiAgICAgIFszMjkuNjMsIDAuNDJdLFxuICAgICAgWzI5My42NiwgMC4yOF0sXG4gICAgICBbMCwgMC4xMl0sXG4gICAgICBbMzkyLCAwLjQ4XSxcbiAgICAgIFszMjkuNjMsIDAuMzRdLFxuICAgICAgWzI2MS42MywgMC4zNl0sXG4gICAgICBbMjIwLCAwLjU4XSxcbiAgICAgIFswLCAwLjJdLFxuICAgICAgWzI5My42NiwgMC4zNF0sXG4gICAgICBbMzI5LjYzLCAwLjQyXSxcbiAgICAgIFs0NDAsIDAuNV0sXG4gICAgICBbMzkyLCAwLjM2XSxcbiAgICAgIFsyNjEuNjMsIDAuNjJdLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHNhdmFubmFQdWxzZShzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoc3RlcCAlIDQgPT09IDApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCg5NiwgNDgsIDAuMTgsICdzaW5lJywgMC4wMTIpLCAxOCk7XG4gICAgfVxuICAgIGlmIChzdGVwICUgOCA9PT0gNSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMTY0LjgxLCAwLjA0NSwgJ3RyaWFuZ2xlJywgMC4wMTIpLCA5Nik7XG4gICAgfVxuICAgIGlmIChzdGVwICUgMTYgPT09IDEwKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTQ2LjgzLCAxOTYsIDAuMDgsICd0cmlhbmdsZScsIDAuMDEpLCAxNDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2FtZU1lbG9keSgpOiBOb3RlW10ge1xuICAgIHJldHVybiBbXG4gICAgICBbNTIzLjI1LCAwLjEzXSxcbiAgICAgIFs2NTkuMjUsIDAuMTNdLFxuICAgICAgWzc4My45OSwgMC4xM10sXG4gICAgICBbMTA0Ni41LCAwLjE4XSxcbiAgICAgIFs3ODMuOTksIDAuMTNdLFxuICAgICAgWzY1OS4yNSwgMC4xM10sXG4gICAgICBbNTg3LjMzLCAwLjE4XSxcbiAgICAgIFs2NTkuMjUsIDAuMThdLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcXVlbmNlKFxuICAgIG5vdGVzOiBOb3RlW10sXG4gICAgd2F2ZTogT3NjaWxsYXRvclR5cGUgPSAnc3F1YXJlJyxcbiAgICBnYWluID0gMC4wNTUsXG4gICAgaW50ZXJ2YWxNcyA9IDkwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG5vdGVzW2ldO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pLCBpICogaW50ZXJ2YWxNcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNhbXBsZU11c2ljKGNvbmZpZzogU2FtcGxlTXVzaWNDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNEb2N1bWVudFZpc2libGUoKSkge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWNDb25maWc/LnNyYyA9PT0gY29uZmlnLnNyYyAmJiAhdGhpcy5zYW1wbGVNdXNpYz8ucGF1c2VkKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oY29uZmlnLnNyYyk7XG4gICAgYXVkaW8ubG9vcCA9IHRydWU7XG4gICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICB0aGlzLnNhbXBsZU11c2ljID0gYXVkaW87XG4gICAgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZyA9IGNvbmZpZztcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbywgY29uZmlnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXVkaW8ucGxheSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BTYW1wbGVNdXNpYygpOiB2b2lkIHtcbiAgICBjb25zdCBtdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWM7XG4gICAgdGhpcy5zYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNhbXBsZU11c2ljQ29uZmlnID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzY29ubmVjdFNhbXBsZU11c2ljR3JhcGgoKTtcbiAgICBpZiAoIW11c2ljKSByZXR1cm47XG4gICAgbXVzaWMucGF1c2UoKTtcbiAgICBtdXNpYy5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2FtcGxlTXVzaWNWb2x1bWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNhbXBsZU11c2ljIHx8ICF0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSByZXR1cm47XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5zYW1wbGVNdXNpY1ZvbHVtZSh0aGlzLnNhbXBsZU11c2ljQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpY0dhaW4gJiYgdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljR2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh2b2x1bWUsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwgMC4wMjUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljLnZvbHVtZSA9IHZvbHVtZTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIGNvbmZpZy52b2x1bWUgKiB0aGlzLm11c2ljVm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlVm9sdW1lKHNhbXBsZTogU2FtcGxlQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgc2FtcGxlLnZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBY3RpdmVTYW1wbGVWb2x1bWVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYXVkaW8gb2YgdGhpcy5hY3RpdmVTYW1wbGVzKSB7XG4gICAgICBjb25zdCBiYXNlVm9sdW1lID0gTnVtYmVyKGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA/PyAnMScpO1xuICAgICAgYXVkaW8udm9sdW1lID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgYmFzZVZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCwgY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMuc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnKTtcbiAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgICBjb25zdCBzb3VyY2UgPSBjdHguY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGF1ZGlvKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKHZvbHVtZSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHNvdXJjZS5jb25uZWN0KGdhaW4pO1xuICAgICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gZ2FpbjtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IDE7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY0dhaW4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNjb25uZWN0U2FtcGxlTXVzaWNHcmFwaCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZT8uZGlzY29ubmVjdCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRWwgbm9kbyBwdWVkZSBlc3RhciBkZXNjb25lY3RhZG8gc2kgZWwgbmF2ZWdhZG9yIGxpYmVybyBsYSBwaXN0YS5cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluPy5kaXNjb25uZWN0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCBub2RvIHB1ZWRlIGVzdGFyIGRlc2NvbmVjdGFkbyBzaSBlbCBuYXZlZ2Fkb3IgbGliZXJvIGxhIHBpc3RhLlxuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0b25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3NxdWFyZScsIGdhaW5WYWx1ZSA9IDAuMDQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgaWYgKGZyZXEgPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXE7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3dlZXAoXG4gICAgZnJvbUZyZXE6IG51bWJlcixcbiAgICB0b0ZyZXE6IG51bWJlcixcbiAgICBkdXJhdGlvbiA9IDAuMTYsXG4gICAgdHlwZTogT3NjaWxsYXRvclR5cGUgPSAndHJpYW5nbGUnLFxuICAgIGdhaW5WYWx1ZSA9IDAuMDMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5U2Z4KCkpIHJldHVybjtcbiAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLndha2VBdWRpbygpO1xuICAgIGNvbnN0IG9zY2lsbGF0b3IgPSBjdHguY3JlYXRlT3NjaWxsYXRvcigpO1xuICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgIG9zY2lsbGF0b3IudHlwZSA9IHR5cGU7XG4gICAgb3NjaWxsYXRvci5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoZnJvbUZyZXEsIGN0eC5jdXJyZW50VGltZSk7XG4gICAgb3NjaWxsYXRvci5mcmVxdWVuY3kuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShNYXRoLm1heCgxLCB0b0ZyZXEpLCBjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbik7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIC8vIENoZXNzaW1hbHMgdXNlcyBnZW5lcmF0ZWQgV2ViQXVkaW8gbGF5ZXJzIGluc3RlYWQgb2YgdGhpcmQtcGFydHkgc2FtcGxlcyxcbiAgLy8gYXZvaWRpbmcgbGljZW5zaW5nIHJpc2sgd2hpbGUga2VlcGluZyBlYWNoIGFuaW1hbCBwb3dlciBleHByZXNzaXZlLlxuICBwcml2YXRlIGFzeW5jIGZpbHRlcmVkTm9pc2UoXG4gICAgZHVyYXRpb24gPSAwLjEyLFxuICAgIGdhaW5WYWx1ZSA9IDAuMDI1LFxuICAgIGZpbHRlclR5cGU6IEJpcXVhZEZpbHRlclR5cGUgPSAnYmFuZHBhc3MnLFxuICAgIGZyZXF1ZW5jeSA9IDkwMCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlTZngoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgc2FtcGxlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGN0eC5zYW1wbGVSYXRlICogZHVyYXRpb24pKTtcbiAgICBjb25zdCBidWZmZXIgPSBjdHguY3JlYXRlQnVmZmVyKDEsIHNhbXBsZUNvdW50LCBjdHguc2FtcGxlUmF0ZSk7XG4gICAgY29uc3QgY2hhbm5lbCA9IGJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGRlY2F5ID0gMSAtIGkgLyBzYW1wbGVDb3VudDtcbiAgICAgIGNoYW5uZWxbaV0gPSAoTWF0aC5yYW5kb20oKSAqIDIgLSAxKSAqIGRlY2F5O1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcbiAgICBjb25zdCBmaWx0ZXIgPSBjdHguY3JlYXRlQmlxdWFkRmlsdGVyKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgZmlsdGVyLnR5cGUgPSBmaWx0ZXJUeXBlO1xuICAgIGZpbHRlci5mcmVxdWVuY3kudmFsdWUgPSBmcmVxdWVuY3k7XG4gICAgZmlsdGVyLlEudmFsdWUgPSBmaWx0ZXJUeXBlID09PSAnbG93cGFzcycgPyAwLjcgOiAxLjg7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxMik7XG4gICAgZ2Fpbi5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbik7XG4gICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICBzb3VyY2UuY29ubmVjdChmaWx0ZXIpO1xuICAgIGZpbHRlci5jb25uZWN0KGdhaW4pO1xuICAgIGdhaW4uY29ubmVjdCh0aGlzLm1hc3RlckdhaW4gPz8gY3R4LmRlc3RpbmF0aW9uKTtcbiAgICBzb3VyY2Uuc3RhcnQoKTtcbiAgICBzb3VyY2Uuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgIHRoaXMucGF1c2VGb3JCYWNrZ3JvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgdGhpcy5yZXN1bWVGcm9tQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlUGFnZUhpZGUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5wYXVzZUZvckJhY2tncm91bmQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVBhZ2VTaG93ID0gKCk6IHZvaWQgPT4ge1xuICAgIHZvaWQgdGhpcy5yZXN1bWVGcm9tQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVXNlckFjdGl2YXRpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQoKSB8fCAhdGhpcy5pc0RvY3VtZW50VmlzaWJsZSgpKSByZXR1cm47XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBpZiAodGhpcy5wYXVzZWRTYW1wbGVNdXNpYykge1xuICAgICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgdGhpcy53YWtlQXVkaW8oKTtcbiAgfTtcblxuICBwcml2YXRlIHBhdXNlRm9yQmFja2dyb3VuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVNZWxvZHkpIHRoaXMucGF1c2VkTWVsb2R5ID0gdGhpcy5hY3RpdmVNZWxvZHk7XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWMgJiYgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZykge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWNDb25maWc7XG4gICAgICB0aGlzLnN0b3BTYW1wbGVNdXNpYygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLm11c2ljVGltZXIpO1xuICAgICAgdGhpcy5tdXNpY1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygwLjAwMDEsIDAuMik7XG4gICAgaWYgKHRoaXMuc3VzcGVuZFRpbWVyKSB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc3VzcGVuZFRpbWVyKTtcbiAgICB0aGlzLnN1c3BlbmRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgdm9pZCB0aGlzLmNvbnRleHQ/LnN1c3BlbmQoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDI2MCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3VtZUZyb21CYWNrZ3JvdW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnN1c3BlbmRUaW1lcikge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnN1c3BlbmRUaW1lcik7XG4gICAgICB0aGlzLnN1c3BlbmRUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHNhbXBsZU11c2ljID0gdGhpcy5wYXVzZWRTYW1wbGVNdXNpYztcbiAgICBpZiAoc2FtcGxlTXVzaWMpIHtcbiAgICAgIHRoaXMucGF1c2VkU2FtcGxlTXVzaWMgPSB1bmRlZmluZWQ7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoc2FtcGxlTXVzaWMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZWxvZHkgPSB0aGlzLnBhdXNlZE1lbG9keTtcbiAgICBpZiAoIW1lbG9keSkgcmV0dXJuO1xuICAgIHRoaXMucGF1c2VkTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMuZW5zdXJlQ29udGV4dCgpO1xuICAgIGF3YWl0IHRoaXMucmVzdW1lQ29udGV4dChjdHgpO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDEsIDAuMzUpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRNdXNpYyhtZWxvZHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWtlQXVkaW8oKTogUHJvbWlzZTxBdWRpb0NvbnRleHQ+IHtcbiAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLmVuc3VyZUNvbnRleHQoKTtcbiAgICBhd2FpdCB0aGlzLnJlc3VtZUNvbnRleHQoY3R4KTtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygxLCAwLjEyKTtcbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN1bWVDb250ZXh0KGN0eDogQXVkaW9Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGN0eC5zdGF0ZSA9PT0gJ3J1bm5pbmcnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGN0eC5yZXN1bWUoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlPUyBwdWVkZSBleGlnaXIgdW5hIG51ZXZhIGludGVyYWNjacOzbiBkZWwgdXN1YXJpbzsgZWwgbGlzdGVuZXIgZGUgYWN0aXZhY2nDs24gcmVpbnRlbnRhcsOhLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmFkZU1hc3RlclRvKHZhbHVlOiBudW1iZXIsIHNlY29uZHM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0IHx8ICF0aGlzLm1hc3RlckdhaW4pIHJldHVybjtcbiAgICBjb25zdCBnYWluID0gdGhpcy5tYXN0ZXJHYWluLmdhaW47XG4gICAgY29uc3Qgbm93ID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xuICAgIGdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKG5vdyk7XG4gICAgZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodmFsdWUsIG5vdywgTWF0aC5tYXgoMC4wMSwgc2Vjb25kcyAvIDQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEb2N1bWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRvY3VtZW50LmhpZGRlbjtcbiAgfVxufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.420';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40MjAnO1xuIl19
5
+ export const VERSION = '4.0.421';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40MjEnO1xuIl19
@@ -58,7 +58,7 @@ import fixWebmDuration from 'fix-webm-duration';
58
58
  * Current version of valtech-components.
59
59
  * This is automatically updated during the publish process.
60
60
  */
61
- const VERSION = '4.0.420';
61
+ const VERSION = '4.0.421';
62
62
 
63
63
  // Control de estado de refresco (singleton a nivel de módulo)
64
64
  let isRefreshing = false;
@@ -63304,6 +63304,62 @@ class RetroAudioService {
63304
63304
  [146.83, 0.18],
63305
63305
  ]);
63306
63306
  }
63307
+ bubblePop(size = 2, combo = 1) {
63308
+ const safeSize = Math.max(2, Math.min(12, Math.round(size)));
63309
+ const safeCombo = Math.max(1, Math.min(9, Math.round(combo)));
63310
+ const base = 520 + safeSize * 18;
63311
+ void this.filteredNoise(0.065, 0.018 + safeSize * 0.0018, 'bandpass', 1200 + safeSize * 85);
63312
+ void this.sweep(base, base * 1.9, 0.09, 'sine', 0.026 + safeSize * 0.0014);
63313
+ window.setTimeout(() => void this.tone(base * 1.25, 0.055, 'triangle', 0.018), 38);
63314
+ if (safeSize >= 5 || safeCombo > 1) {
63315
+ window.setTimeout(() => void this.bubbleCombo(safeCombo), 82);
63316
+ }
63317
+ }
63318
+ bubbleCombo(combo = 1) {
63319
+ const safeCombo = Math.max(1, Math.min(9, Math.round(combo)));
63320
+ const root = 660 + safeCombo * 26;
63321
+ void this.sequence([
63322
+ [root, 0.045],
63323
+ [root * 1.25, 0.055],
63324
+ [root * 1.5, 0.07],
63325
+ ], 'triangle', 0.024 + safeCombo * 0.0016, 42);
63326
+ }
63327
+ bubbleInvalid() {
63328
+ void this.sequence([
63329
+ [246.94, 0.055],
63330
+ [196, 0.085],
63331
+ ], 'sine', 0.034, 54);
63332
+ }
63333
+ bubbleSettle(drop = 1) {
63334
+ const safeDrop = Math.max(1, Math.min(9, Math.round(drop)));
63335
+ void this.filteredNoise(0.055, 0.009 + safeDrop * 0.001, 'lowpass', 360 + safeDrop * 28);
63336
+ void this.tone(164.81 + safeDrop * 8, 0.045, 'triangle', 0.012);
63337
+ }
63338
+ bubbleShuffle() {
63339
+ void this.sequence([
63340
+ [392, 0.04],
63341
+ [523.25, 0.04],
63342
+ [659.25, 0.05],
63343
+ [783.99, 0.07],
63344
+ ], 'sine', 0.024, 38);
63345
+ window.setTimeout(() => void this.filteredNoise(0.16, 0.018, 'bandpass', 950), 28);
63346
+ }
63347
+ bubbleFever() {
63348
+ void this.sweep(392, 1567.98, 0.24, 'triangle', 0.034);
63349
+ window.setTimeout(() => void this.sequence([[987.77, 0.055], [1318.51, 0.085]], 'sine', 0.025, 48), 128);
63350
+ window.setTimeout(() => void this.filteredNoise(0.12, 0.014, 'highpass', 2400), 72);
63351
+ }
63352
+ bubbleFinish() {
63353
+ this.stopMusic();
63354
+ void this.sequence([
63355
+ [523.25, 0.07],
63356
+ [659.25, 0.07],
63357
+ [783.99, 0.08],
63358
+ [1046.5, 0.13],
63359
+ [1318.51, 0.18],
63360
+ ], 'triangle', 0.042, 62);
63361
+ window.setTimeout(() => void this.filteredNoise(0.18, 0.016, 'bandpass', 1800), 110);
63362
+ }
63307
63363
  chessimalsMove() {
63308
63364
  void this.sequence([
63309
63365
  [392, 0.045],
@@ -67731,7 +67787,7 @@ class BubbleBlitzGameComponent {
67731
67787
  this.selectedGroupKey.set(group.map((item) => item.id).sort().join('|'));
67732
67788
  if (group.length < 2) {
67733
67789
  this.combo.set(1);
67734
- this.audio.miss();
67790
+ this.audio.bubbleInvalid();
67735
67791
  return;
67736
67792
  }
67737
67793
  this.animating.set(true);
@@ -67741,22 +67797,27 @@ class BubbleBlitzGameComponent {
67741
67797
  const points = group.length * group.length * this.combo() * feverMultiplier;
67742
67798
  this.score.update((value) => value + points);
67743
67799
  this.popped.update((value) => value + group.length);
67744
- this.fever.set(this.feverReady() ? 0 : Math.min(this.config().feverTarget, this.fever() + group.length));
67800
+ const feverWasReady = this.feverReady();
67801
+ this.fever.set(feverWasReady ? 0 : Math.min(this.config().feverTarget, this.fever() + group.length));
67745
67802
  this.combo.update((value) => {
67746
67803
  const next = Math.min(9, group.length >= 5 ? value + 1 : value);
67747
67804
  this.maxCombo.update((best) => Math.max(best, next));
67748
67805
  return next;
67749
67806
  });
67750
- this.audio.match();
67807
+ this.audio.bubblePop(group.length, this.combo());
67808
+ if (!feverWasReady && this.feverReady()) {
67809
+ window.setTimeout(() => this.audio.bubbleFever(), 100);
67810
+ }
67751
67811
  this.clearAnimationTimer();
67752
67812
  this.animationTimer = window.setTimeout(() => {
67753
67813
  const settled = this.refillBoard(this.grid().filter((item) => !groupIds.has(item.id)));
67754
67814
  this.grid.set(settled);
67815
+ this.audio.bubbleSettle(Math.max(1, ...settled.map((item) => item.drop ?? 0)));
67755
67816
  this.animationTimer = window.setTimeout(() => {
67756
67817
  if (!this.hasPlayableGroup(this.grid())) {
67757
67818
  this.grid.set(this.createBoard().map((item) => ({ ...item, state: 'entering', drop: this.config().rows })));
67758
67819
  this.combo.set(1);
67759
- this.audio.flip();
67820
+ this.audio.bubbleShuffle();
67760
67821
  this.animationTimer = window.setTimeout(() => this.finishAnimation(), BUBBLE_SETTLE_MS);
67761
67822
  return;
67762
67823
  }
@@ -67849,7 +67910,7 @@ class BubbleBlitzGameComponent {
67849
67910
  this.stopTimer();
67850
67911
  this.phase.set('finished');
67851
67912
  this.saveScore();
67852
- this.audio.win();
67913
+ this.audio.bubbleFinish();
67853
67914
  }
67854
67915
  createBoard() {
67855
67916
  const cells = [];