@magic-xpa/angular 4.1100.0-dev4110.99 → 4.1101.0-dev4111.271

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 (170) hide show
  1. package/README.md +5 -5
  2. package/{esm2020 → esm2022}/index.mjs +59 -59
  3. package/{esm2020 → esm2022}/magic-xpa-angular.mjs +1 -1
  4. package/esm2022/src/controls.metadata.model.mjs +183 -0
  5. package/{esm2020 → esm2022}/src/interfaces/sub-form-definition.iterface.mjs +1 -1
  6. package/{esm2020 → esm2022}/src/magic.core.module.mjs +159 -160
  7. package/{esm2020 → esm2022}/src/services/ISubformMagicService.mjs +1 -1
  8. package/esm2022/src/services/OverlayWindowService.mjs +245 -0
  9. package/esm2022/src/services/StylesMapManager.mjs +28 -0
  10. package/esm2022/src/services/accessor.magic.service.mjs +358 -0
  11. package/esm2022/src/services/commands-collector.magic.service.mjs +47 -0
  12. package/esm2022/src/services/component-list.magic.service.mjs +45 -0
  13. package/{esm2020 → esm2022}/src/services/confirmation.components.magic.provider.mjs +21 -21
  14. package/esm2022/src/services/engine.magic.service.mjs +80 -0
  15. package/{esm2020 → esm2022}/src/services/exit.magic.service.mjs +13 -13
  16. package/esm2022/src/services/magic-color.service.mjs +101 -0
  17. package/{esm2020 → esm2022}/src/services/magic.lazy.loader.service.mjs +16 -16
  18. package/{esm2020 → esm2022}/src/services/magic.providers.mjs +24 -24
  19. package/esm2022/src/services/magic.services.mjs +36 -0
  20. package/esm2022/src/services/mg-date-adapter.mjs +108 -0
  21. package/{esm2020 → esm2022}/src/services/overlay.conainer.magic.provider.mjs +14 -14
  22. package/esm2022/src/services/router-commands.magic.service.mjs +31 -0
  23. package/esm2022/src/services/subform.magic.service.mjs +195 -0
  24. package/esm2022/src/services/table.magic.service.mjs +81 -0
  25. package/esm2022/src/services/task.magics.service.mjs +648 -0
  26. package/esm2022/src/services/title.magic.service.mjs +19 -0
  27. package/esm2022/src/ui/GuiInteractiveExecutor.mjs +114 -0
  28. package/esm2022/src/ui/components/base-magic-alert.component.mjs +24 -0
  29. package/esm2022/src/ui/components/base-magic-confirm.component.mjs +24 -0
  30. package/esm2022/src/ui/components/magic-alert.component.mjs +36 -0
  31. package/esm2022/src/ui/components/magic-confirmation-box.component.mjs +42 -0
  32. package/esm2022/src/ui/directives/NonMagicControlDirective.mjs +58 -0
  33. package/esm2022/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +29 -0
  34. package/esm2022/src/ui/directives/magic/checkbox.magic.directive.mjs +100 -0
  35. package/esm2022/src/ui/directives/magic/combobox.magic.directive.mjs +37 -0
  36. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +27 -0
  37. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +85 -0
  38. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +32 -0
  39. package/esm2022/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +28 -0
  40. package/{esm2020 → esm2022}/src/ui/directives/magic/nocontrol.magic.directive.mjs +193 -193
  41. package/esm2022/src/ui/directives/magic/row.magic.directive.mjs +62 -0
  42. package/esm2022/src/ui/directives/magic-focus.directive.mjs +20 -0
  43. package/esm2022/src/ui/directives/magic.directive.mjs +232 -0
  44. package/esm2022/src/ui/directives/magicViewContainerRef.directive.mjs +20 -0
  45. package/esm2022/src/ui/directives/mgformat.magic.directive.mjs +579 -0
  46. package/esm2022/src/ui/directives/range-validator.magic.directive.mjs +60 -0
  47. package/{esm2020 → esm2022}/src/ui/magic-confirmationBox.mjs +41 -41
  48. package/{esm2020 → esm2022}/src/ui/magic-modal/base-magic-overlay-container.mjs +22 -22
  49. package/esm2022/src/ui/magic-modal/magic-modal-form.mjs +6 -0
  50. package/{esm2020 → esm2022}/src/ui/magic-modal/magic-modal-interface.mjs +1 -1
  51. package/esm2022/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +125 -0
  52. package/esm2022/src/ui/magic-modal/magic-overlay-container.mjs +162 -0
  53. package/esm2022/src/ui/magic-root.component.mjs +236 -0
  54. package/esm2022/src/ui/mgerror.magic.component.mjs +125 -0
  55. package/esm2022/src/ui/pipes/date.magic.pipe.mjs +106 -0
  56. package/esm2022/src/ui/pipes/time.magic.pipe.mjs +52 -0
  57. package/esm2022/src/ui/pipes/time24.magic.pipe.mjs +35 -0
  58. package/esm2022/src/ui/router-container.magic.component.mjs +115 -0
  59. package/{esm2020 → esm2022}/src/ui/subform.magic.component.mjs +50 -46
  60. package/esm2022/src/ui/task-base.magic.component.mjs +91 -0
  61. package/{esm2020 → esm2022}/src/ui/utils.mjs +53 -53
  62. package/{fesm2020 → fesm2022}/magic-xpa-angular.mjs +4933 -4495
  63. package/fesm2022/magic-xpa-angular.mjs.map +1 -0
  64. package/index.d.ts +58 -58
  65. package/package.json +10 -16
  66. package/src/controls.metadata.model.d.ts +62 -62
  67. package/src/interfaces/sub-form-definition.iterface.d.ts +12 -12
  68. package/src/magic.core.module.d.ts +41 -41
  69. package/src/services/ISubformMagicService.d.ts +4 -4
  70. package/src/services/OverlayWindowService.d.ts +30 -31
  71. package/src/services/StylesMapManager.d.ts +5 -5
  72. package/src/services/accessor.magic.service.d.ts +69 -69
  73. package/src/services/commands-collector.magic.service.d.ts +15 -15
  74. package/src/services/component-list.magic.service.d.ts +23 -23
  75. package/src/services/confirmation.components.magic.provider.d.ts +8 -8
  76. package/src/services/engine.magic.service.d.ts +27 -27
  77. package/src/services/exit.magic.service.d.ts +6 -6
  78. package/src/services/magic-color.service.d.ts +19 -19
  79. package/src/services/magic.lazy.loader.service.d.ts +6 -6
  80. package/src/services/magic.providers.d.ts +107 -107
  81. package/src/services/magic.services.d.ts +16 -16
  82. package/src/services/mg-date-adapter.d.ts +38 -40
  83. package/src/services/overlay.conainer.magic.provider.d.ts +7 -7
  84. package/src/services/router-commands.magic.service.d.ts +17 -17
  85. package/src/services/subform.magic.service.d.ts +43 -43
  86. package/src/services/table.magic.service.d.ts +30 -30
  87. package/src/services/task.magics.service.d.ts +100 -100
  88. package/src/services/title.magic.service.d.ts +9 -9
  89. package/src/ui/GuiInteractiveExecutor.d.ts +22 -22
  90. package/src/ui/components/base-magic-alert.component.d.ts +10 -10
  91. package/src/ui/components/base-magic-confirm.component.d.ts +10 -10
  92. package/src/ui/components/magic-alert.component.d.ts +6 -6
  93. package/src/ui/components/magic-confirmation-box.component.d.ts +6 -6
  94. package/src/ui/directives/NonMagicControlDirective.d.ts +26 -26
  95. package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +9 -9
  96. package/src/ui/directives/magic/checkbox.magic.directive.d.ts +22 -9
  97. package/src/ui/directives/magic/combobox.magic.directive.d.ts +10 -10
  98. package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +7 -7
  99. package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +23 -17
  100. package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +7 -7
  101. package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +9 -9
  102. package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +18 -18
  103. package/src/ui/directives/magic/row.magic.directive.d.ts +17 -17
  104. package/src/ui/directives/magic-focus.directive.d.ts +9 -9
  105. package/src/ui/directives/magic.directive.d.ts +45 -44
  106. package/src/ui/directives/magicViewContainerRef.directive.d.ts +8 -8
  107. package/src/ui/directives/mgformat.magic.directive.d.ts +38 -31
  108. package/src/ui/directives/range-validator.magic.directive.d.ts +17 -17
  109. package/src/ui/magic-confirmationBox.d.ts +6 -6
  110. package/src/ui/magic-modal/base-magic-overlay-container.d.ts +5 -5
  111. package/src/ui/magic-modal/magic-modal-form.d.ts +5 -5
  112. package/src/ui/magic-modal/magic-modal-interface.d.ts +10 -10
  113. package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +30 -31
  114. package/src/ui/magic-modal/magic-overlay-container.d.ts +24 -25
  115. package/src/ui/magic-root.component.d.ts +43 -40
  116. package/src/ui/mgerror.magic.component.d.ts +20 -20
  117. package/src/ui/pipes/date.magic.pipe.d.ts +17 -17
  118. package/src/ui/pipes/time.magic.pipe.d.ts +11 -11
  119. package/src/ui/pipes/time24.magic.pipe.d.ts +10 -10
  120. package/src/ui/router-container.magic.component.d.ts +29 -30
  121. package/src/ui/subform.magic.component.d.ts +16 -16
  122. package/src/ui/task-base.magic.component.d.ts +34 -34
  123. package/src/ui/utils.d.ts +9 -9
  124. package/esm2020/src/controls.metadata.model.mjs +0 -180
  125. package/esm2020/src/services/OverlayWindowService.mjs +0 -236
  126. package/esm2020/src/services/StylesMapManager.mjs +0 -28
  127. package/esm2020/src/services/accessor.magic.service.mjs +0 -356
  128. package/esm2020/src/services/commands-collector.magic.service.mjs +0 -46
  129. package/esm2020/src/services/component-list.magic.service.mjs +0 -46
  130. package/esm2020/src/services/engine.magic.service.mjs +0 -82
  131. package/esm2020/src/services/magic-color.service.mjs +0 -99
  132. package/esm2020/src/services/magic.services.mjs +0 -31
  133. package/esm2020/src/services/mg-date-adapter.mjs +0 -109
  134. package/esm2020/src/services/router-commands.magic.service.mjs +0 -28
  135. package/esm2020/src/services/subform.magic.service.mjs +0 -184
  136. package/esm2020/src/services/table.magic.service.mjs +0 -77
  137. package/esm2020/src/services/task.magics.service.mjs +0 -624
  138. package/esm2020/src/services/title.magic.service.mjs +0 -18
  139. package/esm2020/src/ui/GuiInteractiveExecutor.mjs +0 -105
  140. package/esm2020/src/ui/components/base-magic-alert.component.mjs +0 -23
  141. package/esm2020/src/ui/components/base-magic-confirm.component.mjs +0 -23
  142. package/esm2020/src/ui/components/magic-alert.component.mjs +0 -35
  143. package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +0 -41
  144. package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +0 -49
  145. package/esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +0 -28
  146. package/esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs +0 -28
  147. package/esm2020/src/ui/directives/magic/combobox.magic.directive.mjs +0 -36
  148. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +0 -27
  149. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +0 -52
  150. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +0 -32
  151. package/esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +0 -27
  152. package/esm2020/src/ui/directives/magic/row.magic.directive.mjs +0 -58
  153. package/esm2020/src/ui/directives/magic-focus.directive.mjs +0 -19
  154. package/esm2020/src/ui/directives/magic.directive.mjs +0 -215
  155. package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +0 -19
  156. package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +0 -408
  157. package/esm2020/src/ui/directives/range-validator.magic.directive.mjs +0 -58
  158. package/esm2020/src/ui/magic-modal/magic-modal-form.mjs +0 -8
  159. package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +0 -121
  160. package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +0 -159
  161. package/esm2020/src/ui/magic-root.component.mjs +0 -203
  162. package/esm2020/src/ui/mgerror.magic.component.mjs +0 -119
  163. package/esm2020/src/ui/pipes/date.magic.pipe.mjs +0 -105
  164. package/esm2020/src/ui/pipes/time.magic.pipe.mjs +0 -51
  165. package/esm2020/src/ui/pipes/time24.magic.pipe.mjs +0 -34
  166. package/esm2020/src/ui/router-container.magic.component.mjs +0 -108
  167. package/esm2020/src/ui/task-base.magic.component.mjs +0 -86
  168. package/fesm2015/magic-xpa-angular.mjs +0 -4865
  169. package/fesm2015/magic-xpa-angular.mjs.map +0 -1
  170. package/fesm2020/magic-xpa-angular.mjs.map +0 -1
