tin-spa 14.4.2 → 14.13.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 (162) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +57 -32
  3. package/esm2020/lib/classes/LibClasses.mjs +2 -1
  4. package/esm2020/lib/classes/TinCore.mjs +194 -44
  5. package/esm2020/lib/components/alert/alert.component.mjs +12 -6
  6. package/esm2020/lib/components/attach/attach.component.mjs +49 -33
  7. package/esm2020/lib/components/capsules/capsules.component.mjs +63 -0
  8. package/esm2020/lib/components/cards/cards.component.mjs +103 -0
  9. package/esm2020/lib/components/date/date.component.mjs +4 -4
  10. package/esm2020/lib/components/email/email.component.mjs +19 -17
  11. package/esm2020/lib/components/form/form.component.mjs +142 -57
  12. package/esm2020/lib/components/html/html.component.mjs +34 -0
  13. package/esm2020/lib/components/label/label.component.mjs +9 -3
  14. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
  15. package/esm2020/lib/components/money/money.component.mjs +26 -9
  16. package/esm2020/lib/components/multi-select/multi-select.component.mjs +165 -0
  17. package/esm2020/lib/components/multi-text/multi-text.component.mjs +208 -0
  18. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +31 -27
  19. package/esm2020/lib/components/notes/notes.component.mjs +62 -0
  20. package/esm2020/lib/components/number/number.component.mjs +23 -8
  21. package/esm2020/lib/components/option/option.component.mjs +36 -14
  22. package/esm2020/lib/components/page/page.component.mjs +101 -0
  23. package/esm2020/lib/components/search/search.component.mjs +10 -5
  24. package/esm2020/lib/components/select/select.component.mjs +56 -129
  25. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +87 -0
  26. package/esm2020/lib/components/select-common/select-common.component.mjs +208 -0
  27. package/esm2020/lib/components/select-internal/select-internal.component.mjs +75 -0
  28. package/esm2020/lib/components/select-lite/select-lite.component.mjs +18 -0
  29. package/esm2020/lib/components/steps/steps.component.mjs +83 -61
  30. package/esm2020/lib/components/suffix/suffix.component.mjs +70 -0
  31. package/esm2020/lib/components/table/detailsDialog.component.mjs +169 -37
  32. package/esm2020/lib/components/table/table.component.mjs +136 -111
  33. package/esm2020/lib/components/table-action/table-action.component.mjs +42 -8
  34. package/esm2020/lib/components/table-header/table-header.component.mjs +12 -8
  35. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +169 -35
  36. package/esm2020/lib/components/table-internal/table-internal.component.mjs +138 -112
  37. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +371 -0
  38. package/esm2020/lib/components/table-lite/table-lite.component.mjs +441 -0
  39. package/esm2020/lib/components/table-row/table-row.component.mjs +23 -4
  40. package/esm2020/lib/components/tabs/tabs.component.mjs +83 -0
  41. package/esm2020/lib/components/text/text.component.mjs +85 -40
  42. package/esm2020/lib/components/tiles/tiles.component.mjs +32 -20
  43. package/esm2020/lib/components/viewer/viewer.component.mjs +7 -3
  44. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +20 -13
  45. package/esm2020/lib/modules/admin/admin-routing.module.mjs +11 -1
  46. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +1 -1
  47. package/esm2020/lib/pages/app-models/app-models.component.mjs +56 -0
  48. package/esm2020/lib/pages/approvals/approvals.component.mjs +19 -0
  49. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +165 -0
  50. package/esm2020/lib/pages/bug/bug.component.mjs +3 -3
  51. package/esm2020/lib/pages/change-password/change-password.component.mjs +1 -1
  52. package/esm2020/lib/pages/create-account/create-account.component.mjs +1 -1
  53. package/esm2020/lib/pages/customers/customers.component.mjs +9 -48
  54. package/esm2020/lib/pages/departments/departments.component.mjs +2 -4
  55. package/esm2020/lib/pages/employees/employees.component.mjs +3 -4
  56. package/esm2020/lib/pages/grades/grades.component.mjs +3 -3
  57. package/esm2020/lib/pages/inventory/inventory.component.mjs +3 -3
  58. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +1 -1
  59. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +11 -10
  60. package/esm2020/lib/pages/login/login.component.mjs +52 -14
  61. package/esm2020/lib/pages/logs/logs.component.mjs +27 -22
  62. package/esm2020/lib/pages/membership/membership.component.mjs +15 -19
  63. package/esm2020/lib/pages/notifications/notifications.component.mjs +82 -6
  64. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +113 -0
  65. package/esm2020/lib/pages/plans/plans.component.mjs +16 -19
  66. package/esm2020/lib/pages/positions/positions.component.mjs +4 -4
  67. package/esm2020/lib/pages/profile/profile.component.mjs +4 -3
  68. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +1 -1
  69. package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +2 -2
  70. package/esm2020/lib/pages/roles/roles.component.mjs +77 -17
  71. package/esm2020/lib/pages/settings/settings.component.mjs +5 -13
  72. package/esm2020/lib/pages/signup/signup.component.mjs +1 -1
  73. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +3 -31
  74. package/esm2020/lib/pages/tasks/tasks.component.mjs +9 -9
  75. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +145 -72
  76. package/esm2020/lib/pages/tenants/tenants.component.mjs +10 -10
  77. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +1 -1
  78. package/esm2020/lib/pages/transactions/transactions.component.mjs +3 -3
  79. package/esm2020/lib/pages/users/users.component.mjs +115 -92
  80. package/esm2020/lib/pages/welcome/welcome.component.mjs +9 -9
  81. package/esm2020/lib/select-context.directive.mjs +23 -0
  82. package/esm2020/lib/services/button.service.mjs +90 -30
  83. package/esm2020/lib/services/csv.service.mjs +1 -1
  84. package/esm2020/lib/services/datalib.service.mjs +504 -76
  85. package/esm2020/lib/services/dialog.service.mjs +24 -7
  86. package/esm2020/lib/services/notifications.service.mjs +33 -0
  87. package/esm2020/lib/services/table-config.service.mjs +55 -7
  88. package/esm2020/lib/tin-spa.module.mjs +47 -11
  89. package/esm2020/public-api.mjs +9 -1
  90. package/fesm2015/tin-spa.mjs +6333 -2671
  91. package/fesm2015/tin-spa.mjs.map +1 -1
  92. package/fesm2020/tin-spa.mjs +6492 -2770
  93. package/fesm2020/tin-spa.mjs.map +1 -1
  94. package/lib/classes/Classes.d.ts +233 -127
  95. package/lib/classes/LibClasses.d.ts +1 -0
  96. package/lib/classes/TinCore.d.ts +11 -3
  97. package/lib/components/attach/attach.component.d.ts +13 -6
  98. package/lib/components/capsules/capsules.component.d.ts +26 -0
  99. package/lib/components/cards/cards.component.d.ts +39 -0
  100. package/lib/components/email/email.component.d.ts +4 -3
  101. package/lib/components/form/form.component.d.ts +20 -11
  102. package/lib/components/html/html.component.d.ts +16 -0
  103. package/lib/components/label/label.component.d.ts +3 -1
  104. package/lib/components/money/money.component.d.ts +8 -1
  105. package/lib/components/multi-select/multi-select.component.d.ts +47 -0
  106. package/lib/components/multi-text/multi-text.component.d.ts +56 -0
  107. package/lib/components/nav-menu/nav-menu.component.d.ts +6 -2
  108. package/lib/components/notes/notes.component.d.ts +19 -0
  109. package/lib/components/number/number.component.d.ts +7 -1
  110. package/lib/components/option/option.component.d.ts +10 -2
  111. package/lib/components/page/page.component.d.ts +38 -0
  112. package/lib/components/search/search.component.d.ts +3 -1
  113. package/lib/components/select/select.component.d.ts +16 -37
  114. package/lib/components/select-bitwise/select-bitwise.component.d.ts +31 -0
  115. package/lib/components/select-common/select-common.component.d.ts +53 -0
  116. package/lib/components/select-internal/select-internal.component.d.ts +23 -0
  117. package/lib/components/select-lite/select-lite.component.d.ts +8 -0
  118. package/lib/components/steps/steps.component.d.ts +18 -9
  119. package/lib/components/suffix/suffix.component.d.ts +23 -0
  120. package/lib/components/table/detailsDialog.component.d.ts +24 -7
  121. package/lib/components/table/table.component.d.ts +15 -9
  122. package/lib/components/table-action/table-action.component.d.ts +4 -1
  123. package/lib/components/table-header/table-header.component.d.ts +3 -1
  124. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +24 -7
  125. package/lib/components/table-internal/table-internal.component.d.ts +15 -9
  126. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +81 -0
  127. package/lib/components/table-lite/table-lite.component.d.ts +91 -0
  128. package/lib/components/table-row/table-row.component.d.ts +4 -1
  129. package/lib/components/tabs/tabs.component.d.ts +32 -0
  130. package/lib/components/text/text.component.d.ts +16 -7
  131. package/lib/components/tiles/tiles.component.d.ts +4 -3
  132. package/lib/components/viewer/viewerDialog.component.d.ts +3 -1
  133. package/lib/pages/app-models/app-models.component.d.ts +15 -0
  134. package/lib/pages/approvals/approvals.component.d.ts +10 -0
  135. package/lib/pages/approvals-config/approvals-config.component.d.ts +24 -0
  136. package/lib/pages/customers/customers.component.d.ts +2 -8
  137. package/lib/pages/invitations-table/invitations-table.component.d.ts +1 -1
  138. package/lib/pages/login/login.component.d.ts +7 -1
  139. package/lib/pages/logs/logs.component.d.ts +2 -6
  140. package/lib/pages/membership/membership.component.d.ts +2 -6
  141. package/lib/pages/notifications/notifications.component.d.ts +9 -1
  142. package/lib/pages/notifications-config/notifications-config.component.d.ts +17 -0
  143. package/lib/pages/plans/plans.component.d.ts +2 -6
  144. package/lib/pages/roles/roles.component.d.ts +14 -2
  145. package/lib/pages/suppliers/suppliers.component.d.ts +1 -4
  146. package/lib/pages/tasks/tasks.component.d.ts +1 -1
  147. package/lib/pages/tenant-settings/tenant-settings.component.d.ts +12 -7
  148. package/lib/pages/tenants/tenants.component.d.ts +2 -2
  149. package/lib/pages/users/users.component.d.ts +8 -16
  150. package/lib/select-context.directive.d.ts +10 -0
  151. package/lib/services/button.service.d.ts +10 -7
  152. package/lib/services/datalib.service.d.ts +54 -10
  153. package/lib/services/dialog.service.d.ts +2 -2
  154. package/lib/services/notifications.service.d.ts +12 -0
  155. package/lib/services/table-config.service.d.ts +9 -1
  156. package/lib/tin-spa.module.d.ts +51 -33
  157. package/package.json +1 -1
  158. package/public-api.d.ts +8 -0
  159. package/esm2020/lib/pages/invitations/invitations.component.mjs +0 -14
  160. package/esm2020/lib/pages/tenant-settings/inviteDialog.component.mjs +0 -60
  161. package/lib/pages/invitations/invitations.component.d.ts +0 -8
  162. package/lib/pages/tenant-settings/inviteDialog.component.d.ts +0 -28
