@magic-xpa/gui 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 (195) hide show
  1. package/README.md +7 -7
  2. package/{esm2020 → esm2022}/index.mjs +71 -71
  3. package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
  4. package/esm2022/src/Commands.mjs +184 -0
  5. package/esm2022/src/Events.mjs +425 -0
  6. package/{esm2020 → esm2022}/src/EventsProcessor.mjs +66 -66
  7. package/{esm2020 → esm2022}/src/FocusManager.mjs +33 -33
  8. package/esm2022/src/GuiConstants.mjs +68 -0
  9. package/{esm2020 → esm2022}/src/GuiEnums.mjs +301 -300
  10. package/esm2022/src/GuiEnvironment.mjs +4 -0
  11. package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
  12. package/esm2022/src/Manager.mjs +91 -0
  13. package/esm2022/src/UIBridge.mjs +33 -0
  14. package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
  15. package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
  16. package/esm2022/src/gui/GuiMgControl.mjs +123 -0
  17. package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
  18. package/esm2022/src/gui/KeyboardItem.mjs +135 -0
  19. package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
  20. package/esm2022/src/gui/MgValue.mjs +16 -0
  21. package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
  22. package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
  23. package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
  24. package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
  25. package/esm2022/src/gui/low/GuiInteractive.mjs +178 -0
  26. package/esm2022/src/gui/low/Style.mjs +20 -0
  27. package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
  28. package/esm2022/src/management/data/BlobType.mjs +281 -0
  29. package/esm2022/src/management/data/DcValues.mjs +214 -0
  30. package/{esm2020 → esm2022}/src/management/data/DcValuesBuilderBase.mjs +95 -95
  31. package/esm2022/src/management/data/FieldDef.mjs +331 -0
  32. package/{esm2020 → esm2022}/src/management/data/FieldsTable.mjs +54 -54
  33. package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
  34. package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
  35. package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
  36. package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
  37. package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
  38. package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
  39. package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
  40. package/{esm2020 → esm2022}/src/management/data/RecordUtils.mjs +360 -360
  41. package/esm2022/src/management/data/VectorType.mjs +612 -0
  42. package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
  43. package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
  44. package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
  45. package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
  46. package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +305 -0
  47. package/esm2022/src/management/gui/ControlTable.mjs +118 -0
  48. package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
  49. package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
  50. package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
  51. package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
  52. package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
  53. package/esm2022/src/management/gui/Helps.mjs +237 -0
  54. package/esm2022/src/management/gui/MgControlBase.mjs +1869 -0
  55. package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
  56. package/esm2022/src/management/gui/PIC.mjs +1185 -0
  57. package/{esm2020 → esm2022}/src/management/gui/PropDefaults.mjs +229 -229
  58. package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +246 -245
  59. package/esm2022/src/management/gui/PropTable.mjs +221 -0
  60. package/esm2022/src/management/gui/Property.mjs +1362 -0
  61. package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
  62. package/{esm2020 → esm2022}/src/management/gui/ValidationDetailsBase.mjs +93 -93
  63. package/{esm2020 → esm2022}/src/management/gui/WrongFormatException.mjs +29 -29
  64. package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
  65. package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
  66. package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
  67. package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
  68. package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
  69. package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
  70. package/{esm2020 → esm2022}/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -41
  71. package/{esm2020 → esm2022}/src/util/MemoryUtil.mjs +34 -34
  72. package/esm2022/src/util/ObjectReference.mjs +36 -0
  73. package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
  74. package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16086 -16095
  75. package/fesm2022/magic-xpa-gui.mjs.map +1 -0
  76. package/index.d.ts +70 -70
  77. package/package.json +6 -12
  78. package/src/Commands.d.ts +40 -40
  79. package/src/Events.d.ts +157 -155
  80. package/src/EventsProcessor.d.ts +13 -13
  81. package/src/FocusManager.d.ts +8 -8
  82. package/src/GuiConstants.d.ts +65 -65
  83. package/src/GuiEnums.d.ts +283 -282
  84. package/src/GuiEnvironment.d.ts +4 -4
  85. package/src/IFlowMonitorQueue.d.ts +3 -3
  86. package/src/Manager.d.ts +26 -26
  87. package/src/UIBridge.d.ts +16 -16
  88. package/src/env/IEnvironment.d.ts +31 -31
  89. package/src/gui/ControlBase.d.ts +4 -4
  90. package/src/gui/GuiMgControl.d.ts +38 -38
  91. package/src/gui/GuiMgForm.d.ts +3 -3
  92. package/src/gui/KeyboardItem.d.ts +18 -18
  93. package/src/gui/LastFocusedVal.d.ts +7 -7
  94. package/src/gui/MgValue.d.ts +15 -15
  95. package/src/gui/PropParentInterface.d.ts +13 -13
  96. package/src/gui/low/DialogHandler.d.ts +4 -4
  97. package/src/gui/low/GuiCommand.d.ts +37 -37
  98. package/src/gui/low/GuiCommandQueue.d.ts +13 -13
  99. package/src/gui/low/GuiInteractive.d.ts +55 -55
  100. package/src/gui/low/Style.d.ts +19 -19
  101. package/src/management/RuntimeContextBase.d.ts +23 -23
  102. package/src/management/data/BlobType.d.ts +29 -29
  103. package/src/management/data/DcValues.d.ts +33 -33
  104. package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
  105. package/src/management/data/FieldDef.d.ts +53 -53
  106. package/src/management/data/FieldsTable.d.ts +16 -16
  107. package/src/management/data/GuiDataViewBase.d.ts +27 -27
  108. package/src/management/data/GuiFieldBase.d.ts +17 -17
  109. package/src/management/data/IRecord.d.ts +12 -12
  110. package/src/management/data/IReferencedObject.d.ts +5 -5
  111. package/src/management/data/NUM_TYPE.d.ts +103 -103
  112. package/src/management/data/ObjectReferenceBase.d.ts +16 -16
  113. package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
  114. package/src/management/data/RecordUtils.d.ts +21 -21
  115. package/src/management/data/VectorType.d.ts +52 -52
  116. package/src/management/data/VectorTypeBase.d.ts +8 -8
  117. package/src/management/events/IActionManager.d.ts +7 -7
  118. package/src/management/events/IGuiEventsManager.d.ts +20 -20
  119. package/src/management/exp/ExpressionInterface.d.ts +242 -242
  120. package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
  121. package/src/management/gui/ControlTable.d.ts +28 -28
  122. package/src/management/gui/DisplayConvertor.d.ts +103 -103
  123. package/src/management/gui/FieldValidator.d.ts +35 -35
  124. package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
  125. package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
  126. package/src/management/gui/HebrewDate.d.ts +46 -46
  127. package/src/management/gui/Helps.d.ts +51 -51
  128. package/src/management/gui/MgControlBase.d.ts +225 -223
  129. package/src/management/gui/MgFormBase.d.ts +160 -160
  130. package/src/management/gui/PIC.d.ts +108 -108
  131. package/src/management/gui/PropDefaults.d.ts +7 -7
  132. package/src/management/gui/PropInterface.d.ts +244 -243
  133. package/src/management/gui/PropTable.d.ts +33 -33
  134. package/src/management/gui/Property.d.ts +121 -121
  135. package/src/management/gui/ValidationDetails.d.ts +52 -52
  136. package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
  137. package/src/management/gui/WrongFormatException.d.ts +9 -9
  138. package/src/management/tasks/GuiDataCollection.d.ts +4 -4
  139. package/src/management/tasks/GuiTaskBase.d.ts +150 -150
  140. package/src/management/tasks/IMGDataTable.d.ts +10 -10
  141. package/src/management/tasks/ITask.d.ts +6 -6
  142. package/src/management/tasks/MgTimer.d.ts +8 -8
  143. package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
  144. package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
  145. package/src/util/MemoryUtil.d.ts +6 -6
  146. package/src/util/ObjectReference.d.ts +9 -9
  147. package/src/util/UsernamePasswordCredentials.d.ts +18 -18
  148. package/esm2020/src/Commands.mjs +0 -184
  149. package/esm2020/src/Events.mjs +0 -420
  150. package/esm2020/src/GuiConstants.mjs +0 -68
  151. package/esm2020/src/GuiEnvironment.mjs +0 -4
  152. package/esm2020/src/Manager.mjs +0 -91
  153. package/esm2020/src/UIBridge.mjs +0 -32
  154. package/esm2020/src/gui/GuiMgControl.mjs +0 -125
  155. package/esm2020/src/gui/KeyboardItem.mjs +0 -135
  156. package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
  157. package/esm2020/src/gui/MgValue.mjs +0 -16
  158. package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
  159. package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
  160. package/esm2020/src/gui/low/GuiInteractive.mjs +0 -176
  161. package/esm2020/src/gui/low/Style.mjs +0 -20
  162. package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
  163. package/esm2020/src/management/data/BlobType.mjs +0 -281
  164. package/esm2020/src/management/data/DcValues.mjs +0 -214
  165. package/esm2020/src/management/data/FieldDef.mjs +0 -331
  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/VectorType.mjs +0 -612
  172. package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
  173. package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
  174. package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +0 -307
  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 -741
  183. package/esm2020/src/management/gui/PIC.mjs +0 -1185
  184. package/esm2020/src/management/gui/PropTable.mjs +0 -221
  185. package/esm2020/src/management/gui/Property.mjs +0 -1356
  186. package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
  187. package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
  188. package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
  189. package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
  190. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
  191. package/esm2020/src/util/ObjectReference.mjs +0 -36
  192. package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
  193. package/fesm2015/magic-xpa-gui.mjs +0 -16391
  194. package/fesm2015/magic-xpa-gui.mjs.map +0 -1
  195. package/fesm2020/magic-xpa-gui.mjs.map +0 -1
