@magic-xpa/gui 4.1100.0-dev4110.18 → 4.1100.0-dev4110.181

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 (199) hide show
  1. package/{esm2020 → esm2022}/index.mjs +71 -71
  2. package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
  3. package/esm2022/src/Commands.mjs +184 -0
  4. package/{esm2020 → esm2022}/src/Events.mjs +420 -420
  5. package/esm2022/src/EventsProcessor.mjs +67 -0
  6. package/esm2022/src/FocusManager.mjs +34 -0
  7. package/esm2022/src/GuiConstants.mjs +68 -0
  8. package/{esm2020 → esm2022}/src/GuiEnums.mjs +299 -299
  9. package/esm2022/src/GuiEnvironment.mjs +4 -0
  10. package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
  11. package/{esm2020 → esm2022}/src/Manager.mjs +91 -91
  12. package/esm2022/src/UIBridge.mjs +33 -0
  13. package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
  14. package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
  15. package/esm2022/src/gui/GuiMgControl.mjs +123 -0
  16. package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
  17. package/esm2022/src/gui/KeyboardItem.mjs +135 -0
  18. package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
  19. package/esm2022/src/gui/MgValue.mjs +16 -0
  20. package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
  21. package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
  22. package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
  23. package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
  24. package/esm2022/src/gui/low/GuiInteractive.mjs +177 -0
  25. package/esm2022/src/gui/low/Style.mjs +20 -0
  26. package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
  27. package/esm2022/src/management/data/BlobType.mjs +281 -0
  28. package/{esm2020 → esm2022}/src/management/data/DcValues.mjs +214 -214
  29. package/esm2022/src/management/data/DcValuesBuilderBase.mjs +96 -0
  30. package/esm2022/src/management/data/FieldDef.mjs +331 -0
  31. package/esm2022/src/management/data/FieldsTable.mjs +54 -0
  32. package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
  33. package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
  34. package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
  35. package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
  36. package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
  37. package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
  38. package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
  39. package/esm2022/src/management/data/RecordUtils.mjs +361 -0
  40. package/esm2022/src/management/data/VectorType.mjs +612 -0
  41. package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
  42. package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
  43. package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
  44. package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
  45. package/{esm2020 → esm2022}/src/management/exp/GuiExpressionEvaluator.mjs +305 -307
  46. package/esm2022/src/management/gui/ControlTable.mjs +118 -0
  47. package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
  48. package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
  49. package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
  50. package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
  51. package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
  52. package/esm2022/src/management/gui/Helps.mjs +237 -0
  53. package/esm2022/src/management/gui/MgControlBase.mjs +1859 -0
  54. package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
  55. package/esm2022/src/management/gui/PIC.mjs +1185 -0
  56. package/esm2022/src/management/gui/PropDefaults.mjs +230 -0
  57. package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +244 -244
  58. package/esm2022/src/management/gui/PropTable.mjs +221 -0
  59. package/esm2022/src/management/gui/Property.mjs +1361 -0
  60. package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
  61. package/esm2022/src/management/gui/ValidationDetailsBase.mjs +93 -0
  62. package/esm2022/src/management/gui/WrongFormatException.mjs +29 -0
  63. package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
  64. package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
  65. package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
  66. package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
  67. package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
  68. package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
  69. package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
  70. package/esm2022/src/util/MemoryUtil.mjs +35 -0
  71. package/{esm2020 → esm2022}/src/util/ObjectReference.mjs +36 -36
  72. package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
  73. package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16067 -16074
  74. package/fesm2022/magic-xpa-gui.mjs.map +1 -0
  75. package/index.d.ts +70 -70
  76. package/package.json +6 -12
  77. package/src/Commands.d.ts +40 -39
  78. package/src/Events.d.ts +155 -155
  79. package/src/EventsProcessor.d.ts +13 -13
  80. package/src/FocusManager.d.ts +8 -8
  81. package/src/GuiConstants.d.ts +65 -65
  82. package/src/GuiEnums.d.ts +282 -282
  83. package/src/GuiEnvironment.d.ts +4 -4
  84. package/src/IFlowMonitorQueue.d.ts +3 -3
  85. package/src/Manager.d.ts +26 -26
  86. package/src/UIBridge.d.ts +16 -16
  87. package/src/env/IEnvironment.d.ts +31 -31
  88. package/src/gui/ControlBase.d.ts +4 -4
  89. package/src/gui/GuiMgControl.d.ts +38 -38
  90. package/src/gui/GuiMgForm.d.ts +3 -3
  91. package/src/gui/KeyboardItem.d.ts +18 -18
  92. package/src/gui/LastFocusedVal.d.ts +7 -7
  93. package/src/gui/MgValue.d.ts +15 -15
  94. package/src/gui/PropParentInterface.d.ts +13 -13
  95. package/src/gui/low/DialogHandler.d.ts +4 -4
  96. package/src/gui/low/GuiCommand.d.ts +37 -37
  97. package/src/gui/low/GuiCommandQueue.d.ts +13 -13
  98. package/src/gui/low/GuiInteractive.d.ts +55 -53
  99. package/src/gui/low/Style.d.ts +19 -19
  100. package/src/management/RuntimeContextBase.d.ts +23 -23
  101. package/src/management/data/BlobType.d.ts +29 -29
  102. package/src/management/data/DcValues.d.ts +33 -33
  103. package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
  104. package/src/management/data/FieldDef.d.ts +53 -53
  105. package/src/management/data/FieldsTable.d.ts +16 -16
  106. package/src/management/data/GuiDataViewBase.d.ts +27 -27
  107. package/src/management/data/GuiFieldBase.d.ts +17 -17
  108. package/src/management/data/IRecord.d.ts +12 -12
  109. package/src/management/data/IReferencedObject.d.ts +5 -5
  110. package/src/management/data/NUM_TYPE.d.ts +103 -103
  111. package/src/management/data/ObjectReferenceBase.d.ts +16 -16
  112. package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
  113. package/src/management/data/RecordUtils.d.ts +21 -21
  114. package/src/management/data/VectorType.d.ts +52 -52
  115. package/src/management/data/VectorTypeBase.d.ts +8 -8
  116. package/src/management/events/IActionManager.d.ts +7 -7
  117. package/src/management/events/IGuiEventsManager.d.ts +20 -20
  118. package/src/management/exp/ExpressionInterface.d.ts +242 -242
  119. package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
  120. package/src/management/gui/ControlTable.d.ts +28 -28
  121. package/src/management/gui/DisplayConvertor.d.ts +103 -103
  122. package/src/management/gui/FieldValidator.d.ts +35 -35
  123. package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
  124. package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
  125. package/src/management/gui/HebrewDate.d.ts +46 -46
  126. package/src/management/gui/Helps.d.ts +51 -51
  127. package/src/management/gui/MgControlBase.d.ts +223 -223
  128. package/src/management/gui/MgFormBase.d.ts +160 -160
  129. package/src/management/gui/PIC.d.ts +108 -108
  130. package/src/management/gui/PropDefaults.d.ts +7 -7
  131. package/src/management/gui/PropInterface.d.ts +243 -243
  132. package/src/management/gui/PropTable.d.ts +33 -33
  133. package/src/management/gui/Property.d.ts +121 -121
  134. package/src/management/gui/ValidationDetails.d.ts +52 -52
  135. package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
  136. package/src/management/gui/WrongFormatException.d.ts +9 -9
  137. package/src/management/tasks/GuiDataCollection.d.ts +4 -4
  138. package/src/management/tasks/GuiTaskBase.d.ts +150 -150
  139. package/src/management/tasks/IMGDataTable.d.ts +10 -10
  140. package/src/management/tasks/ITask.d.ts +6 -6
  141. package/src/management/tasks/MgTimer.d.ts +8 -8
  142. package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
  143. package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
  144. package/src/util/MemoryUtil.d.ts +6 -6
  145. package/src/util/ObjectReference.d.ts +9 -9
  146. package/src/util/UsernamePasswordCredentials.d.ts +18 -18
  147. package/esm2020/src/Commands.mjs +0 -177
  148. package/esm2020/src/EventsProcessor.mjs +0 -67
  149. package/esm2020/src/FocusManager.mjs +0 -34
  150. package/esm2020/src/GuiConstants.mjs +0 -68
  151. package/esm2020/src/GuiEnvironment.mjs +0 -4
  152. package/esm2020/src/UIBridge.mjs +0 -32
  153. package/esm2020/src/gui/GuiMgControl.mjs +0 -125
  154. package/esm2020/src/gui/KeyboardItem.mjs +0 -135
  155. package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
  156. package/esm2020/src/gui/MgValue.mjs +0 -16
  157. package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
  158. package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
  159. package/esm2020/src/gui/low/GuiInteractive.mjs +0 -165
  160. package/esm2020/src/gui/low/Style.mjs +0 -20
  161. package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
  162. package/esm2020/src/management/data/BlobType.mjs +0 -281
  163. package/esm2020/src/management/data/DcValuesBuilderBase.mjs +0 -96
  164. package/esm2020/src/management/data/FieldDef.mjs +0 -331
  165. package/esm2020/src/management/data/FieldsTable.mjs +0 -54
  166. package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
  167. package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
  168. package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
  169. package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
  170. package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
  171. package/esm2020/src/management/data/RecordUtils.mjs +0 -361
  172. package/esm2020/src/management/data/VectorType.mjs +0 -612
  173. package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
  174. package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
  175. package/esm2020/src/management/gui/ControlTable.mjs +0 -118
  176. package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
  177. package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
  178. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
  179. package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
  180. package/esm2020/src/management/gui/Helps.mjs +0 -237
  181. package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
  182. package/esm2020/src/management/gui/MgFormBase.mjs +0 -738
  183. package/esm2020/src/management/gui/PIC.mjs +0 -1185
  184. package/esm2020/src/management/gui/PropDefaults.mjs +0 -230
  185. package/esm2020/src/management/gui/PropTable.mjs +0 -221
  186. package/esm2020/src/management/gui/Property.mjs +0 -1356
  187. package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
  188. package/esm2020/src/management/gui/ValidationDetailsBase.mjs +0 -93
  189. package/esm2020/src/management/gui/WrongFormatException.mjs +0 -29
  190. package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
  191. package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
  192. package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
  193. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
  194. package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +0 -41
  195. package/esm2020/src/util/MemoryUtil.mjs +0 -35
  196. package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
  197. package/fesm2015/magic-xpa-gui.mjs +0 -16364
  198. package/fesm2015/magic-xpa-gui.mjs.map +0 -1
  199. package/fesm2020/magic-xpa-gui.mjs.map +0 -1
