@annalib/anna-cognito-lib 0.2.9 → 0.3.2

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.
@@ -20,6 +20,9 @@ LoginConstant.passwordNotMatching = "The passwords do not match. Please try agai
20
20
  LoginConstant.userNamePasswordIncorrect = "Incorrect username or password";
21
21
  LoginConstant.userNotFound = "No registered user found";
22
22
  LoginConstant.loginAgain = LoginConstant.login + " again";
23
+ LoginConstant.firstTimeLoginUserTempPasswordMsg = "You are logging in for the first time. Kindly use the temporary password provided in the welcome email, to login to your account. ";
24
+ LoginConstant.tempPasswordExpiryError = "Temporary password has expired and must be reset by an administrator.";
25
+ LoginConstant.tempPasswordOnExpiryErrorMsg = "Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.";
23
26
  // verify OTP & set new password
24
27
  LoginConstant.verifyAndSetNewPasswordheading = "Enter " + LoginConstant.otp + " & set new password";
25
28
  LoginConstant.verifyAndSetNewPasswordMessage = "An " + LoginConstant.otp + " has been succesfully emailed to ";
@@ -31,6 +34,7 @@ LoginConstant.attempt = "Attempt";
31
34
  LoginConstant.attemptLimitExceeded = "You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.";
32
35
  LoginConstant.attemptMessage = " of 5. The OTP entered is incorrect. Please try again with the right one.";
33
36
  LoginConstant.sessionExpired = "The session has expired. Please try again.";
37
+ LoginConstant.sessionExpiredError = "Your session has expired. Please login again";
34
38
  // forgot password
35
39
  LoginConstant.forgotPasswordHeading = "Forgot your password?";
36
40
  LoginConstant.forgotPasswordMessage = "Please enter your username.";
@@ -43,4 +47,4 @@ LoginConstant.verifyAndSetNewPasswordUrl = "/verify-and-set-new-password";
43
47
  LoginConstant.loginPageUrl = "/login";
44
48
  LoginConstant.homePageUrl = "/home";
