@falcon-ng/tailwind 0.0.2 → 0.0.4

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 (231) hide show
  1. package/esm2020/falcon-ng-tailwind.mjs +5 -0
  2. package/esm2020/lib/base-control.mjs +50 -0
  3. package/esm2020/lib/base-form-component.mjs +234 -0
  4. package/esm2020/lib/component/auto-complete/auto-complete.component.mjs +33 -0
  5. package/esm2020/lib/component/bottom-sheet/bottom-sheet.component.mjs +29 -0
  6. package/esm2020/lib/component/button/button.component.mjs +27 -0
  7. package/esm2020/lib/component/button-toggle/button-toggle.component.mjs +32 -0
  8. package/esm2020/lib/component/checkbox/checkbox.component.mjs +18 -0
  9. package/esm2020/lib/component/chips/chip.component.mjs +109 -0
  10. package/esm2020/lib/component/date-picker/date-picker.component.mjs +17 -0
  11. package/esm2020/lib/component/dialog/dialog.component.mjs +21 -0
  12. package/esm2020/lib/component/pagination/pagination.component.mjs +95 -0
  13. package/esm2020/lib/component/progress-bar/progress-bar.component.mjs +20 -0
  14. package/esm2020/lib/component/progress-spinner/progress-spinner.component.mjs +26 -0
  15. package/esm2020/lib/component/radio/radio.component.mjs +31 -0
  16. package/esm2020/lib/component/rich-text-editor/rich-text-editor.component.mjs +15 -0
  17. package/esm2020/lib/component/select/select.component.mjs +35 -0
  18. package/esm2020/lib/component/slide-toggle/slide-toggle.component.mjs +14 -0
  19. package/esm2020/lib/component/slider/slider.component.mjs +15 -0
  20. package/esm2020/lib/component/snack-bar/snack-bar.component.mjs +11 -0
  21. package/esm2020/lib/component/table/table.component.mjs +74 -0
  22. package/esm2020/lib/component/textarea/textarea.component.mjs +16 -0
  23. package/esm2020/lib/component/textbox/textbox.component.mjs +17 -0
  24. package/esm2020/lib/control-builder/control-builder.component.mjs +18 -0
  25. package/esm2020/lib/control-type/AutoComplete.mjs +8 -0
  26. package/esm2020/lib/control-type/Button.mjs +8 -0
  27. package/esm2020/lib/control-type/ButtonToggle.mjs +8 -0
  28. package/esm2020/lib/control-type/CheckBox.mjs +8 -0
  29. package/esm2020/lib/control-type/Chip.mjs +8 -0
  30. package/esm2020/lib/control-type/DatePicker.mjs +8 -0
  31. package/esm2020/lib/control-type/Divider.mjs +8 -0
  32. package/esm2020/lib/control-type/Editor.mjs +8 -0
  33. package/esm2020/lib/control-type/Radio.mjs +8 -0
  34. package/esm2020/lib/control-type/RichTextEditor.mjs +8 -0
  35. package/esm2020/lib/control-type/SlideToggle.mjs +8 -0
  36. package/esm2020/lib/control-type/Slider.mjs +8 -0
  37. package/esm2020/lib/control-type/Textarea.mjs +8 -0
  38. package/esm2020/lib/control-type/Textbox.mjs +8 -0
  39. package/esm2020/lib/control-type/select.mjs +8 -0
  40. package/esm2020/lib/falcon-core.module.mjs +230 -0
  41. package/esm2020/lib/model/constant.mjs +32 -0
  42. package/esm2020/lib/model/enum.mjs +2 -0
  43. package/esm2020/lib/model/environments.mjs +3 -0
  44. package/esm2020/lib/model/interface.mjs +2 -0
  45. package/esm2020/lib/model/ivalidator.mjs +2 -0
  46. package/esm2020/lib/module/angularmaterial.module.mjs +189 -0
  47. package/esm2020/lib/reactive-field.directive.mjs +28 -0
  48. package/esm2020/lib/service/appsetting.service.mjs +55 -0
  49. package/esm2020/lib/service/http/generic-http-client.mjs +197 -0
  50. package/esm2020/lib/service/http/igeneric-http-client.mjs +10 -0
  51. package/esm2020/lib/service/logger.service.mjs +78 -0
  52. package/esm2020/lib/service/open-id/TokenHelperService.mjs +71 -0
  53. package/esm2020/lib/service/open-id/auth-guard.service.mjs +30 -0
  54. package/esm2020/lib/service/open-id/auth.service.mjs +154 -0
  55. package/esm2020/public-api.mjs +47 -0
  56. package/fesm2015/falcon-ng-tailwind.mjs +1988 -0
  57. package/fesm2015/falcon-ng-tailwind.mjs.map +1 -0
  58. package/fesm2020/falcon-ng-tailwind.mjs +1962 -0
  59. package/fesm2020/falcon-ng-tailwind.mjs.map +1 -0
  60. package/index.d.ts +5 -0
  61. package/lib/base-control.d.ts +104 -0
  62. package/lib/base-form-component.d.ts +169 -0
  63. package/lib/component/auto-complete/auto-complete.component.d.ts +17 -0
  64. package/lib/component/bottom-sheet/bottom-sheet.component.d.ts +11 -0
  65. package/lib/component/button/button.component.d.ts +12 -0
  66. package/lib/component/button-toggle/button-toggle.component.d.ts +14 -0
  67. package/lib/component/checkbox/checkbox.component.d.ts +10 -0
  68. package/lib/component/chips/chip.component.d.ts +35 -0
  69. package/lib/component/date-picker/date-picker.component.d.ts +9 -0
  70. package/lib/component/dialog/dialog.component.d.ts +8 -0
  71. package/lib/component/pagination/pagination.component.d.ts +20 -0
  72. package/lib/component/progress-bar/progress-bar.component.d.ts +11 -0
  73. package/lib/component/progress-spinner/progress-spinner.component.d.ts +12 -0
  74. package/lib/component/radio/radio.component.d.ts +14 -0
  75. package/lib/component/rich-text-editor/rich-text-editor.component.d.ts +9 -0
  76. package/lib/component/select/select.component.d.ts +15 -0
  77. package/lib/component/slide-toggle/slide-toggle.component.d.ts +9 -0
  78. package/lib/component/slider/slider.component.d.ts +9 -0
  79. package/lib/component/snack-bar/snack-bar.component.d.ts +5 -0
  80. package/lib/component/table/table.component.d.ts +21 -0
  81. package/lib/component/textarea/textarea.component.d.ts +9 -0
  82. package/lib/component/textbox/textbox.component.d.ts +9 -0
  83. package/lib/control-builder/control-builder.component.d.ts +9 -0
  84. package/lib/control-type/AutoComplete.d.ts +5 -0
  85. package/lib/control-type/Button.d.ts +5 -0
  86. package/lib/control-type/ButtonToggle.d.ts +5 -0
  87. package/{src/lib/control-type/Chip.ts → lib/control-type/CheckBox.d.ts} +2 -3
  88. package/lib/control-type/Chip.d.ts +5 -0
  89. package/lib/control-type/DatePicker.d.ts +5 -0
  90. package/lib/control-type/Divider.d.ts +5 -0
  91. package/lib/control-type/Editor.d.ts +5 -0
  92. package/lib/control-type/Radio.d.ts +5 -0
  93. package/lib/control-type/RichTextEditor.d.ts +5 -0
  94. package/{src/lib/control-type/Radio.ts → lib/control-type/SlideToggle.d.ts} +2 -3
  95. package/lib/control-type/Slider.d.ts +5 -0
  96. package/lib/control-type/Textarea.d.ts +5 -0
  97. package/lib/control-type/Textbox.d.ts +5 -0
  98. package/lib/control-type/select.d.ts +5 -0
  99. package/lib/falcon-core.module.d.ts +35 -0
  100. package/lib/model/constant.d.ts +5 -0
  101. package/lib/model/enum.d.ts +144 -0
  102. package/{src/lib/model/environments.ts → lib/model/environments.d.ts} +5 -7
  103. package/{src/lib/model/interface.ts → lib/model/interface.d.ts} +80 -91
  104. package/{src/lib/model/ivalidator.ts → lib/model/ivalidator.d.ts} +3 -3
  105. package/lib/module/angularmaterial.module.d.ts +49 -0
  106. package/lib/reactive-field.directive.d.ts +14 -0
  107. package/lib/service/appsetting.service.d.ts +22 -0
  108. package/lib/service/http/generic-http-client.d.ts +121 -0
  109. package/lib/service/http/igeneric-http-client.d.ts +92 -0
  110. package/lib/service/logger.service.d.ts +18 -0
  111. package/lib/service/open-id/TokenHelperService.d.ts +11 -0
  112. package/lib/service/open-id/auth-guard.service.d.ts +11 -0
  113. package/lib/service/open-id/auth.service.d.ts +36 -0
  114. package/package.json +22 -2
  115. package/public-api.d.ts +34 -0
  116. package/ng-package.json +0 -7
  117. package/src/lib/base-control.ts +0 -142
  118. package/src/lib/base-form-component.ts +0 -363
  119. package/src/lib/component/auto-complete/auto-complete.component.html +0 -39
  120. package/src/lib/component/auto-complete/auto-complete.component.scss +0 -0
  121. package/src/lib/component/auto-complete/auto-complete.component.spec.ts +0 -23
  122. package/src/lib/component/auto-complete/auto-complete.component.ts +0 -31
  123. package/src/lib/component/bottom-sheet/bottom-sheet.component.html +0 -9
  124. package/src/lib/component/bottom-sheet/bottom-sheet.component.scss +0 -0
  125. package/src/lib/component/bottom-sheet/bottom-sheet.component.spec.ts +0 -23
  126. package/src/lib/component/bottom-sheet/bottom-sheet.component.ts +0 -19
  127. package/src/lib/component/button/button.component.css +0 -0
  128. package/src/lib/component/button/button.component.html +0 -54
  129. package/src/lib/component/button/button.component.spec.ts +0 -23
  130. package/src/lib/component/button/button.component.ts +0 -17
  131. package/src/lib/component/button-toggle/button-toggle.component.html +0 -21
  132. package/src/lib/component/button-toggle/button-toggle.component.scss +0 -0
  133. package/src/lib/component/button-toggle/button-toggle.component.spec.ts +0 -23
  134. package/src/lib/component/button-toggle/button-toggle.component.ts +0 -26
  135. package/src/lib/component/checkbox/checkbox.component.html +0 -6
  136. package/src/lib/component/checkbox/checkbox.component.scss +0 -0
  137. package/src/lib/component/checkbox/checkbox.component.spec.ts +0 -23
  138. package/src/lib/component/checkbox/checkbox.component.ts +0 -17
  139. package/src/lib/component/chips/chip.component.html +0 -75
  140. package/src/lib/component/chips/chip.component.scss +0 -3
  141. package/src/lib/component/chips/chip.component.spec.ts +0 -23
  142. package/src/lib/component/chips/chip.component.ts +0 -125
  143. package/src/lib/component/date-picker/date-picker.component.html +0 -18
  144. package/src/lib/component/date-picker/date-picker.component.scss +0 -0
  145. package/src/lib/component/date-picker/date-picker.component.spec.ts +0 -23
  146. package/src/lib/component/date-picker/date-picker.component.ts +0 -13
  147. package/src/lib/component/dialog/dialog.component.html +0 -12
  148. package/src/lib/component/dialog/dialog.component.scss +0 -3
  149. package/src/lib/component/dialog/dialog.component.spec.ts +0 -23
  150. package/src/lib/component/dialog/dialog.component.ts +0 -12
  151. package/src/lib/component/pagination/pagination.component.html +0 -10
  152. package/src/lib/component/pagination/pagination.component.scss +0 -0
  153. package/src/lib/component/pagination/pagination.component.spec.ts +0 -23
  154. package/src/lib/component/pagination/pagination.component.ts +0 -86
  155. package/src/lib/component/progress-bar/progress-bar.component.html +0 -1
  156. package/src/lib/component/progress-bar/progress-bar.component.scss +0 -0
  157. package/src/lib/component/progress-bar/progress-bar.component.spec.ts +0 -23
  158. package/src/lib/component/progress-bar/progress-bar.component.ts +0 -15
  159. package/src/lib/component/progress-spinner/progress-spinner.component.html +0 -7
  160. package/src/lib/component/progress-spinner/progress-spinner.component.scss +0 -0
  161. package/src/lib/component/progress-spinner/progress-spinner.component.spec.ts +0 -23
  162. package/src/lib/component/progress-spinner/progress-spinner.component.ts +0 -16
  163. package/src/lib/component/radio/radio.component.html +0 -13
  164. package/src/lib/component/radio/radio.component.scss +0 -14
  165. package/src/lib/component/radio/radio.component.spec.ts +0 -23
  166. package/src/lib/component/radio/radio.component.ts +0 -29
  167. package/src/lib/component/rich-text-editor/rich-text-editor.component.html +0 -10
  168. package/src/lib/component/rich-text-editor/rich-text-editor.component.scss +0 -0
  169. package/src/lib/component/rich-text-editor/rich-text-editor.component.spec.ts +0 -23
  170. package/src/lib/component/rich-text-editor/rich-text-editor.component.ts +0 -13
  171. package/src/lib/component/select/select.component.html +0 -25
  172. package/src/lib/component/select/select.component.scss +0 -0
  173. package/src/lib/component/select/select.component.spec.ts +0 -23
  174. package/src/lib/component/select/select.component.ts +0 -32
  175. package/src/lib/component/slide-toggle/slide-toggle.component.html +0 -7
  176. package/src/lib/component/slide-toggle/slide-toggle.component.scss +0 -0
  177. package/src/lib/component/slide-toggle/slide-toggle.component.spec.ts +0 -23
  178. package/src/lib/component/slide-toggle/slide-toggle.component.ts +0 -13
  179. package/src/lib/component/slider/slider.component.html +0 -11
  180. package/src/lib/component/slider/slider.component.scss +0 -0
  181. package/src/lib/component/slider/slider.component.spec.ts +0 -23
  182. package/src/lib/component/slider/slider.component.ts +0 -13
  183. package/src/lib/component/snack-bar/snack-bar.component.html +0 -1
  184. package/src/lib/component/snack-bar/snack-bar.component.scss +0 -0
  185. package/src/lib/component/snack-bar/snack-bar.component.spec.ts +0 -23
  186. package/src/lib/component/snack-bar/snack-bar.component.ts +0 -10
  187. package/src/lib/component/table/table.component.html +0 -82
  188. package/src/lib/component/table/table.component.scss +0 -17
  189. package/src/lib/component/table/table.component.spec.ts +0 -23
  190. package/src/lib/component/table/table.component.ts +0 -54
  191. package/src/lib/component/textarea/textarea.component.html +0 -22
  192. package/src/lib/component/textarea/textarea.component.scss +0 -3
  193. package/src/lib/component/textarea/textarea.component.spec.ts +0 -23
  194. package/src/lib/component/textarea/textarea.component.ts +0 -13
  195. package/src/lib/component/textbox/textbox.component.html +0 -27
  196. package/src/lib/component/textbox/textbox.component.scss +0 -3
  197. package/src/lib/component/textbox/textbox.component.spec.ts +0 -23
  198. package/src/lib/component/textbox/textbox.component.ts +0 -13
  199. package/src/lib/control-builder/control-builder.component.html +0 -5
  200. package/src/lib/control-builder/control-builder.component.scss +0 -0
  201. package/src/lib/control-builder/control-builder.component.ts +0 -14
  202. package/src/lib/control-type/AutoComplete.ts +0 -6
  203. package/src/lib/control-type/Button.ts +0 -6
  204. package/src/lib/control-type/ButtonToggle.ts +0 -6
  205. package/src/lib/control-type/CheckBox.ts +0 -6
  206. package/src/lib/control-type/DatePicker.ts +0 -6
  207. package/src/lib/control-type/Divider.ts +0 -6
  208. package/src/lib/control-type/Editor.ts +0 -6
  209. package/src/lib/control-type/RichTextEditor.ts +0 -6
  210. package/src/lib/control-type/SlideToggle.ts +0 -6
  211. package/src/lib/control-type/Slider.ts +0 -6
  212. package/src/lib/control-type/select.ts +0 -6
  213. package/src/lib/control-type/textarea.ts +0 -6
  214. package/src/lib/control-type/textbox.ts +0 -6
  215. package/src/lib/falcon-core.module.ts +0 -141
  216. package/src/lib/model/constant.ts +0 -32
  217. package/src/lib/model/enum.ts +0 -151
  218. package/src/lib/module/angularmaterial.module.ts +0 -98
  219. package/src/lib/reactive-field.directive.ts +0 -24
  220. package/src/lib/service/appsetting.service.ts +0 -57
  221. package/src/lib/service/http/generic-http-client.ts +0 -205
  222. package/src/lib/service/http/httpInterceptor.ts +0 -36
  223. package/src/lib/service/http/igeneric-http-client.ts +0 -110
  224. package/src/lib/service/logger.service.ts +0 -75
  225. package/src/lib/service/open-id/TokenHelperService.ts +0 -76
  226. package/src/lib/service/open-id/auth-guard.service.ts +0 -25
  227. package/src/lib/service/open-id/auth.service.ts +0 -179
  228. package/src/public-api.ts +0 -35
  229. package/tsconfig.lib.json +0 -15
  230. package/tsconfig.lib.prod.json +0 -10
  231. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,154 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { UserManager } from 'oidc-client';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../logger.service";
