@ohioepa/oepa-ui-lib 1.1.0 → 1.2.1

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 (175) hide show
  1. package/esm2022/lib/account-search-input/account-search-input.component.mjs +11 -19
  2. package/esm2022/lib/account-search-input/account-search.service.mjs +31 -0
  3. package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +10 -18
  4. package/esm2022/lib/action-btn/action-btn.component.mjs +3 -3
  5. package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +3 -3
  6. package/esm2022/lib/address/address.component.mjs +3 -3
  7. package/esm2022/lib/address/oepa-address.service.mjs +13 -7
  8. package/esm2022/lib/blank/blank.component.mjs +3 -3
  9. package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
  10. package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +3 -3
  11. package/esm2022/lib/comment-modal/comment-modal.component.mjs +3 -3
  12. package/esm2022/lib/common-forms.module.mjs +44 -36
  13. package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +3 -3
  14. package/esm2022/lib/contact/contact.component.mjs +3 -3
  15. package/esm2022/lib/date-input/date-input.component.mjs +3 -3
  16. package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +3 -3
  17. package/esm2022/lib/datepicker/datepicker.component.mjs +3 -3
  18. package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +3 -3
  19. package/esm2022/lib/dual-list-box/array.pipes.mjs +6 -6
  20. package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +3 -3
  21. package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +3 -3
  22. package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +10 -9
  23. package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +13 -7
  24. package/esm2022/lib/entity/entity.service.mjs +13 -7
  25. package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +3 -3
  26. package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +3 -3
  27. package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +5 -5
  28. package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +3 -3
  29. package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +3 -3
  30. package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +5 -5
  31. package/esm2022/lib/entity/place-create-modal/place-create-modal.component.mjs +3 -3
  32. package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +3 -3
  33. package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +5 -5
  34. package/esm2022/lib/file-upload/file-upload.component.mjs +9 -8
  35. package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +8 -7
  36. package/esm2022/lib/lynx-image-upload/lynx.service.mjs +13 -7
  37. package/esm2022/lib/message/message.component.mjs +3 -3
  38. package/esm2022/lib/message-list/message-list.component.mjs +3 -3
  39. package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +9 -8
  40. package/esm2022/lib/notes-modal/notes-modal.component.mjs +3 -3
  41. package/esm2022/lib/numeric-input/numeric-input.component.mjs +3 -3
  42. package/esm2022/lib/numeric-input.directive.mjs +3 -3
  43. package/esm2022/lib/oepa-account/account-service.mjs +62 -0
  44. package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +3 -3
  45. package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +227 -0
  46. package/esm2022/lib/oepa-forms.service.mjs +3 -3
  47. package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +47 -0
  48. package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +304 -0
  49. package/esm2022/lib/oepa-wait-message/oepa-wait-message.component.mjs +3 -3
  50. package/esm2022/lib/parameter/parameter.service.mjs +13 -7
  51. package/esm2022/lib/params-help-button/params-help-button.component.mjs +10 -10
  52. package/esm2022/lib/params-help-button/params-help.service.mjs +26 -0
  53. package/esm2022/lib/phone-number/phone-number.component.mjs +3 -3
  54. package/esm2022/lib/pin-modal/oepa-pin.service.mjs +13 -7
  55. package/esm2022/lib/pin-modal/pin-modal.component.mjs +5 -5
  56. package/esm2022/lib/select-input/select-input.component.mjs +3 -3
  57. package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +5 -5
  58. package/esm2022/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.mjs +3 -3
  59. package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +3 -3
  60. package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +13 -7
  61. package/esm2022/lib/start-end-timepicker/start-end-timepicker.component.mjs +3 -3
  62. package/esm2022/lib/table/oepa-table-cell-classname.pipe.mjs +3 -3
  63. package/esm2022/lib/table/oepa-table-cell-colspan.pipe.mjs +3 -3
  64. package/esm2022/lib/table/oepa-table-cell-hidden.pipe.mjs +3 -3
  65. package/esm2022/lib/table/oepa-table-cell-icon-classname.pipe.mjs +3 -3
  66. package/esm2022/lib/table/oepa-table-cell-img-src.pipe.mjs +3 -3
  67. package/esm2022/lib/table/oepa-table-cell-inner-html.pipe.mjs +3 -3
  68. package/esm2022/lib/table/oepa-table-cell-input-component.pipe.mjs +3 -3
  69. package/esm2022/lib/table/oepa-table-cell-not-selectable.pipe.mjs +3 -3
  70. package/esm2022/lib/table/oepa-table-cell-value.pipe.mjs +3 -3
  71. package/esm2022/lib/table/oepa-table-filtering.directive.mjs +3 -3
  72. package/esm2022/lib/table/oepa-table-sorting.directive.mjs +3 -3
  73. package/esm2022/lib/table/p-table/p-table.component.mjs +11 -10
  74. package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +3 -3
  75. package/esm2022/lib/table/table-export.service.mjs +16 -7
  76. package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +3 -3
  77. package/esm2022/lib/table/table.component.mjs +15 -14
  78. package/esm2022/lib/table/table.service.mjs +3 -3
  79. package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +3 -3
  80. package/esm2022/lib/text-area-input/text-area-input.component.mjs +3 -3
  81. package/esm2022/lib/text-input/text-input.component.mjs +3 -3
  82. package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +3 -3
  83. package/esm2022/lib/timepicker/timepicker.component.mjs +3 -3
  84. package/esm2022/lib/validation/validation.service.mjs +3 -3
  85. package/esm2022/lib/yes-no/yes-no.component.mjs +3 -3
  86. package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +3 -3
  87. package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +3 -3
  88. package/esm2022/lib/zip-code/zip-code.component.mjs +3 -3
  89. package/esm2022/public-api.mjs +1 -28
  90. package/fesm2022/ohioepa-oepa-ui-lib.mjs +1369 -2662
  91. package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
  92. package/lib/account-search-input/account-search-input.component.d.ts +3 -4
  93. package/lib/account-search-input/account-search.service.d.ts +12 -0
  94. package/lib/account-search-modal/account-search-modal.component.d.ts +3 -5
  95. package/lib/address/oepa-address.service.d.ts +2 -1
  96. package/lib/common-forms.module.d.ts +72 -82
  97. package/lib/edoc-attachment/edoc-attachment.component.d.ts +2 -1
  98. package/lib/edoc-attachment/edoc-attachment.service.d.ts +2 -1
  99. package/lib/entity/entity.service.d.ts +2 -1
  100. package/lib/file-upload/file-upload.component.d.ts +2 -1
  101. package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +2 -1
  102. package/lib/lynx-image-upload/lynx.service.d.ts +2 -1
  103. package/lib/multi-file-upload/multi-file-upload.component.d.ts +2 -1
  104. package/lib/oepa-account/account-service.d.ts +23 -0
  105. package/lib/oepa-file-utils/oepa-file-util.service.d.ts +53 -0
  106. package/lib/oepa-reference/oepa-reference.service.d.ts +26 -0
  107. package/lib/oepa-user-account/oepa-user-account.service.d.ts +122 -0
  108. package/lib/parameter/parameter.service.d.ts +2 -1
  109. package/lib/params-help-button/params-help-button.component.d.ts +3 -3
  110. package/lib/params-help-button/params-help.service.d.ts +11 -0
  111. package/lib/pin-modal/oepa-pin.service.d.ts +2 -1
  112. package/lib/pin-modal/pin-modal.component.d.ts +2 -1
  113. package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +1 -1
  114. package/lib/shopping-cart/shopping-cart.service.d.ts +2 -1
  115. package/lib/table/p-table/p-table.component.d.ts +2 -1
  116. package/lib/table/table-export.service.d.ts +2 -1
  117. package/lib/table/table.component.d.ts +1 -1
  118. package/ohioepa-oepa-ui-lib-1.2.1.tgz +0 -0
  119. package/package.json +3 -3
  120. package/public-api.d.ts +0 -27
  121. package/esm2022/lib/document/document-editor/document-editor.component.mjs +0 -225
  122. package/esm2022/lib/document/document-event-entity-type.mjs +0 -7
  123. package/esm2022/lib/document/document-event-type.mjs +0 -7
  124. package/esm2022/lib/document/document-event.mjs +0 -2
  125. package/esm2022/lib/document/document-group/document-group.component.mjs +0 -210
  126. package/esm2022/lib/document/document-part/document-part.component.mjs +0 -19
  127. package/esm2022/lib/document/document-part-editor/document-part-editor.component.mjs +0 -296
  128. package/esm2022/lib/document/document-placeholder-modal/document-placeholder-modal.component.mjs +0 -49
  129. package/esm2022/lib/document/document-section/document-section.component.mjs +0 -226
  130. package/esm2022/lib/document/document.service.mjs +0 -325
  131. package/esm2022/lib/document/group-modal/group-modal.component.mjs +0 -46
  132. package/esm2022/lib/document/part-modal/part-modal.component.mjs +0 -48
  133. package/esm2022/lib/document/portal-document-class.mjs +0 -2
  134. package/esm2022/lib/document/portal-document-group.mjs +0 -2
  135. package/esm2022/lib/document/portal-document-part.mjs +0 -2
  136. package/esm2022/lib/document/portal-document-placeholder.mjs +0 -2
  137. package/esm2022/lib/document/portal-document-section.mjs +0 -2
  138. package/esm2022/lib/document/portal-document-text.mjs +0 -2
  139. package/esm2022/lib/document/portal-document-type.mjs +0 -2
  140. package/esm2022/lib/document/portal-document.mjs +0 -2
  141. package/esm2022/lib/document/portal-email-attachment-type.mjs +0 -2
  142. package/esm2022/lib/document/portal-email-attachment.mjs +0 -2
  143. package/esm2022/lib/document/portal-email-filter.mjs +0 -2
  144. package/esm2022/lib/document/portal-email.mjs +0 -2
  145. package/esm2022/lib/document/section-modal/section-modal.component.mjs +0 -46
  146. package/esm2022/lib/esri-map/esri-map.component.mjs +0 -416
  147. package/esm2022/lib/ohio-lat-long/ohio-lat-long.component.mjs +0 -176
  148. package/lib/document/document-editor/document-editor.component.d.ts +0 -34
  149. package/lib/document/document-event-entity-type.d.ts +0 -5
  150. package/lib/document/document-event-type.d.ts +0 -5
  151. package/lib/document/document-event.d.ts +0 -9
  152. package/lib/document/document-group/document-group.component.d.ts +0 -38
  153. package/lib/document/document-part/document-part.component.d.ts +0 -10
  154. package/lib/document/document-part-editor/document-part-editor.component.d.ts +0 -46
  155. package/lib/document/document-placeholder-modal/document-placeholder-modal.component.d.ts +0 -19
  156. package/lib/document/document-section/document-section.component.d.ts +0 -37
  157. package/lib/document/document.service.d.ts +0 -90
  158. package/lib/document/group-modal/group-modal.component.d.ts +0 -20
  159. package/lib/document/part-modal/part-modal.component.d.ts +0 -20
  160. package/lib/document/portal-document-class.d.ts +0 -10
  161. package/lib/document/portal-document-group.d.ts +0 -15
  162. package/lib/document/portal-document-part.d.ts +0 -22
  163. package/lib/document/portal-document-placeholder.d.ts +0 -12
  164. package/lib/document/portal-document-section.d.ts +0 -13
  165. package/lib/document/portal-document-text.d.ts +0 -7
  166. package/lib/document/portal-document-type.d.ts +0 -15
  167. package/lib/document/portal-document.d.ts +0 -27
  168. package/lib/document/portal-email-attachment-type.d.ts +0 -6
  169. package/lib/document/portal-email-attachment.d.ts +0 -12
  170. package/lib/document/portal-email-filter.d.ts +0 -12
  171. package/lib/document/portal-email.d.ts +0 -18
  172. package/lib/document/section-modal/section-modal.component.d.ts +0 -20
  173. package/lib/esri-map/esri-map.component.d.ts +0 -41
  174. package/lib/ohio-lat-long/ohio-lat-long.component.d.ts +0 -63
  175. package/ohioepa-oepa-ui-lib-1.1.0.tgz +0 -0
