ngx-histaff-alpha 2.9.4 → 2.9.6

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.
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
32
32
  providedIn: 'root',
33
33
  }]
34
34
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFhRSxrQkFBYSxHQUFZLEtBQUssQ0FBQyxDQUFDLDBEQUEwRDtRQUUxRixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcsRUFBRSxDQUFDO1FBQ25DLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQyw2QkFBd0IsR0FBVyxFQUFFLENBQUM7UUFDdEMsc0JBQWlCLEdBQVcsc0JBQXNCLENBQUM7UUFFbkQsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMseUJBQW9CLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU5QixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUNoQyxrQkFBYSxHQUFXLFFBQVEsQ0FBQztRQUNqQyxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxhQUFhLENBQUM7UUFDMUMsb0JBQWUsR0FBVyxVQUFVLENBQUM7S0FDdEM7OEdBbENZLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb25maWdTZXJ2aWNlIHtcclxuXHJcbiAgQVBQX1RZUEUhOiBzdHJpbmc7XHJcblxyXG4gIEJBU0VfVVJMITogc3RyaW5nO1xyXG4gIEJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX0NPTlRFTlQhOiBzdHJpbmc7IC8vIGZvciBtaXVrYWZvdG8uY29tIG9ubHlcclxuXHJcblxyXG4gIEdPTElWRV9VUkwhOiBzdHJpbmc7XHJcbiAgREVCVUdfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlOyAvLyBIaeG7g24gdGjhu4sgbeG7mXQgc+G7kSBhbGVydCBr4buDIGPhuqMgdHJvbmcgbcO0aSB0csaw4budbmcgUHJvZHVjdGlvblxyXG5cclxuICBMT0dPX0xPR0lOOiBzdHJpbmcgPSBcIlwiO1xyXG4gIExPR09fSEVBREVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEhPTUVfQkFDS0dST1VORF9JTUFHRTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgT0FVVEgyX09JRENfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE9BVVRIMl9PSURDX0NMSUVOVF9JRDogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19MT0dJTl9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX1NDT1BFOiBzdHJpbmcgPSBcIm9wZW5pZCBwcm9maWxlIGVtYWlsXCI7XHJcblxyXG4gIFNBTUwyQURGU19FTkFCTEVEOiBib29sZWFuID0gdHJ1ZTtcclxuICBTQU1MMkFERlNfSURQOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19JREVOVElGSUVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19XQV9TSUdOSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dBX1NJR05PVVQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dSRVBMWTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgSEFOR0ZJUkVfUEFUSDogc3RyaW5nID0gJy9qb2JzJztcclxuICBTVEFUSUNfRk9MREVSOiBzdHJpbmcgPSAnc3RhdGljJztcclxuICBBVkFUQVJfRk9MREVSOiBzdHJpbmcgPSAnYXZhdGFycyc7XHJcbiAgQVRUQUNITUVOVF9GT0xERVI6IHN0cmluZyA9ICdhdHRhY2htZW50cyc7XHJcbiAgTkVXU0ZFRURfRk9MREVSOiBzdHJpbmcgPSAnbmV3c2ZlZWQnO1xyXG59XHJcbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFnQkUsa0JBQWEsR0FBWSxLQUFLLENBQUMsQ0FBQywwREFBMEQ7UUFFMUYsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QiwwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFFbkMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQywwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFDbkMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLHNCQUFpQixHQUFXLHNCQUFzQixDQUFDO1FBRW5ELHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQix5QkFBb0IsR0FBVyxFQUFFLENBQUM7UUFDbEMsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsa0JBQWEsR0FBVyxPQUFPLENBQUM7UUFDaEMsa0JBQWEsR0FBVyxRQUFRLENBQUM7UUFDakMsa0JBQWEsR0FBVyxTQUFTLENBQUM7UUFDbEMsc0JBQWlCLEdBQVcsYUFBYSxDQUFDO1FBQzFDLG9CQUFlLEdBQVcsVUFBVSxDQUFDO0tBQ3RDOzhHQXJDWSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnU2VydmljZSB7XHJcblxyXG4gIEFQUF9UWVBFITogc3RyaW5nO1xyXG5cclxuICBBUFBfVUlJRCE6IHN0cmluZztcclxuICBBTExPV19JTl9BUFBfTk9USUZJQ0FUSU9OITogYm9vbGVhbjtcclxuXHJcbiAgQkFTRV9VUkwhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyE6IHN0cmluZztcclxuICBCQVNFX1VSTF9GT1JfQ09OVEVOVCE6IHN0cmluZzsgLy8gZm9yIG1pdWthZm90by5jb20gb25seVxyXG5cclxuXHJcbiAgR09MSVZFX1VSTCE6IHN0cmluZztcclxuICBERUJVR19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7IC8vIEhp4buDbiB0aOG7iyBt4buZdCBz4buRIGFsZXJ0IGvhu4MgY+G6oyB0cm9uZyBtw7RpIHRyxrDhu51uZyBQcm9kdWN0aW9uXHJcblxyXG4gIExPR09fTE9HSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgTE9HT19IRUFERVI6IHN0cmluZyA9IFwiXCI7XHJcbiAgSE9NRV9CQUNLR1JPVU5EX0lNQUdFOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBPQVVUSDJfT0lEQ19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7XHJcbiAgT0FVVEgyX09JRENfQ0xJRU5UX0lEOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX0xPR0lOX1VSSTogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfU0NPUEU6IHN0cmluZyA9IFwib3BlbmlkIHByb2ZpbGUgZW1haWxcIjtcclxuXHJcbiAgU0FNTDJBREZTX0VOQUJMRUQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFNBTUwyQURGU19JRFA6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX0lERU5USUZJRVI6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dBX1NJR05JTjogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfV0FfU0lHTk9VVDogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfV1JFUExZOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBIQU5HRklSRV9QQVRIOiBzdHJpbmcgPSAnL2pvYnMnO1xyXG4gIFNUQVRJQ19GT0xERVI6IHN0cmluZyA9ICdzdGF0aWMnO1xyXG4gIEFWQVRBUl9GT0xERVI6IHN0cmluZyA9ICdhdmF0YXJzJztcclxuICBBVFRBQ0hNRU5UX0ZPTERFUjogc3RyaW5nID0gJ2F0dGFjaG1lbnRzJztcclxuICBORVdTRkVFRF9GT0xERVI6IHN0cmluZyA9ICduZXdzZmVlZCc7XHJcbn1cclxuIl19
@@ -42,8 +42,10 @@ export class AppInitializationService {
42
42
  this.mls.lang$.next("en");
43
43
  }
44
44
  }
45
- fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
45
+ fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
46
46
  this.appConfigService.APP_TYPE = APP_TYPE;
47
+ this.appConfigService.APP_UIID = APP_UIID;
48
+ this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
47
49
  this.appConfigService.BASE_URL = BASE_URL;
48
50
  this.appConfigService.BASE_URL_FOR_STATISTIC = BASE_URL_FOR_STATISTIC;
49
51
  this.appConfigService.GOLIVE_URL = GOLIVE_URL;
@@ -255,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
255
257
  providedIn: 'root'
256
258
  }]
