@resolveio/client-lib-core 15.5.2 → 16.0.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.
Files changed (153) hide show
  1. package/esm2022/lib/account-manager.service.mjs +229 -0
  2. package/esm2022/lib/auth/auth-guard.service.mjs +174 -0
  3. package/esm2022/lib/auth/auth-permissions.service.mjs +23 -0
  4. package/esm2022/lib/auth/auth.service.mjs +251 -0
  5. package/esm2022/lib/auth/auth365.component.mjs +51 -0
  6. package/esm2022/lib/auth/can-deactivate-guard.service.mjs +13 -0
  7. package/esm2022/lib/auth/enroll.component.mjs +88 -0
  8. package/esm2022/lib/auth/forgot-password.component.mjs +89 -0
  9. package/esm2022/lib/core.component.mjs +404 -0
  10. package/esm2022/lib/core.module.mjs +176 -0
  11. package/esm2022/lib/core.service.mjs +88 -0
  12. package/esm2022/lib/directive/focus.mjs +24 -0
  13. package/esm2022/lib/directive/scroll.mjs +54 -0
  14. package/esm2022/lib/home/home.component.mjs +84 -0
  15. package/esm2022/lib/logger/logger.component.mjs +229 -0
  16. package/esm2022/lib/models/app-status.model.mjs +2 -0
  17. package/esm2022/lib/models/collection-document.model.mjs +2 -0
  18. package/esm2022/lib/models/cron-job.model.mjs +2 -0
  19. package/esm2022/lib/models/dialog.model.mjs +2 -0
  20. package/esm2022/lib/models/file.model.mjs +2 -0
  21. package/esm2022/lib/models/log-method-latency.model.mjs +2 -0
  22. package/esm2022/lib/models/navbar-main-tab.model.mjs +2 -0
  23. package/esm2022/lib/models/pagination.model.mjs +2 -0
  24. package/esm2022/lib/models/permission.model.mjs +2 -0
  25. package/esm2022/lib/models/select-data-label.model.mjs +2 -0
  26. package/esm2022/lib/models/subscription.model.mjs +2 -0
  27. package/esm2022/lib/models/support-ticket.model.mjs +2 -0
  28. package/esm2022/lib/models/user-group.model.mjs +2 -0
  29. package/esm2022/lib/models/user.model.mjs +2 -0
  30. package/esm2022/lib/offline-db.mjs +519 -0
  31. package/esm2022/lib/offline-manager.service.mjs +109 -0
  32. package/esm2022/lib/pipes/domsanitizor.pipe.mjs +29 -0
  33. package/esm2022/lib/pipes/filter.pipe.mjs +36 -0
  34. package/esm2022/lib/pipes/json-parse.pipe.mjs +29 -0
  35. package/esm2022/lib/pipes/minus-currency.pipe.mjs +16 -0
  36. package/esm2022/lib/pipes/phone.pipe.mjs +47 -0
  37. package/esm2022/lib/pipes/pipe.module.mjs +54 -0
  38. package/esm2022/lib/pipes/reverse-list.pipe.mjs +17 -0
  39. package/esm2022/lib/pipes/titlecase.pipe.mjs +22 -0
  40. package/esm2022/lib/report-builder.permission.mjs +13 -0
  41. package/esm2022/lib/resolveio-class.mjs +50 -0
  42. package/esm2022/lib/shared/shared.module.mjs +96 -0
  43. package/esm2022/lib/socket-manager.service.mjs +340 -0
  44. package/esm2022/lib/socket.service.mjs +200 -0
  45. package/esm2022/lib/super-admin.permission.mjs +9 -0
  46. package/esm2022/lib/support-ticket/detail/support-ticket-detail.component.mjs +211 -0
  47. package/esm2022/lib/support-ticket/edit/support-ticket-edit.component.mjs +131 -0
  48. package/esm2022/lib/support-ticket/list/support-ticket-list.component.mjs +142 -0
  49. package/esm2022/lib/support-ticket/new/support-ticket-new.component.mjs +121 -0
  50. package/esm2022/lib/support-ticket/support-ticket.component.mjs +67 -0
  51. package/esm2022/lib/support-ticket/support-ticket.module.mjs +50 -0
  52. package/esm2022/lib/support-ticket/support-ticket.routing.mjs +20 -0
  53. package/esm2022/lib/support-ticket/support-ticket.service.mjs +16 -0
  54. package/esm2022/lib/token-manager.service.mjs +25 -0
  55. package/esm2022/lib/user-settings/settings/users-settings.component.mjs +302 -0
  56. package/esm2022/lib/user-settings/user-settings.component.mjs +61 -0
  57. package/esm2022/lib/user-settings/user-settings.module.mjs +41 -0
  58. package/esm2022/lib/user-settings/user-settings.permission.mjs +10 -0
  59. package/esm2022/lib/user-settings/user-settings.routing.mjs +14 -0
  60. package/esm2022/lib/user-settings/user-settings.service.mjs +16 -0
  61. package/esm2022/lib/util/action-name.helper.mjs +9 -0
  62. package/esm2022/lib/util/aws.service.mjs +80 -0
  63. package/esm2022/lib/util/common.helper.mjs +133 -0
  64. package/esm2022/lib/util/validation.service.mjs +185 -0
  65. package/esm2022/lib/util/window-resize.service.mjs +38 -0
  66. package/esm2022/lib/util/window.service.mjs +16 -0
  67. package/esm2022/lib/widgets/alert/alert.model.mjs +2 -0
  68. package/esm2022/lib/widgets/alert/alert.service.mjs +79 -0
  69. package/esm2022/lib/widgets/collapse-table/collapse-table.component.mjs +83 -0
  70. package/esm2022/lib/widgets/collapse-table/collapse-table.module.mjs +34 -0
  71. package/esm2022/lib/widgets/data-table/data-table.component.mjs +84 -0
  72. package/esm2022/lib/widgets/data-table/data-table.model.mjs +2 -0
  73. package/esm2022/lib/widgets/data-table/data-table.module.mjs +41 -0
  74. package/esm2022/lib/widgets/date-shortcut/date-shortcut.component.mjs +198 -0
  75. package/esm2022/lib/widgets/date-shortcut/date-shortcut.module.mjs +32 -0
  76. package/esm2022/lib/widgets/dialog/dialog.confirm.content.mjs +67 -0
  77. package/esm2022/lib/widgets/dialog/dialog.error.content.mjs +60 -0
  78. package/esm2022/lib/widgets/dialog/dialog.input.content.mjs +200 -0
  79. package/esm2022/lib/widgets/dialog/dialog.login.content.mjs +354 -0
  80. package/esm2022/lib/widgets/dialog/dialog.notify.content.mjs +60 -0
  81. package/esm2022/lib/widgets/dialog/dialog.register.content.mjs +333 -0
  82. package/esm2022/lib/widgets/dialog/dialog.select-array-objs.content.mjs +203 -0
  83. package/esm2022/lib/widgets/dialog/dialog.select-array.content.mjs +310 -0
  84. package/esm2022/lib/widgets/dialog/dialog.select-data-labels.content.mjs +196 -0
  85. package/esm2022/lib/widgets/dialog/dialog.select-datetime.content.mjs +191 -0
  86. package/esm2022/lib/widgets/dialog/dialog.select-with-buttons-url.content.mjs +166 -0
  87. package/esm2022/lib/widgets/dialog/dialog.service.mjs +98 -0
  88. package/esm2022/lib/widgets/file/file-upload.component.mjs +433 -0
  89. package/esm2022/lib/widgets/file/file-upload.module.mjs +48 -0
  90. package/esm2022/lib/widgets/form-button/form-button.component.mjs +97 -0
  91. package/esm2022/lib/widgets/form-button/form-button.module.mjs +28 -0
  92. package/esm2022/lib/widgets/navbar-main/navbar-main.component.mjs +222 -0
  93. package/esm2022/lib/widgets/navbar-module/navbar-module.component.mjs +108 -0
  94. package/esm2022/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
  95. package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +41 -0
  96. package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +24 -0
  97. package/esm2022/lib/widgets/scheduler/scheduler.component.mjs +186 -0
  98. package/esm2022/lib/widgets/scheduler/scheduler.module.mjs +37 -0
  99. package/esm2022/lib/widgets/sort-table/sort-table-header.component.mjs +72 -0
  100. package/esm2022/lib/widgets/sort-table/sort-table-ngfor.component.mjs +49 -0
  101. package/esm2022/lib/widgets/sort-table/sort-table.directive.mjs +177 -0
  102. package/esm2022/lib/widgets/sort-table/sort-table.module.mjs +38 -0
  103. package/esm2022/lib/widgets/user-role/user-role.component.mjs +29 -0
  104. package/esm2022/lib/widgets/user-role/user-role.module.mjs +24 -0
  105. package/esm2022/public_api.mjs +91 -0
  106. package/esm2022/resolveio-client-lib-core.mjs +5 -0
  107. package/fesm2022/resolveio-client-lib-core.mjs +9019 -0
  108. package/fesm2022/resolveio-client-lib-core.mjs.map +1 -0
  109. package/index.d.ts +3 -0
  110. package/lib/auth/auth-guard.service.d.ts +2 -2
  111. package/lib/auth/can-deactivate-guard.service.d.ts +1 -2
  112. package/lib/core.component.d.ts +1 -2
  113. package/lib/core.module.d.ts +26 -29
  114. package/lib/directive/focus.d.ts +1 -1
  115. package/lib/directive/scroll.d.ts +1 -1
  116. package/lib/logger/logger.component.d.ts +0 -2
  117. package/lib/models/dialog.model.d.ts +1 -1
  118. package/lib/models/pagination.model.d.ts +1 -0
  119. package/lib/models/user-group.model.d.ts +0 -1
  120. package/lib/offline-db.d.ts +1 -5
  121. package/lib/offline-manager.service.d.ts +1 -4
  122. package/lib/socket-manager.service.d.ts +5 -34
  123. package/lib/socket.service.d.ts +3 -17
  124. package/lib/token-manager.service.d.ts +2 -4
  125. package/lib/util/aws.service.d.ts +1 -2
  126. package/lib/util/common.helper.d.ts +1 -3
  127. package/lib/util/window-resize.service.d.ts +6 -5
  128. package/lib/widgets/collapse-table/collapse-table.component.d.ts +1 -1
  129. package/lib/widgets/data-table/data-table.component.d.ts +1 -1
  130. package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +1 -5
  131. package/lib/widgets/dialog/dialog.confirm.content.d.ts +1 -1
  132. package/lib/widgets/dialog/dialog.error.content.d.ts +1 -1
  133. package/lib/widgets/dialog/dialog.input.content.d.ts +1 -1
  134. package/lib/widgets/dialog/dialog.login.content.d.ts +1 -1
  135. package/lib/widgets/dialog/dialog.notify.content.d.ts +1 -1
  136. package/lib/widgets/dialog/dialog.select-array-objs.content.d.ts +1 -1
  137. package/lib/widgets/dialog/dialog.select-array.content.d.ts +1 -1
  138. package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +1 -1
  139. package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +1 -1
  140. package/lib/widgets/dialog/dialog.select-with-buttons-url.content.d.ts +1 -1
  141. package/lib/widgets/file/file-upload.component.d.ts +1 -1
  142. package/lib/widgets/file/file-upload.module.d.ts +2 -2
  143. package/lib/widgets/form-button/form-button.component.d.ts +1 -1
  144. package/lib/widgets/navbar-main/navbar-main.component.d.ts +1 -2
  145. package/lib/widgets/navbar-module/navbar-module.component.d.ts +1 -1
  146. package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +1 -1
  147. package/lib/widgets/sort-table/sort-table-header.component.d.ts +1 -1
  148. package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +1 -1
  149. package/lib/widgets/sort-table/sort-table.directive.d.ts +8 -1
  150. package/lib/widgets/user-role/user-role.component.d.ts +1 -1
  151. package/package.json +5 -6
  152. package/fesm2020/resolveio-client-lib-core.min.mjs +0 -1
  153. package/lib/logger/diff-viewer.component.d.ts +0 -35
