@bnsights/bbsf-utilities 1.0.36 → 1.0.38

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.
Files changed (174) hide show
  1. package/README.md +4 -0
  2. package/bnsights-bbsf-utilities-1.0.38.tgz +0 -0
  3. package/bnsights-bbsf-utilities.d.ts +4 -0
  4. package/bnsights-bbsf-utilities.metadata.json +1 -0
  5. package/bundles/bnsights-bbsf-utilities.umd.js +4782 -0
  6. package/bundles/bnsights-bbsf-utilities.umd.js.map +1 -0
  7. package/esm2015/bnsights-bbsf-utilities.js +5 -0
  8. package/esm2015/lib/bbsf-utilities.module.js +54 -0
  9. package/esm2015/lib/shared/authentication/auth.service.js +204 -0
  10. package/esm2015/lib/shared/config/environment.js +12 -0
  11. package/esm2015/lib/shared/config/word/constants.js +105 -0
  12. package/esm2015/lib/shared/config/word/docx-document.js +351 -0
  13. package/esm2015/lib/shared/config/word/helpers/index.js +4 -0
  14. package/esm2015/lib/shared/config/word/helpers/render-document-file.js +278 -0
  15. package/esm2015/lib/shared/config/word/helpers/xml-builder.js +1765 -0
  16. package/esm2015/lib/shared/config/word/html-to-docx.js +195 -0
  17. package/esm2015/lib/shared/config/word/index.js +55 -0
  18. package/esm2015/lib/shared/config/word/namespaces.js +37 -0
  19. package/esm2015/lib/shared/config/word/schemas/content-types.js +26 -0
  20. package/esm2015/lib/shared/config/word/schemas/core.js +29 -0
  21. package/esm2015/lib/shared/config/word/schemas/document-rels.js +16 -0
  22. package/esm2015/lib/shared/config/word/schemas/document.template.js +109 -0
  23. package/esm2015/lib/shared/config/word/schemas/font-table.js +40 -0
  24. package/esm2015/lib/shared/config/word/schemas/generic-rels.js +11 -0
  25. package/esm2015/lib/shared/config/word/schemas/index.js +13 -0
  26. package/esm2015/lib/shared/config/word/schemas/numbering.js +19 -0
  27. package/esm2015/lib/shared/config/word/schemas/rels.js +11 -0
  28. package/esm2015/lib/shared/config/word/schemas/settings.js +13 -0
  29. package/esm2015/lib/shared/config/word/schemas/styles.js +149 -0
  30. package/esm2015/lib/shared/config/word/schemas/theme.js +200 -0
  31. package/esm2015/lib/shared/config/word/schemas/web-settings.js +9 -0
  32. package/esm2015/lib/shared/config/word/utils/color-conversion.js +60 -0
  33. package/esm2015/lib/shared/config/word/utils/list.js +51 -0
  34. package/esm2015/lib/shared/config/word/utils/unit-conversion.js +30 -0
  35. package/esm2015/lib/shared/config/word/utils/url.js +9 -0
  36. package/esm2015/lib/shared/config/word/utils/vnode.js +3 -0
  37. package/esm2015/lib/shared/config/word/word-work/templates/documentTemplate.js +54 -0
  38. package/esm2015/lib/shared/config/word/word-work/templates/index.js +4 -0
  39. package/esm2015/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.js +22 -0
  40. package/esm2015/lib/shared/config/word/word-work/templates/mhtPartTemplate.js +10 -0
  41. package/esm2015/lib/shared/config/word/word-work/utils.js +26 -0
  42. package/esm2015/lib/shared/models/AreaModel.js +3 -0
  43. package/esm2015/lib/shared/models/ErrorModel.js +3 -0
  44. package/esm2015/lib/shared/models/RequestOptionsModel.js +11 -0
  45. package/esm2015/lib/shared/models/UserModel.js +3 -0
  46. package/esm2015/lib/shared/models/WordDocumentModel.js +8 -0
  47. package/esm2015/lib/shared/services/AppearanceConfiguration.service.js +37 -0
  48. package/esm2015/lib/shared/services/configuration.service.js +26 -0
  49. package/esm2015/lib/shared/services/controlvalidation.service.js +175 -0
  50. package/esm2015/lib/shared/services/environment.service.js +48 -0
  51. package/esm2015/lib/shared/services/masterlayout.service.js +89 -0
  52. package/esm2015/lib/shared/services/requesthandler.service.js +206 -0
  53. package/esm2015/lib/shared/services/stylesbundle.service.js +56 -0
  54. package/esm2015/lib/shared/services/translate.service.js +13 -0
  55. package/esm2015/lib/shared/services/translationresolver.service.js +20 -0
  56. package/esm2015/lib/shared/services/utility.service.js +96 -0
  57. package/esm2015/lib/shared/services/word-document.service.js +39 -0
  58. package/esm2015/public-api.js +20 -0
  59. package/fesm2015/bnsights-bbsf-utilities.js +4606 -0
  60. package/fesm2015/bnsights-bbsf-utilities.js.map +1 -0
  61. package/lib/bbsf-utilities.module.d.ts +6 -0
  62. package/lib/shared/authentication/auth.service.d.ts +47 -0
  63. package/lib/shared/config/environment.d.ts +1 -0
  64. package/lib/shared/config/word/constants.d.ts +124 -0
  65. package/lib/shared/config/word/docx-document.d.ts +73 -0
  66. package/lib/shared/config/word/helpers/index.d.ts +1 -0
  67. package/lib/shared/config/word/helpers/render-document-file.d.ts +4 -0
  68. package/lib/shared/config/word/helpers/xml-builder.d.ts +14 -0
  69. package/lib/shared/config/word/html-to-docx.d.ts +1 -0
  70. package/lib/shared/config/word/index.d.ts +1 -0
  71. package/lib/shared/config/word/namespaces.d.ts +36 -0
  72. package/lib/shared/config/word/schemas/content-types.d.ts +1 -0
  73. package/lib/shared/config/word/schemas/core.d.ts +1 -0
  74. package/lib/shared/config/word/schemas/document-rels.d.ts +1 -0
  75. package/lib/shared/config/word/schemas/document.template.d.ts +4 -0
  76. package/lib/shared/config/word/schemas/font-table.d.ts +1 -0
  77. package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -0
  78. package/lib/shared/config/word/schemas/index.d.ts +12 -0
  79. package/lib/shared/config/word/schemas/numbering.d.ts +1 -0
  80. package/lib/shared/config/word/schemas/rels.d.ts +1 -0
  81. package/lib/shared/config/word/schemas/settings.d.ts +1 -0
  82. package/lib/shared/config/word/schemas/styles.d.ts +1 -0
  83. package/lib/shared/config/word/schemas/theme.d.ts +1 -0
  84. package/lib/shared/config/word/schemas/web-settings.d.ts +1 -0
  85. package/lib/shared/config/word/utils/color-conversion.d.ts +7 -0
  86. package/lib/shared/config/word/utils/list.d.ts +6 -0
  87. package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -0
  88. package/lib/shared/config/word/utils/url.d.ts +1 -0
  89. package/lib/shared/config/word/utils/vnode.d.ts +1 -0
  90. package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -0
  91. package/lib/shared/config/word/word-work/templates/index.d.ts +3 -0
  92. package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -0
  93. package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -0
  94. package/lib/shared/config/word/word-work/utils.d.ts +1 -0
  95. package/lib/shared/models/AreaModel.d.ts +4 -0
  96. package/{src/lib/shared/models/ErrorModel.ts → lib/shared/models/ErrorModel.d.ts} +2 -5
  97. package/lib/shared/models/RequestOptionsModel.d.ts +11 -0
  98. package/lib/shared/models/UserModel.d.ts +6 -0
  99. package/lib/shared/models/WordDocumentModel.d.ts +16 -0
  100. package/lib/shared/services/AppearanceConfiguration.service.d.ts +11 -0
  101. package/lib/shared/services/configuration.service.d.ts +7 -0
  102. package/lib/shared/services/controlvalidation.service.d.ts +20 -0
  103. package/lib/shared/services/environment.service.d.ts +13 -0
  104. package/lib/shared/services/masterlayout.service.d.ts +24 -0
  105. package/lib/shared/services/requesthandler.service.d.ts +32 -0
  106. package/lib/shared/services/stylesbundle.service.d.ts +9 -0
  107. package/lib/shared/services/translate.service.d.ts +3 -0
  108. package/lib/shared/services/translationresolver.service.d.ts +8 -0
  109. package/lib/shared/services/utility.service.d.ts +21 -0
  110. package/lib/shared/services/word-document.service.d.ts +5 -0
  111. package/package.json +30 -20
  112. package/public-api.d.ts +16 -0
  113. package/karma.conf.js +0 -44
  114. package/ng-package.json +0 -10
  115. package/src/lib/bbsf-utilities.module.ts +0 -52
  116. package/src/lib/shared/authentication/auth.service.ts +0 -242
  117. package/src/lib/shared/config/environment.ts +0 -16
  118. package/src/lib/shared/config/word/constants.js +0 -133
  119. package/src/lib/shared/config/word/docx-document.js +0 -482
  120. package/src/lib/shared/config/word/helpers/index.js +0 -3
  121. package/src/lib/shared/config/word/helpers/render-document-file.js +0 -334
  122. package/src/lib/shared/config/word/helpers/xml-builder.js +0 -2165
  123. package/src/lib/shared/config/word/html-to-docx.js +0 -259
  124. package/src/lib/shared/config/word/index.js +0 -63
  125. package/src/lib/shared/config/word/namespaces.js +0 -40
  126. package/src/lib/shared/config/word/schemas/content-types.js +0 -26
  127. package/src/lib/shared/config/word/schemas/core.js +0 -44
  128. package/src/lib/shared/config/word/schemas/document-rels.js +0 -17
  129. package/src/lib/shared/config/word/schemas/document.template.js +0 -119
  130. package/src/lib/shared/config/word/schemas/font-table.js +0 -41
  131. package/src/lib/shared/config/word/schemas/generic-rels.js +0 -11
  132. package/src/lib/shared/config/word/schemas/index.js +0 -12
  133. package/src/lib/shared/config/word/schemas/numbering.js +0 -18
  134. package/src/lib/shared/config/word/schemas/rels.js +0 -12
  135. package/src/lib/shared/config/word/schemas/settings.js +0 -14
  136. package/src/lib/shared/config/word/schemas/styles.js +0 -152
  137. package/src/lib/shared/config/word/schemas/theme.js +0 -199
  138. package/src/lib/shared/config/word/schemas/web-settings.js +0 -10
  139. package/src/lib/shared/config/word/utils/color-conversion.js +0 -60
  140. package/src/lib/shared/config/word/utils/list.js +0 -55
  141. package/src/lib/shared/config/word/utils/unit-conversion.js +0 -53
  142. package/src/lib/shared/config/word/utils/url.js +0 -8
  143. package/src/lib/shared/config/word/utils/vnode.js +0 -3
  144. package/src/lib/shared/config/word/word-work/assets/contentTypesXml.ts +0 -1
  145. package/src/lib/shared/config/word/word-work/assets/documentXmlRels.ts +0 -1
  146. package/src/lib/shared/config/word/word-work/assets/index.ts +0 -3
  147. package/src/lib/shared/config/word/word-work/assets/relsXml.ts +0 -1
  148. package/src/lib/shared/config/word/word-work/index.ts +0 -8
  149. package/src/lib/shared/config/word/word-work/internal.ts +0 -69
  150. package/src/lib/shared/config/word/word-work/templates/documentTemplate.ts +0 -58
  151. package/src/lib/shared/config/word/word-work/templates/index.ts +0 -3
  152. package/src/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.ts +0 -21
  153. package/src/lib/shared/config/word/word-work/templates/mhtPartTemplate.ts +0 -14
  154. package/src/lib/shared/config/word/word-work/utils.ts +0 -27
  155. package/src/lib/shared/models/AreaModel.ts +0 -5
  156. package/src/lib/shared/models/RequestOptionsModel.ts +0 -13
  157. package/src/lib/shared/models/WordDocumentModel.ts +0 -19
  158. package/src/lib/shared/services/AppearanceConfiguration.service.ts +0 -30
  159. package/src/lib/shared/services/configuration.service.ts +0 -18
  160. package/src/lib/shared/services/controlvalidation.service.ts +0 -194
  161. package/src/lib/shared/services/environment.service.ts +0 -56
  162. package/src/lib/shared/services/masterlayout.service.ts +0 -89
  163. package/src/lib/shared/services/requesthandler.service.ts +0 -241
  164. package/src/lib/shared/services/stylesbundle.service.ts +0 -52
  165. package/src/lib/shared/services/translate.service.ts +0 -8
  166. package/src/lib/shared/services/translationresolver.service.ts +0 -16
  167. package/src/lib/shared/services/utility.service.ts +0 -94
  168. package/src/lib/shared/services/word-document.service.ts +0 -36
  169. package/src/public-api.ts +0 -27
  170. package/src/test.ts +0 -26
  171. package/tsconfig.lib.json +0 -39
  172. package/tsconfig.lib.prod.json +0 -11
  173. package/tsconfig.spec.json +0 -17
  174. package/tslint.json +0 -17