257
259
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.MultiLanguageService }, { type: i3.LayoutService }, { type: i4.OrganizationService }, { type: i5.RoutingService }, { type: i6.AppConfigService }, { type: i7.AppService }, { type: i8.GrpcService }, { type: i9.SeekerService }] });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVdsRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTyx3QkFBd0I7SUFhbkMsWUFDVSxXQUF3QixFQUN4QixHQUF5QixFQUN6QixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLGFBQTRCO1FBUjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCdEMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3BELGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyx1QkFB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QixDQUFDLENBQUM7NENBQzFFLElBQUksdUJBQXVCLEVBQUU7Z0RBQzNCLE1BQU0sV0FBVyxHQUFxQixJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0RBQzFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzZDQUNwRDt5Q0FDRjt3Q0FDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQ0FDakMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dDQUVULENBQUMsQ0FBQyxDQUFBOzZCQUNMO3lCQUNGO29CQUVILENBQUMsQ0FBQyxDQUNILENBQUE7Z0JBR0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtZQUVILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUM3RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNoRDtnQkFBUztZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDdkI7SUFFSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQzs4R0EvVFUsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHppcCwgY2F0Y2hFcnJvciwgb2YsIFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuaW1wb3J0IHsgSUF1dGhEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JQXV0aERhdGEnO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4vcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4vb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRXZlcnlUcmVlU3RhdHVzIH0gZnJvbSAnLi4vbGlicmFyaWVzL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4vYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgR3JwY1NlcnZpY2UgfSBmcm9tICcuL2dycGMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlZWtlclNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL3NlZWtlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEluaXRpYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiBcclxuICBpbml0aWFsaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzc29Qcm9jZXNzaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgcHJpbWFyeUluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RvcmVTZXNzaW9uT2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcGVuZGluZ0F1dGhEYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUF1dGhEYXRhIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIHNzb0ZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdycGNTZXJ2aWNlOiBHcnBjU2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vla2VyU2VydmljZTogU2Vla2VyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5zZWVrZXJTZXJ2aWNlLnNvdXJjZVNwYWNlSGVpZ2h0JC5uZXh0KHdpbmRvdy5pbm5lckhlaWdodCAtIDEwMCk7XHJcbiAgfVxyXG5cclxuICBhcHBJbml0aWFsaXplKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgIGNvbnN0IGxhbmcgPSAobG9jYWxTdG9yYWdlIGFzIFN0b3JhZ2UpLmdldEl0ZW0oXCJsYW5nXCIpO1xyXG4gICAgICAgIGlmICghIWxhbmcpIHtcclxuICAgICAgICAgIHRoaXMubWxzLmxhbmckLm5leHQoSlNPTi5wYXJzZShsYW5nKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWxzLmxhbmckLm5leHQoXCJlblwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZldGNoKCcuLi8uLi9hc3NldHMvYXBwLmNvbmZpZy5qc29uJykudGhlbihyZXMgPT4gcmVzLmpzb24oKSkudGhlbigoe1xyXG5cclxuICAgICAgICBBUFBfVFlQRSxcclxuICAgICAgICBCQVNFX1VSTCxcclxuICAgICAgICBCQVNFX1VSTF9GT1JfU1RBVElTVElDLFxyXG4gICAgICAgIEdPTElWRV9VUkwsXHJcbiAgICAgICAgREVCVUdfRU5BQkxFRCxcclxuXHJcbiAgICAgICAgTE9HT19MT0dJTixcclxuICAgICAgICBMT0dPX0hFQURFUixcclxuICAgICAgICBIT01FX0JBQ0tHUk9VTkRfSU1BR0UsIFxyXG5cclxuICAgICAgICBPQVVUSDJfT0lEQ19FTkFCTEVELFxyXG4gICAgICAgIE9BVVRIMl9PSURDX0NMSUVOVF9JRCxcclxuICAgICAgICBPQVVUSDJfT0lEQ19MT0dJTl9VUkksXHJcbiAgICAgICAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJLFxyXG4gICAgICAgIE9BVVRIMl9PSURDX1NDT1BFLFxyXG5cclxuICAgICAgICBTQU1MMkFERlNfRU5BQkxFRCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lEUCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lERU5USUZJRVIsXHJcbiAgICAgICAgU0FNTDJBREZTX1dBX1NJR05JTixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTk9VVCxcclxuICAgICAgICBTQU1MMkFERlNfV1JFUExZLFxyXG5cclxuICAgICAgICBIQU5HRklSRV9QQVRILFxyXG4gICAgICAgIFNUQVRJQ19GT0xERVIsXHJcbiAgICAgIH0pID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID0gQVBQX1RZUEU7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMID0gQkFTRV9VUkw7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMgPSBCQVNFX1VSTF9GT1JfU1RBVElTVElDO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5HT0xJVkVfVVJMID0gR09MSVZFX1VSTDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCA9IERFQlVHX0VOQUJMRUQ7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5MT0dPX0xPR0lOID0gTE9HT19MT0dJTjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuTE9HT19IRUFERVIgPSBMT0dPX0hFQURFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuSE9NRV9CQUNLR1JPVU5EX0lNQUdFID0gSE9NRV9CQUNLR1JPVU5EX0lNQUdFO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfRU5BQkxFRCA9IE9BVVRIMl9PSURDX0VOQUJMRUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX0NMSUVOVF9JRCA9IE9BVVRIMl9PSURDX0NMSUVOVF9JRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfTE9HSU5fVVJJID0gT0FVVEgyX09JRENfTE9HSU5fVVJJO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19SRURJUkVDVF9VUkkgPSBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkk7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX1NDT1BFID0gT0FVVEgyX09JRENfU0NPUEU7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfRU5BQkxFRCA9IFNBTUwyQURGU19FTkFCTEVEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQID0gU0FNTDJBREZTX0lEUDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVIgPSBTQU1MMkFERlNfSURFTlRJRklFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dBX1NJR05JTiA9IFNBTUwyQURGU19XQV9TSUdOSU47XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOT1VUID0gU0FNTDJBREZTX1dBX1NJR05PVVQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XUkVQTFkgPSBTQU1MMkFERlNfV1JFUExZO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuSEFOR0ZJUkVfUEFUSCA9IEhBTkdGSVJFX1BBVEg7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNUQVRJQ19GT0xERVIgPSBTVEFUSUNfRk9MREVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BVkFUQVJfRk9MREVSID0gXCJhdmF0YXJzXCI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFUVEFDSE1FTlRfRk9MREVSID0gXCJhdHRhY2htZW50c1wiO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSAobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpLnNlYXJjaFBhcmFtcztcclxuICAgICAgICBjb25zdCBsb2NhbCA9IHBhcmFtcy5nZXQoXCJsb2NhbFwiKTtcclxuXHJcbiAgICAgICAgaWYgKFNBTUwyQURGU19FTkFCTEVEICYmICFsb2NhbCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNzb0ZhaWxlZCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHBhcmFtcy5nZXQoXCJ0b2tlblwiKTtcclxuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfU0hPUlRfTElWRURfVE9LRU5fTE9HSU4gKyBcIj90b2tlbj1cIiArIHRva2VuKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBdXRoRGF0YSQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5UaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb0ZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQubmV4dChmYWxzZSk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWZ0YmFyUmVkdWNlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcm91dGluZ0hpc3RvcnlTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvcmVPcmdUcmVlU3RhdHVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdDogSUV2ZXJ5VHJlZVN0YXR1cyA9IEpTT04ucGFyc2UoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoc2F2ZWRPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFMV0FZUyBSRURJUkVDVCBUTyBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElGIE5PIFNFU1NJT04gRk9VTkQgKD9sb2NhbD0xKVxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVJ9P2xvY2FsPTFgO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qXHJcblxyXG4gICAgICAgICAgICAgICAgLy9JRiBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElTIE5PVCBNQU5EQVRPUlkgPT4gQ0FMTCBTQU1MMi4wIElkUFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IGAke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQfT9gICtcclxuICAgICAgICAgICAgICAgICAgICBgd3RyZWFsbT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUn1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJndhPSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gfHwgJ3dzaWduaW4xLjAnfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndyZXBseT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTH0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndjdHg9JHtjb2RlQ2hhbGxlbmdlfWBcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoYXV0aG9yaXphdGlvblVybCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXV0aG9yaXphdGlvblVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICovXHJcblxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJvZHkxOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTI6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIGxldCBib2R5MzogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgLy9sZXQgYm9keTQ6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHggPT4gIXgpXHJcbiAgICAgICAgICApLnN1YnNjcmliZShfID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBhcHBUeXBlTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcIldFQkFQUFwiOlxyXG4gICAgICAgICAgICAgICAgYXBwVHlwZU51bWJlciA9IDE7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwiUE9SVEFMXCI6XHJcbiAgICAgICAgICAgICAgICBhcHBUeXBlTnVtYmVyID0gMjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhcHBUeXBlTnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1scy5yZWFkQWxsTWluaSgpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yZWFkQWxsRnVuY3Rpb25XaXRoQWxsQWN0aW9ucygpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5nZXRJZ25vcmVQYXRocygpLFxyXG4gICAgICAgICAgICAgICAgLy90aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5QT1JUQUxfUk9VVEVfUkVBRF9BTExfTUlOSSlcclxuICAgICAgICAgICAgICBdKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih2YWwgPT4gb2YoYFRoZSBhcHAgY2F1Z2h0OiAke3ZhbH1gKSlcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZShyZXNwb25zZXMgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXBwSW5pdGlhbGl6ZSgpIHppcCgpIGRvbmVcIilcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MSA9IHJlc3BvbnNlc1swXTtcclxuICAgICAgICAgICAgICAgIGlmICh4MS5vayAmJiB4MS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MSA9IHgxLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWxzLmRhdGEkLm5leHQoYm9keTEuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgyID0gcmVzcG9uc2VzWzFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHgyLm9rICYmIHgyLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkyID0geDIuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTIuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC5uZXh0KGJvZHkyLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MyA9IHJlc3BvbnNlc1syXTtcclxuICAgICAgICAgICAgICAgIGlmICh4My5vayAmJiB4My5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MyA9IHgzLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC5uZXh0KGJvZHkzLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB4NCA9IHJlc3BvbnNlc1szXTtcclxuICAgICAgICAgICAgICAgIC8vIGlmICh4NC5vayAmJiB4NC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICBib2R5NCA9IHg0LmJvZHlcclxuICAgICAgICAgICAgICAgIC8vICAgaWYgKGJvZHk0LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucm91dGluZ1NlcnZpY2UucG9ydGFsUm91dGVzJC5uZXh0KGJvZHk0LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keTE/LnN0YXR1c0NvZGUgPT09IDIwMCAmJiBib2R5Mj8uc3RhdHVzQ29kZSA9PT0gMjAwICYmIGJvZHkzPy5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeUluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICghIU9BVVRIMl9PSURDX0VOQUJMRUQgJiYgISF0aGlzLnBlbmRpbmdBdXRoRGF0YSQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlU2Vzc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLm5leHQodGhpcy5wZW5kaW5nQXV0aERhdGEkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBdXRoRGF0YSQubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXppbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudHJ5UmVzdG9yZVNlc3Npb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh4ID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3QXV0aERhdGE6IElBdXRoRGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVTZXNzaW9uT2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KG5ld0F1dGhEYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWRTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGVmdGJhclJlZHVjZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRiYXJSZWR1Y2VkID0gSlNPTi5wYXJzZShsZWZ0YmFyUmVkdWNlZFN0cmluZyEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXJvdXRpbmdIaXN0b3J5U3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5ID0gSlNPTi5wYXJzZShyb3V0aW5nSGlzdG9yeVN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3JlT3JnVHJlZVN0YXR1c1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3JlT3JnVHJlZVN0YXR1c1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdDogSUV2ZXJ5VHJlZVN0YXR1cyA9IEpTT04ucGFyc2UoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHNhdmVkT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXppbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcblxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgfSkuY2F0Y2goZSA9PiBjb25zb2xlLmxvZyhcImZldGNoIGFwcC5jb25maWcuanNvbiBlcnJvclwiLCBlKSlcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJhcHBJbml0aWFsaXplKCkgemlwKCkgZXJyb3I6IFwiLCBlKVxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgY29uc29sZS5sb2coXCJmaW5hbGx5XCIpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVdsRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTyx3QkFBd0I7SUFhbkMsWUFDVSxXQUF3QixFQUN4QixHQUF5QixFQUN6QixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLGFBQTRCO1FBUjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCdEMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3BELGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyx1QkFB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VSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgemlwLCBjYXRjaEVycm9yLCBvZiwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4vbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lBdXRoRGF0YSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IElFdmVyeVRyZWVTdGF0dXMgfSBmcm9tICcuLi9saWJyYXJpZXMvc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gJ2FscGhhLWdsb2JhbC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBHcnBjU2VydmljZSB9IGZyb20gJy4vZ3JwYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vla2VyU2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvc2Vla2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdGlhbGl6YXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuIFxyXG4gIGluaXRpYWxpemluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNzb1Byb2Nlc3NpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcmltYXJ5SW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdG9yZVNlc3Npb25PazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwZW5kaW5nQXV0aERhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQXV0aERhdGEgfCBudWxsPihudWxsKTtcclxuXHJcbiAgc3NvRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JwY1NlcnZpY2U6IEdycGNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWVrZXJTZXJ2aWNlOiBTZWVrZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlZWtlclNlcnZpY2Uuc291cmNlU3BhY2VIZWlnaHQkLm5leHQod2luZG93LmlubmVySGVpZ2h0IC0gMTAwKTtcclxuICB9XHJcblxyXG4gIGFwcEluaXRpYWxpemUoKTogdm9pZCB7XHJcblxyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgY29uc3QgbGFuZyA9IChsb2NhbFN0b3JhZ2UgYXMgU3RvcmFnZSkuZ2V0SXRlbShcImxhbmdcIik7XHJcbiAgICAgICAgaWYgKCEhbGFuZykge1xyXG4gICAgICAgICAgdGhpcy5tbHMubGFuZyQubmV4dChKU09OLnBhcnNlKGxhbmcpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tbHMubGFuZyQubmV4dChcImVuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZmV0Y2goJy4uLy4uL2Fzc2V0cy9hcHAuY29uZmlnLmpzb24nKS50aGVuKHJlcyA9PiByZXMuanNvbigpKS50aGVuKCh7XHJcblxyXG4gICAgICAgIEFQUF9UWVBFLFxyXG4gICAgICAgIEFQUF9VSUlELFxyXG4gICAgICAgIEFMTE9XX0lOX0FQUF9OT1RJRklDQVRJT04sXHJcblxyXG4gICAgICAgIEJBU0VfVVJMLFxyXG4gICAgICAgIEJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMsXHJcbiAgICAgICAgR09MSVZFX1VSTCxcclxuICAgICAgICBERUJVR19FTkFCTEVELFxyXG5cclxuICAgICAgICBMT0dPX0xPR0lOLFxyXG4gICAgICAgIExPR09fSEVBREVSLFxyXG4gICAgICAgIEhPTUVfQkFDS0dST1VORF9JTUFHRSwgXHJcblxyXG4gICAgICAgIE9BVVRIMl9PSURDX0VOQUJMRUQsXHJcbiAgICAgICAgT0FVVEgyX09JRENfQ0xJRU5UX0lELFxyXG4gICAgICAgIE9BVVRIMl9PSURDX0xPR0lOX1VSSSxcclxuICAgICAgICBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkksXHJcbiAgICAgICAgT0FVVEgyX09JRENfU0NPUEUsXHJcblxyXG4gICAgICAgIFNBTUwyQURGU19FTkFCTEVELCBcclxuICAgICAgICBTQU1MMkFERlNfSURQLCBcclxuICAgICAgICBTQU1MMkFERlNfSURFTlRJRklFUixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTklOLFxyXG4gICAgICAgIFNBTUwyQURGU19XQV9TSUdOT1VULFxyXG4gICAgICAgIFNBTUwyQURGU19XUkVQTFksXHJcblxyXG4gICAgICAgIEhBTkdGSVJFX1BBVEgsXHJcbiAgICAgICAgU1RBVElDX0ZPTERFUixcclxuICAgICAgfSkgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUgPSBBUFBfVFlQRTtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1VJSUQgPSBBUFBfVUlJRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQUxMT1dfSU5fQVBQX05PVElGSUNBVElPTiA9IEFMTE9XX0lOX0FQUF9OT1RJRklDQVRJT047XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTCA9IEJBU0VfVVJMO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTF9GT1JfU1RBVElTVElDID0gQkFTRV9VUkxfRk9SX1NUQVRJU1RJQztcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuR09MSVZFX1VSTCA9IEdPTElWRV9VUkw7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQgPSBERUJVR19FTkFCTEVEO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuTE9HT19MT0dJTiA9IExPR09fTE9HSU47XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkxPR09fSEVBREVSID0gTE9HT19IRUFERVI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkhPTUVfQkFDS0dST1VORF9JTUFHRSA9IEhPTUVfQkFDS0dST1VORF9JTUFHRTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX0VOQUJMRUQgPSBPQVVUSDJfT0lEQ19FTkFCTEVEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19DTElFTlRfSUQgPSBPQVVUSDJfT0lEQ19DTElFTlRfSUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX0xPR0lOX1VSSSA9IE9BVVRIMl9PSURDX0xPR0lOX1VSSTtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJID0gT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19TQ09QRSA9IE9BVVRIMl9PSURDX1NDT1BFO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0VOQUJMRUQgPSBTQU1MMkFERlNfRU5BQkxFRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lEUCA9IFNBTUwyQURGU19JRFA7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JREVOVElGSUVSID0gU0FNTDJBREZTX0lERU5USUZJRVI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gPSBTQU1MMkFERlNfV0FfU0lHTklOO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV0FfU0lHTk9VVCA9IFNBTUwyQURGU19XQV9TSUdOT1VUO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZID0gU0FNTDJBREZTX1dSRVBMWTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkhBTkdGSVJFX1BBVEggPSBIQU5HRklSRV9QQVRIO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TVEFUSUNfRk9MREVSID0gU1RBVElDX0ZPTERFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVZBVEFSX0ZPTERFUiA9IFwiYXZhdGFyc1wiO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BVFRBQ0hNRU5UX0ZPTERFUiA9IFwiYXR0YWNobWVudHNcIjtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gKG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKS5zZWFyY2hQYXJhbXM7XHJcbiAgICAgICAgY29uc3QgbG9jYWwgPSBwYXJhbXMuZ2V0KFwibG9jYWxcIik7XHJcblxyXG4gICAgICAgIGlmIChTQU1MMkFERlNfRU5BQkxFRCAmJiAhbG9jYWwpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5zc29GYWlsZWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBwYXJhbXMuZ2V0KFwidG9rZW5cIik7XHJcbiAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX1NIT1JUX0xJVkVEX1RPS0VOX0xPR0lOICsgXCI/dG9rZW49XCIgKyB0b2tlbikuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXV0aERhdGEkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zc29GYWlsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWRTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGVmdGJhclJlZHVjZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWQgPSBKU09OLnBhcnNlKGxlZnRiYXJSZWR1Y2VkU3RyaW5nISlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KCEhbGVmdGJhclJlZHVjZWQpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5U3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JvdXRpbmdIaXN0b3J5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXJvdXRpbmdIaXN0b3J5U3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnkgPSBKU09OLnBhcnNlKHJvdXRpbmdIaXN0b3J5U3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5uZXh0KHJvdXRpbmdIaXN0b3J5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3JlT3JnVHJlZVN0YXR1c1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRPYmplY3Q6IElFdmVyeVRyZWVTdGF0dXMgPSBKU09OLnBhcnNlKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHNhdmVkT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMClcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBTFdBWVMgUkVESVJFQ1QgVE8gVEhFIEFOR1VMQVIgQVBQTElDQVRJT04gTE9HSU4gUEFHRSBJRiBOTyBTRVNTSU9OIEZPVU5EICg/bG9jYWw9MSlcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JREVOVElGSUVSfT9sb2NhbD0xYDtcclxuXHJcbiAgICAgICAgICAgICAgICAvKlxyXG5cclxuICAgICAgICAgICAgICAgIC8vSUYgVEhFIEFOR1VMQVIgQVBQTElDQVRJT04gTE9HSU4gUEFHRSBJUyBOT1QgTUFOREFUT1JZID0+IENBTEwgU0FNTDIuMCBJZFBcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdlbmVyYXRlUmFuZG9tQ29kZVZlcmlmaWVyKDQzKTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY29kZVZlcmlmaWVyXCIsIGNvZGVWZXJpZmllcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdlbmVyYXRlQ29kZUNoYWxsZW5nZUZyb21WZXJpZmllcihjb2RlVmVyaWZpZXIpLnRoZW4oY29kZUNoYWxsZW5nZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhvcml6YXRpb25VcmwgPSBgJHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lEUH0/YCArXHJcbiAgICAgICAgICAgICAgICAgICAgYHd0cmVhbG09JHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVJ9YCArXHJcbiAgICAgICAgICAgICAgICAgICAgYCZ3YT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV0FfU0lHTklOIHx8ICd3c2lnbmluMS4wJ31gICsgXHJcbiAgICAgICAgICAgICAgICAgICAgYCZ3cmVwbHk9JHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkx9JHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dSRVBMWX1gICsgXHJcbiAgICAgICAgICAgICAgICAgICAgYCZ3Y3R4PSR7Y29kZUNoYWxsZW5nZX1gXHJcbiAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KGF1dGhvcml6YXRpb25VcmwpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGF1dGhvcml6YXRpb25Vcmw7XHJcblxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAqL1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zc29Qcm9jZXNzaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgbGV0IGJvZHkyOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTM6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIC8vbGV0IGJvZHk0OiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcih4ID0+ICF4KVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgYXBwVHlwZU51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJXRUJBUFBcIjpcclxuICAgICAgICAgICAgICAgIGFwcFR5cGVOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBcIlBPUlRBTFwiOlxyXG4gICAgICAgICAgICAgICAgYXBwVHlwZU51bWJlciA9IDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYXBwVHlwZU51bWJlciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICB6aXAoW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMucmVhZEFsbE1pbmkoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UucmVhZEFsbEZ1bmN0aW9uV2l0aEFsbEFjdGlvbnMoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZ2V0SWdub3JlUGF0aHMoKSxcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuUE9SVEFMX1JPVVRFX1JFQURfQUxMX01JTkkpXHJcbiAgICAgICAgICAgICAgXSkucGlwZShcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodmFsID0+IG9mKGBUaGUgYXBwIGNhdWdodDogJHt2YWx9YCkpXHJcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUocmVzcG9uc2VzID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFwcEluaXRpYWxpemUoKSB6aXAoKSBkb25lXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDEgPSByZXNwb25zZXNbMF07XHJcbiAgICAgICAgICAgICAgICBpZiAoeDEub2sgJiYgeDEuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTEgPSB4MS5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1scy5kYXRhJC5uZXh0KGJvZHkxLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MiA9IHJlc3BvbnNlc1sxXTtcclxuICAgICAgICAgICAgICAgIGlmICh4Mi5vayAmJiB4Mi5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MiA9IHgyLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkyLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQubmV4dChib2R5Mi5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDMgPSByZXNwb25zZXNbMl07XHJcbiAgICAgICAgICAgICAgICBpZiAoeDMub2sgJiYgeDMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTMgPSB4My5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5My5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQubmV4dChib2R5My5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgeDQgPSByZXNwb25zZXNbM107XHJcbiAgICAgICAgICAgICAgICAvLyBpZiAoeDQub2sgJiYgeDQuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vICAgYm9keTQgPSB4NC5ib2R5XHJcbiAgICAgICAgICAgICAgICAvLyAgIGlmIChib2R5NC5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQubmV4dChib2R5NC5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxPy5zdGF0dXNDb2RlID09PSAyMDAgJiYgYm9keTI/LnN0YXR1c0NvZGUgPT09IDIwMCAmJiBib2R5Mz8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByaW1hcnlJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoISFPQVVUSDJfT0lEQ19FTkFCTEVEICYmICEhdGhpcy5wZW5kaW5nQXV0aERhdGEkLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlc3Npb25PayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KHRoaXMucGVuZGluZ0F1dGhEYXRhJC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXV0aERhdGEkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnRyeVJlc3RvcmVTZXNzaW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0F1dGhEYXRhOiBJQXV0aERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlU2Vzc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQubmV4dChuZXdBdXRoRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRiYXJSZWR1Y2VkU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xlZnRiYXJSZWR1Y2VkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KCEhbGVmdGJhclJlZHVjZWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5U3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JvdXRpbmdIaXN0b3J5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyb3V0aW5nSGlzdG9yeVN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5uZXh0KHJvdXRpbmdIaXN0b3J5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29yZU9yZ1RyZWVTdGF0dXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRPYmplY3Q6IElFdmVyeVRyZWVTdGF0dXMgPSBKU09OLnBhcnNlKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dChzYXZlZE9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG5cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuXHJcbiAgICAgIH0pLmNhdGNoKGUgPT4gY29uc29sZS5sb2coXCJmZXRjaCBhcHAuY29uZmlnLmpzb24gZXJyb3JcIiwgZSkpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiYXBwSW5pdGlhbGl6ZSgpIHppcCgpIGVycm9yOiBcIiwgZSlcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZmluYWxseVwiKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -54,6 +54,33 @@ export class AppService {
54
54
  }
