mmhglobal-dynamicform 2.12.3 → 2.13.0

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.
@@ -0,0 +1,109 @@
1
+ /********** Angular **********/
2
+ import { Injectable } from "@angular/core";
3
+ /********** Component & Service **********/
4
+ import { Delimiter } from 'mmhglobal-zcore';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "mmhglobal-zcore";
7
+ export var GridSettingType;
8
+ (function (GridSettingType) {
9
+ GridSettingType["OriginalSetting"] = "OriginalSetting";
10
+ GridSettingType["SavedSetting"] = "SavedSetting";
11
+ GridSettingType["CachedDataSetting"] = "CachedDataSetting";
12
+ })(GridSettingType || (GridSettingType = {}));
13
+ export var GridStateLogicType;
14
+ (function (GridStateLogicType) {
15
+ GridStateLogicType["SettingAndDataCache"] = "SettingAndDataCache";
16
+ GridStateLogicType["SettingOnly"] = "SettingOnly";
17
+ GridStateLogicType["DataCacheOnly"] = "DataCache";
18
+ })(GridStateLogicType || (GridStateLogicType = {}));
19
+ export class ZGridService {
20
+ constructor(offlineDatabaseService) {
21
+ this.offlineDatabaseService = offlineDatabaseService;
22
+ this.gridDefaultState = { skip: 0, take: 20 };
23
+ }
24
+ /**
25
+ * Configure grid settings based on the provided ZField object.
26
+ * @param field The ZField object containing configuration information.
27
+ * @returns The configured grid state.
28
+ */
29
+ setupGridSetting(field) {
30
+ // Set the default number of items to display (take) based on the provided field's PageSize or a default of 20.
31
+ this.gridDefaultState.take = field.PageSize || 20;
32
+ // Create a copy of the default state and assign it to this.gridState.
33
+ this.gridState = Object.assign({}, this.gridDefaultState);
34
+ if (field.CacheInfo) {
35
+ //const cacheName = this.getGridStateCacheStorageKey(GridSettingType.OriginalSetting);
36
+ //sessionStorage.setItem(cacheName, JSON.stringify(this.gridSettings));
37
+ // Generate a cache name based on the cache type and the field.
38
+ let cacheName = this.getGridStateCacheStorageKey(GridSettingType.CachedDataSetting, field);
39
+ // Determine whether to use SavedSetting cache type based on configuration.
40
+ if (field.CacheInfo.EnableSaveState === true && field.CacheInfo.DisableCacheData === true) {
41
+ cacheName = this.getGridStateCacheStorageKey(GridSettingType.SavedSetting, field);
42
+ }
43
+ // Retrieve the cached value from sessionStorage.
44
+ const cacheInfo = this.generateCacheInfo(field, cacheName);
45
+ const cacheValue = this.offlineDatabaseService.getItemByKey(cacheInfo, cacheInfo.offlineDatabaseKey);
46
+ // If a cached value exists, update this.gridState with the cached value.
47
+ if (cacheValue) {
48
+ this.gridState = cacheValue.gridState;
49
+ }
50
+ }
51
+ return this.gridState;
52
+ }
53
+ generateCacheInfo(gridField, offlineDatabaseKey) {
54
+ const cacheInfo = gridField.CacheInfo;
55
+ return {
56
+ priorityNumber: 0,
57
+ componentType: 'zgrid',
58
+ resourceURL: cacheInfo.ResourceURL,
59
+ appendPaginationData: cacheInfo.AppendPaginationData,
60
+ definedDatabase: cacheInfo.DefinedDatabase,
61
+ definedTable: cacheInfo.DefinedTable,
62
+ offlineDatabaseKey: offlineDatabaseKey ?? `${gridField.FieldElementName}${Delimiter.default}${gridField.Name}`,
63
+ saveAsJson: cacheInfo.SaveAsJson,
64
+ encryptValue: cacheInfo.EncryptValue
65
+ };
66
+ }
67
+ // Used for Grid state setting ONLY.
68
+ getGridStateCacheStorageKey(gridStateType, field) {
69
+ if (!field.CacheInfo) {
70
+ return;
71
+ }
72
+ const cacheName = `${field.FieldElementName}${Delimiter.default}${field.CacheInfo.Name ?? field.FieldElementName}`;
73
+ if (gridStateType === GridSettingType.OriginalSetting || gridStateType === GridSettingType.SavedSetting) {
74
+ return gridStateType + Delimiter.default + cacheName;
75
+ }
76
+ else if (gridStateType === GridSettingType.CachedDataSetting) {
77
+ return cacheName;
78
+ }
79
+ return null;
80
+ }
81
+ getGridStateLogic(field) {
82
+ if (field.CacheInfo) {
83
+ const enableSaveState = field.CacheInfo.EnableSaveState;
84
+ const disableCacheData = field.CacheInfo.DisableCacheData;
85
+ if (enableSaveState && !disableCacheData) {
86
+ return GridStateLogicType.SettingAndDataCache;
87
+ }
88
+ else if (enableSaveState && disableCacheData) {
89
+ return GridStateLogicType.SettingOnly;
90
+ }
91
+ else if (!enableSaveState && !disableCacheData) {
92
+ return GridStateLogicType.DataCacheOnly;
93
+ }
94
+ }
95
+ else {
96
+ console.log('CacheInfo is undefined.');
97
+ }
98
+ return null;
99
+ }
100
+ }
101
+ ZGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, deps: [{ token: i1.OfflineDatabaseService }], target: i0.ɵɵFactoryTarget.Injectable });
102
+ ZGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, providedIn: 'root' });
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, decorators: [{
104
+ type: Injectable,
105
+ args: [{
106
+ providedIn: 'root'
107
+ }]
108
+ }], ctorParameters: function () { return [{ type: i1.OfflineDatabaseService }]; } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL3pncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0MsMkNBQTJDO0FBQzNDLE9BQU8sRUFDRyxTQUFTLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7OztBQUV6QixNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLHNEQUFtQyxDQUFBO0lBQ25DLGdEQUE2QixDQUFBO0lBQzdCLDBEQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsaUVBQTJDLENBQUE7SUFDM0MsaURBQTJCLENBQUE7SUFDM0IsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFNRCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUNVLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBSGhELHFCQUFnQixHQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFLeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ25DLCtHQUErRztRQUMvRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBRWxELHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFB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QWdCLEVBQUU7Z0JBQzVDLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxDQUFDO2FBQ3ZDO2lCQUNJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDOUMsT0FBTyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7YUFDekM7U0FDRjthQUNJO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzt5R0FwR1UsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5XCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFxyXG4gIFpGaWVsZCwgRGVsaW1pdGVyLCBaR3JpZFNldHRpbmdzLCBPZmZsaW5lRGF0YWJhc2VTZXJ2aWNlLCBvZmZsaW5lRGF0YWJhc2VTZXR0aW5nXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJzsgIFxyXG4gXHJcbmV4cG9ydCBlbnVtIEdyaWRTZXR0aW5nVHlwZSB7XHJcbiAgT3JpZ2luYWxTZXR0aW5nID0gXCJPcmlnaW5hbFNldHRpbmdcIixcclxuICBTYXZlZFNldHRpbmcgPSBcIlNhdmVkU2V0dGluZ1wiLFxyXG4gIENhY2hlZERhdGFTZXR0aW5nID0gXCJDYWNoZWREYXRhU2V0dGluZ1wiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEdyaWRTdGF0ZUxvZ2ljVHlwZSB7XHJcbiAgU2V0dGluZ0FuZERhdGFDYWNoZSA9IFwiU2V0dGluZ0FuZERhdGFDYWNoZVwiLFxyXG4gIFNldHRpbmdPbmx5ID0gXCJTZXR0aW5nT25seVwiLFxyXG4gIERhdGFDYWNoZU9ubHkgPSBcIkRhdGFDYWNoZVwiXHJcbn1cclxuXHJcbiBcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWkdyaWRTZXJ2aWNlIHtcclxuICBwcml2YXRlIGdyaWRTdGF0ZTogU3RhdGU7XHJcbiAgcHJpdmF0ZSBncmlkRGVmYXVsdFN0YXRlOiBTdGF0ZSA9IHsgc2tpcDogMCwgdGFrZTogMjAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG9mZmxpbmVEYXRhYmFzZVNlcnZpY2U6IE9mZmxpbmVEYXRhYmFzZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyZSBncmlkIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBaRmllbGQgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBmaWVsZCBUaGUgWkZpZWxkIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyZWQgZ3JpZCBzdGF0ZS5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0dXBHcmlkU2V0dGluZyhmaWVsZDogWkZpZWxkKTogU3RhdGUge1xyXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5ICh0YWtlKSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZmllbGQncyBQYWdlU2l6ZSBvciBhIGRlZmF1bHQgb2YgMjAuXHJcbiAgICB0aGlzLmdyaWREZWZhdWx0U3RhdGUudGFrZSA9IGZpZWxkLlBhZ2VTaXplIHx8IDIwO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgc3RhdGUgYW5kIGFzc2lnbiBpdCB0byB0aGlzLmdyaWRTdGF0ZS5cclxuICAgIHRoaXMuZ3JpZFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncmlkRGVmYXVsdFN0YXRlKTtcclxuXHJcbiAgICBpZiAoZmllbGQuQ2FjaGVJbmZvKSB7XHJcbiAgICAgIC8vY29uc3QgY2FjaGVOYW1lID0gdGhpcy5nZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoR3JpZFNldHRpbmdUeXBlLk9yaWdpbmFsU2V0dGluZyk7XHJcbiAgICAgIC8vc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShjYWNoZU5hbWUsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JpZFNldHRpbmdzKSk7XHJcblxyXG4gICAgICAvLyBHZW5lcmF0ZSBhIGNhY2hlIG5hbWUgYmFzZWQgb24gdGhlIGNhY2hlIHR5cGUgYW5kIHRoZSBmaWVsZC5cclxuICAgICAgbGV0IGNhY2hlTmFtZSA9IHRoaXMuZ2V0R3JpZFN0YXRlQ2FjaGVTdG9yYWdlS2V5KEdyaWRTZXR0aW5nVHlwZS5DYWNoZWREYXRhU2V0dGluZywgZmllbGQpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIFNhdmVkU2V0dGluZyBjYWNoZSB0eXBlIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgIGlmIChmaWVsZC5DYWNoZUluZm8uRW5hYmxlU2F2ZVN0YXRlID09PSB0cnVlICYmIGZpZWxkLkNhY2hlSW5mby5EaXNhYmxlQ2FjaGVEYXRhID09PSB0cnVlKSB7XHJcbiAgICAgICAgY2FjaGVOYW1lID0gdGhpcy5nZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoR3JpZFNldHRpbmdUeXBlLlNhdmVkU2V0dGluZywgZmllbGQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgY2FjaGVkIHZhbHVlIGZyb20gc2Vzc2lvblN0b3JhZ2UuXHJcbiAgICAgIGNvbnN0IGNhY2hlSW5mbyA9IHRoaXMuZ2VuZXJhdGVDYWNoZUluZm8oZmllbGQsIGNhY2hlTmFtZSk7XHJcbiAgICAgIGNvbnN0IGNhY2hlVmFsdWUgPSB0aGlzLm9mZmxpbmVEYXRhYmFzZVNlcnZpY2UuZ2V0SXRlbUJ5S2V5KGNhY2hlSW5mbywgY2FjaGVJbmZvLm9mZmxpbmVEYXRhYmFzZUtleSk7XHJcblxyXG4gICAgICAvLyBJZiBhIGNhY2hlZCB2YWx1ZSBleGlzdHMsIHVwZGF0ZSB0aGlzLmdyaWRTdGF0ZSB3aXRoIHRoZSBjYWNoZWQgdmFsdWUuXHJcbiAgICAgIGlmIChjYWNoZVZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkU3RhdGUgPSAoY2FjaGVWYWx1ZSBhcyBaR3JpZFNldHRpbmdzKS5ncmlkU3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5ncmlkU3RhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVDYWNoZUluZm8oZ3JpZEZpZWxkOiBaRmllbGQsIG9mZmxpbmVEYXRhYmFzZUtleT86IHN0cmluZyk6IG9mZmxpbmVEYXRhYmFzZVNldHRpbmcge1xyXG4gICAgY29uc3QgY2FjaGVJbmZvID0gZ3JpZEZpZWxkLkNhY2hlSW5mbztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcmlvcml0eU51bWJlcjogMCxcclxuICAgICAgY29tcG9uZW50VHlwZTogJ3pncmlkJyxcclxuICAgICAgcmVzb3VyY2VVUkw6IGNhY2hlSW5mby5SZXNvdXJjZVVSTCxcclxuICAgICAgYXBwZW5kUGFnaW5hdGlvbkRhdGE6IGNhY2hlSW5mby5BcHBlbmRQYWdpbmF0aW9uRGF0YSxcclxuICAgICAgZGVmaW5lZERhdGFiYXNlOiBjYWNoZUluZm8uRGVmaW5lZERhdGFiYXNlLFxyXG4gICAgICBkZWZpbmVkVGFibGU6IGNhY2hlSW5mby5EZWZpbmVkVGFibGUsXHJcbiAgICAgIG9mZmxpbmVEYXRhYmFzZUtleTogb2ZmbGluZURhdGFiYXNlS2V5Pz8gYCR7Z3JpZEZpZWxkLkZpZWxkRWxlbWVudE5hbWV9JHtEZWxpbWl0ZXIuZGVmYXVsdH0ke2dyaWRGaWVsZC5OYW1lfWAsXHJcbiAgICAgIHNhdmVBc0pzb246IGNhY2hlSW5mby5TYXZlQXNKc29uLFxyXG4gICAgICBlbmNyeXB0VmFsdWU6IGNhY2hlSW5mby5FbmNyeXB0VmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVzZWQgZm9yIEdyaWQgc3RhdGUgc2V0dGluZyBPTkxZLlxyXG4gIHB1YmxpYyBnZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoZ3JpZFN0YXRlVHlwZTogR3JpZFNldHRpbmdUeXBlLCBmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBpZiAoIWZpZWxkLkNhY2hlSW5mbykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FjaGVOYW1lID0gYCR7ZmllbGQuRmllbGRFbGVtZW50TmFtZX0ke0RlbGltaXRlci5kZWZhdWx0fSR7ZmllbGQuQ2FjaGVJbmZvLk5hbWUgPz8gZmllbGQuRmllbGRFbGVtZW50TmFtZX1gO1xyXG5cclxuICAgIGlmIChncmlkU3RhdGVUeXBlID09PSBHcmlkU2V0dGluZ1R5cGUuT3JpZ2luYWxTZXR0aW5nIHx8IGdyaWRTdGF0ZVR5cGUgPT09IEdyaWRTZXR0aW5nVHlwZS5TYXZlZFNldHRpbmcpIHtcclxuICAgICAgcmV0dXJuIGdyaWRTdGF0ZVR5cGUgKyBEZWxpbWl0ZXIuZGVmYXVsdCArIGNhY2hlTmFtZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGdyaWRTdGF0ZVR5cGUgPT09IEdyaWRTZXR0aW5nVHlwZS5DYWNoZWREYXRhU2V0dGluZykge1xyXG4gICAgICByZXR1cm4gY2FjaGVOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdyaWRTdGF0ZUxvZ2ljKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGlmIChmaWVsZC5DYWNoZUluZm8pIHtcclxuICAgICAgY29uc3QgZW5hYmxlU2F2ZVN0YXRlID0gZmllbGQuQ2FjaGVJbmZvLkVuYWJsZVNhdmVTdGF0ZTtcclxuICAgICAgY29uc3QgZGlzYWJsZUNhY2hlRGF0YSA9IGZpZWxkLkNhY2hlSW5mby5EaXNhYmxlQ2FjaGVEYXRhO1xyXG5cclxuICAgICAgaWYgKGVuYWJsZVNhdmVTdGF0ZSAmJiAhZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuU2V0dGluZ0FuZERhdGFDYWNoZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChlbmFibGVTYXZlU3RhdGUgJiYgZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuU2V0dGluZ09ubHk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIWVuYWJsZVNhdmVTdGF0ZSAmJiAhZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuRGF0YUNhY2hlT25seTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdDYWNoZUluZm8gaXMgdW5kZWZpbmVkLicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=