@@ -1,5 +1,4 @@
1
1
  import { Component } from '@angular/core';
2
- import { inviteDialog } from './inviteDialog.component';
3
2
  import { Subject } from 'rxjs';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "../../services/datalib.service";
@@ -8,11 +7,10 @@ import * as i3 from "../../services/auth.service";
8
7
  import * as i4 from "@angular/material/dialog";
9
8
  import * as i5 from "@angular/common";
10
9
  import * as i6 from "@angular/material/button";
11
- import * as i7 from "../../components/text/text.component";
12
- import * as i8 from "../../components/label/label.component";
13
- import * as i9 from "../../components/select/select.component";
14
- import * as i10 from "../../components/table/table.component";
15
- import * as i11 from "../invitations-table/invitations-table.component";
10
+ import * as i7 from "../../components/label/label.component";
11
+ import * as i8 from "../../components/select/select.component";
12
+ import * as i9 from "../../components/table/table.component";
13
+ import * as i10 from "../invitations-table/invitations-table.component";
16
14
  export class TenantSettingsComponent {
17
15
  constructor(dataService, messageService, authService, dialog) {
18
16
  this.dataService = dataService;
@@ -20,14 +18,34 @@ export class TenantSettingsComponent {
20
18
  this.authService = authService;
21
19
  this.dialog = dialog;
22
20
  this.roles = [
23
- { name: 'Default', value: 1 },
24
- // { name: 'Admin', value: 2 },
25
- // { name: 'Owner', value: 3 },
21
+ { roleName: 'Default', roleID: 1 },
26
22
  ];
23
+ //Members
24
+ this.roleField = { name: 'roleID', type: 'select', required: true, span: true, options: this.roles, optionDisplay: 'roleName', optionValue: 'roleID', defaultFirstValue: true };
25
+ this.inviteDialogConfig = {
26
+ formConfig: {
27
+ title: 'Add Member',
28
+ fixedTitle: true,
29
+ fields: [
30
+ { name: 'email', type: 'text', required: true, span: true },
31
+ { name: 'firstName', type: 'text', required: true, min: 2, },
32
+ { name: 'lastName', type: 'text', required: true, min: 2, },
33
+ this.roleField,
34
+ ]
35
+ },
36
+ mode: 'create',
37
+ buttons: [
38
+ { name: 'create', action: { url: 'members/dto?action=invite', method: 'post', successMessage: 'Updated successfully' } }
39
+ ]
40
+ };
27
41
  this.membersFormConfig = {
42
+ title: 'Member Access',
43
+ alertMessages: { messages: [{ type: 'warn', content: 'You can amend the member\'s role here' }] },
28
44
  fields: [
29
- { name: 'email', type: 'text', required: true, min: 2 },
30
- { name: 'roleID', type: 'select', required: true, options: this.roles, optionDisplay: 'name', optionValue: 'value', defaultValue: 1 },
45
+ { name: 'email', type: 'text', readonly: true, span: true },
46
+ { name: 'firstName', type: 'text', readonly: true },
47
+ { name: 'lastName', type: 'text', readonly: true },
48
+ this.roleField,
31
49
  ],
32
50
  };
33
51
  this.tableReload = new Subject();
@@ -35,36 +53,117 @@ export class TenantSettingsComponent {
35
53
  greyOut: (value) => value.accepted == false,
36
54
  elevation: 'low',
37
55
  logResponse: true,
38
- minColumns: ['name'],
39
- minButtons: ['delete'],
56
+ minColumns: ['memberName'],
57
+ minButtons: ['edit', 'remove'],
40
58
  flatButtons: true,
41
59
  columns: [
42
- { name: 'name', type: 'text' },
60
+ { name: 'memberName', type: 'text', icons: [
61
+ { name: 'schedule', tip: 'Waiting for user to accept invitation', condition: x => !x.accepted }
62
+ ] },
43
63
  { name: 'email', type: 'text' },
44
64
  { name: 'roleName', alias: 'Role', type: 'text' },
45
65
  ],
46
66
  buttons: [
47
- { name: 'create', display: 'Invite', },
48
- { name: 'edit', dialog: true, action: { url: 'tenant/members?action=role', method: 'post' }, disabled: x => x.roleID != 1 },
49
- { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' }, disabled: x => x.roleID != 1 },
67
+ { name: 'create', display: 'Add Member', dialog: true, detailsConfig: this.inviteDialogConfig },
68
+ { name: 'edit', icon: { name: 'security' }, tip: 'Edit Access', dialog: true, action: { url: 'members/dto?action=role', method: 'post' }, },
69
+ { name: 'remove', icon: { name: 'close', color: 'red' }, tip: 'Remove Member', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' }, disabled: x => x.own },
50
70
  ],
51
- loadAction: { url: 'tenant/members/x' },
71
+ loadAction: { url: 'members/all/x' },
52
72
  formConfig: this.membersFormConfig,
53
73
  };
74
+ //Organsations
75
+ this.orgFormConfig = {
76
+ fixedTitle: true,
77
+ fields: [
78
+ { name: 'name', type: 'text', required: true, min: 2 },
79
+ ]
80
+ };
81
+ this.createOrgDialogConfig = {
82
+ formConfig: { ...this.orgFormConfig, title: 'New Organisation' },
83
+ mode: 'create',
84
+ buttons: [
85
+ { name: 'create', action: { url: 'tenants/dto?action=create', method: 'post', successMessage: 'Created successfully' } }
86
+ ]
87
+ };
88
+ this.renameOrgDialogConfig = {
89
+ formConfig: {
90
+ ...this.orgFormConfig,
91
+ title: 'Organisation Details',
92
+ fields: [
93
+ ...this.orgFormConfig.fields,
94
+ { name: 'companyDetails', type: 'section', },
95
+ { name: 'companyName', type: 'text', required: true, span: true, alias: 'Company Name' },
96
+ { name: 'address', type: 'text', required: true, rows: 3, span: true },
97
+ { name: 'phone', type: 'text', required: true },
98
+ { name: 'email', type: 'text', required: true }
99
+ ]
100
+ },
101
+ mode: 'edit',
102
+ buttons: [
103
+ { name: 'edit', action: { url: 'tenants?action=edit', method: 'post', successMessage: 'Renamed successfully' } }
104
+ ]
105
+ };
54
106
  this.orgsReload = new Subject();
55
107
  this.orgsTableConfig = {
56
108
  greyOut: (value) => value.accepted == false,
57
109
  elevation: 'low',
58
110
  minColumns: ['name'],
111
+ minButtons: ['login', 'edit', 'leave'],
59
112
  flatButtons: true,
113
+ collapseButtons: true,
60
114
  columns: [
61
- { name: 'name', type: 'text' },
62
- { name: 'createdByName', type: 'text', alias: 'Owner' },
115
+ { name: 'name', alias: 'Organisation', type: 'text', icons: [{ name: 'radio_button_checked', tip: 'Current Organisation', color: 'green', condition: x => x.tenantID == this.currentTenantID }] },
116
+ { name: 'ownerName', type: 'text', alias: 'Owner' },
63
117
  ],
64
118
  buttons: [
65
- { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' }, disabled: x => x.own }, //action: { url: 'tenant/members?action=delete', method: 'post' }
119
+ { name: 'create', display: 'New Organisation', dialog: true, detailsConfig: this.createOrgDialogConfig },
120
+ {
121
+ name: 'login', display: 'Switch to this Organisation', confirm: { message: 'Switch to this Organisation ?' }, action: { url: 'tenants/dto?action=switch', method: 'post' }, icon: { name: 'login', },
122
+ visible: x => x.tenantID != this.currentTenantID
123
+ },
124
+ {
125
+ name: 'edit', display: 'Rename Organisation', dialog: true, detailsConfig: this.renameOrgDialogConfig,
126
+ visible: x => x.own
127
+ },
128
+ {
129
+ name: 'leave', tip: 'Leave', icon: { name: 'directions_run', color: 'red' }, confirm: { message: 'Leave this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' },
130
+ disabled: x => x.own
131
+ },
66
132
  ],
67
- loadAction: { url: 'tenant/my_tenants/x' },
133
+ loadAction: { url: 'tenants/my_tenants/x' },
134
+ };
135
+ //Email
136
+ this.mailerFormConfig = {
137
+ fields: [
138
+ { name: 'smtp', type: 'text', required: true, alias: 'SMTP Server' },
139
+ { name: 'port', type: 'number', required: true, defaultValue: 587 },
140
+ { name: 'address', type: 'text', required: true, alias: 'Email Address' },
141
+ { name: 'display', type: 'text', required: true, alias: 'Display Name' },
142
+ { name: 'password', type: 'password', required: true, span: true },
143
+ { name: 'enableSsl', type: 'checkbox', alias: 'Enable SSL' },
144
+ { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },
145
+ ]
146
+ };
147
+ this.mailerTableConfig = {
148
+ showFilter: true,
149
+ elevation: 'low',
150
+ minColumns: ['smtp', 'address'],
151
+ flatButtons: true,
152
+ columns: [
153
+ { name: 'smtp', type: 'text', alias: 'SMTP Server' },
154
+ { name: 'port', type: 'number' },
155
+ { name: 'address', type: 'text', alias: 'Email Address' },
156
+ { name: 'display', type: 'text', alias: 'Display Name' },
157
+ { name: 'enableSsl', type: 'checkbox', alias: 'SSL Enabled' },
158
+ { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },
159
+ ],
160
+ buttons: [
161
+ { name: 'create', display: 'Configure Email', dialog: true, action: { url: 'mailerconfigs?action=create', method: 'post' } },
162
+ { name: 'edit', dialog: true, action: { url: 'mailerconfigs?action=edit', method: 'post' } },
163
+ { name: 'delete', dialog: true, action: { url: 'mailerconfigs?action=delete', method: 'post' } },
164
+ ],
165
+ loadAction: { url: 'mailerconfigs/all/x' },
166
+ formConfig: this.mailerFormConfig
68
167
  };
69
168
  }
70
169
  ngOnInit() {
@@ -73,83 +172,57 @@ export class TenantSettingsComponent {
73
172
  this.loadTenants();
74
173
  }
75
174
  loadData() {
76
- this.dataService.CallApi({ url: 'tenant/meta/x' }, "").subscribe((apiResponse) => {
175
+ this.dataService.CallApi({ url: 'tenants/meta/x' }, "").subscribe((apiResponse) => {
77
176
  this.currTenant = apiResponse.data.tenant;
78
177
  this.currentTenantID = apiResponse.data.currentTenantID;
79
178
  this.plan = apiResponse.data.plan;
80
179
  this.ownTenant = apiResponse.data.ownTenant;
180
+ this.membersFormConfig.fields.find(x => x.name == 'roleID').options = apiResponse.data.roles;
81
181
  });
82
182
  }
83
183
  loadTenants() {
84
- this.dataService.CallApi({ url: 'tenant/meta_tenants/x' }, "").subscribe((apiResponse) => {
85
- // this.tenant = apiResponse.data.tenant;
184
+ this.dataService.CallApi({ url: 'tenants/meta_tenants/x' }, "").subscribe((apiResponse) => {
86
185
  this.tenants = apiResponse.data.tenants;
87
186
  });
88
187
  }
89
- renameTenant() {
90
- this.messageService.confirm(`Rename ?`).subscribe((result) => {
91
- if (result == "yes") {
92
- this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.currTenant).subscribe((apiResponse) => {
93
- if (apiResponse.success) {
94
- this.authService.updateTenantName(this.currTenant.name);
95
- this.messageService.toast("Renamed Successfully");
96
- this.refreshOrgsLists();
97
- }
98
- });
188
+ updateTenant(x) {
189
+ if (x.name == "edit" && x.data.success) {
190
+ if (x.data.data.tenantID == this.currentTenantID) {
191
+ this.authService.updateTenantName(x.data.data.name);
99
192
  }
100
- });
193
+ this.refreshOrgsLists();
194
+ }
195
+ if (x.name == "login" && x.data.success) {
196
+ this.forceLogin();
197
+ }
198
+ if (x.name == "leave" && x.data.success) {
199
+ this.refreshOrgsLists();
200
+ }
101
201
  }
102
202
  refreshOrgsLists() {
103
203
  this.loadTenants();
104
- this.orgsReload.next(true);
105
204
  }
106
205
  switchTenant() {
107
- this.messageService.confirm(`Switch ?`).subscribe((result) => {
206
+ this.messageService.confirm(`Switch Organisation ?`).subscribe((result) => {
108
207
  if (result == "yes") {
109
208
  this.currTenant.tenantID = this.currentTenantID;
110
- this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse) => {
209
+ this.dataService.CallApi({ url: 'tenants/dto?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse) => {
111
210
  if (apiResponse.success) {
112
- this.messageService.toast("Switched Successfully, please login again");
113
- this.authService.logoff();
211
+ this.forceLogin();
114
212
  }
115
213
  });
116
214
  }
117
215
  });
118
216
  }
119
- newTenant() {
120
- this.messageService.confirm(`Create ${this.newName} ?`).subscribe((result) => {
121
- if (result == "yes") {
122
- let tenant = { tenantID: 0, name: this.newName };
123
- this.dataService.CallApi({ url: 'tenant/tenants?action=create', method: 'post' }, tenant).subscribe((apiResponse) => {
124
- if (apiResponse.success) {
125
- this.messageService.toast("Created Successfully");
126
- this.refreshOrgsLists();
127
- }
128
- });
129
- }
130
- });
131
- }
132
- inviteActionClicked(x) {
133
- if (x.name == "create") {
134
- this.inviteDiag();
135
- }
136
- }
137
- inviteDiag() {
138
- const dialogRef = this.dialog.open(inviteDialog, {
139
- width: "900px",
140
- data: '',
141
- });
142
- dialogRef.afterClosed().subscribe((result) => {
143
- if (result == "success") {
144
- this.tableReload.next(true);
145
- }
146
- });
217
+ forceLogin() {
218
+ this.messageService.toast("Switched Successfully, please login again");
219
+ this.authService.logoff();
147
220
  }
148
221
  }
149
222
  TenantSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantSettingsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
150
- TenantSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantSettingsComponent, selector: "spa-tenant-settings", ngImport: i0, template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"currTenant.name\" hint=\"This name will be displayed to all members of your organisation.\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"renameTenant()\">Save</button>\r\n </div>\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n <div *ngIf=\"ownTenant\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <!-- Members -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" (actionClick)=\"inviteActionClicked($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- Member Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Member Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- New Organisation -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">New Organisation</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Create another organisation</label>\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"newName\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"newTenant()\">Create</button>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i8.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format"] }, { kind: "component", type: i9.SelectComponent, selector: "spa-select", inputs: ["width", "readonly", "required", "defaultFirstValue", "readonlyMode", "hint", "placeholder", "multiple", "display", "value", "options", "masterOptions", "optionValue", "optionDisplay", "optionDisplayExtra", "nullable", "peekConfig", "infoMessage", "copyContent"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i10.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }, { kind: "component", type: i11.InvitationsTableComponent, selector: "spa-invitations-table" }] });
223
+ TenantSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantSettingsComponent, selector: "spa-tenant-settings", ngImport: i0, template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;margin-bottom: 10px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"currentTenantID == currTenant.tenantID\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"ownTenant\" >\r\n <!-- Members -->\r\n <div class=\"mt-3\" >\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" ></spa-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- My Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >My Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\" (actionResponse)=\"updateTenant($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- My Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">My Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Email -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">Email Configuration</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Configure email settings for sending notifications.</label>\r\n\r\n <spa-table [config]=\"mailerTableConfig\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format", "suffix", "size"] }, { kind: "component", type: i8.SelectComponent, selector: "spa-select", inputs: ["detailsConfig"] }, { kind: "component", type: i9.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }, { kind: "component", type: i10.InvitationsTableComponent, selector: "spa-invitations-table" }] });
151
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantSettingsComponent, decorators: [{
152
225
  type: Component,
153
- args: [{ selector: 'spa-tenant-settings', template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"currTenant.name\" hint=\"This name will be displayed to all members of your organisation.\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"renameTenant()\">Save</button>\r\n </div>\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n <div *ngIf=\"ownTenant\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <!-- Members -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" (actionClick)=\"inviteActionClicked($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- Member Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Member Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- New Organisation -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">New Organisation</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Create another organisation</label>\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"newName\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"newTenant()\">Create</button>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"] }]
226
+ args: [{ selector: 'spa-tenant-settings', template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;margin-bottom: 10px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"currentTenantID == currTenant.tenantID\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"ownTenant\" >\r\n <!-- Members -->\r\n <div class=\"mt-3\" >\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" ></spa-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- My Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >My Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\" (actionResponse)=\"updateTenant($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- My Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">My Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Email -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">Email Configuration</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Configure email settings for sending notifications.</label>\r\n\r\n <spa-table [config]=\"mailerTableConfig\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"] }]
154
227
  }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }, { type: i4.MatDialog }]; } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFLbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFtQixXQUEyQixFQUFVLGNBQThCLEVBQVMsV0FBd0IsRUFBUyxNQUFpQjtRQUE5SCxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFnQmpKLFVBQUssR0FBRztZQUNOLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQzdCLCtCQUErQjtZQUMvQiwrQkFBK0I7U0FDaEMsQ0FBQTtRQThFRCxzQkFBaUIsR0FBZTtZQUU5QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN4RCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVB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LEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztvSEFsSVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkRDZHBDLGt1SEFxR0E7MkZEdkZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBUYWJsZUNvbmZpZywgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpbnZpdGVEaWFsb2cgfSBmcm9tICcuL2ludml0ZURpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS10ZW5hbnQtc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnQtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RlbmFudC1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbmFudFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubXlSb2xlT2JzZXJ2LnN1YnNjcmliZShyb2wgPT4gdGhpcy5teVJvbGUgPSByb2wpO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgdGhpcy5sb2FkVGVuYW50cygpXHJcbiAgfVxyXG5cclxuICBuZXdOYW1lO1xyXG5cclxuICBteVJvbGVcclxuICB0ZW5hbnRzO1xyXG4gIGN1cnJUZW5hbnQ7XHJcbiAgY3VycmVudFRlbmFudElEO1xyXG4gIHBsYW47XHJcbiAgb3duVGVuYW50O1xyXG4gIHJvbGVzID0gW1xyXG4gICAgeyBuYW1lOiAnRGVmYXVsdCcsIHZhbHVlOiAxIH0sXHJcbiAgICAvLyB7IG5hbWU6ICdBZG1pbicsIHZhbHVlOiAyIH0sXHJcbiAgICAvLyB7IG5hbWU6ICdPd25lcicsIHZhbHVlOiAzIH0sXHJcbiAgXVxyXG5cclxuICBsb2FkRGF0YSgpe1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiAndGVuYW50L21ldGEveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5jdXJyVGVuYW50ID0gYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnQ7XHJcbiAgICAgIHRoaXMuY3VycmVudFRlbmFudElEID0gYXBpUmVzcG9uc2UuZGF0YS5jdXJyZW50VGVuYW50SUQ7XHJcbiAgICAgIHRoaXMucGxhbiA9IGFwaVJlc3BvbnNlLmRhdGEucGxhbjtcclxuICAgICAgdGhpcy5vd25UZW5hbnQgPSBhcGlSZXNwb25zZS5kYXRhLm93blRlbmFudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkVGVuYW50cygpIHtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogJ3RlbmFudC9tZXRhX3RlbmFudHMveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgLy8gdGhpcy50ZW5hbnQgPSBhcGlSZXNwb25zZS5kYXRhLnRlbmFudDtcclxuICAgICAgdGhpcy50ZW5hbnRzID0gYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnRzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW5hbWVUZW5hbnQoKSB7XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGBSZW5hbWUgP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnQvdGVuYW50cz9hY3Rpb249cmVuYW1lJywgbWV0aG9kOiAncG9zdCcgfSwgdGhpcy5jdXJyVGVuYW50KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlVGVuYW50TmFtZSh0aGlzLmN1cnJUZW5hbnQubmFtZSlcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlJlbmFtZWQgU3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hPcmdzTGlzdHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoT3Jnc0xpc3RzKCl7XHJcbiAgICB0aGlzLmxvYWRUZW5hbnRzKCk7XHJcbiAgICB0aGlzLm9yZ3NSZWxvYWQubmV4dCh0cnVlKVxyXG4gIH1cclxuXHJcbiAgc3dpdGNoVGVuYW50KCkge1xyXG5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShgU3dpdGNoID9gKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09IFwieWVzXCIpIHtcclxuXHJcbiAgICAgICAgdGhpcy5jdXJyVGVuYW50LnRlbmFudElEID0gdGhpcy5jdXJyZW50VGVuYW50SUQ7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogJ3RlbmFudC90ZW5hbnRzP2FjdGlvbj1zd2l0Y2gnLCBtZXRob2Q6ICdwb3N0JyB9LCB0aGlzLmN1cnJUZW5hbnQpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlN3aXRjaGVkIFN1Y2Nlc3NmdWxseSwgcGxlYXNlIGxvZ2luIGFnYWluXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ29mZigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5ld1RlbmFudCgpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYENyZWF0ZSAke3RoaXMubmV3TmFtZX0gP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICBsZXQgdGVuYW50ID0ge3RlbmFudElEIDogMCwgbmFtZSA6IHRoaXMubmV3TmFtZX1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiAndGVuYW50L3RlbmFudHM/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0sIHRlbmFudCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQ3JlYXRlZCBTdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE9yZ3NMaXN0cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgbWVtYmVyc0Zvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcblxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnLCAgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiB9LFxyXG4gICAgICB7IG5hbWU6ICdyb2xlSUQnLCB0eXBlOiAnc2VsZWN0JywgcmVxdWlyZWQ6IHRydWUsIG9wdGlvbnM6IHRoaXMucm9sZXMsIG9wdGlvbkRpc3BsYXkgOiAnbmFtZScsIG9wdGlvblZhbHVlIDogJ3ZhbHVlJywgZGVmYXVsdFZhbHVlOiAxIH0sXHJcbiAgICBdLFxyXG5cclxuICB9XHJcblxyXG4gIGludml0ZUFjdGlvbkNsaWNrZWQoeCl7XHJcblxyXG5cclxuICAgIGlmICh4Lm5hbWUgPT1cImNyZWF0ZVwiKXtcclxuICAgICAgdGhpcy5pbnZpdGVEaWFnKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGludml0ZURpYWcoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKGludml0ZURpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCI5MDBweFwiLFxyXG4gICAgICBkYXRhOiAnJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnRhYmxlUmVsb2FkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdGFibGVSZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIG1lbWJlcnNUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcblxyXG4gICAgZ3JleU91dCA6ICh2YWx1ZSkgPT4gdmFsdWUuYWNjZXB0ZWQgPT0gZmFsc2UsXHJcbiAgICBlbGV2YXRpb246ICdsb3cnLFxyXG4gICAgbG9nUmVzcG9uc2UgOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJ10sXHJcbiAgICBtaW5CdXR0b25zOiBbJ2RlbGV0ZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3JvbGVOYW1lJywgYWxpYXMgOiAnUm9sZScsIHR5cGU6ICd0ZXh0J30sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0ludml0ZScsIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2cgOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAndGVuYW50L21lbWJlcnM/YWN0aW9uPXJvbGUnLCBtZXRob2Q6ICdwb3N0JyB9LCBkaXNhYmxlZDogeCA9PiB4LnJvbGVJRCAhPSAxIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGNvbmZpcm06IHsgbWVzc2FnZTogJ1JlbW92ZSBNZW1iZXIgZnJvbSB0aGlzIE9yZ2FuaXNhdGlvbiA/JyB9LCBhY3Rpb246IHsgdXJsOiAndGVuYW50L21lbWJlcnM/YWN0aW9uPXJlbW92ZScsIG1ldGhvZDogJ3Bvc3QnIH0sIGRpc2FibGVkIDogeCA9PiB4LnJvbGVJRCAhPSAxIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAndGVuYW50L21lbWJlcnMveCcgfSxcclxuXHJcbiAgICBmb3JtQ29uZmlnOiB0aGlzLm1lbWJlcnNGb3JtQ29uZmlnLFxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgb3Jnc1JlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgb3Jnc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIGdyZXlPdXQ6ICh2YWx1ZSkgPT4gdmFsdWUuYWNjZXB0ZWQgPT0gZmFsc2UsXHJcbiAgICBlbGV2YXRpb246ICdsb3cnLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlZEJ5TmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdPd25lcicgfSxcclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBjb25maXJtOiB7IG1lc3NhZ2U6ICdSZW1vdmUgTWVtYmVyIGZyb20gdGhpcyBPcmdhbmlzYXRpb24gPycgfSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudC9tZW1iZXJzP2FjdGlvbj1yZW1vdmUnLCBtZXRob2Q6ICdwb3N0JyB9ICwgZGlzYWJsZWQgOiB4ID0+IHgub3dufSwgLy9hY3Rpb246IHsgdXJsOiAndGVuYW50L21lbWJlcnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH1cclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvbXlfdGVuYW50cy94JyB9LFxyXG5cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRpdGxlXCIgPk9yZ2FuaXNhdGlvbiBEZXRhaWxzPC9sYWJlbD5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJjdXJyVGVuYW50ICYmIHBsYW5cIiBjbGFzcz1cIm1iLTIgbXQtMyB0aW4tZ3JpZFwiIHN0eWxlPVwiIGZvbnQtc2l6ZTogMTRweDtcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW4tY29sIG1iLTNcIiAqbmdJZj1cIm93blRlbmFudFwiIHN0eWxlPVwibWF4LXdpZHRoOiA1MDBweDtcIj5cclxuICAgICAgICA8c3BhLXRleHQgZGlzcGxheT1cIk5hbWVcIiBbKHZhbHVlKV09XCJjdXJyVGVuYW50Lm5hbWVcIiBoaW50PVwiVGhpcyBuYW1lIHdpbGwgYmUgZGlzcGxheWVkIHRvIGFsbCBtZW1iZXJzIG9mIHlvdXIgb3JnYW5pc2F0aW9uLlwiIHN0eWxlPVwibWluLXdpZHRoOiAzMDBweDtcIj4gPC9zcGEtdGV4dD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicmVuYW1lVGVuYW50KClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpbi1jb2wgbWItM1wiIHN0eWxlPVwibWF4LXdpZHRoOiA1MDBweDtcIj5cclxuICAgICAgICA8c3BhLXNlbGVjdCBkaXNwbGF5PVwiQ3VycmVudCBPcmdhbmlzYXRpb25cIiBbb3B0aW9uc109XCJ0ZW5hbnRzXCIgb3B0aW9uRGlzcGxheT1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInRlbmFudElEXCIgWyh2YWx1ZSldPVwiY3VycmVudFRlbmFudElEXCJcclxuICAgICAgICAgIGhpbnQ9XCJZb3UgYXJlIHJlcXVpcmVkIHRvIGxvZ2luIGFnYWluIGFmdGVyIHN3aXRjaGluZyBvcmdhbmlzYXRpb25zLlwiIHN0eWxlPVwibWluLXdpZHRoOiAzMDBweDtcIj48L3NwYS1zZWxlY3Q+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInN3aXRjaFRlbmFudCgpXCI+U3dpdGNoPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIm93blRlbmFudFwiPlxyXG4gICAgICAgIDxzcGEtbGFiZWwgZGlzcGxheT1cIlBsYW5cIiBbdmFsdWVdPVwicGxhbi5uYW1lXCI+PC9zcGEtbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICA8IS0tIE1lbWJlcnMgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cIm93blRlbmFudFwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRpdGxlXCIgPk1lbWJlcnM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+SW52aXRlIG90aGVyIHVzZXJzIHRvIGpvaW4geW91ciBvcmdhbmlzYXRpb24gYXMgcGFydG5lcnMgb3IgZW1wbG95ZWVzIHRvIGZvcm0gYSBwYXJ0bmVyc2hpcCBvciBjb21wYW55LjwvbGFiZWw+XHJcblxyXG4gICAgPHNwYS10YWJsZSBbY29uZmlnXT1cIm1lbWJlcnNUYWJsZUNvbmZpZ1wiIFtyZWxvYWRdPVwidGFibGVSZWxvYWRcIiAoYWN0aW9uQ2xpY2spPVwiaW52aXRlQWN0aW9uQ2xpY2tlZCgkZXZlbnQpXCI+PC9zcGEtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPCEtLSBJbnZpdGF0aW9ucyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwib3duVGVuYW50XCI+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIiA+SW52aXRhdGlvbnM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+UmVxdWVzdHMgZm9yIHlvdSB0byBqb2luIG90aGVyIG9yZ2FuaXNhdGlvbnMuPC9sYWJlbD5cclxuXHJcblxyXG4gICAgPHNwYS1pbnZpdGF0aW9ucy10YWJsZT48L3NwYS1pbnZpdGF0aW9ucy10YWJsZT5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuPCEtLSBNZW1iZXIgT3JnYW5pc2F0aW9ucyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwib3duVGVuYW50XCI+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIiA+TWVtYmVyIE9yZ2FuaXNhdGlvbnM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+T3JnYW5pc2F0aW9ucyB0aGF0IHlvdSBhcmUgYSBtZW1iZXIgb2YuPC9sYWJlbD5cclxuXHJcbiAgICA8c3BhLXRhYmxlIFtjb25maWddPVwib3Jnc1RhYmxlQ29uZmlnXCIgW3JlbG9hZF09XCJvcmdzUmVsb2FkXCI+PC9zcGEtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPCEtLSBOZXcgT3JnYW5pc2F0aW9uIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJvd25UZW5hbnRcIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiPk5ldyBPcmdhbmlzYXRpb248L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+Q3JlYXRlIGFub3RoZXIgb3JnYW5pc2F0aW9uPC9sYWJlbD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGluLWNvbCBtYi0zXCIgKm5nSWY9XCJvd25UZW5hbnRcIiBzdHlsZT1cIm1heC13aWR0aDogNTAwcHg7XCI+XHJcbiAgICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiTmFtZVwiIFsodmFsdWUpXT1cIm5ld05hbWVcIiBzdHlsZT1cIm1pbi13aWR0aDogMzAwcHg7XCI+IDwvc3BhLXRleHQ+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJuZXdUZW5hbnQoKVwiPkNyZWF0ZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDwhLS0gQmlsbGluZyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtMyBtYi01XCIgKm5nSWY9XCJvd25UZW5hbnRcIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiID5CaWxsaW5nIGFuZCBTdWJzY3JpcHRpb248L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY3VyclRlbmFudCAmJiBwbGFuXCIgY2xhc3M9XCJtYi0xIG10LTNcIiBzdHlsZT1cIm1heC13aWR0aDogMzAwcHg7IGZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICA8c3BhLWxhYmVsIGRpc3BsYXk9XCJQbGFuXCIgW3ZhbHVlXT1cInBsYW4ubmFtZVwiPjwvc3BhLWxhYmVsPlxyXG4gICAgICAgIDxzcGEtbGFiZWwgZGlzcGxheT1cIk5leHQgUGF5bWVudFwiIGZvcm1hdD1cIm1vbmV5XCIgW3ZhbHVlXT1cInBsYW4ucHJpY2VcIj48L3NwYS1sYWJlbD5cclxuICAgICAgICA8c3BhLWxhYmVsIGRpc3BsYXk9XCJEdWUgRGF0ZVwiIGZvcm1hdD1cImRhdGVcIiB2YWx1ZT1cIjIwMjQtMDEtMDFcIj48L3NwYS1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFNbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9CLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsWUFBbUIsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCLEVBQVMsTUFBaUI7UUFBOUgsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBZ0JqSixVQUFLLEdBQUc7WUFDTixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtTQUNuQyxDQUFBO1FBa0VELFNBQVM7UUFFVCxjQUFTLEdBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUVsTCx1QkFBa0IsR0FBd0I7WUFDeEMsVUFBVSxFQUFFO2dCQUNWLEtBQUss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LElBQUksS0FBSyxFQUFFO2dCQUVuQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUVoRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtvQkFFckksSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO3dCQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7cUJBQ2xCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7O29IQWpGVSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyRENicEMsOG1HQTBGQTsyRkQ3RWEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSwgRGV0YWlsc0RpYWxvZ0NvbmZpZywgRmllbGQgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS10ZW5hbnQtc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnQtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RlbmFudC1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbmFudFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubXlSb2xlT2JzZXJ2LnN1YnNjcmliZShyb2wgPT4gdGhpcy5teVJvbGUgPSByb2wpO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgdGhpcy5sb2FkVGVuYW50cygpXHJcbiAgfVxyXG5cclxuICBuZXdOYW1lO1xyXG5cclxuICBteVJvbGVcclxuICB0ZW5hbnRzO1xyXG4gIGN1cnJUZW5hbnQ7XHJcbiAgY3VycmVudFRlbmFudElEO1xyXG4gIHBsYW47XHJcbiAgb3duVGVuYW50O1xyXG4gIHJvbGVzID0gW1xyXG4gICAgeyByb2xlTmFtZTogJ0RlZmF1bHQnLCByb2xlSUQ6IDEgfSxcclxuICBdXHJcblxyXG4gIGxvYWREYXRhKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL21ldGEveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5jdXJyVGVuYW50ID0gYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnQ7XHJcbiAgICAgIHRoaXMuY3VycmVudFRlbmFudElEID0gYXBpUmVzcG9uc2UuZGF0YS5jdXJyZW50VGVuYW50SUQ7XHJcbiAgICAgIHRoaXMucGxhbiA9IGFwaVJlc3BvbnNlLmRhdGEucGxhbjtcclxuICAgICAgdGhpcy5vd25UZW5hbnQgPSBhcGlSZXNwb25zZS5kYXRhLm93blRlbmFudFxyXG4gICAgICB0aGlzLm1lbWJlcnNGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdyb2xlSUQnKS5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YS5yb2xlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRlbmFudHMoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL21ldGFfdGVuYW50cy94JyB9LCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnRlbmFudHMgPSBhcGlSZXNwb25zZS5kYXRhLnRlbmFudHM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICB1cGRhdGVUZW5hbnQoeCl7XHJcblxyXG4gICAgaWYgKHgubmFtZSA9PSBcImVkaXRcIiAmJiB4LmRhdGEuc3VjY2VzcyApIHtcclxuICAgICAgaWYgKHguZGF0YS5kYXRhLnRlbmFudElEID09IHRoaXMuY3VycmVudFRlbmFudElEKXtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVRlbmFudE5hbWUoeC5kYXRhLmRhdGEubmFtZSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZnJlc2hPcmdzTGlzdHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5uYW1lID09IFwibG9naW5cIiAmJiB4LmRhdGEuc3VjY2Vzcykge1xyXG4gICAgICB0aGlzLmZvcmNlTG9naW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5uYW1lID09IFwibGVhdmVcIiAmJiB4LmRhdGEuc3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnJlZnJlc2hPcmdzTGlzdHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2hPcmdzTGlzdHMoKXtcclxuICAgIHRoaXMubG9hZFRlbmFudHMoKTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFRlbmFudCgpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYFN3aXRjaCBPcmdhbmlzYXRpb24gP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmN1cnJUZW5hbnQudGVuYW50SUQgPSB0aGlzLmN1cnJlbnRUZW5hbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiAndGVuYW50cy9kdG8/YWN0aW9uPXN3aXRjaCcsIG1ldGhvZDogJ3Bvc3QnIH0sIHRoaXMuY3VyclRlbmFudCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmNlTG9naW4oKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcmNlTG9naW4oKXtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJTd2l0Y2hlZCBTdWNjZXNzZnVsbHksIHBsZWFzZSBsb2dpbiBhZ2FpblwiKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb2ZmKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvL01lbWJlcnNcclxuXHJcbiAgcm9sZUZpZWxkOiBGaWVsZCA9IHsgbmFtZTogJ3JvbGVJRCcsIHR5cGU6ICdzZWxlY3QnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbiA6IHRydWUsIG9wdGlvbnM6IHRoaXMucm9sZXMsIG9wdGlvbkRpc3BsYXk6ICdyb2xlTmFtZScsIG9wdGlvblZhbHVlOiAncm9sZUlEJywgZGVmYXVsdEZpcnN0VmFsdWU6IHRydWUgfVxyXG5cclxuICBpbnZpdGVEaWFsb2dDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnOiB7XHJcbiAgICAgIHRpdGxlOiAnQWRkIE1lbWJlcicsXHJcbiAgICAgIGZpeGVkVGl0bGU6IHRydWUsXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2ZpcnN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiwgfSxcclxuICAgICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiwgfSxcclxuICAgICAgICB0aGlzLnJvbGVGaWVsZCxcclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1vZGU6ICdjcmVhdGUnLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBhY3Rpb246IHsgdXJsOiAnbWVtYmVycy9kdG8/YWN0aW9uPWludml0ZScsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ1VwZGF0ZWQgc3VjY2Vzc2Z1bGx5JyB9IH1cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBtZW1iZXJzRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuXHJcbiAgICB0aXRsZSA6ICdNZW1iZXIgQWNjZXNzJyxcclxuICAgIGFsZXJ0TWVzc2FnZXMgOiB7bWVzc2FnZXMgOlsge3R5cGUgOiAnd2FybicsIGNvbnRlbnQgOiAnWW91IGNhbiBhbWVuZCB0aGUgbWVtYmVyXFwncyByb2xlIGhlcmUnfV0gfSxcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JyxyZWFkb25seTogdHJ1ZSwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdmaXJzdE5hbWUnLCB0eXBlOiAndGV4dCcsIHJlYWRvbmx5OiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2xhc3ROYW1lJywgdHlwZTogJ3RleHQnLCAgcmVhZG9ubHk6IHRydWUgfSxcclxuICAgICAgdGhpcy5yb2xlRmllbGQsXHJcbiAgICBdLFxyXG5cclxuICB9XHJcblxyXG4gIHRhYmxlUmVsb2FkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuICBtZW1iZXJzVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG5cclxuICAgIGdyZXlPdXQgOiAodmFsdWUpID0+IHZhbHVlLmFjY2VwdGVkID09IGZhbHNlLFxyXG4gICAgZWxldmF0aW9uOiAnbG93JyxcclxuICAgIGxvZ1Jlc3BvbnNlIDogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbWVtYmVyTmFtZSddLFxyXG4gICAgbWluQnV0dG9uczogWydlZGl0JywncmVtb3ZlJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ21lbWJlck5hbWUnLCB0eXBlOiAndGV4dCcsIGljb25zIDogW1xyXG4gICAgICAgIHsgbmFtZTogJ3NjaGVkdWxlJywgdGlwIDogJ1dhaXRpbmcgZm9yIHVzZXIgdG8gYWNjZXB0IGludml0YXRpb24nLCAgY29uZGl0aW9uOiB4ID0+ICF4LmFjY2VwdGVkIH1cclxuICAgICAgXSB9LFxyXG4gICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdyb2xlTmFtZScsIGFsaWFzIDogJ1JvbGUnLCB0eXBlOiAndGV4dCd9LFxyXG4gICAgXSxcclxuXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdBZGQgTWVtYmVyJywgZGlhbG9nIDogdHJ1ZSwgZGV0YWlsc0NvbmZpZzogdGhpcy5pbnZpdGVEaWFsb2dDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGljb246IHsgbmFtZTogJ3NlY3VyaXR5JyB9LCB0aXAgOiAnRWRpdCBBY2Nlc3MnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdtZW1iZXJzL2R0bz9hY3Rpb249cm9sZScsIG1ldGhvZDogJ3Bvc3QnIH0sIH0sXHJcbiAgICAgIHsgbmFtZTogJ3JlbW92ZScsIGljb246IHsgbmFtZTogJ2Nsb3NlJywgY29sb3IgOiAncmVkJyB9LCB0aXAgOiAnUmVtb3ZlIE1lbWJlcicsIGNvbmZpcm06IHsgbWVzc2FnZTogJ1JlbW92ZSBNZW1iZXIgZnJvbSB0aGlzIE9yZ2FuaXNhdGlvbiA/JyB9LCBhY3Rpb246IHsgdXJsOiAnbWVtYmVycy9kdG8/YWN0aW9uPXJlbW92ZScsIG1ldGhvZDogJ3Bvc3QnIH0sIGRpc2FibGVkIDogeCA9PiB4Lm93biB9LFxyXG4gICAgXSxcclxuXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ21lbWJlcnMvYWxsL3gnIH0sXHJcblxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5tZW1iZXJzRm9ybUNvbmZpZyxcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9PcmdhbnNhdGlvbnNcclxuXHJcbiAgb3JnRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIGZpeGVkVGl0bGU6IHRydWUsXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiB9LFxyXG4gICAgXVxyXG4gIH1cclxuICBjcmVhdGVPcmdEaWFsb2dDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnOiB7Li4udGhpcy5vcmdGb3JtQ29uZmlnLCB0aXRsZTogJ05ldyBPcmdhbmlzYXRpb24nfSxcclxuICAgIG1vZGU6ICdjcmVhdGUnLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBhY3Rpb246IHsgdXJsOiAndGVuYW50cy9kdG8/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ0NyZWF0ZWQgc3VjY2Vzc2Z1bGx5JyB9IH1cclxuICAgIF1cclxuICB9O1xyXG5cclxuICByZW5hbWVPcmdEaWFsb2dDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnOiB7XHJcbiAgICAgIC4uLnRoaXMub3JnRm9ybUNvbmZpZyxcclxuICAgICAgdGl0bGU6ICdPcmdhbmlzYXRpb24gRGV0YWlscycsXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgIC4uLnRoaXMub3JnRm9ybUNvbmZpZy5maWVsZHMsXHJcbiAgICAgICAgeyBuYW1lOiAnY29tcGFueURldGFpbHMnLCB0eXBlOiAnc2VjdGlvbicsIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnY29tcGFueU5hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlLCBzcGFuOiB0cnVlLCBhbGlhczogJ0NvbXBhbnkgTmFtZScgfSxcclxuICAgICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgcm93cyA6IDMsIHNwYW46IHRydWUgfSxcclxuICAgICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfVxyXG4gICAgICBdXHJcblxyXG4gICAgfSxcclxuICAgIG1vZGU6ICdlZGl0JyxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcsIHN1Y2Nlc3NNZXNzYWdlOiAnUmVuYW1lZCBzdWNjZXNzZnVsbHknIH0gfVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgb3Jnc1JlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgb3Jnc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuXHJcbiAgICBncmV5T3V0OiAodmFsdWUpID0+IHZhbHVlLmFjY2VwdGVkID09IGZhbHNlLFxyXG4gICAgZWxldmF0aW9uOiAnbG93JyxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgbWluQnV0dG9uczogWydsb2dpbicsJ2VkaXQnLCdsZWF2ZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcbiAgICBjb2xsYXBzZUJ1dHRvbnMgOiB0cnVlLFxyXG5cclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIGFsaWFzIDogJ09yZ2FuaXNhdGlvbicsIHR5cGU6ICd0ZXh0JywgaWNvbnM6IFt7IG5hbWU6ICdyYWRpb19idXR0b25fY2hlY2tlZCcsIHRpcCA6ICdDdXJyZW50IE9yZ2FuaXNhdGlvbicsIGNvbG9yOiAnZ3JlZW4nLCBjb25kaXRpb246IHggPT4geC50ZW5hbnRJRCA9PSB0aGlzLmN1cnJlbnRUZW5hbnRJRCB9XSB9LFxyXG4gICAgICB7IG5hbWU6ICdvd25lck5hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnT3duZXInIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ05ldyBPcmdhbmlzYXRpb24nLCBkaWFsb2c6IHRydWUsIGRldGFpbHNDb25maWc6IHRoaXMuY3JlYXRlT3JnRGlhbG9nQ29uZmlnIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnbG9naW4nLCBkaXNwbGF5OiAnU3dpdGNoIHRvIHRoaXMgT3JnYW5pc2F0aW9uJywgY29uZmlybTogeyBtZXNzYWdlOiAnU3dpdGNoIHRvIHRoaXMgT3JnYW5pc2F0aW9uID8nIH0sIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL2R0bz9hY3Rpb249c3dpdGNoJywgbWV0aG9kOiAncG9zdCcgfSwgaWNvbjogeyBuYW1lOiAnbG9naW4nLCB9LFxyXG4gICAgICAgIHZpc2libGU6IHggPT4geC50ZW5hbnRJRCAhPSB0aGlzLmN1cnJlbnRUZW5hbnRJRFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2VkaXQnLCBkaXNwbGF5OiAnUmVuYW1lIE9yZ2FuaXNhdGlvbicsIGRpYWxvZzogdHJ1ZSwgZGV0YWlsc0NvbmZpZzogdGhpcy5yZW5hbWVPcmdEaWFsb2dDb25maWcgLFxyXG4gICAgICAgIHZpc2libGU6IHggPT4geC5vd25cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdsZWF2ZScsIHRpcDogJ0xlYXZlJywgaWNvbjogeyBuYW1lOiAnZGlyZWN0aW9uc19ydW4nLCBjb2xvciA6ICdyZWQnfSwgY29uZmlybTogeyBtZXNzYWdlOiAnTGVhdmUgdGhpcyBPcmdhbmlzYXRpb24gPycgfSwgYWN0aW9uOiB7IHVybDogJ21lbWJlcnMvZHRvP2FjdGlvbj1yZW1vdmUnLCBtZXRob2Q6ICdwb3N0JyB9ICxcclxuICAgICAgICBkaXNhYmxlZCA6IHggPT4geC5vd25cclxuICAgICAgfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL215X3RlbmFudHMveCcgfSxcclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vRW1haWxcclxuICBtYWlsZXJGb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ3NtdHAnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ1NNVFAgU2VydmVyJyB9LFxyXG4gICAgICB7IG5hbWU6ICdwb3J0JywgdHlwZTogJ251bWJlcicsIHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0VmFsdWU6IDU4NyB9LFxyXG4gICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdFbWFpbCBBZGRyZXNzJyB9LFxyXG4gICAgICB7IG5hbWU6ICdkaXNwbGF5JywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdEaXNwbGF5IE5hbWUnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bhc3N3b3JkJywgdHlwZTogJ3Bhc3N3b3JkJywgcmVxdWlyZWQ6IHRydWUsIHNwYW46IHRydWUgfSxcclxuXHJcbiAgICAgIHsgbmFtZTogJ2VuYWJsZVNzbCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnRW5hYmxlIFNTTCcgfSxcclxuICAgICAgeyBuYW1lOiAnaXNCb2R5SHRtbCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnSFRNTCBCb2R5JyB9LFxyXG5cclxuXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBtYWlsZXJUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgZWxldmF0aW9uOiAnbG93JyxcclxuICAgIG1pbkNvbHVtbnM6IFsnc210cCcsICdhZGRyZXNzJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ3NtdHAnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnU01UUCBTZXJ2ZXInIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BvcnQnLCB0eXBlOiAnbnVtYmVyJyB9LFxyXG4gICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0VtYWlsIEFkZHJlc3MnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Rpc3BsYXknLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnRGlzcGxheSBOYW1lJyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbmFibGVTc2wnLCB0eXBlOiAnY2hlY2tib3gnLCBhbGlhczogJ1NTTCBFbmFibGVkJyB9LFxyXG4gICAgICB7IG5hbWU6ICdpc0JvZHlIdG1sJywgdHlwZTogJ2NoZWNrYm94JywgYWxpYXM6ICdIVE1MIEJvZHknIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NvbmZpZ3VyZSBFbWFpbCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ21haWxlcmNvbmZpZ3M/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ21haWxlcmNvbmZpZ3M/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ21haWxlcmNvbmZpZ3M/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdtYWlsZXJjb25maWdzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5tYWlsZXJGb3JtQ29uZmlnXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHJcbiAgPGRpdj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiID5PcmdhbmlzYXRpb24gRGV0YWlsczwvbGFiZWw+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiY3VyclRlbmFudCAmJiBwbGFuXCIgY2xhc3M9XCJtYi0yIG10LTMgdGluLWdyaWRcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLWNvbCBtYi0zXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUwMHB4O1wiPlxyXG4gICAgICAgIDxzcGEtc2VsZWN0IGRpc3BsYXk9XCJDdXJyZW50IE9yZ2FuaXNhdGlvblwiIFtvcHRpb25zXT1cInRlbmFudHNcIiBvcHRpb25EaXNwbGF5PVwibmFtZVwiIG9wdGlvblZhbHVlPVwidGVuYW50SURcIiBbKHZhbHVlKV09XCJjdXJyZW50VGVuYW50SURcIlxyXG4gICAgICAgICAgaGludD1cIllvdSBhcmUgcmVxdWlyZWQgdG8gbG9naW4gYWdhaW4gYWZ0ZXIgc3dpdGNoaW5nIG9yZ2FuaXNhdGlvbnMuXCIgc3R5bGU9XCJtaW4td2lkdGg6IDMwMHB4O21hcmdpbi1ib3R0b206IDEwcHg7XCI+PC9zcGEtc2VsZWN0PlxyXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJjdXJyZW50VGVuYW50SUQgPT0gY3VyclRlbmFudC50ZW5hbnRJRFwiIChjbGljayk9XCJzd2l0Y2hUZW5hbnQoKVwiPlN3aXRjaDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3duVGVuYW50XCIgPlxyXG4gPCEtLSBNZW1iZXJzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdC0zXCIgPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRpdGxlXCIgPk1lbWJlcnM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+SW52aXRlIG90aGVyIHVzZXJzIHRvIGpvaW4geW91ciBvcmdhbmlzYXRpb24gYXMgcGFydG5lcnMgb3IgZW1wbG95ZWVzIHRvIGZvcm0gYSBwYXJ0bmVyc2hpcCBvciBjb21wYW55LjwvbGFiZWw+XHJcblxyXG4gICAgPHNwYS10YWJsZSBbY29uZmlnXT1cIm1lbWJlcnNUYWJsZUNvbmZpZ1wiIFtyZWxvYWRdPVwidGFibGVSZWxvYWRcIiA+PC9zcGEtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbjwhLS0gTXkgT3JnYW5pc2F0aW9ucyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwib3duVGVuYW50XCI+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIiA+TXkgT3JnYW5pc2F0aW9uczwvbGFiZWw+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIj5PcmdhbmlzYXRpb25zIHRoYXQgeW91IGFyZSBhIG1lbWJlciBvZi48L2xhYmVsPlxyXG5cclxuICAgIDxzcGEtdGFibGUgW2NvbmZpZ109XCJvcmdzVGFibGVDb25maWdcIiBbcmVsb2FkXT1cIm9yZ3NSZWxvYWRcIiAoYWN0aW9uUmVzcG9uc2UpPVwidXBkYXRlVGVuYW50KCRldmVudClcIj48L3NwYS10YWJsZT5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tIE15IEludml0YXRpb25zIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJvd25UZW5hbnRcIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiPk15IEludml0YXRpb25zPC9sYWJlbD5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwic3VidGl0bGUgdGV4dC1tdXRlZFwiPlJlcXVlc3RzIGZvciB5b3UgdG8gam9pbiBvdGhlciBvcmdhbmlzYXRpb25zLjwvbGFiZWw+XHJcblxyXG5cclxuICAgIDxzcGEtaW52aXRhdGlvbnMtdGFibGU+PC9zcGEtaW52aXRhdGlvbnMtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJpbGxpbmcgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cIm93blRlbmFudFwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRpdGxlXCIgPkJpbGxpbmcgYW5kIFN1YnNjcmlwdGlvbjwvbGFiZWw+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjdXJyVGVuYW50ICYmIHBsYW5cIiBjbGFzcz1cIm1iLTEgbXQtM1wiIHN0eWxlPVwibWF4LXdpZHRoOiAzMDBweDsgZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgIDxzcGEtbGFiZWwgZGlzcGxheT1cIlBsYW5cIiBbdmFsdWVdPVwicGxhbi5uYW1lXCI+PC9zcGEtbGFiZWw+XHJcbiAgICAgICAgPHNwYS1sYWJlbCBkaXNwbGF5PVwiTmV4dCBQYXltZW50XCIgZm9ybWF0PVwibW9uZXlcIiBbdmFsdWVdPVwicGxhbi5wcmljZVwiPjwvc3BhLWxhYmVsPlxyXG4gICAgICAgIDxzcGEtbGFiZWwgZGlzcGxheT1cIkR1ZSBEYXRlXCIgZm9ybWF0PVwiZGF0ZVwiIHZhbHVlPVwiMjAyNC0wMS0wMVwiPjwvc3BhLWxhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBFbWFpbCAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtMyBtYi01XCIgKm5nSWY9XCJvd25UZW5hbnRcIj5cclxuXHJcbiAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIj5FbWFpbCBDb25maWd1cmF0aW9uPC9sYWJlbD5cclxuICA8aHIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+Q29uZmlndXJlIGVtYWlsIHNldHRpbmdzIGZvciBzZW5kaW5nIG5vdGlmaWNhdGlvbnMuPC9sYWJlbD5cclxuXHJcbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cIm1haWxlclRhYmxlQ29uZmlnXCI+PC9zcGEtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