45
49
  LoginConstant.stationSettingUrl = "/station-settings";
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5Db25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9jb25zdGFudHMvbG9naW5Db25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTs7QUFDeEIsYUFBYTtBQUNHLHdCQUFVLEdBQUcscUJBQXFCLENBQUM7QUFDbkMsc0JBQVEsR0FBRyxVQUFVLENBQUM7QUFDdEIsNkJBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQUNyQyxtQkFBSyxHQUFHLE9BQU8sQ0FBQztBQUNoQixpQkFBRyxHQUFHLEtBQUssQ0FBQztBQUNaLDRCQUFjLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBRXhGLG1CQUFtQjtBQUNILG1DQUFxQixHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzFFLGtDQUFvQixHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNqRixpQ0FBbUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNuRCw4QkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMxQywwQkFBWSxHQUFHLGFBQWEsQ0FBQztBQUM3QiwwQkFBWSxHQUFHLGFBQWEsQ0FBQztBQUM3Qix1QkFBUyxHQUFHLGFBQWEsQ0FBQztBQUMxQiw4QkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxpQ0FBbUIsR0FBRywrQ0FBK0MsQ0FBQztBQUN0RSx1Q0FBeUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUM3RCwwQkFBWSxHQUFHLDBCQUEwQixDQUFDO0FBQzFDLHdCQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7QUFFNUQsZ0NBQWdDO0FBQ2hCLDRDQUE4QixHQUFHLFFBQVEsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLHFCQUFxQixDQUFDO0FBQ3RGLDRDQUE4QixHQUFHLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLG1DQUFtQyxDQUFDO0FBQ2pHLGdDQUFrQixHQUFHLDBCQUEwQixDQUFDO0FBQ2hELDJCQUFhLEdBQUcsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7QUFDbEQsc0JBQVEsR0FBRyxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQztBQUN4QyxvQkFBTSxHQUFHLFFBQVEsQ0FBQztBQUNsQixxQkFBTyxHQUFHLFNBQVMsQ0FBQztBQUNwQixrQ0FBb0IsR0FDaEMsOEZBQThGLENBQUM7QUFDbkYsNEJBQWMsR0FBRywyRUFBMkUsQ0FBQztBQUM3Riw0QkFBYyxHQUFHLDRDQUE0QyxDQUFDO0FBRTlFLGtCQUFrQjtBQUNGLG1DQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQ2hELG1DQUFxQixHQUFHLDZCQUE2QixDQUFDO0FBQ3RELGtDQUFvQixHQUFHLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0FBQ2xELGlDQUFtQixHQUFHLG9FQUFvRSxDQUFDO0FBRTNHLEtBQUs7QUFDVywrQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN4QyxvQ0FBc0IsR0FBRyxrQkFBa0IsQ0FBQztBQUM1Qyx3Q0FBMEIsR0FBRyw4QkFBOEIsQ0FBQztBQUM1RCwwQkFBWSxHQUFHLFFBQVEsQ0FBQztBQUN4Qix5QkFBVyxHQUFHLE9BQU8sQ0FBQztBQUN0QiwrQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMb2dpbkNvbnN0YW50IHtcclxuICAvLyBMb2dpbiBwYWdlXHJcbiAgc3RhdGljIHJlYWRvbmx5IGVudGVyRW1haWwgPSBcIkVudGVyIHlvdXIgdXNlcm5hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcGFzc3dvcmQgPSBcIlBhc3N3b3JkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpcm1QYXNzd29yZCA9IFwiQ29uZmlybSBQYXNzd29yZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBsb2dpbiA9IFwiTG9naW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgb3RwID0gXCJPVFBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmQgPSBcIkZvcmdvdCBcIiArIExvZ2luQ29uc3RhbnQucGFzc3dvcmQudG9Mb3dlckNhc2UoKSArIFwiP1wiO1xyXG5cclxuICAvLyBzZXQgbmV3IHBhc3N3b3JkXHJcbiAgc3RhdGljIHJlYWRvbmx5IHNldE5ld1Bhc3N3b3JkSGVhZGluZyA9IFwiU2V0IG5ldyBcIiArIExvZ2luQ29uc3RhbnQucGFzc3dvcmQudG9Mb3dlckNhc2UoKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgc2V0TmV3UGFzc3dvcmRCdXR0b24gPSBcIlNldCBhbmQgXCIgKyBMb2dpbkNvbnN0YW50LmxvZ2luLnRvTG93ZXJDYXNlKCkgKyBcIiBhZ2FpblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBwYXNzd29yZE11c3RDb250YWluID0gXCJUaGUgcGFzc3dvcmQgbXVzdCBjb250YWluOlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBtaW5pbXVtQ2hhcmFjdGVyID0gXCJNaW5pbXVtIDggY2hhcmFjdGVyc1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBvbmVVcHBlcmNhc2UgPSBcIjEgVXBwZXJjYXNlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IG9uZUxvd2VyY2FzZSA9IFwiMSBMb3dlcmNhc2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgb25lTnVtYmVyID0gXCIxIE51bWVyaWNhbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBzcGVjaWFsQ2hhcmFjdGVyID0gXCIxIFNwZWNpYWwgY2hhcmFjdGVyXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IHBhc3N3b3JkTm90TWF0Y2hpbmcgPSBcIlRoZSBwYXNzd29yZHMgZG8gbm90IG1hdGNoLiBQbGVhc2UgdHJ5IGFnYWluLlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSB1c2VyTmFtZVBhc3N3b3JkSW5jb3JyZWN0ID0gXCJJbmNvcnJlY3QgdXNlcm5hbWUgb3IgcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdXNlck5vdEZvdW5kID0gXCJObyByZWdpc3RlcmVkIHVzZXIgZm91bmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgbG9naW5BZ2FpbiA9IExvZ2luQ29uc3RhbnQubG9naW4gKyBcIiBhZ2FpblwiO1xyXG5cclxuICAvLyB2ZXJpZnkgT1RQICYgc2V0IG5ldyBwYXNzd29yZFxyXG4gIHN0YXRpYyByZWFkb25seSB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZGhlYWRpbmcgPSBcIkVudGVyIFwiICsgTG9naW5Db25zdGFudC5vdHAgKyBcIiAmIHNldCBuZXcgcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlID0gXCJBbiBcIiArIExvZ2luQ29uc3RhbnQub3RwICsgXCIgaGFzIGJlZW4gc3VjY2VzZnVsbHkgZW1haWxlZCB0byBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcGxlYXNlRW50ZXJJdEJlbG93ID0gXCIuIFBsZWFzZSBlbnRlciBpdCBiZWxvdy5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcmVnZW5lcmF0ZU90cCA9IFwiUmVnZW5lcmF0ZSBcIiArIExvZ2luQ29uc3RhbnQub3RwO1xyXG4gIHN0YXRpYyByZWFkb25seSBlbnRlck90cCA9IFwiRW50ZXIgXCIgKyBMb2dpbkNvbnN0YW50Lm90cDtcclxuICBzdGF0aWMgcmVhZG9ubHkgc3VibWl0ID0gXCJTdWJtaXRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgYXR0ZW1wdCA9IFwiQXR0ZW1wdFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBhdHRlbXB0TGltaXRFeGNlZWRlZCA9XHJcbiAgICAgIFwiWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgYXR0ZW1wdHMuIFBsZWFzZSB0cnkgYWdhaW4gYWZ0ZXIgMTUgbWludXRlcy5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgYXR0ZW1wdE1lc3NhZ2UgPSBcIiBvZiA1LiBUaGUgT1RQIGVudGVyZWQgaXMgaW5jb3JyZWN0LiBQbGVhc2UgdHJ5IGFnYWluIHdpdGggdGhlIHJpZ2h0IG9uZS5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgc2Vzc2lvbkV4cGlyZWQgPSBcIlRoZSBzZXNzaW9uIGhhcyBleHBpcmVkLiBQbGVhc2UgdHJ5IGFnYWluLlwiO1xyXG5cclxuICAvLyBmb3Jnb3QgcGFzc3dvcmRcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRIZWFkaW5nID0gXCJGb3Jnb3QgeW91ciBwYXNzd29yZD9cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRNZXNzYWdlID0gXCJQbGVhc2UgZW50ZXIgeW91ciB1c2VybmFtZS5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRCdXR0b24gPSBcIkdldCBcIiArIExvZ2luQ29uc3RhbnQub3RwO1xyXG4gIHN0YXRpYyByZWFkb25seSBhcGlGYWlsRXJyb3JNZXNzYWdlID0gXCJVbmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXIgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFmdGVyIHNvbWUgdGltZS5cIjtcclxuXHJcbiAgLy91cmxcclxuICBzdGF0aWMgcmVhZG9ubHkgc2V0TmV3UGFzc3dvcmRVcmwgPSBcIi9zZXQtbmV3LXBhc3N3b3JkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGZvcmdvcnRQYXNzd29yZFBhZ2VVcmwgPSBcIi9mb3Jnb3QtcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmwgPSBcIi92ZXJpZnktYW5kLXNldC1uZXctcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgbG9naW5QYWdlVXJsID0gXCIvbG9naW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgaG9tZVBhZ2VVcmwgPSBcIi9ob21lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IHN0YXRpb25TZXR0aW5nVXJsID0gXCIvc3RhdGlvbi1zZXR0aW5nc1wiO1xyXG59XHJcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW5Db25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9jb25zdGFudHMvbG9naW5Db25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTs7QUFDeEIsYUFBYTtBQUNHLHdCQUFVLEdBQUcscUJBQXFCLENBQUM7QUFDbkMsc0JBQVEsR0FBRyxVQUFVLENBQUM7QUFDdEIsNkJBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQUNyQyxtQkFBSyxHQUFHLE9BQU8sQ0FBQztBQUNoQixpQkFBRyxHQUFHLEtBQUssQ0FBQztBQUNaLDRCQUFjLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBRXhGLG1CQUFtQjtBQUNILG1DQUFxQixHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzFFLGtDQUFvQixHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNqRixpQ0FBbUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNuRCw4QkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMxQywwQkFBWSxHQUFHLGFBQWEsQ0FBQztBQUM3QiwwQkFBWSxHQUFHLGFBQWEsQ0FBQztBQUM3Qix1QkFBUyxHQUFHLGFBQWEsQ0FBQztBQUMxQiw4QkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxpQ0FBbUIsR0FBRywrQ0FBK0MsQ0FBQztBQUN0RSx1Q0FBeUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUM3RCwwQkFBWSxHQUFHLDBCQUEwQixDQUFDO0FBQzFDLHdCQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDNUMsK0NBQWlDLEdBQUcsb0lBQW9JLENBQUM7QUFDeksscUNBQXVCLEdBQUcsdUVBQXVFLENBQUE7QUFDakcsMENBQTRCLEdBQUcsZ0lBQWdJLENBQUM7QUFFaEwsZ0NBQWdDO0FBQ2hCLDRDQUE4QixHQUFHLFFBQVEsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLHFCQUFxQixDQUFDO0FBQ3RGLDRDQUE4QixHQUFHLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLG1DQUFtQyxDQUFDO0FBQ2pHLGdDQUFrQixHQUFHLDBCQUEwQixDQUFDO0FBQ2hELDJCQUFhLEdBQUcsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7QUFDbEQsc0JBQVEsR0FBRyxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQztBQUN4QyxvQkFBTSxHQUFHLFFBQVEsQ0FBQztBQUNsQixxQkFBTyxHQUFHLFNBQVMsQ0FBQztBQUNwQixrQ0FBb0IsR0FDaEMsOEZBQThGLENBQUM7QUFDbkYsNEJBQWMsR0FBRywyRUFBMkUsQ0FBQztBQUM3Riw0QkFBYyxHQUFHLDRDQUE0QyxDQUFDO0FBQzlELGlDQUFtQixHQUFHLDhDQUE4QyxDQUFDO0FBRXJGLGtCQUFrQjtBQUNGLG1DQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQ2hELG1DQUFxQixHQUFHLDZCQUE2QixDQUFDO0FBQ3RELGtDQUFvQixHQUFHLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0FBQ2xELGlDQUFtQixHQUFHLG9FQUFvRSxDQUFDO0FBRTNHLEtBQUs7QUFDVywrQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN4QyxvQ0FBc0IsR0FBRyxrQkFBa0IsQ0FBQztBQUM1Qyx3Q0FBMEIsR0FBRyw4QkFBOEIsQ0FBQztBQUM1RCwwQkFBWSxHQUFHLFFBQVEsQ0FBQztBQUN4Qix5QkFBVyxHQUFHLE9BQU8sQ0FBQztBQUN0QiwrQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMb2dpbkNvbnN0YW50IHtcclxuICAvLyBMb2dpbiBwYWdlXHJcbiAgc3RhdGljIHJlYWRvbmx5IGVudGVyRW1haWwgPSBcIkVudGVyIHlvdXIgdXNlcm5hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcGFzc3dvcmQgPSBcIlBhc3N3b3JkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpcm1QYXNzd29yZCA9IFwiQ29uZmlybSBQYXNzd29yZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBsb2dpbiA9IFwiTG9naW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgb3RwID0gXCJPVFBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmQgPSBcIkZvcmdvdCBcIiArIExvZ2luQ29uc3RhbnQucGFzc3dvcmQudG9Mb3dlckNhc2UoKSArIFwiP1wiO1xyXG5cclxuICAvLyBzZXQgbmV3IHBhc3N3b3JkXHJcbiAgc3RhdGljIHJlYWRvbmx5IHNldE5ld1Bhc3N3b3JkSGVhZGluZyA9IFwiU2V0IG5ldyBcIiArIExvZ2luQ29uc3RhbnQucGFzc3dvcmQudG9Mb3dlckNhc2UoKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgc2V0TmV3UGFzc3dvcmRCdXR0b24gPSBcIlNldCBhbmQgXCIgKyBMb2dpbkNvbnN0YW50LmxvZ2luLnRvTG93ZXJDYXNlKCkgKyBcIiBhZ2FpblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBwYXNzd29yZE11c3RDb250YWluID0gXCJUaGUgcGFzc3dvcmQgbXVzdCBjb250YWluOlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBtaW5pbXVtQ2hhcmFjdGVyID0gXCJNaW5pbXVtIDggY2hhcmFjdGVyc1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBvbmVVcHBlcmNhc2UgPSBcIjEgVXBwZXJjYXNlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IG9uZUxvd2VyY2FzZSA9IFwiMSBMb3dlcmNhc2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgb25lTnVtYmVyID0gXCIxIE51bWVyaWNhbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBzcGVjaWFsQ2hhcmFjdGVyID0gXCIxIFNwZWNpYWwgY2hhcmFjdGVyXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IHBhc3N3b3JkTm90TWF0Y2hpbmcgPSBcIlRoZSBwYXNzd29yZHMgZG8gbm90IG1hdGNoLiBQbGVhc2UgdHJ5IGFnYWluLlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSB1c2VyTmFtZVBhc3N3b3JkSW5jb3JyZWN0ID0gXCJJbmNvcnJlY3QgdXNlcm5hbWUgb3IgcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdXNlck5vdEZvdW5kID0gXCJObyByZWdpc3RlcmVkIHVzZXIgZm91bmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgbG9naW5BZ2FpbiA9IExvZ2luQ29uc3RhbnQubG9naW4gKyBcIiBhZ2FpblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBmaXJzdFRpbWVMb2dpblVzZXJUZW1wUGFzc3dvcmRNc2cgPSBcIllvdSBhcmUgbG9nZ2luZyBpbiBmb3IgdGhlIGZpcnN0IHRpbWUuIEtpbmRseSB1c2UgdGhlIHRlbXBvcmFyeSBwYXNzd29yZCBwcm92aWRlZCBpbiB0aGUgd2VsY29tZSBlbWFpbCwgdG8gbG9naW4gdG8geW91ciBhY2NvdW50LiBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdGVtcFBhc3N3b3JkRXhwaXJ5RXJyb3IgPSBcIlRlbXBvcmFyeSBwYXNzd29yZCBoYXMgZXhwaXJlZCBhbmQgbXVzdCBiZSByZXNldCBieSBhbiBhZG1pbmlzdHJhdG9yLlwiXHJcbiAgc3RhdGljIHJlYWRvbmx5IHRlbXBQYXNzd29yZE9uRXhwaXJ5RXJyb3JNc2cgPSBcIlBhc3N3b3JkIGhhcyBleHBpcmVkLiBBIG5ldyBwYXNzd29yZCBoYXMgYmVlbiBzZW50IHRvIHlvdXIgcmVnaXN0ZXJlZCBlbWFpbC4gS2luZGx5IGxvZ2luIGFnYWluIHdpdGggbmV3IGxpbmsgYW5kIGNyZWRlbnRpYWxzLlwiO1xyXG5cclxuICAvLyB2ZXJpZnkgT1RQICYgc2V0IG5ldyBwYXNzd29yZFxyXG4gIHN0YXRpYyByZWFkb25seSB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZGhlYWRpbmcgPSBcIkVudGVyIFwiICsgTG9naW5Db25zdGFudC5vdHAgKyBcIiAmIHNldCBuZXcgcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlID0gXCJBbiBcIiArIExvZ2luQ29uc3RhbnQub3RwICsgXCIgaGFzIGJlZW4gc3VjY2VzZnVsbHkgZW1haWxlZCB0byBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcGxlYXNlRW50ZXJJdEJlbG93ID0gXCIuIFBsZWFzZSBlbnRlciBpdCBiZWxvdy5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgcmVnZW5lcmF0ZU90cCA9IFwiUmVnZW5lcmF0ZSBcIiArIExvZ2luQ29uc3RhbnQub3RwO1xyXG4gIHN0YXRpYyByZWFkb25seSBlbnRlck90cCA9IFwiRW50ZXIgXCIgKyBMb2dpbkNvbnN0YW50Lm90cDtcclxuICBzdGF0aWMgcmVhZG9ubHkgc3VibWl0ID0gXCJTdWJtaXRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgYXR0ZW1wdCA9IFwiQXR0ZW1wdFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBhdHRlbXB0TGltaXRFeGNlZWRlZCA9XHJcbiAgICAgIFwiWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgYXR0ZW1wdHMuIFBsZWFzZSB0cnkgYWdhaW4gYWZ0ZXIgMTUgbWludXRlcy5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgYXR0ZW1wdE1lc3NhZ2UgPSBcIiBvZiA1LiBUaGUgT1RQIGVudGVyZWQgaXMgaW5jb3JyZWN0LiBQbGVhc2UgdHJ5IGFnYWluIHdpdGggdGhlIHJpZ2h0IG9uZS5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgc2Vzc2lvbkV4cGlyZWQgPSBcIlRoZSBzZXNzaW9uIGhhcyBleHBpcmVkLiBQbGVhc2UgdHJ5IGFnYWluLlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBzZXNzaW9uRXhwaXJlZEVycm9yID0gXCJZb3VyIHNlc3Npb24gaGFzIGV4cGlyZWQuIFBsZWFzZSBsb2dpbiBhZ2FpblwiO1xyXG5cclxuICAvLyBmb3Jnb3QgcGFzc3dvcmRcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRIZWFkaW5nID0gXCJGb3Jnb3QgeW91ciBwYXNzd29yZD9cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRNZXNzYWdlID0gXCJQbGVhc2UgZW50ZXIgeW91ciB1c2VybmFtZS5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmRCdXR0b24gPSBcIkdldCBcIiArIExvZ2luQ29uc3RhbnQub3RwO1xyXG4gIHN0YXRpYyByZWFkb25seSBhcGlGYWlsRXJyb3JNZXNzYWdlID0gXCJVbmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXIgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFmdGVyIHNvbWUgdGltZS5cIjtcclxuXHJcbiAgLy91cmxcclxuICBzdGF0aWMgcmVhZG9ubHkgc2V0TmV3UGFzc3dvcmRVcmwgPSBcIi9zZXQtbmV3LXBhc3N3b3JkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGZvcmdvcnRQYXNzd29yZFBhZ2VVcmwgPSBcIi9mb3Jnb3QtcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmwgPSBcIi92ZXJpZnktYW5kLXNldC1uZXctcGFzc3dvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgbG9naW5QYWdlVXJsID0gXCIvbG9naW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgaG9tZVBhZ2VVcmwgPSBcIi9ob21lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IHN0YXRpb25TZXR0aW5nVXJsID0gXCIvc3RhdGlvbi1zZXR0aW5nc1wiO1xyXG59XHJcbiJdfQ==
@@ -15,4 +15,10 @@ export class UsernameInfo {
15
15
  this.isUsernameAvailable = object.isUsernameAvailable;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9tb2RlbHMvYXV0aC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQVksUUFBZ0IsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQVksVUFBa0IsRUFBRSxRQUFnQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFZLE1BQXdDO1FBQ2hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDMUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uRGF0YSB7XHJcbiAgVXNlcm5hbWU6IHN0cmluZztcclxuICBQYXNzd29yZDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFVzZXJuYW1lOiBzdHJpbmcsIFBhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5Vc2VybmFtZSA9IFVzZXJuYW1lO1xyXG4gICAgICB0aGlzLlBhc3N3b3JkID0gUGFzc3dvcmQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlclBvb2xJbmZvcm1hdGlvbiB7XHJcbiAgVXNlclBvb2xJZDogc3RyaW5nO1xyXG4gIENsaWVudElkOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoVXNlclBvb2xJZDogc3RyaW5nLCBDbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuVXNlclBvb2xJZCA9IFVzZXJQb29sSWQ7XHJcbiAgICAgIHRoaXMuQ2xpZW50SWQgPSBDbGllbnRJZDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VybmFtZUluZm8ge1xyXG4gIGlzVXNlcm5hbWVBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3Iob2JqZWN0OiB7IGlzVXNlcm5hbWVBdmFpbGFibGU6IGJvb2xlYW4gfSkge1xyXG4gICAgICB0aGlzLmlzVXNlcm5hbWVBdmFpbGFibGUgPSBvYmplY3QuaXNVc2VybmFtZUF2YWlsYWJsZTtcclxuICB9XHJcbn0iXX0=
18
+ export class UserState {
19
+ constructor(userState) {
20
+ this.userStatus = userState;
21
+ this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9tb2RlbHMvYXV0aC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQVksUUFBZ0IsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQVksVUFBa0IsRUFBRSxRQUFnQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFZLE1BQXdDO1FBQ2hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBWSxTQUFpQjtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxJQUFJLHVCQUF1QixDQUFDO0lBQ3ZFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkRhdGEge1xyXG4gIFVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgUGFzc3dvcmQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihVc2VybmFtZTogc3RyaW5nLCBQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuVXNlcm5hbWUgPSBVc2VybmFtZTtcclxuICAgICAgdGhpcy5QYXNzd29yZCA9IFBhc3N3b3JkO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJQb29sSW5mb3JtYXRpb24ge1xyXG4gIFVzZXJQb29sSWQ6IHN0cmluZztcclxuICBDbGllbnRJZDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFVzZXJQb29sSWQ6IHN0cmluZywgQ2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgICB0aGlzLlVzZXJQb29sSWQgPSBVc2VyUG9vbElkO1xyXG4gICAgICB0aGlzLkNsaWVudElkID0gQ2xpZW50SWQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlcm5hbWVJbmZvIHtcclxuICBpc1VzZXJuYW1lQXZhaWxhYmxlOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKG9iamVjdDogeyBpc1VzZXJuYW1lQXZhaWxhYmxlOiBib29sZWFuIH0pIHtcclxuICAgICAgdGhpcy5pc1VzZXJuYW1lQXZhaWxhYmxlID0gb2JqZWN0LmlzVXNlcm5hbWVBdmFpbGFibGU7XHJcbiAgfVxyXG59IFxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJTdGF0ZSB7XHJcbiAgdXNlclN0YXR1czogc3RyaW5nO1xyXG4gIGlzVXNlcldpdGhUZW1wUGFzc3dvcmQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IodXNlclN0YXRlOiBzdHJpbmcgKSB7XHJcbiAgICAgIHRoaXMudXNlclN0YXR1cyA9IHVzZXJTdGF0ZTtcclxuICAgICAgdGhpcy5pc1VzZXJXaXRoVGVtcFBhc3N3b3JkID0gdXNlclN0YXRlID09ICdGT1JDRV9DSEFOR0VfUEFTU1dPUkQnO1xyXG4gIH1cclxufSJdfQ==
@@ -10,17 +10,20 @@ import { AuthenticationData, UserPoolInformation } from "../models/auth.model";
10
10
  import { AnnaLibAclService } from './acl.service';
11
11
  import { LibraryConfig } from '../config/library.config';
12
12
  import { AUTH_SERVICE_TOKEN } from '../config/auth-service.token';
13
+ import { ToastrService } from 'ngx-toastr';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "@angular/router";
15
16
  import * as i2 from "./acl.service";
16
17
  import * as i3 from "../config/library.config";
17
18
  import * as i4 from "@angular/common/http";
19
+ import * as i5 from "ngx-toastr";
18
20
  export class AnnaLibAuthService {
19
- constructor(router, aclService, libraryConfig, httpClient, consumingProjectAuthService) {
21
+ constructor(router, aclService, libraryConfig, httpClient, toastr, consumingProjectAuthService) {
20
22
  this.router = router;
21
23
  this.aclService = aclService;
22
24
  this.libraryConfig = libraryConfig;
23
25
  this.httpClient = httpClient;
26
+ this.toastr = toastr;
24
27
  this.consumingProjectAuthService = consumingProjectAuthService;
25
28
  this.noOfAttempts = 0;
26
29
  this.sessionLocked = false;
@@ -44,6 +47,7 @@ export class AnnaLibAuthService {
44
47
  resolve(true);
45
48
  }
46
49
  else {
50
+ this.toastr.error(LoginConstant.sessionExpiredError);
47
51
  this.sessionTimeout();
48
52
  resolve(false);
49
53
  }
@@ -86,6 +90,7 @@ export class AnnaLibAuthService {
86
90
  this.refreshAccessToken();
87
91
  }
88
92
  else if (error.code === "NotAuthorizedException") {
93
+ this.toastr.error(LoginConstant.sessionExpiredError);
89
94
  this.sessionTimeout();
90
95
  }
91
96
  });
@@ -128,8 +133,8 @@ export class AnnaLibAuthService {
128
133
  },
129
134
  onFailure: (err) => {
130
135
  this.consumingProjectAuthService.isLoggingIn = false;
131
- if (err.message === "Temporary password has expired and must be reset by an administrator.") {
132
- this.loginErrorMessage = "Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.";
136
+ if (err.message == LoginConstant.tempPasswordExpiryError) {
137
+ this.loginErrorMessage = LoginConstant.tempPasswordOnExpiryErrorMsg;
133
138
  this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());
134
139
  }
135
140
  else if (err.message === "Password attempts exceeded") {
@@ -179,9 +184,10 @@ export class AnnaLibAuthService {
179
184
  onFailure: (error) => {
180
185
  this.noOfAttempts = this.noOfAttempts + 1;
181
186
  this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);
187
+ this.forgotPasswordAndGlobalSignoutLoader = false;
182
188
  },
183
189
  onSuccess: () => {
184
- this.router.navigate([LoginConstant.loginPageUrl]);
190
+ this.expiryAllExistingCurrentSession(newPassword);
185
191
  },
186
192
  });
187
193
  }
@@ -211,16 +217,47 @@ export class AnnaLibAuthService {
211
217
  this.aclService.userGroupsInCognitoJWT = [];
212
218
  }
213
219
  }
220
+ expiryAllExistingCurrentSession(newPassword) {
221
+ let username = this.cognitoUser.getUsername();
222
+ this.setUserDetails(username, newPassword);
223
+ this.onLoginInCogntioToGetAccessToken();
224
+ }
225
+ setUserDetails(username, newPassword) {
226
+ this.loginErrorMessage = null;
227
+ let authData = new AuthenticationData(username, newPassword);
228
+ this.authenticationDetails = new AuthenticationDetails(authData);
229
+ this.cognitoUser = this.getCognitoUserDetails(username);
230
+ }
231
+ onLoginInCogntioToGetAccessToken() {
232
+ this.cognitoUser.authenticateUser(this.authenticationDetails, {
233
+ onSuccess: async (result) => {
234
+ this.getAllCognitoTokenAndGroups(result);
235
+ this.onCallGlobalSignout();
236
+ },
237
+ onFailure: (err) => { },
238
+ newPasswordRequired: (data) => { },
239
+ });
240
+ }
241
+ onCallGlobalSignout() {
242
+ this.cognitoUser.globalSignOut({
243
+ onSuccess: (result) => {
244
+ console.log(result);
245
+ this.forgotPasswordAndGlobalSignoutLoader = false;
246
+ this.router.navigate([LoginConstant.loginPageUrl]);
247
+ },
248
+ onFailure: (err) => { }
249
+ });
250
+ }
214
251
  }
215
- AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i1.Router }, { token: i2.AnnaLibAclService }, { token: i3.LibraryConfig }, { token: i4.HttpClient }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
252
+ AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i1.Router }, { token: i2.AnnaLibAclService }, { token: i3.LibraryConfig }, { token: i4.HttpClient }, { token: i5.ToastrService }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
216
253
  AnnaLibAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, providedIn: "root" });