55
55
  });
56
56
  }
57
+ generateUuid() {
58
+ try {
59
+ // Use the crypto module to generate a random array of bytes
60
+ var array = new Uint8Array(16);
61
+ crypto.getRandomValues(array);
62
+ // Convert the array of bytes to a hexadecimal string
63
+ var uuid = "";
64
+ for (var i = 0; i < array.length; i++) {
65
+ uuid += array[i].toString(16).padStart(2, "0");
66
+ }
67
+ // Add hyphens to the UUID to separate it into groups
68
+ uuid = uuid.substring(0, 8) + "-" + uuid.substring(8, 12) + "-" + uuid.substring(12, 16) + "-" + uuid.substring(16, 20) + "-" + uuid.substring(20, 32);
69
+ return uuid;
70
+ }
71
+ catch (error) {
72
+ console.error('Error generating UUID:', error);
73
+ // Handle error appropriately, e.g., fallback to a different method or throw an error
74
+ /*
75
+ Using crypto.randomUUID() directly (if available in your environment) simplifies
76
+ the task of generating UUIDs by leveraging built-in cryptographic functions.
77
+ This approach is ideal for applications requiring unique identifiers without the
78
+ need for manual byte manipulation or string formatting.
79
+ Always verify compatibility and behavior in your specific runtime environment to ensure seamless integration.
80
+ */
81
+ return crypto.randomUUID();
82
+ }
83
+ }
57
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppService, deps: [{ token: i1.CommonHttpRequestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
58
85
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppService, providedIn: 'root' }); }
59
86
  }
