jconsumer-shared 0.0.2 → 0.0.3

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 (67) hide show
  1. package/esm2022/lib/account-service.mjs +21 -0
  2. package/esm2022/lib/auth-service.mjs +155 -0
  3. package/esm2022/lib/calendar/date-time/datetime-processor.service.mjs +448 -0
  4. package/esm2022/lib/common.service.mjs +38 -0
  5. package/esm2022/lib/error-message.service.mjs +22 -0
  6. package/esm2022/lib/file-service.mjs +229 -0
  7. package/esm2022/lib/group-storage.service.mjs +66 -0
  8. package/esm2022/lib/i8n.module.mjs +43 -0
  9. package/esm2022/lib/local-storage.service.mjs +77 -0
  10. package/esm2022/lib/phone-input/phone-input.component.mjs +127 -0
  11. package/esm2022/lib/phone-input/phone-input.module.mjs +24 -0
  12. package/esm2022/lib/pipes/autolink/autolink.pipe.mjs +22 -0
  13. package/esm2022/lib/pipes/capitalize/capitalize.module.mjs +20 -0
  14. package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +18 -0
  15. package/esm2022/lib/pipes/filter/filter.pipe.mjs +24 -0
  16. package/esm2022/lib/pipes/limit-to/limitTo.pipe.mjs +18 -0
  17. package/esm2022/lib/pipes/safe-html/safehtml.module.mjs +20 -0
  18. package/esm2022/lib/pipes/safe-html/safehtml.pipe.mjs +19 -0
  19. package/esm2022/lib/project-messages.mjs +146 -0
  20. package/esm2022/lib/questionaire/edit/questionnaire.component.mjs +1422 -0
  21. package/esm2022/lib/questionaire/edit/questionnaire.module.mjs +77 -0
  22. package/esm2022/lib/questionaire/questionaire-service.mjs +92 -0
  23. package/esm2022/lib/session-storage.service.mjs +57 -0
  24. package/esm2022/lib/shared.service.mjs +24 -2
  25. package/esm2022/lib/showuploadfile/showuploadfile.component.mjs +61 -0
  26. package/esm2022/lib/showuploadfile/showuploadfile.module.mjs +28 -0
  27. package/esm2022/lib/spinner/loading-spinner.component.mjs +22 -0
  28. package/esm2022/lib/spinner/loading-spinner.module.mjs +28 -0
  29. package/esm2022/lib/storage.service.mjs +75 -0
  30. package/esm2022/lib/word-processor.service.mjs +181 -0
  31. package/esm2022/public-api.mjs +27 -1
  32. package/fesm2022/jconsumer-shared.mjs +3522 -26
  33. package/fesm2022/jconsumer-shared.mjs.map +1 -1
  34. package/jconsumer-shared-0.0.3.tgz +0 -0
  35. package/lib/account-service.d.ts +9 -0
  36. package/lib/auth-service.d.ts +43 -0
  37. package/lib/calendar/date-time/datetime-processor.service.d.ts +120 -0
  38. package/lib/common.service.d.ts +9 -0
  39. package/lib/error-message.service.d.ts +5 -0
  40. package/lib/file-service.d.ts +26 -0
  41. package/lib/group-storage.service.d.ts +14 -0
  42. package/lib/i8n.module.d.ts +12 -0
  43. package/lib/local-storage.service.d.ts +34 -0
  44. package/lib/phone-input/phone-input.component.d.ts +25 -0
  45. package/lib/phone-input/phone-input.module.d.ts +9 -0
  46. package/lib/pipes/autolink/autolink.pipe.d.ts +7 -0
  47. package/lib/pipes/capitalize/capitalize.module.d.ts +8 -0
  48. package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
  49. package/lib/pipes/filter/filter.pipe.d.ts +7 -0
  50. package/lib/pipes/limit-to/limitTo.pipe.d.ts +7 -0
  51. package/lib/pipes/safe-html/safehtml.module.d.ts +8 -0
  52. package/lib/pipes/safe-html/safehtml.pipe.d.ts +10 -0
  53. package/lib/project-messages.d.ts +1 -0
  54. package/lib/questionaire/edit/questionnaire.component.d.ts +151 -0
  55. package/lib/questionaire/edit/questionnaire.module.d.ts +19 -0
  56. package/lib/questionaire/questionaire-service.d.ts +28 -0
  57. package/lib/session-storage.service.d.ts +26 -0
  58. package/lib/shared.service.d.ts +12 -3
  59. package/lib/showuploadfile/showuploadfile.component.d.ts +21 -0
  60. package/lib/showuploadfile/showuploadfile.module.d.ts +9 -0
  61. package/lib/spinner/loading-spinner.component.d.ts +11 -0
  62. package/lib/spinner/loading-spinner.module.d.ts +9 -0
  63. package/lib/storage.service.d.ts +16 -0
  64. package/lib/word-processor.service.d.ts +80 -0
  65. package/package.json +1 -1
  66. package/public-api.d.ts +26 -0
  67. package/jconsumer-shared-0.0.2.tgz +0 -0