@@ -1,165 +0,0 @@
1
- import { MgValue } from '../MgValue';
2
- import { GuiMgForm } from '../GuiMgForm';
3
- import { Events } from '../../Events';
4
- import { UIBridge } from '../../UIBridge';
5
- import { ControlBase } from '../ControlBase';
6
- import { GuiCommandQueue } from './GuiCommandQueue';
7
- export var InteractiveCommandType;
8
- (function (InteractiveCommandType) {
9
- InteractiveCommandType[InteractiveCommandType["GET_VALUE"] = 0] = "GET_VALUE";
10
- InteractiveCommandType[InteractiveCommandType["GET_TOP_INDEX"] = 1] = "GET_TOP_INDEX";
11
- InteractiveCommandType[InteractiveCommandType["MESSAGE_BOX"] = 2] = "MESSAGE_BOX";
12
- InteractiveCommandType[InteractiveCommandType["SET_TITLE"] = 3] = "SET_TITLE";
13
- InteractiveCommandType[InteractiveCommandType["SET_EDIT_TEXT"] = 4] = "SET_EDIT_TEXT";
14
- InteractiveCommandType[InteractiveCommandType["INSERT_EDIT_TEXT"] = 5] = "INSERT_EDIT_TEXT";
15
- InteractiveCommandType[InteractiveCommandType["GET_CARET_POS"] = 6] = "GET_CARET_POS";
16
- InteractiveCommandType[InteractiveCommandType["REFRESH_PAGE"] = 7] = "REFRESH_PAGE";
17
- InteractiveCommandType[InteractiveCommandType["GET_ROWS_IN_PAGE"] = 8] = "GET_ROWS_IN_PAGE";
18
- InteractiveCommandType[InteractiveCommandType["SET_GET_SUGGESTED_VALUE_FOR_CHOICE_CONTROL_ON_TAGDATA"] = 9] = "SET_GET_SUGGESTED_VALUE_FOR_CHOICE_CONTROL_ON_TAGDATA";
19
- InteractiveCommandType[InteractiveCommandType["GET_IS_ROW_EDITING"] = 10] = "GET_IS_ROW_EDITING";
20
- InteractiveCommandType[InteractiveCommandType["GET_MAX_ROWS_IN_PAGINATED_TABLE"] = 11] = "GET_MAX_ROWS_IN_PAGINATED_TABLE";
21
- InteractiveCommandType[InteractiveCommandType["CALL_JS"] = 12] = "CALL_JS";
22
- InteractiveCommandType[InteractiveCommandType["GET_LAST_ROUTE"] = 13] = "GET_LAST_ROUTE";
23
- })(InteractiveCommandType || (InteractiveCommandType = {}));
24
- export class GuiInteractiveBase {
25
- constructor() {
26
- this._commandType = 0;
27
- this.TaskTag = null;
28
- this.controlName = null;
29
- this._str = String.fromCharCode(0);
30
- this._intVal1 = 0;
31
- this._line = 0;
32
- this._obj1 = null;
33
- this._parameters = null;
34
- this._boolVal = false;
35
- this._obj2 = null;
36
- this._mgValue = null;
37
- this.resultString = String.fromCharCode(0);
38
- }
39
- setGetSuggestedValueOfChoiceControlOnTagData(ctrl, line, retSuggestedValue) {
40
- this._commandType = InteractiveCommandType.SET_GET_SUGGESTED_VALUE_FOR_CHOICE_CONTROL_ON_TAGDATA;
41
- this._obj2 = ctrl;
42
- this._line = line;
43
- this._boolVal = retSuggestedValue;
44
- this.Invoke();
45
- }
46
- getValue(obj, line) {
47
- this._commandType = InteractiveCommandType.GET_VALUE;
48
- this._obj2 = obj;
49
- this._line = line;
50
- this._mgValue = new MgValue();
51
- this.Invoke();
52
- return this._mgValue.obj;
53
- }
54
- getTopIndex(tablecontrol) {
55
- this._commandType = InteractiveCommandType.GET_TOP_INDEX;
56
- this._obj2 = tablecontrol;
57
- this.Invoke();
58
- return this._intVal1;
59
- }
60
- getIsRowEditing(tablecontrol, line, isLineMode) {
61
- this._commandType = InteractiveCommandType.GET_IS_ROW_EDITING;
62
- this._obj2 = tablecontrol;
63
- this._intVal1 = line;
64
- this._boolVal = isLineMode;
65
- this.Invoke();
66
- return this._boolVal;
67
- }
68
- messageBox(title, msg, style) {
69
- this._commandType = InteractiveCommandType.MESSAGE_BOX;
70
- this._mgValue = new MgValue();
71
- this._mgValue.title = title;
72
- this._mgValue.str = ((msg === null) ? '' : msg);
73
- this._mgValue.style = style;
74
- Events.RefreshTables();
75
- this.Invoke();
76
- return this._mgValue.number;
77
- }
78
- setTitle(topMostForm, title) {
79
- this._commandType = InteractiveCommandType.SET_TITLE;
80
- this._mgValue = new MgValue();
81
- this._obj2 = topMostForm;
82
- this._mgValue.title = ((title === null) ? '' : title);
83
- this.Invoke();
84
- }
85
- setEditText(control, line, text) {
86
- this._commandType = InteractiveCommandType.SET_EDIT_TEXT;
87
- this._obj2 = control;
88
- this._line = line;
89
- this._mgValue = new MgValue();
90
- this._mgValue.str = text;
91
- this.Invoke();
92
- return this._mgValue.boolVal;
93
- }
94
- insertEditText(control, line, startPosition, textToInsert) {
95
- this._commandType = InteractiveCommandType.INSERT_EDIT_TEXT;
96
- this._obj2 = control;
97
- this._line = line;
98
- this._mgValue = new MgValue();
99
- this._mgValue.str = textToInsert;
100
- this._intVal1 = startPosition;
101
- this.Invoke();
102
- return this._mgValue.boolVal;
103
- }
104
- caretPosGet(control, line) {
105
- this._commandType = InteractiveCommandType.GET_CARET_POS;
106
- this._obj2 = control;
107
- this._line = line;
108
- this._mgValue = new MgValue();
109
- this.Invoke();
110
- return this._mgValue.number;
111
- }
112
- RefreshPage(navigateToRootRoute, initialUrl) {
113
- this._commandType = InteractiveCommandType.REFRESH_PAGE;
114
- this._boolVal = navigateToRootRoute;
115
- this._obj1 = initialUrl;
116
- this.Invoke();
117
- return;
118
- }
119
- getRowsInPage(control) {
120
- this._commandType = InteractiveCommandType.GET_ROWS_IN_PAGE;
121
- this._obj2 = control;
122
- this.Invoke();
123
- return this._intVal1;
124
- }
125
- getMaxRowsInPaginatedTable(control) {
126
- this._commandType = InteractiveCommandType.GET_MAX_ROWS_IN_PAGINATED_TABLE;
127
- this._obj2 = control;
128
- this.Invoke();
129
- return this._intVal1;
130
- }
131
- getLastRoute() {
132
- this._commandType = InteractiveCommandType.GET_LAST_ROUTE;
133
- this.Invoke();
134
- return this.resultString;
135
- }
136
- ExecuteCallJS(form, formName, functionName, args) {
137
- this._commandType = InteractiveCommandType.CALL_JS;
138
- this._obj2 = form;
139
- this.controlName = formName;
140
- this._str = functionName;
141
- this.arguments = args;
142
- this.Invoke();
143
- return this.resultString;
144
- }
145
- Invoke() {
146
- GuiCommandQueue.getInstance().invoke();
147
- if (this._obj2 instanceof ControlBase) {
148
- let controlBase = this._obj2;
149
- this.TaskTag = controlBase.TaskTag;
150
- this.controlName = controlBase.UniqueName;
151
- }
152
- else if (this._obj2 instanceof GuiMgForm) {
153
- let guiMgForm = this._obj2;
154
- this.TaskTag = guiMgForm.TaskTag;
155
- }
156
- else
157
- this.TaskTag = '0';
158
- UIBridge.getInstance().ExecuteInteractiveCommand(this);
159
- }
160
- onGetRowsInPage() {
161
- }
162
- }
163
- export class GuiInteractive extends GuiInteractiveBase {
164
- }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpSW50ZXJhY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL2d1aS9sb3cvR3VpSW50ZXJhY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsTUFBTSxDQUFOLElBQVksc0JBZVg7QUFmRCxXQUFZLHNCQUFzQjtJQUNoQyw2RUFBUyxDQUFBO0lBQ1QscUZBQWEsQ0FBQTtJQUNiLGlGQUFXLENBQUE7SUFDWCw2RUFBUyxDQUFBO0lBQ1QscUZBQWEsQ0FBQTtJQUNiLDJGQUFnQixDQUFBO0lBQ2hCLHFGQUFhLENBQUE7SUFDYixtRkFBWSxDQUFBO0lBQ1osMkZBQWdCLENBQUE7SUFDaEIscUtBQXFELENBQUE7SUFDckQsZ0dBQWtCLENBQUE7SUFDbEIsMEhBQStCLENBQUE7SUFDL0IsMEVBQU8sQ0FBQTtJQUNQLHdGQUFjLENBQUE7QUFDaEIsQ0FBQyxFQWZXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFlakM7QUFHRCxNQUFNLE9BQWdCLGtCQUFrQjtJQW1CdEM7UUFsQkEsaUJBQVksR0FBMkIsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFFM0IsU0FBSSxHQUFXLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsYUFB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RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtDQUVyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuLi9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge01nVmFsdWV9IGZyb20gJy4uL01nVmFsdWUnO1xyXG5pbXBvcnQge0d1aU1nRm9ybX0gZnJvbSAnLi4vR3VpTWdGb3JtJztcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gJy4uLy4uL0V2ZW50cyc7XHJcbmltcG9ydCB7VUlCcmlkZ2V9IGZyb20gJy4uLy4uL1VJQnJpZGdlJztcclxuaW1wb3J0IHtDb250cm9sQmFzZX0gZnJvbSAnLi4vQ29udHJvbEJhc2UnO1xyXG5pbXBvcnQge0d1aUNvbW1hbmRRdWV1ZX0gZnJvbSAnLi9HdWlDb21tYW5kUXVldWUnO1xyXG5cclxuZXhwb3J0IGVudW0gSW50ZXJhY3RpdmVDb21tYW5kVHlwZSB7XHJcbiAgR0VUX1ZBTFVFLFxyXG4gIEdFVF9UT1BfSU5ERVgsXHJcbiAgTUVTU0FHRV9CT1gsXHJcbiAgU0VUX1RJVExFLFxyXG4gIFNFVF9FRElUX1RFWFQsXHJcbiAgSU5TRVJUX0VESVRfVEVYVCxcclxuICBHRVRfQ0FSRVRfUE9TLFxyXG4gIFJFRlJFU0hfUEFHRSxcclxuICBHRVRfUk9XU19JTl9QQUdFLFxyXG4gIFNFVF9HRVRfU1VHR0VTVEVEX1ZBTFVFX0ZPUl9DSE9JQ0VfQ09OVFJPTF9PTl9UQUdEQVRBLFxyXG4gIEdFVF9JU19ST1dfRURJVElORyxcclxuICBHRVRfTUFYX1JPV1NfSU5fUEFHSU5BVEVEX1RBQkxFLFxyXG4gIENBTExfSlMsXHJcbiAgR0VUX0xBU1RfUk9VVEVcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PiBHdWlVdGlscyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIEdVSSBsYXllcjwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1aUludGVyYWN0aXZlQmFzZSB7XHJcbiAgX2NvbW1hbmRUeXBlOiBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlID0gMDtcclxuICBUYXNrVGFnOiBzdHJpbmcgPSBudWxsO1xyXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBfc3RyOiBzdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDApO1xyXG4gIF9pbnRWYWwxOiBudW1iZXIgPSAwO1xyXG4gIF9saW5lOiBudW1iZXIgPSAwO1xyXG4gIF9vYmoxOiBhbnkgPSBudWxsO1xyXG4gIF9wYXJhbWV0ZXJzOiBhbnlbXSA9IG51bGw7XHJcbiAgX2Jvb2xWYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfb2JqMjogYW55ID0gbnVsbDtcclxuICBfbWdWYWx1ZTogTWdWYWx1ZSA9IG51bGw7XHJcbiAgYXJndW1lbnRzIDogQXJyYXk8YW55PiA7XHJcbiAgcmVzdWx0U3RyaW5nIDogc3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgwKTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDb25zdHJ1Y3RvciA6IHNldHMgdGhlIGNvbnRleHRJRCBmb3IgdGhlIGN1cnJlbnQgY29tbWFuZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUaGlzIG1ldGhvZGUgaXMgc2V0IFRSVUVcXEZBTFNFIHRoYXQgR3VpVXRpbGVzXFxHZXRWYWx1ZSgpIG1ldGhvZCB3aWxsIGJlIHVzZVxyXG4gIC8vLyB0aGlzIGZhbGcgc2F5IGlmIHRvIHJldHVybiB0aGUgOiAodHJ1ZSkgc3VnZ2VzdGVkIHZhbHVlIG9yIChmYWxzZSl0aGUgcmVhbCB2YWx1ZVxyXG4gIC8vLyB0aGlzIG1ldGhvZCBpcyB1c2UgZm9yIE1HX0FDVF9DVFJMX01PRElGWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmV0U3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIHNldEdldFN1Z2dlc3RlZFZhbHVlT2ZDaG9pY2VDb250cm9sT25UYWdEYXRhKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCByZXRTdWdnZXN0ZWRWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLlNFVF9HRVRfU1VHR0VTVEVEX1ZBTFVFX0ZPUl9DSE9JQ0VfQ09OVFJPTF9PTl9UQUdEQVRBO1xyXG4gICAgdGhpcy5fb2JqMiA9IGN0cmw7XHJcbiAgICB0aGlzLl9saW5lID0gbGluZTtcclxuICAgIHRoaXMuX2Jvb2xWYWwgPSByZXRTdWdnZXN0ZWRWYWx1ZTtcclxuICAgIHRoaXMuSW52b2tlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBHZXQgdmFsdWUgb2YgdGhlIGNvbnRyb2w8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2JqZWN0XCI+YSByZWZlcmVuY2UgdG8gdGhlIHJlbGV2YW50IG9iamVjdDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVjdFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgdGhhdCBvbiByZXR1cm4gd2lsbCBjb250YWluIHRoZSByZXF1ZXN0ZWQgdmFsdWVzIG9uIHN0cmluZzwvcGFyYW0+XHJcbiAgZ2V0VmFsdWUob2JqOiBhbnksIGxpbmU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB0aGlzLl9jb21tYW5kVHlwZSA9IEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX1ZBTFVFO1xyXG4gICAgdGhpcy5fb2JqMiA9IG9iajtcclxuXHJcbiAgICB0aGlzLl9saW5lID0gbGluZTtcclxuICAgIHRoaXMuX21nVmFsdWUgPSBuZXcgTWdWYWx1ZSgpO1xyXG4gICAgdGhpcy5JbnZva2UoKTtcclxuICAgIHJldHVybiB0aGlzLl9tZ1ZhbHVlLm9iajtcclxuICB9XHJcblxyXG5cclxuICBnZXRUb3BJbmRleCh0YWJsZWNvbnRyb2w6IEd1aU1nQ29udHJvbCk6IG51bWJlciB7XHJcbiAgICB0aGlzLl9jb21tYW5kVHlwZSA9IEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX1RPUF9JTkRFWDtcclxuICAgIHRoaXMuX29iajIgPSB0YWJsZWNvbnRyb2w7XHJcbiAgICB0aGlzLkludm9rZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludFZhbDE7XHJcbiAgfVxyXG5cclxuICBnZXRJc1Jvd0VkaXRpbmcodGFibGVjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgaXNMaW5lTW9kZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9JU19ST1dfRURJVElORztcclxuICAgIHRoaXMuX29iajIgPSB0YWJsZWNvbnRyb2w7XHJcbiAgICB0aGlzLl9pbnRWYWwxID0gbGluZTtcclxuICAgIHRoaXMuX2Jvb2xWYWwgPSBpc0xpbmVNb2RlO1xyXG5cclxuICAgIHRoaXMuSW52b2tlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5fYm9vbFZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5PcGVuIG1lc3NhZ2UgYm94IHdpdGggcGFyZW50IGZvcm08L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGl0bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IGNhbiBiZSBmbGFncyBvZiBTdHlsZXMuTVNHQk9YX3h4eCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbWVzc2FnZSBib3ggc3R5bGUgZnJvbSBTdHlsZXMuTVNHQk9YX1hYWDwvcmV0dXJucz5cclxuICBtZXNzYWdlQm94KHRpdGxlOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBzdHlsZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHRoaXMuX2NvbW1hbmRUeXBlID0gSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5NRVNTQUdFX0JPWDtcclxuICAgIHRoaXMuX21nVmFsdWUgPSBuZXcgTWdWYWx1ZSgpO1xyXG4gICAgdGhpcy5fbWdWYWx1ZS50aXRsZSA9IHRpdGxlO1xyXG4gICAgdGhpcy5fbWdWYWx1ZS5zdHIgPSAoKG1zZyA9PT0gbnVsbCkgPyAnJyA6IG1zZyk7XHJcbiAgICB0aGlzLl9tZ1ZhbHVlLnN0eWxlID0gc3R5bGU7XHJcbiAgICBFdmVudHMuUmVmcmVzaFRhYmxlcygpO1xyXG4gICAgdGhpcy5JbnZva2UoKTtcclxuICAgIHJldHVybiB0aGlzLl9tZ1ZhbHVlLm51bWJlcjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5zZXQgdGl0bGUgdG8gYnJvd3Nlcjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0b3BNb3N0Rm9ybVwiPnRoZSBwYXJlbnQgZm9ybSBvZiB0aGUgbWVzc2FnZSBib3g8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRpdGxlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG1lc3NhZ2UgYm94IHN0eWxlIGZyb20gU3R5bGVzLk1TR0JPWF9YWFg8L3JldHVybnM+XHJcbiAgc2V0VGl0bGUodG9wTW9zdEZvcm06IEd1aU1nRm9ybSwgdGl0bGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLlNFVF9USVRMRTtcclxuICAgIHRoaXMuX21nVmFsdWUgPSBuZXcgTWdWYWx1ZSgpO1xyXG4gICAgdGhpcy5fb2JqMiA9IHRvcE1vc3RGb3JtO1xyXG4gICAgdGhpcy5fbWdWYWx1ZS50aXRsZSA9ICgodGl0bGUgPT09IG51bGwpID8gJycgOiB0aXRsZSk7XHJcbiAgICB0aGlzLkludm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBzZXQgdGhlIHRleHQgdG8gdGhlIHRoZSBjb250cm9sXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICBzZXRFZGl0VGV4dChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgdGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLl9jb21tYW5kVHlwZSA9IEludGVyYWN0aXZlQ29tbWFuZFR5cGUuU0VUX0VESVRfVEVYVDtcclxuICAgIHRoaXMuX29iajIgPSBjb250cm9sO1xyXG4gICAgdGhpcy5fbGluZSA9IGxpbmU7XHJcbiAgICB0aGlzLl9tZ1ZhbHVlID0gbmV3IE1nVmFsdWUoKTtcclxuICAgIHRoaXMuX21nVmFsdWUuc3RyID0gdGV4dDtcclxuXHJcbiAgICB0aGlzLkludm9rZSgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9tZ1ZhbHVlLmJvb2xWYWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGluc2VydCB0aGUgdGV4dCB0byB0aGUgdGhlIGNvbnRyb2wgYXQgdGhlIGdpdmVuIHBvc2l0aW9uXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICBpbnNlcnRFZGl0VGV4dChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCB0ZXh0VG9JbnNlcnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLklOU0VSVF9FRElUX1RFWFQ7XHJcbiAgICB0aGlzLl9vYmoyID0gY29udHJvbDtcclxuICAgIHRoaXMuX2xpbmUgPSBsaW5lO1xyXG4gICAgdGhpcy5fbWdWYWx1ZSA9IG5ldyBNZ1ZhbHVlKCk7XHJcbiAgICB0aGlzLl9tZ1ZhbHVlLnN0ciA9IHRleHRUb0luc2VydDtcclxuICAgIHRoaXMuX2ludFZhbDEgPSBzdGFydFBvc2l0aW9uO1xyXG5cclxuICAgIHRoaXMuSW52b2tlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX21nVmFsdWUuYm9vbFZhbDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0IG9uIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBjYXJldFBvc0dldChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICB0aGlzLl9jb21tYW5kVHlwZSA9IEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0NBUkVUX1BPUztcclxuICAgIHRoaXMuX29iajIgPSBjb250cm9sO1xyXG4gICAgdGhpcy5fbGluZSA9IGxpbmU7XHJcblxyXG4gICAgdGhpcy5fbWdWYWx1ZSA9IG5ldyBNZ1ZhbHVlKCk7XHJcbiAgICB0aGlzLkludm9rZSgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9tZ1ZhbHVlLm51bWJlcjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmVmcmVzaCBwYWdlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBSZWZyZXNoUGFnZShuYXZpZ2F0ZVRvUm9vdFJvdXRlOiBib29sZWFuLCBpbml0aWFsVXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2NvbW1hbmRUeXBlID0gSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5SRUZSRVNIX1BBR0U7XHJcbiAgICB0aGlzLl9ib29sVmFsID0gbmF2aWdhdGVUb1Jvb3RSb3V0ZTtcclxuICAgIHRoaXMuX29iajEgPSBpbml0aWFsVXJsO1xyXG4gICAgdGhpcy5JbnZva2UoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZXR1cm4gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0Um93c0luUGFnZShjb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBudW1iZXIge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9ST1dTX0lOX1BBR0U7XHJcbiAgICB0aGlzLl9vYmoyID0gY29udHJvbDtcclxuICAgIHRoaXMuSW52b2tlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5faW50VmFsMTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmV0dXJuIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldE1heFJvd3NJblBhZ2luYXRlZFRhYmxlKGNvbnRyb2w6IEd1aU1nQ29udHJvbCk6IG51bWJlciB7XHJcbiAgICB0aGlzLl9jb21tYW5kVHlwZSA9IEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX01BWF9ST1dTX0lOX1BBR0lOQVRFRF9UQUJMRTtcclxuICAgIHRoaXMuX29iajIgPSBjb250cm9sO1xyXG4gICAgdGhpcy5JbnZva2UoKTtcclxuICAgIHJldHVybiB0aGlzLl9pbnRWYWwxO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGxhc3Qgcm91dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExhc3RSb3V0ZSgpOiBzdHJpbmcge1xyXG4gICAgdGhpcy5fY29tbWFuZFR5cGUgPSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9MQVNUX1JPVVRFO1xyXG4gICAgdGhpcy5JbnZva2UoKTtcclxuICAgIHJldHVybiB0aGlzLnJlc3VsdFN0cmluZztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgRXhlY3V0ZUNhbGxKUyhmb3JtICwgZm9ybU5hbWU6IHN0cmluZywgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxhbnk+KTogc3RyaW5nIHtcclxuICAgIHRoaXMuX2NvbW1hbmRUeXBlID0gSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5DQUxMX0pTO1xyXG4gICAgdGhpcy5fb2JqMiA9IGZvcm07XHJcbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gZm9ybU5hbWU7XHJcbiAgICB0aGlzLl9zdHIgPSBmdW5jdGlvbk5hbWU7XHJcbiAgICB0aGlzLmFyZ3VtZW50cyA9IGFyZ3M7XHJcbiAgICB0aGlzLkludm9rZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVzdWx0U3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDYWxscyBSdW4oKSBzeW5jaHJvbm91c2x5IHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmQuXHJcbiAgLy8vIEJ1dCBiZWZvcmUgdGhhdCwgaXQgZXhlY3V0ZXMgdGhlIEd1aUNvbW1hbmRRdWV1ZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgSW52b2tlKCk6IHZvaWQge1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuaW52b2tlKCk7XHJcbiAgICBpZiAodGhpcy5fb2JqMiBpbnN0YW5jZW9mIENvbnRyb2xCYXNlKSB7XHJcbiAgICAgIGxldCBjb250cm9sQmFzZTogQ29udHJvbEJhc2UgPSA8Q29udHJvbEJhc2U+dGhpcy5fb2JqMjtcclxuICAgICAgdGhpcy5UYXNrVGFnID0gY29udHJvbEJhc2UuVGFza1RhZztcclxuICAgICAgdGhpcy5jb250cm9sTmFtZSA9IGNvbnRyb2xCYXNlLlVuaXF1ZU5hbWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX29iajIgaW5zdGFuY2VvZiBHdWlNZ0Zvcm0pIHtcclxuICAgICAgbGV0IGd1aU1nRm9ybTogR3VpTWdGb3JtID0gPEd1aU1nRm9ybT50aGlzLl9vYmoyO1xyXG4gICAgICB0aGlzLlRhc2tUYWcgPSBndWlNZ0Zvcm0uVGFza1RhZztcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLlRhc2tUYWcgPSAnMCc7IC8vIGdlbmVyYWwgY29tbWFuZFxyXG5cclxuICAgIFVJQnJpZGdlLmdldEluc3RhbmNlKCkuRXhlY3V0ZUludGVyYWN0aXZlQ29tbWFuZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW1wbGVtZW50cyB0aGUgUnVubmFibGUgcnVuIG1ldGhvZCBmb3IgY2FsbGluZyBEaXNwbGF5LnN5bmNFeGVjKCk8L3N1bW1hcnk+XHJcbiAgLy8gUnVuKCk6IHZvaWQge1xyXG4gIC8vICAgLy8gU2V0cyB0aGUgY3VycmVudENvbnRleHRJRFxyXG4gIC8vICAgbGV0IGNvbnRleHRJREd1YXJkID0gbmV3IENvbnRleHRJREd1YXJkKHRoaXMuX2NvbnRleHRJRCk7XHJcbiAgLy8gICB0cnkge1xyXG4gIC8vICAgICBzd2l0Y2ggKHRoaXMuX2NvbW1hbmRUeXBlKSB7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9GT05UX01FVFJJQ1M6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0Rm9udE1ldHJpY3MoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfUkVTT0xVVElPTjpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRSZXNvbHV0aW9uKCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0JPVU5EUzpcclxuICAvLyAgICAgICAgIHRoaXMub25Cb3VuZHMoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfVkFMVUU6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uVmFsdWUoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5TRVRfQlJPV1NFUl9URVhUOlxyXG4gIC8vICAgICAgICAgdGhpcy5vblNldEJyb3dzZXJUZXh0KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0JST1dTRVJfVEVYVDpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRCcm93c2VyVGV4dCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkJST1dTRVJfRVhFQ1VURTpcclxuICAvLyAgICAgICAgIHRoaXMub25Ccm93c2VyRXhlY3V0ZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9UT1BfSU5ERVg6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0VG9wSW5kZXgoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5NRVNTQUdFX0JPWDpcclxuICAvLyAgICAgICAgIHRoaXMub25NZXNzYWdlQm94KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuRElSRUNUT1JZX0RJQUxPR19CT1g6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uRGlyZWN0b3J5RGlhbG9nQm94KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0NMSUVOVF9CT1VORFM6XHJcbiAgLy8gICAgICAgICB0aGlzLmdldENsaWVudEJvdW5kcygpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLlNFVF9FRElUX1RFWFQ6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uU2V0RWRpdFRleHQoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5JTlNFUlRfRURJVF9URVhUOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkluc2VydEVkaXRUZXh0KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuU0VUX1NFTEVDVElPTjpcclxuICAvLyAgICAgICAgIHRoaXMub25TZXRTZWxlY3Rpb24oKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfU0VMRUNUSU9OOlxyXG4gIC8vICAgICAgICAgdGhpcy5vblNlbGVjdGlvbkdldCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9DQVJFVF9QT1M6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uQ2FyZXRQb3NHZXQoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfSVNfVE9QX09GX1RFWFRCT1g6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0SXNUb3BPZlRleHRCb3goKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfSVNfRU5EX09GX1RFWFRCT1g6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0SXNFbmRPZlRleHRCb3goKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5DTElQQk9BUkRfR0VUX0NPTlRFTlQ6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uQ2xpcGJvYXJkUmVhZCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkNMSVBCT0FSRF9TRVRfQ09OVEVOVDpcclxuICAvLyAgICAgICAgIHRoaXMub25DbGlwYm9hcmRXcml0ZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkNMSVBCT0FSRF9QQVNURTpcclxuICAvLyAgICAgICAgIHRoaXMub25DbGlwYm9hcmRQYXN0ZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLlBPU1RfS0VZX0VWRU5UOlxyXG4gIC8vICAgICAgICAgdGhpcy5vblBvc3RLZXlFdmVudCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLlBPU1RfQ0hBUl9FVkVOVDpcclxuICAvLyAgICAgICAgIHRoaXMub25Qb3N0Q2hhckV2ZW50KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuU0VUX0NVUlNPUjpcclxuICAvLyAgICAgICAgIHRoaXMub25TZXRDdXJzb3IoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5ESVNQT1NFX0FMTF9GT1JNUzpcclxuICAvLyAgICAgICAgIHRoaXMub25EaXNwb3NlQWxsRm9ybXMoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfUk9XU19JTl9QQUdFOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkdldFJvd3NJblBhZ2UoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfSElEREVOX1JPV1NfQ09VTlRfSU5fVEFCTEU6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0SGlkZGVuUm93c0NvdW50SW5UYWJsZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkZJTEVfT1BFTl9ESUFMT0dfQk9YOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkZpbGVPcGVuRGlhbG9nQm94KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuRklMRV9TQVZFX0RJQUxPR19CT1g6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uRmlsZVNhdmVEaWFsb2dCb3goKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5DUkVBVEVfRElBTE9HOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkNyZWF0ZURpYWxvZygpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLk9QRU5fRElBTE9HOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbk9wZW5EaWFsb2coKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5DTE9TRV9ESUFMT0c6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uQ2xvc2VEaWFsb2coKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5TRVRfR0VUX1NVR0dFU1RFRF9WQUxVRV9GT1JfQ0hPSUNFX0NPTlRST0xfT05fVEFHREFUQTpcclxuICAvLyAgICAgICAgIHRoaXMuT25TZXRHZXRTdWdnZXN0ZWRWYWx1ZU9mQ2hvaWNlQ29udHJvbE9uVGFnRGF0YSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9MQVNUX1dJTkRPV19TVEFURTpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRMYXN0V2luZG93U3RhdGUoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfRlJBTUVTX0JPVU5EUzpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRGcmFtZXNCb3VuZHMoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfTElOS0VEX1BBUkVOVF9JRFg6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0TGlua2VkUGFyZW50SWR4KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0ZPUk1fQk9VTkRTOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkdldEZvcm1Cb3VuZHMoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfQ09MVU1OU19TVEFURTpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRDb2x1bW5zU3RhdGUoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfRk9STV9IQU5ETEU6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0Rm9ybUhhbmRsZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9DVFJMX0hBTkRMRTpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXRDdHJsSGFuZGxlKCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuSVNfRk9STV9BQ1RJVkU6XHJcbiAgLy8gICAgICAgICB0aGlzLmlzRm9ybUFjdGl2ZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9EUk9QUEVEX0RBVEE6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0RHJvcHBlZERhdGEoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfRFJPUFBFRF9QT0lOVDpcclxuICAvLyAgICAgICAgIHRoaXMub25HZXREcm9wcGVkUG9pbnQoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5HRVRfRFJPUFBFRF9TRUxFQ1RJT046XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0RHJvcHBlZFNlbGVjdGlvbigpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkRST1BfRk9STUFUX1NVUFBPUlRFRDpcclxuICAvLyAgICAgICAgIHRoaXMub25DaGVja0Ryb3BGb3JtYXRQcmVzZW50KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX0lTX0JFR0lOX0RSQUc6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uR2V0SXNCZWdpbkRyYWcoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5BQ1RJVkFURV9ORVhUX09SX1BSRVZJT1VTX01ESV9DSElMRDpcclxuICAvLyAgICAgICAgIHRoaXMuT25BY3RpdmF0ZU5leHRPclByZXZpb3VzTURJQ2hpbGQoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5TRU5EX0lNRV9NU0c6XHJcbiAgLy8gICAgICAgICB0aGlzLm9uU2VuZEltZU1zZygpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkNBTl9GT0NVUzpcclxuICAvLyAgICAgICAgIHRoaXMub25DYW5Gb2N1cygpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9TRUxFQ1RFRF9JTkRJQ0U6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uR2V0U2VsZWN0ZWRJbmRpY2UoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5TRVRfU1VHR0VTVEVEX1ZBTFVFOlxyXG4gIC8vICAgICAgICAgdGhpcy5vblNldFN1Z2dlc3RlZFZhbHVlKCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuTUFQX1dJREdFVF9UT19HVUlfT0JKRUNUOlxyXG4gIC8vICAgICAgICAgdGhpcy5NYXBXaWRnZXQoKTtcclxuICAvLyAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgIGNhc2UgSW50ZXJhY3RpdmVDb21tYW5kVHlwZS5SRU1PVkVfRE5fQ09OVFJPTF9WQUxVRV9DSEFOR0VEX0hBTkRMRVI6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uUmVtb3ZlRE5Db250cm9sVmFsdWVDaGFuZ2VkSGFuZGxlcigpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkFERF9ETl9DT05UUk9MX1ZBTFVFX0NIQU5HRURfSEFORExFUjpcclxuICAvLyAgICAgICAgIHRoaXMuT25BZGRETkNvbnRyb2xWYWx1ZUNoYW5nZWRIYW5kbGVyKCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuR0VUX1JURl9WQUxVRV9CRUZPUkVfRU5URVJJTkdfQ09OVFJPTDpcclxuICAvLyAgICAgICAgIHRoaXMuT25HZXRSdGZWYWx1ZUJlZm9yZUVudGVyaW5nQ29udHJvbCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9NRElfQ0hJTERfQ09VTlQ6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uR2V0TURJQ2hpbGRDb3VudCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkFDVElWQVRFX0ZPUk06XHJcbiAgLy8gICAgICAgICB0aGlzLk9uQWN0aXZhdGVGb3JtKCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuRU5BQkxFX01FTlVfRU5UUlk6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uRW5hYmxlTWVudUVudHJ5KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuU0hPV19DT05URVhUX01FTlU6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uU2hvd0NvbnRleHRNZW51KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgICBjYXNlIEludGVyYWN0aXZlQ29tbWFuZFR5cGUuSVNfQ09NQk9fRFJPUFBFRF9ET1dOOlxyXG4gIC8vICAgICAgICAgdGhpcy5PbklzQ29tYm9Ecm9wcGVkRG93bmRTdGF0ZSgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLklOVk9LRV9VRFBDT01NQU5EOlxyXG4gIC8vICAgICAgICAgdGhpcy5vbkludm9rZVVEUCgpO1xyXG4gIC8vICAgICAgICAgYnJlYWs7XHJcbiAgLy8gICAgICAgY2FzZSBJbnRlcmFjdGl2ZUNvbW1hbmRUeXBlLkdFVF9IQVNJTkRFTlQ6XHJcbiAgLy8gICAgICAgICB0aGlzLk9uR2V0SGFzSW5kZW50KCk7XHJcbiAgLy8gICAgICAgICBicmVhaztcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgY2F0Y2ggKGV4KSB7XHJcbiAgLy8gICAgIGlmIChleCBpbnN0YW5jZW9mIEV4Y2VwdGlvbikge1xyXG4gIC8vICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4KTtcclxuICAvLyAgICAgICB0aHJvdyBleDtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlXHJcbiAgLy8gICAgICAgdGhyb3cgZXg7IC8vIFJlc2V0IHRoZSBjdXJyZW50IGNvbnRleHRJRC5cclxuICAvLyAgIH1cclxuICAvLyAgIGZpbmFsbHkge1xyXG4gIC8vICAgICBjb250ZXh0SURHdWFyZC5EaXNwb3NlKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZ2V0IG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgb25HZXRSb3dzSW5QYWdlKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHdWlJbnRlcmFjdGl2ZSBleHRlbmRzIEd1aUludGVyYWN0aXZlQmFzZSB7XHJcblxyXG59XHJcbiJdfQ==
@@ -1,20 +0,0 @@
1
- export class Styles {
2
- }
3
- Styles.MSGBOX_BUTTON_OK = 0x00000000;
4
- Styles.MSGBOX_BUTTON_OK_CANCEL = 0x00000001;
5
- Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE = 0x00000002;
6
- Styles.MSGBOX_BUTTON_YES_NO_CANCEL = 0x00000003;
7
- Styles.MSGBOX_BUTTON_YES_NO = 0x00000004;
8
- Styles.MSGBOX_BUTTON_RETRY_CANCEL = 0x00000005;
9
- Styles.MSGBOX_ICON_ERROR = 0x00000010;
10
- Styles.MSGBOX_ICON_QUESTION = 0x00000020;
11
- Styles.MSGBOX_ICON_EXCLAMATION = 0x00000030;
12
- Styles.MSGBOX_ICON_INFORMATION = 0x00000040;
13
- Styles.MSGBOX_ICON_WARNING = Styles.MSGBOX_ICON_EXCLAMATION;
14
- Styles.MSGBOX_RESULT_OK = 1;
15
- Styles.MSGBOX_RESULT_CANCEL = 2;
16
- Styles.MSGBOX_RESULT_ABORT = 3;
17
- Styles.MSGBOX_RESULT_RETRY = 4;
18
- Styles.MSGBOX_RESULT_YES = 6;
19
- Styles.MSGBOX_RESULT_NO = 7;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL2d1aS9sb3cvU3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFRLE1BQU07O0FBTVYsdUJBQWdCLEdBQVcsVUFBVSxDQUFDO0FBQ3RDLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM3Qyx1Q0FBZ0MsR0FBVyxVQUFVLENBQUM7QUFDdEQsa0NBQTJCLEdBQVcsVUFBVSxDQUFDO0FBQ2pELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyxpQ0FBMEIsR0FBVyxVQUFVLENBQUM7QUFFaEQsd0JBQWlCLEdBQVcsVUFBVSxDQUFDO0FBQ3ZDLDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyw4QkFBdUIsR0FBVyxVQUFVLENBQUM7QUFDN0MsOEJBQXVCLEdBQVcsVUFBVSxDQUFDO0FBQzlDLDBCQUFtQixHQUFXLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztBQUk3RCx1QkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDckIsMkJBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLDBCQUFtQixHQUFHLENBQUMsQ0FBQztBQUN4QiwwQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFFeEIsd0JBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLHVCQUFnQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyAgU3R5bGVzXHJcbntcclxuXHJcblxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAvLyBjb25maXJtYXRpb24gYm94XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX09LOiBudW1iZXIgPSAweDAwMDAwMDAwO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9PS19DQU5DRUw6IG51bWJlciA9IDB4MDAwMDAwMDE7XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX0FCT1JUX1JFVFJZX0lHTk9SRTogbnVtYmVyID0gMHgwMDAwMDAwMjtcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fWUVTX05PX0NBTkNFTDogbnVtYmVyID0gMHgwMDAwMDAwMztcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fWUVTX05POiBudW1iZXIgPSAweDAwMDAwMDA0O1xyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9SRVRSWV9DQU5DRUw6IG51bWJlciA9IDB4MDAwMDAwMDU7XHJcblxyXG4gIHN0YXRpYyAgTVNHQk9YX0lDT05fRVJST1I6IG51bWJlciA9IDB4MDAwMDAwMTA7XHJcbiAgc3RhdGljICBNU0dCT1hfSUNPTl9RVUVTVElPTjogbnVtYmVyID0gMHgwMDAwMDAyMDtcclxuICBzdGF0aWMgIE1TR0JPWF9JQ09OX0VYQ0xBTUFUSU9OOiBudW1iZXIgPSAweDAwMDAwMDMwO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0lDT05fSU5GT1JNQVRJT046IG51bWJlciA9IDB4MDAwMDAwNDA7XHJcbiAgc3RhdGljIE1TR0JPWF9JQ09OX1dBUk5JTkc6IG51bWJlciA9IFN0eWxlcy5NU0dCT1hfSUNPTl9FWENMQU1BVElPTjtcclxuXHJcblxyXG4gIC8vIG1lc3NhZ2UgYm94IHJlc3VsdFxyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX09LID0gMTtcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9DQU5DRUwgPSAyO1xyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX0FCT1JUID0gMztcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9SRVRSWSA9IDQ7XHJcblxyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX1lFUyA9IDY7XHJcbiAgc3RhdGljIE1TR0JPWF9SRVNVTFRfTk8gPSA3O1xyXG5cclxuXHJcbn1cclxuIl19
@@ -1,43 +0,0 @@
1
- import { XmlParser } from "@magic-xpa/utils";
2
- import { Manager } from "../Manager";
3
- import { NString } from "@magic-xpa/mscorelib";
4
- export class RuntimeContextBase {
5
- constructor() {
6
- this._insertMode = false;
7
- this._lastCoordinates = new Array(4);
8
- this.ContextID = '\0';
9
- this.Parser = null;
10
- this.FrameForm = null;
11
- this.LastClickedCtrlName = null;
12
- this.RemovedContextFromServer = false;
13
- this.RemovingContextFromServer = false;
14
- this.CurrentClickedCtrl = null;
15
- this.CurrentClickedRadio = null;
16
- this.DefaultStatusMsg = null;
17
- this.LastClickCoordinatesAreInPixels = false;
18
- }
19
- Init(contextID) {
20
- this.ContextID = contextID;
21
- this.LastClickedCtrlName = "";
22
- this._insertMode = true;
23
- Manager.SetCurrentContextID(contextID);
24
- this.Parser = new XmlParser();
25
- }
26
- SaveLastClickInfo(controlName, clientX, clientY, offsetX, offsetY, isInPixels) {
27
- this._lastCoordinates[0] = offsetX;
28
- this._lastCoordinates[1] = offsetY;
29
- this._lastCoordinates[2] = clientX;
30
- this._lastCoordinates[3] = clientY;
31
- this.LastClickCoordinatesAreInPixels = isInPixels;
32
- this.LastClickedCtrlName = "";
33
- if (!NString.IsNullOrEmpty(controlName)) {
34
- this.LastClickedCtrlName = controlName;
35
- }
36
- }
37
- ToggleInsertMode() {
38
- this._insertMode = !this._insertMode;
39
- }
40
- }
41
- RuntimeContextBase.noContextId = null;
42
- RuntimeContextBase.Instance = new RuntimeContextBase();
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZUNvbnRleHRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L1J1bnRpbWVDb250ZXh0QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFN0MsTUFBTSxPQUFPLGtCQUFrQjtJQXNCN0I7UUFyQlEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQWEsSUFBSSxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixXQUFNLEdBQWMsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBZSxJQUFJLENBQUM7UUFDN0Isd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBR25DLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUMxQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFJM0MsdUJBQWtCLEdBQWtCLElBQUksQ0FBQztRQUV6Qyx3QkFBbUIsR0FBa0IsSUFBSSxDQUFDO1FBQzFDLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUNoQyxvQ0FBK0IsR0FBWSxLQUFLLENBQUM7SUFJekIsQ0FBQztJQUN6QixJQUFJLENBQUMsU0FBaUI7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE9BQWUsRUFBRSxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxVQUFtQjtRQUM1SCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRW5DLElBQUksQ0FBQywrQkFBK0IsR0FBRyxVQUFVLENBQUM7UUFFbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUdELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7O0FBeENNLDhCQUFXLEdBQVcsSUFBSSxDQUFDO0FBWTNCLDJCQUFRLEdBQXVCLElBQUksa0JBQWtCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7WG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuL2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vZ3VpL01nQ29udHJvbEJhc2VcIjtcclxuaW1wb3J0IHtNYW5hZ2VyfSBmcm9tIFwiLi4vTWFuYWdlclwiO1xyXG5pbXBvcnQge05TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb250ZXh0QmFzZSB7XHJcbiAgcHJpdmF0ZSBfaW5zZXJ0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xhc3RDb29yZGluYXRlczogbnVtYmVyW10gPSBuZXcgQXJyYXk8bnVtYmVyPig0KTtcclxuICBDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG4gIFBhcnNlcjogWG1sUGFyc2VyID0gbnVsbDsgLy8geG1sIHBhcnNlclxyXG4gIEZyYW1lRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7IC8vIGZvcm0gb2YgdGhlIE1ESS9TREkgZnJhbWVcclxuICBMYXN0Q2xpY2tlZEN0cmxOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBzdGF0aWMgbm9Db250ZXh0SWQ6IHN0cmluZyA9IG51bGw7XHJcbiAgUmVtb3ZlZENvbnRleHRGcm9tU2VydmVyOiBib29sZWFuID0gZmFsc2U7IC8vc2V0IHdoZW4gcmVxLiAnQ29udGV4dCBSZW1vdmUnIHNlbnQgdG8gc2VydmVyLlxyXG4gIFJlbW92aW5nQ29udGV4dEZyb21TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy9zZXQgd2hlbiBldmVudCAnQ29udGV4dCBSZW1vdmUncmFpc2VkXHJcbiAgLy8gQ3VycmVudENsaWNrZWRDdHJsIC0gYWx3YXlzIHBvaW50cyB0byB0aGUgY3VycmVudCBjbGlja2VkQ3RybC4gSW5pdGlhbGx5IG51bGwsIGJ1dCBvbmNlIGNsaWNrZWQgb24gYW55XHJcbiAgLy8gY29udHJvbCwgaXQgYWx3YXlzIHBvaW50cyB0byB0aGlzIGNsaWNrZWQgY3RybC4gQW5kLCBpcyByZXNldCBiYWNrIHRvIG51bGwgb25jZSB3ZSBoYXZlIHN1Y2Nlc3NmdWxseVxyXG4gIC8vIHBhcmtlZCBvbiB0aGUgcGFya2FibGUgY29udHJvbC5cclxuICBDdXJyZW50Q2xpY2tlZEN0cmw6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICBDdXJyZW50Q2xpY2tlZFJhZGlvOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBEZWZhdWx0U3RhdHVzTXNnOiBzdHJpbmcgPSBudWxsO1xyXG4gIExhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3RhdGljIEluc3RhbmNlOiBSdW50aW1lQ29udGV4dEJhc2UgPSBuZXcgUnVudGltZUNvbnRleHRCYXNlKCk7XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7IH1cclxuICBJbml0KGNvbnRleHRJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLkNvbnRleHRJRCA9IGNvbnRleHRJRDtcclxuICAgIHRoaXMuTGFzdENsaWNrZWRDdHJsTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLl9pbnNlcnRNb2RlID0gdHJ1ZTtcclxuICAgIE1hbmFnZXIuU2V0Q3VycmVudENvbnRleHRJRChjb250ZXh0SUQpO1xyXG4gICAgdGhpcy5QYXJzZXIgPSBuZXcgWG1sUGFyc2VyKCk7XHJcbiAgfVxyXG5cclxuICBTYXZlTGFzdENsaWNrSW5mbyhjb250cm9sTmFtZTogc3RyaW5nLCBjbGllbnRYOiBudW1iZXIsIGNsaWVudFk6IG51bWJlciwgb2Zmc2V0WDogbnVtYmVyLCBvZmZzZXRZOiBudW1iZXIsIGlzSW5QaXhlbHM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2xhc3RDb29yZGluYXRlc1swXSA9IG9mZnNldFg7IC8vIEdpdmVzIHRoZSBYIGxvY2F0aW9uIG9mIHRoZSBsYXN0IGNsaWNrLCByZWxhdGl2ZSB0byB0aGUgd2luZG93XHJcbiAgICB0aGlzLl9sYXN0Q29vcmRpbmF0ZXNbMV0gPSBvZmZzZXRZOyAvLyBHaXZlcyB0aGUgWSBsb2NhdGlvbiBvZiB0aGUgbGFzdCBjbGljaywgcmVsYXRpdmUgdG8gdGhlIHdpbmRvd1xyXG4gICAgdGhpcy5fbGFzdENvb3JkaW5hdGVzWzJdID0gY2xpZW50WDsgLy8gR2l2ZXMgdGhlIFggbG9jYXRpb24gb2YgdGhlIGxhc3QgY2xpY2ssIHJlbGF0aXZlIHRvIHRoZSBjb250cm9sIHdpdGhpbiB3aGljaCB0aGUgY2xpY2sgb2NjdXJyZWRcclxuICAgIHRoaXMuX2xhc3RDb29yZGluYXRlc1szXSA9IGNsaWVudFk7IC8vIEdpdmVzIHRoZSBZIGxvY2F0aW9uIG9mIHRoZSBsYXN0IGNsaWNrLCByZWxhdGl2ZSB0byB0aGUgY29udHJvbCB3aXRoaW4gd2hpY2ggdGhlIGNsaWNrIG9jY3VycmVkXHJcblxyXG4gICAgdGhpcy5MYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzID0gaXNJblBpeGVscztcclxuXHJcbiAgICB0aGlzLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBcIlwiOyAvLyBpcyBlbXB0eSBzdHJpbmdcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGNvbnRyb2xOYW1lKSkge1xyXG4gICAgICB0aGlzLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdG9nZ2xlIHRoZSBfaW5zZXJ0TW9kZSAoYmV0d2VlbiBpbnNlcnQgYW5kIG92ZXJ3cml0ZSkuIDwvc3VtbWFyeT5cclxuICBUb2dnbGVJbnNlcnRNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zZXJ0TW9kZSA9ICF0aGlzLl9pbnNlcnRNb2RlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,281 +0,0 @@
1
- import { Logger, StrUtil } from '@magic-xpa/utils';
2
- import { ApplicationException, Debug, Encoding, ISO_8859_1_Encoding, NNumber, NString } from '@magic-xpa/mscorelib';
3
- import { GuiConstants } from '../../GuiConstants';
4
- import { GuiEnvironment } from '../../GuiEnvironment';
5
- export class BlobType {
6
- static getContentType(blob) {
7
- try {
8
- let tokens = StrUtil.tokenize(blob, /,|;/);
9
- return tokens[4].charAt(0);
10
- }
11
- catch (Exception) {
12
- throw new ApplicationException(" in BlobType.getContentType blob is in invalid format");
13
- }
14
- }
15
- static getEmptyBlobPrefix(vecCellAttr) {
16
- return NString.Format("0,0,{0},{1},0", '\0', vecCellAttr);
17
- }
18
- static getBlobPrefixForContentType(contentType) {
19
- return NString.Format("0,0,{0},{0},{1};", '\0', contentType);
20
- }
21
- static getPrefix(str) {
22
- let idx = str.indexOf(';');
23
- return str.substr(0, idx + 1);
24
- }
25
- static getEncodingFromContentType(ContentType) {
26
- let encoding;
27
- if (ContentType === BlobType.CONTENT_TYPE_UNICODE)
28
- encoding = Encoding.Unicode;
29
- else if (ContentType === BlobType.CONTENT_TYPE_ANSI)
30
- encoding = GuiEnvironment.Environment.GetEncoding();
31
- else
32
- encoding = ISO_8859_1_Encoding.ISO_8859_1;
33
- return encoding;
34
- }
35
- static MbToUnicode(BytesInMb) {
36
- let result = null;
37
- try {
38
- let UnicodeString = GuiEnvironment.Environment.GetEncoding().GetString(BytesInMb, 0, BytesInMb.length);
39
- result = Encoding.Unicode.GetBytes(UnicodeString);
40
- }
41
- catch (Exception) {
42
- result = null;
43
- }
44
- return result;
45
- }
46
- static UnicodeToMb(BytesInUnicode) {
47
- let result = null;
48
- try {
49
- let UnicodeString = Encoding.Unicode.GetString(BytesInUnicode, 0, BytesInUnicode.length);
50
- result = GuiEnvironment.Environment.GetEncoding().GetBytes(UnicodeString);
51
- }
52
- catch (Exception) {
53
- result = null;
54
- }
55
- return result;
56
- }
57
- static getString(blob) {
58
- let result = null;
59
- let bytes = null;
60
- if (BlobType.isValidBlob(blob)) {
61
- let contentType = BlobType.getContentType(blob);
62
- if (contentType !== BlobType.CONTENT_TYPE_UNICODE)
63
- contentType = BlobType.CONTENT_TYPE_ANSI;
64
- try {
65
- bytes = BlobType.getBytes(blob);
66
- let encoding = BlobType.getEncodingFromContentType(contentType);
67
- result = encoding.GetString(bytes, 0, bytes.length);
68
- let index = result.indexOf('\0');
69
- if (index !== -1)
70
- result = result.substr(0, index);
71
- }
72
- catch (Exception) {
73
- result = null;
74
- }
75
- }
76
- else
77
- Debug.Assert(false);
78
- return result;
79
- }
80
- static createFromString(blobStr, contentType) {
81
- let blob = null;
82
- let srcContentType = contentType;
83
- let bytes = null;
84
- if (contentType !== BlobType.CONTENT_TYPE_UNICODE)
85
- srcContentType = BlobType.CONTENT_TYPE_ANSI;
86
- try {
87
- if (blobStr.constructor === ArrayBuffer) {
88
- bytes = new Uint8Array(blobStr);
89
- }
90
- else {
91
- let encoding = BlobType.getEncodingFromContentType(srcContentType);
92
- bytes = encoding.GetBytes(blobStr);
93
- }
94
- blob = BlobType.createFromBytes(bytes, contentType);
95
- }
96
- catch (Exception) {
97
- blob = null;
98
- }
99
- return blob;
100
- }
101
- static getBytes(str) {
102
- let bytes = null;
103
- let data = BlobType.removeBlobPrefix(str);
104
- try {
105
- let encoding = ISO_8859_1_Encoding.ISO_8859_1;
106
- bytes = encoding.GetBytes(data);
107
- }
108
- catch (Exception) {
109
- bytes = null;
110
- }
111
- return bytes;
112
- }
113
- static createFromBytes(bytes, contentType) {
114
- let blobStr = '';
115
- let blobPrefix;
116
- let blobData;
117
- blobPrefix = BlobType.getBlobPrefixForContentType(contentType);
118
- try {
119
- let encoding = ISO_8859_1_Encoding.ISO_8859_1;
120
- blobData = encoding.GetString(bytes, 0, bytes.length);
121
- }
122
- catch (Exception) {
123
- blobData = null;
124
- }
125
- blobStr = blobPrefix + blobData;
126
- return blobStr;
127
- }
128
- static copyBlob(dest, src) {
129
- let srcBytes;
130
- let destBytes;
131
- if (src === null)
132
- return null;
133
- else if (dest === null)
134
- return src;
135
- srcBytes = BlobType.getBytes(src);
136
- let destContentType = BlobType.getContentType(dest);
137
- let srcContentType = BlobType.getContentType(src);
138
- if (srcContentType === BlobType.CONTENT_TYPE_ANSI && destContentType === BlobType.CONTENT_TYPE_UNICODE)
139
- destBytes = BlobType.MbToUnicode(srcBytes);
140
- else if (srcContentType === BlobType.CONTENT_TYPE_UNICODE && destContentType === BlobType.CONTENT_TYPE_ANSI)
141
- destBytes = BlobType.UnicodeToMb(srcBytes);
142
- else
143
- destBytes = srcBytes;
144
- dest = BlobType.createFromBytes(destBytes, destContentType);
145
- return dest;
146
- }
147
- static removeBlobPrefix(source) {
148
- let idx;
149
- if (source !== null) {
150
- idx = source.indexOf(';');
151
- if (idx < 0)
152
- Logger.Instance.WriteToLog("Error: invalid blob prefix", true);
153
- return source.substr(idx + 1);
154
- }
155
- else
156
- return null;
157
- }
158
- static isValidBlob(blob) {
159
- let isValid = true;
160
- if (blob === null || blob.indexOf(';') < 0)
161
- isValid = false;
162
- if (isValid) {
163
- let contentType = BlobType.getContentType(blob);
164
- if (contentType !== BlobType.CONTENT_TYPE_ANSI && contentType !== BlobType.CONTENT_TYPE_BINARY && contentType !== BlobType.CONTENT_TYPE_UNICODE && contentType !== BlobType.CONTENT_TYPE_UNKNOWN)
165
- isValid = false;
166
- }
167
- return isValid;
168
- }
169
- static setContentType(str, contentType) {
170
- let result = "";
171
- try {
172
- let prefixLastIndex = str.indexOf(";");
173
- let prefix = str.substr(0, prefixLastIndex);
174
- let dataLength = str.length - (prefix.length + 1);
175
- let data = str.substr(prefixLastIndex + 1, dataLength);
176
- let prefixTokens = StrUtil.tokenize(prefix, /,|;/);
177
- for (let i = 0; i < GuiConstants.BLOB_PREFIX_ELEMENTS_COUNT; i = i + 1) {
178
- if (i === 4)
179
- result = result + contentType + ",";
180
- else
181
- result = result + prefixTokens[i] + ",";
182
- }
183
- return result.substr(0, result.length - 1) + ";" + data;
184
- }
185
- catch (Exception) {
186
- throw new ApplicationException(" in BlobType.setContentType : invalid format");
187
- }
188
- }
189
- static SetVecCellAttr(str, vecCellAttr) {
190
- let result = "";
191
- try {
192
- let prefixLastIndex = str.indexOf(";");
193
- let prefix = str.substr(0, prefixLastIndex);
194
- let data = str.substr(prefixLastIndex + 1);
195
- let tokens = StrUtil.tokenize(prefix, /,|;/);
196
- for (let i = 0; i < GuiConstants.BLOB_PREFIX_ELEMENTS_COUNT; i = i + 1) {
197
- if (i === 3)
198
- result = result + vecCellAttr + ",";
199
- else
200
- result = result + tokens[i] + ",";
201
- }
202
- return result.substr(0, result.length - 1) + ";" + data;
203
- }
204
- catch (Exception) {
205
- throw new ApplicationException(" in XMLparser.blobPrefixLength invalid format");
206
- }
207
- }
208
- static GetVecCellAttr(blobStr) {
209
- try {
210
- let tokens = StrUtil.tokenize(blobStr, /,|;/);
211
- return tokens[3].charAt(0);
212
- }
213
- catch (Exception) {
214
- throw new ApplicationException(" in BlobType.GetVecCellAttr(): blob is in invalid format");
215
- }
216
- }
217
- static blobPrefixLength(blob) {
218
- try {
219
- let prefixLength = blob.indexOf(';') + 1;
220
- let prefix = blob.substr(0, prefixLength);
221
- if (prefixLength > 0) {
222
- let tokens = StrUtil.tokenize(prefix, ",");
223
- if (tokens.length === GuiConstants.BLOB_PREFIX_ELEMENTS_COUNT)
224
- return prefixLength;
225
- }
226
- }
227
- catch (Exception) {
228
- }
229
- throw new ApplicationException(" in XMLparser.blobPrefixLength invalid format");
230
- }
231
- static getKey(blobStr) {
232
- let tokens = StrUtil.tokenize(blobStr, /,|;/);
233
- let key = 0;
234
- if (tokens.length > 5) {
235
- try {
236
- key = NNumber.Parse(tokens[0]);
237
- }
238
- catch (Exception) {
239
- }
240
- }
241
- return key;
242
- }
243
- static getBlobSize(blob) {
244
- let size = 0;
245
- try {
246
- let tokens = StrUtil.tokenize(blob, /,|;/);
247
- if (tokens.length > 5) {
248
- size = blob.length;
249
- for (let i = 0; i < 5; i = i + 1) {
250
- size = size - tokens[i].length;
251
- size = size - 1;
252
- }
253
- }
254
- }
255
- catch (Exception) {
256
- }
257
- return size;
258
- }
259
- static ParseContentType(contentType) {
260
- let newContentType = ' ';
261
- switch (contentType) {
262
- case 0:
263
- newContentType = BlobType.CONTENT_TYPE_UNKNOWN;
264
- break;
265
- case 1:
266
- newContentType = BlobType.CONTENT_TYPE_ANSI;
267
- break;
268
- case 2:
269
- newContentType = BlobType.CONTENT_TYPE_UNICODE;
270
- break;
271
- case 3:
272
- newContentType = BlobType.CONTENT_TYPE_BINARY;
273
- }
274
- return newContentType;
275
- }
276
- }
277
- BlobType.CONTENT_TYPE_UNKNOWN = '0';
278
- BlobType.CONTENT_TYPE_ANSI = '1';
279
- BlobType.CONTENT_TYPE_UNICODE = '2';
280
- BlobType.CONTENT_TYPE_BINARY = '3';
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvYlR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9CbG9iVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFvQixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sUUFBUTtJQVduQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDaEMsSUFBSTtZQUNGLElBQUksTUFBTSxHQUFhLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sU0FBUyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0gsQ0FBQztJQU9ELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFtQjtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBTUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLFdBQW1CO1FBQ3BELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQU9ELE1BQU0sQ0FB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QUFvQixHQUFXLEdBQUcsQ0FBQztBQUNuQywwQkFBaUIsR0FBVyxHQUFHLENBQUM7QUFDaEMsNkJBQW9CLEdBQVcsR0FBRyxDQUFDO0FBQ25DLDRCQUFtQixHQUFXLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciwgU3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgRGVidWcsIEVuY29kaW5nLCBJU09fODg1OV8xX0VuY29kaW5nLCBOTnVtYmVyLCBOU3RyaW5nIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBHdWlDb25zdGFudHMgfSBmcm9tICcuLi8uLi9HdWlDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBHdWlFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL0d1aUVudmlyb25tZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBCbG9iVHlwZSB7XHJcbiAgc3RhdGljIENPTlRFTlRfVFlQRV9VTktOT1dOOiBzdHJpbmcgPSAnMCc7XHJcbiAgc3RhdGljIENPTlRFTlRfVFlQRV9BTlNJOiBzdHJpbmcgPSAnMSc7XHJcbiAgc3RhdGljIENPTlRFTlRfVFlQRV9VTklDT0RFOiBzdHJpbmcgPSAnMic7XHJcbiAgc3RhdGljIENPTlRFTlRfVFlQRV9CSU5BUlk6IHN0cmluZyA9ICczJztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZXR1cm5zIHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGJsb2I8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYmxvYlwiPlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRDb250ZW50VHlwZShibG9iOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHRva2Vuczogc3RyaW5nW10gPSBTdHJVdGlsLnRva2VuaXplKGJsb2IsIC8sfDsvKTtcclxuICAgICAgcmV0dXJuIHRva2Vuc1s0XS5jaGFyQXQoMCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoRXhjZXB0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcIiBpbiBCbG9iVHlwZS5nZXRDb250ZW50VHlwZSBibG9iIGlzIGluIGludmFsaWQgZm9ybWF0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDcmVhdGVzIGFuIGVtcHR5IGJsb2IgcHJlZml4IHdpdGggYSBnaXZlbiBjZWxsIGF0dHJpYnV0ZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2ZWNDZWxsQXR0clwiPmluIGNhc2UgdGhpcyBibG9iIGlzIHZlY3RvciB0aGUgY2VsbHMgdHlwZSBlbHNlIDBcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGFuIGVtcHR5IGJsb2IgcHJlZml4IHdpdGhvdXQgdGhlICc7XCIgYXQgdGhlIGVuZFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGdldEVtcHR5QmxvYlByZWZpeCh2ZWNDZWxsQXR0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdChcIjAsMCx7MH0sezF9LDBcIiwgJ1xcMCcsIHZlY0NlbGxBdHRyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRUeXBlXCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGdldEJsb2JQcmVmaXhGb3JDb250ZW50VHlwZShjb250ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdChcIjAsMCx7MH0sezB9LHsxfTtcIiwgJ1xcMCcsIGNvbnRlbnRUeXBlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmV0dXJucyB0aGUgaGVhZGVyIG9ubHk8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGdldFByZWZpeChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgaWR4OiBudW1iZXIgPSBzdHIuaW5kZXhPZignOycpLyonOycqLztcclxuICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIGlkeCArIDEpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29udGVudFR5cGVcIj5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0RW5jb2RpbmdGcm9tQ29udGVudFR5cGUoQ29udGVudFR5cGU6IHN0cmluZyk6IEVuY29kaW5nIHtcclxuICAgIGxldCBlbmNvZGluZzogRW5jb2Rpbmc7XHJcblxyXG4gICAgaWYgKENvbnRlbnRUeXBlID09PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5JQ09ERSlcclxuICAgICAgZW5jb2RpbmcgPSBFbmNvZGluZy5Vbmljb2RlO1xyXG4gICAgZWxzZSBpZiAoQ29udGVudFR5cGUgPT09IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9BTlNJKVxyXG4gICAgICBlbmNvZGluZyA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldEVuY29kaW5nKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGVuY29kaW5nID0gSVNPXzg4NTlfMV9FbmNvZGluZy5JU09fODg1OV8xO1xyXG5cclxuICAgIHJldHVybiBlbmNvZGluZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBhbnNpIGJ5dGVzIHRvIHVuaWNvZGUgYnl0ZXMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJCeXRlc0luTWJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTWJUb1VuaWNvZGUoQnl0ZXNJbk1iOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XHJcbiAgICBsZXQgcmVzdWx0OiBVaW50OEFycmF5ID0gbnVsbDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgVW5pY29kZVN0cmluZzogc3RyaW5nID0gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0RW5jb2RpbmcoKS5HZXRTdHJpbmcoQnl0ZXNJbk1iLCAwLCBCeXRlc0luTWIubGVuZ3RoKTtcclxuICAgICAgcmVzdWx0ID0gRW5jb2RpbmcuVW5pY29kZS5HZXRCeXRlcyhVbmljb2RlU3RyaW5nKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChFeGNlcHRpb24pIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHVuaWNvZGUgYnl0ZXMgdG8gYW5zaSBieXRlcy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIkJ5dGVzSW5Vbmljb2RlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIFVuaWNvZGVUb01iKEJ5dGVzSW5Vbmljb2RlOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XHJcbiAgICBsZXQgcmVzdWx0OiBVaW50OEFycmF5ID0gbnVsbDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgVW5pY29kZVN0cmluZzogc3RyaW5nID0gRW5jb2RpbmcuVW5pY29kZS5HZXRTdHJpbmcoQnl0ZXNJblVuaWNvZGUsIDAsIEJ5dGVzSW5Vbmljb2RlLmxlbmd0aCk7XHJcblxyXG4gICAgICByZXN1bHQgPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRFbmNvZGluZygpLkdldEJ5dGVzKFVuaWNvZGVTdHJpbmcpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKEV4Y2VwdGlvbikge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQXNzdW1lcyB0aGUgZ2l2ZW4gYmxvYiBjb250YWlucyBhIHN0cmluZyBhbmQgcmV0dXJucyBpdC4gSWYgdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgYmxvYiBpcyBub3QgVW5pY29kZVxyXG4gIC8vLyB0aGVuIGFzc3VtZSBpdCBpcyBBTlNJLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYmxvYlwiPmEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYSBibG9iXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgc3RyaW5nIGNvbnRhaW5lZCBieSB0aGUgYmxvYlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGdldFN0cmluZyhibG9iOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IG51bGw7XHJcblxyXG4gICAgaWYgKEJsb2JUeXBlLmlzVmFsaWRCbG9iKGJsb2IpKSB7XHJcbiAgICAgIGxldCBjb250ZW50VHlwZTogc3RyaW5nID0gQmxvYlR5cGUuZ2V0Q29udGVudFR5cGUoYmxvYik7XHJcbiAgICAgIGlmIChjb250ZW50VHlwZSAhPT0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOSUNPREUpXHJcbiAgICAgICAgY29udGVudFR5cGUgPSBCbG9iVHlwZS5DT05URU5UX1RZUEVfQU5TSTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYnl0ZXMgPSBCbG9iVHlwZS5nZXRCeXRlcyhibG9iKTtcclxuXHJcbiAgICAgICAgbGV0IGVuY29kaW5nOiBFbmNvZGluZyA9IEJsb2JUeXBlLmdldEVuY29kaW5nRnJvbUNvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTtcclxuICAgICAgICByZXN1bHQgPSBlbmNvZGluZy5HZXRTdHJpbmcoYnl0ZXMsIDAsIGJ5dGVzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gcmVzdWx0LmluZGV4T2YoJ1xcMCcpLyonXHUwMDAwJyovO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyKDAsIGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBEZWJ1Zy5Bc3NlcnQoZmFsc2UpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENyZWF0ZSBhIGJsb2Igb2YgdGhlIHNwZWNpZmllZCBjb250ZW50IHR5cGUgZnJvbSB0aGUgZGlzcGxheSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImJsb2JTdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBjcmVhdGVGcm9tU3RyaW5nKGJsb2JTdHI6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgYmxvYjogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBzcmNDb250ZW50VHlwZTogc3RyaW5nID0gY29udGVudFR5cGU7XHJcbiAgICBsZXQgYnl0ZXM6IFVpbnQ4QXJyYXkgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250ZW50VHlwZSAhPT0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOSUNPREUpXHJcbiAgICAgIHNyY0NvbnRlbnRUeXBlID0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX0FOU0k7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYoYmxvYlN0ci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcclxuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KDxBcnJheUJ1ZmZlcj48YW55PmJsb2JTdHIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBlbmNvZGluZzogRW5jb2RpbmcgPSBCbG9iVHlwZS5nZXRFbmNvZGluZ0Zyb21Db250ZW50VHlwZShzcmNDb250ZW50VHlwZSk7XHJcblxyXG4gICAgICAgIGJ5dGVzID0gZW5jb2RpbmcuR2V0Qnl0ZXMoYmxvYlN0cik7XHJcbiAgICAgIH1cclxuICAgICAgYmxvYiA9IEJsb2JUeXBlLmNyZWF0ZUZyb21CeXRlcyhieXRlcywgY29udGVudFR5cGUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKEV4Y2VwdGlvbikge1xyXG4gICAgICBibG9iID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYmxvYjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gR2V0IGJsb2IgY29udGVudHMgYXMgYnl0ZSBhcnJheVxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYmxvYlwiPmNvbnRlbnRzIGluY2x1ZGluZyBibG9iIHByZWZpeFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gYnl0ZSBhcnJheSBhY2NvcmRpbmcgdG8gY29udGVudCB0eXBlIGluIGJsb2IgcHJlZml4XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0Qnl0ZXMoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IG51bGw7XHJcbiAgICBsZXQgZGF0YTogc3RyaW5nID0gQmxvYlR5cGUucmVtb3ZlQmxvYlByZWZpeChzdHIpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBlbmNvZGluZzogRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgIGJ5dGVzID0gZW5jb2RpbmcuR2V0Qnl0ZXMoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoRXhjZXB0aW9uKSB7XHJcbiAgICAgIGJ5dGVzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYnl0ZXM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENyZWF0ZSBhIGJsb2Igb2YgdGhlIHNwZWNpZmllZCBjb250ZW50IHR5cGUgZnJvbSB0aGUgYnl0ZSBhcnJheVxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQnl0ZXNcIj5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZW50VHlwZVwiPlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3RyaW5nXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgY3JlYXRlRnJvbUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5LCBjb250ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBibG9iU3RyID0gJyc7XHJcbiAgICBsZXQgYmxvYlByZWZpeDogc3RyaW5nO1xyXG4gICAgbGV0IGJsb2JEYXRhOiBzdHJpbmc7XHJcblxyXG4gICAgYmxvYlByZWZpeCA9IEJsb2JUeXBlLmdldEJsb2JQcmVmaXhGb3JDb250ZW50VHlwZShjb250ZW50VHlwZSk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGVuY29kaW5nOiBJU09fODg1OV8xX0VuY29kaW5nID0gSVNPXzg4NTlfMV9FbmNvZGluZy5JU09fODg1OV8xO1xyXG4gICAgICBibG9iRGF0YSA9IGVuY29kaW5nLkdldFN0cmluZyhieXRlcywgMCwgYnl0ZXMubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChFeGNlcHRpb24pIHtcclxuICAgICAgYmxvYkRhdGEgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGJsb2JTdHIgPSBibG9iUHJlZml4ICsgYmxvYkRhdGE7XHJcblxyXG4gICAgcmV0dXJuIGJsb2JTdHI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkZXN0XCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3JjXCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGNvcHlCbG9iKGRlc3Q6IHN0cmluZywgc3JjOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHNyY0J5dGVzOiBVaW50OEFycmF5O1xyXG4gICAgbGV0IGRlc3RCeXRlczogVWludDhBcnJheTtcclxuXHJcbiAgICBpZiAoc3JjID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGVsc2UgaWYgKGRlc3QgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBzcmM7XHJcblxyXG4gICAgc3JjQnl0ZXMgPSBCbG9iVHlwZS5nZXRCeXRlcyhzcmMpO1xyXG5cclxuICAgIGxldCBkZXN0Q29udGVudFR5cGU6IHN0cmluZyA9IEJsb2JUeXBlLmdldENvbnRlbnRUeXBlKGRlc3QpO1xyXG4gICAgbGV0IHNyY0NvbnRlbnRUeXBlOiBzdHJpbmcgPSBCbG9iVHlwZS5nZXRDb250ZW50VHlwZShzcmMpO1xyXG5cclxuICAgIGlmIChzcmNDb250ZW50VHlwZSA9PT0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX0FOU0kgJiYgZGVzdENvbnRlbnRUeXBlID09PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5JQ09ERSlcclxuICAgICAgZGVzdEJ5dGVzID0gQmxvYlR5cGUuTWJUb1VuaWNvZGUoc3JjQnl0ZXMpO1xyXG4gICAgZWxzZSBpZiAoc3JjQ29udGVudFR5cGUgPT09IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTklDT0RFICYmIGRlc3RDb250ZW50VHlwZSA9PT0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX0FOU0kpXHJcbiAgICAgIGRlc3RCeXRlcyA9IEJsb2JUeXBlLlVuaWNvZGVUb01iKHNyY0J5dGVzKTtcclxuICAgIGVsc2VcclxuICAgICAgZGVzdEJ5dGVzID0gc3JjQnl0ZXM7XHJcblxyXG4gICAgZGVzdCA9IEJsb2JUeXBlLmNyZWF0ZUZyb21CeXRlcyhkZXN0Qnl0ZXMsIGRlc3RDb250ZW50VHlwZSk7XHJcblxyXG4gICAgcmV0dXJuIGRlc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlbW92ZXMgYmxvYiBwcmVmaXggZnJvbSBzb3VyY2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic291cmNlXCI+LSBibG9iIHZhbHVlXHJcbiAgLy8vXHJcbiAgLy8vXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIHJlbW92ZUJsb2JQcmVmaXgoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGlkeDogbnVtYmVyO1xyXG4gICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xyXG4gICAgICBpZHggPSBzb3VyY2UuaW5kZXhPZignOycpO1xyXG4gICAgICBpZiAoaWR4IDwgMClcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiRXJyb3I6IGludmFsaWQgYmxvYiBwcmVmaXhcIiwgdHJ1ZSk7XHJcbiAgICAgIHJldHVybiBzb3VyY2Uuc3Vic3RyKGlkeCArIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gY2hlY2tzIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBibG9iPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImJsb2JcIj5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgdGhlIGJsb2IgaXMgdmFsaWRcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpc1ZhbGlkQmxvYihibG9iOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoYmxvYiA9PT0gbnVsbCB8fCBibG9iLmluZGV4T2YoJzsnKSA8IDApXHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICBsZXQgY29udGVudFR5cGU6IHN0cmluZyA9IEJsb2JUeXBlLmdldENvbnRlbnRUeXBlKGJsb2IpO1xyXG4gICAgICBpZiAoY29udGVudFR5cGUgIT09IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9BTlNJICYmIGNvbnRlbnRUeXBlICE9PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfQklOQVJZICYmIGNvbnRlbnRUeXBlICE9PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5JQ09ERSAmJiBjb250ZW50VHlwZSAhPT0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOS05PV04pXHJcbiAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0Q29udGVudFR5cGUoc3RyOiBzdHJpbmcsIGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgcHJlZml4TGFzdEluZGV4OiBudW1iZXIgPSBzdHIuaW5kZXhPZihcIjtcIik7XHJcbiAgICAgIGxldCBwcmVmaXg6IHN0cmluZyA9IHN0ci5zdWJzdHIoMCwgcHJlZml4TGFzdEluZGV4KTtcclxuXHJcbiAgICAgIGxldCBkYXRhTGVuZ3RoOiBudW1iZXIgPSBzdHIubGVuZ3RoIC0gKHByZWZpeC5sZW5ndGggKyAxKTtcclxuICAgICAgbGV0IGRhdGE6IHN0cmluZyA9IHN0ci5zdWJzdHIocHJlZml4TGFzdEluZGV4ICsgMSwgZGF0YUxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgcHJlZml4VG9rZW5zOiBzdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUocHJlZml4LCAvLHw7Lyk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgR3VpQ29uc3RhbnRzLkJMT0JfUFJFRklYX0VMRU1FTlRTX0NPVU5UOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gNClcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGNvbnRlbnRUeXBlICsgXCIsXCI7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgcHJlZml4VG9rZW5zW2ldICsgXCIsXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdC5zdWJzdHIoMCwgcmVzdWx0Lmxlbmd0aCAtIDEpICsgXCI7XCIgKyBkYXRhO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKEV4Y2VwdGlvbikge1xyXG4gICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oXCIgaW4gQmxvYlR5cGUuc2V0Q29udGVudFR5cGUgOiBpbnZhbGlkIGZvcm1hdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gUmVwbGFjZSB0aGUgdmVjdG9yJ3MgY2VsbCBhdHRyaWJ1dGUgaW4gdGhlIGJsb2IgcHJlZml4IGJ5IHRoZSBzcGVjaWZpZWQgb25lPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPmEgdmFsaWQgYmxvYiBzdHJpbmcgKGkuZS4gcHJlZml4O2RhdGEpIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmVjQ2VsbEF0dHJcIj5hdHRyaWJ1dGUgdG8gaW5zZXJ0IGludG8gdGhlIHByZWZpeCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbW9kaWZpZWQgYmxvYiBzdHJpbmcgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTZXRWZWNDZWxsQXR0cihzdHI6IHN0cmluZywgdmVjQ2VsbEF0dHI6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gXCJcIjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBwcmVmaXhMYXN0SW5kZXg6IG51bWJlciA9IHN0ci5pbmRleE9mKFwiO1wiKTtcclxuICAgICAgbGV0IHByZWZpeDogc3RyaW5nID0gc3RyLnN1YnN0cigwLCBwcmVmaXhMYXN0SW5kZXgpO1xyXG5cclxuICAgICAgbGV0IGRhdGE6IHN0cmluZyA9IHN0ci5zdWJzdHIocHJlZml4TGFzdEluZGV4ICsgMSk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zOiBzdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUocHJlZml4LCAvLHw7Lyk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgR3VpQ29uc3RhbnRzLkJMT0JfUFJFRklYX0VMRU1FTlRTX0NPVU5UOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMylcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIDxzdHJpbmc+dmVjQ2VsbEF0dHIgKyBcIixcIjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyB0b2tlbnNbaV0gKyBcIixcIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0LnN1YnN0cigwLCByZXN1bHQubGVuZ3RoIC0gMSkgKyBcIjtcIiArIGRhdGE7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoRXhjZXB0aW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcIiBpbiBYTUxwYXJzZXIuYmxvYlByZWZpeExlbmd0aCBpbnZhbGlkIGZvcm1hdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gUmV0dXJucyB0aGUgVmVjdG9yJyBjZWxsIGF0dHJpYnV0ZSBmcm9tIHRoZSBwcmVmaXguIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJibG9iU3RyXCI+QSB2YWxpZCBibG9iIHN0cmluZyAgKGkuZS4gcHJlZml4O2RhdGEpIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0VmVjQ2VsbEF0dHIoYmxvYlN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCB0b2tlbnM6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZShibG9iU3RyLCAvLHw7Lyk7XHJcblxyXG4gICAgICByZXR1cm4gdG9rZW5zWzNdLmNoYXJBdCgwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChFeGNlcHRpb24pIHtcclxuICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKFwiIGluIEJsb2JUeXBlLkdldFZlY0NlbGxBdHRyKCk6IGJsb2IgaXMgaW4gaW52YWxpZCBmb3JtYXRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBibG9iIHByZWZpeC4gVGhlIHByZWZpeCBpcyBpbiB0aGUgZm9ybWF0OlxyXG4gIC8vLyA8dHQ+XCJPYmpIYW5kbGUsVmFyaWFudElkeCxDb250ZW50VHlwZSxWZWNDZWxsQXR0cjtcIjwvdHQ+LiBUaGUgbGVuZ3RoIGluY2x1ZGVzIHRoZSBjb21tYXMgYW5kIHRoZVxyXG4gIC8vLyBzZW1pY29sb24uXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJibG9iXCI+YSB2YWxpZCBibG9iXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmxvYiBwcmVmaXggbGVuZ3RoXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgYmxvYlByZWZpeExlbmd0aChibG9iOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHByZWZpeExlbmd0aDogbnVtYmVyID0gYmxvYi5pbmRleE9mKCc7JykgKyAxO1xyXG4gICAgICBsZXQgcHJlZml4OiBzdHJpbmcgPSBibG9iLnN1YnN0cigwLCBwcmVmaXhMZW5ndGgpO1xyXG5cclxuICAgICAgLy8gY2hlY2sgaWYgdGhlIHByZWZpeCBpcyB2YWxpZFxyXG4gICAgICBpZiAocHJlZml4TGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCB0b2tlbnM6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZShwcmVmaXgsIFwiLFwiKTtcclxuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gR3VpQ29uc3RhbnRzLkJMT0JfUFJFRklYX0VMRU1FTlRTX0NPVU5UKVxyXG4gICAgICAgICAgcmV0dXJuIHByZWZpeExlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKEV4Y2VwdGlvbikge1xyXG4gICAgICAvLyBpbnZhbGlkIHByZWZpeFxyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcIiBpbiBYTUxwYXJzZXIuYmxvYlByZWZpeExlbmd0aCBpbnZhbGlkIGZvcm1hdFwiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0cyB0aGUga2V5IGZyb20gYSBibG9iIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYmxvYlN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0S2V5KGJsb2JTdHI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgdG9rZW5zOiBzdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUoYmxvYlN0ciwgLyx8Oy8pO1xyXG4gICAgbGV0IGtleTogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDUpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBrZXkgPSBOTnVtYmVyLlBhcnNlKHRva2Vuc1swXSk7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKEV4Y2VwdGlvbikge1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGtleTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gY2FsY3VsYXRlcyB0aGUgYmxvYiBzaXplIGhlbGQgaW4gdGhlIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYmxvYlwiPiBUaGUgc3RyaW5nIGhvbGRpbmcgdGhlIGJsb2IgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRCbG9iU2l6ZShibG9iOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHRva2Vuczogc3RyaW5nW10gPSBTdHJVdGlsLnRva2VuaXplKGJsb2IsIC8sfDsvKTtcclxuICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiA1KSB7XHJcbiAgICAgICAgc2l6ZSA9IGJsb2IubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCA1OyBpID0gaSArIDEpIHtcclxuICAgICAgICAgIHNpemUgPSBzaXplIC0gdG9rZW5zW2ldLmxlbmd0aDtcclxuICAgICAgICAgIHNpemUgPSBzaXplIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChFeGNlcHRpb24pIHtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc2l6ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGFyc2UgY29udGVudCB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZW50VHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgUGFyc2VDb250ZW50VHlwZShjb250ZW50VHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBuZXdDb250ZW50VHlwZTogc3RyaW5nID0gJyAnO1xyXG4gICAgc3dpdGNoIChjb250ZW50VHlwZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgbmV3Q29udGVudFR5cGUgPSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5LTk9XTjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIG5ld0NvbnRlbnRUeXBlID0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX0FOU0k7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBuZXdDb250ZW50VHlwZSA9IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTklDT0RFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgbmV3Q29udGVudFR5cGUgPSBCbG9iVHlwZS5DT05URU5UX1RZUEVfQklOQVJZO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld0NvbnRlbnRUeXBlO1xyXG4gIH1cclxufVxyXG4iXX0=