@@ -0,0 +1,89 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { Router } from '@angular/router';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import { AuthService } from '../authentication/auth.service';
6
+ import { EnvironmentService } from './environment.service';
7
+ import { RequestHandlerService } from './requesthandler.service';
8
+ import { StylesBundleService } from './stylesbundle.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/router";
11
+ import * as i2 from "./requesthandler.service";
12
+ import * as i3 from "../authentication/auth.service";
13
+ import * as i4 from "./stylesbundle.service";
14
+ import * as i5 from "@ngx-translate/core";
15
+ import * as i6 from "./environment.service";
16
+ export class MasterLayoutService {
17
+ constructor(router, http, authService, stylesBundleService, translate, environmentService) {
18
+ this.router = router;
19
+ this.http = http;
20
+ this.authService = authService;
21
+ this.stylesBundleService = stylesBundleService;
22
+ this.translate = translate;
23
+ this.environmentService = environmentService;
24
+ this.ApiUrl = '/api/Home/';
25
+ }
26
+ switchLang(lang, bundleEnglishName, bundleArabicName) {
27
+ this.changeLanguage(lang).subscribe((result) => {
28
+ this.updateUserInfo().subscribe((Value) => {
29
+ let UserInfoObject = Value;
30
+ this.authService.handleAccessToken(UserInfoObject.token);
31
+ this.stylesBundleService.loadThemes(lang, bundleEnglishName, bundleArabicName);
32
+ localStorage.setItem('language', lang);
33
+ this.translate.use(lang);
34
+ });
35
+ });
36
+ }
37
+ reloadComponent() {
38
+ let currentUrl = this.router.url;
39
+ this.router.routeReuseStrategy.shouldReuseRoute = () => false;
40
+ this.router.onSameUrlNavigation = 'reload';
41
+ this.router.navigate([currentUrl]);
42
+ }
43
+ changeLanguage(key) {
44
+ let params = new HttpParams();
45
+ params = params.append('UserId', this.authService.user.profile.id);
46
+ params = params.append('LanguageKey', key);
47
+ return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);
48
+ }
49
+ getUserClaims() {
50
+ return this.http.get(this.ApiUrl + 'GetUserClaims', null, null);
51
+ }
52
+ logError(error) {
53
+ let params = new HttpParams();
54
+ params = params.append('error', error);
55
+ return this.http.post(this.ApiUrl + 'LogError', null, null, params);
56
+ }
57
+ updateUserInfo() {
58
+ return this.http.get(this.ApiUrl + 'UpdateUserInfo', null, null);
59
+ }
60
+ switchRole(permissionSetID) {
61
+ this.updateRole(permissionSetID).subscribe((result) => {
62
+ this.updateUserInfo().subscribe((Value) => {
63
+ let UserInfoObject = Value;
64
+ this.authService.handleAccessToken(UserInfoObject.token);
65
+ });
66
+ });
67
+ }
68
+ updateRole(permissionSetID) {
69
+ let params = new HttpParams();
70
+ params = params.append('UserId', this.authService.user.profile.id);
71
+ params = params.append('RoleID', permissionSetID);
72
+ return this.http.post(this.ApiUrl + 'SwitchRole', null, null, params);
73
+ }
74
+ }
75
+ MasterLayoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MasterLayoutService_Factory() { return new MasterLayoutService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.RequestHandlerService), i0.ɵɵinject(i3.AuthService), i0.ɵɵinject(i4.StylesBundleService), i0.ɵɵinject(i5.TranslateService), i0.ɵɵinject(i6.EnvironmentService)); }, token: MasterLayoutService, providedIn: "root" });
76
+ MasterLayoutService.decorators = [
77
+ { type: Injectable, args: [{
78
+ providedIn: 'root',
79
+ },] }
80
+ ];
81
+ MasterLayoutService.ctorParameters = () => [
82
+ { type: Router },
83
+ { type: RequestHandlerService },
84
+ { type: AuthService },
85
+ { type: StylesBundleService },
86
+ { type: TranslateService },
87
+ { type: EnvironmentService }
88
+ ];
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVybGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9tYXN0ZXJsYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUs3RCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQW9CLE1BQWMsRUFBVSxJQUEyQixFQUFVLFdBQXdCLEVBQVUsbUJBQXdDLEVBQVUsU0FBMkIsRUFBVSxrQkFBc0M7UUFBNU4sV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRGhQLFdBQU0sR0FBRyxZQUFZLENBQUM7SUFDOE4sQ0FBQztJQUVyUCxVQUFVLENBQUMsSUFBWSxFQUFFLGlCQUF5QixFQUFFLGdCQUF3QjtRQUMxRSxJQUFJ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QUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsZUFBdUI7UUFDeEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7OztZQWxFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRRLE1BQU07WUFJTixxQkFBcUI7WUFGckIsV0FBVztZQUdYLG1CQUFtQjtZQUpuQixnQkFBZ0I7WUFFaEIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0aGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3R5bGVzQnVuZGxlU2VydmljZSB9IGZyb20gJy4vc3R5bGVzYnVuZGxlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hc3RlckxheW91dFNlcnZpY2Uge1xyXG4gIEFwaVVybCA9ICcvYXBpL0hvbWUvJztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGh0dHA6IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgc3R5bGVzQnVuZGxlU2VydmljZTogU3R5bGVzQnVuZGxlU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UpIHsgfVxyXG5cclxuICBzd2l0Y2hMYW5nKGxhbmc6IHN0cmluZywgYnVuZGxlRW5nbGlzaE5hbWU6IHN0cmluZywgYnVuZGxlQXJhYmljTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKGxhbmcpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlVXNlckluZm8oKS5zdWJzY3JpYmUoKFZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IFVzZXJJbmZvT2JqZWN0ID0gVmFsdWUgYXMgYW55O1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaGFuZGxlQWNjZXNzVG9rZW4oVXNlckluZm9PYmplY3QudG9rZW4pXHJcbiAgICAgICAgdGhpcy5zdHlsZXNCdW5kbGVTZXJ2aWNlLmxvYWRUaGVtZXMoXHJcbiAgICAgICAgICBsYW5nLFxyXG4gICAgICAgICAgYnVuZGxlRW5nbGlzaE5hbWUsXHJcbiAgICAgICAgICBidW5kbGVBcmFiaWNOYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCBsYW5nKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWxvYWRDb21wb25lbnQoKSB7XHJcbiAgICBsZXQgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbY3VycmVudFVybF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VMYW5ndWFnZShrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdVc2VySWQnLCB0aGlzLmF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5pZCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdMYW5ndWFnZUtleScsIGtleSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BcGlVcmwgKyAnVXBkYXRlTGFuZ3VhZ2UnLCBudWxsLCBudWxsLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckNsYWltcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQXBpVXJsICsgJ0dldFVzZXJDbGFpbXMnLCBudWxsLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGxvZ0Vycm9yKGVycm9yOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZXJyb3InLCBlcnJvcik7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BcGlVcmwgKyAnTG9nRXJyb3InLCBudWxsLCBudWxsLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVVc2VySW5mbygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQXBpVXJsICsgJ1VwZGF0ZVVzZXJJbmZvJywgbnVsbCwgbnVsbCk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3dpdGNoUm9sZShwZXJtaXNzaW9uU2V0SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy51cGRhdGVSb2xlKHBlcm1pc3Npb25TZXRJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVVc2VySW5mbygpLnN1YnNjcmliZSgoVmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgVXNlckluZm9PYmplY3QgPSBWYWx1ZSBhcyBhbnk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5oYW5kbGVBY2Nlc3NUb2tlbihVc2VySW5mb09iamVjdC50b2tlbilcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUm9sZShwZXJtaXNzaW9uU2V0SUQ6IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdVc2VySWQnLCB0aGlzLmF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5pZCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdSb2xlSUQnLCBwZXJtaXNzaW9uU2V0SUQpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQXBpVXJsICsgJ1N3aXRjaFJvbGUnLCBudWxsLCBudWxsLCBwYXJhbXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,206 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpClient, HttpHeaders } from "@angular/common/http";
3
+ import { RequestOptionsModel } from '../models/RequestOptionsModel';
4
+ import { AuthService } from '../authentication/auth.service';
5
+ import { EnvironmentService } from './environment.service';
6
+ import { Observable, Subject, throwError } from 'rxjs';
7
+ import { UtilityService } from './utility.service';
8
+ import { map, takeUntil, tap } from 'rxjs/operators';
9
+ import { BBSFTranslateService } from './translate.service';
10
+ import { plainToClass } from 'class-transformer';
11
+ import { Router } from '@angular/router';
12
+ export class RequestHandlerService {
13
+ constructor(http, authService, environmentService, utilityService, bbsfTranslateService, router) {
14
+ //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor
15
+ this.http = http;
16
+ this.authService = authService;
17
+ this.environmentService = environmentService;
18
+ this.utilityService = utilityService;
19
+ this.bbsfTranslateService = bbsfTranslateService;
20
+ this.router = router;
21
+ this.requestOptions = new RequestOptionsModel();
22
+ this.currentLanguage = "";
23
+ this.onDestroy$ = new Subject();
24
+ this.bbsfTranslateService.onLangChange.subscribe((event) => {
25
+ if (this.currentLanguage != event.lang) {
26
+ this.currentLanguage = event.lang;
27
+ }
28
+ });
29
+ }
30
+ getLuckyNumber() {
31
+ return Observable.create((subject) => {
32
+ setInterval(() => {
33
+ const number = Math.floor(Math.random() * 10);
34
+ console.log(number);
35
+ subject.next(number);
36
+ }, 1000);
37
+ }).pipe(takeUntil(this.onDestroy$));
38
+ }
39
+ get(Url, params, responseType, requestOptions) {
40
+ if (requestOptions)
41
+ this.requestOptions = requestOptions;
42
+ let headers = this.getHeaders();
43
+ if (!this.requestOptions.disableBlockUI)
44
+ this.utilityService.startBlockUI();
45
+ let object;
46
+ return this.http.get(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
47
+ if (!this.requestOptions.disableBlockUI)
48
+ this.utilityService.stopBlockUI();
49
+ }, error => {
50
+ if (!this.requestOptions.disableErrorHandler)
51
+ this.handleError(error);
52
+ }), map((data) => {
53
+ if (this.requestOptions.castResponsetoClass)
54
+ return plainToClass(responseType, data, { excludeExtraneousValues: true });
55
+ else
56
+ return data;
57
+ }));
58
+ }
59
+ post(Url, model, responseType, params, requestOptions) {
60
+ if (requestOptions)
61
+ this.requestOptions = requestOptions;
62
+ let headers = this.getHeaders();
63
+ if (!this.requestOptions.disableBlockUI)
64
+ this.utilityService.startBlockUI();
65
+ return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
66
+ if (!this.requestOptions.disableBlockUI)
67
+ this.utilityService.stopBlockUI();
68
+ }, error => {
69
+ if (!this.requestOptions.disableErrorHandler)
70
+ this.handleError(error);
71
+ }), map((data) => {
72
+ if (this.requestOptions.castResponsetoClass)
73
+ return plainToClass(responseType, data, { excludeExtraneousValues: true });
74
+ else
75
+ return data;
76
+ }));
77
+ }
78
+ delete(Url, deletedId, requestOptions, responseType, params) {
79
+ if (requestOptions)
80
+ this.requestOptions = requestOptions;
81
+ let headers = this.getHeaders();
82
+ if (!this.requestOptions.disableBlockUI)
83
+ this.utilityService.startBlockUI();
84
+ return this.http.delete(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
85
+ if (!this.requestOptions.disableBlockUI)
86
+ this.utilityService.stopBlockUI();
87
+ }, error => {
88
+ if (!this.requestOptions.disableErrorHandler)
89
+ this.handleError(error);
90
+ }), map((data) => {
91
+ if (this.requestOptions.castResponsetoClass)
92
+ return plainToClass(responseType, data, { excludeExtraneousValues: true });
93
+ else
94
+ return data;
95
+ }));
96
+ }
97
+ put(Url, model, params, responseType, requestOptions) {
98
+ if (requestOptions)
99
+ this.requestOptions = requestOptions;
100
+ let headers = this.getHeaders();
101
+ if (!this.requestOptions.disableBlockUI)
102
+ this.utilityService.startBlockUI();
103
+ return this.http.put(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
104
+ if (!this.requestOptions.disableBlockUI)
105
+ this.utilityService.stopBlockUI();
106
+ }, error => {
107
+ if (!this.requestOptions.disableErrorHandler)
108
+ this.handleError(error);
109
+ }), map((data) => {
110
+ if (this.requestOptions.castResponsetoClass)
111
+ return plainToClass(responseType, data, { excludeExtraneousValues: true });
112
+ else
113
+ return data;
114
+ }));
115
+ }
116
+ patch(Url, model, responseType, params, requestOptions) {
117
+ if (requestOptions)
118
+ this.requestOptions = requestOptions;
119
+ let headers = new HttpHeaders({
120
+ 'Content-Type': 'application/json',
121
+ 'Authorization': this.authService.authorizationHeaderValue(),
122
+ });
123
+ this.currentLanguage = localStorage.getItem('language');
124
+ headers = headers.set('Accept-Language', this.currentLanguage.toString());
125
+ headers = headers.set('ignore-cookies', 'true');
126
+ if (!this.requestOptions.disableBlockUI)
127
+ this.utilityService.startBlockUI();
128
+ return this.http.patch(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
129
+ if (!this.requestOptions.disableBlockUI)
130
+ this.utilityService.stopBlockUI();
131
+ }, error => {
132
+ if (!this.requestOptions.disableErrorHandler)
133
+ this.handleError(error);
134
+ }), map((data) => {
135
+ if (this.requestOptions.castResponsetoClass)
136
+ return plainToClass(responseType, data, { excludeExtraneousValues: true });
137
+ else
138
+ return data;
139
+ }));
140
+ }
141
+ download(Url, params, requestOptions) {
142
+ if (requestOptions)
143
+ this.requestOptions = requestOptions;
144
+ let headers = this.getHeaders();
145
+ if (!this.requestOptions.disableBlockUI)
146
+ this.utilityService.startBlockUI();
147
+ return this.http.get(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
148
+ if (!this.requestOptions.disableBlockUI)
149
+ this.utilityService.stopBlockUI();
150
+ }, error => {
151
+ if (!this.requestOptions.disableErrorHandler)
152
+ this.handleError(error);
153
+ }));
154
+ }
155
+ destroyHandler() {
156
+ this.onDestroy$.next();
157
+ }
158
+ ngOnDestroy() {
159
+ console.log("clearInterval");
160
+ this.destroyHandler();
161
+ }
162
+ handleError(err) {
163
+ var isEnglish = this.utilityService.getCurrentLanguage() == "en";
164
+ if (err.error instanceof ErrorEvent) {
165
+ this.utilityService.notifyErrorMessage();
166
+ }
167
+ else {
168
+ if (err.status == 400)
169
+ throwError(err); //error 400 is thrown to be catch by the Form component to handle Fluent validation errors
170
+ else if (err.status == 401)
171
+ this.router.navigate(["/Admin/account/login"]);
172
+ else if (err.status == 403)
173
+ this.utilityService.notifyErrorMessage(isEnglish ? "Sorry, You're not authorized to access this action" : "عذرا ليس لديك الصلاحيه لهذا الطلب");
174
+ else if (err.status == 510)
175
+ this.utilityService.notifyErrorMessage(isEnglish ? "Can not delete this item as it is related to others" : "لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى");
176
+ else if (err.status == 515)
177
+ this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));
178
+ else {
179
+ console.log(`error message is: ${err.error ? err.error.Message : err.message}`);
180
+ this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue("ErrorMassage"));
181
+ }
182
+ }
183
+ this.utilityService.stopBlockUI();
184
+ }
185
+ getHeaders() {
186
+ return new HttpHeaders({
187
+ 'Content-Type': 'application/json',
188
+ 'Authorization': this.authService.authorizationHeaderValue(),
189
+ 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,
190
+ 'Accept-Language': localStorage.getItem('language'),
191
+ 'ignore-cookies': 'true'
192
+ });
193
+ }
194
+ }
195
+ RequestHandlerService.decorators = [
196
+ { type: Injectable }
197
+ ];
198
+ RequestHandlerService.ctorParameters = () => [
199
+ { type: HttpClient },
200
+ { type: AuthService },
201
+ { type: EnvironmentService },
202
+ { type: UtilityService },
203
+ { type: BBSFTranslateService },
204
+ { type: Router }
205
+ ];
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdGhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3JlcXVlc3RoYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxNQUFNLE9BQU8scUJBQXFCO0lBSWhDLFlBRVksSUFBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsa0JBQXNDLEVBQ3RDLGNBQThCLEVBQzlCLG9CQUEwQyxFQUMxQyxNQUFjO1FBRXhCLDBHQUEwRztRQVBoRyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHVCQUFrQixH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Q0FBQyxNQUFNLElBQUksR0FBRztnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtpQkFDbEY7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTthQUM3RjtTQUNGO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUU7WUFDNUQsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVE7WUFDMUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDbkQsZ0JBQWdCLEVBQUUsTUFBTTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFsT0YsVUFBVTs7O1lBWkYsVUFBVTtZQUVWLFdBQVc7WUFDWCxrQkFBa0I7WUFFbEIsY0FBYztZQUVkLG9CQUFvQjtZQUVwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9uc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL1JlcXVlc3RPcHRpb25zTW9kZWwnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGhlbnRpY2F0aW9uL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3V0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG4gIHByaXZhdGUgY3VycmVudExhbmd1YWdlID0gXCJcIjtcclxuICBwdWJsaWMgb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3JcclxuICAgIChcclxuICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgIC8vdXNpbmcgbG9jYWxTdG9yYWdlICB0byBhdm9pZCBjYWxsIGdldEN1cnJlbnRMYW5ndWFnZSgpIGJlY2F1c2UgaXQgaXMgbm90IGFsbCB0byB1c2UgYXN5bmMgaW4gY29uc3RydWN0b3JcclxuXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSAhPSBldmVudC5sYW5nKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBldmVudC5sYW5nO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEx1Y2t5TnVtYmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChzdWJqZWN0OiBTdWJqZWN0PG51bWJlcj4pID0+IHtcclxuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhudW1iZXIpXHJcbiAgICAgICAgc3ViamVjdC5uZXh0KG51bWJlcik7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldDxUPihVcmw6IHN0cmluZywgcGFyYW1zPzogSHR0cFBhcmFtcywgcmVzcG9uc2VUeXBlPzogbmV3ICgpID0+IFQsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgaWYgKHJlcXVlc3RPcHRpb25zKVxyXG4gICAgICB0aGlzLnJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XHJcblxyXG4gICAgbGV0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIGlmICghdGhpcy5yZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIGxldCBvYmplY3Q6IFQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCwgeyBoZWFkZXJzOiBoZWFkZXJzLCBwYXJhbXM6IHBhcmFtcyB9KS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcclxuICAgICAgdGFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUVycm9ySGFuZGxlcilcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KSwgbWFwKChkYXRhOiBUKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdE9wdGlvbnMuY2FzdFJlc3BvbnNldG9DbGFzcylcclxuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MocmVzcG9uc2VUeXBlLCBkYXRhLCB7IGV4Y2x1ZGVFeHRyYW5lb3VzVmFsdWVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICB9KVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPFQ+O1xyXG4gIH1cclxuXHJcbiAgcG9zdDxUPihVcmw6IHN0cmluZywgbW9kZWw/OiBhbnksIHJlc3BvbnNlVHlwZT86IG5ldyAoKSA9PiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zLCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zTW9kZWwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuXHJcbiAgICBpZiAocmVxdWVzdE9wdGlvbnMpXHJcbiAgICAgIHRoaXMucmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcclxuXHJcbiAgICBsZXQgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKCF0aGlzLnJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgVXJsLCBtb2RlbCwgeyBoZWFkZXJzOiBoZWFkZXJzLCBwYXJhbXM6IHBhcmFtcywgcmVzcG9uc2VUeXBlOiB0aGlzLnJlcXVlc3RPcHRpb25zLnJlc3BvbnNlVHlwZSB9KS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcclxuICAgICAgdGFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUVycm9ySGFuZGxlcilcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KSwgbWFwKChkYXRhOiBUKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdE9wdGlvbnMuY2FzdFJlc3BvbnNldG9DbGFzcylcclxuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MocmVzcG9uc2VUeXBlLCBkYXRhLCB7IGV4Y2x1ZGVFeHRyYW5lb3VzVmFsdWVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZTxUPihVcmw6IHN0cmluZywgZGVsZXRlZElkOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCwgcmVzcG9uc2VUeXBlPzogbmV3ICgpID0+IFQsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmIChyZXF1ZXN0T3B0aW9ucylcclxuICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xyXG5cclxuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCArIGAvJHtkZWxldGVkSWR9YCwgeyBoZWFkZXJzOiBoZWFkZXJzLCBwYXJhbXM6IHBhcmFtcyB9KS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcclxuICAgICAgdGFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUVycm9ySGFuZGxlcilcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KSwgbWFwKChkYXRhOiBUKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdE9wdGlvbnMuY2FzdFJlc3BvbnNldG9DbGFzcylcclxuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MocmVzcG9uc2VUeXBlLCBkYXRhLCB7IGV4Y2x1ZGVFeHRyYW5lb3VzVmFsdWVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1dDxUPihVcmw6IHN0cmluZywgbW9kZWw/OiBhbnksIHBhcmFtcz86IEh0dHBQYXJhbXMsIHJlc3BvbnNlVHlwZT86IG5ldyAoKSA9PiBULCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zTW9kZWwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmIChyZXF1ZXN0T3B0aW9ucylcclxuICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xyXG5cclxuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCwgbW9kZWwsIHsgaGVhZGVyczogaGVhZGVycywgcGFyYW1zOiBwYXJhbXMsIHJlc3BvbnNlVHlwZTogdGhpcy5yZXF1ZXN0T3B0aW9ucy5yZXNwb25zZVR5cGUgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcXVlc3RPcHRpb25zLmRpc2FibGVFcnJvckhhbmRsZXIpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSksIG1hcCgoZGF0YTogVCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3RPcHRpb25zLmNhc3RSZXNwb25zZXRvQ2xhc3MpXHJcbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHJlc3BvbnNlVHlwZSwgZGF0YSwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwYXRjaDxUPihVcmw6IHN0cmluZywgbW9kZWw/OiBhbnksIHJlc3BvbnNlVHlwZT86IG5ldyAoKSA9PiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zLCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zTW9kZWwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuXHJcbiAgICBpZiAocmVxdWVzdE9wdGlvbnMpXHJcbiAgICAgIHRoaXMucmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcclxuXHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKSxcclxuXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdC1MYW5ndWFnZScsIHRoaXMuY3VycmVudExhbmd1YWdlLnRvU3RyaW5nKCkpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdpZ25vcmUtY29va2llcycsICd0cnVlJyk7XHJcbiAgICBpZiAoIXRoaXMucmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCwgbW9kZWwsIHsgaGVhZGVyczogaGVhZGVycywgcGFyYW1zOiBwYXJhbXMsIHJlc3BvbnNlVHlwZTogdGhpcy5yZXF1ZXN0T3B0aW9ucy5yZXNwb25zZVR5cGUgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcXVlc3RPcHRpb25zLmRpc2FibGVFcnJvckhhbmRsZXIpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSksIG1hcCgoZGF0YTogVCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3RPcHRpb25zLmNhc3RSZXNwb25zZXRvQ2xhc3MpXHJcbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHJlc3BvbnNlVHlwZSwgZGF0YSwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgZG93bmxvYWQ8VD4oVXJsOiBzdHJpbmcsIHBhcmFtcz86IEh0dHBQYXJhbXMsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgaWYgKHJlcXVlc3RPcHRpb25zKVxyXG4gICAgICB0aGlzLnJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XHJcblxyXG4gICAgbGV0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIGlmICghdGhpcy5yZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgVXJsLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHBhcmFtczogcGFyYW1zLCByZXNwb25zZVR5cGU6IHRoaXMucmVxdWVzdE9wdGlvbnMucmVzcG9uc2VUeXBlIH0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLFxyXG4gICAgICB0YXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXF1ZXN0T3B0aW9ucy5kaXNhYmxlRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlc3Ryb3lIYW5kbGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJjbGVhckludGVydmFsXCIpXHJcbiAgICB0aGlzLmRlc3Ryb3lIYW5kbGVyKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgdmFyIGlzRW5nbGlzaCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJlblwiO1xyXG4gICAgaWYgKGVyci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChlcnIuc3RhdHVzID09IDQwMClcclxuICAgICAgICB0aHJvd0Vycm9yKGVycik7Ly9lcnJvciA0MDAgaXMgdGhyb3duIHRvIGJlIGNhdGNoIGJ5IHRoZSBGb3JtIGNvbXBvbmVudCB0byBoYW5kbGUgRmx1ZW50IHZhbGlkYXRpb24gZXJyb3JzXHJcbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDAxKVxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9BZG1pbi9hY2NvdW50L2xvZ2luXCJdKVxyXG4gICAgICBlbHNlIGlmIChlcnIuc3RhdHVzID09IDQwMylcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShpc0VuZ2xpc2ggPyBcIlNvcnJ5LCBZb3UncmUgbm90IGF1dGhvcml6ZWQgdG8gYWNjZXNzIHRoaXMgYWN0aW9uXCIgOiBcIti52LDYsdinINmE2YrYsyDZhNiv2YrZgyDYp9mE2LXZhNin2K3ZitmHINmE2YfYsNinINin2YTYt9mE2KhcIilcclxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA1MTApXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoaXNFbmdsaXNoID8gXCJDYW4gbm90IGRlbGV0ZSB0aGlzIGl0ZW0gYXMgaXQgaXMgcmVsYXRlZCB0byBvdGhlcnNcIiA6IFwi2YTYpyDZitmF2YPZhiDYrdiw2YEg2YfYsNinINin2YTYudmG2LXYsSDZhNij2YbZhyDZhdix2KrYqNi3INio2LnZhtin2LXYsSDYo9iu2LHZiVwiKVxyXG4gICAgICBlbHNlIGlmIChlcnIuc3RhdHVzID09IDUxNSlcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSgoZXJyLmVycm9yID8gZXJyLmVycm9yLk1lc3NhZ2UgOiBlcnIubWVzc2FnZSkpXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBlcnJvciBtZXNzYWdlIGlzOiAke2Vyci5lcnJvciA/IGVyci5lcnJvci5NZXNzYWdlIDogZXJyLm1lc3NhZ2V9YClcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFcnJvck1hc3NhZ2VcIikpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SGVhZGVycygpIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCksXHJcbiAgICAgICdDbGllbnQtTG9jYWwtVGltZS1ab25lJzogSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxyXG4gICAgICAnQWNjZXB0LUxhbmd1YWdlJzogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyksXHJcbiAgICAgICdpZ25vcmUtY29va2llcyc6ICd0cnVlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,56 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { BBSFTranslateService } from './translate.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "./translate.service";
7
+ export class StylesBundleService {
8
+ constructor(document, translateService) {
9
+ this.document = document;
10
+ this.translateService = translateService;
11
+ }
12
+ loadThemes(lang, bundleEnglishName, bundleArabicName) {
13
+ if (lang == "ar") {
14
+ this.loadStyleBundle(bundleArabicName.toString());
15
+ document.querySelector('html').setAttribute("b-lang", "ar"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale
16
+ document.querySelector('html').setAttribute("dir", "rtl");
17
+ }
18
+ else {
19
+ this.loadStyleBundle(bundleEnglishName.toString());
20
+ document.querySelector('html').setAttribute("b-lang", "en");
21
+ document.querySelector('html').setAttribute("dir", "ltr");
22
+ }
23
+ }
24
+ loadThemesColor(theme, bundleDarkName, bundleLightName) {
25
+ if (theme == "Light")
26
+ this.loadStyleBundle(bundleLightName.toString());
27
+ else
28
+ this.loadStyleBundle(bundleDarkName.toString());
29
+ }
30
+ loadStyleBundle(styleName) {
31
+ const head = this.document.getElementsByTagName('head')[0];
32
+ let themeLink = this.document.getElementById('client-theme');
33
+ if (themeLink && themeLink.href.includes(styleName)) {
34
+ return;
35
+ }
36
+ else if (themeLink && !themeLink.href.includes(styleName)) {
37
+ themeLink.remove();
38
+ }
39
+ const style = this.document.createElement('link');
40
+ style.id = 'client-theme';
41
+ style.rel = 'stylesheet';
42
+ style.href = `${styleName}`;
43
+ head.appendChild(style);
44
+ }
45
+ }
46
+ StylesBundleService.ɵprov = i0.ɵɵdefineInjectable({ factory: function StylesBundleService_Factory() { return new StylesBundleService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i2.BBSFTranslateService)); }, token: StylesBundleService, providedIn: "root" });
47
+ StylesBundleService.decorators = [
48
+ { type: Injectable, args: [{
49
+ providedIn: 'root'
50
+ },] }
51
+ ];
52
+ StylesBundleService.ctorParameters = () => [
53
+ { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
54
+ { type: BBSFTranslateService }
55
+ ];
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzYnVuZGxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9zdHlsZXNidW5kbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFLM0QsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFzQyxRQUFrQixFQUFVLGdCQUFzQztRQUFsRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtJQUFJLENBQUM7SUFFN0csVUFBVSxDQUFDLElBQVksRUFBRSxpQkFBeUIsRUFBRSxnQkFBd0I7UUFDMUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUNqRCxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQywwRUFBMEU7WUFDdkksUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNEO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDbEQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzRDtJQUVILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYSxFQUFFLGNBQXNCLEVBQUUsZUFBdUI7UUFDNUUsSUFBSSxLQUFLLElBQUksT0FBTztZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDOztZQUVqRCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxlQUFlLENBQUMsU0FBaUI7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQW9CLENBQUM7UUFFaEYsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDbkQsT0FBTztTQUNSO2FBQ0ksSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6RCxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUMxQixLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztRQUN6QixLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7O1lBM0NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBR2lELFFBQVEsdUJBQTNDLE1BQU0sU0FBQyxRQUFRO1lBUHJCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUksIE5nQmxvY2tVSSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0eWxlc0J1bmRsZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIGxvYWRUaGVtZXMobGFuZzogc3RyaW5nLCBidW5kbGVFbmdsaXNoTmFtZTogc3RyaW5nLCBidW5kbGVBcmFiaWNOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChsYW5nID09IFwiYXJcIikge1xyXG4gICAgICB0aGlzLmxvYWRTdHlsZUJ1bmRsZShidW5kbGVBcmFiaWNOYW1lLnRvU3RyaW5nKCkpXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKS5zZXRBdHRyaWJ1dGUoXCJiLWxhbmdcIiwgXCJhclwiKTsgLy91c2UgYi1sYW5nIGluc3RlYWQgb2YgbGFuZyB0byBmaXggZmlyZWZveCBudW1iZXIgaW5wdXRzIGluIEFyYWJpYyBsb2NhbGVcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpLnNldEF0dHJpYnV0ZShcImRpclwiLCBcInJ0bFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFN0eWxlQnVuZGxlKGJ1bmRsZUVuZ2xpc2hOYW1lLnRvU3RyaW5nKCkpXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKS5zZXRBdHRyaWJ1dGUoXCJiLWxhbmdcIiwgXCJlblwiKTtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpLnNldEF0dHJpYnV0ZShcImRpclwiLCBcImx0clwiKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBsb2FkVGhlbWVzQ29sb3IodGhlbWU6IHN0cmluZywgYnVuZGxlRGFya05hbWU6IHN0cmluZywgYnVuZGxlTGlnaHROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGVtZSA9PSBcIkxpZ2h0XCIpXHJcbiAgICAgIHRoaXMubG9hZFN0eWxlQnVuZGxlKGJ1bmRsZUxpZ2h0TmFtZS50b1N0cmluZygpKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5sb2FkU3R5bGVCdW5kbGUoYnVuZGxlRGFya05hbWUudG9TdHJpbmcoKSlcclxuICB9XHJcblxyXG4gIGxvYWRTdHlsZUJ1bmRsZShzdHlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaGVhZCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuXHJcbiAgICBsZXQgdGhlbWVMaW5rID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpZW50LXRoZW1lJykgYXMgSFRNTExpbmtFbGVtZW50O1xyXG5cclxuICAgIGlmICh0aGVtZUxpbmsgJiYgdGhlbWVMaW5rLmhyZWYuaW5jbHVkZXMoc3R5bGVOYW1lKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGVtZUxpbmsgJiYgIXRoZW1lTGluay5ocmVmLmluY2x1ZGVzKHN0eWxlTmFtZSkpIHtcclxuICAgICAgdGhlbWVMaW5rLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuICAgIHN0eWxlLmlkID0gJ2NsaWVudC10aGVtZSc7XHJcbiAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XHJcbiAgICBzdHlsZS5ocmVmID0gYCR7c3R5bGVOYW1lfWA7XHJcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcclxuICB9XHJcblxyXG59XHJcblxyXG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { TranslateService } from "@ngx-translate/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ export class BBSFTranslateService extends TranslateService {
6
+ }
7
+ BBSFTranslateService.ɵprov = i0.ɵɵdefineInjectable({ factory: function BBSFTranslateService_Factory() { return new BBSFTranslateService(i0.ɵɵinject(i1.TranslateStore), i0.ɵɵinject(i1.TranslateLoader), i0.ɵɵinject(i1.TranslateCompiler), i0.ɵɵinject(i1.TranslateParser), i0.ɵɵinject(i1.MissingTranslationHandler), i0.ɵɵinject(i1.USE_DEFAULT_LANG), i0.ɵɵinject(i1.USE_STORE), i0.ɵɵinject(i1.USE_EXTEND), i0.ɵɵinject(i1.DEFAULT_LANGUAGE)); }, token: BBSFTranslateService, providedIn: "root" });
8
+ BBSFTranslateService.decorators = [
9
+ { type: Injectable, args: [{
10
+ providedIn: 'root'
11
+ },] }
12
+ ];
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLdkQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjs7OztZQUh6RCxVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIGV4dGVuZHMgVHJhbnNsYXRlU2VydmljZSB7XHJcbn0iXX0=
@@ -0,0 +1,20 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { BBSFTranslateService } from "./translate.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./translate.service";
5
+ export class TranslationResolverService {
6
+ constructor(translateService) {
7
+ this.translateService = translateService;
8
+ }
9
+ resolve() {
10
+ return this.translateService.getTranslation(this.translateService.currentLang);
11
+ }
12
+ }
13
+ TranslationResolverService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslationResolverService_Factory() { return new TranslationResolverService(i0.ɵɵinject(i1.BBSFTranslateService)); }, token: TranslationResolverService, providedIn: "root" });
14
+ TranslationResolverService.decorators = [
15
+ { type: Injectable, args: [{ providedIn: 'root' },] }
16
+ ];
17
+ TranslationResolverService.ctorParameters = () => [
18
+ { type: BBSFTranslateService }
19
+ ];
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25yZXNvbHZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRpb25yZXNvbHZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUkzRCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLGdCQUFzQztRQUF0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO0lBQUcsQ0FBQztJQUU5RCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs7OztZQVJGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQUh6QixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25SZXNvbHZlclNlcnZpY2UgaW1wbGVtZW50cyBSZXNvbHZlPGFueT4ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ1xyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,96 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { ToastrService } from 'ngx-toastr';
4
+ import { BlockUI } from 'ng-block-ui';
5
+ import { AuthService } from '../authentication/auth.service';
6
+ import { BBSFTranslateService } from './translate.service';
7
+ import { AppInjector } from '../../bbsf-utilities.module';
8
+ import { EnvironmentService } from './environment.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./translate.service";
11
+ import * as i2 from "../authentication/auth.service";
12
+ import * as i3 from "./environment.service";
13
+ export class UtilityService {
14
+ constructor(translator, authService, environmentService) {
15
+ this.translator = translator;
16
+ this.authService = authService;
17
+ this.environmentService = environmentService;
18
+ this.isCreatedBefore = false;
19
+ }
20
+ getResourceValue(Key) {
21
+ let ResourceValue = this.translator.instant(Key);
22
+ return ResourceValue;
23
+ }
24
+ getCurrentLanguage() {
25
+ let currentLanguage = this.environmentService.getDefaultLanguage();
26
+ let lang = localStorage.getItem('language');
27
+ if (lang)
28
+ currentLanguage = lang;
29
+ else
30
+ localStorage.setItem('language', currentLanguage);
31
+ return currentLanguage;
32
+ }
33
+ isCurrentLanguageEnglish() {
34
+ return this.getCurrentLanguage() == "en";
35
+ }
36
+ isCurrentLanguageArabic() {
37
+ return this.getCurrentLanguage() == "ar";
38
+ }
39
+ notifySuccessMessage(Message, title, time, showHeader = true) {
40
+ let MessageTemplate = this.getResourceValue("SuccessMessage");
41
+ let titleTemplate;
42
+ if (Message) {
43
+ MessageTemplate = Message;
44
+ }
45
+ if (title) {
46
+ titleTemplate = title;
47
+ }
48
+ let toaster = AppInjector.get(ToastrService);
49
+ showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);
50
+ }
51
+ notifyErrorMessage(Message, title, time, showHeader = true) {
52
+ let MessageTemplate = this.getResourceValue("ErrorMessage");
53
+ let titleTemplate = this.getResourceValue("Error");
54
+ if (Message) {
55
+ MessageTemplate = Message;
56
+ }
57
+ if (title) {
58
+ titleTemplate = title;
59
+ }
60
+ const toaster = AppInjector.get(ToastrService);
61
+ showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);
62
+ }
63
+ notifyWarningMessage(Message, title, time, showHeader = true) {
64
+ let MessageTemplate = this.getResourceValue("WarningMessage");
65
+ let titleTemplate = this.getResourceValue("Warning");
66
+ if (Message) {
67
+ MessageTemplate = Message;
68
+ }
69
+ if (title) {
70
+ titleTemplate = title;
71
+ }
72
+ const toaster = AppInjector.get(ToastrService);
73
+ showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);
74
+ }
75
+ startBlockUI() {
76
+ this.blockUI.start();
77
+ }
78
+ stopBlockUI() {
79
+ this.blockUI.stop();
80
+ }
81
+ }
82
+ UtilityService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UtilityService_Factory() { return new UtilityService(i0.ɵɵinject(i1.BBSFTranslateService), i0.ɵɵinject(i2.AuthService), i0.ɵɵinject(i3.EnvironmentService)); }, token: UtilityService, providedIn: "root" });
83
+ UtilityService.decorators = [
84
+ { type: Injectable, args: [{
85
+ providedIn: 'root'
86
+ },] }
87
+ ];
88
+ UtilityService.ctorParameters = () => [
89
+ { type: BBSFTranslateService },
90
+ { type: AuthService },
91
+ { type: EnvironmentService }
92
+ ];
93
+ __decorate([
94
+ BlockUI()
95
+ ], UtilityService.prototype, "blockUI", void 0);
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFPM0QsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBb0IsVUFBZ0MsRUFBVSxXQUF3QixFQUFVLGtCQUFzQztRQUFsSCxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUh0SSxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUt4QixDQUFDO0lBR0QsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxPQUFPLGFBQWEsQ0FBQztJQUV2QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25FLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMs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WUFSUSxvQkFBb0I7WUFEcEIsV0FBVztZQUdYLGtCQUFrQjs7QUFVZDtJQUFWLE9BQU8sRUFBRTsrQ0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSG9zdCwgU2tpcFNlbGYsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEJsb2NrVUksIE5nQmxvY2tVSSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoZW50aWNhdGlvbi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBJbmplY3RvciB9IGZyb20gJy4uLy4uL2Jic2YtdXRpbGl0aWVzLm1vZHVsZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFV0aWxpdHlTZXJ2aWNlIHtcclxuXHJcbiAgaXNDcmVhdGVkQmVmb3JlID0gZmFsc2U7XHJcbiAgQEJsb2NrVUkoKSBibG9ja1VJOiBOZ0Jsb2NrVUk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRvcjogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCkge1xyXG5cclxuICB9XHJcblxyXG5cclxuICBnZXRSZXNvdXJjZVZhbHVlKEtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBSZXNvdXJjZVZhbHVlID0gdGhpcy50cmFuc2xhdG9yLmluc3RhbnQoS2V5KVxyXG4gICAgcmV0dXJuIFJlc291cmNlVmFsdWU7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudExhbmd1YWdlKCkge1xyXG4gICAgbGV0IGN1cnJlbnRMYW5ndWFnZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldERlZmF1bHRMYW5ndWFnZSgpO1xyXG4gICAgbGV0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcclxuICAgIGlmIChsYW5nKVxyXG4gICAgICBjdXJyZW50TGFuZ3VhZ2UgPSBsYW5nO1xyXG4gICAgZWxzZVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCBjdXJyZW50TGFuZ3VhZ2UpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRMYW5ndWFnZTtcclxuICB9XHJcbiAgaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJlblwiXHJcbiAgfVxyXG4gIGlzQ3VycmVudExhbmd1YWdlQXJhYmljKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJhclwiXHJcbiAgfVxyXG5cclxuICBub3RpZnlTdWNjZXNzTWVzc2FnZShNZXNzYWdlPzogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgdGltZT86IG51bWJlciwgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWUpIHtcclxuXHJcbiAgICBsZXQgTWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRSZXNvdXJjZVZhbHVlKFwiU3VjY2Vzc01lc3NhZ2VcIik7XHJcbiAgICBsZXQgdGl0bGVUZW1wbGF0ZTogc3RyaW5nO1xyXG4gICAgaWYgKE1lc3NhZ2UpIHtcclxuICAgICAgTWVzc2FnZVRlbXBsYXRlID0gTWVzc2FnZTtcclxuICAgIH1cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICB0aXRsZVRlbXBsYXRlID0gdGl0bGU7XHJcbiAgICB9XHJcbiAgICBsZXQgdG9hc3RlciA9IEFwcEluamVjdG9yLmdldChUb2FzdHJTZXJ2aWNlKTtcclxuICAgIHNob3dIZWFkZXIgPyB0b2FzdGVyLnN1Y2Nlc3MoTWVzc2FnZVRlbXBsYXRlLCB0aXRsZVRlbXBsYXRlKSA6IHRvYXN0ZXIuc3VjY2VzcyhNZXNzYWdlVGVtcGxhdGUpO1xyXG4gIH1cclxuXHJcbiAgbm90aWZ5RXJyb3JNZXNzYWdlKE1lc3NhZ2U/OiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nLCB0aW1lPzogbnVtYmVyLCBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZSkge1xyXG5cclxuICAgIGxldCBNZXNzYWdlVGVtcGxhdGUgPSB0aGlzLmdldFJlc291cmNlVmFsdWUoXCJFcnJvck1lc3NhZ2VcIik7XHJcbiAgICBsZXQgdGl0bGVUZW1wbGF0ZSA9IHRoaXMuZ2V0UmVzb3VyY2VWYWx1ZShcIkVycm9yXCIpO1xyXG4gICAgaWYgKE1lc3NhZ2UpIHtcclxuICAgICAgTWVzc2FnZVRlbXBsYXRlID0gTWVzc2FnZTtcclxuICAgIH1cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICB0aXRsZVRlbXBsYXRlID0gdGl0bGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b2FzdGVyID0gQXBwSW5qZWN0b3IuZ2V0KFRvYXN0clNlcnZpY2UpO1xyXG4gICAgc2hvd0hlYWRlciA/IHRvYXN0ZXIuZXJyb3IoTWVzc2FnZVRlbXBsYXRlLCB0aXRsZVRlbXBsYXRlKSA6IHRvYXN0ZXIuZXJyb3IoTWVzc2FnZVRlbXBsYXRlKTtcclxuICB9XHJcblxyXG4gIG5vdGlmeVdhcm5pbmdNZXNzYWdlKE1lc3NhZ2U/OiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nLCB0aW1lPzogbnVtYmVyLCBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZSkge1xyXG5cclxuICAgIGxldCBNZXNzYWdlVGVtcGxhdGUgPSB0aGlzLmdldFJlc291cmNlVmFsdWUoXCJXYXJuaW5nTWVzc2FnZVwiKTtcclxuICAgIGxldCB0aXRsZVRlbXBsYXRlID0gdGhpcy5nZXRSZXNvdXJjZVZhbHVlKFwiV2FybmluZ1wiKTtcclxuICAgIGlmIChNZXNzYWdlKSB7XHJcbiAgICAgIE1lc3NhZ2VUZW1wbGF0ZSA9IE1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgdGl0bGVUZW1wbGF0ZSA9IHRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9hc3RlciA9IEFwcEluamVjdG9yLmdldChUb2FzdHJTZXJ2aWNlKTtcclxuICAgIHNob3dIZWFkZXIgPyB0b2FzdGVyLndhcm5pbmcoTWVzc2FnZVRlbXBsYXRlLCB0aXRsZVRlbXBsYXRlKSA6IHRvYXN0ZXIud2FybmluZyhNZXNzYWdlVGVtcGxhdGUpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRCbG9ja1VJKCkge1xyXG4gICAgdGhpcy5ibG9ja1VJLnN0YXJ0KCk7XHJcbiAgfVxyXG4gIHN0b3BCbG9ja1VJKCkge1xyXG4gICAgdGhpcy5ibG9ja1VJLnN0b3AoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,39 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { generateContainer as GenerateDOCX } from '../config//word/index';
4
+ import * as i0 from "@angular/core";
5
+ export class WordDocumentService {
6
+ generateWordByteFile(model) {
7
+ return __awaiter(this, void 0, void 0, function* () {
8
+ let documentOptions = {};
9
+ if (model.options.isLandscape)
10
+ documentOptions.orientation = 'landscape';
11
+ documentOptions.pageSize = {
12
+ width: model.options.pageWidth * 15,
13
+ height: model.options.pageHeight * 15,
14
+ };
15
+ documentOptions.margins = {
16
+ top: model.options.top * 15,
17
+ right: model.options.right * 15,
18
+ bottom: model.options.bottom * 15,
19
+ left: model.options.left * 15,
20
+ header: model.options.top * 15 * 2,
21
+ footer: model.options.bottom * 15 * 2,
22
+ gutter: 0,
23
+ };
24
+ documentOptions.footer = true;
25
+ documentOptions.header = true;
26
+ documentOptions.pageNumber = model.options.showPaging;
27
+ documentOptions.table = { row: { cantSplit: true } };
28
+ var fileBuffer = yield GenerateDOCX(model.body, model.header, documentOptions, model.footer);
29
+ return fileBuffer;
30
+ });
31
+ }
32
+ }
33
+ WordDocumentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WordDocumentService_Factory() { return new WordDocumentService(); }, token: WordDocumentService, providedIn: "root" });
34
+ WordDocumentService.decorators = [
35
+ { type: Injectable, args: [{
36
+ providedIn: 'root',
37
+ },] }
38
+ ];
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1kb2N1bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvd29yZC1kb2N1bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLMUUsTUFBTSxPQUFPLG1CQUFtQjtJQUN4QixvQkFBb0IsQ0FBQyxLQUF3Qjs7WUFDakQsSUFBSSxlQUFlLEdBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUFFLGVBQWUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3pFLGVBQWUsQ0FBQyxRQUFRLEdBQUc7Z0JBQ3pCLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsRUFBRTthQUN0QyxDQUFDO1lBQ0YsZUFBZSxDQUFDLE9BQU8sR0FBRztnQkFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUU7Z0JBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFO2dCQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRTtnQkFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUMsQ0FBQztnQkFDaEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBQyxDQUFDO2dCQUNuQyxNQUFNLEVBQUUsQ0FBQzthQUNWLENBQUM7WUFDRixlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUM5QixlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUM5QixlQUFlLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3RELGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLFVBQVUsR0FBRyxNQUFNLFlBQVksQ0FDakMsS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsTUFBTSxFQUNaLGVBQWUsRUFDZixLQUFLLENBQUMsTUFBTSxDQUNiLENBQUM7WUFDRixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0tBQUE7Ozs7WUEvQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZUNvbnRhaW5lciBhcyBHZW5lcmF0ZURPQ1ggfSBmcm9tICcuLi9jb25maWcvL3dvcmQvaW5kZXgnO1xyXG5pbXBvcnQgeyBXb3JkRG9jdW1lbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9Xb3JkRG9jdW1lbnRNb2RlbCc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JkRG9jdW1lbnRTZXJ2aWNlIHtcclxuICBhc3luYyBnZW5lcmF0ZVdvcmRCeXRlRmlsZShtb2RlbDogV29yZERvY3VtZW50TW9kZWwpIHtcclxuICAgIGxldCBkb2N1bWVudE9wdGlvbnM6IGFueSA9IHt9O1xyXG4gICAgaWYgKG1vZGVsLm9wdGlvbnMuaXNMYW5kc2NhcGUpIGRvY3VtZW50T3B0aW9ucy5vcmllbnRhdGlvbiA9ICdsYW5kc2NhcGUnO1xyXG4gICAgZG9jdW1lbnRPcHRpb25zLnBhZ2VTaXplID0ge1xyXG4gICAgICB3aWR0aDogbW9kZWwub3B0aW9ucy5wYWdlV2lkdGggKiAxNSxcclxuICAgICAgaGVpZ2h0OiBtb2RlbC5vcHRpb25zLnBhZ2VIZWlnaHQgKiAxNSxcclxuICAgIH07XHJcbiAgICBkb2N1bWVudE9wdGlvbnMubWFyZ2lucyA9IHtcclxuICAgICAgdG9wOiBtb2RlbC5vcHRpb25zLnRvcCAqIDE1LFxyXG4gICAgICByaWdodDogbW9kZWwub3B0aW9ucy5yaWdodCAqIDE1LFxyXG4gICAgICBib3R0b206IG1vZGVsLm9wdGlvbnMuYm90dG9tICogMTUsXHJcbiAgICAgIGxlZnQ6IG1vZGVsLm9wdGlvbnMubGVmdCAqIDE1LFxyXG4gICAgICBoZWFkZXI6IG1vZGVsLm9wdGlvbnMudG9wICogMTUqMixcclxuICAgICAgZm9vdGVyOiBtb2RlbC5vcHRpb25zLmJvdHRvbSAqIDE1KjIsXHJcbiAgICAgIGd1dHRlcjogMCxcclxuICAgIH07XHJcbiAgICBkb2N1bWVudE9wdGlvbnMuZm9vdGVyID0gdHJ1ZTtcclxuICAgIGRvY3VtZW50T3B0aW9ucy5oZWFkZXIgPSB0cnVlO1xyXG4gICAgZG9jdW1lbnRPcHRpb25zLnBhZ2VOdW1iZXIgPSBtb2RlbC5vcHRpb25zLnNob3dQYWdpbmc7XHJcbiAgICBkb2N1bWVudE9wdGlvbnMudGFibGUgPSB7IHJvdzogeyBjYW50U3BsaXQ6IHRydWUgfSB9O1xyXG4gICAgdmFyIGZpbGVCdWZmZXIgPSBhd2FpdCBHZW5lcmF0ZURPQ1goXHJcbiAgICAgIG1vZGVsLmJvZHksXHJcbiAgICAgIG1vZGVsLmhlYWRlcixcclxuICAgICAgZG9jdW1lbnRPcHRpb25zLFxyXG4gICAgICBtb2RlbC5mb290ZXJcclxuICAgICk7XHJcbiAgICByZXR1cm4gZmlsZUJ1ZmZlcjtcclxuICB9XHJcbn1cclxuIl19