@@ -9,14 +9,14 @@ export class TenantsComponent {
9
9
  this.dataService = dataService;
10
10
  this.messageService = messageService;
11
11
  this.authService = authService;
12
- this.formConfig = {
12
+ this.tenantFormConfig = {
13
13
  fields: [
14
14
  { name: 'name', type: 'text', required: true, min: 2 },
15
15
  { name: 'planID', alias: 'Plan', type: 'number', required: true },
16
16
  ],
17
17
  reset: true,
18
18
  };
19
- this.config = {
19
+ this.tenantsTableConfig = {
20
20
  showFilter: true,
21
21
  minColumns: ['name'],
22
22
  flatButtons: true,
@@ -26,22 +26,22 @@ export class TenantsComponent {
26
26
  { name: 'planName', alias: 'Plan', type: 'text' },
27
27
  ],
28
28
  buttons: [
29
- { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/tenants?action=create', method: 'post' } },
29
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'tenants?action=create', method: 'post' } },
30
30
  { name: 'view', dialog: true },
31
- { name: 'edit', dialog: true, action: { url: 'tenant/tenants?action=edit', method: 'post' } },
32
- { name: 'delete', dialog: true, action: { url: 'tenant/tenants?action=delete', method: 'post' } },
31
+ { name: 'edit', dialog: true, action: { url: 'tenants?action=edit', method: 'post' } },
32
+ { name: 'delete', dialog: true, action: { url: 'tenants?action=delete', method: 'post' } },
33
33
  ],
34
- loadAction: { url: 'tenant/all_tenants/x' },
35
- formConfig: this.formConfig
34
+ loadAction: { url: 'tenants/all_tenants/x' },
35
+ formConfig: this.tenantFormConfig
36
36
  };
37
37
  }
38
38
  ngOnInit() {
39
39
  }
40
40
  }