5
+ import * as i2 from "./TokenHelperService";
6
+ export class AuthService {
7
+ constructor(logger, tokenHelperService) {
8
+ this.logger = logger;
9
+ this.tokenHelperService = tokenHelperService;
10
+ this.initialized = false;
11
+ this.signingOut = false;
12
+ }
13
+ async initialize(environment) {
14
+ if (this.initialized)
15
+ return;
16
+ this.settings = this.getClientSettings(environment);
17
+ this.userManager = new UserManager(this.settings);
18
+ this.userManager.events.addUserLoaded(user => {
19
+ this.user = user;
20
+ });
21
+ this.userManager.events.addAccessTokenExpiring(() => {
22
+ this.logger.info("IdSvr token expiring " + new Date().toLocaleString());
23
+ });
24
+ this.userManager.events.addAccessTokenExpired(() => {
25
+ this.logger.info("IdSvr token expired " + new Date().toLocaleString());
26
+ this.logout(false);
27
+ });
28
+ this.userManager.events.addSilentRenewError(e => {
29
+ this.logger.error("IdSvr silent renew error " + e.message + new Date().toLocaleString());
30
+ this.logout(false);
31
+ });
32
+ this.userManager.events.addUserLoaded(user => {
33
+ this.logger.info("IdSvr user session is ready " + new Date().toLocaleString());
34
+ this.accessToken = this.tokenHelperService.getPayloadFromToken(user.access_token, false);
35
+ this.user = user;
36
+ });
37
+ this.userManager.events.addUserUnloaded(() => {
38
+ this.logger.info("IdSvr user session has ended " + new Date().toLocaleString());
39
+ if (!this.signingOut) {
40
+ this.startAuthentication(window.location.pathname + window.location.search);
41
+ }
42
+ });
43
+ this.userManager.events.addUserSignedOut(() => {
44
+ this.logger.info("IdSvr user signed out " + new Date().toLocaleString());
45
+ this.logout(false);
46
+ });
47
+ this.user = await this.userManager.getUser();
48
+ this.initialized = true;
49
+ }
50
+ isLoggedIn() {
51
+ return this.user != null && !this.user.expired;
52
+ }
53
+ getUser() {
54
+ return this.userManager.getUser();
55
+ }
56
+ getProfile() {
57
+ return this.user.profile;
58
+ }
59
+ getClaims() {
60
+ return this.user.profile;
61
+ }
62
+ getAuthorizationHeaderValue() {
63
+ if (this.user != null)
64
+ return `${this.user.token_type} ${this.user.access_token}`;
65
+ return '';
66
+ }
67
+ getAccessToken() {
68
+ return this.accessToken || this.tokenHelperService.getPayloadFromToken(this.user.access_token, false);
69
+ ;
70
+ }
71
+ async startAuthentication(returnUrl) {
72
+ this.logger.info("[AuthService] startAuthentication", returnUrl);
73
+ await this.userManager.clearStaleState();
74
+ await this.userManager.signinRedirect({ data: { returnUrl: returnUrl } }).catch(err => {
75
+ //this.$log.debug("IdSvr sign in failed", err);
76
+ return err;
77
+ });
78
+ }
79
+ async completeAuthentication() {
80
+ this.logger.info("[AuthService] completeAuthentication");
81
+ let user = await new Promise((resolve, reject) => {
82
+ this.userManager.signinRedirectCallback().then(user => {
83
+ resolve(user);
84
+ }).catch(error => {
85
+ reject(error);
86
+ });
87
+ });
88
+ this.user = user;
89
+ return this.user;
90
+ }
91
+ login() {
92
+ return this.userManager.signinRedirect();
93
+ }
94
+ renewToken() {
95
+ return this.userManager.signinSilent();
96
+ }
97
+ logout(signoutRedirect) {
98
+ if (signoutRedirect === undefined || signoutRedirect !== false) {
99
+ this.signingOut = true;
100
+ signoutRedirect = true;
101
+ }
102
+ return this.userManager.signoutRedirect();
103
+ }
104
+ getClientSettings(environment) {
105
+ return {
106
+ authority: environment?.openID?.authority,
107
+ client_id: environment?.openID?.client_id,
108
+ redirect_uri: environment?.openID?.redirect_uri,
109
+ post_logout_redirect_uri: environment?.openID?.post_logout_redirect_uri,
110
+ response_type: environment?.openID?.response_type,
111
+ scope: environment?.openID?.scope,
112
+ filterProtocolClaims: environment?.openID?.filterProtocolClaims,
113
+ loadUserInfo: true,
114
+ monitorSession: true,
115
+ silent_redirect_uri: environment?.openID?.silent_redirect_uri,
116
+ automaticSilentRenew: environment?.openID?.automaticSilentRenew,
117
+ accessTokenExpiringNotificationTime: 20,
118
+ checkSessionInterval: 2000,
119
+ silentRequestTimeout: 20000,
120
+ };
121
+ }
122
+ async isServiceReady() {
123
+ return new Promise(async (resolve, reject) => {
124
+ if (this.initialized) {
125
+ this.logger.info("[AuthService] isServiceReady", true);
126
+ resolve(true);
127
+ }
128
+ else {
129
+ this.logger.info("[AuthService] isServiceReady", false);
130
+ reject(false);
131
+ }
132
+ });
133
+ }
134
+ }
135
+ AuthService.USER_LOADED_EVENT = "USER_LOADED";
136
+ AuthService.USER_UNLOADED_EVENT = "USER_UNLOADED";
137
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, deps: [{ token: i1.LoggerService }, { token: i2.TokenHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
138
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, providedIn: 'root' });
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, decorators: [{
140
+ type: Injectable,
141
+ args: [{
142
+ providedIn: 'root'
143
+ }]
144
+ }], ctorParameters: function () { return [{ type: i1.LoggerService }, { type: i2.TokenHelperService }]; } });
145
+ export function authServiceFactory(authService, appSettings, environment) {
146
+ return async () => {
147
+ appSettings.isServiceReady.subscribe(item => {
148
+ if (item)
149
+ authService.initialize(environment);
150
+ });
151
+ };
152
+ }
153
+ ;
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsV0FBVyxFQUFzQixNQUFNLGFBQWEsQ0FBQzs7OztBQVM1RSxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFvQixNQUFxQixFQUFVLGtCQUFzQztRQUFyRSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVJqRixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQVksS0FBSyxDQUFDO0lBSXBDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQWlDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFD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QUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3Sk0sNkJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ2xDLCtCQUFtQixHQUFHLGVBQWUsQ0FBQzt3R0FGbEMsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFrS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQXdCLEVBQUUsV0FBOEIsRUFBRSxXQUFpQztJQUM1SCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLElBQUksSUFBSTtnQkFDTixXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9maWxlLCBVc2VyLCBVc2VyTWFuYWdlciwgVXNlck1hbmFnZXJTZXR0aW5nc30gZnJvbSAnb2lkYy1jbGllbnQnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1Rva2VuSGVscGVyU2VydmljZX0gZnJvbSAnLi9Ub2tlbkhlbHBlclNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudFZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHtBcHBTZXR0aW5nU2VydmljZX0gZnJvbSBcIi4uL2FwcHNldHRpbmcuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHN0YXRpYyBVU0VSX0xPQURFRF9FVkVOVCA9IFwiVVNFUl9MT0FERURcIjtcbiAgc3RhdGljIFVTRVJfVU5MT0FERURfRVZFTlQgPSBcIlVTRVJfVU5MT0FERURcIjtcblxuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgdXNlck1hbmFnZXIhOiBVc2VyTWFuYWdlcjtcbiAgcHJpdmF0ZSB1c2VyOiBhbnk7XG4gIHB1YmxpYyBzZXR0aW5ncyE6IFVzZXJNYW5hZ2VyU2V0dGluZ3M7XG5cbiAgcHJpdmF0ZSBhY2Nlc3NUb2tlbiE6IE9iamVjdDtcbiAgcHJpdmF0ZSBzaWduaW5nT3V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByaXZhdGUgdG9rZW5IZWxwZXJTZXJ2aWNlOiBUb2tlbkhlbHBlclNlcnZpY2UpIHtcblxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50KTtcbiAgICB0aGlzLnVzZXJNYW5hZ2VyID0gbmV3IFVzZXJNYW5hZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyaW5nKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB0b2tlbiBleHBpcmluZyBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyZWQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcIklkU3ZyIHRva2VuIGV4cGlyZWQgXCIgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCkpO1xuICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkU2lsZW50UmVuZXdFcnJvcihlID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiSWRTdnIgc2lsZW50IHJlbmV3IGVycm9yIFwiICsgZS5tZXNzYWdlICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzZXNzaW9uIGlzIHJlYWR5IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRQYXlsb2FkRnJvbVRva2VuKHVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclVubG9hZGVkKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB1c2VyIHNlc3Npb24gaGFzIGVuZGVkIFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcblxuICAgICAgaWYgKCF0aGlzLnNpZ25pbmdPdXQpIHtcbiAgICAgICAgdGhpcy5zdGFydEF1dGhlbnRpY2F0aW9uKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclNpZ25lZE91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzaWduZWQgb3V0IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMudXNlck1hbmFnZXIuZ2V0VXNlcigpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAhPSBudWxsICYmICF0aGlzLnVzZXIuZXhwaXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCk6IFByb21pc2U8VXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyTWFuYWdlci5nZXRVc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvZmlsZSgpOiBQcm9maWxlIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLnByb2ZpbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xhaW1zKCk6IFByb2ZpbGUge1xuICAgIHJldHVybiB0aGlzLnVzZXIucHJvZmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51c2VyICE9IG51bGwpXG4gICAgICByZXR1cm4gYCR7dGhpcy51c2VyLnRva2VuX3R5cGV9ICR7dGhpcy51c2VyLmFjY2Vzc190b2tlbn1gO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldEFjY2Vzc1Rva2VuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW4gfHwgdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0aGlzLnVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRBdXRoZW50aWNhdGlvbihyZXR1cm5Vcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIHN0YXJ0QXV0aGVudGljYXRpb25cIiwgcmV0dXJuVXJsKTtcbiAgICBhd2FpdCB0aGlzLnVzZXJNYW5hZ2VyLmNsZWFyU3RhbGVTdGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3Qoe2RhdGE6IHtyZXR1cm5Vcmw6IHJldHVyblVybH19KS5jYXRjaChlcnIgPT4ge1xuICAgICAgLy90aGlzLiRsb2cuZGVidWcoXCJJZFN2ciBzaWduIGluIGZhaWxlZFwiLCBlcnIpO1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlQXV0aGVudGljYXRpb24oKTogUHJvbWlzZTxPaWRjLlVzZXI+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uXCIpO1xuICAgIGxldCB1c2VyID0gYXdhaXQgbmV3IFByb21pc2U8T2lkYy5Vc2VyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblJlZGlyZWN0Q2FsbGJhY2soKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICByZXNvbHZlKHVzZXIpXG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgbG9naW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5ld1Rva2VuKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblNpbGVudCgpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dChzaWdub3V0UmVkaXJlY3Q/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBpZiAoc2lnbm91dFJlZGlyZWN0ID09PSB1bmRlZmluZWQgfHwgc2lnbm91dFJlZGlyZWN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zaWduaW5nT3V0ID0gdHJ1ZTtcbiAgICAgIHNpZ25vdXRSZWRpcmVjdCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbm91dFJlZGlyZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50OiBFbnZpcm9ubWVudFZpZXdNb2RlbCk6IFVzZXJNYW5hZ2VyU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBhdXRob3JpdHk6IGVudmlyb25tZW50Py5vcGVuSUQ/LmF1dGhvcml0eSxcbiAgICAgIGNsaWVudF9pZDogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uY2xpZW50X2lkLFxuICAgICAgcmVkaXJlY3RfdXJpOiBlbnZpcm9ubWVudD8ub3BlbklEPy5yZWRpcmVjdF91cmksXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSxcbiAgICAgIHJlc3BvbnNlX3R5cGU6IGVudmlyb25tZW50Py5vcGVuSUQ/LnJlc3BvbnNlX3R5cGUsXG4gICAgICBzY29wZTogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uc2NvcGUsXG4gICAgICBmaWx0ZXJQcm90b2NvbENsYWltczogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uZmlsdGVyUHJvdG9jb2xDbGFpbXMsXG4gICAgICBsb2FkVXNlckluZm86IHRydWUsXG4gICAgICBtb25pdG9yU2Vzc2lvbjogdHJ1ZSxcbiAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnNpbGVudF9yZWRpcmVjdF91cmksXG4gICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uYXV0b21hdGljU2lsZW50UmVuZXcsXG4gICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTogMjAsIC8vZGVmYXVsdCA2MFxuICAgICAgY2hlY2tTZXNzaW9uSW50ZXJ2YWw6IDIwMDAsIC8vZGVmYXVsdCAyMDAwXG4gICAgICBzaWxlbnRSZXF1ZXN0VGltZW91dDogMjAwMDAsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGlzU2VydmljZVJlYWR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBpc1NlcnZpY2VSZWFkeVwiLCB0cnVlKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIGlzU2VydmljZVJlYWR5XCIsIGZhbHNlKTtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aFNlcnZpY2VGYWN0b3J5KGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgYXBwU2V0dGluZ3M6IEFwcFNldHRpbmdTZXJ2aWNlLCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBhcHBTZXR0aW5ncy5pc1NlcnZpY2VSZWFkeS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSlcbiAgICAgICAgYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZShlbnZpcm9ubWVudCk7XG4gICAgfSk7XG4gIH1cbn07Il19
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Public API Surface of falcon-core-module
3
+ */
4
+ export * from './lib/module/angularmaterial.module';
5
+ export * from './lib/falcon-core.module';
6
+ export * from './lib/reactive-field.directive';
7
+ /*
8
+ * Public API Surface of falcon core module service
9
+ */
10
+ export * from './lib/service/http/igeneric-http-client';
11
+ export * from './lib/service/logger.service';
12
+ export * from './lib/service/open-id/auth.service';
13
+ export * from './lib/service/open-id/auth-guard.service';
14
+ export * from './lib/service/appsetting.service';
15
+ /*
16
+ * Public control type
17
+ */
18
+ export * from './lib/control-type/AutoComplete';
19
+ export * from './lib/control-type/Button';
20
+ export * from './lib/control-type/ButtonToggle';
21
+ export * from './lib/control-type/CheckBox';
22
+ export * from './lib/control-type/Chip';
23
+ export * from './lib/control-type/DatePicker';
24
+ export * from './lib/control-type/Divider';
25
+ export * from './lib/control-type/Editor';
26
+ export * from './lib/control-type/Radio';
27
+ export * from './lib/control-type/RichTextEditor';
28
+ export * from './lib/control-type/select';
29
+ export * from './lib/control-type/Slider';
30
+ export * from './lib/control-type/SlideToggle';
31
+ export * from './lib/control-type/Textarea';
32
+ export * from './lib/control-type/Textbox';
33
+ export * from './lib/model/enum';
34
+ export * from './lib/model/constant';
35
+ export * from './lib/model/environments';
36
+ export * from './lib/model/ivalidator';
37
+ export * from './lib/control-builder/control-builder.component';
38
+ export * from './lib/base-form-component';
39
+ /*
40
+ * Public component type
41
+ */
42
+ export * from './lib/component/table/table.component';
43
+ export * from './lib/component/pagination/pagination.component';
44
+ export * from './lib/component/progress-bar/progress-bar.component';
45
+ export * from './lib/component/progress-spinner/progress-spinner.component';
46
+ export * from './lib/component/button/button.component';
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1uZy90YWlsd2luZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGdDQUFnQyxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBR2pEOztHQUVHO0FBQ0gsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFJM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkJBQTJCLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZhbGNvbi1jb3JlLW1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGUvYW5ndWxhcm1hdGVyaWFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWxjb24tY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVhY3RpdmUtZmllbGQuZGlyZWN0aXZlJztcblxuXG4vKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZhbGNvbiBjb3JlIG1vZHVsZSBzZXJ2aWNlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaHR0cC9pZ2VuZXJpYy1odHRwLWNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2xvZ2dlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvb3Blbi1pZC9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9vcGVuLWlkL2F1dGgtZ3VhcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2FwcHNldHRpbmcuc2VydmljZSc7XG5cblxuLypcbiAqIFB1YmxpYyBjb250cm9sIHR5cGVcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL0F1dG9Db21wbGV0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9sLXR5cGUvQnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9CdXR0b25Ub2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL0NoZWNrQm94JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9DaGlwJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9EYXRlUGlja2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9EaXZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9FZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL1JhZGlvJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9SaWNoVGV4dEVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9sLXR5cGUvc2VsZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9TbGlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL1NsaWRlVG9nZ2xlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtdHlwZS9UZXh0YXJlYSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9sLXR5cGUvVGV4dGJveCc7XG5cblxuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2NvbnN0YW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2Vudmlyb25tZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9pdmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2wtYnVpbGRlci9jb250cm9sLWJ1aWxkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtZm9ybS1jb21wb25lbnQnO1xuXG4vKlxuICogUHVibGljIGNvbXBvbmVudCB0eXBlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG4iXX0=