217
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, decorators: [{
218
255
  type: Injectable,
219
256
  args: [{
220
257
  providedIn: "root",
221
258
  }]
222
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AnnaLibAclService }, { type: i3.LibraryConfig }, { type: i4.HttpClient }, { type: undefined, decorators: [{
259
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AnnaLibAclService }, { type: i3.LibraryConfig }, { type: i4.HttpClient }, { type: i5.ToastrService }, { type: undefined, decorators: [{
223
260
  type: Inject,
224
261
  args: [AUTH_SERVICE_TOKEN]
225
262
  }] }]; } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFFckgsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBS2hGLE1BQU0sT0FBTyxrQkFBa0I7SUFvQjNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLGFBQTRCLEVBQzVCLFVBQXFCLEVBQ08sMkJBQXlDO1FBSnBFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ08sZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFjO1FBWGhGLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtC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QkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb2duaXRvVXNlclBvb2wsIENvZ25pdG9Vc2VyLCBBdXRoZW50aWNhdGlvbkRldGFpbHMsIENvZ25pdG9Vc2VyU2Vzc2lvbiB9IGZyb20gXCJhbWF6b24tY29nbml0by1pZGVudGl0eS1qc1wiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xvZ2luQ29uc3RhbnRcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25EYXRhLCBVc2VyUG9vbEluZm9ybWF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9hdXRoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFubmFMaWJBY2xTZXJ2aWNlIH0gZnJvbSAnLi9hY2wuc2VydmljZSc7XHJcbmltcG9ydCB7IExpYnJhcnlDb25maWcgfSBmcm9tICcuLi9jb25maWcvbGlicmFyeS5jb25maWcnO1xyXG5pbXBvcnQgeyBJQXV0aFNlcnZpY2UsIEFVVEhfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQXV0aFNlcnZpY2UgIHtcclxuICAgIHBvb2xEYXRhOiBVc2VyUG9vbEluZm9ybWF0aW9uO1xyXG4gICAgdXNlclBvb2w6IENvZ25pdG9Vc2VyUG9vbDtcclxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcjtcclxuICAgIGF1dGhlbnRpY2F0aW9uRGV0YWlsczogQXV0aGVudGljYXRpb25EZXRhaWxzO1xyXG4gICAgdG9rZW5WYWxpZDogYm9vbGVhbjtcclxuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgICB1c2VyQXR0cmlidXRlOiBhbnk7XHJcbiAgICBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIHNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBzZXROZXdQYXNzd29yZEJ1dHRvbk1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uOiBzdHJpbmc7XHJcbiAgICBub09mQXR0ZW1wdHMgPSAwO1xyXG4gICAgc2Vzc2lvbkxvY2tlZCA9IGZhbHNlO1xyXG4gICAgdXNlck5hbWU6IGFueTtcclxuICAgIGFjY2Vzc1Rva2VuVGltZXJJZDogYW55O1xyXG4gICAgSWRUb2tlbjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHVibGljIGFjbFNlcnZpY2U6IEFubmFMaWJBY2xTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBsaWJyYXJ5Q29uZmlnOiBMaWJyYXJ5Q29uZmlnLFxyXG4gICAgICAgIHB1YmxpYyBodHRwQ2xpZW50Okh0dHBDbGllbnQsXHJcbiAgICAgICAgQEluamVjdChBVVRIX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2U6IElBdXRoU2VydmljZSkge1xyXG4gICAgICAgICAgaWYoIWNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBhdXRoU2VydmljZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgLyoqKlxyXG4gICAxLiB0YWtlcyB1c2VyIHBvb2wgZGF0YSAodXNlclBvb2wgSUQgYW5kIGNsaWVudCBJRClcclxuICAgMi4gaWYgY3VycmVudCB1c2VyIGlzIG51bGwgdGhlbiBpdCBtZWFucyB1c2VyIGFscmVhZHkgbG9nZ2VkIG91dCB0aGVuIHNpbXBseSByZXR1cm4gUHJvbWlzZTxmYWxzZT5cclxuICAgMy4gaWYgY3VycmVudCB1c2VyIHByZXNlbnQgY2hlY2sgaWYgdG9rZW4gaXMgdmFsaWQgZm9yIGl0LlxyXG4gKi9cclxuICAgIGlzVXNlckxvZ2dlZEluKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXJEZXRhaWxzKCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRVc2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFVzZXIgJiYgY3VycmVudFVzZXIuZ2V0U2Vzc2lvbigoZXJyb3I6IEVycm9yLCB0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uVGltZW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblRpbWVvdXQoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaEFjY2Vzc1Rva2VuKCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXJEZXRhaWxzKCk7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuRXhwaXJhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIpO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gYWNjZXNzVG9rZW5FeHBpcmF0aW9uID8gcGFyc2VJbnQoYWNjZXNzVG9rZW5FeHBpcmF0aW9uKSA6IDA7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudGVyID0gMTAwMDtcclxuICAgICAgICAgICAgbGV0IGRlbGF5RnVuY3Rpb24gPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJyZW50VXNlciAmJiBjdXJyZW50VXNlci5nZXRTZXNzaW9uKChlcnJvcjogYW55LCB0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdFeHBUaW1lID0gdGhpcy5jb21wdXRlVG9rZW5FeHBpcmF0aW9uKHRoaXMuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLmNvZGUgPT09IFwiTm90QXV0aG9yaXplZEV4Y2VwdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgY291bnRlcik7XHJcbiAgICAgICAgfSwgZXhwVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcHV0ZVRva2VuRXhwaXJhdGlvbih0b2tlbjogYW55KSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgbGV0IHRva2VuVGltZSA9IHRva2VuLnBheWxvYWQuZXhwO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gKHRva2VuVGltZSAtIGN1cnJlbnRUaW1lKSAqIDEwMDA7XHJcbiAgICAgICAgcmV0dXJuIGV4cFRpbWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEN1cnJlbnRVc2VyRGV0YWlscygpIHtcclxuICAgICAgICBsZXQgcG9vbERhdGEgPSBuZXcgVXNlclBvb2xJbmZvcm1hdGlvbih0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by51c2VyUG9vbElkLCB0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by5jbGllbnRJZCk7XHJcbiAgICAgICAgbGV0IHVzZXJQb29sID0gbmV3IENvZ25pdG9Vc2VyUG9vbChwb29sRGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29nbml0b1VzZXJEZXRhaWxzKGVtYWlsOiBzdHJpbmcpOiBDb2duaXRvVXNlciB7XHJcbiAgICAgICAgdGhpcy5wb29sRGF0YSA9IG5ldyBVc2VyUG9vbEluZm9ybWF0aW9uKHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLnVzZXJQb29sSWQsIHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLmNsaWVudElkKTtcclxuICAgICAgICB0aGlzLnVzZXJQb29sID0gbmV3IENvZ25pdG9Vc2VyUG9vbCh0aGlzLnBvb2xEYXRhKTtcclxuXHJcbiAgICAgICAgbGV0IHVzZXJEYXRhID0ge1xyXG4gICAgICAgICAgICBVc2VybmFtZTogZW1haWwsXHJcbiAgICAgICAgICAgIFBvb2w6IHRoaXMudXNlclBvb2wsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgY29nbml0b1VzZXIgPSBuZXcgQ29nbml0b1VzZXIodXNlckRhdGEpO1xyXG4gICAgICAgIHJldHVybiBjb2duaXRvVXNlcjtcclxuICAgIH1cclxuXHJcbiAgICBhdXRoZW50aWNhdGUoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIGxldCBhdXRoRGF0YSA9IG5ldyBBdXRoZW50aWNhdGlvbkRhdGEoZW1haWwsIHBhc3N3b3JkKTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uRGV0YWlscyA9IG5ldyBBdXRoZW50aWNhdGlvbkRldGFpbHMoYXV0aERhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyID0gdGhpcy5nZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWwpO1xyXG4gICAgICAgIHRoaXMuQ29nbml0b0F1dGhlbnRpY2F0aW9uKHRoaXMuYXV0aGVudGljYXRpb25EZXRhaWxzKTtcclxuICAgIH1cclxuXHJcbiAgICBDb2duaXRvQXV0aGVudGljYXRpb24oYXV0aGVudGljYXRpb25EZXRhaWxzOiBBdXRoZW50aWNhdGlvbkRldGFpbHMpIHtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyLmF1dGhlbnRpY2F0ZVVzZXIoYXV0aGVudGljYXRpb25EZXRhaWxzLCB7XHJcbiAgICAgICAgICAgIG9uU3VjY2VzczogYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHMocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihyZXN1bHQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmlzTG9nZ2luZ0luID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgPT09IFwiVGVtcG9yYXJ5IHBhc3N3b3JkIGhhcyBleHBpcmVkIGFuZCBtdXN0IGJlIHJlc2V0IGJ5IGFuIGFkbWluaXN0cmF0b3IuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gXCJQYXNzd29yZCBoYXMgZXhwaXJlZC4gQSBuZXcgcGFzc3dvcmQgaGFzIGJlZW4gc2VudCB0byB5b3VyIHJlZ2lzdGVyZWQgZW1haWwuIEtpbmRseSBsb2dpbiBhZ2FpbiB3aXRoIG5ldyBsaW5rIGFuZCBjcmVkZW50aWFscy5cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zZW5kUmVnZW5lcmF0aW9uRW1haWwodGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMuZ2V0VXNlcm5hbWUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gXCJQYXNzd29yZCBhdHRlbXB0cyBleGNlZWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnVzZXJOYW1lUGFzc3dvcmRJbmNvcnJlY3Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkUmVxdWlyZWQ6IChkYXRhOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlckF0dHJpYnV0ZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5zZXROZXdQYXNzd29yZFVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgc2V0TmV3UGFzc3dvcmQobmV3UGFzc3dvcmQ6IGFueSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnVzZXJBdHRyaWJ1dGUuZW1haWw7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudXNlckF0dHJpYnV0ZS5lbWFpbF92ZXJpZmllZDtcclxuICAgICAgICBkZWxldGUgdGhpcy51c2VyQXR0cmlidXRlLnBob25lX251bWJlcl92ZXJpZmllZDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyLmNvbXBsZXRlTmV3UGFzc3dvcmRDaGFsbGVuZ2UobmV3UGFzc3dvcmQsIHRoaXMudXNlckF0dHJpYnV0ZSwge1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LmxvZ2luUGFnZVVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkQnV0dG9uTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQubG9naW5BZ2FpbjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSBlbWFpbDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyID0gdGhpcy5nZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWwpO1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuZm9yZ290UGFzc3dvcmQoe1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlID1cclxuICAgICAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkNvZGVEZWxpdmVyeURldGFpbHMuRGVzdGluYXRpb24gK1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQucGxlYXNlRW50ZXJJdEJlbG93O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyKSA9PiB7fSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2ZXJpZnlDb2RlKHZlcmlmaWNhdGlvbkNvZGU6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuY29uZmlybVBhc3N3b3JkKHZlcmlmaWNhdGlvbkNvZGUsIG5ld1Bhc3N3b3JkLCB7XHJcbiAgICAgICAgICAgIG9uRmFpbHVyZTogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyb3IsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3Jnb3RQYXNzd29yZEVycm9yKGVycjogYW55LCBub09mQXR0ZW1wdHM6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgc3dpdGNoIChlcnIuY29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiTGltaXRFeGNlZWRlZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uTG9ja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIkV4cGlyZWRDb2RlRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbiA9IExvZ2luQ29uc3RhbnQucmVnZW5lcmF0ZU90cDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0ICsgXCIgXCIgKyBub09mQXR0ZW1wdHMgKyBMb2dpbkNvbnN0YW50LmF0dGVtcHRNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uKSB7XHJcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCk7XHJcbiAgICAgIHRoaXMuSWRUb2tlbiA9IHRva2VuLmdldElkVG9rZW4oKTtcclxuICAgICAgaWYgKFwiY29nbml0bzpncm91cHNcIiBpbiB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLnBheWxvYWQpIHtcclxuICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gdG9rZW4uZ2V0QWNjZXNzVG9rZW4oKS5wYXlsb2FkW1wiY29nbml0bzpncm91cHNcIl07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UudXNlckdyb3Vwc0luQ29nbml0b0pXVCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbn1cclxuXHJcbiJdfQ==
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFFckgsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7O0FBSzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFxQjNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLGFBQTRCLEVBQzVCLFVBQXFCLEVBQ3BCLE1BQXFCLEVBQ00sMkJBQXlDO1FBTHBFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3BCLFdBQU0s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VyxDQUFDLGFBQWEsQ0FBQztZQUM3QixTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFFcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQztnQkFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRSxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQTNRUSxrQkFBa0IsNkpBMkJmLGtCQUFrQjttSEEzQnJCLGtCQUFrQixjQUZmLE1BQU07MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBNEJRLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29nbml0b1VzZXJQb29sLCBDb2duaXRvVXNlciwgQXV0aGVudGljYXRpb25EZXRhaWxzLCBDb2duaXRvVXNlclNlc3Npb24gfSBmcm9tIFwiYW1hem9uLWNvZ25pdG8taWRlbnRpdHktanNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRGF0YSwgVXNlclBvb2xJbmZvcm1hdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvYXV0aC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBbm5hTGliQWNsU2VydmljZSB9IGZyb20gJy4vYWNsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJyYXJ5Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2xpYnJhcnkuY29uZmlnJztcclxuaW1wb3J0IHsgSUF1dGhTZXJ2aWNlLCBBVVRIX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi9jb25maWcvYXV0aC1zZXJ2aWNlLnRva2VuJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQXV0aFNlcnZpY2UgIHtcclxuICAgIHBvb2xEYXRhOiBVc2VyUG9vbEluZm9ybWF0aW9uO1xyXG4gICAgdXNlclBvb2w6IENvZ25pdG9Vc2VyUG9vbDtcclxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcjtcclxuICAgIGF1dGhlbnRpY2F0aW9uRGV0YWlsczogQXV0aGVudGljYXRpb25EZXRhaWxzO1xyXG4gICAgdG9rZW5WYWxpZDogYm9vbGVhbjtcclxuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgICB1c2VyQXR0cmlidXRlOiBhbnk7XHJcbiAgICBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIHNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBzZXROZXdQYXNzd29yZEJ1dHRvbk1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uOiBzdHJpbmc7XHJcbiAgICBub09mQXR0ZW1wdHMgPSAwO1xyXG4gICAgc2Vzc2lvbkxvY2tlZCA9IGZhbHNlO1xyXG4gICAgdXNlck5hbWU6IGFueTtcclxuICAgIGFjY2Vzc1Rva2VuVGltZXJJZDogYW55O1xyXG4gICAgSWRUb2tlbjogYW55O1xyXG4gIGZvcmdvdFBhc3N3b3JkQW5kR2xvYmFsU2lnbm91dExvYWRlcjogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBhY2xTZXJ2aWNlOiBBbm5hTGliQWNsU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgbGlicmFyeUNvbmZpZzogTGlicmFyeUNvbmZpZyxcclxuICAgICAgICBwdWJsaWMgaHR0cENsaWVudDpIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlOiBJQXV0aFNlcnZpY2UpIHtcclxuICAgICAgICAgIGlmKCFjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGEgYXV0aFNlcnZpY2UnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7fVxyXG5cclxuICAgIC8qKipcclxuICAgMS4gdGFrZXMgdXNlciBwb29sIGRhdGEgKHVzZXJQb29sIElEIGFuZCBjbGllbnQgSUQpXHJcbiAgIDIuIGlmIGN1cnJlbnQgdXNlciBpcyBudWxsIHRoZW4gaXQgbWVhbnMgdXNlciBhbHJlYWR5IGxvZ2dlZCBvdXQgdGhlbiBzaW1wbHkgcmV0dXJuIFByb21pc2U8ZmFsc2U+XHJcbiAgIDMuIGlmIGN1cnJlbnQgdXNlciBwcmVzZW50IGNoZWNrIGlmIHRva2VuIGlzIHZhbGlkIGZvciBpdC5cclxuICovXHJcbiAgICBpc1VzZXJMb2dnZWRJbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyRGV0YWlscygpO1xyXG4gICAgICAgIGlmIChjdXJyZW50VXNlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRVc2VyICYmIGN1cnJlbnRVc2VyLmdldFNlc3Npb24oKGVycm9yOiBFcnJvciwgdG9rZW46IENvZ25pdG9Vc2VyU2Vzc2lvbiB8IG51bGwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHModG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWRFcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb25UaW1lb3V0KCkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hY2Nlc3NUb2tlblRpbWVySWQpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LmxvZ2luUGFnZVVybF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hBY2Nlc3NUb2tlbigpIHtcclxuICAgICAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyRGV0YWlscygpO1xyXG4gICAgICAgIGxldCBhY2Nlc3NUb2tlbkV4cGlyYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiKTtcclxuICAgICAgICBsZXQgZXhwVGltZSA9IGFjY2Vzc1Rva2VuRXhwaXJhdGlvbiA/IHBhcnNlSW50KGFjY2Vzc1Rva2VuRXhwaXJhdGlvbikgOiAwO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY291bnRlciA9IDEwMDA7XHJcbiAgICAgICAgICAgIGxldCBkZWxheUZ1bmN0aW9uID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFVzZXIgJiYgY3VycmVudFVzZXIuZ2V0U2Vzc2lvbigoZXJyb3I6IGFueSwgdG9rZW46IENvZ25pdG9Vc2VyU2Vzc2lvbiB8IG51bGwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHModG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RXhwVGltZSA9IHRoaXMuY29tcHV0ZVRva2VuRXhwaXJhdGlvbih0aGlzLklkVG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0V4cFRpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXhwVGltZSA9IDEwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWxheUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChkZWxheUZ1bmN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBUaW1lID0gbmV3RXhwVGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJhY2Nlc3NUb2tlbkV4cGlyYXRpb25cIiwgbmV3RXhwVGltZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5jb2RlID09PSBcIk5vdEF1dGhvcml6ZWRFeGNlcHRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIGNvdW50ZXIpO1xyXG4gICAgICAgIH0sIGV4cFRpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXB1dGVUb2tlbkV4cGlyYXRpb24odG9rZW46IGFueSkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gICAgICAgIGxldCB0b2tlblRpbWUgPSB0b2tlbi5wYXlsb2FkLmV4cDtcclxuICAgICAgICBsZXQgZXhwVGltZSA9ICh0b2tlblRpbWUgLSBjdXJyZW50VGltZSkgKiAxMDAwO1xyXG4gICAgICAgIHJldHVybiBleHBUaW1lO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRDdXJyZW50VXNlckRldGFpbHMoKSB7XHJcbiAgICAgICAgbGV0IHBvb2xEYXRhID0gbmV3IFVzZXJQb29sSW5mb3JtYXRpb24odGhpcy5saWJyYXJ5Q29uZmlnLmNvZ25pdG8udXNlclBvb2xJZCwgdGhpcy5saWJyYXJ5Q29uZmlnLmNvZ25pdG8uY2xpZW50SWQpO1xyXG4gICAgICAgIGxldCB1c2VyUG9vbCA9IG5ldyBDb2duaXRvVXNlclBvb2wocG9vbERhdGEpO1xyXG4gICAgICAgIHJldHVybiB1c2VyUG9vbC5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvZ25pdG9Vc2VyRGV0YWlscyhlbWFpbDogc3RyaW5nKTogQ29nbml0b1VzZXIge1xyXG4gICAgICAgIHRoaXMucG9vbERhdGEgPSBuZXcgVXNlclBvb2xJbmZvcm1hdGlvbih0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by51c2VyUG9vbElkLCB0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by5jbGllbnRJZCk7XHJcbiAgICAgICAgdGhpcy51c2VyUG9vbCA9IG5ldyBDb2duaXRvVXNlclBvb2wodGhpcy5wb29sRGF0YSk7XHJcblxyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgVXNlcm5hbWU6IGVtYWlsLFxyXG4gICAgICAgICAgICBQb29sOiB0aGlzLnVzZXJQb29sLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGNvZ25pdG9Vc2VyID0gbmV3IENvZ25pdG9Vc2VyKHVzZXJEYXRhKTtcclxuICAgICAgICByZXR1cm4gY29nbml0b1VzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXV0aGVudGljYXRlKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICBsZXQgYXV0aERhdGEgPSBuZXcgQXV0aGVudGljYXRpb25EYXRhKGVtYWlsLCBwYXNzd29yZCk7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMgPSBuZXcgQXV0aGVudGljYXRpb25EZXRhaWxzKGF1dGhEYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb2duaXRvVXNlciA9IHRoaXMuZ2V0Q29nbml0b1VzZXJEZXRhaWxzKGVtYWlsKTtcclxuICAgICAgICB0aGlzLkNvZ25pdG9BdXRoZW50aWNhdGlvbih0aGlzLmF1dGhlbnRpY2F0aW9uRGV0YWlscyk7XHJcbiAgICB9XHJcblxyXG4gICAgQ29nbml0b0F1dGhlbnRpY2F0aW9uKGF1dGhlbnRpY2F0aW9uRGV0YWlsczogQXV0aGVudGljYXRpb25EZXRhaWxzKSB7XHJcbiAgICAgICAgdGhpcy5jb2duaXRvVXNlci5hdXRoZW50aWNhdGVVc2VyKGF1dGhlbnRpY2F0aW9uRGV0YWlscywge1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5vblN1Y2Nlc3NmdWxBdXRoZW50aWNhdGluZ1VzZXIocmVzdWx0KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlID09IExvZ2luQ29uc3RhbnQudGVtcFBhc3N3b3JkRXhwaXJ5RXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC50ZW1wUGFzc3dvcmRPbkV4cGlyeUVycm9yTXNnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNlbmRSZWdlbmVyYXRpb25FbWFpbCh0aGlzLmF1dGhlbnRpY2F0aW9uRGV0YWlscy5nZXRVc2VybmFtZSgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSBcIlBhc3N3b3JkIGF0dGVtcHRzIGV4Y2VlZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0TGltaXRFeGNlZWRlZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQudXNlck5hbWVQYXNzd29yZEluY29ycmVjdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmV3UGFzc3dvcmRSZXF1aXJlZDogKGRhdGE6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyQXR0cmlidXRlID0gZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LnNldE5ld1Bhc3N3b3JkVXJsXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBzZXROZXdQYXNzd29yZChuZXdQYXNzd29yZDogYW55KSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudXNlckF0dHJpYnV0ZS5lbWFpbDtcclxuICAgICAgICBkZWxldGUgdGhpcy51c2VyQXR0cmlidXRlLmVtYWlsX3ZlcmlmaWVkO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnVzZXJBdHRyaWJ1dGUucGhvbmVfbnVtYmVyX3ZlcmlmaWVkO1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuY29tcGxldGVOZXdQYXNzd29yZENoYWxsZW5nZShuZXdQYXNzd29yZCwgdGhpcy51c2VyQXR0cmlidXRlLCB7XHJcbiAgICAgICAgICAgIG9uU3VjY2VzczogKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uRmFpbHVyZTogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlID0gTG9naW5Db25zdGFudC5sb2dpbkFnYWluO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9yZ290UGFzc3dvcmRHZW5lcmF0ZU9UUChlbWFpbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9IGVtYWlsO1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIgPSB0aGlzLmdldENvZ25pdG9Vc2VyRGV0YWlscyhlbWFpbCk7XHJcbiAgICAgICAgdGhpcy5jb2duaXRvVXNlci5mb3Jnb3RQYXNzd29yZCh7XHJcbiAgICAgICAgICAgIG9uU3VjY2VzczogKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlICtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuQ29kZURlbGl2ZXJ5RGV0YWlscy5EZXN0aW5hdGlvbiArXHJcbiAgICAgICAgICAgICAgICAgICAgTG9naW5Db25zdGFudC5wbGVhc2VFbnRlckl0QmVsb3c7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC52ZXJpZnlBbmRTZXROZXdQYXNzd29yZFVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnIpID0+IHt9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZlcmlmeUNvZGUodmVyaWZpY2F0aW9uQ29kZTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5jb2duaXRvVXNlci5jb25maXJtUGFzc3dvcmQodmVyaWZpY2F0aW9uQ29kZSwgbmV3UGFzc3dvcmQsIHtcclxuICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9PZkF0dGVtcHRzID0gdGhpcy5ub09mQXR0ZW1wdHMgKyAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IHRoaXMuZm9yZ290UGFzc3dvcmRFcnJvcihlcnJvciwgdGhpcy5ub09mQXR0ZW1wdHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGlyeUFsbEV4aXN0aW5nQ3VycmVudFNlc3Npb24obmV3UGFzc3dvcmQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyOiBhbnksIG5vT2ZBdHRlbXB0czogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZTtcclxuICAgICAgICBzd2l0Y2ggKGVyci5jb2RlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJMaW1pdEV4Y2VlZGVkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25Mb2NrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0TGltaXRFeGNlZWRlZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiRXhwaXJlZENvZGVFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uID0gTG9naW5Db25zdGFudC5yZWdlbmVyYXRlT3RwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LmF0dGVtcHQgKyBcIiBcIiArIG5vT2ZBdHRlbXB0cyArIExvZ2luQ29uc3RhbnQuYXR0ZW1wdE1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuOiBDb2duaXRvVXNlclNlc3Npb24pIHtcclxuICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IHRva2VuLmdldEFjY2Vzc1Rva2VuKCkuZ2V0Snd0VG9rZW4oKTtcclxuICAgICAgdGhpcy5JZFRva2VuID0gdG9rZW4uZ2V0SWRUb2tlbigpO1xyXG4gICAgICBpZiAoXCJjb2duaXRvOmdyb3Vwc1wiIGluIHRva2VuLmdldEFjY2Vzc1Rva2VuKCkucGF5bG9hZCkge1xyXG4gICAgICAgICAgdGhpcy5hY2xTZXJ2aWNlLnVzZXJHcm91cHNJbkNvZ25pdG9KV1QgPSB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLnBheWxvYWRbXCJjb2duaXRvOmdyb3Vwc1wiXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKG5ld1Bhc3N3b3JkOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgdXNlcm5hbWUgPSAgdGhpcy5jb2duaXRvVXNlci5nZXRVc2VybmFtZSgpO1xyXG4gICAgICB0aGlzLnNldFVzZXJEZXRhaWxzKHVzZXJuYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICAgIHRoaXMub25Mb2dpbkluQ29nbnRpb1RvR2V0QWNjZXNzVG9rZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGV0YWlscyh1c2VybmFtZTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKXtcclxuICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgIGxldCBhdXRoRGF0YSA9IG5ldyBBdXRoZW50aWNhdGlvbkRhdGEodXNlcm5hbWUsIG5ld1Bhc3N3b3JkKTtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMgPSBuZXcgQXV0aGVudGljYXRpb25EZXRhaWxzKGF1dGhEYXRhKTtcclxuICAgICAgdGhpcy5jb2duaXRvVXNlciA9IHRoaXMuZ2V0Q29nbml0b1VzZXJEZXRhaWxzKHVzZXJuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkxvZ2luSW5Db2dudGlvVG9HZXRBY2Nlc3NUb2tlbigpe1xyXG4gICAgICB0aGlzLmNvZ25pdG9Vc2VyLmF1dGhlbnRpY2F0ZVVzZXIodGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMsIHtcclxuICAgICAgICBvblN1Y2Nlc3M6IGFzeW5jIChyZXN1bHQ6IENvZ25pdG9Vc2VyU2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3VwcyhyZXN1bHQpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2FsbEdsb2JhbFNpZ25vdXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uRmFpbHVyZTogKGVycikgPT4ge30sXHJcbiAgICAgICAgbmV3UGFzc3dvcmRSZXF1aXJlZDogKGRhdGE6YW55KSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DYWxsR2xvYmFsU2lnbm91dCgpe1xyXG4gICAgICB0aGlzLmNvZ25pdG9Vc2VyLmdsb2JhbFNpZ25PdXQoe1xyXG4gICAgICAgIG9uU3VjY2VzczogKHJlc3VsdCkgPT4gXHJcbiAgICAgICAgeyBcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7ICAgXHJcbiAgICAgICAgICB0aGlzLmZvcmdvdFBhc3N3b3JkQW5kR2xvYmFsU2lnbm91dExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7IFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25GYWlsdXJlOiAoZXJyKSA9PiB7fVxyXG4gICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=