@@ -63,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
63
90
  providedIn: 'root'
64
91
  }]
65
92
  }], ctorParameters: () => [{ type: i1.CommonHttpRequestService }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0Msd0JBQXdCO0FBSXhCLE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQW9CLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQUksQ0FBQztJQUUzRSxHQUFHLENBQUMsR0FBVyxFQUFFLGVBQXdCLEtBQUs7UUFDNUMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVcsRUFBRSxlQUF3QixLQUFLO1FBQzNELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDM0YsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBVyxFQUFFLE9BQVk7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNuQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUNoQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZGLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUMvQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx5Q0FBeUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RHLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBVTtRQUN6QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO29CQUM5Qjs7OztzQkFJRTtvQkFDRixnQkFBZ0I7b0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsTUFBTSxFQUFFLENBQUM7YUFDVjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExRFUsVUFBVTtrSEFBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vY29tbW9uLWh0dHAtcmVxdWVzdC5zZXJ2aWNlJztcclxuXHJcbi8vZGVjbGFyZSBsZXQgWExTWDogYW55O1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21tb25IdHRwUmVxdWVzdFNlcnZpY2U6IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSkgeyB9XHJcblxyXG4gIGdldCh1cmw6IHN0cmluZywgY2FjaGVSZXF1ZXN0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VHZXRSZXF1ZXN0KCdnZXQnLCB1cmwsIGNhY2hlUmVxdWVzdClcclxuICB9XHJcblxyXG4gIGdldFNraXBJbnRlcmNlcHRvcih1cmw6IHN0cmluZywgY2FjaGVSZXF1ZXN0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VHZXRSZXF1ZXN0U2tpcEludGVyY2VwdG9yKCdnZXQnLCB1cmwsIGNhY2hlUmVxdWVzdClcclxuICB9XHJcblxyXG4gIHBvc3QodXJsOiBzdHJpbmcsIHBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcImFwcFNlcnZpY2UgcG9zdFwiLCB1cmwpXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZVBvc3RSZXF1ZXN0KCdwb3N0JywgdXJsLCBwYXlsb2FkKVxyXG4gIH1cclxuXHJcbiAgcG9zdFNraXBJbnRlcmNlcHRvcih1cmw6IHN0cmluZywgcGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiYXBwU2VydmljZSBwb3N0XCIsIHVybClcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlUG9zdFJlcXVlc3RTa2lwSW50ZXJjZXB0b3IoJ3Bvc3QnLCB1cmwsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBnZXRGdWxsVXJsKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlR2V0UmVxdWVzdEZ1bGxVcmwodXJsKVxyXG4gIH1cclxuXHJcbiAgcG9zdEZ1bGxVcmwodXJsOiBzdHJpbmcsIHBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcImFwcFNlcnZpY2UgcG9zdFwiLCB1cmwpXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZVBvc3RSZXF1ZXN0RnVsbFVybCh1cmwsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBibG9iUG9zdCh1cmw6IHN0cmluZywgcGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlUG9zdFJlcXVlc3RSZXBvbnNlQmxvYigncG9zdCcsIHVybCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGJsb2JQb3N0U2tpcEludGVyY2VwdG9yKHVybDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdFJlcG9uc2VCbG9iU2tpcEludGVyY2VwdG9yKCdwb3N0JywgdXJsLCBwYXlsb2FkKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRFeGNlbChmaWxlOiBGaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgYWxlcnQoXCJYTFNYIHdhcyBub3QgZGVmaW5lZFwiKTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICB2YXIgd29ya2Jvb2sgPSBYTFNYLnJlYWQocmVhZGVyLnJlc3VsdCwgeyB0eXBlOiBcImJpbmFyeVwiLCBjZWxsRGF0ZXM6IHRydWUgfSk7XHJcbiAgICAgICAgICB2YXIgd29ya3NoZWV0ID0gd29ya2Jvb2suU2hlZXRzW3dvcmtib29rLlNoZWV0TmFtZXNbMF1dO1xyXG4gICAgICAgICAgdmFyIGRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od29ya3NoZWV0KTtcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICAvL3Jlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0Msd0JBQXdCO0FBSXhCLE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQW9CLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQUksQ0FBQztJQUUzRSxHQUFHLENBQUMsR0FBVyxFQUFFLGVBQXdCLEtBQUs7UUFDNUMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVcsRUFBRSxlQUF3QixLQUFLO1FBQzNELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsT0FBWTtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7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QUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24taHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xyXG5cclxuLy9kZWNsYXJlIGxldCBYTFNYOiBhbnk7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZTogQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlKSB7IH1cclxuXHJcbiAgZ2V0KHVybDogc3RyaW5nLCBjYWNoZVJlcXVlc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZUdldFJlcXVlc3QoJ2dldCcsIHVybCwgY2FjaGVSZXF1ZXN0KVxyXG4gIH1cclxuXHJcbiAgZ2V0U2tpcEludGVyY2VwdG9yKHVybDogc3RyaW5nLCBjYWNoZVJlcXVlc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZUdldFJlcXVlc3RTa2lwSW50ZXJjZXB0b3IoJ2dldCcsIHVybCwgY2FjaGVSZXF1ZXN0KVxyXG4gIH1cclxuXHJcbiAgcG9zdCh1cmw6IHN0cmluZywgcGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiYXBwU2VydmljZSBwb3N0XCIsIHVybClcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlUG9zdFJlcXVlc3QoJ3Bvc3QnLCB1cmwsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBwb3N0U2tpcEludGVyY2VwdG9yKHVybDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJhcHBTZXJ2aWNlIHBvc3RcIiwgdXJsKVxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdFNraXBJbnRlcmNlcHRvcigncG9zdCcsIHVybCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGdldEZ1bGxVcmwodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VHZXRSZXF1ZXN0RnVsbFVybCh1cmwpXHJcbiAgfVxyXG5cclxuICBwb3N0RnVsbFVybCh1cmw6IHN0cmluZywgcGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiYXBwU2VydmljZSBwb3N0XCIsIHVybClcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlUG9zdFJlcXVlc3RGdWxsVXJsKHVybCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGJsb2JQb3N0KHVybDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdFJlcG9uc2VCbG9iKCdwb3N0JywgdXJsLCBwYXlsb2FkKVxyXG4gIH1cclxuXHJcbiAgYmxvYlBvc3RTa2lwSW50ZXJjZXB0b3IodXJsOiBzdHJpbmcsIHBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZVBvc3RSZXF1ZXN0UmVwb25zZUJsb2JTa2lwSW50ZXJjZXB0b3IoJ3Bvc3QnLCB1cmwsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVhZEV4Y2VsKGZpbGU6IEZpbGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xyXG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICBhbGVydChcIlhMU1ggd2FzIG5vdCBkZWZpbmVkXCIpO1xyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIHZhciB3b3JrYm9vayA9IFhMU1gucmVhZChyZWFkZXIucmVzdWx0LCB7IHR5cGU6IFwiYmluYXJ5XCIsIGNlbGxEYXRlczogdHJ1ZSB9KTtcclxuICAgICAgICAgIHZhciB3b3Jrc2hlZXQgPSB3b3JrYm9vay5TaGVldHNbd29ya2Jvb2suU2hlZXROYW1lc1swXV07XHJcbiAgICAgICAgICB2YXIgZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQpO1xyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIC8vcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVV1aWQoKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFVzZSB0aGUgY3J5cHRvIG1vZHVsZSB0byBnZW5lcmF0ZSBhIHJhbmRvbSBhcnJheSBvZiBieXRlc1xyXG4gICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgxNik7XHJcbiAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xyXG4gIFxyXG4gICAgICAvLyBDb252ZXJ0IHRoZSBhcnJheSBvZiBieXRlcyB0byBhIGhleGFkZWNpbWFsIHN0cmluZ1xyXG4gICAgICB2YXIgdXVpZCA9IFwiXCI7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB1dWlkICs9IGFycmF5W2ldLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIik7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgLy8gQWRkIGh5cGhlbnMgdG8gdGhlIFVVSUQgdG8gc2VwYXJhdGUgaXQgaW50byBncm91cHNcclxuICAgICAgdXVpZCA9IHV1aWQuc3Vic3RyaW5nKDAsIDgpICsgXCItXCIgKyB1dWlkLnN1YnN0cmluZyg4LCAxMikgKyBcIi1cIiArIHV1aWQuc3Vic3RyaW5nKDEyLCAxNikgKyBcIi1cIiArIHV1aWQuc3Vic3RyaW5nKDE2LCAyMCkgKyBcIi1cIiArIHV1aWQuc3Vic3RyaW5nKDIwLCAzMik7XHJcbiAgXHJcbiAgICAgIHJldHVybiB1dWlkO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdlbmVyYXRpbmcgVVVJRDonLCBlcnJvcik7XHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBhcHByb3ByaWF0ZWx5LCBlLmcuLCBmYWxsYmFjayB0byBhIGRpZmZlcmVudCBtZXRob2Qgb3IgdGhyb3cgYW4gZXJyb3JcclxuICAgICAgLypcclxuICAgICAgVXNpbmcgY3J5cHRvLnJhbmRvbVVVSUQoKSBkaXJlY3RseSAoaWYgYXZhaWxhYmxlIGluIHlvdXIgZW52aXJvbm1lbnQpIHNpbXBsaWZpZXMgXHJcbiAgICAgIHRoZSB0YXNrIG9mIGdlbmVyYXRpbmcgVVVJRHMgYnkgbGV2ZXJhZ2luZyBidWlsdC1pbiBjcnlwdG9ncmFwaGljIGZ1bmN0aW9ucy4gXHJcbiAgICAgIFRoaXMgYXBwcm9hY2ggaXMgaWRlYWwgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgdW5pcXVlIGlkZW50aWZpZXJzIHdpdGhvdXQgdGhlIFxyXG4gICAgICBuZWVkIGZvciBtYW51YWwgYnl0ZSBtYW5pcHVsYXRpb24gb3Igc3RyaW5nIGZvcm1hdHRpbmcuIFxyXG4gICAgICBBbHdheXMgdmVyaWZ5IGNvbXBhdGliaWxpdHkgYW5kIGJlaGF2aW9yIGluIHlvdXIgc3BlY2lmaWMgcnVudGltZSBlbnZpcm9ubWVudCB0byBlbnN1cmUgc2VhbWxlc3MgaW50ZWdyYXRpb24uXHJcbiAgICAgICovXHJcbiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
@@ -54,6 +54,34 @@ export class SocketService {
54
54
  case EnumSignalRType.LOG_IN:
55
55
  if (isDevMode())
56
56
  this.alertService.info(activity.message, alertOptions);
57
+ if (this.appConfigService.ALLOW_IN_APP_NOTIFICATION) {
58
+ if ('Notification' in window) {
59
+ const options = {
60
+ body: activity.message,
61
+ icon: 'assets/icons/icon-72x72.png',
62
+ };
63
+ // Check if notification permissions are granted
64
+ if (Notification.permission === 'granted') {
65
+ // Create and display the notification
66
+ new Notification("Information", options);
67
+ }
68
+ else if (Notification.permission !== 'denied') {
69
+ // Request permission from the user
70
+ Notification.requestPermission().then(permission => {
71
+ if (permission === 'granted') {
72
+ // Create and display the notification
73
+ new Notification("Information", options);
74
+ }
75
+ });
76
+ }
77
+ else {
78
+ console.warn('Notification permissions not granted or denied.');
79
+ }
80
+ }
81
+ else {
82
+ console.warn('Notifications are not supported in this browser.');
83
+ }
84
+ }
57
85
  break;
58
86
  case EnumSignalRType.ENTITY_CHANGED:
59
87
  if (isDevMode())
@@ -144,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
144
172
  providedIn: 'root'
145
173
  }]