41
41
  TenantsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
42
- TenantsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantsComponent, selector: "spa-tenants", ngImport: i0, template: "<h4>Tenants</h4>\n<hr>\n\n\n<div class=\" mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" ></spa-table>\n</div>\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
42
+ TenantsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantsComponent, selector: "spa-tenants", ngImport: i0, template: "<h4>Tenants</h4>\r\n<hr>\r\n\r\n\r\n<div class=\" mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tenantsTableConfig\" ></spa-table>\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] });
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantsComponent, decorators: [{
44
44
  type: Component,
45
- args: [{ selector: 'spa-tenants', template: "<h4>Tenants</h4>\n<hr>\n\n\n<div class=\" mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" ></spa-table>\n</div>\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"] }]
45
+ args: [{ selector: 'spa-tenants', template: "<h4>Tenants</h4>\r\n<hr>\r\n\r\n\r\n<div class=\" mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tenantsTableConfig\" ></spa-table>\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"] }]
46
46
  }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBV2xELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCO1FBQXBHLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBT3hILGVBQVUsR0FBZTtZQUV2QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0RCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7YUFDbEU7WUFFRCxLQUFLLEVBQUUsSUFBSTtTQUVaLENBQUE7UUFFRCxXQUFNLEdBQWdCO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNwQixXQUFXLEVBQUUsSUFBSTtZQUVqQixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDakQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzlCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFFbkQ7WUFFRCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFDO2dCQUNuSCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDOUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDN0YsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTthQUNsRztZQUVELFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxzQkFBc0IsRUFBRTtZQUUzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FFNUIsQ0FBQTtJQXpDMkgsQ0FBQztJQUU3SCxRQUFRO0lBQ1IsQ0FBQzs7NkdBTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsbURDWDdCLHlJQU9BOzJGRElhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBUYWJsZUNvbmZpZywgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXRlbmFudHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZW5hbnRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVuYW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgbWluOiAyIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5JRCcsIGFsaWFzIDonUGxhbicsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuXHJcbiAgfVxyXG5cclxuICBjb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnRJRCcsIHR5cGU6ICdudW1iZXInLCBhbGlhczogJ0lEJyB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5OYW1lJywgYWxpYXMgOiAnUGxhbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG5cclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAndGVuYW50L3RlbmFudHM/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH19LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvdGVuYW50cz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAndGVuYW50L3RlbmFudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvYWxsX3RlbmFudHMveCcgfSxcclxuXHJcbiAgICBmb3JtQ29uZmlnOiB0aGlzLmZvcm1Db25maWdcclxuXHJcbiAgfVxyXG59XHJcbiIsIjxoND5UZW5hbnRzPC9oND5cbjxocj5cblxuXG48ZGl2IGNsYXNzPVwiIG10LTNcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XG4gIDxzcGEtdGFibGUgW2NvbmZpZ109XCJjb25maWdcIiA+PC9zcGEtdGFibGU+XG48L2Rpdj5cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBV2xELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCO1FBQXBHLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBT3hILHFCQUFnQixHQUFlO1lBRTdCLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTthQUNsRTtZQUVELEtBQUssRUFBRSxJQUFJO1NBRVosQ0FBQTtRQUVELHVCQUFrQixHQUFnQjtZQUNoQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEIsV0FBVyxFQUFFLElBQUk7WUFFakIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ2pELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBRW5EO1lBRUQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBQztnQkFDNUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RGLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7YUFDM0Y7WUFFRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUU7WUFFNUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FFbEMsQ0FBQTtJQXpDMkgsQ0FBQztJQUU3SCxRQUFRO0lBQ1IsQ0FBQzs7NkdBTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsbURDWDdCLG1LQU9BOzJGRElhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBUYWJsZUNvbmZpZywgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXRlbmFudHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZW5hbnRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVuYW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB0ZW5hbnRGb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgbWluOiAyIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5JRCcsIGFsaWFzIDonUGxhbicsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuXHJcbiAgfVxyXG5cclxuICB0ZW5hbnRzVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnRJRCcsIHR5cGU6ICdudW1iZXInLCBhbGlhczogJ0lEJyB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5OYW1lJywgYWxpYXMgOiAnUGxhbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG5cclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAndGVuYW50cz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfX0sXHJcbiAgICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudHM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL2FsbF90ZW5hbnRzL3gnIH0sXHJcblxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy50ZW5hbnRGb3JtQ29uZmlnXHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDQ+VGVuYW50czwvaDQ+XHJcbjxocj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiIG10LTNcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cInRlbmFudHNUYWJsZUNvbmZpZ1wiID48L3NwYS10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -68,7 +68,7 @@ export class transactDialog {
68
68
  }
69
69
  }
70
70
  transactDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: transactDialog, deps: [{ token: i1.LoaderService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
71
- transactDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: transactDialog, selector: "app-quanityDiag", ngImport: i0, template: "\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".info{color:#4682b4;margin-top:5px;margin-right:5px;font-size:18px}.sign{margin-top:5px;font-size:18px}.actionbuttons{gap:1px}button{padding-left:7px}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i8.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i9.SelectComponent, selector: "spa-select", inputs: ["width", "readonly", "required", "defaultFirstValue", "readonlyMode", "hint", "placeholder", "multiple", "display", "value", "options", "masterOptions", "optionValue", "optionDisplay", "optionDisplayExtra", "nullable", "peekConfig", "infoMessage", "copyContent"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i10.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] });
71
+ transactDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: transactDialog, selector: "app-quanityDiag", ngImport: i0, template: "\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".info{color:#4682b4;margin-top:5px;margin-right:5px;font-size:18px}.sign{margin-top:5px;font-size:18px}.actionbuttons{gap:1px}button{padding-left:7px}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.TextComponent, selector: "spa-text", inputs: ["appearance", "readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "component", type: i8.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i9.SelectComponent, selector: "spa-select", inputs: ["detailsConfig"] }, { kind: "component", type: i10.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage", "copyContent", "clearContent", "suffix"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] });
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: transactDialog, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'app-quanityDiag', template: "\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".info{color:#4682b4;margin-top:5px;margin-right:5px;font-size:18px}.sign{margin-top:5px;font-size:18px}.actionbuttons{gap:1px}button{padding-left:7px}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]