valtech-components 4.0.423 → 4.0.424
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +13 -1
- package/esm2022/lib/components/organisms/mini-games/retro-audio.service.mjs +8 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +20 -1
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +2 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -117,6 +117,9 @@ export class RetroAudioService {
|
|
|
117
117
|
Object.values(CHESSIMALS_POWER_SAMPLES).forEach((sample) => {
|
|
118
118
|
void this.preloadSampleBuffer(sample.src);
|
|
119
119
|
});
|
|
120
|
+
Object.values(CHESSIMALS_OUTCOME_SAMPLES).forEach((sample) => {
|
|
121
|
+
void this.preloadSampleBuffer(sample.src);
|
|
122
|
+
});
|
|
120
123
|
if (typeof Audio === 'undefined')
|
|
121
124
|
return;
|
|
122
125
|
[
|
|
@@ -430,12 +433,16 @@ export class RetroAudioService {
|
|
|
430
433
|
}
|
|
431
434
|
chessimalsVictory() {
|
|
432
435
|
this.stopMusic();
|
|
436
|
+
if (this.playBufferedSample(CHESSIMALS_OUTCOME_SAMPLES.victory))
|
|
437
|
+
return;
|
|
433
438
|
if (this.playSample(CHESSIMALS_OUTCOME_SAMPLES.victory, () => this.chessimalsVictoryFallback()))
|
|
434
439
|
return;
|
|
435
440
|
this.chessimalsVictoryFallback();
|
|
436
441
|
}
|
|
437
442
|
chessimalsDefeat() {
|
|
438
443
|
this.stopMusic();
|
|
444
|
+
if (this.playBufferedSample(CHESSIMALS_OUTCOME_SAMPLES.defeat))
|
|
445
|
+
return;
|
|
439
446
|
if (this.playSample(CHESSIMALS_OUTCOME_SAMPLES.defeat, () => this.lose()))
|
|
440
447
|
return;
|
|
441
448
|
this.lose();
|
|
@@ -912,4 +919,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
912
919
|
type: Injectable,
|
|
913
920
|
args: [{ providedIn: 'root' }]
|
|
914
921
|
}], ctorParameters: () => [] });
|
|
915
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cm8tYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9yZXRyby1hdWRpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRCxNQUFNLHdCQUF3QixHQUEwQztJQUN0RSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNyRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBQ0YsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNsRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUN0RSxDQUFDO0FBQ0YsTUFBTSxxQkFBcUIsR0FBc0I7SUFDL0MsR0FBRyxFQUFFLHVDQUF1QztJQUM1QyxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFDRixNQUFNLHFCQUFxQixHQUFzQjtJQUMvQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUdGLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCO1FBckJRLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFJTCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBTzVDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDOUQsWUFBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsa0JBQWtCLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RixlQUFVLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGdCQUFXLEdBQUcsTUFBTSxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGNBQVMsR0FBRyxNQUFNLENBQVMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFtM0JsRCwyQkFBc0IsR0FBRyxHQUFTLEVBQUU7WUFDbkQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRWUsbUJBQWMsR0FBRyxHQUFTLEVBQUU7WUFDM0MsS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFZSx5QkFBb0IsR0FBRyxHQUFTLEVBQUU7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFBRSxPQUFPO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2pDLE9BQU87WUFDVCxDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBeDRCQSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMzRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx1REFBdUQ7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QjtRQUM1QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekQsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1lBQUUsT0FBTztRQUN6QztZQUNFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztZQUMxQywwQkFBMEIsQ0FBQyxPQUFPO1lBQ2xDLDBCQUEwQixDQUFDLE1BQU07U0FDbEMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBbUIsTUFBTTtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUFFLE9BQU87UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQUUsT0FBTztRQUMxRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqSCxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxHQUFtQixJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNyRSxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEQsSUFBSSxJQUFJLEtBQUssTUFBTTtnQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxLQUFLLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSztRQUNILEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDVixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ2YsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFzQjtRQUMzQyxNQUFNLEtBQUssR0FBb0M7WUFDN0MsS0FBSyxFQUFFLEdBQUc7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ1gsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLFFBQVEsR0FBRyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUYsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxRQUFR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QUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6RSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDL0UsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEYsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxH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QVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELHFCQUFxQjtRQUNuQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCO1lBQ0UsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCO1lBQ0UsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQ1osQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMs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LENBQUM7WUFDVCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDVCxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7WUFDUixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDZCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDVixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZO1FBQy9CLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FB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aUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG50eXBlIE5vdGUgPSBbbnVtYmVyLCBudW1iZXJdO1xudHlwZSBNZWxvZHlNb2RlID0gJ21lbnUnIHwgJ2dhbWUnIHwgJ2J1YmJsZSc7XG50eXBlIENoZXNzaW1hbHNQb3dlciA9ICdlYWdsZScgfCAnYnVsbCcgfCAna2FuZ2Fyb28nIHwgJ2xpb24nO1xudHlwZSBTYW1wbGVDb25maWcgPSB7IHNyYzogc3RyaW5nOyB2b2x1bWU6IG51bWJlciB9O1xudHlwZSBTYW1wbGVNdXNpY0NvbmZpZyA9IHsgc3JjOiBzdHJpbmc7IHZvbHVtZTogbnVtYmVyIH07XG5cbmNvbnN0IENIRVNTSU1BTFNfUE9XRVJfU0FNUExFUzogUmVjb3JkPENoZXNzaW1hbHNQb3dlciwgU2FtcGxlQ29uZmlnPiA9IHtcbiAgZWFnbGU6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUtY3J5LndhdicsIHZvbHVtZTogMC42MiB9LFxuICBidWxsOiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwud2F2Jywgdm9sdW1lOiAwLjkgfSxcbiAga2FuZ2Fyb286IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28tanVtcC5tcDMnLCB2b2x1bWU6IDAuODIgfSxcbiAgbGlvbjogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9saW9uLXJvYXIud2F2Jywgdm9sdW1lOiAwLjgyIH0sXG59O1xuY29uc3QgQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMgPSB7XG4gIHZpY3Rvcnk6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdGFkYS5tcDMnLCB2b2x1bWU6IDAuNzIgfSxcbiAgZGVmZWF0OiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3lvdS1sb3NlLm1wMycsIHZvbHVtZTogMC43MiB9LFxufTtcbmNvbnN0IENIRVNTSU1BTFNfTUVOVV9NVVNJQzogU2FtcGxlTXVzaWNDb25maWcgPSB7XG4gIHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21haW4tbWVudS5tcDMnLFxuICB2b2x1bWU6IDAuMzIsXG59O1xuY29uc3QgQ0hFU1NJTUFMU19HQU1FX01VU0lDOiBTYW1wbGVNdXNpY0NvbmZpZyA9IHtcbiAgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvR2FtZS5tcDMnLFxuICB2b2x1bWU6IDAuMzIsXG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJldHJvQXVkaW9TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0PzogQXVkaW9Db250ZXh0O1xuICBwcml2YXRlIG1hc3RlckdhaW4/OiBHYWluTm9kZTtcbiAgcHJpdmF0ZSBtdXNpY1RpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIG5vdGVJbmRleCA9IDA7XG4gIHByaXZhdGUgYWN0aXZlTWVsb2R5PzogTWVsb2R5TW9kZTtcbiAgcHJpdmF0ZSBwYXVzZWRNZWxvZHk/OiBNZWxvZHlNb2RlO1xuICBwcml2YXRlIHN1c3BlbmRUaW1lcj86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVTYW1wbGVzID0gbmV3IFNldDxIVE1MQXVkaW9FbGVtZW50PigpO1xuICBwcml2YXRlIHNhbXBsZU11c2ljPzogSFRNTEF1ZGlvRWxlbWVudDtcbiAgcHJpdmF0ZSBzYW1wbGVNdXNpY0NvbmZpZz86IFNhbXBsZU11c2ljQ29uZmlnO1xuICBwcml2YXRlIHNhbXBsZU11c2ljU291cmNlPzogTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlO1xuICBwcml2YXRlIHNhbXBsZU11c2ljR2Fpbj86IEdhaW5Ob2RlO1xuICBwcml2YXRlIHBhdXNlZFNhbXBsZU11c2ljPzogU2FtcGxlTXVzaWNDb25maWc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0c1JlYWR5ID0gdGhpcy5taWdyYXRlQ2hlc3NpbWFsc0F1ZGlvRGVmYXVsdHMoKTtcbiAgcmVhZG9ubHkgZW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRFbmFibGVkKCkpO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4odGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLWVuYWJsZWQnLCB0cnVlKSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4odGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLXNmeC1lbmFibGVkJywgdHJ1ZSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZSA9IHNpZ25hbDxudW1iZXI+KHRoaXMucmVhZFZvbHVtZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScsIDAuMjUpKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lID0gc2lnbmFsPG51bWJlcj4odGhpcy5yZWFkVm9sdW1lU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScsIDAuOCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxBdWRpb0VsZW1lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQXVkaW9CdWZmZXI+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyUHJlbG9hZHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuaGFuZGxlVXNlckFjdGl2YXRpb24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLmhhbmRsZVVzZXJBY3RpdmF0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVVc2VyQWN0aXZhdGlvbik7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgdGhpcy5oYW5kbGVQYWdlSGlkZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCB0aGlzLmhhbmRsZVBhZ2VTaG93KTtcbiAgICB9XG4gIH1cblxuICBzZXRFbmFibGVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVkLnNldCh2YWx1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1hdWRpbycsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkgdGhpcy5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHNldE11c2ljRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubXVzaWNFbmFibGVkLnNldCh2YWx1ZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLWVuYWJsZWQnLCB2YWx1ZSA/ICcxJyA6ICcwJyk7XG4gICAgaWYgKCF2YWx1ZSkgdGhpcy5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHNldFNmeEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNmeEVuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LWVuYWJsZWQnLCB2YWx1ZSA/ICcxJyA6ICcwJyk7XG4gIH1cblxuICBzZXRNdXNpY1ZvbHVtZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5ub3JtYWxpemVWb2x1bWUodmFsdWUpO1xuICAgIHRoaXMubXVzaWNWb2x1bWUuc2V0KHZvbHVtZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLW11c2ljLXZvbHVtZScsIGAke3ZvbHVtZX1gKTtcbiAgICBpZiAodm9sdW1lIDw9IDApIHtcbiAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwbHlTYW1wbGVNdXNpY1ZvbHVtZSgpO1xuICB9XG5cbiAgc2V0U2Z4Vm9sdW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSk7XG4gICAgdGhpcy5zZnhWb2x1bWUuc2V0KHZvbHVtZSk7XG4gICAgdGhpcy53cml0ZVNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnLCBgJHt2b2x1bWV9YCk7XG4gICAgdGhpcy5hcHBseUFjdGl2ZVNhbXBsZVZvbHVtZXMoKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0TWVudU11c2ljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc3RhcnRNdXNpYygnbWVudScpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgYXdhaXQgdGhpcy5zdGFydFNhbXBsZU11c2ljKENIRVNTSU1BTFNfTUVOVV9NVVNJQyk7XG4gIH1cblxuICBhc3luYyBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoQ0hFU1NJTUFMU19HQU1FX01VU0lDKTtcbiAgfVxuXG4gIHByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKENIRVNTSU1BTFNfUE9XRVJfU0FNUExFUykuZm9yRWFjaCgoc2FtcGxlKSA9PiB7XG4gICAgICB2b2lkIHRoaXMucHJlbG9hZFNhbXBsZUJ1ZmZlcihzYW1wbGUuc3JjKTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIFtcbiAgICAgIC4uLk9iamVjdC52YWx1ZXMoQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTKSxcbiAgICAgIENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLnZpY3RvcnksXG4gICAgICBDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy5kZWZlYXQsXG4gICAgXS5mb3JFYWNoKChzYW1wbGUpID0+IHRoaXMucHJlbG9hZFNhbXBsZShzYW1wbGUuc3JjKSk7XG4gIH1cblxuICBhc3luYyBzdGFydEdhbWVNdXNpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0TXVzaWMoJ2dhbWUnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0QnViYmxlQmxpdHpNdXNpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0TXVzaWMoJ2J1YmJsZScpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRNdXNpYyhtb2RlOiBNZWxvZHlNb2RlID0gJ2dhbWUnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlNdXNpYygpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmlzRG9jdW1lbnRWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMucGF1c2VkTWVsb2R5ID0gbW9kZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyICYmIHRoaXMuYWN0aXZlTWVsb2R5ID09PSBtb2RlKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmZhZGVNYXN0ZXJUbygxLCAwLjI0KTtcbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IG1vZGU7XG4gICAgdGhpcy5ub3RlSW5kZXggPSAwO1xuICAgIGNvbnN0IG1lbG9keSA9IG1vZGUgPT09ICdtZW51JyA/IHRoaXMubWVudU1lbG9keSgpIDogbW9kZSA9PT0gJ2J1YmJsZScgPyB0aGlzLmJ1YmJsZU1lbG9keSgpIDogdGhpcy5nYW1lTWVsb2R5KCk7XG4gICAgY29uc3QgaW50ZXJ2YWxNcyA9IG1vZGUgPT09ICdtZW51JyA/IDY0MCA6IG1vZGUgPT09ICdidWJibGUnID8gNzYwIDogMTkwO1xuICAgIGNvbnN0IHdhdmU6IE9zY2lsbGF0b3JUeXBlID0gbW9kZSA9PT0gJ2dhbWUnID8gJ3NxdWFyZScgOiAndHJpYW5nbGUnO1xuICAgIGNvbnN0IGdhaW4gPSBtb2RlID09PSAnbWVudScgPyAwLjAxOCA6IG1vZGUgPT09ICdidWJibGUnID8gMC4wMTQgOiAwLjAyNTtcbiAgICB0aGlzLm11c2ljVGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3Qgc3RlcCA9IHRoaXMubm90ZUluZGV4O1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG1lbG9keVt0aGlzLm5vdGVJbmRleCAlIG1lbG9keS5sZW5ndGhdO1xuICAgICAgdGhpcy5ub3RlSW5kZXggKz0gMTtcbiAgICAgIHZvaWQgdGhpcy5tdXNpY1RvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pO1xuICAgICAgaWYgKG1vZGUgPT09ICdtZW51JykgdGhpcy5zYXZhbm5hUHVsc2Uoc3RlcCk7XG4gICAgICBpZiAobW9kZSA9PT0gJ2J1YmJsZScpIHRoaXMuYnViYmxlQW1iaWVudFB1bHNlKHN0ZXApO1xuICAgIH0sIGludGVydmFsTXMpO1xuICB9XG5cbiAgc3RvcE11c2ljKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm11c2ljVGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMubXVzaWNUaW1lcik7XG4gICAgICB0aGlzLm11c2ljVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGF1c2VkTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGF1c2VkU2FtcGxlTXVzaWMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdG9wU2FtcGxlTXVzaWMoKTtcbiAgfVxuXG4gIGZsaXAoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnRvbmUoNDQwLCAwLjA1NSwgJ3NxdWFyZScsIDAuMDUpO1xuICB9XG5cbiAgbWF0Y2goKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFs2NjAsIDAuMDhdLFxuICAgICAgWzg4MCwgMC4xXSxcbiAgICAgIFs5OTAsIDAuMTJdLFxuICAgIF0pO1xuICB9XG5cbiAgbWlzcygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzIyMCwgMC4wOF0sXG4gICAgICBbMTc0LjYxLCAwLjEyXSxcbiAgICBdKTtcbiAgfVxuXG4gIHdpbigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbNTIzLjI1LCAwLjA5XSxcbiAgICAgIFs2NTkuMjUsIDAuMDldLFxuICAgICAgWzc4My45OSwgMC4wOV0sXG4gICAgICBbMTA0Ni41LCAwLjE0XSxcbiAgICAgIFsxMzE4LjUxLCAwLjIyXSxcbiAgICAgIFsxNTY3Ljk4LCAwLjI2XSxcbiAgICBdKTtcbiAgfVxuXG4gIGxvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzI5My42NiwgMC4xMl0sXG4gICAgICBbMjQ2Ljk0LCAwLjEyXSxcbiAgICAgIFsxOTYsIDAuMl0sXG4gICAgXSk7XG4gIH1cblxuICBzaW1vblBhZChmcmVxOiBudW1iZXIpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMudG9uZShmcmVxLCAwLjIyLCAnc2luZScsIDAuMDU1KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlclByZXZpZXcocG93ZXI6IENoZXNzaW1hbHNQb3dlcik6IHZvaWQge1xuICAgIGNvbnN0IHRvbmVzOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBudW1iZXI+ID0ge1xuICAgICAgZWFnbGU6IDg4MCxcbiAgICAgIGJ1bGw6IDM0OS4yMyxcbiAgICAgIGthbmdhcm9vOiA2NTkuMjUsXG4gICAgICBsaW9uOiA1MjMuMjUsXG4gICAgfTtcbiAgICB2b2lkIHRoaXMudG9uZSh0b25lc1twb3dlcl0sIDAuMTIsIHBvd2VyID09PSAnYnVsbCcgPyAnc2F3dG9vdGgnIDogJ3RyaWFuZ2xlJywgMC4wMzgpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKHRvbmVzW3Bvd2VyXSAqIDEuMjUsIDAuMDcsICdzaW5lJywgMC4wMTgpLCA3Mik7XG4gIH1cblxuICBzaW1vblN0ZXBPaygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMudG9uZSg4ODAsIDAuMDgsICd0cmlhbmdsZScsIDAuMDM1KTtcbiAgfVxuXG4gIHNpbW9uUm91bmRPaygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzY1OS4yNSwgMC4wOF0sXG4gICAgICBbODgwLCAwLjA4XSxcbiAgICAgIFsxMTc0LjY2LCAwLjEyXSxcbiAgICBdKTtcbiAgfVxuXG4gIHNpbW9uRmFpbCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzE5NiwgMC4xMl0sXG4gICAgICBbMTQ2LjgzLCAwLjE4XSxcbiAgICBdKTtcbiAgfVxuXG4gIGJ1YmJsZVBvcChzaXplID0gMiwgY29tYm8gPSAxKTogdm9pZCB7XG4gICAgY29uc3Qgc2FmZVNpemUgPSBNYXRoLm1heCgyLCBNYXRoLm1pbigxMiwgTWF0aC5yb3VuZChzaXplKSkpO1xuICAgIGNvbnN0IHNhZmVDb21ibyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDksIE1hdGgucm91bmQoY29tYm8pKSk7XG4gICAgY29uc3QgYmFzZSA9IDUyMCArIHNhZmVTaXplICogMTg7XG4gICAgdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wNjUsIDAuMDE4ICsgc2FmZVNpemUgKiAwLjAwMTgsICdiYW5kcGFzcycsIDEyMDAgKyBzYWZlU2l6ZSAqIDg1KTtcbiAgICB2b2lkIHRoaXMuc3dlZXAoYmFzZSwgYmFzZSAqIDEuOSwgMC4wOSwgJ3NpbmUnLCAwLjAyNiArIHNhZmVTaXplICogMC4wMDE0KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZShiYXNlICogMS4yNSwgMC4wNTUsICd0cmlhbmdsZScsIDAuMDE4KSwgMzgpO1xuICAgIGlmIChzYWZlU2l6ZSA+PSA1IHx8IHNhZmVDb21ibyA+IDEpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5idWJibGVDb21ibyhzYWZlQ29tYm8pLCA4Mik7XG4gICAgfVxuICB9XG5cbiAgYnViYmxlQ29tYm8oY29tYm8gPSAxKTogdm9pZCB7XG4gICAgY29uc3Qgc2FmZUNvbWJvID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oOSwgTWF0aC5yb3VuZChjb21ibykpKTtcbiAgICBjb25zdCByb290ID0gNjYwICsgc2FmZUNvbWJvICogMjY7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbcm9vdCwgMC4wNDVdLFxuICAgICAgICBbcm9vdCAqIDEuMjUsIDAuMDU1XSxcbiAgICAgICAgW3Jvb3QgKiAxLjUsIDAuMDddLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAyNCArIHNhZmVDb21ibyAqIDAuMDAxNixcbiAgICAgIDQyLFxuICAgICk7XG4gIH1cblxuICBidWJibGVJbnZhbGlkKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzI0Ni45NCwgMC4wNTVdLFxuICAgICAgICBbMTk2LCAwLjA4NV0sXG4gICAgICBdLFxuICAgICAgJ3NpbmUnLFxuICAgICAgMC4wMzQsXG4gICAgICA1NCxcbiAgICApO1xuICB9XG5cbiAgYnViYmxlU2V0dGxlKGRyb3AgPSAxKTogdm9pZCB7XG4gICAgY29uc3Qgc2FmZURyb3AgPSBNYXRoLm1heCgxLCBNYXRoLm1pbig5LCBNYXRoLnJvdW5kKGRyb3ApKSk7XG4gICAgdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wNTUsIDAuMDA5ICsgc2FmZURyb3AgKiAwLjAwMSwgJ2xvd3Bhc3MnLCAzNjAgKyBzYWZlRHJvcCAqIDI4KTtcbiAgICB2b2lkIHRoaXMudG9uZSgxNjQuODEgKyBzYWZlRHJvcCAqIDgsIDAuMDQ1LCAndHJpYW5nbGUnLCAwLjAxMik7XG4gIH1cblxuICBidWJibGVTaHVmZmxlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzM5MiwgMC4wNF0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDRdLFxuICAgICAgICBbNjU5LjI1LCAwLjA1XSxcbiAgICAgICAgWzc4My45OSwgMC4wN10sXG4gICAgICBdLFxuICAgICAgJ3NpbmUnLFxuICAgICAgMC4wMjQsXG4gICAgICAzOCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTYsIDAuMDE4LCAnYmFuZHBhc3MnLCA5NTApLCAyOCk7XG4gIH1cblxuICBidWJibGVGZXZlcigpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc3dlZXAoMzkyLCAxNTY3Ljk4LCAwLjI0LCAndHJpYW5nbGUnLCAwLjAzNCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnNlcXVlbmNlKFtbOTg3Ljc3LCAwLjA1NV0sIFsxMzE4LjUxLCAwLjA4NV1dLCAnc2luZScsIDAuMDI1LCA0OCksIDEyOCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4xMiwgMC4wMTQsICdoaWdocGFzcycsIDI0MDApLCA3Mik7XG4gIH1cblxuICBidWJibGVGaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFs1MjMuMjUsIDAuMDddLFxuICAgICAgICBbNjU5LjI1LCAwLjA3XSxcbiAgICAgICAgWzc4My45OSwgMC4wOF0sXG4gICAgICAgIFsxMDQ2LjUsIDAuMTNdLFxuICAgICAgICBbMTMxOC41MSwgMC4xOF0sXG4gICAgICBdLFxuICAgICAgJ3RyaWFuZ2xlJyxcbiAgICAgIDAuMDQyLFxuICAgICAgNjIsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE4LCAwLjAxNiwgJ2JhbmRwYXNzJywgMTgwMCksIDExMCk7XG4gIH1cblxuICBjaGVzc2ltYWxzTW92ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszOTIsIDAuMDQ1XSxcbiAgICAgICAgWzQ5My44OCwgMC4wNTVdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAzMixcbiAgICAgIDQ4LFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wMzUsIDAuMDEyLCAnYmFuZHBhc3MnLCA4MjApLCA4KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNCb3RNb3ZlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzMyOS42MywgMC4wNTVdLFxuICAgICAgICBbMjQ2Ljk0LCAwLjA3XSxcbiAgICAgIF0sXG4gICAgICAnc2F3dG9vdGgnLFxuICAgICAgMC4wMjQsXG4gICAgICA1NixcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDUsIDAuMDEsICdsb3dwYXNzJywgNDIwKSwgMTYpO1xuICB9XG5cbiAgY2hlc3NpbWFsc0NhcHR1cmUoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMTc0LjYxLCAwLjA0XSxcbiAgICAgICAgWzI0Ni45NCwgMC4wNDVdLFxuICAgICAgICBbNTg3LjMzLCAwLjA5NV0sXG4gICAgICAgIFs3ODMuOTksIDAuMDhdLFxuICAgICAgXSxcbiAgICAgICdzcXVhcmUnLFxuICAgICAgMC4wNDYsXG4gICAgICA0NCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCg5NiwgNDIsIDAuMTgsICdzYXd0b290aCcsIDAuMDI2KSwgMjApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTgsIDAuMDUsICdsb3dwYXNzJywgNTIwKSwgMTgpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDcsIDAuMDI4LCAnYmFuZHBhc3MnLCAxODAwKSwgODQpO1xuICB9XG5cbiAgY2hlc3NpbWFsc1Bvd2VyKHBvd2VyOiBDaGVzc2ltYWxzUG93ZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wbGF5Q2hlc3NpbWFsc1Bvd2VyU2FtcGxlKHBvd2VyKSkgcmV0dXJuO1xuICAgIHRoaXMuY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVzc2ltYWxzUG93ZXJGYWxsYmFjayhwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogdm9pZCB7XG4gICAgY29uc3Qgbm90ZXM6IFJlY29yZDxDaGVzc2ltYWxzUG93ZXIsIE5vdGVbXT4gPSB7XG4gICAgICBlYWdsZTogW1xuICAgICAgICBbNjU5LjI1LCAwLjA1NV0sXG4gICAgICAgIFs4ODAsIDAuMDY1XSxcbiAgICAgICAgWzEzMTguNTEsIDAuMTJdLFxuICAgICAgXSxcbiAgICAgIGJ1bGw6IFtcbiAgICAgICAgWzE5NiwgMC4wNzVdLFxuICAgICAgICBbMTY0LjgxLCAwLjA3NV0sXG4gICAgICAgIFsyNDYuOTQsIDAuMTNdLFxuICAgICAgXSxcbiAgICAgIGthbmdhcm9vOiBbXG4gICAgICAgIFszOTIsIDAuMDU1XSxcbiAgICAgICAgWzAsIDAuMDRdLFxuICAgICAgICBbNzgzLjk5LCAwLjExXSxcbiAgICAgIF0sXG4gICAgICBsaW9uOiBbXG4gICAgICAgIFsyNjEuNjMsIDAuMDZdLFxuICAgICAgICBbMzkyLCAwLjA2XSxcbiAgICAgICAgWzUyMy4yNSwgMC4wNl0sXG4gICAgICAgIFs3ODMuOTksIDAuMTRdLFxuICAgICAgXSxcbiAgICB9O1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShub3Rlc1twb3dlcl0sIHBvd2VyID09PSAnYnVsbCcgPyAnc2F3dG9vdGgnIDogJ3RyaWFuZ2xlJywgMC4wNDYsIDU4KTtcbiAgICBpZiAocG93ZXIgPT09ICdlYWdsZScpIHtcbiAgICAgIHZvaWQgdGhpcy5zd2VlcCg3MjAsIDE1NjgsIDAuMTgsICd0cmlhbmdsZScsIDAuMDI4KTtcbiAgICAgIHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMjIsIDAuMDI1LCAnaGlnaHBhc3MnLCAxNjAwKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDgsIDAuMDE4LCAnYmFuZHBhc3MnLCAyNjAwKSwgOTIpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMTc2MCwgMC4wNTUsICdzaW5lJywgMC4wMTgpLCAxNTApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG93ZXIgPT09ICdidWxsJykge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoODIuNDEsIDAuMTYsICdzYXd0b290aCcsIDAuMDM4KSwgNzIpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDEzOC41OSwgNjUuNDEsIDAuMTgsICdzYXd0b290aCcsIDAuMDI2KSwgMTE4KTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTYsIDAuMDM4LCAnbG93cGFzcycsIDI2MCksIDM2KTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDU1LCAwLjAyNiwgJ2JhbmRwYXNzJywgOTYwKSwgMTcwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBvd2VyID09PSAna2FuZ2Fyb28nKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoNDIwLCA5NDAsIDAuMTEsICdzaW5lJywgMC4wMzIpLCA4OCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoOTQwLCA1MjAsIDAuMSwgJ3NpbmUnLCAwLjAyNiksIDE5MCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSgyNjEuNjMsIDAuMDU1LCAndHJpYW5nbGUnLCAwLjAxOCksIDI0NSk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjAzNSwgMC4wMTgsICdiYW5kcGFzcycsIDExODApLCAyMTgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTY0LjgxLCAzOTIsIDAuMjQsICdzYXd0b290aCcsIDAuMDM0KSwgNzApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDk4LCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyKSwgMTUwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjI4LCAwLjAzMiwgJ2JhbmRwYXNzJywgMzQwKSwgNjIpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxOTYsIDE0Ni44MywgMC4yMiwgJ3Nhd3Rvb3RoJywgMC4wMjIpLCAxMTYpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Q2hlc3NpbWFsc1Bvd2VyU2FtcGxlKHBvd2VyOiBDaGVzc2ltYWxzUG93ZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBzYW1wbGUgPSBDSEVTU0lNQUxTX1BPV0VSX1NBTVBMRVNbcG93ZXJdO1xuICAgIGlmICh0aGlzLnBsYXlCdWZmZXJlZFNhbXBsZShzYW1wbGUpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5wbGF5U2FtcGxlKHNhbXBsZSwgKCkgPT4gdGhpcy5jaGVzc2ltYWxzUG93ZXJGYWxsYmFjayhwb3dlcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5U2FtcGxlKHNhbXBsZTogU2FtcGxlQ29uZmlnLCBmYWxsYmFjazogKCkgPT4gdm9pZCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5U2Z4KCkgfHwgdHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnNhbXBsZUNhY2hlLmdldChzYW1wbGUuc3JjKTtcbiAgICAgIGNvbnN0IGF1ZGlvID0gY2FjaGVkID8gKGNhY2hlZC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEF1ZGlvRWxlbWVudCkgOiBuZXcgQXVkaW8oc2FtcGxlLnNyYyk7XG4gICAgICBhdWRpby5wcmVsb2FkID0gJ2F1dG8nO1xuICAgICAgYXVkaW8uZGF0YXNldFsnYmFzZVZvbHVtZSddID0gYCR7c2FtcGxlLnZvbHVtZX1gO1xuICAgICAgYXVkaW8udm9sdW1lID0gdGhpcy5zYW1wbGVWb2x1bWUoc2FtcGxlKTtcbiAgICAgIHRoaXMuYWN0aXZlU2FtcGxlcy5hZGQoYXVkaW8pO1xuICAgICAgY29uc3QgcmVsZWFzZSA9ICgpID0+IHRoaXMuYWN0aXZlU2FtcGxlcy5kZWxldGUoYXVkaW8pO1xuICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCByZWxlYXNlLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlbGVhc2UsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHBsYXlSZXN1bHQgPSBhdWRpby5wbGF5KCk7XG4gICAgICBpZiAocGxheVJlc3VsdCkge1xuICAgICAgICBwbGF5UmVzdWx0LmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZWxlYXNlKCk7XG4gICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBsYXlCdWZmZXJlZFNhbXBsZShzYW1wbGU6IFNhbXBsZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5U2Z4KCkpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlckNhY2hlLmdldChzYW1wbGUuc3JjKTtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQ7XG4gICAgaWYgKCFidWZmZXIgfHwgIWN0eCB8fCBjdHguc3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB2b2lkIHRoaXMucHJlbG9hZFNhbXBsZUJ1ZmZlcihzYW1wbGUuc3JjKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGlmIChjdHguc3RhdGUgPT09ICdzdXNwZW5kZWQnKSB2b2lkIGN0eC5yZXN1bWUoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgY29uc3Qgc291cmNlID0gY3R4LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO1xuICAgICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgICBzb3VyY2UuYnVmZmVyID0gYnVmZmVyO1xuICAgICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKHRoaXMuc2FtcGxlVm9sdW1lKHNhbXBsZSksIGN0eC5jdXJyZW50VGltZSk7XG4gICAgICBzb3VyY2UuY29ubmVjdChnYWluKTtcbiAgICAgIGdhaW4uY29ubmVjdCh0aGlzLm1hc3RlckdhaW4gPz8gY3R4LmRlc3RpbmF0aW9uKTtcbiAgICAgIHNvdXJjZS5zdGFydChjdHguY3VycmVudFRpbWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hlc3NpbWFsc1ZpY3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodGhpcy5wbGF5U2FtcGxlKENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLnZpY3RvcnksICgpID0+IHRoaXMuY2hlc3NpbWFsc1ZpY3RvcnlGYWxsYmFjaygpKSkgcmV0dXJuO1xuICAgIHRoaXMuY2hlc3NpbWFsc1ZpY3RvcnlGYWxsYmFjaygpO1xuICB9XG5cbiAgY2hlc3NpbWFsc0RlZmVhdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgIGlmICh0aGlzLnBsYXlTYW1wbGUoQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMuZGVmZWF0LCAoKSA9PiB0aGlzLmxvc2UoKSkpIHJldHVybjtcbiAgICB0aGlzLmxvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc1ZpY3RvcnlGYWxsYmFjaygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFsxOTYsIDAuMDhdLFxuICAgICAgICBbMjYxLjYzLCAwLjA4XSxcbiAgICAgICAgWzMyOS42MywgMC4wOF0sXG4gICAgICAgIFszOTIsIDAuMV0sXG4gICAgICAgIFs1MjMuMjUsIDAuMTJdLFxuICAgICAgICBbNzgzLjk5LCAwLjE2XSxcbiAgICAgICAgWzEwNDYuNSwgMC4yMl0sXG4gICAgICBdLFxuICAgICAgJ3RyaWFuZ2xlJyxcbiAgICAgIDAuMDUsXG4gICAgICA3MixcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxMzAuODEsIDY1LjQxLCAwLjI4LCAnc2F3dG9vdGgnLCAwLjAyKSwgNDApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCg1MjMuMjUsIDE1NjcuOTgsIDAuMzQsICdzaW5lJywgMC4wMjYpLCAyNDApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTYsIDAuMDIyLCAnYmFuZHBhc3MnLCAxNDAwKSwgMTIwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc2VxdWVuY2UoW1s5ODcuNzcsIDAuMDhdLCBbMTMxOC41MSwgMC4xMl1dLCAndHJpYW5nbGUnLCAwLjAzMiwgODYpLCA1MjApO1xuICB9XG5cbiAgY2hlc3NpbWFsc0pvaW5SZXF1ZXN0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzUyMy4yNSwgMC4wNTVdLFxuICAgICAgICBbNjU5LjI1LCAwLjA2XSxcbiAgICAgICAgWzk4Ny43NywgMC4xMl0sXG4gICAgICBdLFxuICAgICAgJ3RyaWFuZ2xlJyxcbiAgICAgIDAuMDM0LFxuICAgICAgNTgsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSgxMzE4LjUxLCAwLjA3NSwgJ3NpbmUnLCAwLjAyKSwgMTM2KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA2LCAwLjAxLCAnaGlnaHBhc3MnLCAxODAwKSwgOTgpO1xuICB9XG5cbiAgY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMzkyLCAwLjA1NV0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDU1XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wOF0sXG4gICAgICAgIFs5ODcuNzcsIDAuMTNdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAzOCxcbiAgICAgIDY0LFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDIyMCwgODgwLCAwLjIyLCAnc2luZScsIDAuMDI0KSwgNzApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMjQsIDAuMDE4LCAnYmFuZHBhc3MnLCAxMjAwKSwgNTQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLWF1ZGlvJywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRCb29sZWFuU2V0dGluZyhrZXk6IHN0cmluZywgZmFsbGJhY2s6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICByZXR1cm4gdmFsdWUgIT09ICcwJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRWb2x1bWVTZXR0aW5nKGtleTogc3RyaW5nLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB2b2lkIHRoaXMuZGVmYXVsdHNSZWFkeTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChzdG9yZWQgPT09IG51bGwgfHwgc3RvcmVkLnRyaW0oKSA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHN0b3JlZCk7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHRoaXMubm9ybWFsaXplVm9sdW1lKHZhbHVlKSA6IGZhbGxiYWNrO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVTZXR0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVm9sdW1lKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCB2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVsb2FkU2FtcGxlKHNyYzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2FtcGxlQ2FjaGUuaGFzKHNyYykpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oc3JjKTtcbiAgICAgIGF1ZGlvLnByZWxvYWQgPSAnYXV0byc7XG4gICAgICBhdWRpby5sb2FkKCk7XG4gICAgICB0aGlzLnNhbXBsZUNhY2hlLnNldChzcmMsIGF1ZGlvKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpIGVsIG5hdmVnYWRvciBubyBwZXJtaXRlIHByZWNhcmdhciwgc2UgaW50ZW50YXJhIGFsIHJlcHJvZHVjaXIuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVsb2FkU2FtcGxlQnVmZmVyKHNyYzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuYnVmZmVyQ2FjaGUuaGFzKHNyYykpIHJldHVybjtcbiAgICBjb25zdCBhY3RpdmVQcmVsb2FkID0gdGhpcy5idWZmZXJQcmVsb2Fkcy5nZXQoc3JjKTtcbiAgICBpZiAoYWN0aXZlUHJlbG9hZCkgcmV0dXJuIGFjdGl2ZVByZWxvYWQ7XG5cbiAgICBjb25zdCBwcmVsb2FkID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZmV0Y2ggPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLmVuc3VyZUNvbnRleHQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goc3JjKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY3R4LmRlY29kZUF1ZGlvRGF0YShkYXRhLnNsaWNlKDApKTtcbiAgICAgIHRoaXMuYnVmZmVyQ2FjaGUuc2V0KHNyYywgYnVmZmVyKTtcbiAgICB9KSgpXG4gICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlclByZWxvYWRzLmRlbGV0ZShzcmMpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmJ1ZmZlclByZWxvYWRzLnNldChzcmMsIHByZWxvYWQpO1xuICAgIHJldHVybiBwcmVsb2FkO1xuICB9XG5cbiAgcHJpdmF0ZSBtaWdyYXRlQ2hlc3NpbWFsc0F1ZGlvRGVmYXVsdHMoKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbktleSA9ICd2YWwtbWluaS1nYW1lcy1jaGVzc2ltYWxzLWF1ZGlvLWRlZmF1bHRzLXYyJztcbiAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShtaWdyYXRpb25LZXkpID09PSAnMScpIHJldHVybiB0cnVlO1xuICAgICAgY29uc3Qgc3RvcmVkTXVzaWNWb2x1bWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJyk7XG4gICAgICBjb25zdCBzdG9yZWRTZnhWb2x1bWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScpO1xuICAgICAgaWYgKCFzdG9yZWRNdXNpY1ZvbHVtZSB8fCBzdG9yZWRNdXNpY1ZvbHVtZSA9PT0gJzAnKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1tdXNpYy12b2x1bWUnLCAnMC4yNScpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdG9yZWRTZnhWb2x1bWUgfHwgc3RvcmVkU2Z4Vm9sdW1lID09PSAnMCcpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnLCAnMC44Jyk7XG4gICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShtaWdyYXRpb25LZXksICcxJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2UgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBlbiBTU1IvdGVzdHMuXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5QbGF5TXVzaWMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCgpICYmIHRoaXMubXVzaWNFbmFibGVkKCkgJiYgdGhpcy5tdXNpY1ZvbHVtZSgpID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUGxheVNmeCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkKCkgJiYgdGhpcy5zZnhFbmFibGVkKCkgJiYgdGhpcy5zZnhWb2x1bWUoKSA+IDA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbnRleHQoKTogUHJvbWlzZTxBdWRpb0NvbnRleHQ+IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCB8fCB0aGlzLmNvbnRleHQuc3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7XG4gICAgICB0aGlzLm1hc3RlckdhaW4gPSB0aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluLmdhaW4udmFsdWUgPSAxO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgbWVudU1lbG9keSgpOiBOb3RlW10ge1xuICAgIHJldHVybiBbXG4gICAgICBbMjIwLCAwLjM4XSxcbiAgICAgIFswLCAwLjEyXSxcbiAgICAgIFsyNjEuNjMsIDAuMzRdLFxuICAgICAgWzMyOS42MywgMC40Ml0sXG4gICAgICBbMjkzLjY2LCAwLjI4XSxcbiAgICAgIFswLCAwLjEyXSxcbiAgICAgIFszOTIsIDAuNDhdLFxuICAgICAgWzMyOS42MywgMC4zNF0sXG4gICAgICBbMjYxLjYzLCAwLjM2XSxcbiAgICAgIFsyMjAsIDAuNThdLFxuICAgICAgWzAsIDAuMl0sXG4gICAgICBbMjkzLjY2LCAwLjM0XSxcbiAgICAgIFszMjkuNjMsIDAuNDJdLFxuICAgICAgWzQ0MCwgMC41XSxcbiAgICAgIFszOTIsIDAuMzZdLFxuICAgICAgWzI2MS42MywgMC42Ml0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2YW5uYVB1bHNlKHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzdGVwICUgNCA9PT0gMCkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDk2LCA0OCwgMC4xOCwgJ3NpbmUnLCAwLjAxMiksIDE4KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSA4ID09PSA1KSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSgxNjQuODEsIDAuMDQ1LCAndHJpYW5nbGUnLCAwLjAxMiksIDk2KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSAxNiA9PT0gMTApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxNDYuODMsIDE5NiwgMC4wOCwgJ3RyaWFuZ2xlJywgMC4wMSksIDE0MCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnYW1lTWVsb2R5KCk6IE5vdGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFs1MjMuMjUsIDAuMTNdLFxuICAgICAgWzY1OS4yNSwgMC4xM10sXG4gICAgICBbNzgzLjk5LCAwLjEzXSxcbiAgICAgIFsxMDQ2LjUsIDAuMThdLFxuICAgICAgWzc4My45OSwgMC4xM10sXG4gICAgICBbNjU5LjI1LCAwLjEzXSxcbiAgICAgIFs1ODcuMzMsIDAuMThdLFxuICAgICAgWzY1OS4yNSwgMC4xOF0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgYnViYmxlTWVsb2R5KCk6IE5vdGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFsyNjEuNjMsIDAuNzJdLFxuICAgICAgWzAsIDAuMThdLFxuICAgICAgWzMyOS42MywgMC42Nl0sXG4gICAgICBbMzkyLCAwLjc4XSxcbiAgICAgIFswLCAwLjI0XSxcbiAgICAgIFszNDkuMjMsIDAuNjRdLFxuICAgICAgWzI5My42NiwgMC43Ml0sXG4gICAgICBbMCwgMC4yOF0sXG4gICAgICBbNDQwLCAwLjg0XSxcbiAgICAgIFszOTIsIDAuN10sXG4gICAgICBbMzI5LjYzLCAwLjc4XSxcbiAgICAgIFswLCAwLjMyXSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidWJibGVBbWJpZW50UHVsc2Uoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHN0ZXAgJSA0ID09PSAwKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMubXVzaWNUb25lKDEzMC44MSwgMS4zNSwgJ3NpbmUnLCAwLjAwOSksIDI0KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSA2ID09PSAyKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMubXVzaWNUb25lKDE5NiwgMC45NSwgJ3RyaWFuZ2xlJywgMC4wMDgpLCAxMjApO1xuICAgIH1cbiAgICBpZiAoc3RlcCAlIDggPT09IDUpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5tdXNpY1RvbmUoNTIzLjI1LCAwLjQyLCAnc2luZScsIDAuMDA2KSwgMTgwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcXVlbmNlKFxuICAgIG5vdGVzOiBOb3RlW10sXG4gICAgd2F2ZTogT3NjaWxsYXRvclR5cGUgPSAnc3F1YXJlJyxcbiAgICBnYWluID0gMC4wNTUsXG4gICAgaW50ZXJ2YWxNcyA9IDkwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG5vdGVzW2ldO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pLCBpICogaW50ZXJ2YWxNcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNhbXBsZU11c2ljKGNvbmZpZzogU2FtcGxlTXVzaWNDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNEb2N1bWVudFZpc2libGUoKSkge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWNDb25maWc/LnNyYyA9PT0gY29uZmlnLnNyYyAmJiAhdGhpcy5zYW1wbGVNdXNpYz8ucGF1c2VkKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oY29uZmlnLnNyYyk7XG4gICAgYXVkaW8ubG9vcCA9IHRydWU7XG4gICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICB0aGlzLnNhbXBsZU11c2ljID0gYXVkaW87XG4gICAgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZyA9IGNvbmZpZztcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbywgY29uZmlnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXVkaW8ucGxheSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BTYW1wbGVNdXNpYygpOiB2b2lkIHtcbiAgICBjb25zdCBtdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWM7XG4gICAgdGhpcy5zYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNhbXBsZU11c2ljQ29uZmlnID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzY29ubmVjdFNhbXBsZU11c2ljR3JhcGgoKTtcbiAgICBpZiAoIW11c2ljKSByZXR1cm47XG4gICAgbXVzaWMucGF1c2UoKTtcbiAgICBtdXNpYy5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2FtcGxlTXVzaWNWb2x1bWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNhbXBsZU11c2ljIHx8ICF0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSByZXR1cm47XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5zYW1wbGVNdXNpY1ZvbHVtZSh0aGlzLnNhbXBsZU11c2ljQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpY0dhaW4gJiYgdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljR2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh2b2x1bWUsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwgMC4wMjUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljLnZvbHVtZSA9IHZvbHVtZTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIGNvbmZpZy52b2x1bWUgKiB0aGlzLm11c2ljVm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlVm9sdW1lKHNhbXBsZTogU2FtcGxlQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgc2FtcGxlLnZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBY3RpdmVTYW1wbGVWb2x1bWVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYXVkaW8gb2YgdGhpcy5hY3RpdmVTYW1wbGVzKSB7XG4gICAgICBjb25zdCBiYXNlVm9sdW1lID0gTnVtYmVyKGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA/PyAnMScpO1xuICAgICAgYXVkaW8udm9sdW1lID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgYmFzZVZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCwgY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMuc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnKTtcbiAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgICBjb25zdCBzb3VyY2UgPSBjdHguY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGF1ZGlvKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKHZvbHVtZSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHNvdXJjZS5jb25uZWN0KGdhaW4pO1xuICAgICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gZ2FpbjtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IDE7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY0dhaW4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNjb25uZWN0U2FtcGxlTXVzaWNHcmFwaCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZT8uZGlzY29ubmVjdCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRWwgbm9kbyBwdWVkZSBlc3RhciBkZXNjb25lY3RhZG8gc2kgZWwgbmF2ZWdhZG9yIGxpYmVybyBsYSBwaXN0YS5cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluPy5kaXNjb25uZWN0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCBub2RvIHB1ZWRlIGVzdGFyIGRlc2NvbmVjdGFkbyBzaSBlbCBuYXZlZ2Fkb3IgbGliZXJvIGxhIHBpc3RhLlxuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0b25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3NxdWFyZScsIGdhaW5WYWx1ZSA9IDAuMDQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgaWYgKGZyZXEgPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXE7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbXVzaWNUb25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3RyaWFuZ2xlJywgZ2FpblZhbHVlID0gMC4wMTgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoZnJlcSA8PSAwKSByZXR1cm47XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBjb25zdCBvc2NpbGxhdG9yID0gY3R4LmNyZWF0ZU9zY2lsbGF0b3IoKTtcbiAgICBjb25zdCBnYWluID0gY3R4LmNyZWF0ZUdhaW4oKTtcbiAgICBvc2NpbGxhdG9yLnR5cGUgPSB0eXBlO1xuICAgIG9zY2lsbGF0b3IuZnJlcXVlbmN5LnZhbHVlID0gZnJlcTtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMubXVzaWNWb2x1bWUoKSwgY3R4LmN1cnJlbnRUaW1lICsgMC4wOCk7XG4gICAgZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZShnYWluVmFsdWUgKiB0aGlzLm11c2ljVm9sdW1lKCkgKiAwLjc0LCBjdHguY3VycmVudFRpbWUgKyAwLjEyLCAwLjIpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKTtcbiAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgb3NjaWxsYXRvci5zdGFydCgpO1xuICAgIG9zY2lsbGF0b3Iuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzd2VlcChcbiAgICBmcm9tRnJlcTogbnVtYmVyLFxuICAgIHRvRnJlcTogbnVtYmVyLFxuICAgIGR1cmF0aW9uID0gMC4xNixcbiAgICB0eXBlOiBPc2NpbGxhdG9yVHlwZSA9ICd0cmlhbmdsZScsXG4gICAgZ2FpblZhbHVlID0gMC4wMyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlTZngoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShmcm9tRnJlcSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKE1hdGgubWF4KDEsIHRvRnJlcSksIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMuc2Z4Vm9sdW1lKCksIGN0eC5jdXJyZW50VGltZSArIDAuMDEpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKTtcbiAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgb3NjaWxsYXRvci5zdGFydCgpO1xuICAgIG9zY2lsbGF0b3Iuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDIpO1xuICB9XG5cbiAgLy8gQ2hlc3NpbWFscyB1c2VzIGdlbmVyYXRlZCBXZWJBdWRpbyBsYXllcnMgaW5zdGVhZCBvZiB0aGlyZC1wYXJ0eSBzYW1wbGVzLFxuICAvLyBhdm9pZGluZyBsaWNlbnNpbmcgcmlzayB3aGlsZSBrZWVwaW5nIGVhY2ggYW5pbWFsIHBvd2VyIGV4cHJlc3NpdmUuXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVyZWROb2lzZShcbiAgICBkdXJhdGlvbiA9IDAuMTIsXG4gICAgZ2FpblZhbHVlID0gMC4wMjUsXG4gICAgZmlsdGVyVHlwZTogQmlxdWFkRmlsdGVyVHlwZSA9ICdiYW5kcGFzcycsXG4gICAgZnJlcXVlbmN5ID0gOTAwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBjb25zdCBzYW1wbGVDb3VudCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IoY3R4LnNhbXBsZVJhdGUgKiBkdXJhdGlvbikpO1xuICAgIGNvbnN0IGJ1ZmZlciA9IGN0eC5jcmVhdGVCdWZmZXIoMSwgc2FtcGxlQ291bnQsIGN0eC5zYW1wbGVSYXRlKTtcbiAgICBjb25zdCBjaGFubmVsID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2FtcGxlQ291bnQ7IGkgKz0gMSkge1xuICAgICAgY29uc3QgZGVjYXkgPSAxIC0gaSAvIHNhbXBsZUNvdW50O1xuICAgICAgY2hhbm5lbFtpXSA9IChNYXRoLnJhbmRvbSgpICogMiAtIDEpICogZGVjYXk7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlID0gY3R4LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO1xuICAgIGNvbnN0IGZpbHRlciA9IGN0eC5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtcbiAgICBjb25zdCBnYWluID0gY3R4LmNyZWF0ZUdhaW4oKTtcbiAgICBmaWx0ZXIudHlwZSA9IGZpbHRlclR5cGU7XG4gICAgZmlsdGVyLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXF1ZW5jeTtcbiAgICBmaWx0ZXIuUS52YWx1ZSA9IGZpbHRlclR5cGUgPT09ICdsb3dwYXNzJyA/IDAuNyA6IDEuODtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMuc2Z4Vm9sdW1lKCksIGN0eC5jdXJyZW50VGltZSArIDAuMDEyKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBzb3VyY2UuYnVmZmVyID0gYnVmZmVyO1xuICAgIHNvdXJjZS5jb25uZWN0KGZpbHRlcik7XG4gICAgZmlsdGVyLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIHNvdXJjZS5zdGFydCgpO1xuICAgIHNvdXJjZS5zdG9wKGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uICsgMC4wMik7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgdGhpcy5wYXVzZUZvckJhY2tncm91bmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVQYWdlSGlkZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLnBhdXNlRm9yQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlUGFnZVNob3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVVc2VyQWN0aXZhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpIHx8ICF0aGlzLmlzRG9jdW1lbnRWaXNpYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpO1xuICAgIGlmICh0aGlzLnBhdXNlZFNhbXBsZU11c2ljKSB7XG4gICAgICB2b2lkIHRoaXMucmVzdW1lRnJvbUJhY2tncm91bmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCB0aGlzLndha2VBdWRpbygpO1xuICB9O1xuXG4gIHByaXZhdGUgcGF1c2VGb3JCYWNrZ3JvdW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZU1lbG9keSkgdGhpcy5wYXVzZWRNZWxvZHkgPSB0aGlzLmFjdGl2ZU1lbG9keTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpYyAmJiB0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSB7XG4gICAgICB0aGlzLnBhdXNlZFNhbXBsZU11c2ljID0gdGhpcy5zYW1wbGVNdXNpY0NvbmZpZztcbiAgICAgIHRoaXMuc3RvcFNhbXBsZU11c2ljKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm11c2ljVGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMubXVzaWNUaW1lcik7XG4gICAgICB0aGlzLm11c2ljVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDAuMDAwMSwgMC4yKTtcbiAgICBpZiAodGhpcy5zdXNwZW5kVGltZXIpIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zdXNwZW5kVGltZXIpO1xuICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zdXNwZW5kVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICB2b2lkIHRoaXMuY29udGV4dD8uc3VzcGVuZCgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMjYwKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdW1lRnJvbUJhY2tncm91bmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc3VzcGVuZFRpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc3VzcGVuZFRpbWVyKTtcbiAgICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgY29uc3Qgc2FtcGxlTXVzaWMgPSB0aGlzLnBhdXNlZFNhbXBsZU11c2ljO1xuICAgIGlmIChzYW1wbGVNdXNpYykge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRTYW1wbGVNdXNpYyhzYW1wbGVNdXNpYyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1lbG9keSA9IHRoaXMucGF1c2VkTWVsb2R5O1xuICAgIGlmICghbWVsb2R5KSByZXR1cm47XG4gICAgdGhpcy5wYXVzZWRNZWxvZHkgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy5lbnN1cmVDb250ZXh0KCk7XG4gICAgYXdhaXQgdGhpcy5yZXN1bWVDb250ZXh0KGN0eCk7XG4gICAgdGhpcy5mYWRlTWFzdGVyVG8oMSwgMC4zNSk7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKG1lbG9keSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdha2VBdWRpbygpOiBQcm9taXNlPEF1ZGlvQ29udGV4dD4ge1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMuZW5zdXJlQ29udGV4dCgpO1xuICAgIGF3YWl0IHRoaXMucmVzdW1lQ29udGV4dChjdHgpO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDEsIDAuMTIpO1xuICAgIHJldHVybiBjdHg7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3VtZUNvbnRleHQoY3R4OiBBdWRpb0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY3R4LnN0YXRlID09PSAncnVubmluZycpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY3R4LnJlc3VtZSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gaU9TIHB1ZWRlIGV4aWdpciB1bmEgbnVldmEgaW50ZXJhY2Npw7NuIGRlbCB1c3VhcmlvOyBlbCBsaXN0ZW5lciBkZSBhY3RpdmFjacOzbiByZWludGVudGFyw6EuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmYWRlTWFzdGVyVG8odmFsdWU6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQgfHwgIXRoaXMubWFzdGVyR2FpbikgcmV0dXJuO1xuICAgIGNvbnN0IGdhaW4gPSB0aGlzLm1hc3RlckdhaW4uZ2FpbjtcbiAgICBjb25zdCBub3cgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XG4gICAgZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMobm93KTtcbiAgICBnYWluLnNldFRhcmdldEF0VGltZSh2YWx1ZSwgbm93LCBNYXRoLm1heCgwLjAxLCBzZWNvbmRzIC8gNCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RvY3VtZW50VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhZG9jdW1lbnQuaGlkZGVuO1xuICB9XG59XG4iXX0=
|
|
922
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cm8tYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9yZXRyby1hdWRpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRCxNQUFNLHdCQUF3QixHQUEwQztJQUN0RSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNyRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBQ0YsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUNsRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtDQUN0RSxDQUFDO0FBQ0YsTUFBTSxxQkFBcUIsR0FBc0I7SUFDL0MsR0FBRyxFQUFFLHVDQUF1QztJQUM1QyxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFDRixNQUFNLHFCQUFxQixHQUFzQjtJQUMvQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUdGLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCO1FBckJRLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFJTCxrQkFBYSxH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QUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRCxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFV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QUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzdELENBQUM7K0dBMytCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbnR5cGUgTm90ZSA9IFtudW1iZXIsIG51bWJlcl07XG50eXBlIE1lbG9keU1vZGUgPSAnbWVudScgfCAnZ2FtZScgfCAnYnViYmxlJztcbnR5cGUgQ2hlc3NpbWFsc1Bvd2VyID0gJ2VhZ2xlJyB8ICdidWxsJyB8ICdrYW5nYXJvbycgfCAnbGlvbic7XG50eXBlIFNhbXBsZUNvbmZpZyA9IHsgc3JjOiBzdHJpbmc7IHZvbHVtZTogbnVtYmVyIH07XG50eXBlIFNhbXBsZU11c2ljQ29uZmlnID0geyBzcmM6IHN0cmluZzsgdm9sdW1lOiBudW1iZXIgfTtcblxuY29uc3QgQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBTYW1wbGVDb25maWc+ID0ge1xuICBlYWdsZTogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9lYWdsZS1jcnkud2F2Jywgdm9sdW1lOiAwLjYyIH0sXG4gIGJ1bGw6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnVsbC53YXYnLCB2b2x1bWU6IDAuOSB9LFxuICBrYW5nYXJvbzogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9rYW5nYXJvby1qdW1wLm1wMycsIHZvbHVtZTogMC44MiB9LFxuICBsaW9uOiB7IHNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24tcm9hci53YXYnLCB2b2x1bWU6IDAuODIgfSxcbn07XG5jb25zdCBDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUyA9IHtcbiAgdmljdG9yeTogeyBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy90YWRhLm1wMycsIHZvbHVtZTogMC43MiB9LFxuICBkZWZlYXQ6IHsgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMveW91LWxvc2UubXAzJywgdm9sdW1lOiAwLjcyIH0sXG59O1xuY29uc3QgQ0hFU1NJTUFMU19NRU5VX01VU0lDOiBTYW1wbGVNdXNpY0NvbmZpZyA9IHtcbiAgc3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbWFpbi1tZW51Lm1wMycsXG4gIHZvbHVtZTogMC4zMixcbn07XG5jb25zdCBDSEVTU0lNQUxTX0dBTUVfTVVTSUM6IFNhbXBsZU11c2ljQ29uZmlnID0ge1xuICBzcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9HYW1lLm1wMycsXG4gIHZvbHVtZTogMC4zMixcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmV0cm9BdWRpb1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ/OiBBdWRpb0NvbnRleHQ7XG4gIHByaXZhdGUgbWFzdGVyR2Fpbj86IEdhaW5Ob2RlO1xuICBwcml2YXRlIG11c2ljVGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgbm90ZUluZGV4ID0gMDtcbiAgcHJpdmF0ZSBhY3RpdmVNZWxvZHk/OiBNZWxvZHlNb2RlO1xuICBwcml2YXRlIHBhdXNlZE1lbG9keT86IE1lbG9keU1vZGU7XG4gIHByaXZhdGUgc3VzcGVuZFRpbWVyPzogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZVNhbXBsZXMgPSBuZXcgU2V0PEhUTUxBdWRpb0VsZW1lbnQ+KCk7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWM/OiBIVE1MQXVkaW9FbGVtZW50O1xuICBwcml2YXRlIHNhbXBsZU11c2ljQ29uZmlnPzogU2FtcGxlTXVzaWNDb25maWc7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWNTb3VyY2U/OiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7XG4gIHByaXZhdGUgc2FtcGxlTXVzaWNHYWluPzogR2Fpbk5vZGU7XG4gIHByaXZhdGUgcGF1c2VkU2FtcGxlTXVzaWM/OiBTYW1wbGVNdXNpY0NvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRzUmVhZHkgPSB0aGlzLm1pZ3JhdGVDaGVzc2ltYWxzQXVkaW9EZWZhdWx0cygpO1xuICByZWFkb25seSBlbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KHRoaXMucmVhZEVuYWJsZWQoKSk7XG4gIHJlYWRvbmx5IG11c2ljRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRCb29sZWFuU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtZW5hYmxlZCcsIHRydWUpKTtcbiAgcmVhZG9ubHkgc2Z4RW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLnJlYWRCb29sZWFuU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LWVuYWJsZWQnLCB0cnVlKSk7XG4gIHJlYWRvbmx5IG11c2ljVm9sdW1lID0gc2lnbmFsPG51bWJlcj4odGhpcy5yZWFkVm9sdW1lU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgMC4yNSkpO1xuICByZWFkb25seSBzZnhWb2x1bWUgPSBzaWduYWw8bnVtYmVyPih0aGlzLnJlYWRWb2x1bWVTZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1zZngtdm9sdW1lJywgMC44KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FtcGxlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgSFRNTEF1ZGlvRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWZmZXJDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBdWRpb0J1ZmZlcj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWZmZXJQcmVsb2FkcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5oYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5oYW5kbGVVc2VyQWN0aXZhdGlvbiwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuaGFuZGxlVXNlckFjdGl2YXRpb24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZVVzZXJBY3RpdmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCB0aGlzLmhhbmRsZVBhZ2VIaWRlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlc2hvdycsIHRoaXMuaGFuZGxlUGFnZVNob3cpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLWF1ZGlvJywgdmFsdWUgPyAnMScgOiAnMCcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgICBpZiAoIXZhbHVlKSB0aGlzLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgc2V0TXVzaWNFbmFibGVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5tdXNpY0VuYWJsZWQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtZW5hYmxlZCcsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgICBpZiAoIXZhbHVlKSB0aGlzLnN0b3BNdXNpYygpO1xuICB9XG5cbiAgc2V0U2Z4RW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2Z4RW5hYmxlZC5zZXQodmFsdWUpO1xuICAgIHRoaXMud3JpdGVTZXR0aW5nKCd2YWwtbWluaS1nYW1lcy1zZngtZW5hYmxlZCcsIHZhbHVlID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLm5vcm1hbGl6ZVZvbHVtZSh2YWx1ZSk7XG4gICAgdGhpcy5tdXNpY1ZvbHVtZS5zZXQodm9sdW1lKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJywgYCR7dm9sdW1lfWApO1xuICAgIGlmICh2b2x1bWUgPD0gMCkge1xuICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBseVNhbXBsZU11c2ljVm9sdW1lKCk7XG4gIH1cblxuICBzZXRTZnhWb2x1bWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMubm9ybWFsaXplVm9sdW1lKHZhbHVlKTtcbiAgICB0aGlzLnNmeFZvbHVtZS5zZXQodm9sdW1lKTtcbiAgICB0aGlzLndyaXRlU2V0dGluZygndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScsIGAke3ZvbHVtZX1gKTtcbiAgICB0aGlzLmFwcGx5QWN0aXZlU2FtcGxlVm9sdW1lcygpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRNZW51TXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKCdtZW51Jyk7XG4gIH1cblxuICBhc3luYyBzdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0U2FtcGxlTXVzaWMoQ0hFU1NJTUFMU19NRU5VX01VU0lDKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRTYW1wbGVNdXNpYyhDSEVTU0lNQUxTX0dBTUVfTVVTSUMpO1xuICB9XG5cbiAgcHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXMoQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTKS5mb3JFYWNoKChzYW1wbGUpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5wcmVsb2FkU2FtcGxlQnVmZmVyKHNhbXBsZS5zcmMpO1xuICAgIH0pO1xuICAgIE9iamVjdC52YWx1ZXMoQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMpLmZvckVhY2goKHNhbXBsZSkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnByZWxvYWRTYW1wbGVCdWZmZXIoc2FtcGxlLnNyYyk7XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICBbXG4gICAgICAuLi5PYmplY3QudmFsdWVzKENIRVNTSU1BTFNfUE9XRVJfU0FNUExFUyksXG4gICAgICBDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy52aWN0b3J5LFxuICAgICAgQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMuZGVmZWF0LFxuICAgIF0uZm9yRWFjaCgoc2FtcGxlKSA9PiB0aGlzLnByZWxvYWRTYW1wbGUoc2FtcGxlLnNyYykpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRHYW1lTXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKCdnYW1lJyk7XG4gIH1cblxuICBhc3luYyBzdGFydEJ1YmJsZUJsaXR6TXVzaWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKCdidWJibGUnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0TXVzaWMobW9kZTogTWVsb2R5TW9kZSA9ICdnYW1lJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5QbGF5TXVzaWMoKSkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc0RvY3VtZW50VmlzaWJsZSgpKSB7XG4gICAgICB0aGlzLnBhdXNlZE1lbG9keSA9IG1vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgaWYgKHRoaXMubXVzaWNUaW1lciAmJiB0aGlzLmFjdGl2ZU1lbG9keSA9PT0gbW9kZSkgcmV0dXJuO1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdGhpcy5mYWRlTWFzdGVyVG8oMSwgMC4yNCk7XG4gICAgdGhpcy5hY3RpdmVNZWxvZHkgPSBtb2RlO1xuICAgIHRoaXMubm90ZUluZGV4ID0gMDtcbiAgICBjb25zdCBtZWxvZHkgPSBtb2RlID09PSAnbWVudScgPyB0aGlzLm1lbnVNZWxvZHkoKSA6IG1vZGUgPT09ICdidWJibGUnID8gdGhpcy5idWJibGVNZWxvZHkoKSA6IHRoaXMuZ2FtZU1lbG9keSgpO1xuICAgIGNvbnN0IGludGVydmFsTXMgPSBtb2RlID09PSAnbWVudScgPyA2NDAgOiBtb2RlID09PSAnYnViYmxlJyA/IDc2MCA6IDE5MDtcbiAgICBjb25zdCB3YXZlOiBPc2NpbGxhdG9yVHlwZSA9IG1vZGUgPT09ICdnYW1lJyA/ICdzcXVhcmUnIDogJ3RyaWFuZ2xlJztcbiAgICBjb25zdCBnYWluID0gbW9kZSA9PT0gJ21lbnUnID8gMC4wMTggOiBtb2RlID09PSAnYnViYmxlJyA/IDAuMDE0IDogMC4wMjU7XG4gICAgdGhpcy5tdXNpY1RpbWVyID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLm5vdGVJbmRleDtcbiAgICAgIGNvbnN0IFtmcmVxLCBkdXJhdGlvbl0gPSBtZWxvZHlbdGhpcy5ub3RlSW5kZXggJSBtZWxvZHkubGVuZ3RoXTtcbiAgICAgIHRoaXMubm90ZUluZGV4ICs9IDE7XG4gICAgICB2b2lkIHRoaXMubXVzaWNUb25lKGZyZXEsIGR1cmF0aW9uLCB3YXZlLCBnYWluKTtcbiAgICAgIGlmIChtb2RlID09PSAnbWVudScpIHRoaXMuc2F2YW5uYVB1bHNlKHN0ZXApO1xuICAgICAgaWYgKG1vZGUgPT09ICdidWJibGUnKSB0aGlzLmJ1YmJsZUFtYmllbnRQdWxzZShzdGVwKTtcbiAgICB9LCBpbnRlcnZhbE1zKTtcbiAgfVxuXG4gIHN0b3BNdXNpYygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdXNpY1RpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLm11c2ljVGltZXIpO1xuICAgICAgdGhpcy5tdXNpY1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZU1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdXNlZE1lbG9keSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdXNlZFNhbXBsZU11c2ljID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcFNhbXBsZU11c2ljKCk7XG4gIH1cblxuICBmbGlwKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy50b25lKDQ0MCwgMC4wNTUsICdzcXVhcmUnLCAwLjA1KTtcbiAgfVxuXG4gIG1hdGNoKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShbXG4gICAgICBbNjYwLCAwLjA4XSxcbiAgICAgIFs4ODAsIDAuMV0sXG4gICAgICBbOTkwLCAwLjEyXSxcbiAgICBdKTtcbiAgfVxuXG4gIG1pc3MoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsyMjAsIDAuMDhdLFxuICAgICAgWzE3NC42MSwgMC4xMl0sXG4gICAgXSk7XG4gIH1cblxuICB3aW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoW1xuICAgICAgWzUyMy4yNSwgMC4wOV0sXG4gICAgICBbNjU5LjI1LCAwLjA5XSxcbiAgICAgIFs3ODMuOTksIDAuMDldLFxuICAgICAgWzEwNDYuNSwgMC4xNF0sXG4gICAgICBbMTMxOC41MSwgMC4yMl0sXG4gICAgICBbMTU2Ny45OCwgMC4yNl0sXG4gICAgXSk7XG4gIH1cblxuICBsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsyOTMuNjYsIDAuMTJdLFxuICAgICAgWzI0Ni45NCwgMC4xMl0sXG4gICAgICBbMTk2LCAwLjJdLFxuICAgIF0pO1xuICB9XG5cbiAgc2ltb25QYWQoZnJlcTogbnVtYmVyKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnRvbmUoZnJlcSwgMC4yMiwgJ3NpbmUnLCAwLjA1NSk7XG4gIH1cblxuICBjaGVzc2ltYWxzUG93ZXJQcmV2aWV3KHBvd2VyOiBDaGVzc2ltYWxzUG93ZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0b25lczogUmVjb3JkPENoZXNzaW1hbHNQb3dlciwgbnVtYmVyPiA9IHtcbiAgICAgIGVhZ2xlOiA4ODAsXG4gICAgICBidWxsOiAzNDkuMjMsXG4gICAgICBrYW5nYXJvbzogNjU5LjI1LFxuICAgICAgbGlvbjogNTIzLjI1LFxuICAgIH07XG4gICAgdm9pZCB0aGlzLnRvbmUodG9uZXNbcG93ZXJdLCAwLjEyLCBwb3dlciA9PT0gJ2J1bGwnID8gJ3Nhd3Rvb3RoJyA6ICd0cmlhbmdsZScsIDAuMDM4KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSh0b25lc1twb3dlcl0gKiAxLjI1LCAwLjA3LCAnc2luZScsIDAuMDE4KSwgNzIpO1xuICB9XG5cbiAgc2ltb25TdGVwT2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnRvbmUoODgwLCAwLjA4LCAndHJpYW5nbGUnLCAwLjAzNSk7XG4gIH1cblxuICBzaW1vblJvdW5kT2soKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFs2NTkuMjUsIDAuMDhdLFxuICAgICAgWzg4MCwgMC4wOF0sXG4gICAgICBbMTE3NC42NiwgMC4xMl0sXG4gICAgXSk7XG4gIH1cblxuICBzaW1vbkZhaWwoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFtcbiAgICAgIFsxOTYsIDAuMTJdLFxuICAgICAgWzE0Ni44MywgMC4xOF0sXG4gICAgXSk7XG4gIH1cblxuICBidWJibGVQb3Aoc2l6ZSA9IDIsIGNvbWJvID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVTaXplID0gTWF0aC5tYXgoMiwgTWF0aC5taW4oMTIsIE1hdGgucm91bmQoc2l6ZSkpKTtcbiAgICBjb25zdCBzYWZlQ29tYm8gPSBNYXRoLm1heCgxLCBNYXRoLm1pbig5LCBNYXRoLnJvdW5kKGNvbWJvKSkpO1xuICAgIGNvbnN0IGJhc2UgPSA1MjAgKyBzYWZlU2l6ZSAqIDE4O1xuICAgIHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDY1LCAwLjAxOCArIHNhZmVTaXplICogMC4wMDE4LCAnYmFuZHBhc3MnLCAxMjAwICsgc2FmZVNpemUgKiA4NSk7XG4gICAgdm9pZCB0aGlzLnN3ZWVwKGJhc2UsIGJhc2UgKiAxLjksIDAuMDksICdzaW5lJywgMC4wMjYgKyBzYWZlU2l6ZSAqIDAuMDAxNCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoYmFzZSAqIDEuMjUsIDAuMDU1LCAndHJpYW5nbGUnLCAwLjAxOCksIDM4KTtcbiAgICBpZiAoc2FmZVNpemUgPj0gNSB8fCBzYWZlQ29tYm8gPiAxKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuYnViYmxlQ29tYm8oc2FmZUNvbWJvKSwgODIpO1xuICAgIH1cbiAgfVxuXG4gIGJ1YmJsZUNvbWJvKGNvbWJvID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVDb21ibyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDksIE1hdGgucm91bmQoY29tYm8pKSk7XG4gICAgY29uc3Qgcm9vdCA9IDY2MCArIHNhZmVDb21ibyAqIDI2O1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgW3Jvb3QsIDAuMDQ1XSxcbiAgICAgICAgW3Jvb3QgKiAxLjI1LCAwLjA1NV0sXG4gICAgICAgIFtyb290ICogMS41LCAwLjA3XSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMjQgKyBzYWZlQ29tYm8gKiAwLjAwMTYsXG4gICAgICA0MixcbiAgICApO1xuICB9XG5cbiAgYnViYmxlSW52YWxpZCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFsyNDYuOTQsIDAuMDU1XSxcbiAgICAgICAgWzE5NiwgMC4wODVdLFxuICAgICAgXSxcbiAgICAgICdzaW5lJyxcbiAgICAgIDAuMDM0LFxuICAgICAgNTQsXG4gICAgKTtcbiAgfVxuXG4gIGJ1YmJsZVNldHRsZShkcm9wID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IHNhZmVEcm9wID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oOSwgTWF0aC5yb3VuZChkcm9wKSkpO1xuICAgIHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDU1LCAwLjAwOSArIHNhZmVEcm9wICogMC4wMDEsICdsb3dwYXNzJywgMzYwICsgc2FmZURyb3AgKiAyOCk7XG4gICAgdm9pZCB0aGlzLnRvbmUoMTY0LjgxICsgc2FmZURyb3AgKiA4LCAwLjA0NSwgJ3RyaWFuZ2xlJywgMC4wMTIpO1xuICB9XG5cbiAgYnViYmxlU2h1ZmZsZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszOTIsIDAuMDRdLFxuICAgICAgICBbNTIzLjI1LCAwLjA0XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wNV0sXG4gICAgICAgIFs3ODMuOTksIDAuMDddLFxuICAgICAgXSxcbiAgICAgICdzaW5lJyxcbiAgICAgIDAuMDI0LFxuICAgICAgMzgsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAxOCwgJ2JhbmRwYXNzJywgOTUwKSwgMjgpO1xuICB9XG5cbiAgYnViYmxlRmV2ZXIoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnN3ZWVwKDM5MiwgMTU2Ny45OCwgMC4yNCwgJ3RyaWFuZ2xlJywgMC4wMzQpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zZXF1ZW5jZShbWzk4Ny43NywgMC4wNTVdLCBbMTMxOC41MSwgMC4wODVdXSwgJ3NpbmUnLCAwLjAyNSwgNDgpLCAxMjgpO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTIsIDAuMDE0LCAnaGlnaHBhc3MnLCAyNDAwKSwgNzIpO1xuICB9XG5cbiAgYnViYmxlRmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbNTIzLjI1LCAwLjA3XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wN10sXG4gICAgICAgIFs3ODMuOTksIDAuMDhdLFxuICAgICAgICBbMTA0Ni41LCAwLjEzXSxcbiAgICAgICAgWzEzMTguNTEsIDAuMThdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjA0MixcbiAgICAgIDYyLFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4xOCwgMC4wMTYsICdiYW5kcGFzcycsIDE4MDApLCAxMTApO1xuICB9XG5cbiAgY2hlc3NpbWFsc01vdmUoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMzkyLCAwLjA0NV0sXG4gICAgICAgIFs0OTMuODgsIDAuMDU1XSxcbiAgICAgIF0sXG4gICAgICAndHJpYW5nbGUnLFxuICAgICAgMC4wMzIsXG4gICAgICA0OCxcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMDM1LCAwLjAxMiwgJ2JhbmRwYXNzJywgODIwKSwgOCk7XG4gIH1cblxuICBjaGVzc2ltYWxzQm90TW92ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFszMjkuNjMsIDAuMDU1XSxcbiAgICAgICAgWzI0Ni45NCwgMC4wN10sXG4gICAgICBdLFxuICAgICAgJ3Nhd3Rvb3RoJyxcbiAgICAgIDAuMDI0LFxuICAgICAgNTYsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1LCAwLjAxLCAnbG93cGFzcycsIDQyMCksIDE2KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNDYXB0dXJlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzE3NC42MSwgMC4wNF0sXG4gICAgICAgIFsyNDYuOTQsIDAuMDQ1XSxcbiAgICAgICAgWzU4Ny4zMywgMC4wOTVdLFxuICAgICAgICBbNzgzLjk5LCAwLjA4XSxcbiAgICAgIF0sXG4gICAgICAnc3F1YXJlJyxcbiAgICAgIDAuMDQ2LFxuICAgICAgNDQsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoOTYsIDQyLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDIwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE4LCAwLjA1LCAnbG93cGFzcycsIDUyMCksIDE4KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA3LCAwLjAyOCwgJ2JhbmRwYXNzJywgMTgwMCksIDg0KTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNQb3dlcihwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcikpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNQb3dlckZhbGxiYWNrKHBvd2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXI6IENoZXNzaW1hbHNQb3dlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdGVzOiBSZWNvcmQ8Q2hlc3NpbWFsc1Bvd2VyLCBOb3RlW10+ID0ge1xuICAgICAgZWFnbGU6IFtcbiAgICAgICAgWzY1OS4yNSwgMC4wNTVdLFxuICAgICAgICBbODgwLCAwLjA2NV0sXG4gICAgICAgIFsxMzE4LjUxLCAwLjEyXSxcbiAgICAgIF0sXG4gICAgICBidWxsOiBbXG4gICAgICAgIFsxOTYsIDAuMDc1XSxcbiAgICAgICAgWzE2NC44MSwgMC4wNzVdLFxuICAgICAgICBbMjQ2Ljk0LCAwLjEzXSxcbiAgICAgIF0sXG4gICAgICBrYW5nYXJvbzogW1xuICAgICAgICBbMzkyLCAwLjA1NV0sXG4gICAgICAgIFswLCAwLjA0XSxcbiAgICAgICAgWzc4My45OSwgMC4xMV0sXG4gICAgICBdLFxuICAgICAgbGlvbjogW1xuICAgICAgICBbMjYxLjYzLCAwLjA2XSxcbiAgICAgICAgWzM5MiwgMC4wNl0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDZdLFxuICAgICAgICBbNzgzLjk5LCAwLjE0XSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2Uobm90ZXNbcG93ZXJdLCBwb3dlciA9PT0gJ2J1bGwnID8gJ3Nhd3Rvb3RoJyA6ICd0cmlhbmdsZScsIDAuMDQ2LCA1OCk7XG4gICAgaWYgKHBvd2VyID09PSAnZWFnbGUnKSB7XG4gICAgICB2b2lkIHRoaXMuc3dlZXAoNzIwLCAxNTY4LCAwLjE4LCAndHJpYW5nbGUnLCAwLjAyOCk7XG4gICAgICB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjIyLCAwLjAyNSwgJ2hpZ2hwYXNzJywgMTYwMCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA4LCAwLjAxOCwgJ2JhbmRwYXNzJywgMjYwMCksIDkyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDE3NjAsIDAuMDU1LCAnc2luZScsIDAuMDE4KSwgMTUwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBvd2VyID09PSAnYnVsbCcpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50b25lKDgyLjQxLCAwLjE2LCAnc2F3dG9vdGgnLCAwLjAzOCksIDcyKTtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxMzguNTksIDY1LjQxLCAwLjE4LCAnc2F3dG9vdGgnLCAwLjAyNiksIDExOCk7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjE2LCAwLjAzOCwgJ2xvd3Bhc3MnLCAyNjApLCAzNik7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA1NSwgMC4wMjYsICdiYW5kcGFzcycsIDk2MCksIDE3MCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3dlciA9PT0gJ2thbmdhcm9vJykge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDQyMCwgOTQwLCAwLjExLCAnc2luZScsIDAuMDMyKSwgODgpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDk0MCwgNTIwLCAwLjEsICdzaW5lJywgMC4wMjYpLCAxOTApO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoMjYxLjYzLCAwLjA1NSwgJ3RyaWFuZ2xlJywgMC4wMTgpLCAyNDUpO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4wMzUsIDAuMDE4LCAnYmFuZHBhc3MnLCAxMTgwKSwgMjE4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDE2NC44MSwgMzkyLCAwLjI0LCAnc2F3dG9vdGgnLCAwLjAzNCksIDcwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSg5OCwgMC4xOCwgJ3Nhd3Rvb3RoJywgMC4wMiksIDE1MCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmZpbHRlcmVkTm9pc2UoMC4yOCwgMC4wMzIsICdiYW5kcGFzcycsIDM0MCksIDYyKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc3dlZXAoMTk2LCAxNDYuODMsIDAuMjIsICdzYXd0b290aCcsIDAuMDIyKSwgMTE2KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNQb3dlclNhbXBsZShwb3dlcjogQ2hlc3NpbWFsc1Bvd2VyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2FtcGxlID0gQ0hFU1NJTUFMU19QT1dFUl9TQU1QTEVTW3Bvd2VyXTtcbiAgICBpZiAodGhpcy5wbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMucGxheVNhbXBsZShzYW1wbGUsICgpID0+IHRoaXMuY2hlc3NpbWFsc1Bvd2VyRmFsbGJhY2socG93ZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheVNhbXBsZShzYW1wbGU6IFNhbXBsZUNvbmZpZywgZmFsbGJhY2s6ICgpID0+IHZvaWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpIHx8IHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkID0gdGhpcy5zYW1wbGVDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgICBjb25zdCBhdWRpbyA9IGNhY2hlZCA/IChjYWNoZWQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxBdWRpb0VsZW1lbnQpIDogbmV3IEF1ZGlvKHNhbXBsZS5zcmMpO1xuICAgICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICAgIGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA9IGAke3NhbXBsZS52b2x1bWV9YDtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IHRoaXMuc2FtcGxlVm9sdW1lKHNhbXBsZSk7XG4gICAgICB0aGlzLmFjdGl2ZVNhbXBsZXMuYWRkKGF1ZGlvKTtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSAoKSA9PiB0aGlzLmFjdGl2ZVNhbXBsZXMuZGVsZXRlKGF1ZGlvKTtcbiAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgcmVsZWFzZSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWxlYXNlLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICBjb25zdCBwbGF5UmVzdWx0ID0gYXVkaW8ucGxheSgpO1xuICAgICAgaWYgKHBsYXlSZXN1bHQpIHtcbiAgICAgICAgcGxheVJlc3VsdC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5QnVmZmVyZWRTYW1wbGUoc2FtcGxlOiBTYW1wbGVDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYnVmZmVyID0gdGhpcy5idWZmZXJDYWNoZS5nZXQoc2FtcGxlLnNyYyk7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0O1xuICAgIGlmICghYnVmZmVyIHx8ICFjdHggfHwgY3R4LnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdm9pZCB0aGlzLnByZWxvYWRTYW1wbGVCdWZmZXIoc2FtcGxlLnNyYyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpZiAoY3R4LnN0YXRlID09PSAnc3VzcGVuZGVkJykgdm9pZCBjdHgucmVzdW1lKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgc291cmNlLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgIGdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZSh0aGlzLnNhbXBsZVZvbHVtZShzYW1wbGUpLCBjdHguY3VycmVudFRpbWUpO1xuICAgICAgc291cmNlLmNvbm5lY3QoZ2Fpbik7XG4gICAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgICBzb3VyY2Uuc3RhcnQoY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNoZXNzaW1hbHNWaWN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgaWYgKHRoaXMucGxheUJ1ZmZlcmVkU2FtcGxlKENIRVNTSU1BTFNfT1VUQ09NRV9TQU1QTEVTLnZpY3RvcnkpKSByZXR1cm47XG4gICAgaWYgKHRoaXMucGxheVNhbXBsZShDSEVTU0lNQUxTX09VVENPTUVfU0FNUExFUy52aWN0b3J5LCAoKSA9PiB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKSkpIHJldHVybjtcbiAgICB0aGlzLmNoZXNzaW1hbHNWaWN0b3J5RmFsbGJhY2soKTtcbiAgfVxuXG4gIGNoZXNzaW1hbHNEZWZlYXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodGhpcy5wbGF5QnVmZmVyZWRTYW1wbGUoQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMuZGVmZWF0KSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnBsYXlTYW1wbGUoQ0hFU1NJTUFMU19PVVRDT01FX1NBTVBMRVMuZGVmZWF0LCAoKSA9PiB0aGlzLmxvc2UoKSkpIHJldHVybjtcbiAgICB0aGlzLmxvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc1ZpY3RvcnlGYWxsYmFjaygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VxdWVuY2UoXG4gICAgICBbXG4gICAgICAgIFsxOTYsIDAuMDhdLFxuICAgICAgICBbMjYxLjYzLCAwLjA4XSxcbiAgICAgICAgWzMyOS42MywgMC4wOF0sXG4gICAgICAgIFszOTIsIDAuMV0sXG4gICAgICAgIFs1MjMuMjUsIDAuMTJdLFxuICAgICAgICBbNzgzLjk5LCAwLjE2XSxcbiAgICAgICAgWzEwNDYuNSwgMC4yMl0sXG4gICAgICBdLFxuICAgICAgJ3RyaWFuZ2xlJyxcbiAgICAgIDAuMDUsXG4gICAgICA3MixcbiAgICApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxMzAuODEsIDY1LjQxLCAwLjI4LCAnc2F3dG9vdGgnLCAwLjAyKSwgNDApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCg1MjMuMjUsIDE1NjcuOTgsIDAuMzQsICdzaW5lJywgMC4wMjYpLCAyNDApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMTYsIDAuMDIyLCAnYmFuZHBhc3MnLCAxNDAwKSwgMTIwKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuc2VxdWVuY2UoW1s5ODcuNzcsIDAuMDhdLCBbMTMxOC41MSwgMC4xMl1dLCAndHJpYW5nbGUnLCAwLjAzMiwgODYpLCA1MjApO1xuICB9XG5cbiAgY2hlc3NpbWFsc0pvaW5SZXF1ZXN0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5zZXF1ZW5jZShcbiAgICAgIFtcbiAgICAgICAgWzUyMy4yNSwgMC4wNTVdLFxuICAgICAgICBbNjU5LjI1LCAwLjA2XSxcbiAgICAgICAgWzk4Ny43NywgMC4xMl0sXG4gICAgICBdLFxuICAgICAgJ3RyaWFuZ2xlJyxcbiAgICAgIDAuMDM0LFxuICAgICAgNTgsXG4gICAgKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSgxMzE4LjUxLCAwLjA3NSwgJ3NpbmUnLCAwLjAyKSwgMTM2KTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuZmlsdGVyZWROb2lzZSgwLjA2LCAwLjAxLCAnaGlnaHBhc3MnLCAxODAwKSwgOTgpO1xuICB9XG5cbiAgY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlcXVlbmNlKFxuICAgICAgW1xuICAgICAgICBbMzkyLCAwLjA1NV0sXG4gICAgICAgIFs1MjMuMjUsIDAuMDU1XSxcbiAgICAgICAgWzY1OS4yNSwgMC4wOF0sXG4gICAgICAgIFs5ODcuNzcsIDAuMTNdLFxuICAgICAgXSxcbiAgICAgICd0cmlhbmdsZScsXG4gICAgICAwLjAzOCxcbiAgICAgIDY0LFxuICAgICk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDIyMCwgODgwLCAwLjIyLCAnc2luZScsIDAuMDI0KSwgNzApO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5maWx0ZXJlZE5vaXNlKDAuMjQsIDAuMDE4LCAnYmFuZHBhc3MnLCAxMjAwKSwgNTQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkQm9vbGVhblNldHRpbmcoJ3ZhbC1taW5pLWdhbWVzLWF1ZGlvJywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRCb29sZWFuU2V0dGluZyhrZXk6IHN0cmluZywgZmFsbGJhY2s6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICByZXR1cm4gdmFsdWUgIT09ICcwJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRWb2x1bWVTZXR0aW5nKGtleTogc3RyaW5nLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB2b2lkIHRoaXMuZGVmYXVsdHNSZWFkeTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChzdG9yZWQgPT09IG51bGwgfHwgc3RvcmVkLnRyaW0oKSA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHN0b3JlZCk7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHRoaXMubm9ybWFsaXplVm9sdW1lKHZhbHVlKSA6IGZhbGxiYWNrO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVTZXR0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbG9jYWxTdG9yYWdlIHB1ZWRlIG5vIGVzdGFyIGRpc3BvbmlibGUgZW4gU1NSL3Rlc3RzLlxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVm9sdW1lKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCB2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVsb2FkU2FtcGxlKHNyYzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2FtcGxlQ2FjaGUuaGFzKHNyYykpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oc3JjKTtcbiAgICAgIGF1ZGlvLnByZWxvYWQgPSAnYXV0byc7XG4gICAgICBhdWRpby5sb2FkKCk7XG4gICAgICB0aGlzLnNhbXBsZUNhY2hlLnNldChzcmMsIGF1ZGlvKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpIGVsIG5hdmVnYWRvciBubyBwZXJtaXRlIHByZWNhcmdhciwgc2UgaW50ZW50YXJhIGFsIHJlcHJvZHVjaXIuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVsb2FkU2FtcGxlQnVmZmVyKHNyYzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuYnVmZmVyQ2FjaGUuaGFzKHNyYykpIHJldHVybjtcbiAgICBjb25zdCBhY3RpdmVQcmVsb2FkID0gdGhpcy5idWZmZXJQcmVsb2Fkcy5nZXQoc3JjKTtcbiAgICBpZiAoYWN0aXZlUHJlbG9hZCkgcmV0dXJuIGFjdGl2ZVByZWxvYWQ7XG5cbiAgICBjb25zdCBwcmVsb2FkID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZmV0Y2ggPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgICBjb25zdCBjdHggPSBhd2FpdCB0aGlzLmVuc3VyZUNvbnRleHQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goc3JjKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY3R4LmRlY29kZUF1ZGlvRGF0YShkYXRhLnNsaWNlKDApKTtcbiAgICAgIHRoaXMuYnVmZmVyQ2FjaGUuc2V0KHNyYywgYnVmZmVyKTtcbiAgICB9KSgpXG4gICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLmJ1ZmZlclByZWxvYWRzLmRlbGV0ZShzcmMpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmJ1ZmZlclByZWxvYWRzLnNldChzcmMsIHByZWxvYWQpO1xuICAgIHJldHVybiBwcmVsb2FkO1xuICB9XG5cbiAgcHJpdmF0ZSBtaWdyYXRlQ2hlc3NpbWFsc0F1ZGlvRGVmYXVsdHMoKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbktleSA9ICd2YWwtbWluaS1nYW1lcy1jaGVzc2ltYWxzLWF1ZGlvLWRlZmF1bHRzLXYyJztcbiAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShtaWdyYXRpb25LZXkpID09PSAnMScpIHJldHVybiB0cnVlO1xuICAgICAgY29uc3Qgc3RvcmVkTXVzaWNWb2x1bWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtbXVzaWMtdm9sdW1lJyk7XG4gICAgICBjb25zdCBzdG9yZWRTZnhWb2x1bWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmFsLW1pbmktZ2FtZXMtc2Z4LXZvbHVtZScpO1xuICAgICAgaWYgKCFzdG9yZWRNdXNpY1ZvbHVtZSB8fCBzdG9yZWRNdXNpY1ZvbHVtZSA9PT0gJzAnKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2YWwtbWluaS1nYW1lcy1tdXNpYy12b2x1bWUnLCAnMC4yNScpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdG9yZWRTZnhWb2x1bWUgfHwgc3RvcmVkU2Z4Vm9sdW1lID09PSAnMCcpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZhbC1taW5pLWdhbWVzLXNmeC12b2x1bWUnLCAnMC44Jyk7XG4gICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShtaWdyYXRpb25LZXksICcxJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2UgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBlbiBTU1IvdGVzdHMuXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5QbGF5TXVzaWMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCgpICYmIHRoaXMubXVzaWNFbmFibGVkKCkgJiYgdGhpcy5tdXNpY1ZvbHVtZSgpID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUGxheVNmeCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkKCkgJiYgdGhpcy5zZnhFbmFibGVkKCkgJiYgdGhpcy5zZnhWb2x1bWUoKSA+IDA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbnRleHQoKTogUHJvbWlzZTxBdWRpb0NvbnRleHQ+IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCB8fCB0aGlzLmNvbnRleHQuc3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7XG4gICAgICB0aGlzLm1hc3RlckdhaW4gPSB0aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluLmdhaW4udmFsdWUgPSAxO1xuICAgICAgdGhpcy5tYXN0ZXJHYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgbWVudU1lbG9keSgpOiBOb3RlW10ge1xuICAgIHJldHVybiBbXG4gICAgICBbMjIwLCAwLjM4XSxcbiAgICAgIFswLCAwLjEyXSxcbiAgICAgIFsyNjEuNjMsIDAuMzRdLFxuICAgICAgWzMyOS42MywgMC40Ml0sXG4gICAgICBbMjkzLjY2LCAwLjI4XSxcbiAgICAgIFswLCAwLjEyXSxcbiAgICAgIFszOTIsIDAuNDhdLFxuICAgICAgWzMyOS42MywgMC4zNF0sXG4gICAgICBbMjYxLjYzLCAwLjM2XSxcbiAgICAgIFsyMjAsIDAuNThdLFxuICAgICAgWzAsIDAuMl0sXG4gICAgICBbMjkzLjY2LCAwLjM0XSxcbiAgICAgIFszMjkuNjMsIDAuNDJdLFxuICAgICAgWzQ0MCwgMC41XSxcbiAgICAgIFszOTIsIDAuMzZdLFxuICAgICAgWzI2MS42MywgMC42Ml0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2YW5uYVB1bHNlKHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzdGVwICUgNCA9PT0gMCkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnN3ZWVwKDk2LCA0OCwgMC4xOCwgJ3NpbmUnLCAwLjAxMiksIDE4KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSA4ID09PSA1KSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMudG9uZSgxNjQuODEsIDAuMDQ1LCAndHJpYW5nbGUnLCAwLjAxMiksIDk2KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSAxNiA9PT0gMTApIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5zd2VlcCgxNDYuODMsIDE5NiwgMC4wOCwgJ3RyaWFuZ2xlJywgMC4wMSksIDE0MCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnYW1lTWVsb2R5KCk6IE5vdGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFs1MjMuMjUsIDAuMTNdLFxuICAgICAgWzY1OS4yNSwgMC4xM10sXG4gICAgICBbNzgzLjk5LCAwLjEzXSxcbiAgICAgIFsxMDQ2LjUsIDAuMThdLFxuICAgICAgWzc4My45OSwgMC4xM10sXG4gICAgICBbNjU5LjI1LCAwLjEzXSxcbiAgICAgIFs1ODcuMzMsIDAuMThdLFxuICAgICAgWzY1OS4yNSwgMC4xOF0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgYnViYmxlTWVsb2R5KCk6IE5vdGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFsyNjEuNjMsIDAuNzJdLFxuICAgICAgWzAsIDAuMThdLFxuICAgICAgWzMyOS42MywgMC42Nl0sXG4gICAgICBbMzkyLCAwLjc4XSxcbiAgICAgIFswLCAwLjI0XSxcbiAgICAgIFszNDkuMjMsIDAuNjRdLFxuICAgICAgWzI5My42NiwgMC43Ml0sXG4gICAgICBbMCwgMC4yOF0sXG4gICAgICBbNDQwLCAwLjg0XSxcbiAgICAgIFszOTIsIDAuN10sXG4gICAgICBbMzI5LjYzLCAwLjc4XSxcbiAgICAgIFswLCAwLjMyXSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidWJibGVBbWJpZW50UHVsc2Uoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHN0ZXAgJSA0ID09PSAwKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMubXVzaWNUb25lKDEzMC44MSwgMS4zNSwgJ3NpbmUnLCAwLjAwOSksIDI0KTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgJSA2ID09PSAyKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMubXVzaWNUb25lKDE5NiwgMC45NSwgJ3RyaWFuZ2xlJywgMC4wMDgpLCAxMjApO1xuICAgIH1cbiAgICBpZiAoc3RlcCAlIDggPT09IDUpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy5tdXNpY1RvbmUoNTIzLjI1LCAwLjQyLCAnc2luZScsIDAuMDA2KSwgMTgwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcXVlbmNlKFxuICAgIG5vdGVzOiBOb3RlW10sXG4gICAgd2F2ZTogT3NjaWxsYXRvclR5cGUgPSAnc3F1YXJlJyxcbiAgICBnYWluID0gMC4wNTUsXG4gICAgaW50ZXJ2YWxNcyA9IDkwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgW2ZyZXEsIGR1cmF0aW9uXSA9IG5vdGVzW2ldO1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRvbmUoZnJlcSwgZHVyYXRpb24sIHdhdmUsIGdhaW4pLCBpICogaW50ZXJ2YWxNcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNhbXBsZU11c2ljKGNvbmZpZzogU2FtcGxlTXVzaWNDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNEb2N1bWVudFZpc2libGUoKSkge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2FtcGxlTXVzaWNDb25maWc/LnNyYyA9PT0gY29uZmlnLnNyYyAmJiAhdGhpcy5zYW1wbGVNdXNpYz8ucGF1c2VkKSByZXR1cm47XG4gICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICBpZiAodHlwZW9mIEF1ZGlvID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oY29uZmlnLnNyYyk7XG4gICAgYXVkaW8ubG9vcCA9IHRydWU7XG4gICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcbiAgICB0aGlzLnNhbXBsZU11c2ljID0gYXVkaW87XG4gICAgdGhpcy5zYW1wbGVNdXNpY0NvbmZpZyA9IGNvbmZpZztcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbywgY29uZmlnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXVkaW8ucGxheSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IGNvbmZpZztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BTYW1wbGVNdXNpYygpOiB2b2lkIHtcbiAgICBjb25zdCBtdXNpYyA9IHRoaXMuc2FtcGxlTXVzaWM7XG4gICAgdGhpcy5zYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNhbXBsZU11c2ljQ29uZmlnID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzY29ubmVjdFNhbXBsZU11c2ljR3JhcGgoKTtcbiAgICBpZiAoIW11c2ljKSByZXR1cm47XG4gICAgbXVzaWMucGF1c2UoKTtcbiAgICBtdXNpYy5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2FtcGxlTXVzaWNWb2x1bWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNhbXBsZU11c2ljIHx8ICF0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSByZXR1cm47XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5zYW1wbGVNdXNpY1ZvbHVtZSh0aGlzLnNhbXBsZU11c2ljQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpY0dhaW4gJiYgdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljR2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh2b2x1bWUsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwgMC4wMjUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljLnZvbHVtZSA9IHZvbHVtZTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKDEsIE1hdGgubWF4KDAsIGNvbmZpZy52b2x1bWUgKiB0aGlzLm11c2ljVm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FtcGxlVm9sdW1lKHNhbXBsZTogU2FtcGxlQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgc2FtcGxlLnZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBY3RpdmVTYW1wbGVWb2x1bWVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYXVkaW8gb2YgdGhpcy5hY3RpdmVTYW1wbGVzKSB7XG4gICAgICBjb25zdCBiYXNlVm9sdW1lID0gTnVtYmVyKGF1ZGlvLmRhdGFzZXRbJ2Jhc2VWb2x1bWUnXSA/PyAnMScpO1xuICAgICAgYXVkaW8udm9sdW1lID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgYmFzZVZvbHVtZSAqIHRoaXMuc2Z4Vm9sdW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RTYW1wbGVNdXNpYyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCwgY29uZmlnOiBTYW1wbGVNdXNpY0NvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMuc2FtcGxlTXVzaWNWb2x1bWUoY29uZmlnKTtcbiAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgICBjb25zdCBzb3VyY2UgPSBjdHguY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGF1ZGlvKTtcbiAgICAgIGNvbnN0IGdhaW4gPSBjdHguY3JlYXRlR2FpbigpO1xuICAgICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKHZvbHVtZSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICAgIHNvdXJjZS5jb25uZWN0KGdhaW4pO1xuICAgICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gZ2FpbjtcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IDE7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhdWRpby52b2x1bWUgPSB2b2x1bWU7XG4gICAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY0dhaW4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNjb25uZWN0U2FtcGxlTXVzaWNHcmFwaCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zYW1wbGVNdXNpY1NvdXJjZT8uZGlzY29ubmVjdCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRWwgbm9kbyBwdWVkZSBlc3RhciBkZXNjb25lY3RhZG8gc2kgZWwgbmF2ZWdhZG9yIGxpYmVybyBsYSBwaXN0YS5cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluPy5kaXNjb25uZWN0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCBub2RvIHB1ZWRlIGVzdGFyIGRlc2NvbmVjdGFkbyBzaSBlbCBuYXZlZ2Fkb3IgbGliZXJvIGxhIHBpc3RhLlxuICAgIH1cbiAgICB0aGlzLnNhbXBsZU11c2ljU291cmNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlTXVzaWNHYWluID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0b25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3NxdWFyZScsIGdhaW5WYWx1ZSA9IDAuMDQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgaWYgKGZyZXEgPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXE7XG4gICAgZ2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShnYWluVmFsdWUgKiB0aGlzLnNmeFZvbHVtZSgpLCBjdHguY3VycmVudFRpbWUgKyAwLjAxKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIG9zY2lsbGF0b3Iuc3RhcnQoKTtcbiAgICBvc2NpbGxhdG9yLnN0b3AoY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24gKyAwLjAyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbXVzaWNUb25lKGZyZXE6IG51bWJlciwgZHVyYXRpb24gPSAwLjEsIHR5cGU6IE9zY2lsbGF0b3JUeXBlID0gJ3RyaWFuZ2xlJywgZ2FpblZhbHVlID0gMC4wMTgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheU11c2ljKCkpIHJldHVybjtcbiAgICBpZiAoZnJlcSA8PSAwKSByZXR1cm47XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBjb25zdCBvc2NpbGxhdG9yID0gY3R4LmNyZWF0ZU9zY2lsbGF0b3IoKTtcbiAgICBjb25zdCBnYWluID0gY3R4LmNyZWF0ZUdhaW4oKTtcbiAgICBvc2NpbGxhdG9yLnR5cGUgPSB0eXBlO1xuICAgIG9zY2lsbGF0b3IuZnJlcXVlbmN5LnZhbHVlID0gZnJlcTtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMubXVzaWNWb2x1bWUoKSwgY3R4LmN1cnJlbnRUaW1lICsgMC4wOCk7XG4gICAgZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZShnYWluVmFsdWUgKiB0aGlzLm11c2ljVm9sdW1lKCkgKiAwLjc0LCBjdHguY3VycmVudFRpbWUgKyAwLjEyLCAwLjIpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKTtcbiAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgb3NjaWxsYXRvci5zdGFydCgpO1xuICAgIG9zY2lsbGF0b3Iuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzd2VlcChcbiAgICBmcm9tRnJlcTogbnVtYmVyLFxuICAgIHRvRnJlcTogbnVtYmVyLFxuICAgIGR1cmF0aW9uID0gMC4xNixcbiAgICB0eXBlOiBPc2NpbGxhdG9yVHlwZSA9ICd0cmlhbmdsZScsXG4gICAgZ2FpblZhbHVlID0gMC4wMyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblBsYXlTZngoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMud2FrZUF1ZGlvKCk7XG4gICAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7XG4gICAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKCk7XG4gICAgb3NjaWxsYXRvci50eXBlID0gdHlwZTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShmcm9tRnJlcSwgY3R4LmN1cnJlbnRUaW1lKTtcbiAgICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKE1hdGgubWF4KDEsIHRvRnJlcSksIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMuc2Z4Vm9sdW1lKCksIGN0eC5jdXJyZW50VGltZSArIDAuMDEpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSwgY3R4LmN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKTtcbiAgICBnYWluLmNvbm5lY3QodGhpcy5tYXN0ZXJHYWluID8/IGN0eC5kZXN0aW5hdGlvbik7XG4gICAgb3NjaWxsYXRvci5zdGFydCgpO1xuICAgIG9zY2lsbGF0b3Iuc3RvcChjdHguY3VycmVudFRpbWUgKyBkdXJhdGlvbiArIDAuMDIpO1xuICB9XG5cbiAgLy8gQ2hlc3NpbWFscyB1c2VzIGdlbmVyYXRlZCBXZWJBdWRpbyBsYXllcnMgaW5zdGVhZCBvZiB0aGlyZC1wYXJ0eSBzYW1wbGVzLFxuICAvLyBhdm9pZGluZyBsaWNlbnNpbmcgcmlzayB3aGlsZSBrZWVwaW5nIGVhY2ggYW5pbWFsIHBvd2VyIGV4cHJlc3NpdmUuXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVyZWROb2lzZShcbiAgICBkdXJhdGlvbiA9IDAuMTIsXG4gICAgZ2FpblZhbHVlID0gMC4wMjUsXG4gICAgZmlsdGVyVHlwZTogQmlxdWFkRmlsdGVyVHlwZSA9ICdiYW5kcGFzcycsXG4gICAgZnJlcXVlbmN5ID0gOTAwLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuUGxheVNmeCgpKSByZXR1cm47XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy53YWtlQXVkaW8oKTtcbiAgICBjb25zdCBzYW1wbGVDb3VudCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IoY3R4LnNhbXBsZVJhdGUgKiBkdXJhdGlvbikpO1xuICAgIGNvbnN0IGJ1ZmZlciA9IGN0eC5jcmVhdGVCdWZmZXIoMSwgc2FtcGxlQ291bnQsIGN0eC5zYW1wbGVSYXRlKTtcbiAgICBjb25zdCBjaGFubmVsID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2FtcGxlQ291bnQ7IGkgKz0gMSkge1xuICAgICAgY29uc3QgZGVjYXkgPSAxIC0gaSAvIHNhbXBsZUNvdW50O1xuICAgICAgY2hhbm5lbFtpXSA9IChNYXRoLnJhbmRvbSgpICogMiAtIDEpICogZGVjYXk7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlID0gY3R4LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO1xuICAgIGNvbnN0IGZpbHRlciA9IGN0eC5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtcbiAgICBjb25zdCBnYWluID0gY3R4LmNyZWF0ZUdhaW4oKTtcbiAgICBmaWx0ZXIudHlwZSA9IGZpbHRlclR5cGU7XG4gICAgZmlsdGVyLmZyZXF1ZW5jeS52YWx1ZSA9IGZyZXF1ZW5jeTtcbiAgICBmaWx0ZXIuUS52YWx1ZSA9IGZpbHRlclR5cGUgPT09ICdsb3dwYXNzJyA/IDAuNyA6IDEuODtcbiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLCBjdHguY3VycmVudFRpbWUpO1xuICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKGdhaW5WYWx1ZSAqIHRoaXMuc2Z4Vm9sdW1lKCksIGN0eC5jdXJyZW50VGltZSArIDAuMDEyKTtcbiAgICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsIGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICBzb3VyY2UuYnVmZmVyID0gYnVmZmVyO1xuICAgIHNvdXJjZS5jb25uZWN0KGZpbHRlcik7XG4gICAgZmlsdGVyLmNvbm5lY3QoZ2Fpbik7XG4gICAgZ2Fpbi5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiA/PyBjdHguZGVzdGluYXRpb24pO1xuICAgIHNvdXJjZS5zdGFydCgpO1xuICAgIHNvdXJjZS5zdG9wKGN0eC5jdXJyZW50VGltZSArIGR1cmF0aW9uICsgMC4wMik7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgdGhpcy5wYXVzZUZvckJhY2tncm91bmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVQYWdlSGlkZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLnBhdXNlRm9yQmFja2dyb3VuZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlUGFnZVNob3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdm9pZCB0aGlzLnJlc3VtZUZyb21CYWNrZ3JvdW5kKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVVc2VyQWN0aXZhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpIHx8ICF0aGlzLmlzRG9jdW1lbnRWaXNpYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnByZWxvYWRDaGVzc2ltYWxzU2FtcGxlcygpO1xuICAgIGlmICh0aGlzLnBhdXNlZFNhbXBsZU11c2ljKSB7XG4gICAgICB2b2lkIHRoaXMucmVzdW1lRnJvbUJhY2tncm91bmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCB0aGlzLndha2VBdWRpbygpO1xuICB9O1xuXG4gIHByaXZhdGUgcGF1c2VGb3JCYWNrZ3JvdW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZU1lbG9keSkgdGhpcy5wYXVzZWRNZWxvZHkgPSB0aGlzLmFjdGl2ZU1lbG9keTtcbiAgICBpZiAodGhpcy5zYW1wbGVNdXNpYyAmJiB0aGlzLnNhbXBsZU11c2ljQ29uZmlnKSB7XG4gICAgICB0aGlzLnBhdXNlZFNhbXBsZU11c2ljID0gdGhpcy5zYW1wbGVNdXNpY0NvbmZpZztcbiAgICAgIHRoaXMuc3RvcFNhbXBsZU11c2ljKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm11c2ljVGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMubXVzaWNUaW1lcik7XG4gICAgICB0aGlzLm11c2ljVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlTWVsb2R5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDAuMDAwMSwgMC4yKTtcbiAgICBpZiAodGhpcy5zdXNwZW5kVGltZXIpIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zdXNwZW5kVGltZXIpO1xuICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zdXNwZW5kVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICB2b2lkIHRoaXMuY29udGV4dD8uc3VzcGVuZCgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMjYwKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdW1lRnJvbUJhY2tncm91bmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc3VzcGVuZFRpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc3VzcGVuZFRpbWVyKTtcbiAgICAgIHRoaXMuc3VzcGVuZFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5hYmxlZCgpKSByZXR1cm47XG4gICAgY29uc3Qgc2FtcGxlTXVzaWMgPSB0aGlzLnBhdXNlZFNhbXBsZU11c2ljO1xuICAgIGlmIChzYW1wbGVNdXNpYykge1xuICAgICAgdGhpcy5wYXVzZWRTYW1wbGVNdXNpYyA9IHVuZGVmaW5lZDtcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRTYW1wbGVNdXNpYyhzYW1wbGVNdXNpYyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1lbG9keSA9IHRoaXMucGF1c2VkTWVsb2R5O1xuICAgIGlmICghbWVsb2R5KSByZXR1cm47XG4gICAgdGhpcy5wYXVzZWRNZWxvZHkgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgY3R4ID0gYXdhaXQgdGhpcy5lbnN1cmVDb250ZXh0KCk7XG4gICAgYXdhaXQgdGhpcy5yZXN1bWVDb250ZXh0KGN0eCk7XG4gICAgdGhpcy5mYWRlTWFzdGVyVG8oMSwgMC4zNSk7XG4gICAgYXdhaXQgdGhpcy5zdGFydE11c2ljKG1lbG9keSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdha2VBdWRpbygpOiBQcm9taXNlPEF1ZGlvQ29udGV4dD4ge1xuICAgIGNvbnN0IGN0eCA9IGF3YWl0IHRoaXMuZW5zdXJlQ29udGV4dCgpO1xuICAgIGF3YWl0IHRoaXMucmVzdW1lQ29udGV4dChjdHgpO1xuICAgIHRoaXMuZmFkZU1hc3RlclRvKDEsIDAuMTIpO1xuICAgIHJldHVybiBjdHg7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3VtZUNvbnRleHQoY3R4OiBBdWRpb0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY3R4LnN0YXRlID09PSAncnVubmluZycpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY3R4LnJlc3VtZSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gaU9TIHB1ZWRlIGV4aWdpciB1bmEgbnVldmEgaW50ZXJhY2Npw7NuIGRlbCB1c3VhcmlvOyBlbCBsaXN0ZW5lciBkZSBhY3RpdmFjacOzbiByZWludGVudGFyw6EuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmYWRlTWFzdGVyVG8odmFsdWU6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQgfHwgIXRoaXMubWFzdGVyR2FpbikgcmV0dXJuO1xuICAgIGNvbnN0IGdhaW4gPSB0aGlzLm1hc3RlckdhaW4uZ2FpbjtcbiAgICBjb25zdCBub3cgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XG4gICAgZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMobm93KTtcbiAgICBnYWluLnNldFRhcmdldEF0VGltZSh2YWx1ZSwgbm93LCBNYXRoLm1heCgwLjAxLCBzZWNvbmRzIC8gNCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RvY3VtZW50VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhZG9jdW1lbnQuaGlkZGVuO1xuICB9XG59XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -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.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.424';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40MjQnO1xuIl19
|
|
@@ -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.
|
|
61
|
+
const VERSION = '4.0.424';
|
|
62
62
|
|
|
63
63
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
64
64
|
let isRefreshing = false;
|
|
@@ -63192,6 +63192,9 @@ class RetroAudioService {
|
|
|
63192
63192
|
Object.values(CHESSIMALS_POWER_SAMPLES).forEach((sample) => {
|
|
63193
63193
|
void this.preloadSampleBuffer(sample.src);
|
|
63194
63194
|
});
|
|
63195
|
+
Object.values(CHESSIMALS_OUTCOME_SAMPLES).forEach((sample) => {
|
|
63196
|
+
void this.preloadSampleBuffer(sample.src);
|
|
63197
|
+
});
|
|
63195
63198
|
if (typeof Audio === 'undefined')
|
|
63196
63199
|
return;
|
|
63197
63200
|
[
|
|
@@ -63505,12 +63508,16 @@ class RetroAudioService {
|
|
|
63505
63508
|
}
|
|
63506
63509
|
chessimalsVictory() {
|
|
63507
63510
|
this.stopMusic();
|
|
63511
|
+
if (this.playBufferedSample(CHESSIMALS_OUTCOME_SAMPLES.victory))
|
|
63512
|
+
return;
|
|
63508
63513
|
if (this.playSample(CHESSIMALS_OUTCOME_SAMPLES.victory, () => this.chessimalsVictoryFallback()))
|
|
63509
63514
|
return;
|
|
63510
63515
|
this.chessimalsVictoryFallback();
|
|
63511
63516
|
}
|
|
63512
63517
|
chessimalsDefeat() {
|
|
63513
63518
|
this.stopMusic();
|
|
63519
|
+
if (this.playBufferedSample(CHESSIMALS_OUTCOME_SAMPLES.defeat))
|
|
63520
|
+
return;
|
|
63514
63521
|
if (this.playSample(CHESSIMALS_OUTCOME_SAMPLES.defeat, () => this.lose()))
|
|
63515
63522
|
return;
|
|
63516
63523
|
this.lose();
|
|
@@ -64723,6 +64730,7 @@ class ChessimalsGameComponent {
|
|
|
64723
64730
|
this.tutorialMode.set(false);
|
|
64724
64731
|
this.onlineConnectionState.set('idle');
|
|
64725
64732
|
this.gameBotProfileId.set(this.selectedLocalMode() === 'bot' ? this.selectedBotProfileId() : undefined);
|
|
64733
|
+
this.lastOutcomeSoundKey = undefined;
|
|
64726
64734
|
this.audio.stopMusic();
|
|
64727
64735
|
this.game.set(createChessimalsGame(this.selectedBoardSize()));
|
|
64728
64736
|
this.clearReview();
|
|
@@ -64744,6 +64752,7 @@ class ChessimalsGameComponent {
|
|
|
64744
64752
|
this.onlineConnectionState.set('idle');
|
|
64745
64753
|
this.gameBotProfileId.set(undefined);
|
|
64746
64754
|
this.selectedLocalMode.set('one-device');
|
|
64755
|
+
this.lastOutcomeSoundKey = undefined;
|
|
64747
64756
|
this.audio.stopMusic();
|
|
64748
64757
|
this.game.set(this.createTutorialGame());
|
|
64749
64758
|
this.clearReview();
|
|
@@ -64865,6 +64874,7 @@ class ChessimalsGameComponent {
|
|
|
64865
64874
|
return;
|
|
64866
64875
|
}
|
|
64867
64876
|
this.clearBotTurn();
|
|
64877
|
+
this.lastOutcomeSoundKey = undefined;
|
|
64868
64878
|
this.game.set(this.tutorialMode() ? this.createTutorialGame() : createChessimalsGame(this.game().boardSize));
|
|
64869
64879
|
this.clearReview();
|
|
64870
64880
|
this.selectedPieceId.set(undefined);
|
|
@@ -65099,6 +65109,8 @@ class ChessimalsGameComponent {
|
|
|
65099
65109
|
const updated = applyChessimalsMove(game, move);
|
|
65100
65110
|
if (move.animal)
|
|
65101
65111
|
this.playMoveSound(move);
|
|
65112
|
+
if (updated.status === 'finished')
|
|
65113
|
+
this.playChessimalsOutcomeSound(updated);
|
|
65102
65114
|
this.animateMove(game, move, updated);
|
|
65103
65115
|
if (game.mode === 'online') {
|
|
65104
65116
|
this.moveSyncing.set(true);
|
|
@@ -65221,6 +65233,8 @@ class ChessimalsGameComponent {
|
|
|
65221
65233
|
this.botThinking.set(false);
|
|
65222
65234
|
if (move.animal)
|
|
65223
65235
|
this.playMoveSound(move, true);
|
|
65236
|
+
if (updated.status === 'finished')
|
|
65237
|
+
this.playChessimalsOutcomeSound(updated);
|
|
65224
65238
|
this.animateMove(game, move, updated);
|
|
65225
65239
|
if (!move.animal)
|
|
65226
65240
|
this.playMoveSound(move, true);
|
|
@@ -65315,6 +65329,10 @@ class ChessimalsGameComponent {
|
|
|
65315
65329
|
playChessimalsOutcomeSound(game = this.game()) {
|
|
65316
65330
|
if (game.status !== 'finished')
|
|
65317
65331
|
return;
|
|
65332
|
+
const key = `${game.id}:${game.status}:${game.winner ?? 'none'}:${game.winnerReason ?? 'none'}:${game.moveCount}`;
|
|
65333
|
+
if (this.lastOutcomeSoundKey === key)
|
|
65334
|
+
return;
|
|
65335
|
+
this.lastOutcomeSoundKey = key;
|
|
65318
65336
|
const winner = game.winner;
|
|
65319
65337
|
const side = this.currentPlayerSideForOutcome(game);
|
|
65320
65338
|
if (!winner || !side || winner === side) {
|
|
@@ -65938,6 +65956,7 @@ class ChessimalsGameComponent {
|
|
|
65938
65956
|
this.clearReview();
|
|
65939
65957
|
}
|
|
65940
65958
|
if (previous.status === 'finished' && state.status === 'in_progress') {
|
|
65959
|
+
this.lastOutcomeSoundKey = undefined;
|
|
65941
65960
|
this.selectedPieceId.set(undefined);
|
|
65942
65961
|
this.selectedAnimal.set(undefined);
|
|
65943
65962
|
this.movingPiece.set(undefined);
|