@@ -1,408 +0,0 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import { TaskMagicService } from '../../services/task.magics.service';
3
- import { StringBuilder, RefParam } from '@magic-xpa/mscorelib';
4
- import { PICInterface, StorageAttribute } from '@magic-xpa/utils';
5
- import { MagicDirective } from './magic.directive';
6
- import { Validators } from '@angular/forms';
7
- import { MgDateFormatter } from '../pipes/date.magic.pipe';
8
- import { isUndefined } from '@magic-xpa/mscorelib';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./magic.directive";
11
- import * as i2 from "../../services/task.magics.service";
12
- export class MgformatMagicDirective {
13
- constructor(magicDir, _task) {
14
- this.magicDir = magicDir;
15
- this._task = _task;
16
- this.datePasteFlag = false;
17
- }
18
- ngAfterViewInit() {
19
- let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
20
- if (control != null && this._task.mgInputDateFormat == null) {
21
- let pic = this._task.GetControlPictureMask(this.magicDir.id);
22
- if (pic.getAttr() == StorageAttribute.DATE) {
23
- this.formatDate(pic);
24
- }
25
- }
26
- }
27
- onFocusEvent($event) {
28
- this.calculatePattern();
29
- }
30
- onPaste(event) {
31
- this.datePasteFlag = true;
32
- }
33
- onInputEvent(event) {
34
- let attr = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;
35
- if (attr == StorageAttribute.DATE) {
36
- if (!this.datePasteFlag)
37
- this.dateMasking(event);
38
- this.datePasteFlag = false;
39
- }
40
- this.calculatePattern();
41
- }
42
- dateMasking(event) {
43
- const input = event.target;
44
- let cursorPos = event.target.selectionStart;
45
- const separator = this._task.mgInputDateFormat.includes('/') ? '/' : '-';
46
- if (cursorPos >= input.value.length) {
47
- const value = input.value.replace(/[^a-zA-Z0-9/-]/g, '');
48
- if (this._task.mgInputDateFormat == "dd/MM/yyyy" || this._task.mgInputDateFormat == "MM/dd/yyyy" || this._task.mgInputDateFormat == "dd-MM-yyyy" || this._task.mgInputDateFormat == "MM-dd-yyyy") {
49
- if (value.length == 1 && value[0] == separator)
50
- input.value = '01' + separator;
51
- else if (value.length == 2 && value[1] == separator)
52
- input.value = 0 + value;
53
- else if (value.length == 3 && value[2] != separator)
54
- input.value = value.slice(0, 2) + separator + value.slice(2);
55
- else if (value.length == 4 && value[3] == separator)
56
- input.value = value.slice(0, 3) + '01' + value.slice(3);
57
- else if (value.length == 5 && value[4] == separator)
58
- input.value = value.slice(0, 3) + '0' + value.slice(3);
59
- else if (value.length == 6 && value[5] != separator)
60
- input.value = value.slice(0, 5) + separator + value.slice(5);
61
- else if (value.length >= 10)
62
- input.value = value.slice(0, 10);
63
- }
64
- else if (this._task.mgInputDateFormat == "yyyy/MM/dd" || this._task.mgInputDateFormat == "yyyy/dd/MM" || this._task.mgInputDateFormat == "yyyy-MM-dd" || this._task.mgInputDateFormat == "yyyy-dd-MM") {
65
- if (value.length == 1 && value[0] == separator)
66
- input.value = '0000' + separator;
67
- else if (value.length == 2 && value[1] == separator)
68
- input.value = '000' + value.slice(0);
69
- else if (value.length == 3 && value[2] == separator)
70
- input.value = '00' + value.slice(0);
71
- else if (value.length == 4 && value[3] == separator)
72
- input.value = '0' + value.slice(0);
73
- else if (value.length == 5 && value[4] != separator)
74
- input.value = value.slice(0, 4) + separator + value.slice(4);
75
- else if (value.length == 6 && value[5] == separator)
76
- input.value = value.slice(0, 5) + '01' + value.slice(5);
77
- else if (value.length == 7 && value[6] == separator)
78
- input.value = value.slice(0, 5) + '0' + value.slice(5);
79
- else if (value.length == 8 && value[7] != separator)
80
- input.value = value.slice(0, 7) + separator + value.slice(7);
81
- else if (value.length >= 10)
82
- input.value = value.slice(0, 10);
83
- }
84
- else if (this._task.mgInputDateFormat == "dd/MM/yy" || this._task.mgInputDateFormat == "yy/MM/dd" || this._task.mgInputDateFormat == "MM/dd/yy" || this._task.mgInputDateFormat == "yy/dd/MM" || this._task.mgInputDateFormat == "dd-MM-yy" || this._task.mgInputDateFormat == "yy-MM-dd" || this._task.mgInputDateFormat == "MM-dd-yy" || this._task.mgInputDateFormat == "yy-dd-MM") {
85
- if (value.length == 1 && value[0] == separator)
86
- input.value = '01' + separator;
87
- else if (value.length == 2 && value[1] == separator)
88
- input.value = 0 + value;
89
- else if (value.length == 3 && value[2] != separator)
90
- input.value = value.slice(0, 2) + separator + value.slice(2);
91
- else if (value.length == 4 && value[3] == separator)
92
- input.value = value.slice(0, 3) + '01' + value.slice(3);
93
- else if (value.length == 5 && value[4] == separator)
94
- input.value = value.slice(0, 3) + '0' + value.slice(3);
95
- else if (value.length == 6 && value[5] != separator)
96
- input.value = value.slice(0, 5) + separator + value.slice(5);
97
- else if (value.length >= 8)
98
- input.value = value.slice(0, 8);
99
- }
100
- else if (this._task.mgInputDateFormat == "dd/MMM/yy" || this._task.mgInputDateFormat == "dd-MMM-yy") {
101
- if (value.length == 1 && value[0] == separator)
102
- input.value = '01' + separator;
103
- else if (value.length == 2 && value[1] == separator)
104
- input.value = 0 + value;
105
- else if (value.length == 3 && value[2] != separator)
106
- input.value = value.slice(0, 2) + separator + value.slice(2);
107
- else if (value.length == 7 && value[6] != separator)
108
- input.value = value.slice(0, 6) + separator + value.slice(6);
109
- else if (value.length >= 9)
110
- input.value = value.slice(0, 9);
111
- }
112
- else if (this._task.mgInputDateFormat == "dd/MMM/yyyy" || this._task.mgInputDateFormat == "dd-MMM-yyyy") {
113
- if (value.length == 1 && value[0] == separator)
114
- input.value = '01' + separator;
115
- else if (value.length == 2 && value[1] == separator)
116
- input.value = 0 + value;
117
- else if (value.length == 3 && value[2] != separator)
118
- input.value = value.slice(0, 2) + separator + value.slice(2);
119
- else if (value.length == 7 && value[6] != separator)
120
- input.value = value.slice(0, 6) + separator + value.slice(6);
121
- else if (value.length >= 11)
122
- input.value = value.slice(0, 11);
123
- }
124
- else if (this._task.mgInputDateFormat == "yy/dd/MMM" || this._task.mgInputDateFormat == "yy-dd-MMM") {
125
- if (value.length == 1 && value[0] == separator)
126
- input.value = '00' + separator;
127
- else if (value.length == 2 && value[1] == separator)
128
- input.value = 0 + value;
129
- else if (value.length == 3 && value[2] != separator)
130
- input.value = value.slice(0, 2) + separator + value.slice(2);
131
- else if (value.length == 4 && value[3] == separator)
132
- input.value = value.slice(0, 3) + '01' + value.slice(3);
133
- else if (value.length == 5 && value[4] == separator)
134
- input.value = value.slice(0, 3) + '0' + value.slice(3);
135
- else if (value.length == 6 && value[5] != separator)
136
- input.value = value.slice(0, 5) + separator + value.slice(5);
137
- else if (value.length >= 9)
138
- input.value = value.slice(0, 9);
139
- }
140
- else if (this._task.mgInputDateFormat == "yyyy/dd/MMM" || this._task.mgInputDateFormat == "yyyy-dd-MMM") {
141
- if (value.length == 1 && value[0] == separator)
142
- input.value = '0000' + separator;
143
- else if (value.length == 2 && value[1] == separator)
144
- input.value = '000' + value.slice(0);
145
- else if (value.length == 3 && value[2] == separator)
146
- input.value = '00' + value.slice(0);
147
- else if (value.length == 4 && value[3] == separator)
148
- input.value = '0' + value.slice(0);
149
- else if (value.length == 5 && value[4] != separator)
150
- input.value = value.slice(0, 4) + separator + value.slice(4);
151
- else if (value.length == 6 && value[5] == separator)
152
- input.value = value.slice(0, 5) + '01' + value.slice(5);
153
- else if (value.length == 7 && value[6] == separator)
154
- input.value = value.slice(0, 5) + '0' + value.slice(5);
155
- else if (value.length == 8 && value[7] != separator)
156
- input.value = value.slice(0, 7) + separator + value.slice(7);
157
- else if (value.length >= 11)
158
- input.value = value.slice(0, 11);
159
- }
160
- else if (this._task.mgInputDateFormat == "MMM/dd/yy" || this._task.mgInputDateFormat == "MMM-dd-yy") {
161
- if (value.length == 4 && value[3] != separator)
162
- input.value = value.slice(0, 3) + separator + value.slice(3);
163
- else if (value.length == 5 && value[4] == separator)
164
- input.value = value.slice(0, 4) + '01' + value.slice(4);
165
- else if (value.length == 6 && value[5] == separator)
166
- input.value = value.slice(0, 4) + '0' + value.slice(4);
167
- else if (value.length == 7 && value[6] != separator)
168
- input.value = value.slice(0, 6) + separator + value.slice(6);
169
- else if (value.length >= 9)
170
- input.value = value.slice(0, 9);
171
- }
172
- else if (this._task.mgInputDateFormat == "MMM/dd/yyyy" || this._task.mgInputDateFormat == "MMM-dd-yyyy") {
173
- if (value.length == 4 && value[3] != separator)
174
- input.value = value.slice(0, 3) + separator + value.slice(3);
175
- else if (value.length == 5 && value[4] == separator)
176
- input.value = value.slice(0, 4) + '01' + value.slice(4);
177
- else if (value.length == 6 && value[5] == separator)
178
- input.value = value.slice(0, 4) + '0' + value.slice(4);
179
- else if (value.length == 7 && value[6] != separator)
180
- input.value = value.slice(0, 6) + separator + value.slice(6);
181
- else if (value.length >= 11)
182
- input.value = value.slice(0, 11);
183
- }
184
- }
185
- if (cursorPos < input.value.length && input.value.length > this._task.mgInputDateFormat.length) {
186
- let inputDate = input.value;
187
- let start = input.selectionStart - 1;
188
- let end = input.selectionEnd - 1;
189
- let indexToRemove = input.selectionStart - 1;
190
- input.value = inputDate.slice(0, indexToRemove) + inputDate.slice(indexToRemove + 1);
191
- input.setSelectionRange(start, end);
192
- }
193
- }
194
- onChangeEvent($event) {
195
- let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
196
- let attr = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;
197
- switch (attr) {
198
- case StorageAttribute.ALPHA:
199
- case StorageAttribute.UNICODE:
200
- this.formatAlphaUnicode(control);
201
- break;
202
- case StorageAttribute.BOOLEAN:
203
- this.formatBoolean(control);
204
- break;
205
- }
206
- }
207
- calculatePattern() {
208
- let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
209
- if (control != null) {
210
- let attr = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;
211
- if (attr == StorageAttribute.NUMERIC || attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {
212
- let pic = this._task.GetControlPictureMask(this.magicDir.id);
213
- if (this.isPatternGenerationNeeded(attr, pic)) {
214
- let pattern = this.generatePattern(attr, pic);
215
- if (control.validator == null)
216
- control.setValidators(Validators.pattern(pattern));
217
- else
218
- control.setValidators([control.validator, Validators.pattern(pattern)]);
219
- }
220
- else {
221
- if (attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {
222
- if (control.validator == null)
223
- control.setValidators(Validators.maxLength(pic.getMaskLength()));
224
- else {
225
- if (pic.isFormatExp()) {
226
- control.setValidators(Validators.maxLength(pic.getMaskLength()));
227
- if (isUndefined(this.magicDir.rowId))
228
- this.magicDir.rowId = '0';
229
- control.setValidators([control.validator, this._task.customValidator(this.magicDir.rowId, this.magicDir.id)]);
230
- }
231
- else
232
- control.setValidators([control.validator, Validators.maxLength(pic.getMaskLength())]);
233
- }
234
- control.updateValueAndValidity();
235
- }
236
- }
237
- }
238
- }
239
- }
240
- formatDate(pic) {
241
- let mgDateFormatter = new MgDateFormatter();
242
- this._task.mgInputDateFormat = mgDateFormatter.ConvertMgDateFormatToAngular(pic.getMask());
243
- }
244
- formatAlphaUnicode(control) {
245
- let value = control.value;
246
- if (value !== null && value.length > 0) {
247
- const newValue = this._task.GetRangedValue(this.magicDir.id, value);
248
- if (newValue != null)
249
- value = newValue;
250
- let pic = this._task.GetControlPictureMask(this.magicDir.id);
251
- let mask = pic.getMask();
252
- let valueStr = new StringBuilder();
253
- for (let i = 0; i < value.length; i++) {
254
- switch (mask.charCodeAt(i)) {
255
- case PICInterface.PIC_U:
256
- valueStr.Append(value.charAt(i).toUpperCase());
257
- break;
258
- case PICInterface.PIC_L:
259
- valueStr.Append(value.charAt(i).toLowerCase());
260
- break;
261
- default:
262
- valueStr.Append(value.charAt(i));
263
- break;
264
- }
265
- }
266
- control.setValue(valueStr.ToString());
267
- }
268
- }
269
- formatBoolean(control) {
270
- let value = control.value;
271
- if (value !== null && value.length > 0) {
272
- let newValue = this._task.GetRangedValue(this.magicDir.id, value);
273
- if (newValue.toUpperCase().startsWith(value.toUpperCase())) {
274
- control.setValue(newValue);
275
- }
276
- else {
277
- control.setValue(value);
278
- }
279
- }
280
- }
281
- generatePattern(attribute, pic) {
282
- let pattern = '';
283
- switch (attribute) {
284
- case StorageAttribute.NUMERIC:
285
- pattern = this.generatePatternForNumber(pic);
286
- break;
287
- case StorageAttribute.ALPHA:
288
- case StorageAttribute.UNICODE:
289
- pattern = this.generatePatternForAlpha(pic);
290
- break;
291
- }
292
- return pattern;
293
- }
294
- generatePatternForNumber(pic) {
295
- let patternStr = new StringBuilder();
296
- patternStr.Append('^');
297
- if (pic.isNegative())
298
- patternStr.Append('-?');
299
- if (pic.getWholes())
300
- patternStr.AppendFormat('\\d{{0},{1}}', 0, pic.getWholes());
301
- if (pic.getDec())
302
- patternStr.AppendFormat('(\\.\\d{1,{0}})?', pic.getDec());
303
- patternStr.Append('$');
304
- return patternStr.ToString();
305
- }
306
- isPatternGenerationNeeded(attr, pic) {
307
- switch (attr) {
308
- case StorageAttribute.NUMERIC:
309
- return true;
310
- case StorageAttribute.ALPHA:
311
- case StorageAttribute.UNICODE:
312
- return (pic.getMaskChars() > 0) ? true : false;
313
- }
314
- }
315
- generatePatternForAlpha(pic) {
316
- let cnt = 0;
317
- let inputAllChars = false;
318
- let closeSet = false;
319
- let mask = pic.getMask();
320
- let pattern = new StringBuilder();
321
- pattern.Append('^');
322
- for (let i = 0; i < mask.length;) {
323
- if (inputAllChars && (mask.charCodeAt(i) == PICInterface.PIC_N || mask.charCodeAt(i) == PICInterface.PIC_U || mask.charCodeAt(i) == PICInterface.PIC_L
324
- || mask.charCodeAt(i) == PICInterface.PIC_X)) {
325
- pattern.Append('(');
326
- closeSet = true;
327
- inputAllChars = false;
328
- }
329
- cnt = 0;
330
- switch (mask.charCodeAt(i)) {
331
- case PICInterface.PIC_U:
332
- case PICInterface.PIC_X:
333
- case PICInterface.PIC_L:
334
- {
335
- pattern.Append('.');
336
- let inputAllCharsRef = new RefParam(false);
337
- let dirs = PICInterface.PIC_U.toString();
338
- dirs += PICInterface.PIC_L.toString();
339
- dirs += PICInterface.PIC_X.toString();
340
- cnt = this.getDirectiveCount(mask, i, dirs, inputAllCharsRef);
341
- inputAllChars = inputAllCharsRef.value;
342
- i += cnt;
343
- }
344
- break;
345
- case PICInterface.PIC_N:
346
- {
347
- pattern.Append('\\d');
348
- let inputAllCharsRef = new RefParam(false);
349
- cnt = this.getDirectiveCount(mask, i, PICInterface.PIC_L.toString(), inputAllCharsRef);
350
- inputAllChars = inputAllCharsRef.value;
351
- i += cnt;
352
- }
353
- break;
354
- default:
355
- pattern.Append(mask[i]);
356
- i++;
357
- break;
358
- }
359
- if (cnt > 0)
360
- pattern.AppendFormat('{{0},{1}}', inputAllChars ? cnt : 0, cnt);
361
- if (closeSet)
362
- pattern.Append(')');
363
- closeSet = false;
364
- }
365
- pattern.Append('$');
366
- return pattern.ToString();
367
- }
368
- getDirectiveCount(mask, idx, pattern, changeInPattern) {
369
- changeInPattern.value = false;
370
- let patternCount = 0;
371
- while (idx < mask.length && this.IsPatternMatches(mask.charCodeAt(idx).toString(), pattern)) {
372
- patternCount++;
373
- idx++;
374
- }
375
- if (idx < mask.length)
376
- changeInPattern.value = true;
377
- return patternCount;
378
- }
379
- IsPatternMatches(mask, pattern) {
380
- for (let i = 0; i < pattern.length; i++)
381
- if (mask == pattern[i])
382
- return true;
383
- return false;
384
- }
385
- }
386
- MgformatMagicDirective.ɵfac = function MgformatMagicDirective_Factory(t) { return new (t || MgformatMagicDirective)(i0.ɵɵdirectiveInject(i1.MagicDirective), i0.ɵɵdirectiveInject(i2.TaskMagicService)); };
387
- MgformatMagicDirective.ɵdir = i0.ɵɵdefineDirective({ type: MgformatMagicDirective, selectors: [["", "mgFormat", ""]], hostBindings: function MgformatMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
388
- i0.ɵɵlistener("focus", function MgformatMagicDirective_focus_HostBindingHandler($event) { return ctx.onFocusEvent($event); })("paste", function MgformatMagicDirective_paste_HostBindingHandler($event) { return ctx.onPaste($event); })("input", function MgformatMagicDirective_input_HostBindingHandler($event) { return ctx.onInputEvent($event); })("change", function MgformatMagicDirective_change_HostBindingHandler($event) { return ctx.onChangeEvent($event); });
389
- } } });
390
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgformatMagicDirective, [{
391
- type: Directive,
392
- args: [{
393
- selector: '[mgFormat]'
394
- }]
395
- }], function () { return [{ type: i1.MagicDirective }, { type: i2.TaskMagicService }]; }, { onFocusEvent: [{
396
- type: HostListener,
397
- args: ['focus', ['$event']]
398
- }], onPaste: [{
399
- type: HostListener,
400
- args: ['paste', ['$event']]
401
- }], onInputEvent: [{
402
- type: HostListener,
403
- args: ['input', ['$event']]
404
- }], onChangeEvent: [{
405
- type: HostListener,
406
- args: ['change', ['$event']]
407
- }] }); })();
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWdmb3JtYXQubWFnaWMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9tZ2Zvcm1hdC5tYWdpYy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBa0IsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVVqRCxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQ1ksUUFBd0IsRUFDeEIsS0FBdUI7UUFEdkIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFQbkMsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFTM0IsQ0FBQztJQUVMLGVBQWU7UUFDYixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRSxDQUFDO1FBRWhGLElBQUcsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElB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Q0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbEMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDakMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDaEMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDckQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDcEQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFFcEM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFVBQVUsRUFBRTtnQkFDdFgsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDO3FCQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO29CQUNqRCxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7cUJBQ3JCLElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2pELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3JELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3BELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO29CQUN2QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFD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LENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDO3FCQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO29CQUNqRCxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7cUJBQ3JCLElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2pELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3JELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3BELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQ2hELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzFELElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO29CQUN2QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBRW5DO2lCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBRyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxhQUFhLEVBQUc7Z0JBQ3pHLElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7b0JBQzNDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztxQkFDOUIsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbEMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDakMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDaEMsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDckQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDcEQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFFcEM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLFdBQVcsRUFBRztnQkFDckcsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDcEQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbkQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDekQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQ3ZCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFFbkM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFHLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsRUFBRztnQkFDekcsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDcEQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbkQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztvQkFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDekQsSUFBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFD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QVk7a0JBRGxCLFlBQVk7bUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBbUwxQixhQUFhO2tCQURuQixZQUFZO21CQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBIb3N0TGlzdGVuZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1Rhc2tNYWdpY1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N0cmluZ0J1aWxkZXIsIFJlZlBhcmFtfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7UElDSW50ZXJmYWNlLCBTdG9yYWdlQXR0cmlidXRlfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtNYWdpY0RpcmVjdGl2ZX0gZnJvbSAnLi9tYWdpYy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1BJQ30gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge01nRGF0ZUZvcm1hdHRlcn0gZnJvbSAnLi4vcGlwZXMvZGF0ZS5tYWdpYy5waXBlJztcclxuaW1wb3J0IHtpc1VuZGVmaW5lZH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuLyoqXHJcbiAqIFBlcmZvcm0gTWFnaWMgdmFsaWRhdGlvbiBvbiBpbnB1dCBjb250cm9scyB3aGljaCBob2xkIGFscGhhbnVtZXJpYyBzdHJpbmdzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1ttZ0Zvcm1hdF0nXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIE1nZm9ybWF0TWFnaWNEaXJlY3RpdmUge1xyXG5cclxuICBkYXRlUGFzdGVGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBtYWdpY0RpcjogTWFnaWNEaXJlY3RpdmUgLFxyXG4gICAgcHJvdGVjdGVkIF90YXNrOiBUYXNrTWFnaWNTZXJ2aWNlXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCBjb250cm9sID0gdGhpcy5fdGFzay5nZXRGb3JtQ29udHJvbCh0aGlzLm1hZ2ljRGlyLnJvd0lkLCB0aGlzLm1hZ2ljRGlyLmlkICk7XHJcblxyXG4gICAgaWYoY29udHJvbCAhPSBudWxsICYmIHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT0gbnVsbCkge1xyXG4gICAgICAvLyBnZXQgdGhlIGZpcnN0IGRhdGUgY29udHJvbCdzIGZvcm1hdC5cclxuICAgICAgbGV0IHBpYzogUElDID0gdGhpcy5fdGFzay5HZXRDb250cm9sUGljdHVyZU1hc2sodGhpcy5tYWdpY0Rpci5pZCk7XHJcbiAgICAgIGlmIChwaWMuZ2V0QXR0cigpID09IFN0b3JhZ2VBdHRyaWJ1dGUuREFURSApIHtcclxuICAgICAgICB0aGlzLmZvcm1hdERhdGUocGljKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvKipcclxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNldCBwYXR0ZXJuXHJcbiAgICogT24gaW5wdXQsIHZlcmlmaWVzIHRoZSBpbnB1dCBtYXRjaGVzIHRoZSByZXF1aXJlZCBtYXNrXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvbkZvY3VzRXZlbnQoJGV2ZW50KXtcclxuICAgIHRoaXMuY2FsY3VsYXRlUGF0dGVybigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKVxyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICAvKipcclxuICAgICAgKiBUaGlzIGZsYWcgaXMgbmVlZGVkIHRvIHNraXAgZXhlY3V0aW9uIG9mIGRhdGVNYXNraW5nKCkgbWV0aG9kIHdoZW4gdXNlciBwYXN0ZSBkYXRlIGluIGlucHV0IGNvbnRyb2wuXHJcbiAgICAgICogVGhpcyBpcyBvbmx5IG5lZWRlZCB3aGVuIFwiU3RvcmFnZUF0dHJpYnV0ZVwiIGlzIERBVEUuIEJ1dCB0byBjaGVjayB0eXBlIG9mIFwiU3RvcmFnZUF0dHJpYnV0ZVwiLCB3ZVxyXG4gICAgICAgIG5lZWQgdG8gZXhlY3V0ZSBnZXRDb250cm9sTWV0YWRhdGEoKSBtZXRob2QuIFNvLCB0byByZWR1Y2UgdGhpcyBleGVjdXRpb24gb3ZlcmxvYWQgd2Ugc2V0XHJcbiAgICAgICAgXCJkYXRlUGFzdGVGbGFnXCIgZGlyZWN0bHkuXHJcbiAgICAqL1xyXG4gICAgdGhpcy5kYXRlUGFzdGVGbGFnID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgb25JbnB1dEV2ZW50KGV2ZW50KXtcclxuICAgIGxldCBhdHRyOiBTdG9yYWdlQXR0cmlidXRlID0gdGhpcy5fdGFzay5SZWNvcmRzLmxpc3RbMF0uZ2V0Q29udHJvbE1ldGFkYXRhKHRoaXMubWFnaWNEaXIuaWQpLmRhdGFUeXBlO1xyXG4gICAgaWYgKGF0dHIgPT0gU3RvcmFnZUF0dHJpYnV0ZS5EQVRFKXtcclxuICAgICAgaWYoIXRoaXMuZGF0ZVBhc3RlRmxhZylcclxuICAgICAgICB0aGlzLmRhdGVNYXNraW5nKGV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMuZGF0ZVBhc3RlRmxhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxjdWxhdGVQYXR0ZXJuKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9UaGlzIG1ldGhvZCBpbnNlcnRzICcvJyBhcyBhIHNlcGFyYXRvciB3aGlsZSBlbnRlcmluZyBkYXRlIGluIHRoZSB0ZXh0Ym94LlxyXG4gIC8vRXhhbXBsZTogMTAvMTAvMjAyM1xyXG4gIGRhdGVNYXNraW5nKGV2ZW50KXtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcclxuICAgIGxldCBjdXJzb3JQb3MgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0LmluY2x1ZGVzKCcvJyk/ICcvJzonLSc7XHJcblxyXG4gICAgaWYoY3Vyc29yUG9zID49IGlucHV0LnZhbHVlLmxlbmd0aCkge1xyXG5cclxuICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9bXmEtekEtWjAtOS8tXS9nLCAnJyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcImRkL01NL3l5eXlcIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwiTU0vZGQveXl5eVwiIHx8dGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcImRkLU1NLXl5eXlcIiB8fHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT0gXCJNTS1kZC15eXl5XCIpIHtcclxuICAgICAgICBpZih2YWx1ZS5sZW5ndGggPT0gMSAmJiB2YWx1ZVswXSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcwMScgKyBzZXBhcmF0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUubGVuZ3RoID09IDIgJiYgdmFsdWVbMV0gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAwICsgdmFsdWU7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gMyAmJiB2YWx1ZVsyXSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDIpICsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoMik7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUubGVuZ3RoID09IDQgJiYgdmFsdWVbM10gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAzKSArICcwMScgKyB2YWx1ZS5zbGljZSgzKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1ICYmIHZhbHVlWzRdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMykgKyAnMCcgKyB2YWx1ZS5zbGljZSgzKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA2ICYmIHZhbHVlWzVdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNSkrIHNlcGFyYXRvciArIHZhbHVlLnNsaWNlKDUpO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID49IDEwKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAxMCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT0gXCJ5eXl5L01NL2RkXCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcInl5eXkvZGQvTU1cIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwieXl5eS1NTS1kZFwiIHx8IHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT0gXCJ5eXl5LWRkLU1NXCIpIHtcclxuICAgICAgICBpZih2YWx1ZS5sZW5ndGggPT0gMSAmJiB2YWx1ZVswXSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcwMDAwJyArIHNlcGFyYXRvcjtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAyICYmIHZhbHVlWzFdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAwMCcgKyB2YWx1ZS5zbGljZSgwKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAzICYmIHZhbHVlWzJdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAwJyArIHZhbHVlLnNsaWNlKDApO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDQgJiYgdmFsdWVbM10gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnMCcgKyB2YWx1ZS5zbGljZSgwKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1ICYmIHZhbHVlWzRdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNCkgKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg0KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA2ICYmIHZhbHVlWzVdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNSkgKyAnMDEnICsgdmFsdWUuc2xpY2UoNSk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNyAmJiB2YWx1ZVs2XSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDUpICsgJzAnICsgdmFsdWUuc2xpY2UoNSk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gOCAmJiB2YWx1ZVs3XSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDcpICsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoNyk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPj0gMTApXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDEwKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcImRkL01NL3l5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcInl5L01NL2RkXCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcIk1NL2RkL3l5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcInl5L2RkL01NXCIgfHx0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwiZGQtTU0teXlcIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwieXktTU0tZGRcIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwiTU0tZGQteXlcIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwieXktZGQtTU1cIikge1xyXG4gICAgICAgIGlmKHZhbHVlLmxlbmd0aCA9PSAxICYmIHZhbHVlWzBdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAxJyArIHNlcGFyYXRvcjtcclxuICAgICAgICBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT0gMiAmJiB2YWx1ZVsxXSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IDAgKyB2YWx1ZTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAzICYmIHZhbHVlWzJdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMikrIHNlcGFyYXRvciArIHZhbHVlLnNsaWNlKDIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA9PSA0ICYmIHZhbHVlWzNdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMykgKyAnMDEnICsgdmFsdWUuc2xpY2UoMyk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNSAmJiB2YWx1ZVs0XSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDMpICsgJzAnICsgdmFsdWUuc2xpY2UoMyk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNiAmJiB2YWx1ZVs1XSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDUpKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg1KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA+PSA4KVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA4KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PVwiZGQvTU1NL3l5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcImRkLU1NTS15eVwiICkge1xyXG4gICAgICAgIGlmKHZhbHVlLmxlbmd0aCA9PSAxICYmIHZhbHVlWzBdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAxJyArIHNlcGFyYXRvcjtcclxuICAgICAgICBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT0gMiAmJiB2YWx1ZVsxXSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IDAgKyB2YWx1ZTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAzICYmIHZhbHVlWzJdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMikrIHNlcGFyYXRvciArIHZhbHVlLnNsaWNlKDIpO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDcgJiYgdmFsdWVbNl0gIT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA2KSsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoNik7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPj0gOSlcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgOSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT1cImRkL01NTS95eXl5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcImRkLU1NTS15eXl5XCIgKSB7XHJcbiAgICAgICAgaWYodmFsdWUubGVuZ3RoID09IDEgJiYgdmFsdWVbMF0gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnMDEnICsgc2VwYXJhdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA9PSAyICYmIHZhbHVlWzFdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gMCArIHZhbHVlO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDMgJiYgdmFsdWVbMl0gIT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAyKSsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoMik7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNyAmJiB2YWx1ZVs2XSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDYpKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg2KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA+PSAxMSlcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMTEpO1xyXG5cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09XCJ5eS9kZC9NTU1cIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwieXktZGQtTU1NXCIgKSB7XHJcbiAgICAgICAgaWYodmFsdWUubGVuZ3RoID09IDEgJiYgdmFsdWVbMF0gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnMDAnICsgc2VwYXJhdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA9PSAyICYmIHZhbHVlWzFdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gMCArIHZhbHVlO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDMgJiYgdmFsdWVbMl0gIT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAyKSsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoMik7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUubGVuZ3RoID09IDQgJiYgdmFsdWVbM10gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAzKSArICcwMScgKyB2YWx1ZS5zbGljZSgzKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1ICYmIHZhbHVlWzRdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMykgKyAnMCcgKyB2YWx1ZS5zbGljZSgzKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA2ICYmIHZhbHVlWzVdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNSkgKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg1KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA+PSA5KVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA5KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PVwieXl5eS9kZC9NTU1cIiB8fCB0aGlzLl90YXNrLm1nSW5wdXREYXRlRm9ybWF0ID09IFwieXl5eS1kZC1NTU1cIiApIHtcclxuICAgICAgICBpZih2YWx1ZS5sZW5ndGggPT0gMSAmJiB2YWx1ZVswXSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcwMDAwJyArIHNlcGFyYXRvcjtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAyICYmIHZhbHVlWzFdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAwMCcgKyB2YWx1ZS5zbGljZSgwKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSAzICYmIHZhbHVlWzJdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJzAwJyArIHZhbHVlLnNsaWNlKDApO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDQgJiYgdmFsdWVbM10gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnMCcgKyB2YWx1ZS5zbGljZSgwKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1ICYmIHZhbHVlWzRdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNCkgKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg0KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA2ICYmIHZhbHVlWzVdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNSkgKyAnMDEnICsgdmFsdWUuc2xpY2UoNSk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNyAmJiB2YWx1ZVs2XSA9PSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDUpICsgJzAnICsgdmFsdWUuc2xpY2UoNSk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gOCAmJiB2YWx1ZVs3XSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDcpICsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoNyk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPj0gMTEpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDExKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PVwiTU1NL2RkL3l5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcIk1NTS1kZC15eVwiICkge1xyXG4gICAgICAgIGlmKHZhbHVlLmxlbmd0aCA9PSA0ICYmIHZhbHVlWzNdICE9IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMykgKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSgzKTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1ICYmIHZhbHVlWzRdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNCkrICcwMScgKyB2YWx1ZS5zbGljZSg0KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA2ICYmIHZhbHVlWzVdID09IHNlcGFyYXRvcilcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgNCkrICcwJyArIHZhbHVlLnNsaWNlKDQpO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDcgJiYgdmFsdWVbNl0gIT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA2KSsgc2VwYXJhdG9yICsgdmFsdWUuc2xpY2UoNik7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPj0gOSlcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgOSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT1cIk1NTS9kZC95eXl5XCIgfHwgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9PSBcIk1NTS1kZC15eXl5XCIgKSB7XHJcbiAgICAgICAgaWYodmFsdWUubGVuZ3RoID09IDQgJiYgdmFsdWVbM10gIT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAzKSArIHNlcGFyYXRvciArIHZhbHVlLnNsaWNlKDMpO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDUgJiYgdmFsdWVbNF0gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA0KSsgJzAxJyArIHZhbHVlLnNsaWNlKDQpO1xyXG4gICAgICAgIGVsc2UgaWYodmFsdWUubGVuZ3RoID09IDYgJiYgdmFsdWVbNV0gPT0gc2VwYXJhdG9yKVxyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA0KSsgJzAnICsgdmFsdWUuc2xpY2UoNCk7XHJcbiAgICAgICAgZWxzZSBpZih2YWx1ZS5sZW5ndGggPT0gNyAmJiB2YWx1ZVs2XSAhPSBzZXBhcmF0b3IpXHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIDYpKyBzZXBhcmF0b3IgKyB2YWx1ZS5zbGljZSg2KTtcclxuICAgICAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA+PSAxMSlcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMTEpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYoY3Vyc29yUG9zIDwgaW5wdXQudmFsdWUubGVuZ3RoICYmIGlucHV0LnZhbHVlLmxlbmd0aCA+IHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQubGVuZ3RoKXtcclxuICAgICAgbGV0IGlucHV0RGF0ZSA9IGlucHV0LnZhbHVlO1xyXG4gICAgICBsZXQgc3RhcnQgPSBpbnB1dC5zZWxlY3Rpb25TdGFydC0xO1xyXG4gICAgICBsZXQgZW5kID0gaW5wdXQuc2VsZWN0aW9uRW5kLTE7XHJcbiAgICAgIGxldCBpbmRleFRvUmVtb3ZlID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQtMTtcclxuXHJcbiAgICAgIGlucHV0LnZhbHVlID0gaW5wdXREYXRlLnNsaWNlKDAsaW5kZXhUb1JlbW92ZSkgKyBpbnB1dERhdGUuc2xpY2UoaW5kZXhUb1JlbW92ZSArIDEpO1xyXG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAqL1xyXG4gIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IHVwcGVyY2FzZS9sb3dlciBjYXNlXHJcbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgb25DaGFuZ2VFdmVudCgkZXZlbnQpe1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLl90YXNrLmdldEZvcm1Db250cm9sKHRoaXMubWFnaWNEaXIucm93SWQsIHRoaXMubWFnaWNEaXIuaWQgKTtcclxuICAgIGxldCBhdHRyOiBTdG9yYWdlQXR0cmlidXRlID0gdGhpcy5fdGFzay5SZWNvcmRzLmxpc3RbMF0uZ2V0Q29udHJvbE1ldGFkYXRhKHRoaXMubWFnaWNEaXIuaWQpLmRhdGFUeXBlO1xyXG5cclxuICAgIHN3aXRjaCAgKGF0dHIpXHJcbiAgICB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgdGhpcy5mb3JtYXRBbHBoYVVuaWNvZGUgKGNvbnRyb2wpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICB0aGlzLmZvcm1hdEJvb2xlYW4oY29udHJvbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgKi9cclxuICBjYWxjdWxhdGVQYXR0ZXJuICgpXHJcbiAge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLl90YXNrLmdldEZvcm1Db250cm9sKHRoaXMubWFnaWNEaXIucm93SWQsIHRoaXMubWFnaWNEaXIuaWQgKTtcclxuXHJcbiAgICBpZihjb250cm9sICE9IG51bGwgKSB7XHJcbiAgICAgIGxldCBhdHRyOiBTdG9yYWdlQXR0cmlidXRlID0gdGhpcy5fdGFzay5SZWNvcmRzLmxpc3RbMF0uZ2V0Q29udHJvbE1ldGFkYXRhKHRoaXMubWFnaWNEaXIuaWQpLmRhdGFUeXBlO1xyXG4gICAgICBpZiAoYXR0ciA9PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgYXR0ciA9PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IGF0dHIgPT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFKSB7XHJcbiAgICAgICAgbGV0IHBpYzogUElDID0gdGhpcy5fdGFzay5HZXRDb250cm9sUGljdHVyZU1hc2sodGhpcy5tYWdpY0Rpci5pZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUGF0dGVybkdlbmVyYXRpb25OZWVkZWQoYXR0ciwgcGljKSkge1xyXG4gICAgICAgICAgbGV0IHBhdHRlcm46IHN0cmluZyA9IHRoaXMuZ2VuZXJhdGVQYXR0ZXJuKGF0dHIsIHBpYyk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbC52YWxpZGF0b3IgPT0gbnVsbClcclxuICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucGF0dGVybihwYXR0ZXJuKSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbY29udHJvbC52YWxpZGF0b3IsIFZhbGlkYXRvcnMucGF0dGVybihwYXR0ZXJuKV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChhdHRyID09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgYXR0ciA9PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsaWRhdG9yID09IG51bGwpXHJcbiAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHBpYy5nZXRNYXNrTGVuZ3RoKCkpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gcmUtc2V0IGFsbCB2YWxpZGF0b3JzIGFnYWluXHJcbiAgICAgICAgICAgICAgaWYgKHBpYy5pc0Zvcm1hdEV4cCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5tYXhMZW5ndGgocGljLmdldE1hc2tMZW5ndGgoKSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHRoaXMubWFnaWNEaXIucm93SWQpKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1hZ2ljRGlyLnJvd0lkID0gJzAnO1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtjb250cm9sLnZhbGlkYXRvciwgdGhpcy5fdGFzay5jdXN0b21WYWxpZGF0b3IodGhpcy5tYWdpY0Rpci5yb3dJZCwgdGhpcy5tYWdpY0Rpci5pZCldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtjb250cm9sLnZhbGlkYXRvciwgVmFsaWRhdG9ycy5tYXhMZW5ndGgocGljLmdldE1hc2tMZW5ndGgoKSldKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5tYXhMZW5ndGgocGljLmdldE1hc2tMZW5ndGgoKSkpO1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKHBpYzogUElDKTogdm9pZCB7XHJcbiAgICAgbGV0IG1nRGF0ZUZvcm1hdHRlciA9IG5ldyBNZ0RhdGVGb3JtYXR0ZXIoKTtcclxuICAgICAgdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdCA9IG1nRGF0ZUZvcm1hdHRlci5Db252ZXJ0TWdEYXRlRm9ybWF0VG9Bbmd1bGFyKHBpYy5nZXRNYXNrKCkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgZm9ybWF0QWxwaGFVbmljb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlOiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG5ld1ZhbHVlOiBzdHJpbmcgPSB0aGlzLl90YXNrLkdldFJhbmdlZFZhbHVlKHRoaXMubWFnaWNEaXIuaWQsIHZhbHVlKTtcclxuICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAgIGxldCBwaWM6IFBJQyA9IHRoaXMuX3Rhc2suR2V0Q29udHJvbFBpY3R1cmVNYXNrKHRoaXMubWFnaWNEaXIuaWQpO1xyXG4gICAgICBsZXQgbWFzazogc3RyaW5nID0gcGljLmdldE1hc2soKTtcclxuICAgICAgbGV0IHZhbHVlU3RyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHN3aXRjaCAobWFzay5jaGFyQ29kZUF0KGkpKSB7XHJcbiAgICAgICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfVTpcclxuICAgICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKHZhbHVlLmNoYXJBdChpKS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfTDpcclxuICAgICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKHZhbHVlLmNoYXJBdChpKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB2YWx1ZVN0ci5BcHBlbmQodmFsdWUuY2hhckF0KGkpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlU3RyLlRvU3RyaW5nKCkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBmb3JtYXRCb29sZWFuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkICB7XHJcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3VmFsdWU6IHN0cmluZyA9IHRoaXMuX3Rhc2suR2V0UmFuZ2VkVmFsdWUgKHRoaXMubWFnaWNEaXIuaWQgLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChuZXdWYWx1ZS50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgodmFsdWUudG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBjb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdlbmVyYXRlIHBhdHRlcm4gZnJvbSAgZmxkJ3MgIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgIGdlbmVyYXRlUGF0dGVybiAoYXR0cmlidXRlOiBTdG9yYWdlQXR0cmlidXRlLCBwaWM6IFBJQyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGF0dGVybjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpXHJcbiAgICB7XHJcbiAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQzpcclxuICAgICAgcGF0dGVybiA9IHRoaXMuZ2VuZXJhdGVQYXR0ZXJuRm9yTnVtYmVyKHBpYyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgIHBhdHRlcm4gPSB0aGlzLmdlbmVyYXRlUGF0dGVybkZvckFscGhhKHBpYyk7XHJcbiAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGF0dGVybjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdlbmVyYXRlIHBhdHRlcm4gZm9yIEFscGhhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuIGdlbmVyYXRlUGF0dGVybkZvck51bWJlcihwaWM6IFBJQyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGF0dGVyblN0cjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyICgpO1xyXG5cclxuICAgIHBhdHRlcm5TdHIuQXBwZW5kKCdeJyk7XHJcbiAgICBpZiAocGljLmlzTmVnYXRpdmUoKSlcclxuICAgICAgcGF0dGVyblN0ci5BcHBlbmQoJy0/Jyk7XHJcbiAgICBpZiAocGljLmdldFdob2xlcygpKVxyXG4gICAgICBwYXR0ZXJuU3RyLkFwcGVuZEZvcm1hdCgnXFxcXGR7ezB9LHsxfX0nLCAwLCBwaWMuZ2V0V2hvbGVzKCkpO1xyXG4gICAgaWYgKHBpYy5nZXREZWMoKSlcclxuICAgICAgcGF0dGVyblN0ci5BcHBlbmRGb3JtYXQoJyhcXFxcLlxcXFxkezEsezB9fSk/JywgcGljLmdldERlYygpKTtcclxuICAgIHBhdHRlcm5TdHIuQXBwZW5kKCckJyk7XHJcblxyXG4gICAgcmV0dXJuIHBhdHRlcm5TdHIuVG9TdHJpbmcoKTtcclxuIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gaXNQYXR0ZXJuR2VuZXJhdGlvbk5lZWRlZCAoYXR0ciA6IFN0b3JhZ2VBdHRyaWJ1dGUsIHBpYyA6IFBJQyk6IGJvb2xlYW4ge1xyXG5cclxuICAgc3dpdGNoIChhdHRyKSB7XHJcbiAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgcmV0dXJuIChwaWMuZ2V0TWFza0NoYXJzKCkgPiAwKSA/IHRydWUgOiBmYWxzZTtcclxuICAgfVxyXG4gfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZW5lcmF0ZSBwYXR0ZXJuIGZvciBBbHBoYVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiBnZW5lcmF0ZVBhdHRlcm5Gb3JBbHBoYShwaWMgOiBQSUMpOiBzdHJpbmcge1xyXG4gIGxldCBjbnQ6IG51bWJlciA9IDA7XHJcbiAgbGV0IGlucHV0QWxsQ2hhcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsZXQgY2xvc2VTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsZXQgIG1hc2s6IHN0cmluZyA9IHBpYy5nZXRNYXNrKCk7XHJcbiAgbGV0ICBwYXR0ZXJuOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuXHJcbiAgcGF0dGVybi5BcHBlbmQoJ14nKTtcclxuICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbWFzay5sZW5ndGg7KVxyXG4gIHtcclxuICAgIC8vc3RhcnQgbmV3IHN1YnNldCAsIGlmIG1hc2tbaV0gaXMgb25lIG9mIHRoZXNlLlxyXG4gICAgaWYgKGlucHV0QWxsQ2hhcnMgJiYgKG1hc2suY2hhckNvZGVBdChpKSA9PSBQSUNJbnRlcmZhY2UuUElDX04gfHwgbWFzay5jaGFyQ29kZUF0KGkpID09IFBJQ0ludGVyZmFjZS5QSUNfVSB8fCBtYXNrLmNoYXJDb2RlQXQoaSkgPT0gUElDSW50ZXJmYWNlLlBJQ19MXHJcbiAgICAgICAgfHwgbWFzay5jaGFyQ29kZUF0KGkpID09IFBJQ0ludGVyZmFjZS5QSUNfWCkpXHJcbiAgICB7XHJcbiAgICAgIHBhdHRlcm4uQXBwZW5kKCcoJyk7XHJcbiAgICAgIGNsb3NlU2V0ID0gdHJ1ZTtcclxuICAgICAgaW5wdXRBbGxDaGFycyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNudCA9IDA7XHJcbiAgICBzd2l0Y2ggKG1hc2suY2hhckNvZGVBdChpKSlcclxuICAgIHtcclxuICAgICAgY2FzZSBQSUNJbnRlcmZhY2UuUElDX1U6XHJcbiAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19YOlxyXG4gICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfTDpcclxuICAgICAge1xyXG4gICAgICAgIHBhdHRlcm4uQXBwZW5kKCcuJyk7XHJcbiAgICAgICAgbGV0IGlucHV0QWxsQ2hhcnNSZWY6IFJlZlBhcmFtPGJvb2xlYW4+ID0gbmV3IFJlZlBhcmFtPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgICAgICBsZXQgZGlyczogc3RyaW5nID0gIFBJQ0ludGVyZmFjZS5QSUNfVS50b1N0cmluZygpO1xyXG4gICAgICAgIGRpcnMgKz0gUElDSW50ZXJmYWNlLlBJQ19MLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZGlycyArPSBQSUNJbnRlcmZhY2UuUElDX1gudG9TdHJpbmcoKTtcclxuICAgICAgICBjbnQgPSB0aGlzLmdldERpcmVjdGl2ZUNvdW50KG1hc2ssIGksIGRpcnMsIGlucHV0QWxsQ2hhcnNSZWYpO1xyXG4gICAgICAgIGlucHV0QWxsQ2hhcnMgPSBpbnB1dEFsbENoYXJzUmVmLnZhbHVlO1xyXG4gICAgICAgIGkgKz0gY250O1xyXG5cclxuICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfTjpcclxuICAgICAge1xyXG4gICAgICAgIHBhdHRlcm4uQXBwZW5kKCdcXFxcZCcpO1xyXG4gICAgICAgIGxldCBpbnB1dEFsbENoYXJzUmVmOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbTxib29sZWFuPihmYWxzZSk7XHJcbiAgICAgICAgY250ID0gdGhpcy5nZXREaXJlY3RpdmVDb3VudChtYXNrLCBpLCBQSUNJbnRlcmZhY2UuUElDX0wudG9TdHJpbmcoKSwgaW5wdXRBbGxDaGFyc1JlZik7XHJcbiAgICAgICAgaW5wdXRBbGxDaGFycyA9IGlucHV0QWxsQ2hhcnNSZWYudmFsdWU7XHJcbiAgICAgICAgaSArPSBjbnQ7XHJcbiAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcGF0dGVybi5BcHBlbmQobWFza1tpXSk7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGNudCA+IDApXHJcbiAgICAgIHBhdHRlcm4uQXBwZW5kRm9ybWF0KCd7ezB9LHsxfX0nLCBpbnB1dEFsbENoYXJzID8gY250IDogMCwgY250KTtcclxuICAgIGlmIChjbG9zZVNldClcclxuICAgICAgcGF0dGVybi5BcHBlbmQoJyknKTtcclxuICAgIGNsb3NlU2V0ID0gZmFsc2U7XHJcblxyXG4gIH1cclxuICAgcGF0dGVybi5BcHBlbmQoJyQnKTtcclxuICAgcmV0dXJuIHBhdHRlcm4uVG9TdHJpbmcoKTtcclxuIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldERpcmVjdGl2ZUNvdW50KG1hc2s6IHN0cmluZywgaWR4OiBudW1iZXIsIHBhdHRlcm46IHN0cmluZywgY2hhbmdlSW5QYXR0ZXJuOiBSZWZQYXJhbTxib29sZWFuPiApOiBudW1iZXIgIHtcclxuXHJcbiAgICBjaGFuZ2VJblBhdHRlcm4udmFsdWUgPSBmYWxzZTtcclxuICAgIGxldCBwYXR0ZXJuQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gZmluZCBtYXggY2hhcnNcclxuICAgIHdoaWxlIChpZHggPCBtYXNrLmxlbmd0aCAmJiB0aGlzLklzUGF0dGVybk1hdGNoZXMobWFzay5jaGFyQ29kZUF0KGlkeCkudG9TdHJpbmcoKSwgcGF0dGVybikpXHJcbiAgICB7IHBhdHRlcm5Db3VudCsrOyBpZHgrKzsgfVxyXG5cclxuXHJcbiAgICBpZiAoaWR4IDwgbWFzay5sZW5ndGgpXHJcbiAgICAgIGNoYW5nZUluUGF0dGVybi52YWx1ZSA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHBhdHRlcm5Db3VudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBJc1BhdHRlcm5NYXRjaGVzKG1hc2s6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XHJcblxyXG4gICAgZm9yIChsZXQgaTpudW1iZXIgPSAwOyBpIDwgcGF0dGVybi5sZW5ndGg7IGkrKylcclxuICAgIGlmIChtYXNrID09IHBhdHRlcm5baV0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,58 +0,0 @@
1
- import { Directive, ViewContainerRef } from '@angular/core';
2
- import { NG_VALIDATORS } from '@angular/forms';
3
- import { TaskMagicService } from '../../services/task.magics.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../services/task.magics.service";
6
- export class RangeValidatorMagicDirective {
7
- constructor(_task, vcRef) {
8
- this._task = _task;
9
- this.vcRef = vcRef;
10
- }
11
- validate(c) {
12
- let controlName;
13
- controlName = this.getControlName(c);
14
- let properties;
15
- properties = this._task.Records.list["0"].getControlMetadata(controlName);
16
- properties.rangeValidator = true;
17
- let errMsg = null;
18
- if (c.dirty)
19
- errMsg = this._task.ValidateControlValue(controlName, this._task.ConvertValToNative(controlName, 0, c.value));
20
- let isValid = (errMsg == null) ? true : false;
21
- if (isValid) {
22
- return null;
23
- }
24
- else {
25
- return {
26
- rangevalidator: {
27
- errorMsg: errMsg
28
- }
29
- };
30
- }
31
- }
32
- getControlName(c) {
33
- const formGroup = c.parent.controls;
34
- return Object.keys(formGroup).find(name => c === formGroup[name]) || null;
35
- }
36
- }
37
- RangeValidatorMagicDirective.ɵfac = function RangeValidatorMagicDirective_Factory(t) { return new (t || RangeValidatorMagicDirective)(i0.ɵɵdirectiveInject(i1.TaskMagicService), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); };
38
- RangeValidatorMagicDirective.ɵdir = i0.ɵɵdefineDirective({ type: RangeValidatorMagicDirective, selectors: [["", "rangevalidator", ""]], features: [i0.ɵɵProvidersFeature([
39
- {
40
- provide: NG_VALIDATORS,
41
- useExisting: RangeValidatorMagicDirective,
42
- multi: true,
43
- }
44
- ])] });
45
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RangeValidatorMagicDirective, [{
46
- type: Directive,
47
- args: [{
48
- selector: '[rangevalidator] ',
49
- providers: [
50
- {
51
- provide: NG_VALIDATORS,
52
- useExisting: RangeValidatorMagicDirective,
53
- multi: true,
54
- }
55
- ]
56
- }]
57
- }], function () { return [{ type: i1.TaskMagicService }, { type: i0.ViewContainerRef }]; }, null); })();
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtdmFsaWRhdG9yLm1hZ2ljLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3VpL2RpcmVjdGl2ZXMvcmFuZ2UtdmFsaWRhdG9yLm1hZ2ljLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBZSxhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBbUJ0RSxNQUFNLE9BQU8sNEJBQTRCO0lBT3ZDLFlBQXNCLEtBQXVCLEVBQWEsS0FBdUI7UUFBM0QsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFBYSxVQUFLLEdBQUwsS0FBSyxDQUFrQjtJQUNqRixDQUFDO0lBT0EsUUFBUSxDQUFDLENBQWM7UUFDbkIsSUFBSSxXQUFtQixDQUFDO1FBQ3hCLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksVUFBMkIsQ0FBQztRQUNoQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLFVBQVUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksTUFBTSxHQUFXLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsQ0FBQyxLQUFLO1lBQ1YsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUUsV0FBVyxFQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsSCxJQUFJLE9BQU8sR0FBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQztTQUNiO2FBQ0k7WUFDSCxPQUFPO2dCQUNMLGNBQWMsRUFBRTtvQkFDZCxRQUFRLEVBQUcsTUFBTTtpQkFDbEI7YUFDRixDQUFDO1NBQ0g7SUFDTCxDQUFDO0lBS0YsY0FBYyxDQUFDLENBQWM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUUsQ0FBQzs7d0dBM0NVLDRCQUE0QjtpRUFBNUIsNEJBQTRCLDRFQVg1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsNEJBQTRCO2dCQUV6QyxLQUFLLEVBQUUsSUFBSTthQUVaO1NBQ0Y7dUZBR1UsNEJBQTRCO2NBYnhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLFdBQVcsOEJBQThCO3dCQUV6QyxLQUFLLEVBQUUsSUFBSTtxQkFFWjtpQkFDRjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRhc2tNYWdpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vY29udHJvbHMubWV0YWRhdGEubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRlcyB0aGUgZmllbGQgcmFuZ2UuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyYW5nZXZhbGlkYXRvcl0gJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IFJhbmdlVmFsaWRhdG9yTWFnaWNEaXJlY3RpdmUsXHJcblxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhbmdlVmFsaWRhdG9yTWFnaWNEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBfdGFzayBUaGUgdGFzayBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHZjUmVmXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLCAgcHJvdGVjdGVkIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0aW9uIG1ldGhvZFxyXG4gICAqIEBwYXJhbSBjIEZvcm1Db250cm9sIHRvIHZhbGlkYXRlXHJcbiAgICogQHJldHVybnMgSWYgdmFsaWRhdGlvbiBmYWlscywgcmV0dXJuIGVycm9yIG1lc3NhZ2UsIGVsc2UgcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICAgICBsZXQgY29udHJvbE5hbWU6IHN0cmluZztcclxuICAgICAgIGNvbnRyb2xOYW1lID0gdGhpcy5nZXRDb250cm9sTmFtZSAoYyk7XHJcbiAgICAgICBsZXQgcHJvcGVydGllczogQ29udHJvbE1ldGFkYXRhO1xyXG4gICAgICAgcHJvcGVydGllcyA9IHRoaXMuX3Rhc2suUmVjb3Jkcy5saXN0W1wiMFwiXS5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbE5hbWUpO1xyXG4gICAgICAgcHJvcGVydGllcy5yYW5nZVZhbGlkYXRvciA9IHRydWU7XHJcbiAgICAgICBsZXQgZXJyTXNnOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgaWYgKGMuZGlydHkpXHJcbiAgICAgICAgZXJyTXNnID0gdGhpcy5fdGFzay5WYWxpZGF0ZUNvbnRyb2xWYWx1ZSAoY29udHJvbE5hbWUsICB0aGlzLl90YXNrLkNvbnZlcnRWYWxUb05hdGl2ZShjb250cm9sTmFtZSwgIDAsIGMudmFsdWUpKTtcclxuICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gKGVyck1zZyA9PSBudWxsKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgfVxyXG4gICAgICAgZWxzZSB7XHJcbiAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgcmFuZ2V2YWxpZGF0b3I6IHtcclxuICAgICAgICAgICAgIGVycm9yTXNnIDogZXJyTXNnXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9O1xyXG4gICAgICAgfVxyXG4gICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBnZXRDb250cm9sTmFtZShjOiBGb3JtQ29udHJvbCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gYy5wYXJlbnQuY29udHJvbHM7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybUdyb3VwKS5maW5kKG5hbWUgPT4gYyA9PT0gZm9ybUdyb3VwW25hbWVdKSB8fCBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,8 +0,0 @@
1
- export class ModalFormDefinition {
2
- constructor() {
3
- this.taskId = "";
4
- this.comp = null;
5
- this.parameters = {};
6
- }
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtbW9kYWwtZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3VpL21hZ2ljLW1vZGFsL21hZ2ljLW1vZGFsLWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNFLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsU0FBSSxHQUFRLElBQUksQ0FBQztRQUNqQixlQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTW9kYWxGb3JtRGVmaW5pdGlvbiB7XHJcbiAgdGFza0lkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvbXA6IGFueSA9IG51bGw7XHJcbiAgcGFyYW1ldGVyczogYW55ID0ge307XHJcbn1cclxuIl19