146
174
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.UserActivityService }, { type: i3.HubConnectionService }, { type: i4.AppConfigService }, { type: i5.AlertService }, { type: i6.Router }, { type: i7.LongTaskService }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQztRQU5oQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3RDLENBQUM7SUFFTCxtQkFBbUI7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBa0Is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T0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7cUJBQ2xDO3lCQUFNO3dCQUNMLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO3FCQUM3QjtpQkFDRjtxQkFBTTtvQkFDTCxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtpQkFDN0I7Z0JBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQ25CO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO1FBRUYsd0JBQXdCO1FBQ3hCLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzs4R0FsSlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9odWItY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvbiwgSHViQ29ubmVjdGlvbkJ1aWxkZXIsIExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgSVVzZXJBY3Rpdml0eURhdGEsIFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvbmdUYXNrU2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9zZXJ2aWNlcy9sb25nLXRhc2suc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGxvbmdUYXNrU2VydmljZTogTG9uZ1Rhc2tTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgY3JlYXRlSHViQ29ubmVjdGlvbigpIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udG9rZW47XHJcbiAgICBpZiAoISEhdG9rZW4pIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiTm8gdXNlciBsb2dnZWQgaW5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwodGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMICsgJy9odWJzL3NpZ25hbCcsIHtcclxuICAgICAgICAvLyAud2l0aFVybCgnaHR0cHM6Ly90YW5sZWljYS5jb20vaHVicy9zaWduYWwnLCB7XHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiOiB0cnVlLFxyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cIjogdHJ1ZSxcclxuICAgICAgICB9IGFzIGFueSxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdG9rZW4sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLk5vbmUpXHJcbiAgICAgIC5idWlsZCgpXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVTeXN0ZW1NZXNzYWdlXCIsIG1lc3NhZ2UgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN5c3RlbSBtZXNzYWdlOiBcIiwgbWVzc2FnZSlcclxuICAgIH0pXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVNZXNzYWdlXCIsIChhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSkgPT4ge1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJNT05JVE9SSU5HOiBcIiwgYWN0aXZpdHkpO1xyXG4gICAgICBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIGRlYnVnZ2VyXHJcblxyXG4gICAgICBzd2l0Y2ggKGFjdGl2aXR5LnNpZ25hbFR5cGUpIHtcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5UQVNLX1BST0dSRVNTOlxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UubWVzc2FnZSQubmV4dChhY3Rpdml0eS5tZXNzYWdlKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZGF0YSQubmV4dCgoYWN0aXZpdHkgYXMgYW55KS5kYXRhKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZXJyb3IkLm5leHQoKGFjdGl2aXR5IGFzIGFueSkuZXJyb3IpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5MT0dfSU46XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYWN0aXZpdHkubWVzc2FnZSwgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuRU5USVRZX0NIQU5HRUQ6XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYWN0aXZpdHkubWVzc2FnZSwgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFk6XHJcbiAgICAgICAgICBjb25zdCB7IGxvZ2luVGltZSB9ID0gYWN0aXZpdHk7XHJcbiAgICAgICAgICBjb25zdCB7IHNpZCwgdXNlcm5hbWUsIHBhdGhuYW1lLCBhdmF0YXIsIGh1YkNvbm5lY3Rpb25JZCwgYWNjZXNzVGltZSwgdXNlckFjdGl2aXR5IH0gPSBhY3Rpdml0eS5kYXRhO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5mdWxsTmFtZTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmdyb3VwKFwiQUNUSVZJVFlcIilcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiaXNEZXZNb2RlKClcIiwgaXNEZXZNb2RlKCkpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJJbmNvbWluZyBsb2dpblRpbWVcIiwgbG9naW5UaW1lKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiWW91ciBsb2dpblRpbWVcIiwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkluY29taW5nIHNpZFwiLCBzaWQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJZb3VyIHNpZFwiLCBjdXJyZW50U2lkKTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2luVGltZSA8IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEgJiYgc2lkID09PSBjdXJyZW50U2lkIC8qJiYgaXNEZXZNb2RlKCkqLykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgYFRyb25nIG3DtGkgdHLGsOG7nW5nIERldiwgdMOgaSBraG/huqNuICgke3NpZH0pIMSRw6MgxJHGsOG7o2MgZMO5bmcgdHLGsOG7m2MgcuG7k2kgbmjDqS4gWGluIMSRxINuZyBuaOG6rXAgYuG6sW5nIHTDoGkga2hv4bqjbiBraMOhY2AsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmFsZXJ0T3B0aW9ucywgYXV0b0Nsb3NlOiBmYWxzZSB9XHJcbiAgICAgICAgICAgICAgKVxyXG5cclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlckxvZ291dCgpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucG9zdExvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9LCAzMDAwKVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHRoaXMudXNlckFjdGl2aXR5U2VydmljZS5tZXJnZUFjdGl2aXRpZXModXNlckFjdGl2aXR5KVxyXG4gICAgICAgICAgY29uc3QgZm91bmQgPSBtZXJnZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgPT09IHNpZClcclxuICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGU6IElVc2VyQWN0aXZpdHlEYXRhID0geyBzaWQsIHVzZXJuYW1lLCBwYXRobmFtZSwgYXZhdGFyLCBodWJDb25uZWN0aW9uSWQsIGFjY2Vzc1RpbWUgfVxyXG4gICAgICAgICAgICBtZXJnZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IHNpZCkucHVzaChuZXdTdGF0ZSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lcmdlZC5wdXNoKHsgc2lkLCB1c2VybmFtZSwgcGF0aG5hbWUsIGF2YXRhciwgaHViQ29ubmVjdGlvbklkLCBhY2Nlc3NUaW1lIH0pXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLnVzZXJBY3Rpdml0eSQubmV4dChtZXJnZWQpO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZX0hJU1RPUllfUkVTRVQ6XHJcbiAgICAgICAgICB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC5uZXh0KFtdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgbGV0IGlkXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gXCJIdWJDb25uZWN0aW9uIGNyZWF0aW5nIHJlcXVlc3RlZC5cIlxyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uc3RhcnQoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfn6Lwn5+i8J+foiBTaWduYWxSIENvbm5lY3RlZC5cIik7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gXCJIdWJDb25uZWN0aW9uIGNyZWF0ZWQuXCI7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC5uZXh0KGNvbm5lY3Rpb24pO1xyXG5cclxuICAgICAgICBpZiAoaWQpIGNsZWFyVGltZW91dChpZClcclxuXHJcbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5ncm91cChg8J+UtPCflLTwn5S0IEhVQiBDT05ORUNUSU9OIFBST0JMRU0gPT09PT09PT09PT09PT09PT09PT1gKVxyXG4gICAgICAgIHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UubWVzc2FnZSA9IGVycjtcclxuICAgICAgICBjb25zb2xlLndhcm4oXCJodWJDb25uZWN0aW9uIHN0YXJ0KCkgZXJyb3I6IFwiLCBlcnIpXHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaWYgKGVyci5pbmRleE9mKGBTdGF0dXMgY29kZSAnNDAxJ2ApID49IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhlIHRva2VuIGV4cGlyZWRcIilcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkID0gc2V0VGltZW91dChzdGFydCwgNTAwMClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWQgPSBzZXRUaW1lb3V0KHN0YXJ0LCA1MDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbm5lY3Rpb24ub25jbG9zZShhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IHN0YXJ0KCk7XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0aW9uLlxyXG4gICAgc3RhcnQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQztRQU5oQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3RDLENBQUM7SUFFTCxtQkFBbUI7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBa0Is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RSxDQUFBO2FBQ25CO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO1FBRUYsd0JBQXdCO1FBQ3hCLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzs4R0EvS1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9odWItY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvbiwgSHViQ29ubmVjdGlvbkJ1aWxkZXIsIExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgSVVzZXJBY3Rpdml0eURhdGEsIFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvbmdUYXNrU2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9zZXJ2aWNlcy9sb25nLXRhc2suc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGxvbmdUYXNrU2VydmljZTogTG9uZ1Rhc2tTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgY3JlYXRlSHViQ29ubmVjdGlvbigpIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udG9rZW47XHJcbiAgICBpZiAoISEhdG9rZW4pIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiTm8gdXNlciBsb2dnZWQgaW5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwodGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMICsgJy9odWJzL3NpZ25hbCcsIHtcclxuICAgICAgICAvLyAud2l0aFVybCgnaHR0cHM6Ly90YW5sZWljYS5jb20vaHVicy9zaWduYWwnLCB7XHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiOiB0cnVlLFxyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cIjogdHJ1ZSxcclxuICAgICAgICB9IGFzIGFueSxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdG9rZW4sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLk5vbmUpXHJcbiAgICAgIC5idWlsZCgpXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVTeXN0ZW1NZXNzYWdlXCIsIG1lc3NhZ2UgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN5c3RlbSBtZXNzYWdlOiBcIiwgbWVzc2FnZSlcclxuICAgIH0pXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVNZXNzYWdlXCIsIChhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSkgPT4ge1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJNT05JVE9SSU5HOiBcIiwgYWN0aXZpdHkpO1xyXG4gICAgICBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIGRlYnVnZ2VyXHJcblxyXG4gICAgICBzd2l0Y2ggKGFjdGl2aXR5LnNpZ25hbFR5cGUpIHtcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5UQVNLX1BST0dSRVNTOlxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UubWVzc2FnZSQubmV4dChhY3Rpdml0eS5tZXNzYWdlKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZGF0YSQubmV4dCgoYWN0aXZpdHkgYXMgYW55KS5kYXRhKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZXJyb3IkLm5leHQoKGFjdGl2aXR5IGFzIGFueSkuZXJyb3IpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5MT0dfSU46XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYWN0aXZpdHkubWVzc2FnZSwgYWxlcnRPcHRpb25zKVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQUxMT1dfSU5fQVBQX05PVElGSUNBVElPTikge1xyXG4gICAgICAgICAgICBpZiAoJ05vdGlmaWNhdGlvbicgaW4gd2luZG93KSB7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBhY3Rpdml0eS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Fzc2V0cy9pY29ucy9pY29uLTcyeDcyLnBuZycsXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zIGFyZSBncmFudGVkXHJcbiAgICAgICAgICAgICAgaWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgZGlzcGxheSB0aGUgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICBuZXcgTm90aWZpY2F0aW9uKFwiSW5mb3JtYXRpb25cIiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gJ2RlbmllZCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIFJlcXVlc3QgcGVybWlzc2lvbiBmcm9tIHRoZSB1c2VyXHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKS50aGVuKHBlcm1pc3Npb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gJ2dyYW50ZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBkaXNwbGF5IHRoZSBub3RpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWZpY2F0aW9uKFwiSW5mb3JtYXRpb25cIiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucyBub3QgZ3JhbnRlZCBvciBkZW5pZWQuJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignTm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXIuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5FTlRJVFlfQ0hBTkdFRDpcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhhY3Rpdml0eS5tZXNzYWdlLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWTpcclxuICAgICAgICAgIGNvbnN0IHsgbG9naW5UaW1lIH0gPSBhY3Rpdml0eTtcclxuICAgICAgICAgIGNvbnN0IHsgc2lkLCB1c2VybmFtZSwgcGF0aG5hbWUsIGF2YXRhciwgaHViQ29ubmVjdGlvbklkLCBhY2Nlc3NUaW1lLCB1c2VyQWN0aXZpdHkgfSA9IGFjdGl2aXR5LmRhdGE7XHJcblxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFNpZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmZ1bGxOYW1lO1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoXCJBQ1RJVklUWVwiKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJpc0Rldk1vZGUoKVwiLCBpc0Rldk1vZGUoKSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkluY29taW5nIGxvZ2luVGltZVwiLCBsb2dpblRpbWUpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJZb3VyIGxvZ2luVGltZVwiLCB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiSW5jb21pbmcgc2lkXCIsIHNpZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdXIgc2lkXCIsIGN1cnJlbnRTaWQpO1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuXHJcbiAgICAgICAgICBpZiAobG9naW5UaW1lIDwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISAmJiBzaWQgPT09IGN1cnJlbnRTaWQgLyomJiBpc0Rldk1vZGUoKSovKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgVHJvbmcgbcO0aSB0csaw4budbmcgRGV2LCB0w6BpIGtob+G6o24gKCR7c2lkfSkgxJHDoyDEkcaw4bujYyBkw7luZyB0csaw4bubYyBy4buTaSBuaMOpLiBYaW4gxJHEg25nIG5o4bqtcCBi4bqxbmcgdMOgaSBraG/huqNuIGtow6FjYCxcclxuICAgICAgICAgICAgICAgIHsgLi4uYWxlcnRPcHRpb25zLCBhdXRvQ2xvc2U6IGZhbHNlIH1cclxuICAgICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyTG9nb3V0KCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wb3N0TG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0sIDMwMDApXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgbWVyZ2VkID0gdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLm1lcmdlQWN0aXZpdGllcyh1c2VyQWN0aXZpdHkpXHJcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IG1lcmdlZC5maWx0ZXIoaXRlbSA9PiBpdGVtLnNpZCA9PT0gc2lkKVxyXG4gICAgICAgICAgaWYgKGZvdW5kLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTdGF0ZTogSVVzZXJBY3Rpdml0eURhdGEgPSB7IHNpZCwgdXNlcm5hbWUsIHBhdGhuYW1lLCBhdmF0YXIsIGh1YkNvbm5lY3Rpb25JZCwgYWNjZXNzVGltZSB9XHJcbiAgICAgICAgICAgIG1lcmdlZC5maWx0ZXIoaXRlbSA9PiBpdGVtLnNpZCAhPT0gc2lkKS5wdXNoKG5ld1N0YXRlKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVyZ2VkLnB1c2goeyBzaWQsIHVzZXJuYW1lLCBwYXRobmFtZSwgYXZhdGFyLCBodWJDb25uZWN0aW9uSWQsIGFjY2Vzc1RpbWUgfSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC5uZXh0KG1lcmdlZCk7XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFlfSElTVE9SWV9SRVNFVDpcclxuICAgICAgICAgIHRoaXMudXNlckFjdGl2aXR5U2VydmljZS51c2VyQWN0aXZpdHkkLm5leHQoW10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBsZXQgaWRcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLm1lc3NhZ2UgPSBcIkh1YkNvbm5lY3Rpb24gY3JlYXRpbmcgcmVxdWVzdGVkLlwiXHJcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5zdGFydCgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+fovCfn6Lwn5+iIFNpZ25hbFIgQ29ubmVjdGVkLlwiKTtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLm1lc3NhZ2UgPSBcIkh1YkNvbm5lY3Rpb24gY3JlYXRlZC5cIjtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLm5leHQoY29ubmVjdGlvbik7XHJcblxyXG4gICAgICAgIGlmIChpZCkgY2xlYXJUaW1lb3V0KGlkKVxyXG5cclxuICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmdyb3VwKGDwn5S08J+UtPCflLQgSFVCIENPTk5FQ1RJT04gUFJPQkxFTSA9PT09PT09PT09PT09PT09PT09PWApXHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gZXJyO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcImh1YkNvbm5lY3Rpb24gc3RhcnQoKSBlcnJvcjogXCIsIGVycilcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpZiAoZXJyLmluZGV4T2YoYFN0YXR1cyBjb2RlICc0MDEnYCkgPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgdG9rZW4gZXhwaXJlZFwiKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBzZXRUaW1lb3V0KHN0YXJ0LCA1MDAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZCA9IHNldFRpbWVvdXQoc3RhcnQsIDUwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29ubmVjdGlvbi5vbmNsb3NlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgc3RhcnQoKTtcclxuICAgIH0pXHJcblxyXG4gICAgLy8gU3RhcnQgdGhlIGNvbm5lY3Rpb24uXHJcbiAgICBzdGFydCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -2522,6 +2522,33 @@ class AppService {
2522
2522
  }