@@ -1,226 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { SectionModalComponent } from '../section-modal/section-modal.component';
3
- import { GroupModalComponent } from '../group-modal/group-modal.component';
4
- import { DocumentEventType } from '../document-event-type';
5
- import { DocumentEventEntityType } from '../document-event-entity-type';
6
- import { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "ngx-bootstrap/modal";
9
- import * as i2 from "ngx-toastr";
10
- import * as i3 from "../document.service";
11
- import * as i4 from "@angular/common";
12
- import * as i5 from "../document-group/document-group.component";
13
- export class DocumentSectionComponent {
14
- modalService;
15
- toastr;
16
- documentService;
17
- section;
18
- onMoveUp = new EventEmitter();
19
- onInsertAbove = new EventEmitter();
20
- onMoveDown = new EventEmitter();
21
- onInsertBelow = new EventEmitter();
22
- onDelete = new EventEmitter();
23
- busy = false;
24
- constructor(modalService, toastr, documentService) {
25
- this.modalService = modalService;
26
- this.toastr = toastr;
27
- this.documentService = documentService;
28
- }
29
- ngOnInit() {
30
- }
31
- moveUp() {
32
- this.onMoveUp.emit(this.section);
33
- }
34
- insertAbove() {
35
- this.onInsertAbove.emit(this.section);
36
- }
37
- moveDown() {
38
- this.onMoveDown.emit(this.section);
39
- }
40
- insertBelow() {
41
- this.onInsertBelow.emit(this.section);
42
- }
43
- delete() {
44
- this.onDelete.emit(this.section);
45
- }
46
- moveGroupUp(group) {
47
- if (!group.sequence) {
48
- group.sequence = 0;
49
- }
50
- if (group.sequence > 1) {
51
- let clone = Object.assign({}, this.section);
52
- if (!clone.groups) {
53
- clone.groups = [];
54
- }
55
- clone.groups.splice(group.sequence - 2, 0, clone.groups.splice(group.sequence - 1, 1)[0]);
56
- this.resequence(clone);
57
- this.documentService.updateDocumentSection(clone).subscribe({
58
- next: () => {
59
- this.documentService.updateDcoumentID(clone.documentID || '');
60
- }, error: err => {
61
- this.toastr.error('Failed section group: ' + err, 'ERROR');
62
- }
63
- });
64
- }
65
- }
66
- insertAboveGroup(group) {
67
- if (!group.sequence) {
68
- group.sequence = 1;
69
- }
70
- let newGroup = this.newGroup(group.sequence - 1 || 1);
71
- this.insertGroup(group.sequence - 1, newGroup);
72
- }
73
- moveGroupDown(group) {
74
- if (!group.sequence) {
75
- group.sequence = 1;
76
- }
77
- if (this.section.groups && group.sequence < this.section.groups.length) {
78
- let clone = Object.assign({}, this.section);
79
- if (!clone.groups) {
80
- clone.groups = [];
81
- }
82
- clone.groups.splice(group.sequence, 0, clone.groups.splice(group.sequence - 1, 1)[0]);
83
- this.resequence(clone);
84
- this.documentService.updateDocumentSection(clone).subscribe({
85
- next: () => {
86
- this.documentService.updateDcoumentID(clone.documentID || '');
87
- }, error: err => {
88
- this.toastr.error('Failed updating section: ' + err, 'ERROR');
89
- }
90
- });
91
- }
92
- }
93
- insertBelowGroup(group) {
94
- if (!group.sequence) {
95
- group.sequence = 1;
96
- }
97
- let newGroup = this.newGroup(group.sequence + 1);
98
- this.insertGroup(group.sequence, newGroup);
99
- }
100
- newGroup(sequence) {
101
- return {
102
- sectionID: this.section.id,
103
- documentID: this.section.documentID,
104
- sequence: sequence,
105
- name: 'Group ' + sequence,
106
- parts: [
107
- {
108
- documentID: this.section.documentID,
109
- name: 'Paragraph 1',
110
- text: {
111
- text: ''
112
- }
113
- }
114
- ]
115
- };
116
- }
117
- insertGroup(insertIndex, newGroup) {
118
- const initialState = {
119
- label: 'Insert Group',
120
- group: newGroup
121
- };
122
- let modal = this.modalService.show(GroupModalComponent, { initialState, ignoreBackdropClick: true });
123
- modal.content.onGroupSave.subscribe(updatesdGroup => {
124
- this.busy = true;
125
- let clone = Object.assign({}, this.section);
126
- if (!clone.groups) {
127
- clone.groups = [];
128
- }
129
- clone.groups.splice(insertIndex, 0, updatesdGroup);
130
- this.resequence(clone);
131
- this.documentService.updateDocumentSection(clone).subscribe({
132
- next: () => {
133
- this.documentService.updateDcoumentID(clone.documentID || '');
134
- this.busy = false;
135
- }, error: err => {
136
- this.toastr.error('Failed updating section: ' + err, 'ERROR');
137
- this.busy = false;
138
- }
139
- });
140
- });
141
- }
142
- resequence(section) {
143
- let sequence = 1;
144
- if (section.groups) {
145
- section.groups.forEach(group => {
146
- group.sequence = sequence++;
147
- });
148
- }
149
- }
150
- deleteGroup(group) {
151
- let bodyText = 'Delete Group ' + group.name + '?';
152
- const eventOverride = this.documentService.isOverriddenEvent({ eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Group });
153
- if (eventOverride && eventOverride.confirmationMessage) {
154
- bodyText = eventOverride.confirmationMessage;
155
- }
156
- const initialState = {
157
- headerText: 'Delete Group',
158
- bodyText: bodyText,
159
- confirmBtnLabel: 'Yes',
160
- cancelBtnLabel: 'No'
161
- };
162
- let modal = this.modalService.show(ConfirmationModalComponent, { initialState, ignoreBackdropClick: true });
163
- modal.content.confirmClicked.subscribe(() => {
164
- this.busy = true;
165
- let clone = Object.assign({}, this.section);
166
- if (!clone.groups) {
167
- clone.groups = [];
168
- }
169
- clone.groups = clone.groups.filter(keep => {
170
- keep.id != group.id;
171
- });
172
- this.resequence(clone);
173
- this.documentService.updateDocumentSection(clone).subscribe({
174
- next: () => {
175
- this.documentService.deleteDocumentGroup(group).subscribe({
176
- next: () => {
177
- this.documentService.updateDcoumentID(clone.documentID || '');
178
- this.busy = false;
179
- }, error: err => {
180
- this.toastr.error('Failed deleting group: ' + err, 'ERROR');
181
- this.busy = false;
182
- }
183
- });
184
- }, error: err => {
185
- this.toastr.error('Failed updating section: ' + err, 'ERROR');
186
- this.busy = false;
187
- }
188
- });
189
- });
190
- }
191
- editSection(section) {
192
- const initialState = {
193
- label: 'Edit Section Attributes',
194
- section: section
195
- };
196
- let modal = this.modalService.show(SectionModalComponent, { initialState, ignoreBackdropClick: true });
197
- modal.content.onSectionSave.subscribe(updatedSection => {
198
- this.busy = true;
199
- this.documentService.updateDocumentSection(updatedSection).subscribe(() => {
200
- this.busy = false;
201
- }, err => {
202
- this.toastr.error('Failed updating section: ' + err, 'ERROR');
203
- this.busy = false;
204
- });
205
- });
206
- }
207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentSectionComponent, deps: [{ token: i1.BsModalService }, { token: i2.ToastrService }, { token: i3.DocumentService }], target: i0.ɵɵFactoryTarget.Component });
208
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DocumentSectionComponent, selector: "oepa-document-section", inputs: { section: "section" }, outputs: { onMoveUp: "onMoveUp", onInsertAbove: "onInsertAbove", onMoveDown: "onMoveDown", onInsertBelow: "onInsertBelow", onDelete: "onDelete" }, ngImport: i0, template: "<div *ngIf=\"section\" class=\"card\">\n <div *ngIf=\"section.groups && section.groups.length > 0\" class=\"card\">\n <div *ngFor=\"let g of section.groups\" class=\"row\">\n <div class=\"col-sm-12\">\n <oepa-document-group [group]=\"g\" (onMoveUp)=\"moveGroupUp($event)\"\n (onInsertAbove)=\"insertAboveGroup($event)\" (onMoveDown)=\"moveGroupDown($event)\"\n (onInsertBelow)=\"insertBelowGroup($event)\" (onDelete)=\"deleteGroup($event)\">\n </oepa-document-group>\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DocumentGroupComponent, selector: "oepa-document-group", inputs: ["group"], outputs: ["onMoveUp", "onInsertAbove", "onMoveDown", "onInsertBelow", "onDelete"] }] });
209
- }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentSectionComponent, decorators: [{
211
- type: Component,
212
- args: [{ selector: 'oepa-document-section', template: "<div *ngIf=\"section\" class=\"card\">\n <div *ngIf=\"section.groups && section.groups.length > 0\" class=\"card\">\n <div *ngFor=\"let g of section.groups\" class=\"row\">\n <div class=\"col-sm-12\">\n <oepa-document-group [group]=\"g\" (onMoveUp)=\"moveGroupUp($event)\"\n (onInsertAbove)=\"insertAboveGroup($event)\" (onMoveDown)=\"moveGroupDown($event)\"\n (onInsertBelow)=\"insertBelowGroup($event)\" (onDelete)=\"deleteGroup($event)\">\n </oepa-document-group>\n </div>\n </div>\n </div>\n</div>" }]
213
- }], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.ToastrService }, { type: i3.DocumentService }], propDecorators: { section: [{
214
- type: Input
215
- }], onMoveUp: [{
216
- type: Output
217
- }], onInsertAbove: [{
218
- type: Output
219
- }], onMoveDown: [{
220
- type: Output
221
- }], onInsertBelow: [{
222
- type: Output
223
- }], onDelete: [{
224
- type: Output
225
- }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RvY3VtZW50L2RvY3VtZW50LXNlY3Rpb24vZG9jdW1lbnQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RvY3VtZW50L2RvY3VtZW50LXNlY3Rpb24vZG9jdW1lbnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBT25HLE1BQU0sT0FBTyx3QkFBd0I7SUFZZjtJQUNWO0lBQ0E7SUFiRCxPQUFPLENBQXlCO0lBRS9CLFFBQVEsR0FBd0MsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFDMUYsYUFBYSxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUMvRixVQUFVLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO0lBQzVGLGFBQWEsR0FBd0MsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFDL0YsUUFBUSxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUc3RixJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRXBCLFlBQW9CLFlB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QUFFO1lBQzlFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBNU1VLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLGdQQ2xCckMsNm9CQVdNOzs0RkRPTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCOzZJQUt4QixPQUFPO3NCQUFmLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9ydGFsRG9jdW1lbnRTZWN0aW9uIH0gZnJvbSAnLi4vcG9ydGFsLWRvY3VtZW50LXNlY3Rpb24nO1xuaW1wb3J0IHsgUG9ydGFsRG9jdW1lbnRHcm91cCB9IGZyb20gJy4uL3BvcnRhbC1kb2N1bWVudC1ncm91cCc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgRG9jdW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9zZWN0aW9uLW1vZGFsL3NlY3Rpb24tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEdyb3VwTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9ncm91cC1tb2RhbC9ncm91cC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jdW1lbnRFdmVudCB9IGZyb20gJy4uL2RvY3VtZW50LWV2ZW50JztcbmltcG9ydCB7IERvY3VtZW50RXZlbnRUeXBlIH0gZnJvbSAnLi4vZG9jdW1lbnQtZXZlbnQtdHlwZSc7XG5pbXBvcnQgeyBEb2N1bWVudEV2ZW50RW50aXR5VHlwZSB9IGZyb20gJy4uL2RvY3VtZW50LWV2ZW50LWVudGl0eS10eXBlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWRvY3VtZW50LXNlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LXNlY3Rpb24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50U2VjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlY3Rpb24hOiBQb3J0YWxEb2N1bWVudFNlY3Rpb247XG5cbiAgQE91dHB1dCgpIG9uTW92ZVVwOiBFdmVudEVtaXR0ZXI8UG9ydGFsRG9jdW1lbnRTZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9ydGFsRG9jdW1lbnRTZWN0aW9uPigpO1xuICBAT3V0cHV0KCkgb25JbnNlcnRBYm92ZTogRXZlbnRFbWl0dGVyPFBvcnRhbERvY3VtZW50U2VjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFBvcnRhbERvY3VtZW50U2VjdGlvbj4oKTtcbiAgQE91dHB1dCgpIG9uTW92ZURvd246IEV2ZW50RW1pdHRlcjxQb3J0YWxEb2N1bWVudFNlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb3J0YWxEb2N1bWVudFNlY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBvbkluc2VydEJlbG93OiBFdmVudEVtaXR0ZXI8UG9ydGFsRG9jdW1lbnRTZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9ydGFsRG9jdW1lbnRTZWN0aW9uPigpO1xuICBAT3V0cHV0KCkgb25EZWxldGU6IEV2ZW50RW1pdHRlcjxQb3J0YWxEb2N1bWVudFNlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb3J0YWxEb2N1bWVudFNlY3Rpb24+KCk7XG5cblxuICBwdWJsaWMgYnVzeSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlVXAoKSB7XG4gICAgdGhpcy5vbk1vdmVVcC5lbWl0KHRoaXMuc2VjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0QWJvdmUoKSB7XG4gICAgdGhpcy5vbkluc2VydEFib3ZlLmVtaXQodGhpcy5zZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlRG93bigpIHtcbiAgICB0aGlzLm9uTW92ZURvd24uZW1pdCh0aGlzLnNlY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGluc2VydEJlbG93KCkge1xuICAgIHRoaXMub25JbnNlcnRCZWxvdy5lbWl0KHRoaXMuc2VjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKCkge1xuICAgIHRoaXMub25EZWxldGUuZW1pdCh0aGlzLnNlY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIG1vdmVHcm91cFVwKGdyb3VwOiBQb3J0YWxEb2N1bWVudEdyb3VwKSB7XG4gICAgaWYgKCFncm91cC5zZXF1ZW5jZSkge1xuICAgICAgZ3JvdXAuc2VxdWVuY2UgPSAwO1xuICAgIH1cbiAgICBpZiAoZ3JvdXAuc2VxdWVuY2UgPiAxKSB7XG4gICAgICBsZXQgY2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlY3Rpb24pO1xuICAgICAgaWYgKCFjbG9uZS5ncm91cHMpIHtcbiAgICAgICAgY2xvbmUuZ3JvdXBzID0gW107XG4gICAgICB9XG4gICAgICBjbG9uZS5ncm91cHMuc3BsaWNlKGdyb3VwLnNlcXVlbmNlIC0gMiwgMCwgY2xvbmUuZ3JvdXBzLnNwbGljZShncm91cC5zZXF1ZW5jZSAtIDEsIDEpWzBdKTtcbiAgICAgIHRoaXMucmVzZXF1ZW5jZShjbG9uZSk7XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGVEb2N1bWVudFNlY3Rpb24oY2xvbmUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UudXBkYXRlRGNvdW1lbnRJRChjbG9uZS5kb2N1bWVudElEIHx8ICcnKTtcbiAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRmFpbGVkIHNlY3Rpb24gZ3JvdXA6ICcgKyBlcnIsICdFUlJPUicpO1xuICAgICAgfX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnRBYm92ZUdyb3VwKGdyb3VwOiBQb3J0YWxEb2N1bWVudEdyb3VwKSB7XG4gICAgaWYgKCFncm91cC5zZXF1ZW5jZSkge1xuICAgICAgZ3JvdXAuc2VxdWVuY2UgPSAxO1xuICAgIH1cbiAgICBsZXQgbmV3R3JvdXAgPSB0aGlzLm5ld0dyb3VwKGdyb3VwLnNlcXVlbmNlICAtIDEgfHwgMSk7XG4gICAgdGhpcy5pbnNlcnRHcm91cChncm91cC5zZXF1ZW5jZSAtIDEsIG5ld0dyb3VwKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlR3JvdXBEb3duKGdyb3VwOiBQb3J0YWxEb2N1bWVudEdyb3VwKSB7XG4gICAgaWYgKCFncm91cC5zZXF1ZW5jZSkge1xuICAgICAgZ3JvdXAuc2VxdWVuY2UgPSAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWN0aW9uLmdyb3VwcyAmJiBncm91cC5zZXF1ZW5jZSA8IHRoaXMuc2VjdGlvbi5ncm91cHMubGVuZ3RoKSB7XG4gICAgICBsZXQgY2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlY3Rpb24pO1xuICAgICAgaWYgKCFjbG9uZS5ncm91cHMpIHtcbiAgICAgICAgY2xvbmUuZ3JvdXBzID0gW107XG4gICAgICB9XG4gICAgICBjbG9uZS5ncm91cHMuc3BsaWNlKGdyb3VwLnNlcXVlbmNlLCAwLCBjbG9uZS5ncm91cHMuc3BsaWNlKGdyb3VwLnNlcXVlbmNlIC0gMSwgMSlbMF0pO1xuICAgICAgdGhpcy5yZXNlcXVlbmNlKGNsb25lKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZURvY3VtZW50U2VjdGlvbihjbG9uZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGVEY291bWVudElEKGNsb25lLmRvY3VtZW50SUQgfHwgJycpO1xuICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdXBkYXRpbmcgc2VjdGlvbjogJyArIGVyciwgJ0VSUk9SJyk7XG4gICAgICB9fSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluc2VydEJlbG93R3JvdXAoZ3JvdXA6IFBvcnRhbERvY3VtZW50R3JvdXApIHtcbiAgICBpZiAoIWdyb3VwLnNlcXVlbmNlKSB7XG4gICAgICBncm91cC5zZXF1ZW5jZSA9IDE7XG4gICAgfVxuICAgIGxldCBuZXdHcm91cCA9IHRoaXMubmV3R3JvdXAoZ3JvdXAuc2VxdWVuY2UgICsgMSk7XG4gICAgdGhpcy5pbnNlcnRHcm91cChncm91cC5zZXF1ZW5jZSwgbmV3R3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXdHcm91cChzZXF1ZW5jZTogbnVtYmVyKTogUG9ydGFsRG9jdW1lbnRHcm91cCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlY3Rpb25JRDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgZG9jdW1lbnRJRDogdGhpcy5zZWN0aW9uLmRvY3VtZW50SUQsXG4gICAgICBzZXF1ZW5jZTogc2VxdWVuY2UsXG4gICAgICBuYW1lOiAnR3JvdXAgJyArIHNlcXVlbmNlLFxuICAgICAgcGFydHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRvY3VtZW50SUQ6IHRoaXMuc2VjdGlvbi5kb2N1bWVudElELFxuICAgICAgICAgIG5hbWU6ICdQYXJhZ3JhcGggMScsXG4gICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdGV4dDogJydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluc2VydEdyb3VwKGluc2VydEluZGV4OiBudW1iZXIsIG5ld0dyb3VwOiBQb3J0YWxEb2N1bWVudEdyb3VwKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgbGFiZWw6ICdJbnNlcnQgR3JvdXAnLFxuICAgICAgZ3JvdXA6IG5ld0dyb3VwXG4gICAgfVxuICAgIGxldCBtb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coR3JvdXBNb2RhbENvbXBvbmVudCwge2luaXRpYWxTdGF0ZSwgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZX0pO1xuICAgICg8R3JvdXBNb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5vbkdyb3VwU2F2ZS5zdWJzY3JpYmUodXBkYXRlc2RHcm91cCA9PiB7XG4gICAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgICAgbGV0IGNsb25lID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZWN0aW9uKTtcbiAgICAgIGlmICghY2xvbmUuZ3JvdXBzKSB7XG4gICAgICAgIGNsb25lLmdyb3VwcyA9IFtdO1xuICAgICAgfVxuICAgICAgY2xvbmUuZ3JvdXBzLnNwbGljZShpbnNlcnRJbmRleCwgMCwgdXBkYXRlc2RHcm91cCk7XG4gICAgICB0aGlzLnJlc2VxdWVuY2UoY2xvbmUpO1xuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UudXBkYXRlRG9jdW1lbnRTZWN0aW9uKGNsb25lKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZURjb3VtZW50SUQoY2xvbmUuZG9jdW1lbnRJRCB8fCAnJyk7XG4gICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdXBkYXRpbmcgc2VjdGlvbjogJyArIGVyciwgJ0VSUk9SJyk7XG4gICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xuICAgICAgfX0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNlcXVlbmNlKHNlY3Rpb246IFBvcnRhbERvY3VtZW50U2VjdGlvbikge1xuICAgIGxldCBzZXF1ZW5jZSA9IDE7XG4gICAgaWYgKHNlY3Rpb24uZ3JvdXBzKSB7XG4gICAgICBzZWN0aW9uLmdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgZ3JvdXAuc2VxdWVuY2UgPSBzZXF1ZW5jZSsrO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUdyb3VwKGdyb3VwOiBQb3J0YWxEb2N1bWVudEdyb3VwKSB7XG4gICAgbGV0IGJvZHlUZXh0ID0gJ0RlbGV0ZSBHcm91cCAnICsgZ3JvdXAubmFtZSArICc/JztcbiAgICBjb25zdCBldmVudE92ZXJyaWRlOiBEb2N1bWVudEV2ZW50IHwgdW5kZWZpbmVkID0gdGhpcy5kb2N1bWVudFNlcnZpY2UuaXNPdmVycmlkZGVuRXZlbnQoeyBldmVudFR5cGU6IERvY3VtZW50RXZlbnRUeXBlLkRlbGV0ZSwgZW50aXR5VHlwZTogRG9jdW1lbnRFdmVudEVudGl0eVR5cGUuR3JvdXAgfSk7XG4gICAgaWYgKGV2ZW50T3ZlcnJpZGUgJiYgZXZlbnRPdmVycmlkZS5jb25maXJtYXRpb25NZXNzYWdlKSB7XG4gICAgICBib2R5VGV4dCA9IGV2ZW50T3ZlcnJpZGUuY29uZmlybWF0aW9uTWVzc2FnZTtcbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgaGVhZGVyVGV4dDogJ0RlbGV0ZSBHcm91cCcsXG4gICAgICBib2R5VGV4dDogYm9keVRleHQsXG4gICAgICBjb25maXJtQnRuTGFiZWw6ICdZZXMnLFxuICAgICAgY2FuY2VsQnRuTGFiZWw6ICdObydcbiAgICB9XG4gICAgbGV0IG1vZGFsID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgeyBpbml0aWFsU3RhdGUsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jb25maXJtQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICAgIGxldCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc2VjdGlvbik7XG4gICAgICBpZiAoIWNsb25lLmdyb3Vwcykge1xuICAgICAgICBjbG9uZS5ncm91cHMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNsb25lLmdyb3VwcyA9IGNsb25lLmdyb3Vwcy5maWx0ZXIoa2VlcCA9PiB7XG4gICAgICAgIGtlZXAuaWQgIT0gZ3JvdXAuaWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVzZXF1ZW5jZShjbG9uZSk7XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGVEb2N1bWVudFNlY3Rpb24oY2xvbmUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5kZWxldGVEb2N1bWVudEdyb3VwKGdyb3VwKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGVEY291bWVudElEKGNsb25lLmRvY3VtZW50SUQgfHwgJycpO1xuICAgICAgICAgICAgICB0aGlzLmJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRmFpbGVkIGRlbGV0aW5nIGdyb3VwOiAnICsgZXJyLCAnRVJST1InKTtcbiAgICAgICAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdXBkYXRpbmcgc2VjdGlvbjogJyArIGVyciwgJ0VSUk9SJyk7XG4gICAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRTZWN0aW9uKHNlY3Rpb246IFBvcnRhbERvY3VtZW50U2VjdGlvbikge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGxhYmVsOiAnRWRpdCBTZWN0aW9uIEF0dHJpYnV0ZXMnLFxuICAgICAgc2VjdGlvbjogc2VjdGlvblxuICAgIH1cbiAgICBsZXQgbW9kYWwgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KFNlY3Rpb25Nb2RhbENvbXBvbmVudCwge2luaXRpYWxTdGF0ZSwgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZX0pO1xuICAgICg8U2VjdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLm9uU2VjdGlvblNhdmUuc3Vic2NyaWJlKHVwZGF0ZWRTZWN0aW9uID0+IHtcbiAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51cGRhdGVEb2N1bWVudFNlY3Rpb24odXBkYXRlZFNlY3Rpb24pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB1cGRhdGluZyBzZWN0aW9uOiAnICsgZXJyLCAnRVJST1InKTtcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzZWN0aW9uXCIgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLmdyb3VwcyAmJiBzZWN0aW9uLmdyb3Vwcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnIG9mIHNlY3Rpb24uZ3JvdXBzXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvZXBhLWRvY3VtZW50LWdyb3VwIFtncm91cF09XCJnXCIgKG9uTW92ZVVwKT1cIm1vdmVHcm91cFVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5zZXJ0QWJvdmUpPVwiaW5zZXJ0QWJvdmVHcm91cCgkZXZlbnQpXCIgKG9uTW92ZURvd24pPVwibW92ZUdyb3VwRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkluc2VydEJlbG93KT1cImluc2VydEJlbG93R3JvdXAoJGV2ZW50KVwiIChvbkRlbGV0ZSk9XCJkZWxldGVHcm91cCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvb2VwYS1kb2N1bWVudC1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==