@@ -1,237 +0,0 @@
1
- import { Base64, HelpType, XMLConstants, XmlParser } from "@magic-xpa/utils";
2
- import { Encoding, NNumber, List, NString } from "@magic-xpa/mscorelib";
3
- import { Events } from "../../Events";
4
- export class MagicHelp {
5
- }
6
- export class InternalHelp extends MagicHelp {
7
- GetHelpType() {
8
- return HelpType.Internal;
9
- }
10
- constructor() {
11
- super();
12
- this.val = null;
13
- this.Name = null;
14
- this.FrameX = 0;
15
- this.FrameY = 0;
16
- this.FrameDx = 0;
17
- this.FrameDy = 0;
18
- this.SizedX = 0;
19
- this.SizedY = 0;
20
- this.FactorX = 0;
21
- this.FactorY = 0;
22
- this.Borderstyle = 0;
23
- this.TitleBar = 0;
24
- this.FontTableIndex = 0;
25
- }
26
- }
27
- export class PromptpHelp extends MagicHelp {
28
- GetHelpType() {
29
- return HelpType.Prompt;
30
- }
31
- constructor() {
32
- super();
33
- this.PromptHelpText = null;
34
- }
35
- }
36
- export class ToolTipHelp extends MagicHelp {
37
- GetHelpType() {
38
- return HelpType.Tooltip;
39
- }
40
- constructor() {
41
- super();
42
- this.tooltipHelpText = null;
43
- }
44
- }
45
- export class URLHelp extends MagicHelp {
46
- GetHelpType() {
47
- return HelpType.URL;
48
- }
49
- constructor() {
50
- super();
51
- this.urlHelpText = null;
52
- }
53
- }
54
- export class WindowsHelp extends MagicHelp {
55
- GetHelpType() {
56
- return HelpType.Windows;
57
- }
58
- constructor() {
59
- super();
60
- this.FilePath = null;
61
- this.HelpCommand = 0;
62
- this.HelpKey = null;
63
- }
64
- }
65
- export class Helps {
66
- constructor() {
67
- this._helps = null;
68
- this._helps = new List();
69
- }
70
- fillData(parser) {
71
- while (this.initInnerObjects(parser.getNextTag(), parser)) {
72
- }
73
- }
74
- initInnerObjects(foundTagName, parser) {
75
- if (foundTagName === null)
76
- return false;
77
- if (foundTagName === XMLConstants.MG_TAG_HELPTABLE) {
78
- let currrentIndex = parser.getCurrIndex();
79
- let encoded = parser.ReadContentOfCurrentElement().trim();
80
- let decoded = Base64.decode(encoded.substr(0, encoded.length).trim(), Encoding.UTF8);
81
- let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
82
- parser.setXMLdata(newXmlData);
83
- parser.setCurrIndex(currrentIndex);
84
- parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) +
85
- 1);
86
- }
87
- else if (foundTagName === XMLConstants.MG_TAG_HELPITEM) {
88
- let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
89
- if (endContext !== -1 && endContext < parser.getXMLdata().length) {
90
- let tag = parser.getXMLsubstring(endContext);
91
- parser.add2CurrIndex(tag.indexOf(XMLConstants.MG_TAG_HELPITEM) +
92
- XMLConstants.MG_TAG_HELPITEM.length);
93
- let tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
94
- this.fillHelpItem(tokensVector);
95
- parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
96
- return true;
97
- }
98
- }
99
- else if (foundTagName === "/" + XMLConstants.MG_TAG_HELPTABLE) {
100
- parser.setCurrIndex2EndOfTag();
101
- return false;
102
- }
103
- else {
104
- Events.WriteExceptionToLog("in Command.FillData() out of string bounds");
105
- return false;
106
- }
107
- return true;
108
- }
109
- fillHelpItem(tokensVector) {
110
- let j = 0;
111
- let attribute = tokensVector.get_Item(j);
112
- let valueStr = tokensVector.get_Item(j + 1);
113
- let hlpType = XmlParser.unescape(valueStr).toString();
114
- switch (hlpType) {
115
- case XMLConstants.MG_ATTR_HLP_TYP_TOOLTIP:
116
- let toolTipHelp = new ToolTipHelp();
117
- for (j = 2; j < tokensVector.length; j = j + 2) {
118
- attribute = tokensVector.get_Item(j);
119
- valueStr = tokensVector.get_Item(j + 1);
120
- if (attribute === XMLConstants.MG_ATTR_VALUE) {
121
- toolTipHelp.tooltipHelpText = XmlParser.unescape(valueStr).toString();
122
- }
123
- else
124
- Events.WriteExceptionToLog(NString.Format("There is no such tag in <helptable><helpitem ..>.Insert case to HelpTable.FillHelpItem for {0}", attribute));
125
- }
126
- this._helps.push(toolTipHelp);
127
- break;
128
- case XMLConstants.MG_ATTR_HLP_TYP_PROMPT:
129
- let promptpHelp = new PromptpHelp();
130
- for (j = 2; j < tokensVector.length; j = j + 2) {
131
- attribute = tokensVector.get_Item(j);
132
- valueStr = tokensVector.get_Item(j + 1);
133
- if (attribute === XMLConstants.MG_ATTR_VALUE) {
134
- promptpHelp.PromptHelpText = XmlParser.unescape(valueStr).toString();
135
- }
136
- else
137
- Events.WriteExceptionToLog(NString.Format("There is no such tag in <helptable><helpitem ..>.Insert case to HelpTable.FillHelpItem for {0}", attribute));
138
- }
139
- this._helps.push(promptpHelp);
140
- break;
141
- case XMLConstants.MG_ATTR_HLP_TYP_URL:
142
- let urlHelp = new URLHelp();
143
- for (j = 2; j < tokensVector.length; j = j + 2) {
144
- attribute = tokensVector.get_Item(j);
145
- valueStr = tokensVector.get_Item(j + 1);
146
- if (attribute === XMLConstants.MG_ATTR_VALUE)
147
- urlHelp.urlHelpText = valueStr;
148
- else
149
- Events.WriteExceptionToLog(NString.Format("There is no such tag in <helptable><helpitem ..>.Insert case to HelpTable.FillHelpItem for {0}", attribute));
150
- }
151
- this._helps.push(urlHelp);
152
- break;
153
- case XMLConstants.MG_ATTR_HLP_TYP_INTERNAL:
154
- let internalHelpWindowDetails = new InternalHelp();
155
- for (j = 2; j < tokensVector.length; j += 2) {
156
- attribute = tokensVector.get_Item(j);
157
- valueStr = tokensVector.get_Item(j + 1);
158
- if (attribute === XMLConstants.MG_ATTR_VALUE) {
159
- internalHelpWindowDetails.val = XmlParser.unescape(valueStr).toString();
160
- }
161
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_NAME) {
162
- internalHelpWindowDetails.Name = XmlParser.unescape(valueStr).toString();
163
- }
164
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FRAMEX) {
165
- internalHelpWindowDetails.FrameX = NNumber.Parse(XmlParser.unescape(valueStr));
166
- }
167
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FRAMEY) {
168
- internalHelpWindowDetails.FrameY = NNumber.Parse(XmlParser.unescape(valueStr));
169
- }
170
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FRAMEDX) {
171
- internalHelpWindowDetails.FrameDx = NNumber.Parse(XmlParser.unescape(valueStr));
172
- }
173
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FRAMEDY) {
174
- internalHelpWindowDetails.FrameDy = NNumber.Parse(XmlParser.unescape(valueStr));
175
- }
176
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_SIZEDX) {
177
- internalHelpWindowDetails.SizedX = NNumber.Parse(XmlParser.unescape(valueStr));
178
- }
179
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_SIZEDY) {
180
- internalHelpWindowDetails.SizedY = NNumber.Parse(XmlParser.unescape(valueStr));
181
- }
182
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FACTORX) {
183
- internalHelpWindowDetails.FactorX = NNumber.Parse(XmlParser.unescape(valueStr));
184
- }
185
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FACTORY) {
186
- internalHelpWindowDetails.FactorY = NNumber.Parse(XmlParser.unescape(valueStr));
187
- }
188
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_BORDERSTYLE) {
189
- internalHelpWindowDetails.Borderstyle = NNumber.Parse(XmlParser.unescape(valueStr));
190
- }
191
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_TITLE_BAR) {
192
- internalHelpWindowDetails.TitleBar = NNumber.Parse(XmlParser.unescape(valueStr));
193
- }
194
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_SYSTEM_MENU) {
195
- }
196
- else if (attribute === XMLConstants.MG_ATTR_INTERNAL_HELP_FONT_TABLE_INDEX) {
197
- internalHelpWindowDetails.FontTableIndex = NNumber.Parse(XmlParser.unescape(valueStr));
198
- }
199
- else
200
- Events.WriteExceptionToLog(NString.Format("There is no such tag in <helptable><helpitem ..>.Insert case to HelpTable.FillHelpItem for {0}", attribute));
201
- }
202
- this._helps.push(internalHelpWindowDetails);
203
- break;
204
- case XMLConstants.MG_ATTR_HLP_TYP_WINDOWS:
205
- let wndHelpDetails = new WindowsHelp();
206
- for (j = 2; j < tokensVector.length; j = j + 2) {
207
- attribute = tokensVector.get_Item(j);
208
- valueStr = tokensVector.get_Item(j + 1);
209
- if (attribute === XMLConstants.MG_ATTR_WINDOWS_HELP_FILE) {
210
- wndHelpDetails.FilePath = valueStr;
211
- }
212
- else if (attribute === XMLConstants.MG_ATTR_WINDOWS_HELP_COMMAND) {
213
- wndHelpDetails.HelpCommand = NNumber.Parse(valueStr);
214
- }
215
- else if (attribute === XMLConstants.MG_ATTR_WINDOWS_HELP_KEY) {
216
- wndHelpDetails.HelpKey = XmlParser.unescape(valueStr).toString();
217
- }
218
- else
219
- Events.WriteExceptionToLog(NString.Format("There is no such tag in <helptable><helpitem ..>.Insert case to HelpTable.FillHelpItem for {0}", attribute));
220
- }
221
- this._helps.push(wndHelpDetails);
222
- break;
223
- }
224
- }
225
- getHelp(idx) {
226
- let flag = idx < 0 || idx >= this._helps.length;
227
- let result;
228
- if (flag) {
229
- result = null;
230
- }
231
- else {
232
- result = this._helps.get_Item(idx);
233
- }
234
- return result;
235
- }
236
- }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL0hlbHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUtwQyxNQUFNLE9BQWdCLFNBQVM7Q0FFOUI7QUFLRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFlekMsV0FBVztRQUNULE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQW5CVixRQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ25CLFNBQUksR0FBVyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBVyxDQUFDLENBQUM7SUFRM0IsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFTO0lBR3hDLFdBQVc7UUFDVCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDekIs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O2dCQUNqQyxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxJQUFJLEdBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekQsSUFBSSxNQUFpQixDQUFDO1FBQ3RCLElBQUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNmO2FBQ0k7WUFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlNjQsIEhlbHBDb21tYW5kLCBIZWxwVHlwZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0VuY29kaW5nLCBOTnVtYmVyLCBMaXN0LCBOU3RyaW5nfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuLi8uLi9FdmVudHNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIEJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgaGVscCB0eXBlcyBzdXBwb3J0ZWQgaW4gbWFnaWMuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYWdpY0hlbHAge1xyXG4gIGFic3RyYWN0IEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlO1xyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBkcmF3IHRoZSBpbnRlcm5hbCBoZWxwIHdpbmRvdy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEludGVybmFsSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gIE5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgRnJhbWVYOiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lWTogbnVtYmVyID0gMDtcclxuICBGcmFtZUR4OiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lRHk6IG51bWJlciA9IDA7XHJcbiAgU2l6ZWRYOiBudW1iZXIgPSAwO1xyXG4gIFNpemVkWTogbnVtYmVyID0gMDtcclxuICBGYWN0b3JYOiBudW1iZXIgPSAwO1xyXG4gIEZhY3Rvclk6IG51bWJlciA9IDA7XHJcbiAgQm9yZGVyc3R5bGU6IG51bWJlciA9IDA7XHJcbiAgVGl0bGVCYXI6IG51bWJlciA9IDA7XHJcbiAgRm9udFRhYmxlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5JbnRlcm5hbDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgcHJvbXB0IGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRwSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgUHJvbXB0SGVscFRleHQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5Qcm9tcHQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBzaG93IHRvb2wgdGlwIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUb29sVGlwSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgdG9vbHRpcEhlbHBUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuVG9vbHRpcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgVVJMIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBVUkxIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB1cmxIZWxwVGV4dDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLlVSTDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgd2luZG93cyBoZWxwLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgV2luZG93c0hlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIEZpbGVQYXRoOiBzdHJpbmcgPSBudWxsO1xyXG4gIEhlbHBDb21tYW5kOiBIZWxwQ29tbWFuZCA9IDA7XHJcbiAgSGVscEtleTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLldpbmRvd3M7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBkYXRhIGZvciA8aGVscHRhYmxlPiA8aGVscGl0ZW0gdmFsdWUgPSBcInN0cmluZ1wiPiAuLi4gPC9oZWxwdGFibGU+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBIZWxwcyB7XHJcbiAgcHJpdmF0ZSBfaGVscHM6IExpc3Q8TWFnaWNIZWxwPiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9oZWxwcyA9IG5ldyBMaXN0PE1hZ2ljSGVscD4oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVG8gcGFyc2UgdGhlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBkYXRhIGZpZWxkIChoZWxwcykgaW4gdGhlIGNsYXNzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUbyBpbml0aWFsIGlubmVyIG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5vZiBmb3VuZC9jdXJyZW50IHRhZzwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfSEVMUFRBQkxFKSB7XHJcblxyXG4gICAgICAgIGxldCBjdXJycmVudEluZGV4ID0gcGFyc2VyLmdldEN1cnJJbmRleCgpOyAvLyBnZXQgdGhlIGN1cnJlbnRJbmRleCBvZiBIZWxwIHRhZ1xyXG4gICAgICAgIGxldCBlbmNvZGVkID0gcGFyc2VyLlJlYWRDb250ZW50T2ZDdXJyZW50RWxlbWVudCgpLnRyaW0oKTsgLy8gZ2V0IHZhbHVlIG9mIGVuY29kZWQgdmFsdWUgb2YgSGVscFxyXG4gICAgICAgIGxldCBkZWNvZGVkID0gQmFzZTY0LmRlY29kZShlbmNvZGVkLnN1YnN0cigwLCBlbmNvZGVkLmxlbmd0aCkudHJpbSgpLCBFbmNvZGluZy5VVEY4KTsgLy9kZWNvZGUgdGhlIHZhbHVlIG9mIEhlbHBcclxuXHJcbiAgICAgICAgbGV0IG5ld1htbERhdGEgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLnJlcGxhY2UoZW5jb2RlZC50cmltKCksIGRlY29kZWQpOyAvLyByZXBsYWNlIHRoZSBlbmNvZGVkIHZhbHVlIHdpdGggZGVjb2RlZCB2YWx1ZVxyXG4gICAgICAgIHBhcnNlci5zZXRYTUxkYXRhKG5ld1htbERhdGEpOyAvL2NyZWF0ZSBhIHBhcnNlciB3aXRoIG5ld1hNTFxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoY3VycnJlbnRJbmRleCk7IC8vIHNldCB0aGUgY3VycmVudCBpbmRleCBvZiBwYXJzZXIgdG8gSGVscCB0YWdcclxuXHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArXHJcbiAgICAgICAgICAxKTsgLy9lbmQgb2Ygb3V0ZXIgdGFkIGFuZCBpdHMgXCI+XCJcclxuICAgIH1cclxuICAgIC8vIGVuZCBvZiBvdXRlciB0YWQgYW5kIGl0cyBcIj5cIlxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBJVEVNKSB7XHJcbiAgICAgIGxldCBlbmRDb250ZXh0ID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfVEVSTSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTSkgK1xyXG4gICAgICAgICAgWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTS5sZW5ndGgpO1xyXG4gICAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgICB0aGlzLmZpbGxIZWxwSXRlbSh0b2tlbnNWZWN0b3IpO1xyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IFwiL1wiICsgWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQVEFCTEUpIHtcclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coXCJpbiBDb21tYW5kLkZpbGxEYXRhKCkgb3V0IG9mIHN0cmluZyBib3VuZHNcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBGaWxsIG1lbWJlciBlbGVtZW50IGhlbHBzIGJ5IDxoZWxwaXRlbT4gdGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmF0dHJpYnV0ZS92YWx1ZS8uLi5hdHRyaWJ1dGUvdmFsdWUvIHZlY3RvcjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBmaWxsSGVscEl0ZW0odG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4pOiB2b2lkIHtcclxuICAgIC8vIFNpbmNlIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaXMgdHlwZSBvZiBoZWxwLiBFeHRyYWN0IHRoaXMgYXR0cmlidXRlIHRvIGNoZWNrIHR5cGUuXHJcbiAgICBsZXQgajogbnVtYmVyID0gMDtcclxuICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgIGxldCBobHBUeXBlOiBzdHJpbmcgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgc3dpdGNoIChobHBUeXBlKSB7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9UT09MVElQOlxyXG4gICAgICAgIGxldCB0b29sVGlwSGVscDogVG9vbFRpcEhlbHAgPSBuZXcgVG9vbFRpcEhlbHAoKTtcclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSkge1xyXG4gICAgICAgICAgICAvLyAjOTMyMDg2OiBTcGVjaWFsIGNoYXJhY3RlcnMgaW4gaGVscHMgdGV4dCBhcmUgZXNjYXBlZCB3aGlsZSBzZXJpYWxpemluZyxcclxuICAgICAgICAgICAgLy8gc28gdW5lc2NhcGUgdGhlIGVzY2FwZWQgY2hhcmFjdGVycy5cclxuICAgICAgICAgICAgdG9vbFRpcEhlbHAudG9vbHRpcEhlbHBUZXh0ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2godG9vbFRpcEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1BST01QVDpcclxuICAgICAgICBsZXQgcHJvbXB0cEhlbHA6IFByb21wdHBIZWxwID0gbmV3IFByb21wdHBIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgLy8gIzkzMjA4NjogU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGhlbHBzIHRleHQgYXJlIGVzY2FwZWQgd2hpbGUgc2VyaWFsaXppbmcsXHJcbiAgICAgICAgICAgIC8vIHNvIHVuZXNjYXBlIHRoZSBlc2NhcGVkIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgIHByb21wdHBIZWxwLlByb21wdEhlbHBUZXh0ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2gocHJvbXB0cEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1VSTDpcclxuICAgICAgICBsZXQgdXJsSGVscDogVVJMSGVscCA9IG5ldyBVUkxIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpXHJcbiAgICAgICAgICAgIHVybEhlbHAudXJsSGVscFRleHQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHVybEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX0lOVEVSTkFMOlxyXG4gICAgICAgIGxldCBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzOiBJbnRlcm5hbEhlbHAgPSBuZXcgSW50ZXJuYWxIZWxwKCk7XHJcbiAgICAgICAgLy8gSW5pdCBJbnRlcm5hbCBIZWxwIFdpbmRvdyBEZXRhaWxzLlxyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuXHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLnZhbCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9OQU1FKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuTmFtZSA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRVgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZVggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVEWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lRHggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FRFkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZUR5ID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TSVpFRFgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5TaXplZFggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NJWkVEWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLlNpemVkWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRkFDVE9SWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZhY3RvclggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GYWN0b3JZID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9CT1JERVJTVFlMRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkJvcmRlcnN0eWxlID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfVElUTEVfQkFSKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuVGl0bGVCYXIgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NZU1RFTV9NRU5VKSB7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZPTlRfVEFCTEVfSU5ERVgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5Gb250VGFibGVJbmRleCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFkZCBoZWxwIG9iamVjdCB0byBjb2xsZWN0aW9uLlxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2goaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfV0lORE9XUzpcclxuICAgICAgICBsZXQgd25kSGVscERldGFpbHM6IFdpbmRvd3NIZWxwID0gbmV3IFdpbmRvd3NIZWxwKCk7XHJcblxyXG4gICAgICAgIC8vIEluaXQgV2luZG93cyBIZWxwIERldGFpbHMuXHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0ZJTEUpIHtcclxuICAgICAgICAgICAgd25kSGVscERldGFpbHMuRmlsZVBhdGggPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0NPTU1BTkQpIHtcclxuICAgICAgICAgICAgICB3bmRIZWxwRGV0YWlscy5IZWxwQ29tbWFuZCA9IDxIZWxwQ29tbWFuZD5OTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0tFWSkge1xyXG4gICAgICAgICAgICB3bmRIZWxwRGV0YWlscy5IZWxwS2V5ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFkZCBoZWxwIG9iamVjdCB0byBjb2xsZWN0aW9uLlxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2god25kSGVscERldGFpbHMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SGVscChpZHg6IG51bWJlcik6IE1hZ2ljSGVscCB7XHJcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuX2hlbHBzLmxlbmd0aDtcclxuICAgIGxldCByZXN1bHQ6IE1hZ2ljSGVscDtcclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5faGVscHMuZ2V0X0l0ZW0oaWR4KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==