2523
2523
  });
2524
2524
  }
2525
+ generateUuid() {
2526
+ try {
2527
+ // Use the crypto module to generate a random array of bytes
2528
+ var array = new Uint8Array(16);
2529
+ crypto.getRandomValues(array);
2530
+ // Convert the array of bytes to a hexadecimal string
2531
+ var uuid = "";
2532
+ for (var i = 0; i < array.length; i++) {
2533
+ uuid += array[i].toString(16).padStart(2, "0");
2534
+ }
2535
+ // Add hyphens to the UUID to separate it into groups
2536
+ uuid = uuid.substring(0, 8) + "-" + uuid.substring(8, 12) + "-" + uuid.substring(12, 16) + "-" + uuid.substring(16, 20) + "-" + uuid.substring(20, 32);
2537
+ return uuid;
2538
+ }
2539
+ catch (error) {
2540
+ console.error('Error generating UUID:', error);
2541
+ // Handle error appropriately, e.g., fallback to a different method or throw an error
2542
+ /*
2543
+ Using crypto.randomUUID() directly (if available in your environment) simplifies
2544
+ the task of generating UUIDs by leveraging built-in cryptographic functions.
2545
+ This approach is ideal for applications requiring unique identifiers without the
2546
+ need for manual byte manipulation or string formatting.
2547
+ Always verify compatibility and behavior in your specific runtime environment to ensure seamless integration.
2548
+ */
2549
+ return crypto.randomUUID();
2550
+ }
2551
+ }
2525
2552
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppService, deps: [{ token: CommonHttpRequestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2526
2553
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppService, providedIn: 'root' }); }
2527
2554
  }