@@ -0,0 +1,61 @@
1
+ import { Component } from '@angular/core';
2
+ import { UserSettingsService } from './user-settings.service';
3
+ import { UserSettingsModulePermission } from './user-settings.permission';
4
+ import { ProviderService, BaseComponent } from '../resolveio-class';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./user-settings.service";
7
+ import * as i2 from "../resolveio-class";
8
+ import * as i3 from "@angular/router";
9
+ export class UserSettingsComponent extends BaseComponent {
10
+ _us;
11
+ _services;
12
+ selectedUserSettings$;
13
+ menuData;
14
+ constructor(_us, _services) {
15
+ super(_services);
16
+ this._us = _us;
17
+ this._services = _services;
18
+ }
19
+ ngOnInit() {
20
+ this.selectedUserSettings$ = this._us.selectedUser.subscribe(val => this.selectedUserSettingsChanged(val));
21
+ }
22
+ ngOnDestroy() {
23
+ this._us.setSelectedUser('0');
24
+ this.selectedUserSettings$.unsubscribe();
25
+ }
26
+ selectedUserSettingsChanged(id) {
27
+ this.setUserSettingsMenuData();
28
+ }
29
+ setUserSettingsMenuData(id, user) {
30
+ let tabs = [];
31
+ UserSettingsModulePermission.views.forEach(view => {
32
+ if (this._services._account.isUserInView(view.link) || this._services._account.isUserSuperAdmin()) {
33
+ switch (view.link) {
34
+ case '/user-settings/settings':
35
+ tabs.push({ link: '/user-settings/settings', params: null, label: 'Settings' });
36
+ break;
37
+ default:
38
+ break;
39
+ }
40
+ }
41
+ });
42
+ this.menuData = {
43
+ title: 'User Settings',
44
+ module: 'User Settings',
45
+ description_name: 'User: ',
46
+ description: user ? user.fullname : '',
47
+ tabs: tabs
48
+ };
49
+ this._services._app.setNavbarModuleData(this.menuData);
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsComponent, deps: [{ token: i1.UserSettingsService }, { token: i2.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
52
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserSettingsComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: '<router-outlet></router-outlet>', isInline: true, dependencies: [{ kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsComponent, decorators: [{
55
+ type: Component,
56
+ args: [{
57
+ providers: [ProviderService],
58
+ template: '<router-outlet></router-outlet>'
59
+ }]
60
+ }], ctorParameters: function () { return [{ type: i1.UserSettingsService }, { type: i2.ProviderService }]; } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQUtuQztJQUFrQztJQUp0RCxxQkFBcUIsQ0FBZTtJQUVwQyxRQUFRLENBQWM7SUFFdEIsWUFBb0IsR0FBd0IsRUFBVSxTQUEwQjtRQUMvRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFERSxRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWlCO0lBRWhGLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDM0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsRUFBVTtRQUNyQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsRUFBVyxFQUFFLElBQWdCO1FBQ3BELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ2xHLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDbEIsS0FBSyx5QkFBeUI7d0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQzt3QkFDOUUsTUFBTTtvQkFDUDt3QkFDQyxNQUFNO2lCQUNQO2FBQ0Q7UUFDRixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZixLQUFLLEVBQUUsZUFBZTtZQUN0QixNQUFNLEVBQUUsZUFBZTtZQUN2QixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxFQUFFLElBQUk7U0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7d0dBakRXLHFCQUFxQjs0RkFBckIscUJBQXFCLHVDQUp0QixDQUFDLGVBQWUsQ0FBQyxpREFDbEIsaUNBQWlDOzs0RkFHL0IscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNWLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDNUIsUUFBUSxFQUFFLGlDQUFpQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZiYXJNb2RlbCB9IGZyb20gJy4uL3dpZGdldHMvbmF2YmFyLW1vZHVsZS9uYXZiYXItbW9kdWxlLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc01vZHVsZVBlcm1pc3Npb24gfSBmcm9tICcuL3VzZXItc2V0dGluZ3MucGVybWlzc2lvbic7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGU6ICc8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXHRzZWxlY3RlZFVzZXJTZXR0aW5ncyQ6IFN1YnNjcmlwdGlvbjtcblxuXHRtZW51RGF0YTogTmF2YmFyTW9kZWw7XG5cdFxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF91czogVXNlclNldHRpbmdzU2VydmljZSwgcHJpdmF0ZSBfc2VydmljZXM6IFByb3ZpZGVyU2VydmljZSkge1xuXHRcdHN1cGVyKF9zZXJ2aWNlcyk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnNlbGVjdGVkVXNlclNldHRpbmdzJCA9IHRoaXMuX3VzLnNlbGVjdGVkVXNlci5zdWJzY3JpYmUoXG5cdFx0XHR2YWwgPT4gdGhpcy5zZWxlY3RlZFVzZXJTZXR0aW5nc0NoYW5nZWQodmFsKVxuXHRcdCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLl91cy5zZXRTZWxlY3RlZFVzZXIoJzAnKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU2V0dGluZ3MkLnVuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHRzZWxlY3RlZFVzZXJTZXR0aW5nc0NoYW5nZWQoaWQ6IHN0cmluZykge1xuXHRcdHRoaXMuc2V0VXNlclNldHRpbmdzTWVudURhdGEoKTtcblx0fVxuXG5cdHNldFVzZXJTZXR0aW5nc01lbnVEYXRhKGlkPzogc3RyaW5nLCB1c2VyPzogVXNlck1vZGVsKSB7XG5cdFx0bGV0IHRhYnMgPSBbXTtcblxuXHRcdFVzZXJTZXR0aW5nc01vZHVsZVBlcm1pc3Npb24udmlld3MuZm9yRWFjaCh2aWV3ID0+IHtcblx0XHRcdGlmICh0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5pc1VzZXJJblZpZXcodmlldy5saW5rKSB8fCB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5pc1VzZXJTdXBlckFkbWluKCkpIHtcblx0XHRcdFx0c3dpdGNoICh2aWV3LmxpbmspIHtcblx0XHRcdFx0XHRjYXNlICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncyc6IFxuXHRcdFx0XHRcdFx0dGFicy5wdXNoKHtsaW5rOiAnL3VzZXItc2V0dGluZ3Mvc2V0dGluZ3MnLCBwYXJhbXM6IG51bGwsIGxhYmVsOiAnU2V0dGluZ3MnfSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMubWVudURhdGEgPSB7XG5cdFx0XHR0aXRsZTogJ1VzZXIgU2V0dGluZ3MnLFxuXHRcdFx0bW9kdWxlOiAnVXNlciBTZXR0aW5ncycsXG5cdFx0XHRkZXNjcmlwdGlvbl9uYW1lOiAnVXNlcjogJyxcblx0XHRcdGRlc2NyaXB0aW9uOiB1c2VyID8gdXNlci5mdWxsbmFtZSA6ICcnLFxuXHRcdFx0dGFiczogdGFic1xuXHRcdH07XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fYXBwLnNldE5hdmJhck1vZHVsZURhdGEodGhpcy5tZW51RGF0YSk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SharedModule } from '../shared/shared.module';
3
+ import { UserSettingsRouting } from './user-settings.routing';
4
+ import { UserSettingsComponent } from './user-settings.component';
5
+ import { UserSettingsService } from './user-settings.service';
6
+ import { DatatableModule } from '../widgets/data-table/data-table.module';
7
+ import { FileModule } from '../widgets/file/file-upload.module';
8
+ import { UsersSettingsComponent } from './settings/users-settings.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/router";
11
+ export class UserSettingsModule {
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsModule, declarations: [UserSettingsComponent,
14
+ UsersSettingsComponent], imports: [SharedModule, i1.RouterModule, DatatableModule,
15
+ FileModule] });
16
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsModule, providers: [
17
+ UserSettingsService
18
+ ], imports: [SharedModule,
19
+ UserSettingsRouting,
20
+ DatatableModule,
21
+ FileModule] });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ imports: [
27
+ SharedModule,
28
+ UserSettingsRouting,
29
+ DatatableModule,
30
+ FileModule
31
+ ],
32
+ declarations: [
33
+ UserSettingsComponent,
34
+ UsersSettingsComponent
35
+ ],
36
+ providers: [
37
+ UserSettingsService
38
+ ]
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFpQjdFLE1BQU0sT0FBTyxrQkFBa0I7d0dBQWxCLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGlCQVA3QixxQkFBcUI7WUFDckIsc0JBQXNCLGFBUHRCLFlBQVksbUJBRVosZUFBZTtZQUNmLFVBQVU7eUdBVUMsa0JBQWtCLGFBSm5CO1lBQ1YsbUJBQW1CO1NBQ25CLFlBWEEsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsVUFBVTs7NEZBVUMsa0JBQWtCO2tCQWY5QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixVQUFVO3FCQUNWO29CQUNELFlBQVksRUFBRTt3QkFDYixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWLG1CQUFtQjtxQkFDbkI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuXG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NSb3V0aW5nIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnJvdXRpbmcnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vd2lkZ2V0cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kdWxlJztcbmltcG9ydCB7IEZpbGVNb2R1bGUgfSBmcm9tICcuLi93aWRnZXRzL2ZpbGUvZmlsZS11cGxvYWQubW9kdWxlJztcbmltcG9ydCB7IFVzZXJzU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmdzL3VzZXJzLXNldHRpbmdzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6IFtcblx0XHRTaGFyZWRNb2R1bGUsXG5cdFx0VXNlclNldHRpbmdzUm91dGluZyxcblx0XHREYXRhdGFibGVNb2R1bGUsXG5cdFx0RmlsZU1vZHVsZVxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgXG5cdFx0VXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRcdFVzZXJzU2V0dGluZ3NDb21wb25lbnRcblx0XSxcblx0cHJvdmlkZXJzOiBbXG5cdFx0VXNlclNldHRpbmdzU2VydmljZVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5nc01vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export const UserSettingsModulePermission = {
2
+ name: 'user-settings',
3
+ views: [
4
+ { link: '/user-settings/settings', label: 'Settings' }
5
+ ],
6
+ approval: {
7
+ type: 'user-settings'
8
+ }
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEwQjtJQUNsRSxJQUFJLEVBQUUsZUFBZTtJQUNyQixLQUFLLEVBQUU7UUFDTixFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDO0tBQ3BEO0lBQ0QsUUFBUSxFQUFFO1FBQ1QsSUFBSSxFQUFFLGVBQWU7S0FDckI7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlUGVybWlzc2lvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24ubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgVXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbjogTW9kdWxlUGVybWlzc2lvbk1vZGVsID0ge1xuXHRuYW1lOiAndXNlci1zZXR0aW5ncycsXG5cdHZpZXdzOiBbXG5cdFx0e2xpbms6ICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnfVxuXHRdLFxuXHRhcHByb3ZhbDoge1xuXHRcdHR5cGU6ICd1c2VyLXNldHRpbmdzJ1xuXHR9XG59O1xuIl19
@@ -0,0 +1,14 @@
1
+ import { RouterModule } from '@angular/router';
2
+ import { UserSettingsComponent } from './user-settings.component';
3
+ import { UsersSettingsComponent } from './settings/users-settings.component';
4
+ const routes = [{
5
+ path: 'user-settings',
6
+ component: UserSettingsComponent,
7
+ children: [
8
+ { path: 'settings', component: UsersSettingsComponent },
9
+ { path: '**', redirectTo: 'settings' }
10
+ ]
11
+ }
12
+ ];
13
+ export const UserSettingsRouting = RouterModule.forChild(routes);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBVSxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBVyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsUUFBUSxFQUFFO1lBQ1QsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtZQUN2RCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtTQUN0QztLQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUErQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy91c2Vycy1zZXR0aW5ncy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFt7IFxuXHRwYXRoOiAndXNlci1zZXR0aW5ncycsXG5cdGNvbXBvbmVudDogVXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRjaGlsZHJlbjogW1xuXHRcdHsgcGF0aDogJ3NldHRpbmdzJywgY29tcG9uZW50OiBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0sXG5cdFx0eyBwYXRoOiAnKionLCByZWRpcmVjdFRvOiAnc2V0dGluZ3MnIH1cblx0XX1cbl07XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NSb3V0aW5nOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvdXRlPiA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xuIl19
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class UserSettingsService {
5
+ selectedUser = new BehaviorSubject('0');
6
+ constructor() { }
7
+ setSelectedUser(id) {
8
+ this.selectedUser.next(id);
9
+ }
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsService });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserSettingsService, decorators: [{
14
+ type: Injectable
15
+ }], ctorParameters: function () { return []; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUUvQixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEMsZ0JBQWUsQ0FBQztJQUVoQixlQUFlLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO3dHQVJXLG1CQUFtQjs0R0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NTZXJ2aWNlIHtcblxuXHRzZWxlY3RlZFVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcwJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdHNldFNlbGVjdGVkVXNlcihpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZWxlY3RlZFVzZXIubmV4dChpZCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ let typeCache = {};
2
+ export function type(label) {
3
+ if (typeCache[label]) {
4
+ throw new Error(`Action type "${label}" is not unqiue"`);
5
+ }
6
+ typeCache[label] = true;
7
+ return label;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW5hbWUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3V0aWwvYWN0aW9uLW5hbWUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksU0FBUyxHQUFpQyxFQUFFLENBQUM7QUFDakQsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFhO0lBQ3BDLElBQUksU0FBUyxDQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssa0JBQWtCLENBQUMsQ0FBQztLQUN6RDtJQUVELFNBQVMsQ0FBUyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7SUFFaEMsT0FBVSxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCB0eXBlQ2FjaGU6IHsgW2xhYmVsOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB0eXBlPFQ+KGxhYmVsOiBUIHwgJycpOiBUIHtcblx0aWYgKHR5cGVDYWNoZVs8c3RyaW5nPmxhYmVsXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGUgXCIke2xhYmVsfVwiIGlzIG5vdCB1bnFpdWVcImApO1xuXHR9XG5cblx0dHlwZUNhY2hlWzxzdHJpbmc+bGFiZWxdID0gdHJ1ZTtcblxuXHRyZXR1cm4gPFQ+bGFiZWw7XG59XG4iXX0=
@@ -0,0 +1,80 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SocketManagerService } from '../socket-manager.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../socket-manager.service";
5
+ export class AwsService {
6
+ _socket;
7
+ constructor(_socket) {
8
+ this._socket = _socket;
9
+ }
10
+ dataURItoFile(dataURI, filename) {
11
+ // convert base64 to raw binary data held in a string
12
+ // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
13
+ let byteString = atob(dataURI.split(',')[1]);
14
+ // separate out the mime component
15
+ let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
16
+ // write the bytes of the string to an ArrayBuffer
17
+ let ab = new ArrayBuffer(byteString.length);
18
+ let ia = new Uint8Array(ab);
19
+ for (let i = 0; i < byteString.length; i++) {
20
+ ia[i] = byteString.charCodeAt(i);
21
+ }
22
+ // write the ArrayBuffer to a blob, and you're done
23
+ let blob = new Blob([ab], { type: mimeString });
24
+ blob['lastModifiedDate'] = new Date();
25
+ blob['name'] = filename;
26
+ return blob;
27
+ }
28
+ uploadFile(file, type, order, filename) {
29
+ return new Promise((resolve, reject) => {
30
+ if (file.size) {
31
+ this.getBase64(file).then(data => {
32
+ this._socket.call('uploadFileAndSave', filename ? filename : file.name, data, file.size, order ? order : -1, type, true, (err, res) => {
33
+ if (res) {
34
+ resolve(res);
35
+ }
36
+ else {
37
+ reject(err);
38
+ }
39
+ });
40
+ });
41
+ }
42
+ else {
43
+ reject('Invalid File');
44
+ }
45
+ });
46
+ }
47
+ getFileWithKey(key, callback) {
48
+ this._socket.call('getFile', key, callback);
49
+ }
50
+ getFileWithId(id, callback) {
51
+ this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
52
+ this.getFileWithKey(file.key, callback);
53
+ });
54
+ }
55
+ deleteFile(key, callback) {
56
+ this._socket.call('deleteFile', key, callback);
57
+ }
58
+ deleteFileWithId(id, callback) {
59
+ this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
60
+ this.deleteFile(file.key, callback);
61
+ });
62
+ }
63
+ deleteFilesWithKeys(keys, callback) {
64
+ this._socket.call('deleteFiles', keys, callback);
65
+ }
66
+ getBase64(file) {
67
+ return new Promise((resolve, reject) => {
68
+ const reader = new FileReader();
69
+ reader.readAsDataURL(file);
70
+ reader.onload = () => resolve(reader.result);
71
+ reader.onerror = error => reject(error);
72
+ });
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AwsService, deps: [{ token: i1.SocketManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AwsService });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AwsService, decorators: [{
78
+ type: Injectable
79
+ }], ctorParameters: function () { return [{ type: i1.SocketManagerService }]; } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbC9hd3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFHakUsTUFBTSxPQUFPLFVBQVU7SUFFRjtJQUFwQixZQUFvQixPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtJQUFHLENBQUM7SUFFckQsYUFBYSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUM5QyxxREFBcUQ7UUFDckQsc0ZBQXNGO1FBQ3RGLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0Msa0NBQWtDO1FBQ2xDLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRSxrREFBa0Q7UUFDbEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pD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QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO3dHQS9FVyxVQUFVOzRHQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU29ja2V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zb2NrZXQtbWFuYWdlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF3c1NlcnZpY2UgIHtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9zb2NrZXQ6IFNvY2tldE1hbmFnZXJTZXJ2aWNlKSB7fVxuXG5cdGRhdGFVUkl0b0ZpbGUoZGF0YVVSSTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogRmlsZSB7XG5cdFx0Ly8gY29udmVydCBiYXNlNjQgdG8gcmF3IGJpbmFyeSBkYXRhIGhlbGQgaW4gYSBzdHJpbmdcblx0XHQvLyBkb2Vzbid0IGhhbmRsZSBVUkxFbmNvZGVkIERhdGFVUklzIC0gc2VlIFNPIGFuc3dlciAjNjg1MDI3NiBmb3IgY29kZSB0aGF0IGRvZXMgdGhpc1xuXHRcdGxldCBieXRlU3RyaW5nID0gYXRvYihkYXRhVVJJLnNwbGl0KCcsJylbMV0pO1xuXG5cdFx0Ly8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuXHRcdGxldCBtaW1lU3RyaW5nID0gZGF0YVVSSS5zcGxpdCgnLCcpWzBdLnNwbGl0KCc6JylbMV0uc3BsaXQoJzsnKVswXTtcblxuXHRcdC8vIHdyaXRlIHRoZSBieXRlcyBvZiB0aGUgc3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyXG5cdFx0bGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcblx0XHRsZXQgaWEgPSBuZXcgVWludDhBcnJheShhYik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpYVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcblx0XHR9XG5cblx0XHQvLyB3cml0ZSB0aGUgQXJyYXlCdWZmZXIgdG8gYSBibG9iLCBhbmQgeW91J3JlIGRvbmVcblx0XHRsZXQgYmxvYiA9IG5ldyBCbG9iKFthYl0sIHt0eXBlOiBtaW1lU3RyaW5nfSk7XG5cdFx0XG5cdFx0YmxvYlsnbGFzdE1vZGlmaWVkRGF0ZSddID0gbmV3IERhdGUoKTtcblx0XHRibG9iWyduYW1lJ10gPSBmaWxlbmFtZTtcblxuXHRcdHJldHVybiA8RmlsZT5ibG9iO1xuXHR9XG5cblx0dXBsb2FkRmlsZShmaWxlOiBGaWxlLCB0eXBlOiBzdHJpbmcsIG9yZGVyPzogbnVtYmVyLCBmaWxlbmFtZT86IHN0cmluZykge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0aWYgKGZpbGUuc2l6ZSkge1xuXHRcdFx0XHR0aGlzLmdldEJhc2U2NChmaWxlKS50aGVuKGRhdGEgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX3NvY2tldC5jYWxsKCd1cGxvYWRGaWxlQW5kU2F2ZScsIGZpbGVuYW1lID8gZmlsZW5hbWUgOiBmaWxlLm5hbWUsIGRhdGEsIGZpbGUuc2l6ZSwgb3JkZXIgPyBvcmRlciA6IC0xLCB0eXBlLCB0cnVlLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZWplY3QoJ0ludmFsaWQgRmlsZScpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0RmlsZVdpdGhLZXkoa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuXHRcdHRoaXMuX3NvY2tldC5jYWxsKCdnZXRGaWxlJywga2V5LCBjYWxsYmFjayk7XG5cdH1cblxuXHRnZXRGaWxlV2l0aElkKGlkOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuXHRcdHRoaXMuX3NvY2tldC5jYWxsKCdmaW5kT25lJywgJ2ZpbGVzJywge19pZDogaWR9LCAoZXJyLCBmaWxlKSA9PiB7XG5cdFx0XHR0aGlzLmdldEZpbGVXaXRoS2V5KGZpbGUua2V5LCBjYWxsYmFjayk7XG5cdFx0fSk7XG5cdH1cblxuXHRkZWxldGVGaWxlKGtleTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZGVsZXRlRmlsZScsIGtleSwgY2FsbGJhY2spO1xuXHR9XG5cblx0ZGVsZXRlRmlsZVdpdGhJZChpZDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZmluZE9uZScsICdmaWxlcycsIHtfaWQ6IGlkfSwgKGVyciwgZmlsZSkgPT4ge1xuXHRcdFx0dGhpcy5kZWxldGVGaWxlKGZpbGUua2V5LCBjYWxsYmFjayk7XG5cdFx0fSk7XG5cdH1cblxuXHRkZWxldGVGaWxlc1dpdGhLZXlzKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZGVsZXRlRmlsZXMnLCBrZXlzLCBjYWxsYmFjayk7XG5cdH1cblxuXHRnZXRCYXNlNjQoZmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblx0XHRcdHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKDxzdHJpbmc+cmVhZGVyLnJlc3VsdCk7XG5cdFx0XHRyZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,133 @@
1
+ import { detailedDiff } from 'deep-object-diff';
2
+ import moment from 'moment';
3
+ const isObject = (object) => {
4
+ return object instanceof Object && object.constructor.name === 'Object';
5
+ };
6
+ export function toTitleCase(str) {
7
+ return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
8
+ }
9
+ export function isUpperCase(str) {
10
+ return (/^[A-Z]*$/).test(str);
11
+ }
12
+ export function pad(num, size) {
13
+ let s = num + '';
14
+ while (s.length < size) {
15
+ s = '0' + s;
16
+ }
17
+ return s;
18
+ }
19
+ export function deepCopy(obj) {
20
+ return JSON.parse(JSON.stringify(obj), dateReviver);
21
+ }
22
+ export function dateReviver(key, value) {
23
+ if (typeof value === 'string') {
24
+ let a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
25
+ if (a) {
26
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
27
+ }
28
+ }
29
+ return value;
30
+ }
31
+ export function b64toBlobURL(b64Data, contentType, sliceSize) {
32
+ b64Data = b64Data.replace('data:application/pdf;base64,', '');
33
+ contentType = contentType || '';
34
+ sliceSize = sliceSize || 512;
35
+ let byteCharacters = atob(b64Data);
36
+ let byteArrays = [];
37
+ for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
38
+ let slice = byteCharacters.slice(offset, offset + sliceSize);
39
+ let byteNumbers = new Array(slice.length);
40
+ for (let i = 0; i < slice.length; i++) {
41
+ byteNumbers[i] = slice.charCodeAt(i);
42
+ }
43
+ let byteArray = new Uint8Array(byteNumbers);
44
+ byteArrays.push(byteArray);
45
+ }
46
+ let blob = new Blob(byteArrays, { type: contentType });
47
+ return URL.createObjectURL(blob);
48
+ }
49
+ export function blobToFile(theBlob, fileName) {
50
+ //A Blob() is almost a File() - it's just missing the two properties below which we will add
51
+ theBlob.lastModifiedDate = new Date();
52
+ theBlob.name = fileName;
53
+ return theBlob;
54
+ }
55
+ export function toDataURL(url, callback) {
56
+ let xhr = new XMLHttpRequest();
57
+ xhr.onload = function () {
58
+ let reader = new FileReader();
59
+ reader.onloadend = function () {
60
+ callback(reader.result);
61
+ };
62
+ reader.readAsDataURL(xhr.response);
63
+ };
64
+ xhr.open('GET', url);
65
+ xhr.responseType = 'blob';
66
+ xhr.send();
67
+ }
68
+ export function getDeepDiffDetails(obj1, obj2) {
69
+ let diff = detailedDiff(obj2, obj1);
70
+ let diffString = '';
71
+ const formatObjectDiff = (obj1, obj2) => {
72
+ if (!obj1 || !obj2)
73
+ return '';
74
+ return Object.keys(obj1)
75
+ .map(key => {
76
+ if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {
77
+ const arrayDiff = obj1[key].map((item, index) => typeof item === 'object' && obj2[key][index]
78
+ ? `{${formatObjectDiff(item, obj2[key][index])}}`
79
+ : `"${item}" to "${obj2[key][index]}"`).join(', ');
80
+ return `${toTitleCase(key)}: [${arrayDiff}]`;
81
+ }
82
+ if (typeof obj1[key] === 'object' && obj2[key]) {
83
+ return `${toTitleCase(key)}: {${formatObjectDiff(obj1[key], obj2[key])}}`;
84
+ }
85
+ return `${toTitleCase(key)}: "${obj1[key]}" to "${obj2[key]}"`;
86
+ })
87
+ .join(', ');
88
+ };
89
+ if (Object.keys(diff['updated']).length > 0) {
90
+ diffString += 'Updated:\n';
91
+ const updates = Object.keys(diff['updated'])
92
+ .filter(key => key.substr(0, 2) !== 'id' && diff['updated'][key] !== obj2[key])
93
+ .map(key => moment.isDate(diff['updated'][key])
94
+ ? `${toTitleCase(key)}: "${moment(diff['updated'][key]).format('llll')}" to "${moment(obj2[key]).format('llll')}"`
95
+ : `${toTitleCase(key)}: {${formatObjectDiff(diff['updated'][key], obj2[key])}}`)
96
+ .join(',\n');
97
+ diffString += updates ? `${updates}\n` : '';
98
+ }
99
+ return diffString;
100
+ }
101
+ export function generateCronStringFromDate(date) {
102
+ return date.getSeconds() + ' ' + date.getMinutes() + ' ' + date.getHours() + ' ' + date.getDate() + ' ' + (date.getMonth() + 1) + ' ' + date.getDay();
103
+ }
104
+ export function s2ab(s) {
105
+ let buf = new ArrayBuffer(s.length);
106
+ let view = new Uint8Array(buf);
107
+ // tslint:disable-next-line:no-bitwise
108
+ for (let i = 0; i !== s.length; ++i) {
109
+ view[i] = s.charCodeAt(i) & 0xFF;
110
+ }
111
+ return buf;
112
+ }
113
+ export function mergeDeep(target, ...sources) {
114
+ if (!sources.length) {
115
+ return target;
116
+ }
117
+ const source = sources.shift();
118
+ if (isObject(target) && isObject(source)) {
119
+ for (const key in source) {
120
+ if (isObject(source[key])) {
121
+ if (!target[key]) {
122
+ Object.assign(target, { [key]: {} });
123
+ }
124
+ mergeDeep(target[key], source[key]);
125
+ }
126
+ else {
127
+ Object.assign(target, { [key]: source[key] });
128
+ }
129
+ }
130
+ }
131
+ return mergeDeep(target, ...sources);
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlsL2NvbW1vbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzNCLE9BQU8sTUFBTSxZQUFZLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLElBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFO1FBQ3ZCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQUc7SUFDM0Is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QUMsQ0FBQzthQUM5QztTQUNEO0tBQ0Q7SUFFRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV0YWlsZWREaWZmIH0gZnJvbSAnZGVlcC1vYmplY3QtZGlmZic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IGlzT2JqZWN0ID0gKG9iamVjdCkgPT4ge1xuXHRyZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnT2JqZWN0Jztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1RpdGxlQ2FzZShzdHIpIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXHdcXFMqL2csIGZ1bmN0aW9uKHR4dCl7cmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwcGVyQ2FzZShzdHIpIHtcblx0cmV0dXJuICgvXltBLVpdKiQvKS50ZXN0KHN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWQobnVtLCBzaXplKSB7XG5cdGxldCBzID0gbnVtICsgJyc7XG5cdHdoaWxlIChzLmxlbmd0aCA8IHNpemUpIHtcblx0XHRzID0gJzAnICsgcztcblx0fVxuXHRyZXR1cm4gcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDb3B5KG9iaikge1xuXHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopLCBkYXRlUmV2aXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmV2aXZlcihrZXksIHZhbHVlKSB7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0bGV0IGEgPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pWiQvLmV4ZWModmFsdWUpO1xuXHRcdGlmIChhKSB7XG5cdFx0XHRyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLCArYVs1XSwgK2FbNl0uc3BsaXQoJy4nKVswXSwgK2FbNl0uc3BsaXQoJy4nKVsxXSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiNjR0b0Jsb2JVUkwoYjY0RGF0YSwgY29udGVudFR5cGUsIHNsaWNlU2l6ZT8pIHtcblx0YjY0RGF0YSA9IGI2NERhdGEucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcsICcnKTtcblx0Y29udGVudFR5cGUgPSBjb250ZW50VHlwZSB8fCAnJztcblx0c2xpY2VTaXplID0gc2xpY2VTaXplIHx8IDUxMjtcblxuXHRsZXQgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuXHRsZXQgYnl0ZUFycmF5cyA9IFtdO1xuXG5cdGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgb2Zmc2V0ICs9IHNsaWNlU2l6ZSkge1xuXHRcdGxldCBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcblxuXHRcdGxldCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcblx0XHRieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0bGV0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuXHRcdGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuXHR9XG5cblx0bGV0IGJsb2IgPSBuZXcgQmxvYihieXRlQXJyYXlzLCB7dHlwZTogY29udGVudFR5cGV9KTtcblx0cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2IsIGZpbGVOYW1lKSA6IEZpbGUge1xuICAgIC8vQSBCbG9iKCkgaXMgYWxtb3N0IGEgRmlsZSgpIC0gaXQncyBqdXN0IG1pc3NpbmcgdGhlIHR3byBwcm9wZXJ0aWVzIGJlbG93IHdoaWNoIHdlIHdpbGwgYWRkXG4gICAgdGhlQmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICB0aGVCbG9iLm5hbWUgPSBmaWxlTmFtZTtcbiAgICByZXR1cm4gKDxGaWxlPnRoZUJsb2IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhVVJMKHVybCwgY2FsbGJhY2spIHtcblx0bGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXHR4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0bGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cdFx0cmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y2FsbGJhY2socmVhZGVyLnJlc3VsdCk7XG5cdFx0fTtcblx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuXHR9O1xuXHR4aHIub3BlbignR0VUJywgdXJsKTtcblx0eGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcblx0eGhyLnNlbmQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZXBEaWZmRGV0YWlscyhvYmoxOiBhbnksIG9iajI6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGRpZmYgPSBkZXRhaWxlZERpZmYob2JqMiwgb2JqMSk7XG4gICAgbGV0IGRpZmZTdHJpbmcgPSAnJztcblxuICAgIGNvbnN0IGZvcm1hdE9iamVjdERpZmYgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoIW9iajEgfHwgIW9iajIpIHJldHVybiAnJztcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqMSlcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmoxW2tleV0pICYmIEFycmF5LmlzQXJyYXkob2JqMltrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJheURpZmYgPSBvYmoxW2tleV0ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIG9iajJba2V5XVtpbmRleF0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgeyR7Zm9ybWF0T2JqZWN0RGlmZihpdGVtLCBvYmoyW2tleV1baW5kZXhdKX19YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYFwiJHtpdGVtfVwiIHRvIFwiJHtvYmoyW2tleV1baW5kZXhdfVwiYFxuICAgICAgICAgICAgICAgICAgICApLmpvaW4oJywgJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3RvVGl0bGVDYXNlKGtleSl9OiBbJHthcnJheURpZmZ9XWA7XG4gICAgICAgICAgICAgICAgfSBcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqMVtrZXldID09PSAnb2JqZWN0JyAmJiBvYmoyW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3RvVGl0bGVDYXNlKGtleSl9OiB7JHtmb3JtYXRPYmplY3REaWZmKG9iajFba2V5XSwgb2JqMltrZXldKX19YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dG9UaXRsZUNhc2Uoa2V5KX06IFwiJHtvYmoxW2tleV19XCIgdG8gXCIke29iajJba2V5XX1cImA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGlmZlN0cmluZyArPSAnVXBkYXRlZDpcXG4nO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZXMgPSBPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pXG4gICAgICAgICAgICAuZmlsdGVyKGtleSA9PiBrZXkuc3Vic3RyKDAsIDIpICE9PSAnaWQnICYmIGRpZmZbJ3VwZGF0ZWQnXVtrZXldICE9PSBvYmoyW2tleV0pXG4gICAgICAgICAgICAubWFwKGtleSA9PiBcbiAgICAgICAgICAgICAgICBtb21lbnQuaXNEYXRlKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKVxuICAgICAgICAgICAgICAgICAgICA/IGAke3RvVGl0bGVDYXNlKGtleSl9OiBcIiR7bW9tZW50KGRpZmZbJ3VwZGF0ZWQnXVtrZXldKS5mb3JtYXQoJ2xsbGwnKX1cIiB0byBcIiR7bW9tZW50KG9iajJba2V5XSkuZm9ybWF0KCdsbGxsJyl9XCJgXG4gICAgICAgICAgICAgICAgICAgIDogYCR7dG9UaXRsZUNhc2Uoa2V5KX06IHske2Zvcm1hdE9iamVjdERpZmYoZGlmZlsndXBkYXRlZCddW2tleV0sIG9iajJba2V5XSl9fWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcsXFxuJyk7XG5cbiAgICAgICAgZGlmZlN0cmluZyArPSB1cGRhdGVzID8gYCR7dXBkYXRlc31cXG5gIDogJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNyb25TdHJpbmdGcm9tRGF0ZShkYXRlOiBEYXRlKSB7XG5cdHJldHVybiBkYXRlLmdldFNlY29uZHMoKSArICcgJyArIGRhdGUuZ2V0TWludXRlcygpICsgJyAnICsgZGF0ZS5nZXRIb3VycygpICsgJyAnICsgZGF0ZS5nZXREYXRlKCkgKyAnICcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnICcgKyBkYXRlLmdldERheSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gczJhYihzKSB7XG5cdGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuXHRsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG5cdGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7IHZpZXdbaV0gPSBzLmNoYXJDb2RlQXQoaSkgJiAweEZGOyB9XG5cdHJldHVybiBidWY7IFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcykge1xuXHRpZiAoIXNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG5cblx0aWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuXHRcdFx0aWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuXHRcdFx0fSBcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0gfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1lcmdlRGVlcCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufSJdfQ==