tin-spa 14.0.1 → 14.4.2

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 (166) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +32 -57
  3. package/esm2020/lib/classes/LibClasses.mjs +1 -2
  4. package/esm2020/lib/classes/TinCore.mjs +48 -206
  5. package/esm2020/lib/components/alert/alert.component.mjs +7 -21
  6. package/esm2020/lib/components/attach/attach.component.mjs +33 -49
  7. package/esm2020/lib/components/date/date.component.mjs +6 -8
  8. package/esm2020/lib/components/email/email.component.mjs +17 -19
  9. package/esm2020/lib/components/form/form.component.mjs +56 -144
  10. package/esm2020/lib/components/label/label.component.mjs +3 -9
  11. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
  12. package/esm2020/lib/components/money/money.component.mjs +9 -26
  13. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +27 -31
  14. package/esm2020/lib/components/number/number.component.mjs +8 -23
  15. package/esm2020/lib/components/option/option.component.mjs +14 -36
  16. package/esm2020/lib/components/search/search.component.mjs +5 -10
  17. package/esm2020/lib/components/select/select.component.mjs +129 -56
  18. package/esm2020/lib/components/steps/steps.component.mjs +61 -83
  19. package/esm2020/lib/components/table/detailsDialog.component.mjs +41 -205
  20. package/esm2020/lib/components/table/table.component.mjs +111 -136
  21. package/esm2020/lib/components/table-action/table-action.component.mjs +8 -42
  22. package/esm2020/lib/components/table-header/table-header.component.mjs +10 -14
  23. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +39 -205
  24. package/esm2020/lib/components/table-internal/table-internal.component.mjs +112 -138
  25. package/esm2020/lib/components/table-row/table-row.component.mjs +4 -23
  26. package/esm2020/lib/components/text/text.component.mjs +46 -110
  27. package/esm2020/lib/components/tiles/tiles.component.mjs +20 -32
  28. package/esm2020/lib/components/viewer/viewer.component.mjs +3 -7
  29. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +13 -20
  30. package/esm2020/lib/modules/admin/admin-routing.module.mjs +1 -11
  31. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +1 -1
  32. package/esm2020/lib/pages/bug/bug.component.mjs +3 -3
  33. package/esm2020/lib/pages/change-password/change-password.component.mjs +1 -1
  34. package/esm2020/lib/pages/create-account/create-account.component.mjs +1 -1
  35. package/esm2020/lib/pages/customers/customers.component.mjs +48 -9
  36. package/esm2020/lib/pages/departments/departments.component.mjs +4 -2
  37. package/esm2020/lib/pages/employees/employees.component.mjs +4 -3
  38. package/esm2020/lib/pages/grades/grades.component.mjs +3 -3
  39. package/esm2020/lib/pages/inventory/inventory.component.mjs +3 -3
  40. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +1 -1
  41. package/esm2020/lib/pages/invitations/invitations.component.mjs +14 -0
  42. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +10 -11
  43. package/esm2020/lib/pages/login/login.component.mjs +14 -52
  44. package/esm2020/lib/pages/logs/logs.component.mjs +22 -27
  45. package/esm2020/lib/pages/membership/membership.component.mjs +19 -15
  46. package/esm2020/lib/pages/notifications/notifications.component.mjs +6 -82
  47. package/esm2020/lib/pages/plans/plans.component.mjs +19 -16
  48. package/esm2020/lib/pages/positions/positions.component.mjs +4 -4
  49. package/esm2020/lib/pages/profile/profile.component.mjs +3 -4
  50. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +1 -1
  51. package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +2 -2
  52. package/esm2020/lib/pages/roles/roles.component.mjs +17 -77
  53. package/esm2020/lib/pages/settings/settings.component.mjs +13 -5
  54. package/esm2020/lib/pages/signup/signup.component.mjs +1 -1
  55. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +31 -3
  56. package/esm2020/lib/pages/tasks/tasks.component.mjs +9 -9
  57. package/esm2020/lib/pages/tenant-settings/inviteDialog.component.mjs +60 -0
  58. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +72 -145
  59. package/esm2020/lib/pages/tenants/tenants.component.mjs +10 -10
  60. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +1 -1
  61. package/esm2020/lib/pages/transactions/transactions.component.mjs +3 -3
  62. package/esm2020/lib/pages/users/users.component.mjs +92 -141
  63. package/esm2020/lib/pages/welcome/welcome.component.mjs +9 -9
  64. package/esm2020/lib/services/button.service.mjs +32 -92
  65. package/esm2020/lib/services/csv.service.mjs +1 -1
  66. package/esm2020/lib/services/datalib.service.mjs +78 -551
  67. package/esm2020/lib/services/dialog.service.mjs +7 -51
  68. package/esm2020/lib/services/table-config.service.mjs +7 -55
  69. package/esm2020/lib/tin-spa.module.mjs +11 -48
  70. package/esm2020/public-api.mjs +1 -10
  71. package/fesm2015/tin-spa.mjs +2605 -6538
  72. package/fesm2015/tin-spa.mjs.map +1 -1
  73. package/fesm2020/tin-spa.mjs +2501 -6482
  74. package/fesm2020/tin-spa.mjs.map +1 -1
  75. package/lib/classes/Classes.d.ts +129 -267
  76. package/lib/classes/LibClasses.d.ts +0 -1
  77. package/lib/classes/TinCore.d.ts +4 -13
  78. package/lib/components/alert/alert.component.d.ts +3 -4
  79. package/lib/components/attach/attach.component.d.ts +6 -13
  80. package/lib/components/date/date.component.d.ts +1 -1
  81. package/lib/components/email/email.component.d.ts +3 -4
  82. package/lib/components/form/form.component.d.ts +11 -20
  83. package/lib/components/label/label.component.d.ts +1 -3
  84. package/lib/components/money/money.component.d.ts +1 -8
  85. package/lib/components/nav-menu/nav-menu.component.d.ts +2 -6
  86. package/lib/components/number/number.component.d.ts +1 -7
  87. package/lib/components/option/option.component.d.ts +2 -10
  88. package/lib/components/search/search.component.d.ts +1 -3
  89. package/lib/components/select/select.component.d.ts +37 -16
  90. package/lib/components/steps/steps.component.d.ts +9 -18
  91. package/lib/components/table/detailsDialog.component.d.ts +7 -29
  92. package/lib/components/table/table.component.d.ts +9 -15
  93. package/lib/components/table-action/table-action.component.d.ts +1 -4
  94. package/lib/components/table-header/table-header.component.d.ts +1 -3
  95. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +7 -29
  96. package/lib/components/table-internal/table-internal.component.d.ts +9 -15
  97. package/lib/components/table-row/table-row.component.d.ts +1 -4
  98. package/lib/components/text/text.component.d.ts +8 -21
  99. package/lib/components/tiles/tiles.component.d.ts +3 -4
  100. package/lib/components/viewer/viewerDialog.component.d.ts +1 -3
  101. package/lib/pages/customers/customers.component.d.ts +8 -2
  102. package/lib/pages/invitations/invitations.component.d.ts +8 -0
  103. package/lib/pages/invitations-table/invitations-table.component.d.ts +1 -1
  104. package/lib/pages/login/login.component.d.ts +1 -7
  105. package/lib/pages/logs/logs.component.d.ts +6 -2
  106. package/lib/pages/membership/membership.component.d.ts +6 -2
  107. package/lib/pages/notifications/notifications.component.d.ts +1 -9
  108. package/lib/pages/plans/plans.component.d.ts +6 -2
  109. package/lib/pages/roles/roles.component.d.ts +2 -14
  110. package/lib/pages/suppliers/suppliers.component.d.ts +4 -1
  111. package/lib/pages/tasks/tasks.component.d.ts +1 -1
  112. package/lib/pages/tenant-settings/inviteDialog.component.d.ts +28 -0
  113. package/lib/pages/tenant-settings/tenant-settings.component.d.ts +7 -12
  114. package/lib/pages/tenants/tenants.component.d.ts +2 -2
  115. package/lib/pages/users/users.component.d.ts +16 -8
  116. package/lib/services/button.service.d.ts +8 -11
  117. package/lib/services/datalib.service.d.ts +10 -57
  118. package/lib/services/dialog.service.d.ts +2 -3
  119. package/lib/services/table-config.service.d.ts +1 -9
  120. package/lib/tin-spa.module.d.ts +33 -52
  121. package/package.json +1 -1
  122. package/public-api.d.ts +0 -9
  123. package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
  124. package/esm2020/lib/components/cards/cards.component.mjs +0 -103
  125. package/esm2020/lib/components/html/html.component.mjs +0 -34
  126. package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
  127. package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
  128. package/esm2020/lib/components/notes/notes.component.mjs +0 -62
  129. package/esm2020/lib/components/page/page.component.mjs +0 -101
  130. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
  131. package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
  132. package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
  133. package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
  134. package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
  135. package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
  136. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
  137. package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
  138. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
  139. package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
  140. package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
  141. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
  142. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
  143. package/esm2020/lib/select-context.directive.mjs +0 -23
  144. package/esm2020/lib/services/notifications.service.mjs +0 -33
  145. package/lib/components/capsules/capsules.component.d.ts +0 -26
  146. package/lib/components/cards/cards.component.d.ts +0 -39
  147. package/lib/components/html/html.component.d.ts +0 -16
  148. package/lib/components/multi-select/multi-select.component.d.ts +0 -47
  149. package/lib/components/multi-text/multi-text.component.d.ts +0 -56
  150. package/lib/components/notes/notes.component.d.ts +0 -19
  151. package/lib/components/page/page.component.d.ts +0 -38
  152. package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
  153. package/lib/components/select-common/select-common.component.d.ts +0 -53
  154. package/lib/components/select-internal/select-internal.component.d.ts +0 -23
  155. package/lib/components/select-lite/select-lite.component.d.ts +0 -8
  156. package/lib/components/statuses/statuses.component.d.ts +0 -12
  157. package/lib/components/suffix/suffix.component.d.ts +0 -23
  158. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
  159. package/lib/components/table-lite/table-lite.component.d.ts +0 -91
  160. package/lib/components/tabs/tabs.component.d.ts +0 -32
  161. package/lib/pages/app-models/app-models.component.d.ts +0 -15
  162. package/lib/pages/approvals/approvals.component.d.ts +0 -10
  163. package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
  164. package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
  165. package/lib/select-context.directive.d.ts +0 -10
  166. package/lib/services/notifications.service.d.ts +0 -12
@@ -6,38 +6,24 @@ export class AlertComponent {
6
6
  ngOnInit() {
7
7
  }
8
8
  getAlertMessages(type = undefined) {
9
- return this.config?.messages
10
- .filter(x => this.testVisible(x))
11
- .filter(x => x.type === type) || [];
9
+ return this.alertMessages?.messages.filter(x => x.type === type);
12
10
  }
13
11
  hasAlertMessages(type = undefined) {
14
- return this.config?.messages
15
- .filter(x => this.testVisible(x))
16
- .some(x => x.type === type) || false;
12
+ let has = this.alertMessages?.messages.filter(x => x.type === type).length > 0;
13
+ return has;
17
14
  }
18
15
  testVisible(msg) {
19
- if (msg.showCondition) {
20
- return msg.showCondition(this.data);
21
- }
22
16
  return msg.hiddenCondition ? !msg.hiddenCondition(this.data) : true;
23
17
  }
24
- getMessageContent(msg) {
25
- // If contentField is specified and data exists, use dynamic content
26
- if (msg.contentField && this.data && this.data[msg.contentField]) {
27
- return this.data[msg.contentField];
28
- }
29
- // Fall back to static content
30
- return msg.content || '';
31
- }
32
18
  }
33
19
  AlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AlertComponent, selector: "spa-alert", inputs: { config: "config", data: "data" }, ngImport: i0, template: "<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages(); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('success'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('info'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('warn'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('critical'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n", styles: [".alert-compact{padding-top:7px;padding-bottom:7px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
20
+ AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AlertComponent, selector: "spa-alert", inputs: { alertMessages: "alertMessages", data: "data" }, ngImport: i0, template: "<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages(); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('success'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('info'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('warn'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('critical'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
35
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AlertComponent, decorators: [{
36
22
  type: Component,
37
- args: [{ selector: 'spa-alert', template: "<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages(); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('success'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('info'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('warn'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('critical'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n", styles: [".alert-compact{padding-top:7px;padding-bottom:7px}\n"] }]
38
- }], ctorParameters: function () { return []; }, propDecorators: { config: [{
23
+ args: [{ selector: 'spa-alert', template: "<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages(); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('success'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('info'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('warn'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}}</p>\n <ng-container *ngFor=\"let msg of getAlertMessages('critical'); let last = last\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n <br *ngIf=\"!last\">\n </ng-container>\n</div>\n" }]
24
+ }], ctorParameters: function () { return []; }, propDecorators: { alertMessages: [{
39
25
  type: Input
40
26
  }], data: [{
41
27
  type: Input
42
28
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQVF6RCxNQUFNLE9BQU8sY0FBYztJQUV6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQU9ELGdCQUFnQixDQUFDLElBQUksR0FBRyxTQUFTO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRO2FBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUksR0FBRyxTQUFTO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRO2FBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFpQjtRQUUzQixJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRXRFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFpQjtRQUNqQyxvRUFBb0U7UUFDcEUsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztRQUVELDhCQUE4QjtRQUM5QixPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7OzJHQTFDVSxjQUFjOytGQUFkLGNBQWMsNkZDUjNCLHd3RUF3Q0E7MkZEaENhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzswRUFZWixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0TWVzc2FnZSwgQWxlcnRDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtYWxlcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZzogQWxlcnRDb25maWc7XHJcbiAgQElucHV0KCkgZGF0YTtcclxuXHJcblxyXG4gIGdldEFsZXJ0TWVzc2FnZXModHlwZSA9IHVuZGVmaW5lZCk6IEFsZXJ0TWVzc2FnZVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ubWVzc2FnZXNcclxuICAgICAgLmZpbHRlcih4ID0+IHRoaXMudGVzdFZpc2libGUoeCkpXHJcbiAgICAgIC5maWx0ZXIoeCA9PiB4LnR5cGUgPT09IHR5cGUpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFzQWxlcnRNZXNzYWdlcyh0eXBlID0gdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/Lm1lc3NhZ2VzXHJcbiAgICAgIC5maWx0ZXIoeCA9PiB0aGlzLnRlc3RWaXNpYmxlKHgpKVxyXG4gICAgICAuc29tZSh4ID0+IHgudHlwZSA9PT0gdHlwZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0ZXN0VmlzaWJsZShtc2c6IEFsZXJ0TWVzc2FnZSk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmIChtc2cuc2hvd0NvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gbXNnLnNob3dDb25kaXRpb24odGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1zZy5oaWRkZW5Db25kaXRpb24gPyAhbXNnLmhpZGRlbkNvbmRpdGlvbih0aGlzLmRhdGEpIDogdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRNZXNzYWdlQ29udGVudChtc2c6IEFsZXJ0TWVzc2FnZSk6IHN0cmluZyB7XHJcbiAgICAvLyBJZiBjb250ZW50RmllbGQgaXMgc3BlY2lmaWVkIGFuZCBkYXRhIGV4aXN0cywgdXNlIGR5bmFtaWMgY29udGVudFxyXG4gICAgaWYgKG1zZy5jb250ZW50RmllbGQgJiYgdGhpcy5kYXRhICYmIHRoaXMuZGF0YVttc2cuY29udGVudEZpZWxkXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhW21zZy5jb250ZW50RmllbGRdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBGYWxsIGJhY2sgdG8gc3RhdGljIGNvbnRlbnRcclxuICAgIHJldHVybiBtc2cuY29udGVudCB8fCAnJztcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJoYXNBbGVydE1lc3NhZ2VzKClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXNlY29uZGFyeVwiIFtuZ0NsYXNzXT1cInsnYWxlcnQtY29tcGFjdCc6IGNvbmZpZy5jb21wYWN0fVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O21hcmdpbi1ib3R0b206IDVweDtcIiByb2xlPVwiYWxlcnRcIj5cclxuICA8cCAqbmdJZj1cImNvbmZpZy5zdWJqZWN0XCI+e3tjb25maWcuc3ViamVjdH19PC9wPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1zZyBvZiBnZXRBbGVydE1lc3NhZ2VzKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwidGVzdFZpc2libGUobXNnKVwiPnt7Z2V0TWVzc2FnZUNvbnRlbnQobXNnKX19PC9sYWJlbD5cclxuICAgIDxiciAqbmdJZj1cIiFsYXN0XCI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImhhc0FsZXJ0TWVzc2FnZXMoJ3N1Y2Nlc3MnKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtc3VjY2Vzc1wiIFtuZ0NsYXNzXT1cInsnYWxlcnQtY29tcGFjdCc6IGNvbmZpZy5jb21wYWN0fVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O21hcmdpbi1ib3R0b206IDVweDtcIiByb2xlPVwiYWxlcnRcIj5cclxuICA8cCAqbmdJZj1cImNvbmZpZy5zdWJqZWN0XCI+e3tjb25maWcuc3ViamVjdH19PC9wPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1zZyBvZiBnZXRBbGVydE1lc3NhZ2VzKCdzdWNjZXNzJyk7IGxldCBsYXN0ID0gbGFzdFwiPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwidGVzdFZpc2libGUobXNnKVwiPnt7Z2V0TWVzc2FnZUNvbnRlbnQobXNnKX19PC9sYWJlbD5cclxuICAgIDxiciAqbmdJZj1cIiFsYXN0XCI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImhhc0FsZXJ0TWVzc2FnZXMoJ2luZm8nKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiIFtuZ0NsYXNzXT1cInsnYWxlcnQtY29tcGFjdCc6IGNvbmZpZy5jb21wYWN0fVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O21hcmdpbi1ib3R0b206IDVweDtcIiByb2xlPVwiYWxlcnRcIj5cclxuICA8cCAqbmdJZj1cImNvbmZpZy5zdWJqZWN0XCI+e3tjb25maWcuc3ViamVjdH19PC9wPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1zZyBvZiBnZXRBbGVydE1lc3NhZ2VzKCdpbmZvJyk7IGxldCBsYXN0ID0gbGFzdFwiPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwidGVzdFZpc2libGUobXNnKVwiPnt7Z2V0TWVzc2FnZUNvbnRlbnQobXNnKX19PC9sYWJlbD5cclxuICAgIDxiciAqbmdJZj1cIiFsYXN0XCI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJoYXNBbGVydE1lc3NhZ2VzKCd3YXJuJylcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIiBbbmdDbGFzc109XCJ7J2FsZXJ0LWNvbXBhY3QnOiBjb25maWcuY29tcGFjdH1cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDttYXJnaW4tYm90dG9tOiA1cHg7XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgPHAgKm5nSWY9XCJjb25maWcuc3ViamVjdFwiPnt7Y29uZmlnLnN1YmplY3R9fTwvcD5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtc2cgb2YgZ2V0QWxlcnRNZXNzYWdlcygnd2FybicpOyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cInRlc3RWaXNpYmxlKG1zZylcIj57e2dldE1lc3NhZ2VDb250ZW50KG1zZyl9fTwvbGFiZWw+XHJcbiAgICA8YnIgKm5nSWY9XCIhbGFzdFwiPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJoYXNBbGVydE1lc3NhZ2VzKCdjcml0aWNhbCcpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiBbbmdDbGFzc109XCJ7J2FsZXJ0LWNvbXBhY3QnOiBjb25maWcuY29tcGFjdH1cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDttYXJnaW4tYm90dG9tOiA1cHg7XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgPHAgKm5nSWY9XCJjb25maWcuc3ViamVjdFwiPnt7Y29uZmlnLnN1YmplY3R9fTwvcD5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtc2cgb2YgZ2V0QWxlcnRNZXNzYWdlcygnY3JpdGljYWwnKTsgbGV0IGxhc3QgPSBsYXN0XCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJ0ZXN0VmlzaWJsZShtc2cpXCI+e3tnZXRNZXNzYWdlQ29udGVudChtc2cpfX08L2xhYmVsPlxyXG4gICAgPGJyICpuZ0lmPVwiIWxhc3RcIj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQVF6RCxNQUFNLE9BQU8sY0FBYztJQUV6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQU9ELGdCQUFnQixDQUFDLElBQUksR0FBRyxTQUFTO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLFNBQVM7UUFDL0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFpQjtRQUUzQixPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUV0RSxDQUFDOzsyR0ExQlUsY0FBYzsrRkFBZCxjQUFjLDJHQ1IzQixxOURBdUNBOzJGRC9CYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7MEVBWVosYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0TWVzc2FnZSwgQWxlcnRNZXNzYWdlcyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwYS1hbGVydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG5cbiAgQElucHV0KCkgYWxlcnRNZXNzYWdlczogQWxlcnRNZXNzYWdlcztcbiAgQElucHV0KCkgZGF0YTtcblxuXG4gIGdldEFsZXJ0TWVzc2FnZXModHlwZSA9IHVuZGVmaW5lZCkgOiBBbGVydE1lc3NhZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuYWxlcnRNZXNzYWdlcz8ubWVzc2FnZXMuZmlsdGVyKHggPT4geC50eXBlID09PSB0eXBlKVxuICB9XG5cbiAgaGFzQWxlcnRNZXNzYWdlcyh0eXBlID0gdW5kZWZpbmVkKSA6IGJvb2xlYW4ge1xuICAgIGxldCBoYXMgPSB0aGlzLmFsZXJ0TWVzc2FnZXM/Lm1lc3NhZ2VzLmZpbHRlcih4ID0+IHgudHlwZSA9PT0gdHlwZSkubGVuZ3RoID4gMDtcblxuICAgIHJldHVybiBoYXM7XG4gIH1cblxuICB0ZXN0VmlzaWJsZShtc2c6IEFsZXJ0TWVzc2FnZSk6IGJvb2xlYW4ge1xuXG4gICAgcmV0dXJuIG1zZy5oaWRkZW5Db25kaXRpb24gPyAhbXNnLmhpZGRlbkNvbmRpdGlvbih0aGlzLmRhdGEpIDogdHJ1ZTtcblxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJoYXNBbGVydE1lc3NhZ2VzKClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXNlY29uZGFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O21hcmdpbi1ib3R0b206IDVweDtcIiByb2xlPVwiYWxlcnRcIj5cbiAgPHAgKm5nSWY9XCJhbGVydE1lc3NhZ2VzLnN1YmplY3RcIj57e2FsZXJ0TWVzc2FnZXMuc3ViamVjdH19PC9wPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtc2cgb2YgZ2V0QWxlcnRNZXNzYWdlcygpOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJ0ZXN0VmlzaWJsZShtc2cpXCI+e3ttc2cuY29udGVudH19PC9sYWJlbD5cbiAgICA8YnIgKm5nSWY9XCIhbGFzdFwiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiaGFzQWxlcnRNZXNzYWdlcygnc3VjY2VzcycpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1zdWNjZXNzXCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7bWFyZ2luLWJvdHRvbTogNXB4O1wiIHJvbGU9XCJhbGVydFwiPlxuICA8cCAqbmdJZj1cImFsZXJ0TWVzc2FnZXMuc3ViamVjdFwiPnt7YWxlcnRNZXNzYWdlcy5zdWJqZWN0fX08L3A+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1zZyBvZiBnZXRBbGVydE1lc3NhZ2VzKCdzdWNjZXNzJyk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgIDxsYWJlbCAqbmdJZj1cInRlc3RWaXNpYmxlKG1zZylcIj57e21zZy5jb250ZW50fX08L2xhYmVsPlxuICAgIDxiciAqbmdJZj1cIiFsYXN0XCI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJoYXNBbGVydE1lc3NhZ2VzKCdpbmZvJylcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDttYXJnaW4tYm90dG9tOiA1cHg7XCIgcm9sZT1cImFsZXJ0XCI+XG4gIDxwICpuZ0lmPVwiYWxlcnRNZXNzYWdlcy5zdWJqZWN0XCI+e3thbGVydE1lc3NhZ2VzLnN1YmplY3R9fTwvcD5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbXNnIG9mIGdldEFsZXJ0TWVzc2FnZXMoJ2luZm8nKTsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgPGxhYmVsICpuZ0lmPVwidGVzdFZpc2libGUobXNnKVwiPnt7bXNnLmNvbnRlbnR9fTwvbGFiZWw+XG4gICAgPGJyICpuZ0lmPVwiIWxhc3RcIj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImhhc0FsZXJ0TWVzc2FnZXMoJ3dhcm4nKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O21hcmdpbi1ib3R0b206IDVweDtcIiByb2xlPVwiYWxlcnRcIj5cbiAgPHAgKm5nSWY9XCJhbGVydE1lc3NhZ2VzLnN1YmplY3RcIj57e2FsZXJ0TWVzc2FnZXMuc3ViamVjdH19PC9wPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtc2cgb2YgZ2V0QWxlcnRNZXNzYWdlcygnd2FybicpOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJ0ZXN0VmlzaWJsZShtc2cpXCI+e3ttc2cuY29udGVudH19PC9sYWJlbD5cbiAgICA8YnIgKm5nSWY9XCIhbGFzdFwiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiaGFzQWxlcnRNZXNzYWdlcygnY3JpdGljYWwnKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7bWFyZ2luLWJvdHRvbTogNXB4O1wiIHJvbGU9XCJhbGVydFwiPlxuICA8cCAqbmdJZj1cImFsZXJ0TWVzc2FnZXMuc3ViamVjdFwiPnt7YWxlcnRNZXNzYWdlcy5zdWJqZWN0fX08L3A+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1zZyBvZiBnZXRBbGVydE1lc3NhZ2VzKCdjcml0aWNhbCcpOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJ0ZXN0VmlzaWJsZShtc2cpXCI+e3ttc2cuY29udGVudH19PC9sYWJlbD5cbiAgICA8YnIgKm5nSWY9XCIhbGFzdFwiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -1,15 +1,11 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import imageCompression from 'browser-image-compression';
3
2
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../services/message.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/material/button";
7
- import * as i4 from "@angular/material/icon";
8
- import * as i5 from "@angular/material/tooltip";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/button";
5
+ import * as i3 from "@angular/material/icon";
6
+ import * as i4 from "@angular/material/tooltip";
9
7
  export class AttachComponent {
10
- constructor(messageService) {
11
- this.messageService = messageService;
12
- this.imageExtensions = ['.jpg', '.jpeg', '.png', '.gif'];
8
+ constructor() {
13
9
  this.message = "Drag and drop files here";
14
10
  this.files = [];
15
11
  this.filesChange = new EventEmitter();
@@ -17,7 +13,6 @@ export class AttachComponent {
17
13
  this.enableUpload = false;
18
14
  }
19
15
  ngOnInit() {
20
- // this.fileOptions = {allowedExtensions: ['.jpg', '.jpeg', '.png', '.gif'], maxSizeMB: 1, compressImages: true};
21
16
  }
22
17
  onFileDropped($event) {
23
18
  this.prepareFilesList($event);
@@ -29,40 +24,31 @@ export class AttachComponent {
29
24
  deleteFile(index) {
30
25
  this.files.splice(index, 1);
31
26
  }
32
- async prepareFilesList(files) {
33
- for (const file of files) {
34
- const ext = this.getFileExtension(file.name);
35
- if (this.fileOptions?.allowedExtensions && !this.fileOptions.allowedExtensions.includes(ext.toLowerCase())) {
36
- this.messageService.toast(`File type ${ext} not allowed`);
37
- continue;
38
- }
39
- let processedFile = file;
40
- if (this.fileOptions?.compressImages && this.isImage(file.name)) {
41
- try {
42
- const options = {
43
- maxSizeMB: this.fileOptions.maxSizeMB || 1,
44
- maxWidthOrHeight: 1920,
45
- useWebWorker: true
46
- };
47
- processedFile = await imageCompression(file, options);
48
- }
49
- catch (error) {
50
- this.messageService.toast(`Error compressing image: ${file.name}`);
51
- continue;
52
- }
53
- }
54
- processedFile.progress = 0;
55
- this.files.push(processedFile);
27
+ /**
28
+ * Simulate the upload process
29
+ */
30
+ // uploadFilesSimulator(index: number) {
31
+ // setTimeout(() => {
32
+ // if (index === this.files.length) {
33
+ // return;
34
+ // } else {
35
+ // const progressInterval = setInterval(() => {
36
+ // if (this.files[index].progress === 100) {
37
+ // clearInterval(progressInterval);
38
+ // this.uploadFilesSimulator(index + 1);
39
+ // } else {
40
+ // this.files[index].progress += 5;
41
+ // }
42
+ // }, 200);
43
+ // }
44
+ // }, 1000);
45
+ // }
46
+ prepareFilesList(files) {
47
+ for (const item of files) {
48
+ item.progress = 0;
49
+ this.files.push(item);
56
50
  }
57
- this.filesChange.emit(this.files);
58
- }
59
- // Add new helper methods
60
- getFileExtension(filename) {
61
- return filename.substring(filename.lastIndexOf('.')).toLowerCase();
62
- }
63
- isImage(filename) {
64
- const ext = this.getFileExtension(filename);
65
- return this.imageExtensions.includes(ext.toLowerCase());
51
+ // this.uploadFilesSimulator(0);
66
52
  }
67
53
  formatBytes(bytes, decimals) {
68
54
  if (bytes === 0) {
@@ -81,14 +67,12 @@ export class AttachComponent {
81
67
  this.filesChange.emit(this.files);
82
68
  }
83
69
  }
84
- AttachComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AttachComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
85
- AttachComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AttachComponent, selector: "spa-attach", inputs: { fileOptions: "fileOptions", message: "message", files: "files", enableUpload: "enableUpload" }, outputs: { filesChange: "filesChange", upload: "upload" }, ngImport: i0, template: "<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n <h4>{{message}}</h4>\r\n\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".container{width:100%;height:100px;padding-top:5px;text-align:center;border:dashed 2px #2a7b94;position:relative;margin:0 auto}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0}.container label{color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.container h3{font-size:20px;font-weight:600;color:#38424c}.fileover{animation:shake 1s;animation-iteration-count:infinite}.files-list{margin-top:1.5rem}.files-list .single-file{padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #1c824d;margin-bottom:1rem;margin-right:1rem;display:flex;flex-grow:1}.files-list .single-file .delete{display:flex;margin-left:.5rem;cursor:pointer;align-self:flex-end}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0;margin-left:1rem}.files-list .single-file .info{width:100%}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
70
+ AttachComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AttachComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ AttachComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AttachComponent, selector: "spa-attach", inputs: { message: "message", files: "files", enableUpload: "enableUpload" }, outputs: { filesChange: "filesChange", upload: "upload" }, ngImport: i0, template: "<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n <h4>{{message}}</h4>\r\n\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".container{width:100%;height:100px;padding-top:5px;text-align:center;border:dashed 2px #2a7b94;position:relative;margin:0 auto}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0}.container label{color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.container h3{font-size:20px;font-weight:600;color:#38424c}.fileover{animation:shake 1s;animation-iteration-count:infinite}.files-list{margin-top:1.5rem}.files-list .single-file{padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #1c824d;margin-bottom:1rem;margin-right:1rem;display:flex;flex-grow:1}.files-list .single-file .delete{display:flex;margin-left:.5rem;cursor:pointer;align-self:flex-end}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0;margin-left:1rem}.files-list .single-file .info{width:100%}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
86
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AttachComponent, decorators: [{
87
73
  type: Component,
88
74
  args: [{ selector: 'spa-attach', template: "<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n <h4>{{message}}</h4>\r\n\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".container{width:100%;height:100px;padding-top:5px;text-align:center;border:dashed 2px #2a7b94;position:relative;margin:0 auto}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0}.container label{color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.container h3{font-size:20px;font-weight:600;color:#38424c}.fileover{animation:shake 1s;animation-iteration-count:infinite}.files-list{margin-top:1.5rem}.files-list .single-file{padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #1c824d;margin-bottom:1rem;margin-right:1rem;display:flex;flex-grow:1}.files-list .single-file .delete{display:flex;margin-left:.5rem;cursor:pointer;align-self:flex-end}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0;margin-left:1rem}.files-list .single-file .info{width:100%}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}\n"] }]
89
- }], ctorParameters: function () { return [{ type: i1.MessageService }]; }, propDecorators: { fileOptions: [{
90
- type: Input
91
- }], message: [{
75
+ }], ctorParameters: function () { return []; }, propDecorators: { message: [{
92
76
  type: Input
93
77
  }], files: [{
94
78
  type: Input
@@ -99,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
99
83
  }], enableUpload: [{
100
84
  type: Input
101
85
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2F0dGFjaC9hdHRhY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYXR0YWNoL2F0dGFjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFRekQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBV2xDLG9CQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RCxZQUFPLEdBQUcsMEJBQTBCLENBQUE7UUFDcEMsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNqQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFuQnlCLENBQUM7SUFFeEQsUUFBUTtRQUNOLGlIQUFpSDtJQUNuSCxDQUFDO0lBa0JELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNyQixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFD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QUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7NEdBakdVLGVBQWU7Z0dBQWYsZUFBZSx1TkNWNUIsNjNEQXVDQTsyRkQ3QmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZO3FHQVliLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHRSxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCBpbWFnZUNvbXByZXNzaW9uIGZyb20gJ2Jyb3dzZXItaW1hZ2UtY29tcHJlc3Npb24nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWF0dGFjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXR0YWNoLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dGFjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVzc2FnZVNlcnZpY2UgOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5maWxlT3B0aW9ucyA9IHthbGxvd2VkRXh0ZW5zaW9uczogWycuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLmdpZiddLCBtYXhTaXplTUI6IDEsIGNvbXByZXNzSW1hZ2VzOiB0cnVlfTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGZpbGVPcHRpb25zOiB7XHJcbiAgICBhbGxvd2VkRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xyXG4gICAgbWF4U2l6ZU1CPzogbnVtYmVyO1xyXG4gICAgY29tcHJlc3NJbWFnZXM/OiBib29sZWFuO1xyXG4gIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUV4dGVuc2lvbnMgPSBbJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuZ2lmJ107XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSBcIkRyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZVwiXHJcbiAgQElucHV0KCkgZmlsZXM6IGFueVtdID0gW107XHJcbiAgQE91dHB1dCgpIGZpbGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBASW5wdXQoKSBlbmFibGVVcGxvYWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGZpbGVCcm93c2VIYW5kbGVyKGV2ZW50KSB7XHJcbiAgICBsZXQgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XHJcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHByZXBhcmVGaWxlc0xpc3QoZmlsZXM6IEFycmF5PGFueT4pIHtcclxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBjb25zdCBleHQgPSB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZS5uYW1lKTtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9wdGlvbnM/LmFsbG93ZWRFeHRlbnNpb25zICYmICF0aGlzLmZpbGVPcHRpb25zLmFsbG93ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dC50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYEZpbGUgdHlwZSAke2V4dH0gbm90IGFsbG93ZWRgKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHByb2Nlc3NlZEZpbGUgPSBmaWxlO1xyXG4gICAgICBpZiAodGhpcy5maWxlT3B0aW9ucz8uY29tcHJlc3NJbWFnZXMgJiYgdGhpcy5pc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgbWF4U2l6ZU1COiB0aGlzLmZpbGVPcHRpb25zLm1heFNpemVNQiB8fCAxLFxyXG4gICAgICAgICAgICBtYXhXaWR0aE9ySGVpZ2h0OiAxOTIwLFxyXG4gICAgICAgICAgICB1c2VXZWJXb3JrZXI6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBwcm9jZXNzZWRGaWxlID0gYXdhaXQgaW1hZ2VDb21wcmVzc2lvbihmaWxlLCBvcHRpb25zKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChgRXJyb3IgY29tcHJlc3NpbmcgaW1hZ2U6ICR7ZmlsZS5uYW1lfWApO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwcm9jZXNzZWRGaWxlLnByb2dyZXNzID0gMDtcclxuICAgICAgdGhpcy5maWxlcy5wdXNoKHByb2Nlc3NlZEZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8gQWRkIG5ldyBoZWxwZXIgbWV0aG9kc1xyXG4gIHByaXZhdGUgZ2V0RmlsZUV4dGVuc2lvbihmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHJpbmcoZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKSkudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbWFnZShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKGV4dC50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZm9ybWF0Qnl0ZXMoYnl0ZXMsIGRlY2ltYWxzKSB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHtcclxuICAgICAgcmV0dXJuICcwIEJ5dGVzJztcclxuICAgIH1cclxuICAgIGNvbnN0IGsgPSAxMDI0O1xyXG4gICAgY29uc3QgZG0gPSBkZWNpbWFscyA8PSAwID8gMCA6IGRlY2ltYWxzIHx8IDI7XHJcbiAgICBjb25zdCBzaXplcyA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKGRtKSkgKyAnICcgKyBzaXplc1tpXTtcclxuICB9XHJcblxyXG4gIHVwbG9hZGVkKCl7XHJcbiAgICB0aGlzLnVwbG9hZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBmaWxlc0NoYW5nZWQoKXtcclxuICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRpbi1pbnB1dC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgYXBwRG5kIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVEcm9wUmVmIGlkPVwiZmlsZURyb3BSZWZcIiBtdWx0aXBsZSAoY2hhbmdlKT1cImZpbGVCcm93c2VIYW5kbGVyKCRldmVudClcIiAvPlxyXG4gICAgICA8aDQ+e3ttZXNzYWdlfX08L2g0PlxyXG5cclxuICAgICAgPGxhYmVsIGZvcj1cImZpbGVEcm9wUmVmXCI+Q2xpY2sgdG8gQnJvd3NlPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZXMtbGlzdCBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWxlIFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1pbnB1dC1yb3cgaW5mb1wiID5cclxuICAgICAgICAgIDxoNCBjbGFzcz1cIm5hbWVcIj5cclxuICAgICAgICAgICAge3sgZmlsZT8ubmFtZSB9fVxyXG4gICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDxwIGNsYXNzPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICB7eyBmb3JtYXRCeXRlcyhmaWxlPy5zaXplLCAyKSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaSlcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTQgMThcIj5cclxuICAgICAgICAgICAgPHBhdGggZmlsbD1cIiNCMUIxQjFcIiBmaWxsLXJ1bGU9XCJub256ZXJvXCJcclxuICAgICAgICAgICAgICBkPVwiTTEgMTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTB6bTMuMTctNy44M2EuOTk2Ljk5NiAwIDAgMSAxLjQxIDBMNyA5LjU5bDEuNDItMS40MmEuOTk2Ljk5NiAwIDEgMSAxLjQxIDEuNDFMOC40MSAxMWwxLjQyIDEuNDJhLjk5Ni45OTYgMCAxIDEtMS40MSAxLjQxTDcgMTIuNDFsLTEuNDIgMS40MmEuOTk2Ljk5NiAwIDEgMS0xLjQxLTEuNDFMNS41OSAxMSA0LjE3IDkuNThhLjk5Ni45OTYgMCAwIDEgMC0xLjQxek0xMC41IDFMOS43OS4yOUM5LjYxLjExIDkuMzUgMCA5LjA5IDBINC45MWMtLjI2IDAtLjUyLjExLS43LjI5TDMuNSAxSDFjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTFoLTIuNXpcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImZpbGVzLmxlbmd0aCA+IDAgJiYgZW5hYmxlVXBsb2FkXCIgY2xhc3M9XCJ0aW4taW5wdXQtcm93IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiA+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBsb2FkZWQoKVwiIG1hdFRvb2x0aXA9XCJVcGxvYWQgTmV3IERvY3VtZW50c1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgID48bWF0LWljb24+ZmlsZV91cGxvYWQ8L21hdC1pY29uPiBVcGxvYWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2F0dGFjaC9hdHRhY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYXR0YWNoL2F0dGFjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRL0UsTUFBTSxPQUFPLGVBQWU7SUFFMUI7UUFLUyxZQUFPLEdBQUcsMEJBQTBCLENBQUE7UUFDcEMsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNqQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFYZCxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBV0QsYUFBYSxDQUFDLE1BQU07UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILHdDQUF3QztJQUN4Qyx1QkFBdUI7SUFDdkIseUNBQXlDO0lBQ3pDLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YscURBQXFEO0lBQ3JELG9EQUFvRDtJQUNwRCw2Q0FBNkM7SUFDN0Msa0RBQWtEO0lBQ2xELG1CQUFtQjtJQUNuQiw2Q0FBNkM7SUFDN0MsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixRQUFRO0lBQ1IsY0FBYztJQUNkLElBQUk7SUFFSixnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtRQUNELGdDQUFnQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRO1FBQ3pCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7NEdBM0VVLGVBQWU7Z0dBQWYsZUFBZSwyTENSNUIsNjNEQXVDQTsyRkQvQmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzBFQVdiLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBR0UsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1hdHRhY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F0dGFjaC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSBcIkRyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZVwiXHJcbiAgQElucHV0KCkgZmlsZXM6IGFueVtdID0gW107XHJcbiAgQE91dHB1dCgpIGZpbGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBASW5wdXQoKSBlbmFibGVVcGxvYWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGZpbGVCcm93c2VIYW5kbGVyKGV2ZW50KSB7XHJcbiAgICBsZXQgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XHJcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2ltdWxhdGUgdGhlIHVwbG9hZCBwcm9jZXNzXHJcbiAgICovXHJcbiAgLy8gdXBsb2FkRmlsZXNTaW11bGF0b3IoaW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgLy8gICAgIGlmIChpbmRleCA9PT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICByZXR1cm47XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgY29uc3QgcHJvZ3Jlc3NJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAvLyAgICAgICAgIGlmICh0aGlzLmZpbGVzW2luZGV4XS5wcm9ncmVzcyA9PT0gMTAwKSB7XHJcbiAgLy8gICAgICAgICAgIGNsZWFySW50ZXJ2YWwocHJvZ3Jlc3NJbnRlcnZhbCk7XHJcbiAgLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZXNTaW11bGF0b3IoaW5kZXggKyAxKTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHRoaXMuZmlsZXNbaW5kZXhdLnByb2dyZXNzICs9IDU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfSwgMjAwKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSwgMTAwMCk7XHJcbiAgLy8gfVxyXG5cclxuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsZXMpIHtcclxuICAgICAgaXRlbS5wcm9ncmVzcyA9IDA7XHJcbiAgICAgIHRoaXMuZmlsZXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudXBsb2FkRmlsZXNTaW11bGF0b3IoMCk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRCeXRlcyhieXRlcywgZGVjaW1hbHMpIHtcclxuICAgIGlmIChieXRlcyA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gJzAgQnl0ZXMnO1xyXG4gICAgfVxyXG4gICAgY29uc3QgayA9IDEwMjQ7XHJcbiAgICBjb25zdCBkbSA9IGRlY2ltYWxzIDw9IDAgPyAwIDogZGVjaW1hbHMgfHwgMjtcclxuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHNpemVzW2ldO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWQoKXtcclxuICAgIHRoaXMudXBsb2FkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZpbGVzQ2hhbmdlZCgpe1xyXG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGluLWlucHV0LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBhcHBEbmQgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZURyb3BSZWYgaWQ9XCJmaWxlRHJvcFJlZlwiIG11bHRpcGxlIChjaGFuZ2UpPVwiZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50KVwiIC8+XHJcbiAgICAgIDxoND57e21lc3NhZ2V9fTwvaDQ+XHJcblxyXG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZURyb3BSZWZcIj5DbGljayB0byBCcm93c2U8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlcy1saXN0IFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpbGUgXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgbGV0IGkgPSBpbmRleFwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0LXJvdyBpbmZvXCIgPlxyXG4gICAgICAgICAgPGg0IGNsYXNzPVwibmFtZVwiPlxyXG4gICAgICAgICAgICB7eyBmaWxlPy5uYW1lIH19XHJcbiAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJzaXplXCI+XHJcbiAgICAgICAgICAgIHt7IGZvcm1hdEJ5dGVzKGZpbGU/LnNpemUsIDIpIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGVcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxNCAxOFwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwiI0IxQjFCMVwiIGZpbGwtcnVsZT1cIm5vbnplcm9cIlxyXG4gICAgICAgICAgICAgIGQ9XCJNMSAxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnYxMHptMy4xNy03LjgzYS45OTYuOTk2IDAgMCAxIDEuNDEgMEw3IDkuNTlsMS40Mi0xLjQyYS45OTYuOTk2IDAgMSAxIDEuNDEgMS40MUw4LjQxIDExbDEuNDIgMS40MmEuOTk2Ljk5NiAwIDEgMS0xLjQxIDEuNDFMNyAxMi40MWwtMS40MiAxLjQyYS45OTYuOTk2IDAgMSAxLTEuNDEtMS40MUw1LjU5IDExIDQuMTcgOS41OGEuOTk2Ljk5NiAwIDAgMSAwLTEuNDF6TTEwLjUgMUw5Ljc5LjI5QzkuNjEuMTEgOS4zNSAwIDkuMDkgMEg0LjkxYy0uMjYgMC0uNTIuMTEtLjcuMjlMMy41IDFIMWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMWgxMmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMWgtMi41elwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmlsZXMubGVuZ3RoID4gMCAmJiBlbmFibGVVcGxvYWRcIiBjbGFzcz1cInRpbi1pbnB1dC1yb3cgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiID5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGxvYWRlZCgpXCIgbWF0VG9vbHRpcD1cIlVwbG9hZCBOZXcgRG9jdW1lbnRzXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiAgPjxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+IFVwbG9hZDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
@@ -36,28 +36,26 @@ export class DateComponent {
36
36
  this.updateControlState();
37
37
  }
38
38
  if (changes['value']) {
39
- this.control?.setValue(this.value ? new Date(this.value) : null);
39
+ this.control.setValue(new Date(this.value));
40
40
  }
41
41
  }
42
42
  initializeDateControls() {
43
43
  this.minDate = new FormControl(new Date(this.min));
44
44
  this.maxDate = new FormControl(new Date(this.max));
45
- const initialValue = this.value ? new Date(this.value) : null;
46
- this.control = new FormControl({ value: initialValue, disabled: this.readonly });
45
+ this.control = new FormControl({ value: new Date(this.value), disabled: this.readonly });
47
46
  this.updateControlState();
48
47
  setTimeout(() => this.onChangeEvent(), 5);
49
48
  }
50
49
  updateControlState() {
51
50
  if (this.readonly) {
52
- this.control?.disable();
51
+ this.control.disable();
53
52
  }
54
53
  else {
55
- this.control?.enable();
54
+ this.control.enable();
56
55
  }
57
56
  }
58
57
  onChangeEvent() {
59
- const controlValue = this.control.value;
60
- const formattedDate = controlValue ? Core.getFormatedDate2(controlValue, true) : null;
58
+ const formattedDate = Core.getFormatedDate2(this.control.value, true);
61
59
  this.valueChange.emit(formattedDate);
62
60
  }
63
61
  validate(control) {
@@ -100,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
100
98
  }], infoClick: [{
101
99
  type: Output
102
100
  }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9kYXRlL2RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS9kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFNVyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFFBQUcsR0FBRyxZQUFZLENBQUM7UUFDbkIsUUFBRyxHQUFHLFlBQVksQ0FBQztRQUNuQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixVQUFLLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBRyxNQUFNLENBQUM7UUFFZCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBSWhELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBZ0VoRDtJQTlEQyxXQUFXLENBQUMsS0FBaUI7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQU1ELFFBQVE7UUFD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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgbWluID0gXCIxOTAwLTAxLTAxXCI7XHJcbiAgQElucHV0KCkgbWF4ID0gXCI5OTk5LTAxLTAxXCI7XHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nIHwgbnVsbCA9IENvcmUubm93RGF0ZSh0cnVlKTtcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheSA9IFwiXCI7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHdpZHRoID0gXCIxMDAlXCI7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGluZm9DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgb25JbmZvQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pbmZvQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbWluRGF0ZTogRm9ybUNvbnRyb2w7XHJcbiAgbWF4RGF0ZTogRm9ybUNvbnRyb2w7XHJcbiAgY29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0ZUNvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncmVhZG9ubHknXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xTdGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuXHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHRoaXMudmFsdWUgPyBuZXcgRGF0ZSh0aGlzLnZhbHVlKSA6IG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRGF0ZUNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5taW5EYXRlID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKHRoaXMubWluKSk7XHJcbiAgICB0aGlzLm1heERhdGUgPSBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUodGhpcy5tYXgpKTtcclxuICAgIFxyXG5cclxuXHJcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlID8gbmV3IERhdGUodGhpcy52YWx1ZSkgOiBudWxsO1xyXG4gICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMucmVhZG9ubHkgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb250cm9sU3RhdGUoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vbkNoYW5nZUV2ZW50KCksIDUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sU3RhdGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2w/LmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udHJvbD8uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUV2ZW50KCk6IHZvaWQge1xyXG5cclxuXHJcbiAgICBjb25zdCBjb250cm9sVmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gY29udHJvbFZhbHVlID8gQ29yZS5nZXRGb3JtYXRlZERhdGUyKGNvbnRyb2xWYWx1ZSwgdHJ1ZSkgOiBudWxsO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGZvcm1hdHRlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogRm9ybUNvbnRyb2wpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xyXG4gICAgICByZXR1cm4gYE1pbmltdW0gZGF0ZSBpcyAke3RoaXMubWlufWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpKSB7XHJcbiAgICAgIHJldHVybiBgTWF4aW11bSBkYXRlIGlzICR7dGhpcy5tYXh9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxufVxyXG4iLCJcclxuPG1hdC1mb3JtLWZpZWxkIFtuZ1N0eWxlXT1cInsnd2lkdGgnOndpZHRoID8/ICcxMDAlJ31cIj5cclxuICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBbbWluXT1cIm1pbkRhdGUudmFsdWVcIiBbbWF4XT1cIm1heERhdGUudmFsdWVcIiBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJfZGF0ZVwiIChkYXRlSW5wdXQpPVwib25DaGFuZ2VFdmVudCgpXCIgW3BsYWNlaG9sZGVyXT1cImRpc3BsYXlcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPlxyXG4gIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyX2RhdGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcl9kYXRlPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiPnt7dmFsaWRhdGUoY29udHJvbCl9fTwvbWF0LWVycm9yPlxyXG4gICAgICA8ZGl2IG1hdFN1ZmZpeCBjbGFzcz1cInN1ZmZpeC1pY29uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiaW5mb01lc3NhZ2VcIiAoY2xpY2spPVwib25JbmZvQ2xpY2soJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCJJbmZvXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiA+XHJcbiAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlO1wiPmluZm88L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9kYXRlL2RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS9kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFNVyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFFBQUcsR0FBRyxZQUFZLENBQUM7UUFDbkIsUUFBRyxHQUFHLFlBQVksQ0FBQztRQUNuQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixVQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFHLE1BQU0sQ0FBQztRQUVkLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQXVEaEQ7SUFyREMsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFNRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXpGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBb0I7UUFDM0IsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDeEMsT0FBTyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDeEMsT0FBTyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzswR0FwRVUsYUFBYTs4RkFBYixhQUFhLGdWQ1QxQiw4eEJBWUE7MkZESGEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxVQUFVOzhCQUtYLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgbWluID0gXCIxOTAwLTAxLTAxXCI7XHJcbiAgQElucHV0KCkgbWF4ID0gXCI5OTk5LTAxLTAxXCI7XHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZSA9IENvcmUubm93RGF0ZSh0cnVlKTtcclxuICBASW5wdXQoKSBkaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgd2lkdGggPSBcIjEwMCVcIjtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGluZm9DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgb25JbmZvQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pbmZvQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbWluRGF0ZTogRm9ybUNvbnRyb2w7XHJcbiAgbWF4RGF0ZTogRm9ybUNvbnRyb2w7XHJcbiAgY29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0ZUNvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncmVhZG9ubHknXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xTdGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5ldyBEYXRlKHRoaXMudmFsdWUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGVDb250cm9scygpOiB2b2lkIHtcclxuICAgIHRoaXMubWluRGF0ZSA9IG5ldyBGb3JtQ29udHJvbChuZXcgRGF0ZSh0aGlzLm1pbikpO1xyXG4gICAgdGhpcy5tYXhEYXRlID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKHRoaXMubWF4KSk7XHJcbiAgICB0aGlzLmNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogbmV3IERhdGUodGhpcy52YWx1ZSksIGRpc2FibGVkOiB0aGlzLnJlYWRvbmx5IH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQ29udHJvbFN0YXRlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25DaGFuZ2VFdmVudCgpLCA1KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29udHJvbFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgdGhpcy5jb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gQ29yZS5nZXRGb3JtYXRlZERhdGUyKHRoaXMuY29udHJvbC52YWx1ZSwgdHJ1ZSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZm9ybWF0dGVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpKSB7XHJcbiAgICAgIHJldHVybiBgTWluaW11bSBkYXRlIGlzICR7dGhpcy5taW59YDtcclxuICAgIH1cclxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGRhdGUgaXMgJHt0aGlzLm1heH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48bWF0LWZvcm0tZmllbGQgW25nU3R5bGVdPVwieyd3aWR0aCc6d2lkdGggPz8gJzEwMCUnfVwiPlxyXG4gIDxpbnB1dCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFttaW5dPVwibWluRGF0ZS52YWx1ZVwiIFttYXhdPVwibWF4RGF0ZS52YWx1ZVwiIG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInBpY2tlcl9kYXRlXCIgKGRhdGVJbnB1dCk9XCJvbkNoYW5nZUV2ZW50KClcIiBbcGxhY2Vob2xkZXJdPVwiZGlzcGxheVwiIFtyZWFkb25seV09XCJ0cnVlXCI+XHJcbiAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJfZGF0ZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyX2RhdGU+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbC5pbnZhbGlkXCI+e3t2YWxpZGF0ZShjb250cm9sKX19PC9tYXQtZXJyb3I+XHJcbiAgICAgIDxkaXYgbWF0U3VmZml4IGNsYXNzPVwic3VmZml4LWljb25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJpbmZvTWVzc2FnZVwiIChjbGljayk9XCJvbkluZm9DbGljaygkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIkluZm9cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiID5cclxuICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImNvbG9yOiBzdGVlbGJsdWU7XCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
@@ -5,12 +5,13 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../services/message.service";
6
6
  import * as i2 from "@angular/common";
7
7
  import * as i3 from "@angular/forms";
8
- import * as i4 from "@angular/material/icon";
9
- import * as i5 from "@angular/material/form-field";
10
- import * as i6 from "@angular/material/chips";
11
- import * as i7 from "@angular/material/core";
12
- import * as i8 from "@angular/material/autocomplete";
13
- import * as i9 from "../suffix/suffix.component";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@angular/material/icon";
10
+ import * as i6 from "@angular/material/form-field";
11
+ import * as i7 from "@angular/material/chips";
12
+ import * as i8 from "@angular/material/core";
13
+ import * as i9 from "@angular/material/autocomplete";
14
+ import * as i10 from "@angular/material/tooltip";
14
15
  export class EmailComponent {
15
16
  constructor(messageService) {
16
17
  this.messageService = messageService;
@@ -20,8 +21,7 @@ export class EmailComponent {
20
21
  this.readonly = false;
21
22
  this.required = true;
22
23
  this.hint = "";
23
- this.copyContent = false;
24
- this.clearContent = false;
24
+ this.infoClick = new EventEmitter();
25
25
  // New inputs for autocomplete
26
26
  this.options = [];
27
27
  this.optionValue = "";
@@ -81,14 +81,14 @@ export class EmailComponent {
81
81
  this.updateValue();
82
82
  }
83
83
  }
84
- clearEmails() {
85
- this.emails = [];
86
- this.updateValue();
87
- }
88
84
  updateValue() {
89
85
  this.value = this.emails.join(';');
90
86
  this.valueChange.emit(this.value);
91
87
  }
88
+ onInfoClick(event) {
89
+ event.stopPropagation();
90
+ this.infoClick.emit();
91
+ }
92
92
  optionSelected(event) {
93
93
  this.addMultipleEmails(event.option.viewValue);
94
94
  this.emailControl.setValue('');
@@ -101,10 +101,10 @@ export class EmailComponent {
101
101
  }
102
102
  }
103
103
  EmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EmailComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
104
- EmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EmailComponent, selector: "spa-email", inputs: { display: "display", value: "value", readonly: "readonly", required: "required", hint: "hint", suffix: "suffix", infoMessage: "infoMessage", copyContent: "copyContent", clearContent: "clearContent", options: "options", optionValue: "optionValue" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<mat-form-field style=\"width: 100%;\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let email of emails\" [removable]=\"!readonly\" (removed)=\"removeEmail(email)\">\r\n {{email}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input autocomplete=\"off\" #emailInput [placeholder]=\"readonly ? '' : 'Enter email addresses'\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"addEmail($event)\" [formControl]=\"emailControl\" (paste)=\"handlePaste($event)\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"optionValue ? option[optionValue] : option\">\r\n {{optionValue ? option[optionValue] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"emailControl.invalid && emailControl.touched\">Invalid email format</mat-error>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clearEmails()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n", styles: [":host ::ng-deep .mat-form-field-flex{align-items:flex-start}:host ::ng-deep .mat-form-field-infix{max-height:170px;overflow-y:auto;padding-top:.25em;padding-bottom:.25em;overflow-x:hidden}:host ::ng-deep mat-chip{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i6.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.SuffixComponent, selector: "spa-suffix", inputs: ["label", "infoMessage", "copyContent", "isHovered", "clearContent", "value"], outputs: ["infoClick", "copyClick", "clearClick", "valueChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
104
+ EmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EmailComponent, selector: "spa-email", inputs: { display: "display", value: "value", readonly: "readonly", required: "required", hint: "hint", suffix: "suffix", infoMessage: "infoMessage", options: "options", optionValue: "optionValue" }, outputs: { valueChange: "valueChange", infoClick: "infoClick" }, ngImport: i0, template: "<mat-form-field style=\"width: 100%;\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let email of emails\" [removable]=\"!readonly\" (removed)=\"removeEmail(email)\">\r\n {{email}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input autocomplete=\"off\" #emailInput [placeholder]=\"readonly ? '' : 'Enter email addresses'\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"addEmail($event)\" [formControl]=\"emailControl\" (paste)=\"handlePaste($event)\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"optionValue ? option[optionValue] : option\">\r\n {{optionValue ? option[optionValue] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"emailControl.invalid && emailControl.touched\">Invalid email format</mat-error>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <span *ngIf=\"suffix\">{{suffix}}</span>\r\n <button mat-icon-button (click)=\"copyEmails()\" matTooltip=\"Copy Content\" matTooltipPosition=\"above\">\r\n <mat-icon>content_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n", styles: [":host ::ng-deep .mat-form-field-flex{align-items:flex-start}:host ::ng-deep .mat-form-field-infix{max-height:170px;overflow-y:auto;padding-top:.25em;padding-bottom:.25em;overflow-x:hidden}:host ::ng-deep mat-chip{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i7.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i7.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i7.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
105
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EmailComponent, decorators: [{
106
106
  type: Component,
107
- args: [{ selector: 'spa-email', template: "<mat-form-field style=\"width: 100%;\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let email of emails\" [removable]=\"!readonly\" (removed)=\"removeEmail(email)\">\r\n {{email}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input autocomplete=\"off\" #emailInput [placeholder]=\"readonly ? '' : 'Enter email addresses'\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"addEmail($event)\" [formControl]=\"emailControl\" (paste)=\"handlePaste($event)\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"optionValue ? option[optionValue] : option\">\r\n {{optionValue ? option[optionValue] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"emailControl.invalid && emailControl.touched\">Invalid email format</mat-error>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clearEmails()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n", styles: [":host ::ng-deep .mat-form-field-flex{align-items:flex-start}:host ::ng-deep .mat-form-field-infix{max-height:170px;overflow-y:auto;padding-top:.25em;padding-bottom:.25em;overflow-x:hidden}:host ::ng-deep mat-chip{flex:0 0 auto}\n"] }]
107
+ args: [{ selector: 'spa-email', template: "<mat-form-field style=\"width: 100%;\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let email of emails\" [removable]=\"!readonly\" (removed)=\"removeEmail(email)\">\r\n {{email}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input autocomplete=\"off\" #emailInput [placeholder]=\"readonly ? '' : 'Enter email addresses'\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"addEmail($event)\" [formControl]=\"emailControl\" (paste)=\"handlePaste($event)\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"optionValue ? option[optionValue] : option\">\r\n {{optionValue ? option[optionValue] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"emailControl.invalid && emailControl.touched\">Invalid email format</mat-error>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <span *ngIf=\"suffix\">{{suffix}}</span>\r\n <button mat-icon-button (click)=\"copyEmails()\" matTooltip=\"Copy Content\" matTooltipPosition=\"above\">\r\n <mat-icon>content_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n", styles: [":host ::ng-deep .mat-form-field-flex{align-items:flex-start}:host ::ng-deep .mat-form-field-infix{max-height:170px;overflow-y:auto;padding-top:.25em;padding-bottom:.25em;overflow-x:hidden}:host ::ng-deep mat-chip{flex:0 0 auto}\n"] }]
108
108
  }], ctorParameters: function () { return [{ type: i1.MessageService }]; }, propDecorators: { display: [{
109
109
  type: Input
110
110
  }], value: [{
@@ -121,13 +121,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
121
121
  type: Input
122
122
  }], infoMessage: [{
123
123
  type: Input
124
- }], copyContent: [{
125
- type: Input
126
- }], clearContent: [{
127
- type: Input
124
+ }], infoClick: [{
125
+ type: Output
128
126
  }], options: [{
129
127
  type: Input
130
128
  }], optionValue: [{
131
129
  type: Input
132
130
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZW1haWwvZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZW1haWwvZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLGNBQStCO1FBQS9CLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUUxQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMxQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUdWLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTlCLDhCQUE4QjtRQUNyQixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRTFCLFdBQU0sR0FBYSxFQUFFLENBQUM7SUFqQmlDLENBQUM7SUFzQnhELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUN0QyxVQUFVLENBQUMsUUFBUTtZQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDO1NBQ3hFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDeEQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBYTtRQUMzQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBd0I7UUFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsS0FBSyxDQUFDLFNBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtJQUM5QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYTtRQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7UUFDekQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLHlCQUF5QjtJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN0RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXFCO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLHNEQUFzRCxDQUFDO1FBQzFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsY0FBYyxDQUFDLEtBQW1DO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJHQWxIVSxjQUFjOytGQUFkLGNBQWMsNFZDYjNCLHc5Q0FvQkE7MkZEUGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO3FHQVFaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtZW1haWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZW1haWwuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbWFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVzc2FnZVNlcnZpY2UgOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjtcclxuICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZztcclxuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvcHlDb250ZW50ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xlYXJDb250ZW50ID0gZmFsc2U7XHJcblxyXG4gIC8vIE5ldyBpbnB1dHMgZm9yIGF1dG9jb21wbGV0ZVxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUgPSBcIlwiO1xyXG5cclxuICBlbWFpbHM6IHN0cmluZ1tdID0gW107XHJcbiAgZW1haWxDb250cm9sOiBGb3JtQ29udHJvbDtcclxuICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8c3RyaW5nW10+O1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVtYWlsQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcXFwuW2EtekEtWl17Mix9JCcpXHJcbiAgICBdKTtcclxuICAgIHRoaXMuZW1haWxzID0gdGhpcy52YWx1ZS5zcGxpdCgnOycpLmZpbHRlcihlbWFpbCA9PiBlbWFpbC50cmltKCkgIT09ICcnKTtcclxuXHJcbiAgICAvLyBTZXQgdXAgYXV0b2NvbXBsZXRlIGZpbHRlcmluZ1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmVtYWlsQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zXHJcbiAgICAgIC5tYXAob3B0aW9uID0+IHRoaXMub3B0aW9uVmFsdWUgPyBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV0gOiBvcHRpb24pXHJcbiAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBhZGRFbWFpbChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5hZGRNdWx0aXBsZUVtYWlscyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7IC8vIENsZWFyIHRoZSBpbnB1dFxyXG4gIH1cclxuXHJcbiAgYWRkTXVsdGlwbGVFbWFpbHModmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZW1haWxzVG9BZGQgPSB0aGlzLmV4dHJhY3RFbWFpbHModmFsdWUpO1xyXG5cclxuICAgIGZvciAoY29uc3QgZW1haWwgb2YgZW1haWxzVG9BZGQpIHtcclxuICAgICAgaWYgKHRoaXMuaXNWYWxpZEVtYWlsKGVtYWlsKSAmJiAhdGhpcy5lbWFpbHMuaW5jbHVkZXMoZW1haWwpKSB7XHJcbiAgICAgICAgdGhpcy5lbWFpbHMucHVzaChlbWFpbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVtYWlsQ29udHJvbC5zZXRWYWx1ZSgnJyk7IC8vIFJlc2V0IHRoZSBmb3JtIGNvbnRyb2xcclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIC8vIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRFbWFpbChlbWFpbDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbWFpbENvbnRyb2wudmFsaWRhdG9yKG5ldyBGb3JtQ29udHJvbChlbWFpbCkpID09PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgcGFzdGVkVGV4dCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgY29uc3QgZXh0cmFjdGVkRW1haWxzID0gdGhpcy5leHRyYWN0RW1haWxzKHBhc3RlZFRleHQpO1xyXG4gICAgdGhpcy5hZGRNdWx0aXBsZUVtYWlscyhleHRyYWN0ZWRFbWFpbHMuam9pbignOycpKTtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RFbWFpbHModGV4dDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZW1haWxSZWdleCA9IC8oW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuXy1dK1xcLlthLXpBLVowLTkuXy1dKykvZ2k7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gdGV4dC5tYXRjaChlbWFpbFJlZ2V4KTtcclxuICAgIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcyA6IFtdO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmVtYWlscy5pbmRleE9mKGVtYWlsKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZW1haWxzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyRW1haWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWFpbHMgPSBbXTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbHVlKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZW1haWxzLmpvaW4oJzsnKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkTXVsdGlwbGVFbWFpbHMoZXZlbnQub3B0aW9uLnZpZXdWYWx1ZSk7XHJcbiAgICB0aGlzLmVtYWlsQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBjb3B5RW1haWxzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZW1haWxTdHJpbmcgPSB0aGlzLmVtYWlscy5qb2luKCc7Jyk7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChlbWFpbFN0cmluZykudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ0NvcGllZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgPG1hdC1sYWJlbD57e2Rpc3BsYXl9fTwvbWF0LWxhYmVsPlxyXG4gIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdD5cclxuICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgZW1haWwgb2YgZW1haWxzXCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJyZW1vdmVFbWFpbChlbWFpbClcIj5cclxuICAgICAge3tlbWFpbH19XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwiIXJlYWRvbmx5XCI+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWNoaXA+XHJcbiAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2VtYWlsSW5wdXQgW3BsYWNlaG9sZGVyXT1cInJlYWRvbmx5ID8gJycgOiAnRW50ZXIgZW1haWwgYWRkcmVzc2VzJ1wiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwiWzEzLCAxODZdXCIgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJ0cnVlXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZEVtYWlsKCRldmVudClcIiBbZm9ybUNvbnRyb2xdPVwiZW1haWxDb250cm9sXCIgKHBhc3RlKT1cImhhbmRsZVBhc3RlKCRldmVudClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIj5cclxuICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25WYWx1ZSA/IG9wdGlvbltvcHRpb25WYWx1ZV0gOiBvcHRpb25cIj5cclxuICAgICAge3tvcHRpb25WYWx1ZSA/IG9wdGlvbltvcHRpb25WYWx1ZV0gOiBvcHRpb259fVxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiZW1haWxDb250cm9sLmludmFsaWQgJiYgZW1haWxDb250cm9sLnRvdWNoZWRcIj5JbnZhbGlkIGVtYWlsIGZvcm1hdDwvbWF0LWVycm9yPlxyXG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgIDxzcGEtc3VmZml4IFtsYWJlbF09XCJzdWZmaXhcIiBbaW5mb01lc3NhZ2VdPVwiaW5mb01lc3NhZ2VcIiBbY29weUNvbnRlbnRdPVwiY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImNsZWFyQ29udGVudFwiIChjbGVhckNsaWNrKT1cImNsZWFyRW1haWxzKClcIiBbaXNIb3ZlcmVkXT1cInRydWVcIiBbKHZhbHVlKV09XCJ2YWx1ZVwiPjwvc3BhLXN1ZmZpeD5cclxuICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZW1haWwvZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZW1haWwvZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixjQUErQjtRQUEvQixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFFMUMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFHVCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyw4QkFBOEI7UUFDckIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQixXQUFNLEdBQWEsRUFBRSxDQUFDO0lBaEJpQyxDQUFDO0lBcUJ4RCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsVUFBVSxDQUFDLFFBQVE7WUFD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LENBQUMsQ0FBQztJQUNMLENBQUM7OzJHQS9HVSxjQUFjOytGQUFkLGNBQWMsMFRDYjNCLHFyREEwQkE7MkZEYmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO3FHQVFaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBR0UsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCwgTWF0Q2hpcExpc3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWVtYWlsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZW1haWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1haWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlIDogTWVzc2FnZVNlcnZpY2UpIHsgfVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZSA9IFwiXCI7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcbiAgQElucHV0KCkgc3VmZml4OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuICBAT3V0cHV0KCkgaW5mb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvLyBOZXcgaW5wdXRzIGZvciBhdXRvY29tcGxldGVcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gXCJcIjtcclxuXHJcbiAgZW1haWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGVtYWlsQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgZmlsdGVyZWRPcHRpb25zOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lbWFpbENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtcclxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnKVxyXG4gICAgXSk7XHJcbiAgICB0aGlzLmVtYWlscyA9IHRoaXMudmFsdWUuc3BsaXQoJzsnKS5maWx0ZXIoZW1haWwgPT4gZW1haWwudHJpbSgpICE9PSAnJyk7XHJcblxyXG4gICAgLy8gU2V0IHVwIGF1dG9jb21wbGV0ZSBmaWx0ZXJpbmdcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5lbWFpbENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aCgnJyksXHJcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1xyXG4gICAgICAubWFwKG9wdGlvbiA9PiB0aGlzLm9wdGlvblZhbHVlID8gb3B0aW9uW3RoaXMub3B0aW9uVmFsdWVdIDogb3B0aW9uKVxyXG4gICAgICAuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgYWRkRW1haWwoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYWRkTXVsdGlwbGVFbWFpbHModmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuY2hpcElucHV0IS5jbGVhcigpOyAvLyBDbGVhciB0aGUgaW5wdXRcclxuICB9XHJcblxyXG4gIGFkZE11bHRpcGxlRW1haWxzKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVtYWlsc1RvQWRkID0gdGhpcy5leHRyYWN0RW1haWxzKHZhbHVlKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVtYWlsIG9mIGVtYWlsc1RvQWRkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRFbWFpbChlbWFpbCkgJiYgIXRoaXMuZW1haWxzLmluY2x1ZGVzKGVtYWlsKSkge1xyXG4gICAgICAgIHRoaXMuZW1haWxzLnB1c2goZW1haWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWFpbENvbnRyb2wuc2V0VmFsdWUoJycpOyAvLyBSZXNldCB0aGUgZm9ybSBjb250cm9sXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW1haWxDb250cm9sLnZhbGlkYXRvcihuZXcgRm9ybUNvbnRyb2woZW1haWwpKSA9PT0gbnVsbDtcclxuICB9XHJcblxyXG4gIGhhbmRsZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGNvbnN0IHBhc3RlZFRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcclxuICAgIGNvbnN0IGV4dHJhY3RlZEVtYWlscyA9IHRoaXMuZXh0cmFjdEVtYWlscyhwYXN0ZWRUZXh0KTtcclxuICAgIHRoaXMuYWRkTXVsdGlwbGVFbWFpbHMoZXh0cmFjdGVkRW1haWxzLmpvaW4oJzsnKSk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0RW1haWxzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvKFthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Ll8tXStcXC5bYS16QS1aMC05Ll8tXSspL2dpO1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IHRleHQubWF0Y2goZW1haWxSZWdleCk7XHJcbiAgICByZXR1cm4gbWF0Y2hlcyA/IG1hdGNoZXMgOiBbXTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWFpbHMuaW5kZXhPZihlbWFpbCk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLmVtYWlscy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLmVtYWlscy5qb2luKCc7Jyk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmluZm9DbGljay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRNdWx0aXBsZUVtYWlscyhldmVudC5vcHRpb24udmlld1ZhbHVlKTtcclxuICAgIHRoaXMuZW1haWxDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIGNvcHlFbWFpbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbWFpbFN0cmluZyA9IHRoaXMuZW1haWxzLmpvaW4oJzsnKTtcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGVtYWlsU3RyaW5nKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCgnQ29waWVkJyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgPG1hdC1sYWJlbD57e2Rpc3BsYXl9fTwvbWF0LWxhYmVsPlxyXG4gIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdD5cclxuICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgZW1haWwgb2YgZW1haWxzXCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJyZW1vdmVFbWFpbChlbWFpbClcIj5cclxuICAgICAge3tlbWFpbH19XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwiIXJlYWRvbmx5XCI+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWNoaXA+XHJcbiAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2VtYWlsSW5wdXQgW3BsYWNlaG9sZGVyXT1cInJlYWRvbmx5ID8gJycgOiAnRW50ZXIgZW1haWwgYWRkcmVzc2VzJ1wiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwiWzEzLCAxODZdXCIgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJ0cnVlXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZEVtYWlsKCRldmVudClcIiBbZm9ybUNvbnRyb2xdPVwiZW1haWxDb250cm9sXCIgKHBhc3RlKT1cImhhbmRsZVBhc3RlKCRldmVudClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIj5cclxuICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25WYWx1ZSA/IG9wdGlvbltvcHRpb25WYWx1ZV0gOiBvcHRpb25cIj5cclxuICAgICAge3tvcHRpb25WYWx1ZSA/IG9wdGlvbltvcHRpb25WYWx1ZV0gOiBvcHRpb259fVxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiZW1haWxDb250cm9sLmludmFsaWQgJiYgZW1haWxDb250cm9sLnRvdWNoZWRcIj5JbnZhbGlkIGVtYWlsIGZvcm1hdDwvbWF0LWVycm9yPlxyXG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwic3VmZml4XCI+e3tzdWZmaXh9fTwvc3Bhbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5RW1haWxzKClcIiBtYXRUb29sdGlwPVwiQ29weSBDb250ZW50XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cclxuICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiaW5mb01lc3NhZ2VcIiAoY2xpY2spPVwib25JbmZvQ2xpY2soJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCJJbmZvXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cclxuICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IHN0ZWVsYmx1ZTtcIj5pbmZvPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=