@@ -0,0 +1,229 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ *
5
+ */
6
+ export class FileService {
7
+ // Supported images types
8
+ IMAGE_FORMATS = [
9
+ 'image/gif',
10
+ 'image/png',
11
+ 'image/jpeg',
12
+ 'image/bmp',
13
+ 'image/webp'
14
+ ];
15
+ FILETYPES_UPLOAD = [
16
+ 'image/jpg',
17
+ 'image/png',
18
+ 'image/jpeg',
19
+ 'image/bmp',
20
+ 'application/pdf',
21
+ 'application/jfif',
22
+ 'video/mp4',
23
+ 'video/mpeg',
24
+ 'audio/mpeg',
25
+ 'audio/mp3',
26
+ 'audio/ogg',
27
+ 'application/vnd.ms-excel',
28
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
29
+ 'application/doc',
30
+ 'application/ms-doc',
31
+ 'application/msword',
32
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
33
+ 'docx',
34
+ 'doc'
35
+ ];
36
+ imageSize = 15000000;
37
+ FILE_MAX_SIZE = 10000000;
38
+ constructor() { }
39
+ /**
40
+ * Method returns supported formats of files which has to be uploaded
41
+ * @param source image/file
42
+ * @returns available formats
43
+ */
44
+ getSupportedFormats(source) {
45
+ console.log(source);
46
+ let formats = [];
47
+ if (source == 'image') {
48
+ formats = this.IMAGE_FORMATS;
49
+ //return this.IMAGE_FORMATS;
50
+ }
51
+ else {
52
+ formats = this.FILETYPES_UPLOAD;
53
+ //return this.FILETYPES_UPLOAD;
54
+ }
55
+ console.log(formats);
56
+ return formats;
57
+ }
58
+ /**
59
+ * Method will return the maximum uploadable size of a file/image
60
+ * @returns Maximum size of the image to upload
61
+ */
62
+ getMaximumImageSize() {
63
+ return this.imageSize;
64
+ }
65
+ imageValidation(file, source) {
66
+ console.log("In Image Validation:", source);
67
+ let file_types = [];
68
+ if (source === 'attachment' || source === 'consumerimages') {
69
+ file_types = this.getSupportedFormats('file');
70
+ }
71
+ else {
72
+ file_types = this.getSupportedFormats('image');
73
+ }
74
+ const image_max_size = this.getMaximumImageSize();
75
+ const error = [];
76
+ console.log(file_types);
77
+ console.log(file.type);
78
+ let is_error = false;
79
+ if (!file.type || (file.type && file_types.indexOf(file.type) === -1)) {
80
+ error['type'] = true;
81
+ is_error = true;
82
+ }
83
+ if (file.size && file.size > image_max_size) {
84
+ error['size'] = true;
85
+ is_error = true;
86
+ }
87
+ if (is_error === false) {
88
+ return true;
89
+ }
90
+ else {
91
+ return error;
92
+ }
93
+ }
94
+ getImage(url, fileObj) {
95
+ let file = fileObj;
96
+ if (fileObj && fileObj['mimeType']) {
97
+ file['type'] = fileObj['mimeType'];
98
+ }
99
+ // console.log("File :", file);
100
+ // console.log("File Type :", file.type)
101
+ // console.log("File Name :", file.name.includes('docx'))
102
+ if (file.type) {
103
+ if (file.type == 'application/pdf') {
104
+ return './assets/images/pdf.png';
105
+ }
106
+ else if (file.type == 'application/vnd.ms-excel' || file.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
107
+ return './assets/images/xls.png';
108
+ }
109
+ else if (file.type == 'audio/mp3' || file.type == 'audio/mpeg' || file.type == 'audio/ogg') {
110
+ return './assets/images/audio.png';
111
+ }
112
+ else if (file.type == 'video/mp4' || file.type == 'video/mpeg') {
113
+ return './assets/images/video.png';
114
+ }
115
+ else if (file.type == 'application/msword' || file.type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || file.type.includes('docx') || file.type.includes('doc')) {
116
+ return './assets/images/ImgeFileIcon/wordDocsBgWhite.jpg';
117
+ }
118
+ else if (file.type.includes('txt')) {
119
+ return './assets/images/ImgeFileIcon/docTxt.png';
120
+ }
121
+ else {
122
+ return url;
123
+ }
124
+ }
125
+ return url;
126
+ }
127
+ getImageByType(type) {
128
+ if (type == 'pdf') {
129
+ return './assets/images/pdf.png';
130
+ }
131
+ else if (type == 'vnd.ms-excel' || type == 'vnd.openxmlformats-officedocument.spreadsheetml.sheet' || type == 'xls' || type == 'xlsx') {
132
+ return './assets/images/xls.png';
133
+ }
134
+ else if (type == 'mp3' || type == 'mpeg' || type == 'ogg') {
135
+ return './assets/images/audio.png';
136
+ }
137
+ else if (type == 'mp4' || type == 'mpeg') {
138
+ return './assets/images/video.png';
139
+ }
140
+ else if (type == 'application/msword' || type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || type == 'docx' || type == 'doc' || type == 'msword') {
141
+ return './assets/images/ImgeFileIcon/wordDocsBgWhite.jpg';
142
+ }
143
+ else if (type == 'txt') {
144
+ return './assets/images/ImgeFileIcon/docTxt.png';
145
+ }
146
+ else {
147
+ return './assets/images/img_uplod.png';
148
+ }
149
+ }
150
+ filesSelected(event, selectedMessage) {
151
+ const _this = this;
152
+ return new Promise(function (resolve, reject) {
153
+ // const input = event.target.files;
154
+ let input = event.files;
155
+ if (event.target && event.target.files) {
156
+ input = event.target.files;
157
+ }
158
+ console.log("File Selected :", input);
159
+ if (input) {
160
+ let count = 0;
161
+ let filesCount = input.length;
162
+ for (const file of input) {
163
+ if (_this.FILETYPES_UPLOAD.indexOf(file.type) === -1) {
164
+ reject("Selected file type not supported");
165
+ }
166
+ else if (file.size > _this.FILE_MAX_SIZE) {
167
+ reject("Please upload files with size < 10mb");
168
+ }
169
+ else {
170
+ selectedMessage.files.push(file);
171
+ const reader = new FileReader();
172
+ reader.onload = (e) => {
173
+ selectedMessage.base64.push(e.target["result"]);
174
+ count++;
175
+ if (count === filesCount) {
176
+ resolve(true);
177
+ }
178
+ };
179
+ reader.readAsDataURL(file);
180
+ }
181
+ }
182
+ }
183
+ });
184
+ }
185
+ filessSelected(event, selectedMessage) {
186
+ const _this = this;
187
+ return new Promise(function (resolve, reject) {
188
+ // const input = event.target.files;
189
+ let input = event.files;
190
+ if (event.target && event.target.files) {
191
+ input = event.target.files;
192
+ }
193
+ console.log("File Selected :", input);
194
+ if (input) {
195
+ let count = 0;
196
+ let filesCount = input.length;
197
+ for (const file of input) {
198
+ if (_this.IMAGE_FORMATS.indexOf(file.type) === -1) {
199
+ reject("Selected file type not supported");
200
+ }
201
+ else if (file.size > _this.FILE_MAX_SIZE) {
202
+ reject("Please upload files with size < 10mb");
203
+ }
204
+ else {
205
+ selectedMessage.files.push(file);
206
+ const reader = new FileReader();
207
+ reader.onload = (e) => {
208
+ selectedMessage.base64.push(e.target["result"]);
209
+ count++;
210
+ if (count === filesCount) {
211
+ resolve(true);
212
+ }
213
+ };
214
+ reader.readAsDataURL(file);
215
+ }
216
+ }
217
+ }
218
+ });
219
+ }
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FileService, providedIn: 'root' });
222
+ }
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FileService, decorators: [{
224
+ type: Injectable,
225
+ args: [{
226
+ providedIn: 'root'
227
+ }]
228
+ }], ctorParameters: () => [] });
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2ZpbGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLHlCQUF5QjtJQUN6QixhQUFhLEdBQUc7UUFDZCxXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixXQUFXO1FBQ1gsWUFBWTtLQUNiLENBQUM7SUFFRixnQkFBZ0IsR0FBRztRQUNqQixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixXQUFXO1FBQ1gsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixXQUFXO1FBQ1gsWUFBWTtRQUNaLFlBQVk7UUFDWixXQUFXO1FBQ1gsV0FBVztRQUNYLDBCQUEwQjtRQUMxQixtRUFBbUU7UUFDbkUsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIseUVBQXlFO1FBQ3pFLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztJQUVGLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDckIsYUFBYSxHQUFHLFFBQVEsQ0FBQztJQUN6QixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsTUFBVztRQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUM3Qiw0QkFBNEI7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLCtCQUErQjtRQUNqQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVMsRUFBRSxNQUFZO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksTUFBTSxLQUFLLFlBQVksSUFBSSxNQUFNLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUMzRCxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLEdBQVEsRUFBRSxPQUFZO1FBQzdCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNuQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCwrQkFBK0I7UUFDL0Isd0NBQXdDO1FBQ3hDLHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLHlCQUF5QixDQUFDO1lBQ25DLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLDBCQUEwQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksbUVBQW1FLEVBQUUsQ0FBQztnQkFDdkksT0FBTyx5QkFBeUIsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDN0YsT0FBTywyQkFBMkIsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakUsT0FBTywyQkFBMkIsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHlFQUF5RSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xNLE9BQU8sa0RBQWtELENBQUM7WUFDNUQsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8seUNBQXlDLENBQUM7WUFDbkQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPLHlCQUF5QixDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLElBQUksSUFBSSxjQUFjLElBQUksSUFBSSxJQUFJLHVEQUF1RCxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3hJLE9BQU8seUJBQXlCLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM1RCxPQUFPLDJCQUEyQixDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE9BQU8sMkJBQTJCLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLG9CQUFvQixJQUFJLElBQUksSUFBSSx5RUFBeUUsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3BMLE9BQU8sa0RBQWtELENBQUM7UUFDNUQsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8seUNBQXlDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLCtCQUErQixDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVUsRUFBRSxlQUFvQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNO1lBQzFDLG9DQUFvQztZQUNwQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDN0IsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNyRCxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztvQkFDN0MsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUMzQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztvQkFDakQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7NEJBQ3pCLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLENBQUM7NEJBQ1IsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7Z0NBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDaEIsQ0FBQzt3QkFDSCxDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFVLEVBQUUsZUFBb0I7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTTtZQUMxQyxvQ0FBb0M7WUFDcEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzdCLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3pCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQzNDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTs0QkFDekIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzRCQUNoRCxLQUFLLEVBQUUsQ0FBQzs0QkFDUixJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQ0FDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNoQixDQUFDO3dCQUNILENBQUMsQ0FBQzt3QkFDRixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3VHQXhNVSxXQUFXOzJHQUFYLFdBQVcsY0FOVixNQUFNOzsyRkFNUCxXQUFXO2tCQVB2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbi8qKlxyXG4gKiBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWxlU2VydmljZSB7XHJcbiAgLy8gU3VwcG9ydGVkIGltYWdlcyB0eXBlc1xyXG4gIElNQUdFX0ZPUk1BVFMgPSBbXHJcbiAgICAnaW1hZ2UvZ2lmJyxcclxuICAgICdpbWFnZS9wbmcnLFxyXG4gICAgJ2ltYWdlL2pwZWcnLFxyXG4gICAgJ2ltYWdlL2JtcCcsXHJcbiAgICAnaW1hZ2Uvd2VicCdcclxuICBdO1xyXG5cclxuICBGSUxFVFlQRVNfVVBMT0FEID0gW1xyXG4gICAgJ2ltYWdlL2pwZycsXHJcbiAgICAnaW1hZ2UvcG5nJyxcclxuICAgICdpbWFnZS9qcGVnJyxcclxuICAgICdpbWFnZS9ibXAnLFxyXG4gICAgJ2FwcGxpY2F0aW9uL3BkZicsXHJcbiAgICAnYXBwbGljYXRpb24vamZpZicsXHJcbiAgICAndmlkZW8vbXA0JyxcclxuICAgICd2aWRlby9tcGVnJyxcclxuICAgICdhdWRpby9tcGVnJyxcclxuICAgICdhdWRpby9tcDMnLFxyXG4gICAgJ2F1ZGlvL29nZycsXHJcbiAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcclxuICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXHJcbiAgICAnYXBwbGljYXRpb24vZG9jJyxcclxuICAgICdhcHBsaWNhdGlvbi9tcy1kb2MnLFxyXG4gICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsXHJcbiAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxyXG4gICAgJ2RvY3gnLFxyXG4gICAgJ2RvYydcclxuICBdO1xyXG5cclxuICBpbWFnZVNpemUgPSAxNTAwMDAwMDtcclxuICBGSUxFX01BWF9TSVpFID0gMTAwMDAwMDA7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHJldHVybnMgc3VwcG9ydGVkIGZvcm1hdHMgb2YgZmlsZXMgd2hpY2ggaGFzIHRvIGJlIHVwbG9hZGVkXHJcbiAgICogQHBhcmFtIHNvdXJjZSBpbWFnZS9maWxlXHJcbiAgICogQHJldHVybnMgYXZhaWxhYmxlIGZvcm1hdHNcclxuICAgKi9cclxuICBnZXRTdXBwb3J0ZWRGb3JtYXRzKHNvdXJjZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhzb3VyY2UpO1xyXG4gICAgbGV0IGZvcm1hdHMgPSBbXTtcclxuICAgIGlmIChzb3VyY2UgPT0gJ2ltYWdlJykge1xyXG4gICAgICBmb3JtYXRzID0gdGhpcy5JTUFHRV9GT1JNQVRTO1xyXG4gICAgICAvL3JldHVybiB0aGlzLklNQUdFX0ZPUk1BVFM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXRzID0gdGhpcy5GSUxFVFlQRVNfVVBMT0FEO1xyXG4gICAgICAvL3JldHVybiB0aGlzLkZJTEVUWVBFU19VUExPQUQ7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhmb3JtYXRzKTtcclxuICAgIHJldHVybiBmb3JtYXRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBtYXhpbXVtIHVwbG9hZGFibGUgc2l6ZSBvZiBhIGZpbGUvaW1hZ2VcclxuICAgKiBAcmV0dXJucyBNYXhpbXVtIHNpemUgb2YgdGhlIGltYWdlIHRvIHVwbG9hZFxyXG4gICAqL1xyXG4gIGdldE1heGltdW1JbWFnZVNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNpemU7XHJcbiAgfVxyXG5cclxuICBpbWFnZVZhbGlkYXRpb24oZmlsZTogYW55LCBzb3VyY2U/OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiSW4gSW1hZ2UgVmFsaWRhdGlvbjpcIiwgc291cmNlKTtcclxuICAgIGxldCBmaWxlX3R5cGVzID0gW107XHJcbiAgICBpZiAoc291cmNlID09PSAnYXR0YWNobWVudCcgfHwgc291cmNlID09PSAnY29uc3VtZXJpbWFnZXMnKSB7XHJcbiAgICAgIGZpbGVfdHlwZXMgPSB0aGlzLmdldFN1cHBvcnRlZEZvcm1hdHMoJ2ZpbGUnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbGVfdHlwZXMgPSB0aGlzLmdldFN1cHBvcnRlZEZvcm1hdHMoJ2ltYWdlJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbWFnZV9tYXhfc2l6ZSA9IHRoaXMuZ2V0TWF4aW11bUltYWdlU2l6ZSgpO1xyXG4gICAgY29uc3QgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgY29uc29sZS5sb2coZmlsZV90eXBlcyk7XHJcbiAgICBjb25zb2xlLmxvZyhmaWxlLnR5cGUpO1xyXG4gICAgbGV0IGlzX2Vycm9yID0gZmFsc2U7XHJcbiAgICBpZiAoIWZpbGUudHlwZSB8fCAoZmlsZS50eXBlICYmIGZpbGVfdHlwZXMuaW5kZXhPZihmaWxlLnR5cGUpID09PSAtMSkpIHtcclxuICAgICAgZXJyb3JbJ3R5cGUnXSA9IHRydWU7XHJcbiAgICAgIGlzX2Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChmaWxlLnNpemUgJiYgZmlsZS5zaXplID4gaW1hZ2VfbWF4X3NpemUpIHtcclxuICAgICAgZXJyb3JbJ3NpemUnXSA9IHRydWU7XHJcbiAgICAgIGlzX2Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChpc19lcnJvciA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEltYWdlKHVybDogYW55LCBmaWxlT2JqOiBhbnkpIHtcclxuICAgIGxldCBmaWxlID0gZmlsZU9iajtcclxuICAgIGlmIChmaWxlT2JqICYmIGZpbGVPYmpbJ21pbWVUeXBlJ10pIHtcclxuICAgICAgZmlsZVsndHlwZSddID0gZmlsZU9ialsnbWltZVR5cGUnXTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRmlsZSA6XCIsIGZpbGUpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJGaWxlIFR5cGUgOlwiLCBmaWxlLnR5cGUpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkZpbGUgTmFtZSA6XCIsIGZpbGUubmFtZS5pbmNsdWRlcygnZG9jeCcpKVxyXG4gICAgaWYgKGZpbGUudHlwZSkge1xyXG4gICAgICBpZiAoZmlsZS50eXBlID09ICdhcHBsaWNhdGlvbi9wZGYnKSB7XHJcbiAgICAgICAgcmV0dXJuICcuL2Fzc2V0cy9pbWFnZXMvcGRmLnBuZyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmlsZS50eXBlID09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnIHx8IGZpbGUudHlwZSA9PSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnKSB7XHJcbiAgICAgICAgcmV0dXJuICcuL2Fzc2V0cy9pbWFnZXMveGxzLnBuZyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmlsZS50eXBlID09ICdhdWRpby9tcDMnIHx8IGZpbGUudHlwZSA9PSAnYXVkaW8vbXBlZycgfHwgZmlsZS50eXBlID09ICdhdWRpby9vZ2cnKSB7XHJcbiAgICAgICAgcmV0dXJuICcuL2Fzc2V0cy9pbWFnZXMvYXVkaW8ucG5nJztcclxuICAgICAgfSBlbHNlIGlmIChmaWxlLnR5cGUgPT0gJ3ZpZGVvL21wNCcgfHwgZmlsZS50eXBlID09ICd2aWRlby9tcGVnJykge1xyXG4gICAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL3ZpZGVvLnBuZyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmlsZS50eXBlID09ICdhcHBsaWNhdGlvbi9tc3dvcmQnIHx8IGZpbGUudHlwZSA9PSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnIHx8IGZpbGUudHlwZS5pbmNsdWRlcygnZG9jeCcpIHx8IGZpbGUudHlwZS5pbmNsdWRlcygnZG9jJykpIHtcclxuICAgICAgICByZXR1cm4gJy4vYXNzZXRzL2ltYWdlcy9JbWdlRmlsZUljb24vd29yZERvY3NCZ1doaXRlLmpwZyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmlsZS50eXBlLmluY2x1ZGVzKCd0eHQnKSkge1xyXG4gICAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL0ltZ2VGaWxlSWNvbi9kb2NUeHQucG5nJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuICBnZXRJbWFnZUJ5VHlwZSh0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09ICdwZGYnKSB7XHJcbiAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL3BkZi5wbmcnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09ICd2bmQubXMtZXhjZWwnIHx8IHR5cGUgPT0gJ3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB8fCB0eXBlID09ICd4bHMnIHx8IHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL3hscy5wbmcnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09ICdtcDMnIHx8IHR5cGUgPT0gJ21wZWcnIHx8IHR5cGUgPT0gJ29nZycpIHtcclxuICAgICAgcmV0dXJuICcuL2Fzc2V0cy9pbWFnZXMvYXVkaW8ucG5nJztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnbXA0JyB8fCB0eXBlID09ICdtcGVnJykge1xyXG4gICAgICByZXR1cm4gJy4vYXNzZXRzL2ltYWdlcy92aWRlby5wbmcnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09ICdhcHBsaWNhdGlvbi9tc3dvcmQnIHx8IHR5cGUgPT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyB8fCB0eXBlID09ICdkb2N4JyB8fCB0eXBlID09ICdkb2MnIHx8IHR5cGUgPT0gJ21zd29yZCcpIHtcclxuICAgICAgcmV0dXJuICcuL2Fzc2V0cy9pbWFnZXMvSW1nZUZpbGVJY29uL3dvcmREb2NzQmdXaGl0ZS5qcGcnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09ICd0eHQnKSB7XHJcbiAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL0ltZ2VGaWxlSWNvbi9kb2NUeHQucG5nJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnLi9hc3NldHMvaW1hZ2VzL2ltZ191cGxvZC5wbmcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsZXNTZWxlY3RlZChldmVudDogYW55LCBzZWxlY3RlZE1lc3NhZ2U6IGFueSkge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgLy8gY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQuZmlsZXM7XHJcbiAgICAgIGxldCBpbnB1dCA9IGV2ZW50LmZpbGVzO1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5maWxlcykge1xyXG4gICAgICAgIGlucHV0ID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRmlsZSBTZWxlY3RlZCA6XCIsIGlucHV0KTtcclxuICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgICBsZXQgZmlsZXNDb3VudCA9IGlucHV0Lmxlbmd0aDtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaW5wdXQpIHtcclxuICAgICAgICAgIGlmIChfdGhpcy5GSUxFVFlQRVNfVVBMT0FELmluZGV4T2YoZmlsZS50eXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgcmVqZWN0KFwiU2VsZWN0ZWQgZmlsZSB0eXBlIG5vdCBzdXBwb3J0ZWRcIik7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbGUuc2l6ZSA+IF90aGlzLkZJTEVfTUFYX1NJWkUpIHtcclxuICAgICAgICAgICAgcmVqZWN0KFwiUGxlYXNlIHVwbG9hZCBmaWxlcyB3aXRoIHNpemUgPCAxMG1iXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRNZXNzYWdlLmZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRNZXNzYWdlLmJhc2U2NC5wdXNoKGUudGFyZ2V0W1wicmVzdWx0XCJdKTtcclxuICAgICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gZmlsZXNDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZmlsZXNzU2VsZWN0ZWQoZXZlbnQ6IGFueSwgc2VsZWN0ZWRNZXNzYWdlOiBhbnkpIHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xyXG4gICAgICBsZXQgaW5wdXQgPSBldmVudC5maWxlcztcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuZmlsZXMpIHtcclxuICAgICAgICBpbnB1dCA9IGV2ZW50LnRhcmdldC5maWxlcztcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhcIkZpbGUgU2VsZWN0ZWQgOlwiLCBpbnB1dCk7XHJcbiAgICAgIGlmIChpbnB1dCkge1xyXG4gICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgbGV0IGZpbGVzQ291bnQgPSBpbnB1dC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGlucHV0KSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuSU1BR0VfRk9STUFUUy5pbmRleE9mKGZpbGUudHlwZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJlamVjdChcIlNlbGVjdGVkIGZpbGUgdHlwZSBub3Qgc3VwcG9ydGVkXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmaWxlLnNpemUgPiBfdGhpcy5GSUxFX01BWF9TSVpFKSB7XHJcbiAgICAgICAgICAgIHJlamVjdChcIlBsZWFzZSB1cGxvYWQgZmlsZXMgd2l0aCBzaXplIDwgMTBtYlwiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkTWVzc2FnZS5maWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkTWVzc2FnZS5iYXNlNjQucHVzaChlLnRhcmdldFtcInJlc3VsdFwiXSk7XHJcbiAgICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICAgICAgICBpZiAoY291bnQgPT09IGZpbGVzQ291bnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,66 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./session-storage.service";
4
+ import * as i2 from "./local-storage.service";
5
+ export class GroupStorageService {
6
+ sessionStorageService;
7
+ lStorageService;
8
+ constructor(sessionStorageService, lStorageService) {
9
+ this.sessionStorageService = sessionStorageService;
10
+ this.lStorageService = lStorageService;
11
+ }
12
+ getGroup() {
13
+ if (this.sessionStorageService.getitemfromSessionStorage('tabId')) {
14
+ return this.sessionStorageService.getitemfromSessionStorage('accountid');
15
+ }
16
+ else {
17
+ return 0;
18
+ }
19
+ }
20
+ setitemToGroupStorage(itemname, itemvalue) {
21
+ const group = this.getGroup();
22
+ let groupObj = {};
23
+ if (this.lStorageService.getitemfromLocalStorage(group)) {
24
+ groupObj = JSON.parse(this.lStorageService.getitemfromLocalStorage(group)) ? JSON.parse(this.lStorageService.getitemfromLocalStorage(group)) : {};
25
+ if (groupObj) {
26
+ groupObj[itemname] = itemvalue;
27
+ }
28
+ }
29
+ else {
30
+ groupObj[itemname] = itemvalue;
31
+ }
32
+ this.lStorageService.setitemonLocalStorage(group, JSON.stringify(groupObj));
33
+ }
34
+ getitemFromGroupStorage(itemname, type) {
35
+ let group;
36
+ if (type) {
37
+ group = 0;
38
+ }
39
+ else {
40
+ group = this.getGroup();
41
+ }
42
+ if (this.lStorageService.getitemfromLocalStorage(group)) {
43
+ const groupObj = JSON.parse(this.lStorageService.getitemfromLocalStorage(group));
44
+ if (groupObj[itemname] || (itemname === 'isCheckin' && groupObj[itemname] !== undefined)) {
45
+ return groupObj[itemname];
46
+ }
47
+ }
48
+ }
49
+ removeitemFromGroupStorage(itemname) {
50
+ const group = this.getGroup();
51
+ const groupObj = JSON.parse(this.lStorageService.getitemfromLocalStorage(group));
52
+ if (groupObj[itemname]) {
53
+ delete groupObj[itemname];
54
+ this.lStorageService.setitemonLocalStorage(group, JSON.stringify(groupObj));
55
+ }
56
+ }
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GroupStorageService, deps: [{ token: i1.SessionStorageService }, { token: i2.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
58
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GroupStorageService, providedIn: 'root' });
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GroupStorageService, decorators: [{
61
+ type: Injectable,
62
+ args: [{
63
+ providedIn: 'root'
64
+ }]
65
+ }], ctorParameters: () => [{ type: i1.SessionStorageService }, { type: i2.LocalStorageService }] });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2dyb3VwLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDUjtJQUFzRDtJQUExRSxZQUFvQixxQkFBNEMsRUFBVSxlQUFvQztRQUExRiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQXFCO0lBQUcsQ0FBQztJQUUzRyxRQUFRO1FBQ1gsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxRQUFhLEVBQUUsU0FBYztRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvSSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDTSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLElBQVU7UUFDekQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakYsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN6RixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDTSwwQkFBMEIsQ0FBQyxRQUF5QjtRQUN6RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakYsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUUsQ0FBQztJQUNILENBQUM7dUdBN0NNLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBSGhCLE1BQU07OzJGQUdULG1CQUFtQjtrQkFKL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEdyb3VwU3RvcmFnZVNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gICAgcHVibGljIGdldEdyb3VwKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbVNlc3Npb25TdG9yYWdlKCd0YWJJZCcpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0aXRlbWZyb21TZXNzaW9uU3RvcmFnZSgnYWNjb3VudGlkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIHB1YmxpYyBzZXRpdGVtVG9Hcm91cFN0b3JhZ2UoaXRlbW5hbWU6IGFueSwgaXRlbXZhbHVlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0R3JvdXAoKTtcclxuICAgICAgICBsZXQgZ3JvdXBPYmo6IGFueSA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZShncm91cCkpIHtcclxuICAgICAgICAgIGdyb3VwT2JqID0gSlNPTi5wYXJzZSh0aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZShncm91cCkpP0pTT04ucGFyc2UodGhpcy5sU3RvcmFnZVNlcnZpY2UuZ2V0aXRlbWZyb21Mb2NhbFN0b3JhZ2UoZ3JvdXApKToge307XHJcbiAgICAgICAgICBpZiAoZ3JvdXBPYmopIHtcclxuICAgICAgICAgICAgZ3JvdXBPYmpbaXRlbW5hbWVdID0gaXRlbXZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBncm91cE9ialtpdGVtbmFtZV0gPSBpdGVtdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZShncm91cCwgSlNPTi5zdHJpbmdpZnkoZ3JvdXBPYmopKTtcclxuICAgICAgfVxyXG4gICAgICBwdWJsaWMgZ2V0aXRlbUZyb21Hcm91cFN0b3JhZ2UoaXRlbW5hbWU6IHN0cmluZywgdHlwZT86IGFueSkge1xyXG4gICAgICAgIGxldCBncm91cDtcclxuICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgZ3JvdXAgPSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBncm91cCA9IHRoaXMuZ2V0R3JvdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubFN0b3JhZ2VTZXJ2aWNlLmdldGl0ZW1mcm9tTG9jYWxTdG9yYWdlKGdyb3VwKSkge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXBPYmogPSBKU09OLnBhcnNlKHRoaXMubFN0b3JhZ2VTZXJ2aWNlLmdldGl0ZW1mcm9tTG9jYWxTdG9yYWdlKGdyb3VwKSk7XHJcbiAgICAgICAgICBpZiAoZ3JvdXBPYmpbaXRlbW5hbWVdIHx8IChpdGVtbmFtZSA9PT0gJ2lzQ2hlY2tpbicgJiYgZ3JvdXBPYmpbaXRlbW5hbWVdICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBncm91cE9ialtpdGVtbmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHB1YmxpYyByZW1vdmVpdGVtRnJvbUdyb3VwU3RvcmFnZShpdGVtbmFtZTogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldEdyb3VwKCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBPYmogPSBKU09OLnBhcnNlKHRoaXMubFN0b3JhZ2VTZXJ2aWNlLmdldGl0ZW1mcm9tTG9jYWxTdG9yYWdlKGdyb3VwKSk7XHJcbiAgICAgICAgaWYgKGdyb3VwT2JqW2l0ZW1uYW1lXSkge1xyXG4gICAgICAgICAgZGVsZXRlIGdyb3VwT2JqW2l0ZW1uYW1lXTtcclxuICAgICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZShncm91cCwgSlNPTi5zdHJpbmdpZnkoZ3JvdXBPYmopKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { HttpClient } from '@angular/common/http';
4
+ import { TranslateHttpLoader } from '@ngx-translate/http-loader';
5
+ import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
6
+ import { SharedService } from './shared.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngx-translate/core";
9
+ export function HttpLoaderFactory(http, sharedService) {
10
+ return new TranslateHttpLoader(http, sharedService.getI8nPath() + 'assets/i18n/', '.json');
11
+ }
12
+ export class I8nModule {
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I8nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: I8nModule, imports: [CommonModule, i1.TranslateModule], exports: [TranslateModule] });
15
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I8nModule, imports: [CommonModule,
16
+ TranslateModule.forRoot({
17
+ loader: {
18
+ provide: TranslateLoader,
19
+ useFactory: HttpLoaderFactory,
20
+ deps: [HttpClient, SharedService]
21
+ }
22
+ }), TranslateModule] });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I8nModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ declarations: [],
28
+ imports: [
29
+ CommonModule,
30
+ TranslateModule.forRoot({
31
+ loader: {
32
+ provide: TranslateLoader,
33
+ useFactory: HttpLoaderFactory,
34
+ deps: [HttpClient, SharedService]
35
+ }
36
+ })
37
+ ],
38
+ exports: [
39
+ TranslateModule
40
+ ]
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaThuLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9pOG4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRWpELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFnQixFQUFFLGFBQTRCO0lBQzlFLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRSxHQUFHLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBa0JELE1BQU0sT0FBTyxTQUFTO3VHQUFULFNBQVM7d0dBQVQsU0FBUyxZQWJsQixZQUFZLGlDQVVaLGVBQWU7d0dBR04sU0FBUyxZQWJsQixZQUFZO1lBQ1osZUFBZSxDQUFDLE9BQU8sQ0FBQztnQkFDdEIsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxlQUFlO29CQUN0QixVQUFVLEVBQUUsaUJBQWlCO29CQUM3QixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO2lCQUNwQzthQUNGLENBQUMsRUFHRixlQUFlOzsyRkFHTixTQUFTO2tCQWhCckIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZSxDQUFDLE9BQU8sQ0FBQzs0QkFDdEIsTUFBTSxFQUFFO2dDQUNOLE9BQU8sRUFBRSxlQUFlO2dDQUN0QixVQUFVLEVBQUUsaUJBQWlCO2dDQUM3QixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDOzZCQUNwQzt5QkFDRixDQUFDO3FCQUNIO29CQUNELE9BQU8sRUFBRzt3QkFDUixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBIdHRwTG9hZGVyRmFjdG9yeShodHRwOiBIdHRwQ2xpZW50LCBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlKSB7XHJcbiAgcmV0dXJuIG5ldyBUcmFuc2xhdGVIdHRwTG9hZGVyKGh0dHAsIHNoYXJlZFNlcnZpY2UuZ2V0SThuUGF0aCgpICsgJ2Fzc2V0cy9pMThuLycsICcuanNvbicpO1xyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgICBsb2FkZXI6IHtcclxuICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXHJcbiAgICAgICAgICB1c2VGYWN0b3J5OiBIdHRwTG9hZGVyRmFjdG9yeSxcclxuICAgICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBTaGFyZWRTZXJ2aWNlXVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIF0sXHJcbiAgZXhwb3J0cyA6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEk4bk1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,77 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Handle Local Storage related actions
5
+ */
6
+ export class LocalStorageService {
7
+ /* holds the variables which not removed by clearLocalstorage() method */
8
+ dont_delete_localstorage = ['refreshToken', 'userType', 'version', 'qrp', 'mUniqueId', 'authToken', 'reqFrom', 'source', 'translatevariable', 'appId', 'installId', 'appUniqueId', 'cleared', 'googleToken', 'sysdate', 'pt_pwd', 'target', 'activeLocation', 'busId'];
9
+ /**
10
+ * Default constructor
11
+ */
12
+ constructor() {
13
+ }
14
+ /**
15
+ * function to get local storage item value
16
+ * @param itemname name of variable
17
+ */
18
+ getitemfromLocalStorage(itemname) {
19
+ // if (isPlatformBrowser(this.platformId)) {
20
+ if (localStorage.getItem(itemname) !== 'undefined') {
21
+ return JSON.parse(localStorage.getItem(itemname));
22
+ }
23
+ // }
24
+ // return null;
25
+ }
26
+ /**
27
+ * // function to set local storage item value
28
+ * @param itemname name of variable
29
+ * @param itemvalue value to set
30
+ */
31
+ setitemonLocalStorage(itemname, itemvalue) {
32
+ // if (isPlatformBrowser(this.platformId)) {
33
+ localStorage.setItem(itemname, JSON.stringify(itemvalue));
34
+ // }
35
+ }
36
+ /**
37
+ * Method to remove an item from local storage
38
+ * @param itemname item to be removed
39
+ */
40
+ removeitemfromLocalStorage(itemname) {
41
+ // if (isPlatformBrowser(this.platformId)) {
42
+ localStorage.removeItem(itemname);
43
+ // }
44
+ }
45
+ /**
46
+ * Method to clear the local storage items except the ones contained in 'dont_delete_localstorage'
47
+ */
48
+ clearLocalstorage() {
49
+ // if (isPlatformBrowser(this.platformId)) {
50
+ this.removeitemfromLocalStorage('ynw-credentials');
51
+ for (let index = 0; index < localStorage.length; index++) {
52
+ if (this.dont_delete_localstorage.indexOf(localStorage.key(index)) === -1) {
53
+ localStorage.removeItem(localStorage.key(index));
54
+ index = index - 1; // manage index after remove
55
+ }
56
+ }
57
+ // }
58
+ }
59
+ /**
60
+ * Method to clear the local storage items
61
+ */
62
+ clearAll() {
63
+ for (let index = 0; index < localStorage.length; index++) {
64
+ localStorage.removeItem(localStorage.key(index));
65
+ index = index - 1; // manage index after remove
66
+ }
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
69
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: LocalStorageService, decorators: [{
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root'
75
+ }]
76
+ }], ctorParameters: () => [] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQzs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFFNUIseUVBQXlFO0lBQ3pFLHdCQUF3QixHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZROztPQUVHO0lBQ0g7SUFHQSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCLENBQUMsUUFBZ0I7UUFDM0MsNENBQTRDO1FBQzVDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJO1FBQ0osZUFBZTtJQUNuQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNJLHFCQUFxQixDQUFDLFFBQWdCLEVBQUUsU0FBYztRQUN6RCw0Q0FBNEM7UUFDNUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUk7SUFDUixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksMEJBQTBCLENBQUMsUUFBZ0I7UUFDOUMsNENBQTRDO1FBQzVDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsSUFBSTtJQUNSLENBQUM7SUFDRDs7T0FFRztJQUNJLGlCQUFpQjtRQUNwQiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hFLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtZQUNuRCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUk7SUFDUixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxRQUFRO1FBQ1gsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRCxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtRQUNuRCxDQUFDO0lBQ0wsQ0FBQzt1R0FsRVEsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FMaEIsTUFBTTs7MkZBS1QsbUJBQW1CO2tCQU4vQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbi8qKlxyXG4gKiBIYW5kbGUgTG9jYWwgU3RvcmFnZSByZWxhdGVkIGFjdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiBob2xkcyB0aGUgdmFyaWFibGVzIHdoaWNoIG5vdCByZW1vdmVkIGJ5IGNsZWFyTG9jYWxzdG9yYWdlKCkgbWV0aG9kICovXHJcbiAgICBkb250X2RlbGV0ZV9sb2NhbHN0b3JhZ2UgPSBbJ3JlZnJlc2hUb2tlbicsICd1c2VyVHlwZScsICd2ZXJzaW9uJywgJ3FycCcsICdtVW5pcXVlSWQnLCAnYXV0aFRva2VuJywgJ3JlcUZyb20nLCAnc291cmNlJywgJ3RyYW5zbGF0ZXZhcmlhYmxlJywgJ2FwcElkJywgJ2luc3RhbGxJZCcsICdhcHBVbmlxdWVJZCcsICdjbGVhcmVkJywgJ2dvb2dsZVRva2VuJywgJ3N5c2RhdGUnLCAncHRfcHdkJywgJ3RhcmdldCcsICdhY3RpdmVMb2NhdGlvbicsICdidXNJZCddO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAvLyBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmdW5jdGlvbiB0byBnZXQgbG9jYWwgc3RvcmFnZSBpdGVtIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gaXRlbW5hbWUgbmFtZSBvZiB2YXJpYWJsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0aXRlbWZyb21Mb2NhbFN0b3JhZ2UoaXRlbW5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8vIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGl0ZW1uYW1lKSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oaXRlbW5hbWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiAvLyBmdW5jdGlvbiB0byBzZXQgbG9jYWwgc3RvcmFnZSBpdGVtIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gaXRlbW5hbWUgbmFtZSBvZiB2YXJpYWJsZSBcclxuICAgICAqIEBwYXJhbSBpdGVtdmFsdWUgdmFsdWUgdG8gc2V0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRpdGVtb25Mb2NhbFN0b3JhZ2UoaXRlbW5hbWU6IHN0cmluZywgaXRlbXZhbHVlOiBhbnkpIHtcclxuICAgICAgICAvLyBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGl0ZW1uYW1lLCBKU09OLnN0cmluZ2lmeShpdGVtdmFsdWUpKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byByZW1vdmUgYW4gaXRlbSBmcm9tIGxvY2FsIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBpdGVtbmFtZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZWl0ZW1mcm9tTG9jYWxTdG9yYWdlKGl0ZW1uYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGl0ZW1uYW1lKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byBjbGVhciB0aGUgbG9jYWwgc3RvcmFnZSBpdGVtcyBleGNlcHQgdGhlIG9uZXMgY29udGFpbmVkIGluICdkb250X2RlbGV0ZV9sb2NhbHN0b3JhZ2UnXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhckxvY2Fsc3RvcmFnZSgpIHtcclxuICAgICAgICAvLyBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlaXRlbWZyb21Mb2NhbFN0b3JhZ2UoJ3ludy1jcmVkZW50aWFscycpO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsb2NhbFN0b3JhZ2UubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRvbnRfZGVsZXRlX2xvY2Fsc3RvcmFnZS5pbmRleE9mKGxvY2FsU3RvcmFnZS5rZXkoaW5kZXgpKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxvY2FsU3RvcmFnZS5rZXkoaW5kZXgpKTtcclxuICAgICAgICAgICAgICAgIGluZGV4ID0gaW5kZXggLSAxOyAvLyBtYW5hZ2UgaW5kZXggYWZ0ZXIgcmVtb3ZlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2xlYXIgdGhlIGxvY2FsIHN0b3JhZ2UgaXRlbXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsb2NhbFN0b3JhZ2UubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxvY2FsU3RvcmFnZS5rZXkoaW5kZXgpKTtcclxuICAgICAgICAgICAgaW5kZXggPSBpbmRleCAtIDE7IC8vIG1hbmFnZSBpbmRleCBhZnRlciByZW1vdmVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,127 @@
1
+ import { Component, forwardRef, Input, ViewChild, Output, EventEmitter } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import intlTelInput from 'intl-tel-input';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ export class PhoneInputComponent {
8
+ initialCountry = 'us'; // Default to 'us'
9
+ preferredCountries = []; // List of preferred countries
10
+ nationalMode = true; // Use national mode so dial code is hidden in input box
11
+ separateDialCode = true; // Whether to separate dial code (controls formatting)
12
+ otherOptions = {}; // Any other options for intl-tel-input
13
+ phoneInput;
14
+ phoneNumber = { dialCode: '', countryCode: '', e164Number: '', number: '' }; // Structured phone number object
15
+ phoneInputInstance;
16
+ // Output Event to send the phone number value to the parent component
17
+ phoneNumberChange = new EventEmitter();
18
+ // Function to handle form control value changes
19
+ onChange = (value) => { };
20
+ onTouched = () => { };
21
+ ngAfterViewInit() {
22
+ if (this.phoneInput && this.phoneInput.nativeElement) {
23
+ this.initializePhoneInput();
24
+ }
25
+ }
26
+ // Initialize intl-tel-input for the phone input field
27
+ initializePhoneInput() {
28
+ const options = {
29
+ initialCountry: this.initialCountry,
30
+ preferredCountries: this.preferredCountries,
31
+ nationalMode: this.nationalMode, // Use national mode to hide dial code
32
+ separateDialCode: this.separateDialCode, // Keep separate dial code for processing
33
+ utilsScript: 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/utils.js',
34
+ ...this.otherOptions // Merge any additional options provided
35
+ };
36
+ // Initialize intl-tel-input
37
+ this.phoneInputInstance = intlTelInput(this.phoneInput.nativeElement, options);
38
+ // Capture the country change event to track the selected country code and dial code
39
+ this.phoneInput.nativeElement.addEventListener('countrychange', () => {
40
+ this.updatePhoneNumber();
41
+ });
42
+ // Capture input event to update phone number in E.164 format
43
+ this.phoneInput.nativeElement.addEventListener('input', () => {
44
+ this.updatePhoneNumber();
45
+ });
46
+ // Set the initial value if available (without showing the dial code)
47
+ if (this.phoneNumber.e164Number) {
48
+ this.phoneInputInstance.setNumber(this.phoneNumber.e164Number); // Set the E.164 formatted number
49
+ }
50
+ }
51
+ // Method to update the phone number object
52
+ updatePhoneNumber() {
53
+ const dialCode = '+' + this.phoneInputInstance.getSelectedCountryData().dialCode;
54
+ const countryCode = this.phoneInputInstance.getSelectedCountryData().iso2;
55
+ const e164Number = this.phoneInputInstance.getNumber(); // Full number in E.164 format
56
+ const number = e164Number.split(dialCode)[1];
57
+ // Update the phoneNumber object with the full details
58
+ this.phoneNumber = {
59
+ dialCode,
60
+ countryCode,
61
+ e164Number,
62
+ number
63
+ };
64
+ // Emit the updated value to the parent component
65
+ this.phoneNumberChange.emit(this.phoneNumber); // Sending the value to parent
66
+ }
67
+ // Implement the writeValue method for ControlValueAccessor
68
+ writeValue(value) {
69
+ if (value && value.e164Number) {
70
+ this.phoneNumber = value;
71
+ if (this.phoneInput && this.phoneInput.nativeElement) {
72
+ this.phoneInputInstance.setNumber(value.e164Number); // Set the E.164 formatted number
73
+ }
74
+ }
75
+ }
76
+ // Implement the registerOnChange method for ControlValueAccessor
77
+ registerOnChange(fn) {
78
+ this.onChange = fn;
79
+ }
80
+ // Implement the registerOnTouched method for ControlValueAccessor
81
+ registerOnTouched(fn) {
82
+ this.onTouched = fn;
83
+ }
84
+ // Custom Validation Method: Validate the phone number
85
+ validatePhoneNumber() {
86
+ if (this.phoneInputInstance) {
87
+ // Check if the current phone number is valid according to the selected country
88
+ const isValid = this.phoneInputInstance.isValidNumber() || this.phoneNumber.number.startsWith('555');
89
+ return isValid;
90
+ }
91
+ return false;
92
+ }
93
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PhoneInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PhoneInputComponent, selector: "app-phone-input", inputs: { initialCountry: "initialCountry", preferredCountries: "preferredCountries", nationalMode: "nationalMode", separateDialCode: "separateDialCode", otherOptions: "otherOptions" }, outputs: { phoneNumberChange: "phoneNumberChange" }, providers: [
95
+ {
96
+ provide: NG_VALUE_ACCESSOR,
97
+ useExisting: forwardRef(() => PhoneInputComponent),
98
+ multi: true
99
+ }
100
+ ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true }], ngImport: i0, template: "<div class=\"phone-input-wrapper\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.phoneNumber\"\r\n name=\"phoneNumber\" [required]=\"true\" #phone=\"ngModel\"\r\n [ngClass]=\"{'is-invalid': !validatePhoneNumber() && phone.touched}\">\r\n\r\n <!-- Validation feedback -->\r\n <!-- <div *ngIf=\"!validatePhoneNumber() && phone.touched\" class=\"text-danger\">\r\n Invalid phone number.\r\n </div> -->\r\n <!-- <input #phoneInput [(ngModel)]=\"phoneNumber.number\" /> -->\r\n</div>", styles: ["::ng-deep .tel-input-container .iti{width:100%!important}::ng-deep .tel-input-container .iti--separate-dial-code .iti__selected-flag{background-color:transparent}::ng-deep .tel-input-container input::-webkit-input-placeholder{color:#ddd!important}::ng-deep .tel-input-container input:focus{outline:none!important;border-color:#e1e2e3!important}::ng-deep .tel-input-container input{height:50px!important;width:100%!important;background:#fff!important;border:1.39032px solid #E1E2E3!important;border-radius:11.1225px!important;padding:15px;font-size:15px}::ng-deep .tel-input-container input.is-invalid{border:1.39032px solid #ff0000!important}::ng-deep .tel-input-container input::placeholder{color:#ddd}::ng-deep .tel-input-container input.custom:focus{color:#495057!important;background-color:#fff!important;border-color:#3c8dbc!important;outline:0!important;box-shadow:0 0 #fff!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PhoneInputComponent, decorators: [{
103
+ type: Component,
104
+ args: [{ selector: 'app-phone-input', providers: [
105
+ {
106
+ provide: NG_VALUE_ACCESSOR,
107
+ useExisting: forwardRef(() => PhoneInputComponent),
108
+ multi: true
109
+ }
110
+ ], template: "<div class=\"phone-input-wrapper\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.phoneNumber\"\r\n name=\"phoneNumber\" [required]=\"true\" #phone=\"ngModel\"\r\n [ngClass]=\"{'is-invalid': !validatePhoneNumber() && phone.touched}\">\r\n\r\n <!-- Validation feedback -->\r\n <!-- <div *ngIf=\"!validatePhoneNumber() && phone.touched\" class=\"text-danger\">\r\n Invalid phone number.\r\n </div> -->\r\n <!-- <input #phoneInput [(ngModel)]=\"phoneNumber.number\" /> -->\r\n</div>", styles: ["::ng-deep .tel-input-container .iti{width:100%!important}::ng-deep .tel-input-container .iti--separate-dial-code .iti__selected-flag{background-color:transparent}::ng-deep .tel-input-container input::-webkit-input-placeholder{color:#ddd!important}::ng-deep .tel-input-container input:focus{outline:none!important;border-color:#e1e2e3!important}::ng-deep .tel-input-container input{height:50px!important;width:100%!important;background:#fff!important;border:1.39032px solid #E1E2E3!important;border-radius:11.1225px!important;padding:15px;font-size:15px}::ng-deep .tel-input-container input.is-invalid{border:1.39032px solid #ff0000!important}::ng-deep .tel-input-container input::placeholder{color:#ddd}::ng-deep .tel-input-container input.custom:focus{color:#495057!important;background-color:#fff!important;border-color:#3c8dbc!important;outline:0!important;box-shadow:0 0 #fff!important}\n"] }]
111
+ }], propDecorators: { initialCountry: [{
112
+ type: Input
113
+ }], preferredCountries: [{
114
+ type: Input
115
+ }], nationalMode: [{
116
+ type: Input
117
+ }], separateDialCode: [{
118
+ type: Input
119
+ }], otherOptions: [{
120
+ type: Input
121
+ }], phoneInput: [{
122
+ type: ViewChild,
123
+ args: ['phoneInput', { static: false }]
124
+ }], phoneNumberChange: [{
125
+ type: Output
126
+ }] } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWMxQyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLGNBQWMsR0FBVyxJQUFJLENBQUMsQ0FBQyxrQkFBa0I7SUFDakQsa0JBQWtCLEdBQWEsRUFBRSxDQUFDLENBQUMsOEJBQThCO0lBQ2pFLFlBQVksR0FBWSxJQUFJLENBQUMsQ0FBQyx3REFBd0Q7SUFDdEYsZ0JBQWdCLEdBQVksSUFBSSxDQUFDLENBQUMsc0RBQXNEO0lBQ3hGLFlBQVksR0FBUSxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7SUFFNUIsVUFBVSxDQUFhO0lBQ25FLFdBQVcsR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztJQUNuSCxrQkFBa0IsQ0FBTTtJQUV4QixzRUFBc0U7SUFDNUQsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUV0RCxnREFBZ0Q7SUFDaEQsUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDOUIsU0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVyQixlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsb0JBQW9CO1FBQ2xCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsc0NBQXNDO1lBQ3ZFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSx5Q0FBeUM7WUFDbEYsV0FBVyxFQUFFLDBFQUEwRTtZQUN2RixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsd0NBQXdDO1NBQzlELENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUvRSxvRkFBb0Y7UUFDcEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUNuRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgscUVBQXFFO1FBQ3JFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFDbkcsQ0FBQztJQUNILENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsaUJBQWlCO1FBQ2YsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDMUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0Msc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsUUFBUTtZQUNSLFdBQVc7WUFDWCxVQUFVO1lBQ1YsTUFBTTtTQUNQLENBQUM7UUFFRixpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBRSw4QkFBOEI7SUFDaEYsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLCtFQUErRTtZQUMvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JHLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBckdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHlSQVJuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixvSUNkSCxxaEJBVU07OzJGRE1PLG1CQUFtQjtrQkFaL0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUdRLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRXNDLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFLaEMsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBpbnRsVGVsSW5wdXQgZnJvbSAnaW50bC10ZWwtaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGhvbmUtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBob25lSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBob25lSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgaW5pdGlhbENvdW50cnk6IHN0cmluZyA9ICd1cyc7IC8vIERlZmF1bHQgdG8gJ3VzJ1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogc3RyaW5nW10gPSBbXTsgLy8gTGlzdCBvZiBwcmVmZXJyZWQgY291bnRyaWVzXHJcbiAgQElucHV0KCkgbmF0aW9uYWxNb2RlOiBib29sZWFuID0gdHJ1ZTsgLy8gVXNlIG5hdGlvbmFsIG1vZGUgc28gZGlhbCBjb2RlIGlzIGhpZGRlbiBpbiBpbnB1dCBib3hcclxuICBASW5wdXQoKSBzZXBhcmF0ZURpYWxDb2RlOiBib29sZWFuID0gdHJ1ZTsgLy8gV2hldGhlciB0byBzZXBhcmF0ZSBkaWFsIGNvZGUgKGNvbnRyb2xzIGZvcm1hdHRpbmcpXHJcbiAgQElucHV0KCkgb3RoZXJPcHRpb25zOiBhbnkgPSB7fTsgLy8gQW55IG90aGVyIG9wdGlvbnMgZm9yIGludGwtdGVsLWlucHV0XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGhvbmVJbnB1dDogRWxlbWVudFJlZjtcclxuICBwaG9uZU51bWJlcjogYW55ID0geyBkaWFsQ29kZTogJycsIGNvdW50cnlDb2RlOiAnJywgZTE2NE51bWJlcjogJycsIG51bWJlcjogJycgfTsgLy8gU3RydWN0dXJlZCBwaG9uZSBudW1iZXIgb2JqZWN0XHJcbiAgcGhvbmVJbnB1dEluc3RhbmNlOiBhbnk7XHJcblxyXG4gIC8vIE91dHB1dCBFdmVudCB0byBzZW5kIHRoZSBwaG9uZSBudW1iZXIgdmFsdWUgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICBAT3V0cHV0KCkgcGhvbmVOdW1iZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIGZvcm0gY29udHJvbCB2YWx1ZSBjaGFuZ2VzXHJcbiAgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnBob25lSW5wdXQgJiYgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUGhvbmVJbnB1dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSW5pdGlhbGl6ZSBpbnRsLXRlbC1pbnB1dCBmb3IgdGhlIHBob25lIGlucHV0IGZpZWxkXHJcbiAgaW5pdGlhbGl6ZVBob25lSW5wdXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBpbml0aWFsQ291bnRyeTogdGhpcy5pbml0aWFsQ291bnRyeSxcclxuICAgICAgcHJlZmVycmVkQ291bnRyaWVzOiB0aGlzLnByZWZlcnJlZENvdW50cmllcyxcclxuICAgICAgbmF0aW9uYWxNb2RlOiB0aGlzLm5hdGlvbmFsTW9kZSwgLy8gVXNlIG5hdGlvbmFsIG1vZGUgdG8gaGlkZSBkaWFsIGNvZGVcclxuICAgICAgc2VwYXJhdGVEaWFsQ29kZTogdGhpcy5zZXBhcmF0ZURpYWxDb2RlLCAvLyBLZWVwIHNlcGFyYXRlIGRpYWwgY29kZSBmb3IgcHJvY2Vzc2luZ1xyXG4gICAgICB1dGlsc1NjcmlwdDogJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ludGwtdGVsLWlucHV0LzE3LjAuOC9qcy91dGlscy5qcycsXHJcbiAgICAgIC4uLnRoaXMub3RoZXJPcHRpb25zIC8vIE1lcmdlIGFueSBhZGRpdGlvbmFsIG9wdGlvbnMgcHJvdmlkZWRcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBpbnRsLXRlbC1pbnB1dFxyXG4gICAgdGhpcy5waG9uZUlucHV0SW5zdGFuY2UgPSBpbnRsVGVsSW5wdXQodGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xyXG5cclxuICAgIC8vIENhcHR1cmUgdGhlIGNvdW50cnkgY2hhbmdlIGV2ZW50IHRvIHRyYWNrIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNvZGUgYW5kIGRpYWwgY29kZVxyXG4gICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY291bnRyeWNoYW5nZScsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2FwdHVyZSBpbnB1dCBldmVudCB0byB1cGRhdGUgcGhvbmUgbnVtYmVyIGluIEUuMTY0IGZvcm1hdFxyXG4gICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlUGhvbmVOdW1iZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2YWx1ZSBpZiBhdmFpbGFibGUgKHdpdGhvdXQgc2hvd2luZyB0aGUgZGlhbCBjb2RlKVxyXG4gICAgaWYgKHRoaXMucGhvbmVOdW1iZXIuZTE2NE51bWJlcikge1xyXG4gICAgICB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodGhpcy5waG9uZU51bWJlci5lMTY0TnVtYmVyKTsgLy8gU2V0IHRoZSBFLjE2NCBmb3JtYXR0ZWQgbnVtYmVyXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gdXBkYXRlIHRoZSBwaG9uZSBudW1iZXIgb2JqZWN0XHJcbiAgdXBkYXRlUGhvbmVOdW1iZXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsQ29kZSA9ICcrJyArIHRoaXMucGhvbmVJbnB1dEluc3RhbmNlLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKS5kaWFsQ29kZTtcclxuICAgIGNvbnN0IGNvdW50cnlDb2RlID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuZ2V0U2VsZWN0ZWRDb3VudHJ5RGF0YSgpLmlzbzI7XHJcbiAgICBjb25zdCBlMTY0TnVtYmVyID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuZ2V0TnVtYmVyKCk7IC8vIEZ1bGwgbnVtYmVyIGluIEUuMTY0IGZvcm1hdFxyXG4gICAgY29uc3QgbnVtYmVyID0gZTE2NE51bWJlci5zcGxpdChkaWFsQ29kZSlbMV07XHJcblxyXG4gICAgLy8gVXBkYXRlIHRoZSBwaG9uZU51bWJlciBvYmplY3Qgd2l0aCB0aGUgZnVsbCBkZXRhaWxzXHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0ge1xyXG4gICAgICBkaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGUsXHJcbiAgICAgIGUxNjROdW1iZXIsXHJcbiAgICAgIG51bWJlclxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICB0aGlzLnBob25lTnVtYmVyQ2hhbmdlLmVtaXQodGhpcy5waG9uZU51bWJlcik7ICAvLyBTZW5kaW5nIHRoZSB2YWx1ZSB0byBwYXJlbnRcclxuICB9XHJcblxyXG4gIC8vIEltcGxlbWVudCB0aGUgd3JpdGVWYWx1ZSBtZXRob2QgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUuZTE2NE51bWJlcikge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnBob25lSW5wdXQgJiYgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodmFsdWUuZTE2NE51bWJlcik7IC8vIFNldCB0aGUgRS4xNjQgZm9ybWF0dGVkIG51bWJlclxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJbXBsZW1lbnQgdGhlIHJlZ2lzdGVyT25DaGFuZ2UgbWV0aG9kIGZvciBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy8gSW1wbGVtZW50IHRoZSByZWdpc3Rlck9uVG91Y2hlZCBtZXRob2QgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIEN1c3RvbSBWYWxpZGF0aW9uIE1ldGhvZDogVmFsaWRhdGUgdGhlIHBob25lIG51bWJlclxyXG4gIHZhbGlkYXRlUGhvbmVOdW1iZXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5waG9uZUlucHV0SW5zdGFuY2UpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcGhvbmUgbnVtYmVyIGlzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgY291bnRyeVxyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuaXNWYWxpZE51bWJlcigpIHx8IHRoaXMucGhvbmVOdW1iZXIubnVtYmVyLnN0YXJ0c1dpdGgoJzU1NScpO1xyXG4gICAgICByZXR1cm4gaXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPGlucHV0ICNwaG9uZUlucHV0IHR5cGU9XCJ0ZWxcIiBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyLnBob25lTnVtYmVyXCJcclxuICAgICAgICBuYW1lPVwicGhvbmVOdW1iZXJcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiICNwaG9uZT1cIm5nTW9kZWxcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6ICF2YWxpZGF0ZVBob25lTnVtYmVyKCkgJiYgcGhvbmUudG91Y2hlZH1cIj5cclxuXHJcbiAgICA8IS0tIFZhbGlkYXRpb24gZmVlZGJhY2sgLS0+XHJcbiAgICA8IS0tIDxkaXYgKm5nSWY9XCIhdmFsaWRhdGVQaG9uZU51bWJlcigpICYmIHBob25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgSW52YWxpZCBwaG9uZSBudW1iZXIuXHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDxpbnB1dCAjcGhvbmVJbnB1dCBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyLm51bWJlclwiIC8+IC0tPlxyXG48L2Rpdj4iXX0=