@@ -2671,8 +2698,10 @@ class AppInitializationService {
2671
2698
  this.mls.lang$.next("en");
2672
2699
  }
2673
2700
  }
2674
- fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
2701
+ fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
2675
2702
  this.appConfigService.APP_TYPE = APP_TYPE;
2703
+ this.appConfigService.APP_UIID = APP_UIID;
2704
+ this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
2676
2705
  this.appConfigService.BASE_URL = BASE_URL;
2677
2706
  this.appConfigService.BASE_URL_FOR_STATISTIC = BASE_URL_FOR_STATISTIC;
2678
2707
  this.appConfigService.GOLIVE_URL = GOLIVE_URL;
@@ -4343,6 +4372,34 @@ class SocketService {
4343
4372
  case EnumSignalRType.LOG_IN:
4344
4373
  if (isDevMode())
4345
4374
  this.alertService.info(activity.message, alertOptions);
4375
+ if (this.appConfigService.ALLOW_IN_APP_NOTIFICATION) {
4376
+ if ('Notification' in window) {
4377
+ const options = {
4378
+ body: activity.message,
4379
+ icon: 'assets/icons/icon-72x72.png',
4380
+ };
4381
+ // Check if notification permissions are granted
4382
+ if (Notification.permission === 'granted') {
4383
+ // Create and display the notification
4384
+ new Notification("Information", options);
4385
+ }
4386
+ else if (Notification.permission !== 'denied') {
4387
+ // Request permission from the user
4388
+ Notification.requestPermission().then(permission => {
4389
+ if (permission === 'granted') {
4390
+ // Create and display the notification
4391
+ new Notification("Information", options);
4392
+ }
4393
+ });
4394
+ }
4395
+ else {
4396
+ console.warn('Notification permissions not granted or denied.');
4397
+ }
4398
+ }
4399
+ else {
4400
+ console.warn('Notifications are not supported in this browser.');
4401
+ }
4402
+ }
4346
4403
  break;
4347
4404
  case EnumSignalRType.ENTITY_CHANGED:
4348
4405
  if (isDevMode())