@magic-xpa/gui 4.1100.0-dev4110.24 → 4.1100.0-dev4110.240

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 (200) 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/esm2022/src/Events.mjs +425 -0
  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 +246 -245
  58. package/esm2022/src/management/gui/PropTable.mjs +221 -0
  59. package/esm2022/src/management/gui/Property.mjs +1362 -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 +16074 -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 +157 -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 +244 -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/Events.mjs +0 -420
  149. package/esm2020/src/EventsProcessor.mjs +0 -67
  150. package/esm2020/src/FocusManager.mjs +0 -34
  151. package/esm2020/src/GuiConstants.mjs +0 -68
  152. package/esm2020/src/GuiEnvironment.mjs +0 -4
  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 -165
  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/DcValuesBuilderBase.mjs +0 -96
  165. package/esm2020/src/management/data/FieldDef.mjs +0 -331
  166. package/esm2020/src/management/data/FieldsTable.mjs +0 -54
  167. package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
  168. package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
  169. package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
  170. package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
  171. package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
  172. package/esm2020/src/management/data/RecordUtils.mjs +0 -361
  173. package/esm2020/src/management/data/VectorType.mjs +0 -612
  174. package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
  175. package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
  176. package/esm2020/src/management/gui/ControlTable.mjs +0 -118
  177. package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
  178. package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
  179. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
  180. package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
  181. package/esm2020/src/management/gui/Helps.mjs +0 -237
  182. package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
  183. package/esm2020/src/management/gui/MgFormBase.mjs +0 -738
  184. package/esm2020/src/management/gui/PIC.mjs +0 -1185
  185. package/esm2020/src/management/gui/PropDefaults.mjs +0 -230
  186. package/esm2020/src/management/gui/PropTable.mjs +0 -221
  187. package/esm2020/src/management/gui/Property.mjs +0 -1356
  188. package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
  189. package/esm2020/src/management/gui/ValidationDetailsBase.mjs +0 -93
  190. package/esm2020/src/management/gui/WrongFormatException.mjs +0 -29
  191. package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
  192. package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
  193. package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
  194. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
  195. package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +0 -41
  196. package/esm2020/src/util/MemoryUtil.mjs +0 -35
  197. package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
  198. package/fesm2015/magic-xpa-gui.mjs +0 -16364
  199. package/fesm2015/magic-xpa-gui.mjs.map +0 -1
  200. package/fesm2020/magic-xpa-gui.mjs.map +0 -1
@@ -1,88 +0,0 @@
1
- import { BlobType } from './BlobType';
2
- import { NNumber, NString, StringBuilder } from '@magic-xpa/mscorelib';
3
- import { StorageAttribute, StrUtil, UtilStrByteMode } from '@magic-xpa/utils';
4
- export class VectorTypeBase {
5
- static validateBlobContents(blob) {
6
- let valid = false;
7
- if (!NString.IsNullOrEmpty(blob)) {
8
- let start = BlobType.blobPrefixLength(blob);
9
- valid = (NString.Compare(blob, (VectorTypeBase.BLOB_TABLE_STR + VectorTypeBase.VECTOR_STR), true, start, 0, (VectorTypeBase.BLOB_TABLE_STR_LEN + VectorTypeBase.VECTOR_STR_LEN)) === 0);
10
- }
11
- return valid;
12
- }
13
- static adjustAlphaStringsInFlatData(srcBlob) {
14
- if (VectorTypeBase.validateBlobContents(srcBlob)) {
15
- let destBuf = new StringBuilder();
16
- let pos = BlobType.blobPrefixLength(srcBlob);
17
- let strToken = srcBlob.substr(0, pos);
18
- destBuf.Append(strToken);
19
- let tokens = StrUtil.tokenize(srcBlob.substr(pos), ",");
20
- let tokenIdx = 0;
21
- tokenIdx++;
22
- strToken = tokens[tokenIdx];
23
- destBuf.Append(strToken + ",");
24
- pos = pos + (strToken.length + 1);
25
- tokenIdx++;
26
- strToken = tokens[tokenIdx];
27
- destBuf.Append(strToken + ",");
28
- pos = pos + (strToken.length + 1);
29
- tokenIdx++;
30
- strToken = tokens[tokenIdx];
31
- destBuf.Append(strToken + ",");
32
- pos = pos + (strToken.length + 1);
33
- tokenIdx++;
34
- strToken = tokens[tokenIdx];
35
- if (strToken.charAt(0) !== StorageAttribute.ALPHA && strToken.charAt(0) !== StorageAttribute.MEMO)
36
- return srcBlob;
37
- destBuf.Append(strToken + ",");
38
- pos = pos + (strToken.length + 1);
39
- tokenIdx++;
40
- strToken = tokens[tokenIdx];
41
- let len = NNumber.Parse(strToken);
42
- destBuf.Append(strToken + ",");
43
- pos = pos + (strToken.length + 1);
44
- strToken = UtilStrByteMode.leftB(srcBlob.substr(pos), len);
45
- destBuf.Append(strToken + ",");
46
- pos = pos + (strToken.length + 1);
47
- tokens = StrUtil.tokenize(srcBlob.substr(pos), ",");
48
- tokenIdx = 0;
49
- tokenIdx++;
50
- strToken = tokens[tokenIdx];
51
- destBuf.Append(strToken + ",");
52
- pos = pos + (strToken.length + 1);
53
- tokenIdx++;
54
- strToken = tokens[tokenIdx];
55
- destBuf.Append(strToken + ",");
56
- pos = pos + (strToken.length + 1);
57
- tokenIdx++;
58
- strToken = tokens[tokenIdx];
59
- destBuf.Append(strToken + ",");
60
- pos = pos + (strToken.length + 1);
61
- tokenIdx++;
62
- strToken = tokens[tokenIdx];
63
- let vecSize = NNumber.Parse(strToken);
64
- destBuf.Append(strToken + ",");
65
- pos = pos + (strToken.length + 1);
66
- tokenIdx++;
67
- strToken = tokens[tokenIdx++];
68
- destBuf.Append(strToken + ",");
69
- pos = pos + (strToken.length + 1);
70
- for (let i = 0; i < vecSize; i = i + 1) {
71
- strToken = UtilStrByteMode.leftB(srcBlob.substr(pos), len);
72
- destBuf.Append(strToken);
73
- pos = pos + strToken.length;
74
- }
75
- strToken = srcBlob.substr(pos);
76
- destBuf.Append(strToken);
77
- let destBlob = destBuf.ToString();
78
- return destBlob;
79
- }
80
- else
81
- return srcBlob;
82
- }
83
- }
84
- VectorTypeBase.BLOB_TABLE_STR = "mgbt";
85
- VectorTypeBase.BLOB_TABLE_STR_LEN = 4;
86
- VectorTypeBase.VECTOR_STR = "MGVEC";
87
- VectorTypeBase.VECTOR_STR_LEN = 5;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yVHlwZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9WZWN0b3JUeXBlQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUUsTUFBTSxPQUFPLGNBQWM7SUFpQnpCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFZO1FBQ3RDLElBQUksS0FBSyxHQUFZLEtBQUssQ0FBQztRQUUzQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLEtBQUssR0FBVyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN6TDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQVNELE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxPQUFlO1FBQ2pELElBQUksY0FBYyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hELElBQUksT0FBTyxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBR2pELElBQUks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LEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUdsQyxRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDL0IsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFHbEMsUUFBUSxFQUFFLENBQUM7WUFDWCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBR2xDLFFBQVEsRUFBRSxDQUFDO1lBQ1gsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLE9BQU8sR0FBVyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBR2xDLFFBQVEsRUFBRSxDQUFDO1lBQ1gsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBR2xDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBRTlDLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pCLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUM3QjtZQUdELFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFekIsSUFBSSxRQUFRLEdBQVcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE9BQU8sUUFBUSxDQUFDO1NBQ2pCOztZQUVDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7O0FBcElNLDZCQUFjLEdBQVcsTUFBTSxDQUFDO0FBQ2hDLGlDQUFrQixHQUFXLENBQUMsQ0FBQztBQUMvQix5QkFBVSxHQUFXLE9BQU8sQ0FBQztBQUM3Qiw2QkFBYyxHQUFXLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2JUeXBlIH0gZnJvbSAnLi9CbG9iVHlwZSc7XHJcbmltcG9ydCB7IE5OdW1iZXIsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXIgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IFN0b3JhZ2VBdHRyaWJ1dGUsIFN0clV0aWwsIFV0aWxTdHJCeXRlTW9kZSB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZlY3RvclR5cGVCYXNlXHJcbntcclxuICAvLyBOT1RFOiB0aGUgQkxPQl9UQUJMRV9TVFIgd2FzIGRlbGliZXJhdGVseSBzZXQgdG8gbG93ZXIgY2FzZSAod2hpbGUgdGhlIHNlcnZlciB1c2VzIHVwcGVyIGNhc2VcclxuICAvLyB0aGlzIGlzIGEgcGF0Y2ggdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBcIkZMQVQgREFUQVwiIGJ1aWx0IGJ5IHRoZSBjbGllbnQgKHRoZXJlZm9yZSBhcmUgYWxyZWFkeSB1bmljb2RlKVxyXG4gIC8vIGFuZCBiZXR3ZWVuIGZsYXQgZGF0YSBhY2NlcHRlZCBmcm9tIHRoZSBzZXJ2ZXIgKHRoZXJlZm9yZSBhcmUgbm90IHVuaWNvZGUpLlxyXG4gIC8vIGdsb2JhbCB2YXJpYWJsZXNcclxuICBzdGF0aWMgQkxPQl9UQUJMRV9TVFI6IHN0cmluZyA9IFwibWdidFwiO1xyXG4gIHN0YXRpYyBCTE9CX1RBQkxFX1NUUl9MRU46IG51bWJlciA9IDQ7XHJcbiAgc3RhdGljIFZFQ1RPUl9TVFI6IHN0cmluZyA9IFwiTUdWRUNcIjtcclxuICBzdGF0aWMgVkVDVE9SX1NUUl9MRU46IG51bWJlciA9IDU7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0aGlzIG1ldGhvZCBjaGVja3MgaWYgY29udGVudHMgb2YgYSBibG9iIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2YWxpZCB2ZXJjdG9yIGkuZS4gaWYgdGhlIGJsb2IgaXMgaW5cclxuICAvLy8gICB2ZWN0b3IncyBmbGF0dGVuIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJibG9iXCI+dGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjb250ZW50cyBvZiB0aGUgYmxvYjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIHZhbGlkIHZlY3RvcjwvcmV0dXJucz5cclxuICBzdGF0aWMgdmFsaWRhdGVCbG9iQ29udGVudHMoYmxvYjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShibG9iKSkge1xyXG4gICAgICBsZXQgc3RhcnQ6IG51bWJlciA9IEJsb2JUeXBlLmJsb2JQcmVmaXhMZW5ndGgoYmxvYik7XHJcbiAgICAgIHZhbGlkID0gKE5TdHJpbmcuQ29tcGFyZShibG9iLCAoVmVjdG9yVHlwZUJhc2UuQkxPQl9UQUJMRV9TVFIgKyBWZWN0b3JUeXBlQmFzZS5WRUNUT1JfU1RSKSwgdHJ1ZSwgc3RhcnQsIDAsIChWZWN0b3JUeXBlQmFzZS5CTE9CX1RBQkxFX1NUUl9MRU4gKyBWZWN0b3JUeXBlQmFzZS5WRUNUT1JfU1RSX0xFTikpID09PSAwKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWxpZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUcmltIGNlbGwgc3RyaW5ncyBpbiB0aGUgdmVjdG9yIGlmIHRoZSBjZWxscyBhcmUgYWxwaGEgb3IgbWVtby5cclxuICAvLy8gICBUaGVpciBsZW5ndGggc2hvdWxkIGJlIGFkanVzdGVkIGluIHRoZSBudW1iZXIgb2YgYnl0ZXMsIG5vdCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMuXHJcbiAgLy8vICAgKERCQ1Mgc3VwcG9ydClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjQmxvYlwiPmEgdmVjdG9yIGluIGEgZmxhdHRlbmVkIGZvcm1hdDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBTdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIGFkanVzdEFscGhhU3RyaW5nc0luRmxhdERhdGEoc3JjQmxvYjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChWZWN0b3JUeXBlQmFzZS52YWxpZGF0ZUJsb2JDb250ZW50cyhzcmNCbG9iKSkge1xyXG4gICAgICBsZXQgZGVzdEJ1ZjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcblxyXG4gICAgICAvLyBjb3B5IEJsb2IgcHJlZml4XHJcbiAgICAgIGxldCBwb3M6IG51bWJlciA9IEJsb2JUeXBlLmJsb2JQcmVmaXhMZW5ndGgoc3JjQmxvYik7XHJcbiAgICAgIGxldCBzdHJUb2tlbjogc3RyaW5nID0gc3JjQmxvYi5zdWJzdHIoMCwgcG9zKTtcclxuICAgICAgZGVzdEJ1Zi5BcHBlbmQoc3RyVG9rZW4pO1xyXG5cclxuICAgICAgbGV0IHRva2Vuczogc3RyaW5nW10gPSBTdHJVdGlsLnRva2VuaXplKHNyY0Jsb2Iuc3Vic3RyKHBvcyksIFwiLFwiKTtcclxuICAgICAgbGV0IHRva2VuSWR4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgICAgLy8gY29weSB0aGUgTUdCVE1HVkVDXHJcbiAgICAgIHRva2VuSWR4Kys7XHJcbiAgICAgIHN0clRva2VuID0gdG9rZW5zW3Rva2VuSWR4XTtcclxuICAgICAgZGVzdEJ1Zi5BcHBlbmQoc3RyVG9rZW4gKyBcIixcIik7XHJcbiAgICAgIHBvcyA9IHBvcyArIChzdHJUb2tlbi5sZW5ndGggKyAxKTtcclxuXHJcbiAgICAgIC8vIGNvcHkgdGhlIHZlcnNpb25cclxuICAgICAgdG9rZW5JZHgrKztcclxuICAgICAgc3RyVG9rZW4gPSB0b2tlbnNbdG9rZW5JZHhdO1xyXG4gICAgICBkZXN0QnVmLkFwcGVuZChzdHJUb2tlbiArIFwiLFwiKTtcclxuICAgICAgcG9zID0gcG9zICsgKHN0clRva2VuLmxlbmd0aCArIDEpO1xyXG5cclxuICAgICAgLy8gY29weSB0aGUgQ29sdW1uc0NvdW50X1xyXG4gICAgICB0b2tlbklkeCsrO1xyXG4gICAgICBzdHJUb2tlbiA9IHRva2Vuc1t0b2tlbklkeF07XHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjaGVjayB0aGUgY2VsbHMgdHlwZVxyXG4gICAgICB0b2tlbklkeCsrO1xyXG4gICAgICBzdHJUb2tlbiA9IHRva2Vuc1t0b2tlbklkeF07XHJcbiAgICAgIGlmIChzdHJUb2tlbi5jaGFyQXQoMCkgIT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgJiYgc3RyVG9rZW4uY2hhckF0KDApICE9PSBTdG9yYWdlQXR0cmlidXRlLk1FTU8pXHJcbiAgICAgICAgcmV0dXJuIHNyY0Jsb2I7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBjZWxscyB0eXBlXHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBjZWxscyBzaXplXHJcbiAgICAgIHRva2VuSWR4Kys7XHJcbiAgICAgIHN0clRva2VuID0gdG9rZW5zW3Rva2VuSWR4XTtcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gTk51bWJlci5QYXJzZShzdHJUb2tlbik7XHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBkZWZhdWx0IHZhbHVlXHJcbiAgICAgIC8vIG5vdGU6IHRoZSBkZWZhdWx0IHZhbHVlIG1heSBjb250YWluIHRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVyIGFzIGRhdGFcclxuICAgICAgc3RyVG9rZW4gPSBVdGlsU3RyQnl0ZU1vZGUubGVmdEIoc3JjQmxvYi5zdWJzdHIocG9zKSwgbGVuKTtcclxuICAgICAgZGVzdEJ1Zi5BcHBlbmQoc3RyVG9rZW4gKyBcIixcIik7XHJcbiAgICAgIHBvcyA9IHBvcyArIChzdHJUb2tlbi5sZW5ndGggKyAxKTtcclxuXHJcbiAgICAgIHRva2VucyA9IFN0clV0aWwudG9rZW5pemUoc3JjQmxvYi5zdWJzdHIocG9zKSwgXCIsXCIpO1xyXG4gICAgICB0b2tlbklkeCA9IDA7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBjZWxscyBudWxsIGRlZmF1bHQgZmxhZ1xyXG4gICAgICB0b2tlbklkeCsrO1xyXG4gICAgICBzdHJUb2tlbiA9IHRva2Vuc1t0b2tlbklkeF07XHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBjZWxscyBudWxsIGFsbG93ZWQgZmxhZ1xyXG4gICAgICB0b2tlbklkeCsrO1xyXG4gICAgICBzdHJUb2tlbiA9IHRva2Vuc1t0b2tlbklkeF07XHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjb3B5IHRoZSBjb2x1bW4ncyB0b3RhbCBsZW5ndGhcclxuICAgICAgdG9rZW5JZHgrKztcclxuICAgICAgc3RyVG9rZW4gPSB0b2tlbnNbdG9rZW5JZHhdO1xyXG4gICAgICBkZXN0QnVmLkFwcGVuZChzdHJUb2tlbiArIFwiLFwiKTtcclxuICAgICAgcG9zID0gcG9zICsgKHN0clRva2VuLmxlbmd0aCArIDEpO1xyXG5cclxuICAgICAgLy8gY29weSB0aGUgdmVjdG9yIHNpemVcclxuICAgICAgdG9rZW5JZHgrKztcclxuICAgICAgc3RyVG9rZW4gPSB0b2tlbnNbdG9rZW5JZHhdO1xyXG4gICAgICBsZXQgdmVjU2l6ZTogbnVtYmVyID0gTk51bWJlci5QYXJzZShzdHJUb2tlbik7XHJcbiAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuICsgXCIsXCIpO1xyXG4gICAgICBwb3MgPSBwb3MgKyAoc3RyVG9rZW4ubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAvLyBjb3B5IGJsb2JzX1xyXG4gICAgICB0b2tlbklkeCsrO1xyXG4gICAgICBzdHJUb2tlbiA9IHRva2Vuc1t0b2tlbklkeCsrXTtcclxuICAgICAgZGVzdEJ1Zi5BcHBlbmQoc3RyVG9rZW4gKyBcIixcIik7XHJcbiAgICAgIHBvcyA9IHBvcyArIChzdHJUb2tlbi5sZW5ndGggKyAxKTtcclxuXHJcbiAgICAgIC8vIGNvcHkgZWFjaCB2ZWN0b3JcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHZlY1NpemU7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIC8vIG5vdGU6IHRoZSBkZWZhdWx0IHZhbHVlIG1heSBjb250YWluIHRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVyIGFzIGRhdGFcclxuICAgICAgICBzdHJUb2tlbiA9IFV0aWxTdHJCeXRlTW9kZS5sZWZ0QihzcmNCbG9iLnN1YnN0cihwb3MpLCBsZW4pO1xyXG4gICAgICAgIGRlc3RCdWYuQXBwZW5kKHN0clRva2VuKTtcclxuICAgICAgICBwb3MgPSBwb3MgKyBzdHJUb2tlbi5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvcHkgdGhlIHJlc3RcclxuICAgICAgc3RyVG9rZW4gPSBzcmNCbG9iLnN1YnN0cihwb3MpO1xyXG4gICAgICBkZXN0QnVmLkFwcGVuZChzdHJUb2tlbik7XHJcblxyXG4gICAgICBsZXQgZGVzdEJsb2I6IHN0cmluZyA9IGRlc3RCdWYuVG9TdHJpbmcoKTtcclxuICAgICAgcmV0dXJuIGRlc3RCbG9iO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gc3JjQmxvYjtcclxuICB9XHJcbn1cclxuIl19
@@ -1,244 +0,0 @@
1
- export class ExpressionInterface {
2
- constructor() {
3
- }
4
- }
5
- ExpressionInterface.EXP_OPER_LEN = 2;
6
- ExpressionInterface.EXP_OPER_FUNC_PTR_LEN = 4;
7
- ExpressionInterface.EXP_OP_NONE = 0;
8
- ExpressionInterface.EXP_OP_V = 1;
9
- ExpressionInterface.EXP_OP_VAR = 2;
10
- ExpressionInterface.EXP_OP_A = 3;
11
- ExpressionInterface.EXP_OP_H = 4;
12
- ExpressionInterface.EXP_OP_N = 5;
13
- ExpressionInterface.EXP_OP_D = 6;
14
- ExpressionInterface.EXP_OP_T = 7;
15
- ExpressionInterface.EXP_OP_L = 8;
16
- ExpressionInterface.EXP_OP_F = 9;
17
- ExpressionInterface.EXP_OP_K = 10;
18
- ExpressionInterface.EXP_OP_P = 11;
19
- ExpressionInterface.EXP_OP_M = 12;
20
- ExpressionInterface.EXP_OP_ACT = 13;
21
- ExpressionInterface.EXP_OP_KBD = 14;
22
- ExpressionInterface.EXP_OP_ADD = 15;
23
- ExpressionInterface.EXP_OP_SUB = 16;
24
- ExpressionInterface.EXP_OP_MUL = 17;
25
- ExpressionInterface.EXP_OP_DIV = 18;
26
- ExpressionInterface.EXP_OP_MOD = 19;
27
- ExpressionInterface.EXP_OP_NEG = 20;
28
- ExpressionInterface.EXP_OP_FIX = 21;
29
- ExpressionInterface.EXP_OP_ROUND = 22;
30
- ExpressionInterface.EXP_OP_EQ = 23;
31
- ExpressionInterface.EXP_OP_NE = 24;
32
- ExpressionInterface.EXP_OP_LE = 25;
33
- ExpressionInterface.EXP_OP_LT = 26;
34
- ExpressionInterface.EXP_OP_GE = 27;
35
- ExpressionInterface.EXP_OP_GT = 28;
36
- ExpressionInterface.EXP_OP_NOT = 29;
37
- ExpressionInterface.EXP_OP_OR = 30;
38
- ExpressionInterface.EXP_OP_AND = 31;
39
- ExpressionInterface.EXP_OP_IF = 32;
40
- ExpressionInterface.EXP_OP_LEN = 33;
41
- ExpressionInterface.EXP_OP_CON = 34;
42
- ExpressionInterface.EXP_OP_MID = 35;
43
- ExpressionInterface.EXP_OP_LEFT = 36;
44
- ExpressionInterface.EXP_OP_RIGHT = 37;
45
- ExpressionInterface.EXP_OP_FILL = 38;
46
- ExpressionInterface.EXP_OP_INSTR = 39;
47
- ExpressionInterface.EXP_OP_TRIM = 40;
48
- ExpressionInterface.EXP_OP_LTRIM = 41;
49
- ExpressionInterface.EXP_OP_RTRIM = 42;
50
- ExpressionInterface.EXP_OP_STR = 43;
51
- ExpressionInterface.EXP_OP_VAL = 44;
52
- ExpressionInterface.EXP_OP_STAT = 45;
53
- ExpressionInterface.EXP_OP_LEVEL = 46;
54
- ExpressionInterface.EXP_OP_COUNTER = 47;
55
- ExpressionInterface.EXP_OP_VARPREV = 48;
56
- ExpressionInterface.EXP_OP_VARCURR = 49;
57
- ExpressionInterface.EXP_OP_VARMOD = 50;
58
- ExpressionInterface.EXP_OP_VARINP = 51;
59
- ExpressionInterface.EXP_OP_VARNAME = 52;
60
- ExpressionInterface.EXP_OP_VIEWMOD = 53;
61
- ExpressionInterface.EXP_OP_ENV = 54;
62
- ExpressionInterface.EXP_OP_INIGET = 55;
63
- ExpressionInterface.EXP_OP_INIPUT = 56;
64
- ExpressionInterface.EXP_OP_TERM = 59;
65
- ExpressionInterface.EXP_OP_DATE = 61;
66
- ExpressionInterface.EXP_OP_TIME = 62;
67
- ExpressionInterface.EXP_OP_SYS = 63;
68
- ExpressionInterface.EXP_OP_PROG = 66;
69
- ExpressionInterface.EXP_OP_PWR = 68;
70
- ExpressionInterface.EXP_OP_LOG = 69;
71
- ExpressionInterface.EXP_OP_EXP = 70;
72
- ExpressionInterface.EXP_OP_ABS = 71;
73
- ExpressionInterface.EXP_OP_SIN = 72;
74
- ExpressionInterface.EXP_OP_COS = 73;
75
- ExpressionInterface.EXP_OP_TAN = 74;
76
- ExpressionInterface.EXP_OP_ASIN = 75;
77
- ExpressionInterface.EXP_OP_ACOS = 76;
78
- ExpressionInterface.EXP_OP_ATAN = 77;
79
- ExpressionInterface.EXP_OP_RAND = 78;
80
- ExpressionInterface.EXP_OP_MIN = 79;
81
- ExpressionInterface.EXP_OP_MAX = 80;
82
- ExpressionInterface.EXP_OP_RANGE = 81;
83
- ExpressionInterface.EXP_OP_REP = 82;
84
- ExpressionInterface.EXP_OP_INS = 83;
85
- ExpressionInterface.EXP_OP_DEL = 84;
86
- ExpressionInterface.EXP_OP_FLIP = 85;
87
- ExpressionInterface.EXP_OP_UPPER = 86;
88
- ExpressionInterface.EXP_OP_LOWER = 87;
89
- ExpressionInterface.EXP_OP_CRC = 88;
90
- ExpressionInterface.EXP_OP_CHKDGT = 89;
91
- ExpressionInterface.EXP_OP_SOUNDX = 90;
92
- ExpressionInterface.EXP_OP_HSTR = 91;
93
- ExpressionInterface.EXP_OP_HVAL = 92;
94
- ExpressionInterface.EXP_OP_CHR = 93;
95
- ExpressionInterface.EXP_OP_ASC = 94;
96
- ExpressionInterface.EXP_OP_MSTR = 103;
97
- ExpressionInterface.EXP_OP_MVAL = 104;
98
- ExpressionInterface.EXP_OP_DSTR = 105;
99
- ExpressionInterface.EXP_OP_DVAL = 106;
100
- ExpressionInterface.EXP_OP_TSTR = 107;
101
- ExpressionInterface.EXP_OP_TVAL = 108;
102
- ExpressionInterface.EXP_OP_DAY = 109;
103
- ExpressionInterface.EXP_OP_MONTH = 110;
104
- ExpressionInterface.EXP_OP_YEAR = 111;
105
- ExpressionInterface.EXP_OP_DOW = 112;
106
- ExpressionInterface.EXP_OP_CDOW = 113;
107
- ExpressionInterface.EXP_OP_CMONTH = 114;
108
- ExpressionInterface.EXP_OP_NDOW = 115;
109
- ExpressionInterface.EXP_OP_NMONTH = 116;
110
- ExpressionInterface.EXP_OP_SECOND = 117;
111
- ExpressionInterface.EXP_OP_MINUTE = 118;
112
- ExpressionInterface.EXP_OP_HOUR = 119;
113
- ExpressionInterface.EXP_OP_DELAY = 120;
114
- ExpressionInterface.EXP_OP_IDLE = 121;
115
- ExpressionInterface.EXP_OP_LOGICAL = 138;
116
- ExpressionInterface.EXP_OP_VISUAL = 139;
117
- ExpressionInterface.EXP_OP_ADDDATE = 156;
118
- ExpressionInterface.EXP_OP_ADDTIME = 157;
119
- ExpressionInterface.EXP_OP_OWNER = 158;
120
- ExpressionInterface.EXP_OP_VARATTR = 159;
121
- ExpressionInterface.EXP_OP_BOM = 160;
122
- ExpressionInterface.EXP_OP_BOY = 161;
123
- ExpressionInterface.EXP_OP_EOM = 162;
124
- ExpressionInterface.EXP_OP_EOY = 163;
125
- ExpressionInterface.EXP_OP_RIGHT_LITERAL = 165;
126
- ExpressionInterface.EXP_OP_ROLLBACK = 167;
127
- ExpressionInterface.EXP_OP_VARSET = 168;
128
- ExpressionInterface.EXP_OP_EVALX = 171;
129
- ExpressionInterface.EXP_OP_IGNORE = 172;
130
- ExpressionInterface.EXP_OP_NULL = 173;
131
- ExpressionInterface.EXP_OP_NULL_A = 174;
132
- ExpressionInterface.EXP_OP_NULL_N = 175;
133
- ExpressionInterface.EXP_OP_NULL_B = 176;
134
- ExpressionInterface.EXP_OP_NULL_D = 177;
135
- ExpressionInterface.EXP_OP_NULL_T = 178;
136
- ExpressionInterface.EXP_OP_ISNULL = 179;
137
- ExpressionInterface.EXP_OP_TDEPTH = 180;
138
- ExpressionInterface.EXP_OP_MINMAGIC = 193;
139
- ExpressionInterface.EXP_OP_MAXMAGIC = 194;
140
- ExpressionInterface.EXP_OP_RESMAGIC = 195;
141
- ExpressionInterface.EXP_OP_FILEDLG = 196;
142
- ExpressionInterface.EXP_OP_MLS_TRANS = 199;
143
- ExpressionInterface.EXP_OP_CTRL_NAME = 200;
144
- ExpressionInterface.EXP_OP_GETLANG = 206;
145
- ExpressionInterface.EXP_OP_NULL_O = 210;
146
- ExpressionInterface.EXP_OP_GETPARAM = 212;
147
- ExpressionInterface.EXP_OP_SETPARAM = 213;
148
- ExpressionInterface.EXP_OP_CND_RANGE = 219;
149
- ExpressionInterface.EXP_OP_ISDEFAULT = 235;
150
- ExpressionInterface.EXP_OP_FORM = 236;
151
- ExpressionInterface.EXP_OP_STRTOKEN = 237;
152
- ExpressionInterface.EXP_OP_INIGETLN = 241;
153
- ExpressionInterface.EXP_OP_EXPCALC = 242;
154
- ExpressionInterface.EXP_OP_E = 243;
155
- ExpressionInterface.EXP_OP_WEB_REFERENCE = 267;
156
- ExpressionInterface.EXP_OP_CASE = 273;
157
- ExpressionInterface.EXP_OP_LIKE = 275;
158
- ExpressionInterface.EXP_OP_CALLJS = 283;
159
- ExpressionInterface.EXP_OP_THIS = 290;
160
- ExpressionInterface.EXP_OP_REPSTR = 303;
161
- ExpressionInterface.EXP_OP_DBROUND = 306;
162
- ExpressionInterface.EXP_OP_VARPIC = 307;
163
- ExpressionInterface.EXP_OP_STRTOK_CNT = 309;
164
- ExpressionInterface.EXP_OP_VARCURRN = 310;
165
- ExpressionInterface.EXP_OP_VARINDEX = 311;
166
- ExpressionInterface.EXP_OP_JCDOW = 343;
167
- ExpressionInterface.EXP_OP_JMONTH = 344;
168
- ExpressionInterface.EXP_OP_JNDOW = 345;
169
- ExpressionInterface.EXP_OP_JYEAR = 346;
170
- ExpressionInterface.EXP_OP_JGENGO = 347;
171
- ExpressionInterface.EXP_OP_HAN = 350;
172
- ExpressionInterface.EXP_OP_ZEN = 351;
173
- ExpressionInterface.EXP_OP_ZENS = 352;
174
- ExpressionInterface.EXP_OP_ZIMEREAD = 353;
175
- ExpressionInterface.EXP_OP_ZKANA = 354;
176
- ExpressionInterface.EXP_OP_GOTO_CTRL = 368;
177
- ExpressionInterface.EXP_OP_TRANSLATE = 373;
178
- ExpressionInterface.EXP_OP_ASTR = 374;
179
- ExpressionInterface.EXP_OP_LOOPCOUNTER = 401;
180
- ExpressionInterface.EXP_OP_VECGET = 417;
181
- ExpressionInterface.EXP_OP_VECSET = 418;
182
- ExpressionInterface.EXP_OP_VECSIZE = 419;
183
- ExpressionInterface.EXP_OP_VECCELLATTR = 420;
184
- ExpressionInterface.EXP_OP_BLOBSIZE = 442;
185
- ExpressionInterface.EXP_OP_STRTOKEN_IDX = 448;
186
- ExpressionInterface.EXP_OP_MTIME = 449;
187
- ExpressionInterface.EXP_OP_MTVAL = 450;
188
- ExpressionInterface.EXP_OP_MTSTR = 451;
189
- ExpressionInterface.EXP_OP_IN = 462;
190
- ExpressionInterface.EXP_OP_ISCOMPONENT = 465;
191
- ExpressionInterface.EXP_OP_EXT_A = 485;
192
- ExpressionInterface.EXP_OP_NULL_U = 491;
193
- ExpressionInterface.EXP_OP_USER_DEFINED_FUNC = 496;
194
- ExpressionInterface.EXP_OP_SUBFORM_EXEC_MODE = 497;
195
- ExpressionInterface.EXP_OP_UNICODEASC = 506;
196
- ExpressionInterface.EXP_OP_ADDDT = 509;
197
- ExpressionInterface.EXP_OP_DIFDT = 510;
198
- ExpressionInterface.EXP_OP_ISFIRSTRECORDCYCLE = 511;
199
- ExpressionInterface.EXP_OP_MAINLEVEL = 512;
200
- ExpressionInterface.EXP_OP_MAINDISPLAY = 515;
201
- ExpressionInterface.EXP_OP_DBVIEWSIZE = 539;
202
- ExpressionInterface.EXP_OP_DBVIEWROWIDX = 540;
203
- ExpressionInterface.EXP_OP_PROJECTDIR = 541;
204
- ExpressionInterface.EXP_OP_FORMSTATECLEAR = 542;
205
- ExpressionInterface.EXP_OP_PUBLICNAME = 543;
206
- ExpressionInterface.EXP_OP_TASKID = 544;
207
- ExpressionInterface.EXP_OP_STR_BUILD = 549;
208
- ExpressionInterface.EXP_OP_EMPTY_DATA_VIEW = 561;
209
- ExpressionInterface.EXP_OP_STATUSBARSETTEXT = 568;
210
- ExpressionInterface.EXP_OP_CLIENT_DIRDLG = 574;
211
- ExpressionInterface.EXP_OP_CLIENT_REDIRECT = 577;
212
- ExpressionInterface.EXP_OP_IS_MOBILE_CLIENT = 593;
213
- ExpressionInterface.EXP_OP_CLIENT_SESSION_STATISTICS_GET = 594;
214
- ExpressionInterface.EXP_OP_TASKTYPE = 612;
215
- ExpressionInterface.EXP_OP_CLIENT_FILE_TO_SERVER = 615;
216
- ExpressionInterface.EXP_OP_RANGE_ADD = 616;
217
- ExpressionInterface.EXP_OP_RANGE_RESET = 617;
218
- ExpressionInterface.EXP_OP_LOCATE_ADD = 618;
219
- ExpressionInterface.EXP_OP_LOCATE_RESET = 619;
220
- ExpressionInterface.EXP_OP_SORT_ADD = 620;
221
- ExpressionInterface.EXP_OP_SORT_RESET = 621;
222
- ExpressionInterface.EXP_OP_TSK_INSTANCE = 622;
223
- ExpressionInterface.EXP_OP_CLIENTSESSION_SET = 632;
224
- ExpressionInterface.EXP_OP_UTCDATE = 633;
225
- ExpressionInterface.EXP_OP_UTCTIME = 634;
226
- ExpressionInterface.EXP_OP_UTCMTIME = 635;
227
- ExpressionInterface.EXP_OP_CLIENT_DB_DISCONNECT = 636;
228
- ExpressionInterface.EXP_OP_DATAVIEW_TO_DATASOURCE = 637;
229
- ExpressionInterface.EXP_OP_CLIENT_DB_DEL = 638;
230
- ExpressionInterface.EXP_OP_VARDISPLAYNAME = 647;
231
- ExpressionInterface.EXP_OP_CONTROL_ITEMS_REFRESH = 649;
232
- ExpressionInterface.EXP_OP_VARCONTROLID = 650;
233
- ExpressionInterface.EXP_OP_CONTROLITEMSLIST = 651;
234
- ExpressionInterface.EXP_OP_CONTROLDISPLAYLIST = 652;
235
- ExpressionInterface.EXP_OP_CLIENT_SQL_EXECUTE = 653;
236
- ExpressionInterface.EXP_OP_CONTROL_SELECT_PROGRAM = 656;
237
- ExpressionInterface.EXP_OP_SET_TITLE = 687;
238
- ExpressionInterface.EXP_OP_IS_ROW_EDITING = 689;
239
- ExpressionInterface.EXP_OP_IS_LOGGED_IN = 690;
240
- ExpressionInterface.EXP_OP_SET_COOKIE = 701;
241
- ExpressionInterface.EXP_OP_GET_COOKIE = 702;
242
- ExpressionInterface.EXP_OP_DELETE_COOKIE = 703;
243
- ExpressionInterface.EXP_OP_ROUTEGET = 705;
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwcmVzc2lvbkludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9leHAvRXhwcmVzc2lvbkludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBRSxNQUFNLE9BQU8sbUJBQW1CO0lBMFBoQztJQUNBLENBQUM7O0FBdlBNLGdDQUFZLEdBQVcsQ0FBQyxDQUFDO0FBQ3pCLHlDQUFxQixHQUFXLENBQUMsQ0FBQztBQUdsQywrQkFBVyxHQUFXLENBQUMsQ0FBQztBQUN4Qiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw4QkFBVSxHQUFXLENBQUMsQ0FBQztBQUN2Qiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLENBQUMsQ0FBQztBQUNyQiw0QkFBUSxHQUFXLEVBQUUsQ0FBQztBQUN0Qiw0QkFBUSxHQUFXLEVBQUUsQ0FBQztBQUN0Qiw0QkFBUSxHQUFXLEVBQUUsQ0FBQztBQUN0Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw2QkFBUyxHQUFXLEVBQUUsQ0FBQztBQUN2Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQixrQ0FBYyxHQUFXLEVBQUUsQ0FBQztBQUM1QixrQ0FBYyxHQUFXLEVBQUUsQ0FBQztBQUM1QixrQ0FBYyxHQUFXLEVBQUUsQ0FBQztBQUM1QixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQixrQ0FBYyxHQUFXLEVBQUUsQ0FBQztBQUM1QixrQ0FBYyxHQUFXLEVBQUUsQ0FBQztBQUM1Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQixnQ0FBWSxHQUFXLEVBQUUsQ0FBQztBQUMxQiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQixpQ0FBYSxHQUFXLEVBQUUsQ0FBQztBQUMzQiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6QiwrQkFBVyxHQUFXLEVBQUUsQ0FBQztBQUN6Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4Qiw4QkFBVSxHQUFXLEVBQUUsQ0FBQztBQUN4QiwrQkFBVyxHQUFXLEdBQUcsQ0FBQztB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QUFDO0FBQzVDLHdDQUFvQixHQUFXLEdBQUcsQ0FBQztBQUNuQyx5Q0FBcUIsR0FBVyxHQUFHLENBQUM7QUFDcEMsZ0RBQTRCLEdBQVcsR0FBRyxDQUFDO0FBQzNDLHVDQUFtQixHQUFXLEdBQUcsQ0FBQztBQUNsQywyQ0FBdUIsR0FBVyxHQUFHLENBQUM7QUFDdEMsNkNBQXlCLEdBQVcsR0FBRyxDQUFDO0FBQ3hDLDZDQUF5QixHQUFXLEdBQUcsQ0FBQztBQUN4QyxpREFBNkIsR0FBVyxHQUFHLENBQUM7QUFDNUMsb0NBQWdCLEdBQVcsR0FBRyxDQUFDO0FBQy9CLHlDQUFxQixHQUFXLEdBQUcsQ0FBQztBQUNwQyx1Q0FBbUIsR0FBVyxHQUFHLENBQUM7QUFFbEMscUNBQWlCLEdBQVcsR0FBRyxDQUFDO0FBQ2hDLHFDQUFpQixHQUFXLEdBQUcsQ0FBQztBQUNoQyx3Q0FBb0IsR0FBVyxHQUFHLENBQUM7QUFFbkMsbUNBQWUsR0FBVyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgIGV4cG9ydCBjbGFzcyBFeHByZXNzaW9uSW50ZXJmYWNlIHtcclxuXHJcbiAgLy8gR2VuZXJhbCBjb25zdGFudHMgZGVmaW5pdGlvbnNcclxuXHJcbiAgc3RhdGljIEVYUF9PUEVSX0xFTjogbnVtYmVyID0gMjtcclxuICBzdGF0aWMgRVhQX09QRVJfRlVOQ19QVFJfTEVOOiBudW1iZXIgPSA0O1xyXG5cclxuICAvLyBleHByZXNzaW9uIG9wZXJhdG9yc1xyXG4gIHN0YXRpYyBFWFBfT1BfTk9ORTogbnVtYmVyID0gMDtcclxuICBzdGF0aWMgRVhQX09QX1Y6IG51bWJlciA9IDE7XHJcbiAgc3RhdGljIEVYUF9PUF9WQVI6IG51bWJlciA9IDI7XHJcbiAgc3RhdGljIEVYUF9PUF9BOiBudW1iZXIgPSAzO1xyXG4gIHN0YXRpYyBFWFBfT1BfSDogbnVtYmVyID0gNDtcclxuICBzdGF0aWMgRVhQX09QX046IG51bWJlciA9IDU7XHJcbiAgc3RhdGljIEVYUF9PUF9EOiBudW1iZXIgPSA2O1xyXG4gIHN0YXRpYyBFWFBfT1BfVDogbnVtYmVyID0gNztcclxuICBzdGF0aWMgRVhQX09QX0w6IG51bWJlciA9IDg7XHJcbiAgc3RhdGljIEVYUF9PUF9GOiBudW1iZXIgPSA5O1xyXG4gIHN0YXRpYyBFWFBfT1BfSzogbnVtYmVyID0gMTA7XHJcbiAgc3RhdGljIEVYUF9PUF9QOiBudW1iZXIgPSAxMTtcclxuICBzdGF0aWMgRVhQX09QX006IG51bWJlciA9IDEyO1xyXG4gIHN0YXRpYyBFWFBfT1BfQUNUOiBudW1iZXIgPSAxMztcclxuICBzdGF0aWMgRVhQX09QX0tCRDogbnVtYmVyID0gMTQ7XHJcbiAgc3RhdGljIEVYUF9PUF9BREQ6IG51bWJlciA9IDE1O1xyXG4gIHN0YXRpYyBFWFBfT1BfU1VCOiBudW1iZXIgPSAxNjtcclxuICBzdGF0aWMgRVhQX09QX01VTDogbnVtYmVyID0gMTc7XHJcbiAgc3RhdGljIEVYUF9PUF9ESVY6IG51bWJlciA9IDE4O1xyXG4gIHN0YXRpYyBFWFBfT1BfTU9EOiBudW1iZXIgPSAxOTtcclxuICBzdGF0aWMgRVhQX09QX05FRzogbnVtYmVyID0gMjA7XHJcbiAgc3RhdGljIEVYUF9PUF9GSVg6IG51bWJlciA9IDIxO1xyXG4gIHN0YXRpYyBFWFBfT1BfUk9VTkQ6IG51bWJlciA9IDIyO1xyXG4gIHN0YXRpYyBFWFBfT1BfRVE6IG51bWJlciA9IDIzO1xyXG4gIHN0YXRpYyBFWFBfT1BfTkU6IG51bWJlciA9IDI0O1xyXG4gIHN0YXRpYyBFWFBfT1BfTEU6IG51bWJlciA9IDI1O1xyXG4gIHN0YXRpYyBFWFBfT1BfTFQ6IG51bWJlciA9IDI2O1xyXG4gIHN0YXRpYyBFWFBfT1BfR0U6IG51bWJlciA9IDI3O1xyXG4gIHN0YXRpYyBFWFBfT1BfR1Q6IG51bWJlciA9IDI4O1xyXG4gIHN0YXRpYyBFWFBfT1BfTk9UOiBudW1iZXIgPSAyOTtcclxuICBzdGF0aWMgRVhQX09QX09SOiBudW1iZXIgPSAzMDtcclxuICBzdGF0aWMgRVhQX09QX0FORDogbnVtYmVyID0gMzE7XHJcbiAgc3RhdGljIEVYUF9PUF9JRjogbnVtYmVyID0gMzI7XHJcbiAgc3RhdGljIEVYUF9PUF9MRU46IG51bWJlciA9IDMzO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ09OOiBudW1iZXIgPSAzNDtcclxuICBzdGF0aWMgRVhQX09QX01JRDogbnVtYmVyID0gMzU7XHJcbiAgc3RhdGljIEVYUF9PUF9MRUZUOiBudW1iZXIgPSAzNjtcclxuICBzdGF0aWMgRVhQX09QX1JJR0hUOiBudW1iZXIgPSAzNztcclxuICBzdGF0aWMgRVhQX09QX0ZJTEw6IG51bWJlciA9IDM4O1xyXG4gIHN0YXRpYyBFWFBfT1BfSU5TVFI6IG51bWJlciA9IDM5O1xyXG4gIHN0YXRpYyBFWFBfT1BfVFJJTTogbnVtYmVyID0gNDA7XHJcbiAgc3RhdGljIEVYUF9PUF9MVFJJTTogbnVtYmVyID0gNDE7XHJcbiAgc3RhdGljIEVYUF9PUF9SVFJJTTogbnVtYmVyID0gNDI7XHJcbiAgc3RhdGljIEVYUF9PUF9TVFI6IG51bWJlciA9IDQzO1xyXG4gIHN0YXRpYyBFWFBfT1BfVkFMOiBudW1iZXIgPSA0NDtcclxuICBzdGF0aWMgRVhQX09QX1NUQVQ6IG51bWJlciA9IDQ1O1xyXG4gIHN0YXRpYyBFWFBfT1BfTEVWRUw6IG51bWJlciA9IDQ2O1xyXG4gIHN0YXRpYyBFWFBfT1BfQ09VTlRFUjogbnVtYmVyID0gNDc7XHJcbiAgc3RhdGljIEVYUF9PUF9WQVJQUkVWOiBudW1iZXIgPSA0ODtcclxuICBzdGF0aWMgRVhQX09QX1ZBUkNVUlI6IG51bWJlciA9IDQ5O1xyXG4gIHN0YXRpYyBFWFBfT1BfVkFSTU9EOiBudW1iZXIgPSA1MDtcclxuICBzdGF0aWMgRVhQX09QX1ZBUklOUDogbnVtYmVyID0gNTE7XHJcbiAgc3RhdGljIEVYUF9PUF9WQVJOQU1FOiBudW1iZXIgPSA1MjtcclxuICBzdGF0aWMgRVhQX09QX1ZJRVdNT0Q6IG51bWJlciA9IDUzO1xyXG4gIHN0YXRpYyBFWFBfT1BfRU5WOiBudW1iZXIgPSA1NDtcclxuICBzdGF0aWMgRVhQX09QX0lOSUdFVDogbnVtYmVyID0gNTU7XHJcbiAgc3RhdGljIEVYUF9PUF9JTklQVVQ6IG51bWJlciA9IDU2O1xyXG4gIHN0YXRpYyBFWFBfT1BfVEVSTTogbnVtYmVyID0gNTk7XHJcbiAgc3RhdGljIEVYUF9PUF9EQVRFOiBudW1iZXIgPSA2MTtcclxuICBzdGF0aWMgRVhQX09QX1RJTUU6IG51bWJlciA9IDYyO1xyXG4gIHN0YXRpYyBFWFBfT1BfU1lTOiBudW1iZXIgPSA2MztcclxuICBzdGF0aWMgRVhQX09QX1BST0c6IG51bWJlciA9IDY2O1xyXG4gIHN0YXRpYyBFWFBfT1BfUFdSOiBudW1iZXIgPSA2ODtcclxuICBzdGF0aWMgRVhQX09QX0xPRzogbnVtYmVyID0gNjk7XHJcbiAgc3RhdGljIEVYUF9PUF9FWFA6IG51bWJlciA9IDcwO1xyXG4gIHN0YXRpYyBFWFBfT1BfQUJTOiBudW1iZXIgPSA3MTtcclxuICBzdGF0aWMgRVhQX09QX1NJTjogbnVtYmVyID0gNzI7XHJcbiAgc3RhdGljIEVYUF9PUF9DT1M6IG51bWJlciA9IDczO1xyXG4gIHN0YXRpYyBFWFBfT1BfVEFOOiBudW1iZXIgPSA3NDtcclxuICBzdGF0aWMgRVhQX09QX0FTSU46IG51bWJlciA9IDc1O1xyXG4gIHN0YXRpYyBFWFBfT1BfQUNPUzogbnVtYmVyID0gNzY7XHJcbiAgc3RhdGljIEVYUF9PUF9BVEFOOiBudW1iZXIgPSA3NztcclxuICBzdGF0aWMgRVhQX09QX1JBTkQ6IG51bWJlciA9IDc4O1xyXG4gIHN0YXRpYyBFWFBfT1BfTUlOOiBudW1iZXIgPSA3OTtcclxuICBzdGF0aWMgRVhQX09QX01BWDogbnVtYmVyID0gODA7XHJcbiAgc3RhdGljIEVYUF9PUF9SQU5HRTogbnVtYmVyID0gODE7XHJcbiAgc3RhdGljIEVYUF9PUF9SRVA6IG51bWJlciA9IDgyO1xyXG4gIHN0YXRpYyBFWFBfT1BfSU5TOiBudW1iZXIgPSA4MztcclxuICBzdGF0aWMgRVhQX09QX0RFTDogbnVtYmVyID0gODQ7XHJcbiAgc3RhdGljIEVYUF9PUF9GTElQOiBudW1iZXIgPSA4NTtcclxuICBzdGF0aWMgRVhQX09QX1VQUEVSOiBudW1iZXIgPSA4NjtcclxuICBzdGF0aWMgRVhQX09QX0xPV0VSOiBudW1iZXIgPSA4NztcclxuICBzdGF0aWMgRVhQX09QX0NSQzogbnVtYmVyID0gODg7XHJcbiAgc3RhdGljIEVYUF9PUF9DSEtER1Q6IG51bWJlciA9IDg5O1xyXG4gIHN0YXRpYyBFWFBfT1BfU09VTkRYOiBudW1iZXIgPSA5MDtcclxuICBzdGF0aWMgRVhQX09QX0hTVFI6IG51bWJlciA9IDkxO1xyXG4gIHN0YXRpYyBFWFBfT1BfSFZBTDogbnVtYmVyID0gOTI7XHJcbiAgc3RhdGljIEVYUF9PUF9DSFI6IG51bWJlciA9IDkzO1xyXG4gIHN0YXRpYyBFWFBfT1BfQVNDOiBudW1iZXIgPSA5NDtcclxuICBzdGF0aWMgRVhQX09QX01TVFI6IG51bWJlciA9IDEwMztcclxuICBzdGF0aWMgRVhQX09QX01WQUw6IG51bWJlciA9IDEwNDtcclxuICBzdGF0aWMgRVhQX09QX0RTVFI6IG51bWJlciA9IDEwNTtcclxuICBzdGF0aWMgRVhQX09QX0RWQUw6IG51bWJlciA9IDEwNjtcclxuICBzdGF0aWMgRVhQX09QX1RTVFI6IG51bWJlciA9IDEwNztcclxuICBzdGF0aWMgRVhQX09QX1RWQUw6IG51bWJlciA9IDEwODtcclxuICBzdGF0aWMgRVhQX09QX0RBWTogbnVtYmVyID0gMTA5O1xyXG4gIHN0YXRpYyBFWFBfT1BfTU9OVEg6IG51bWJlciA9IDExMDtcclxuICBzdGF0aWMgRVhQX09QX1lFQVI6IG51bWJlciA9IDExMTtcclxuICBzdGF0aWMgRVhQX09QX0RPVzogbnVtYmVyID0gMTEyO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ0RPVzogbnVtYmVyID0gMTEzO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ01PTlRIOiBudW1iZXIgPSAxMTQ7XHJcbiAgc3RhdGljIEVYUF9PUF9ORE9XOiBudW1iZXIgPSAxMTU7XHJcbiAgc3RhdGljIEVYUF9PUF9OTU9OVEg6IG51bWJlciA9IDExNjtcclxuICBzdGF0aWMgRVhQX09QX1NFQ09ORDogbnVtYmVyID0gMTE3O1xyXG4gIHN0YXRpYyBFWFBfT1BfTUlOVVRFOiBudW1iZXIgPSAxMTg7XHJcbiAgc3RhdGljIEVYUF9PUF9IT1VSOiBudW1iZXIgPSAxMTk7XHJcbiAgc3RhdGljIEVYUF9PUF9ERUxBWTogbnVtYmVyID0gMTIwO1xyXG4gIHN0YXRpYyBFWFBfT1BfSURMRTogbnVtYmVyID0gMTIxO1xyXG4gIHN0YXRpYyBFWFBfT1BfTE9HSUNBTDogbnVtYmVyID0gMTM4O1xyXG4gIHN0YXRpYyBFWFBfT1BfVklTVUFMOiBudW1iZXIgPSAxMzk7XHJcbiAgc3RhdGljIEVYUF9PUF9BREREQVRFOiBudW1iZXIgPSAxNTY7XHJcbiAgc3RhdGljIEVYUF9PUF9BRERUSU1FOiBudW1iZXIgPSAxNTc7XHJcbiAgc3RhdGljIEVYUF9PUF9PV05FUjogbnVtYmVyID0gMTU4O1xyXG4gIHN0YXRpYyBFWFBfT1BfVkFSQVRUUjogbnVtYmVyID0gMTU5O1xyXG4gIHN0YXRpYyBFWFBfT1BfQk9NOiBudW1iZXIgPSAxNjA7XHJcbiAgc3RhdGljIEVYUF9PUF9CT1k6IG51bWJlciA9IDE2MTtcclxuICBzdGF0aWMgRVhQX09QX0VPTTogbnVtYmVyID0gMTYyO1xyXG4gIHN0YXRpYyBFWFBfT1BfRU9ZOiBudW1iZXIgPSAxNjM7XHJcbiAgc3RhdGljIEVYUF9PUF9SSUdIVF9MSVRFUkFMOiBudW1iZXIgPSAxNjU7XHJcbiAgc3RhdGljIEVYUF9PUF9ST0xMQkFDSzogbnVtYmVyID0gMTY3O1xyXG4gIHN0YXRpYyBFWFBfT1BfVkFSU0VUOiBudW1iZXIgPSAxNjg7XHJcbiAgc3RhdGljIEVYUF9PUF9FVkFMWDogbnVtYmVyID0gMTcxO1xyXG4gIHN0YXRpYyBFWFBfT1BfSUdOT1JFOiBudW1iZXIgPSAxNzI7XHJcbiAgc3RhdGljIEVYUF9PUF9OVUxMOiBudW1iZXIgPSAxNzM7XHJcbiAgc3RhdGljIEVYUF9PUF9OVUxMX0E6IG51bWJlciA9IDE3NDtcclxuICBzdGF0aWMgRVhQX09QX05VTExfTjogbnVtYmVyID0gMTc1O1xyXG4gIHN0YXRpYyBFWFBfT1BfTlVMTF9COiBudW1iZXIgPSAxNzY7XHJcbiAgc3RhdGljIEVYUF9PUF9OVUxMX0Q6IG51bWJlciA9IDE3NztcclxuICBzdGF0aWMgRVhQX09QX05VTExfVDogbnVtYmVyID0gMTc4O1xyXG4gIHN0YXRpYyBFWFBfT1BfSVNOVUxMOiBudW1iZXIgPSAxNzk7XHJcbiAgc3RhdGljIEVYUF9PUF9UREVQVEg6IG51bWJlciA9IDE4MDtcclxuICAgc3RhdGljIEVYUF9PUF9NSU5NQUdJQzogbnVtYmVyID0gMTkzO1xyXG4gIHN0YXRpYyBFWFBfT1BfTUFYTUFHSUM6IG51bWJlciA9IDE5NDtcclxuICBzdGF0aWMgRVhQX09QX1JFU01BR0lDOiBudW1iZXIgPSAxOTU7XHJcbiAgc3RhdGljIEVYUF9PUF9GSUxFRExHOiBudW1iZXIgPSAxOTY7XHJcbiAgc3RhdGljIEVYUF9PUF9NTFNfVFJBTlM6IG51bWJlciA9IDE5OTtcclxuICBzdGF0aWMgRVhQX09QX0NUUkxfTkFNRTogbnVtYmVyID0gMjAwO1xyXG4gICBzdGF0aWMgRVhQX09QX0dFVExBTkc6IG51bWJlciA9IDIwNjtcclxuICAgc3RhdGljIEVYUF9PUF9OVUxMX086IG51bWJlciA9IDIxMDtcclxuICBzdGF0aWMgRVhQX09QX0dFVFBBUkFNOiBudW1iZXIgPSAyMTI7XHJcbiAgc3RhdGljIEVYUF9PUF9TRVRQQVJBTTogbnVtYmVyID0gMjEzO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ05EX1JBTkdFOiBudW1iZXIgPSAyMTk7XHJcbiAgc3RhdGljIEVYUF9PUF9JU0RFRkFVTFQ6IG51bWJlciA9IDIzNTtcclxuICBzdGF0aWMgRVhQX09QX0ZPUk06IG51bWJlciA9IDIzNjtcclxuICBzdGF0aWMgRVhQX09QX1NUUlRPS0VOOiBudW1iZXIgPSAyMzc7XHJcbiAgc3RhdGljIEVYUF9PUF9JTklHRVRMTjogbnVtYmVyID0gMjQxO1xyXG4gIHN0YXRpYyBFWFBfT1BfRVhQQ0FMQzogbnVtYmVyID0gMjQyO1xyXG4gIHN0YXRpYyBFWFBfT1BfRTogbnVtYmVyID0gMjQzO1xyXG4gIHN0YXRpYyBFWFBfT1BfV0VCX1JFRkVSRU5DRTogbnVtYmVyID0gMjY3O1xyXG4gIHN0YXRpYyBFWFBfT1BfQ0FTRTogbnVtYmVyID0gMjczO1xyXG4gIHN0YXRpYyBFWFBfT1BfTElLRTogbnVtYmVyID0gMjc1O1xyXG4gIHN0YXRpYyBFWFBfT1BfQ0FMTEpTOiBudW1iZXIgPSAyODM7XHJcbiAgc3RhdGljIEVYUF9PUF9USElTOiBudW1iZXIgPSAyOTA7XHJcbiAgc3RhdGljIEVYUF9PUF9SRVBTVFI6IG51bWJlciA9IDMwMztcclxuICBzdGF0aWMgRVhQX09QX0RCUk9VTkQ6IG51bWJlciA9IDMwNjtcclxuICBzdGF0aWMgRVhQX09QX1ZBUlBJQzogbnVtYmVyID0gMzA3O1xyXG4gIHN0YXRpYyBFWFBfT1BfU1RSVE9LX0NOVDogbnVtYmVyID0gMzA5O1xyXG4gIHN0YXRpYyBFWFBfT1BfVkFSQ1VSUk46IG51bWJlciA9IDMxMDtcclxuICBzdGF0aWMgRVhQX09QX1ZBUklOREVYOiBudW1iZXIgPSAzMTE7XHJcbiAgc3RhdGljIEVYUF9PUF9KQ0RPVzogbnVtYmVyID0gMzQzO1xyXG4gIHN0YXRpYyBFWFBfT1BfSk1PTlRIOiBudW1iZXIgPSAzNDQ7XHJcbiAgc3RhdGljIEVYUF9PUF9KTkRPVzogbnVtYmVyID0gMzQ1O1xyXG4gIHN0YXRpYyBFWFBfT1BfSllFQVI6IG51bWJlciA9IDM0NjtcclxuICBzdGF0aWMgRVhQX09QX0pHRU5HTzogbnVtYmVyID0gMzQ3O1xyXG4gIHN0YXRpYyBFWFBfT1BfSEFOOiBudW1iZXIgPSAzNTA7XHJcbiAgc3RhdGljIEVYUF9PUF9aRU46IG51bWJlciA9IDM1MTtcclxuICBzdGF0aWMgRVhQX09QX1pFTlM6IG51bWJlciA9IDM1MjtcclxuICBzdGF0aWMgRVhQX09QX1pJTUVSRUFEOiBudW1iZXIgPSAzNTM7XHJcbiAgc3RhdGljIEVYUF9PUF9aS0FOQTogbnVtYmVyID0gMzU0O1xyXG4gIHN0YXRpYyBFWFBfT1BfR09UT19DVFJMOiBudW1iZXIgPSAzNjg7XHJcbiAgc3RhdGljIEVYUF9PUF9UUkFOU0xBVEU6IG51bWJlciA9IDM3MztcclxuICBzdGF0aWMgRVhQX09QX0FTVFI6IG51bWJlciA9IDM3NDtcclxuXHJcbiAgc3RhdGljIEVYUF9PUF9MT09QQ09VTlRFUjogbnVtYmVyID0gNDAxO1xyXG5cclxuICBzdGF0aWMgRVhQX09QX1ZFQ0dFVDogbnVtYmVyID0gNDE3O1xyXG4gIHN0YXRpYyBFWFBfT1BfVkVDU0VUOiBudW1iZXIgPSA0MTg7XHJcbiAgc3RhdGljIEVYUF9PUF9WRUNTSVpFOiBudW1iZXIgPSA0MTk7XHJcbiAgc3RhdGljIEVYUF9PUF9WRUNDRUxMQVRUUjogbnVtYmVyID0gNDIwO1xyXG4gIHN0YXRpYyBFWFBfT1BfQkxPQlNJWkU6IG51bWJlciA9IDQ0MjtcclxuICBzdGF0aWMgRVhQX09QX1NUUlRPS0VOX0lEWDogbnVtYmVyID0gNDQ4O1xyXG4gIHN0YXRpYyBFWFBfT1BfTVRJTUU6IG51bWJlciA9IDQ0OTtcclxuICBzdGF0aWMgRVhQX09QX01UVkFMOiBudW1iZXIgPSA0NTA7XHJcbiAgc3RhdGljIEVYUF9PUF9NVFNUUjogbnVtYmVyID0gNDUxO1xyXG4gIHN0YXRpYyBFWFBfT1BfSU46IG51bWJlciA9IDQ2MjtcclxuICBzdGF0aWMgRVhQX09QX0lTQ09NUE9ORU5UOiBudW1iZXIgPSA0NjU7XHJcbiAgc3RhdGljIEVYUF9PUF9FWFRfQTogbnVtYmVyID0gNDg1O1xyXG4gIHN0YXRpYyBFWFBfT1BfTlVMTF9VOiBudW1iZXIgPSA0OTE7XHJcbiAgc3RhdGljIEVYUF9PUF9VU0VSX0RFRklORURfRlVOQzogbnVtYmVyID0gNDk2O1xyXG4gIHN0YXRpYyBFWFBfT1BfU1VCRk9STV9FWEVDX01PREU6IG51bWJlciA9IDQ5NztcclxuICBzdGF0aWMgRVhQX09QX1VOSUNPREVBU0M6IG51bWJlciA9IDUwNjtcclxuICBzdGF0aWMgRVhQX09QX0FERERUOiBudW1iZXIgPSA1MDk7XHJcbiAgc3RhdGljIEVYUF9PUF9ESUZEVDogbnVtYmVyID0gNTEwO1xyXG4gIHN0YXRpYyBFWFBfT1BfSVNGSVJTVFJFQ09SRENZQ0xFOiBudW1iZXIgPSA1MTE7XHJcbiAgc3RhdGljIEVYUF9PUF9NQUlOTEVWRUw6IG51bWJlciA9IDUxMjtcclxuICBzdGF0aWMgRVhQX09QX01BSU5ESVNQTEFZOiBudW1iZXIgPSA1MTU7XHJcbiAgc3RhdGljIEVYUF9PUF9EQlZJRVdTSVpFOiBudW1iZXIgPSA1Mzk7XHJcbiAgc3RhdGljIEVYUF9PUF9EQlZJRVdST1dJRFg6IG51bWJlciA9IDU0MDtcclxuICBzdGF0aWMgRVhQX09QX1BST0pFQ1RESVI6IG51bWJlciA9IDU0MTtcclxuICBzdGF0aWMgRVhQX09QX0ZPUk1TVEFURUNMRUFSOiBudW1iZXIgPSA1NDI7XHJcbiAgc3RhdGljIEVYUF9PUF9QVUJMSUNOQU1FOiBudW1iZXIgPSA1NDM7XHJcbiAgc3RhdGljIEVYUF9PUF9UQVNLSUQ6IG51bWJlciA9IDU0NDtcclxuICBzdGF0aWMgRVhQX09QX1NUUl9CVUlMRDogbnVtYmVyID0gNTQ5O1xyXG4gIHN0YXRpYyBFWFBfT1BfRU1QVFlfREFUQV9WSUVXOiBudW1iZXIgPSA1NjE7XHJcbiAgc3RhdGljIEVYUF9PUF9TVEFUVVNCQVJTRVRURVhUOiBudW1iZXIgPSA1Njg7XHJcbiAgc3RhdGljIEVYUF9PUF9DTElFTlRfRElSRExHOiBudW1iZXIgPSA1NzQ7XHJcbiAgc3RhdGljIEVYUF9PUF9DTElFTlRfUkVESVJFQ1Q6IG51bWJlciA9IDU3NztcclxuICBzdGF0aWMgRVhQX09QX0lTX01PQklMRV9DTElFTlQ6IG51bWJlciA9IDU5MztcclxuICBzdGF0aWMgRVhQX09QX0NMSUVOVF9TRVNTSU9OX1NUQVRJU1RJQ1NfR0VUOiBudW1iZXIgPSA1OTQ7XHJcbiAgc3RhdGljIEVYUF9PUF9UQVNLVFlQRTogbnVtYmVyID0gNjEyO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ0xJRU5UX0ZJTEVfVE9fU0VSVkVSOiBudW1iZXIgPSA2MTU7XHJcbiAgc3RhdGljIEVYUF9PUF9SQU5HRV9BREQ6IG51bWJlciA9IDYxNjtcclxuICBzdGF0aWMgRVhQX09QX1JBTkdFX1JFU0VUOiBudW1iZXIgPSA2MTc7XHJcbiAgc3RhdGljIEVYUF9PUF9MT0NBVEVfQUREOiBudW1iZXIgPSA2MTg7XHJcbiAgc3RhdGljIEVYUF9PUF9MT0NBVEVfUkVTRVQ6IG51bWJlciA9IDYxOTtcclxuICBzdGF0aWMgRVhQX09QX1NPUlRfQUREOiBudW1iZXIgPSA2MjA7XHJcbiAgc3RhdGljIEVYUF9PUF9TT1JUX1JFU0VUOiBudW1iZXIgPSA2MjE7XHJcbiAgc3RhdGljIEVYUF9PUF9UU0tfSU5TVEFOQ0U6IG51bWJlciA9IDYyMjtcclxuICBzdGF0aWMgRVhQX09QX0NMSUVOVFNFU1NJT05fU0VUOiBudW1iZXIgPSA2MzI7XHJcbiAgc3RhdGljIEVYUF9PUF9VVENEQVRFOiBudW1iZXIgPSA2MzM7XHJcbiAgc3RhdGljIEVYUF9PUF9VVENUSU1FOiBudW1iZXIgPSA2MzQ7XHJcbiAgc3RhdGljIEVYUF9PUF9VVENNVElNRTogbnVtYmVyID0gNjM1O1xyXG4gIHN0YXRpYyBFWFBfT1BfQ0xJRU5UX0RCX0RJU0NPTk5FQ1Q6IG51bWJlciA9IDYzNjtcclxuICBzdGF0aWMgRVhQX09QX0RBVEFWSUVXX1RPX0RBVEFTT1VSQ0U6IG51bWJlciA9IDYzNztcclxuICBzdGF0aWMgRVhQX09QX0NMSUVOVF9EQl9ERUw6IG51bWJlciA9IDYzODtcclxuICBzdGF0aWMgRVhQX09QX1ZBUkRJU1BMQVlOQU1FOiBudW1iZXIgPSA2NDc7XHJcbiAgc3RhdGljIEVYUF9PUF9DT05UUk9MX0lURU1TX1JFRlJFU0g6IG51bWJlciA9IDY0OTtcclxuICBzdGF0aWMgRVhQX09QX1ZBUkNPTlRST0xJRDogbnVtYmVyID0gNjUwO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ09OVFJPTElURU1TTElTVDogbnVtYmVyID0gNjUxO1xyXG4gIHN0YXRpYyBFWFBfT1BfQ09OVFJPTERJU1BMQVlMSVNUOiBudW1iZXIgPSA2NTI7XHJcbiAgc3RhdGljIEVYUF9PUF9DTElFTlRfU1FMX0VYRUNVVEU6IG51bWJlciA9IDY1MztcclxuICBzdGF0aWMgRVhQX09QX0NPTlRST0xfU0VMRUNUX1BST0dSQU06IG51bWJlciA9IDY1NjtcclxuICBzdGF0aWMgRVhQX09QX1NFVF9USVRMRTogbnVtYmVyID0gNjg3O1xyXG4gIHN0YXRpYyBFWFBfT1BfSVNfUk9XX0VESVRJTkc6IG51bWJlciA9IDY4OTtcclxuICBzdGF0aWMgRVhQX09QX0lTX0xPR0dFRF9JTjogbnVtYmVyID0gNjkwO1xyXG5cclxuICBzdGF0aWMgRVhQX09QX1NFVF9DT09LSUU6IG51bWJlciA9IDcwMTtcclxuICBzdGF0aWMgRVhQX09QX0dFVF9DT09LSUU6IG51bWJlciA9IDcwMjtcclxuICBzdGF0aWMgRVhQX09QX0RFTEVURV9DT09LSUU6IG51bWJlciA9IDcwMztcclxuXHJcbiAgc3RhdGljIEVYUF9PUF9ST1VURUdFVDogbnVtYmVyID0gNzA1O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
@@ -1,118 +0,0 @@
1
- import { XMLConstants } from '@magic-xpa/utils';
2
- import { MgControlBase } from './MgControlBase';
3
- import { List, NString } from '@magic-xpa/mscorelib';
4
- export class ControlTable {
5
- constructor() {
6
- this._controls = null;
7
- this._mgForm = null;
8
- this._controls = new List();
9
- }
10
- fillData(mgForm, parser) {
11
- this._mgForm = mgForm;
12
- while (this.initInnerObjects(parser.getNextTag(), parser)) {
13
- }
14
- }
15
- initInnerObjects(foundTagName, parser) {
16
- if (foundTagName === null)
17
- return false;
18
- if (foundTagName === XMLConstants.MG_TAG_CONTROL) {
19
- let control = this._mgForm.ConstructMgControl();
20
- control.fillData(this._mgForm, this._controls.length, parser);
21
- this._controls.push(control);
22
- }
23
- else if (foundTagName === ("/" + XMLConstants.MG_TAG_CONTROL)) {
24
- parser.setCurrIndex2EndOfTag();
25
- return false;
26
- }
27
- else
28
- return false;
29
- return true;
30
- }
31
- getSize() {
32
- return this._controls.length;
33
- }
34
- getCtrl(idxOrCtrlName) {
35
- if (arguments.length === 1 && (idxOrCtrlName === null || typeof idxOrCtrlName === "undefined" || idxOrCtrlName.constructor === Number)) {
36
- return this.getCtrl_0(idxOrCtrlName);
37
- }
38
- return this.getCtrl_1(idxOrCtrlName);
39
- }
40
- getCtrl_0(idx) {
41
- if (idx < this.getSize())
42
- return this._controls.get_Item(idx);
43
- return null;
44
- }
45
- getCtrl_1(ctrlName) {
46
- if (!NString.IsNullOrEmpty(ctrlName)) {
47
- return this._controls.find(ctrl => {
48
- return (NString.Equals(ctrlName, ctrl.getName(), true) ||
49
- NString.Equals(ctrlName, ctrl.Name, true));
50
- });
51
- }
52
- return null;
53
- }
54
- getCtrlByName(ctrlName, ctrlType) {
55
- if (!NString.IsNullOrEmpty(ctrlName)) {
56
- return this._controls.find(ctrl => {
57
- return ((ctrl.Type === ctrlType) && NString.Equals(ctrlName, ctrl.getName(), true) ||
58
- NString.Equals(ctrlName, ctrl.Name, true));
59
- });
60
- }
61
- return null;
62
- }
63
- GetControlByIsn(isn) {
64
- let ctrlByIsn = null;
65
- ctrlByIsn = this._controls.find(ctrl => {
66
- return (ctrl.ControlIsn === isn);
67
- });
68
- return ctrlByIsn;
69
- }
70
- GetControl(predicate) {
71
- return this._controls.find(predicate);
72
- }
73
- filter(callackFuntion) {
74
- return this._controls.filter(callackFuntion);
75
- }
76
- contains(ctrl) {
77
- let contains = false;
78
- if (ctrl !== null)
79
- contains = this._controls.Contains(ctrl);
80
- return contains;
81
- }
82
- addControl(ctrl) {
83
- this._controls.push(ctrl);
84
- }
85
- setControlAt(ctrl, index) {
86
- if (this._controls.length <= index)
87
- this._controls.SetSize(index + 1);
88
- this._controls.set_Item(index, ctrl);
89
- }
90
- deleteControlAt(index) {
91
- this._controls.set_Item(index, null);
92
- }
93
- Remove(ctrlOrIdx) {
94
- if (arguments.length === 1 && (ctrlOrIdx === null || ctrlOrIdx instanceof MgControlBase)) {
95
- return this.Remove_0(ctrlOrIdx);
96
- }
97
- this.Remove_1(ctrlOrIdx);
98
- }
99
- Remove_0(ctrl) {
100
- this._controls.Remove(ctrl);
101
- return this._controls.Contains(ctrl);
102
- }
103
- Remove_1(idx) {
104
- this._controls.RemoveAt(idx);
105
- }
106
- getControlIdx(inCtrl, includeSubs) {
107
- let counter = 0;
108
- for (let i = 0; i < this._controls.length; i++) {
109
- let ctrl = this._controls.get_Item(i);
110
- if (inCtrl === ctrl)
111
- return counter;
112
- else if (includeSubs || !ctrl.isSubform())
113
- counter++;
114
- }
115
- return -1;
116
- }
117
- }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Db250cm9sVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixZQUFZLEVBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxNQUFNLE9BQU8sWUFBWTtJQUt2QjtRQUpRLGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBQ3RDLFlBQU8sR0FBZSxJQUFJLENBQUM7UUFJakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHRCxRQUFRLENBQUMsTUFBa0IsRUFBRSxNQUFpQjtRQUU1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7U0FDMUQ7SUFDSCxDQUFDO0lBS08sZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxNQUFpQjtRQUM5RCxJQUFJLFlBQVksS0FBSyxJQUFJO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxP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USxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUtELGFBQWEsQ0FBQyxNQUFxQixFQUFFLFdBQW9CO1FBQ3ZELElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxJQUFJLEdBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksTUFBTSxLQUFLLElBQUk7Z0JBQ2pCLE9BQU8sT0FBTyxDQUFDO2lCQUNaLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDdkMsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZ0NvbnRyb2xUeXBlLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlciB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBNZ0Zvcm1CYXNlIH0gZnJvbSAnLi9NZ0Zvcm1CYXNlJztcclxuaW1wb3J0IHsgTWdDb250cm9sQmFzZSB9IGZyb20gJy4vTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7IExpc3QsIE5TdHJpbmcgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFRhYmxlIHtcclxuICBwcml2YXRlIF9jb250cm9sczogTGlzdDxNZ0NvbnRyb2xCYXNlPiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbWdGb3JtOiBNZ0Zvcm1CYXNlID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PkNUT1I8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9jb250cm9scyA9IG5ldyBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsIGlubmVyIGRhdGE8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEobWdGb3JtOiBNZ0Zvcm1CYXNlLCBwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuX21nRm9ybSA9IG1nRm9ybTtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlRvIGFsbG9jYXRlIGFuZCBmaWxsIGlubmVyIG9iamVjdHMgb2YgdGhlIGNsYXNzPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRUYWdOYW1lXCI+bmFtZSBvZiB0YWcsIG9mIG9iamVjdCwgd2hpY2ggbmVlZCBiZSBhbGxvY2F0ZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gYm9vbGVhbiBpZiBpbm5lciB0YWdzIGZpbmlzaGVkPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhmb3VuZFRhZ05hbWU6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0NPTlRST0wpIHtcclxuICAgICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSB0aGlzLl9tZ0Zvcm0uQ29uc3RydWN0TWdDb250cm9sKCk7XHJcbiAgICAgIGNvbnRyb2wuZmlsbERhdGEodGhpcy5fbWdGb3JtLCB0aGlzLl9jb250cm9scy5sZW5ndGgsIHBhcnNlcik7XHJcbiAgICAgIHRoaXMuX2NvbnRyb2xzLnB1c2goY29udHJvbCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IChcIi9cIiArIFhNTENvbnN0YW50cy5NR19UQUdfQ09OVFJPTCkpIHtcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IHRoZSBzaXplIG9mIHRoZSB0YWJsZTwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBzaXplIG9mIHRoZSB0YWJsZTwvcmV0dXJucz5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3RybChpZHg6IG51bWJlcik6IE1nQ29udHJvbEJhc2U7XHJcbiAgZ2V0Q3RybChjdHJsTmFtZTogc3RyaW5nKTogTWdDb250cm9sQmFzZTtcclxuICBnZXRDdHJsKGlkeE9yQ3RybE5hbWU6IGFueSk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKGlkeE9yQ3RybE5hbWUgPT09IG51bGwgfHwgdHlwZW9mIGlkeE9yQ3RybE5hbWUgPT09IFwidW5kZWZpbmVkXCIgfHwgaWR4T3JDdHJsTmFtZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDdHJsXzAoaWR4T3JDdHJsTmFtZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDdHJsXzEoaWR4T3JDdHJsTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGNvbnRyb2wgYnkgaXRzIGluZGV4PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+aXMgdGhlIGluZGV4IG9mIHRoZSBjb250cm9sIGluIHRoZSB0YWJsZTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcmVxdWVzdGVkIGNvbnRyb2wgb2JqZWN0PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0Q3RybF8wKGlkeDogbnVtYmVyKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBpZiAoaWR4IDwgdGhpcy5nZXRTaXplKCkpXHJcbiAgICAgIHJldHVybiB0aGlzLl9jb250cm9scy5nZXRfSXRlbShpZHgpO1xyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nZXQgY29udHJvbCBieSBpdHMgbmFtZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxOYW1lXCI+aXMgdGhlIHJlcXVlc3RlZCBjb250cm9scyBuYW1lPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSByZXF1ZXN0ZWQgY29udHJvbCBvYmplY3Q8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRDdHJsXzEoY3RybE5hbWU6IHN0cmluZyk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoY3RybE5hbWUpKSB7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmluZChjdHJsID0+IHtcclxuICAgICAgICByZXR1cm4gKE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLmdldE5hbWUoKSwgdHJ1ZSkgfHxcclxuICAgICAgICAgIE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLk5hbWUsIHRydWUpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGNvbnRyb2wgKHdoaWNoIGlzIG5vdCB0aGUgZnJhbWUgZm9ybSkgYnkgaXRzIG5hbWU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsTmFtZVwiPmlzIHRoZSByZXF1ZXN0ZWQgY29udHJvbHMgbmFtZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFR5cGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHJlcXVlc3RlZCBjb250cm9sIG9iamVjdDwvcmV0dXJucz5cclxuICBnZXRDdHJsQnlOYW1lKGN0cmxOYW1lOiBzdHJpbmcsIGN0cmxUeXBlOiBNZ0NvbnRyb2xUeXBlKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjdHJsTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmZpbmQoY3RybCA9PiB7XHJcbiAgICAgICAgcmV0dXJuICgoY3RybC5UeXBlID09PSBjdHJsVHlwZSkgJiYgTlN0cmluZy5FcXVhbHMoY3RybE5hbWUsIGN0cmwuZ2V0TmFtZSgpLCB0cnVlKSB8fFxyXG4gICAgICAgICAgTlN0cmluZy5FcXVhbHMoY3RybE5hbWUsIGN0cmwuTmFtZSwgdHJ1ZSkpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCBhIGNvbnRyb2wgYnkgaXRzIElTTlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldENvbnRyb2xCeUlzbihpc246IG51bWJlcik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgbGV0IGN0cmxCeUlzbjogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBjdHJsQnlJc24gPSB0aGlzLl9jb250cm9scy5maW5kKGN0cmwgPT4ge1xyXG4gICAgICByZXR1cm4gKGN0cmwuQ29udHJvbElzbiA9PT0gaXNuKVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGN0cmxCeUlzbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IGEgY29udHJvbCBtYXRoY2hpbmcgdGhlIHByZWRpY2F0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicHJlZGljYXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldENvbnRyb2wocHJlZGljYXRlOiAodmFsdWU6IE1nQ29udHJvbEJhc2UpID0+IGJvb2xlYW4pOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9scy5maW5kKHByZWRpY2F0ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsdGVyKGNhbGxhY2tGdW50aW9uOiAoaXRlbSwgaW5kZXgsIGFycmF5KSA9PiBib29sZWFuKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9scy5maWx0ZXIoY2FsbGFja0Z1bnRpb24pO1xyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZXR1cm5zIHRydWUgaWYgdGhpcyB0YWJsZSBjb250YWlucyB0aGUgZ2l2ZW4gY29udHJvbDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB0byBsb29rIGZvcjwvcGFyYW0+XHJcbiAgY29udGFpbnMoY3RybDogTWdDb250cm9sQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNvbnRhaW5zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoY3RybCAhPT0gbnVsbClcclxuICAgICAgY29udGFpbnMgPSB0aGlzLl9jb250cm9scy5Db250YWlucyhjdHJsKTtcclxuICAgIHJldHVybiBjb250YWlucztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5hZGQgYSBjb250cm9sIHRvIHRoZSB0YWJsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5pcyB0aGUgY29udHJvbCB0byBiZSBhZGRlZDwvcGFyYW0+XHJcbiAgYWRkQ29udHJvbChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250cm9scy5wdXNoKGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnNldCBhIGNvbnRyb2wgdG8gYSBjZWxsIGluIHRoZSB0YWJsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5pcyB0aGUgY29udHJvbCB0byBiZSBhZGRlZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbmRleFwiPndoZXJlIHRvIHNldCB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgc2V0Q29udHJvbEF0KGN0cmw6IE1nQ29udHJvbEJhc2UsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb250cm9scy5sZW5ndGggPD0gaW5kZXgpXHJcbiAgICAgIHRoaXMuX2NvbnRyb2xzLlNldFNpemUoaW5kZXggKyAxKTtcclxuICAgIHRoaXMuX2NvbnRyb2xzLnNldF9JdGVtKGluZGV4LCBjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZXBsYWNlIGEgY29udHJvbCBpbiB0aGUgY29udHJvbCB0YWJsZSB3aXRoIG51bGw8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbmRleFwiPm9mIGNvbnRyb2wgdG8gYmUgZGVsZXRlZDwvcGFyYW0+XHJcbiAgZGVsZXRlQ29udHJvbEF0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLnNldF9JdGVtKGluZGV4LCBudWxsKTtcclxuICB9XHJcblxyXG4gIFJlbW92ZShjdHJsOiBNZ0NvbnRyb2xCYXNlKTogYm9vbGVhbjtcclxuICBSZW1vdmUoaWR4OiBudW1iZXIpO1xyXG4gIFJlbW92ZShjdHJsT3JJZHg6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKGN0cmxPcklkeCA9PT0gbnVsbCB8fCBjdHJsT3JJZHggaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5SZW1vdmVfMChjdHJsT3JJZHgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5SZW1vdmVfMShjdHJsT3JJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJlbW92ZXMgYSBjb250cm9sIGZyb20gdGhlIHRhYmxlIGFuZCByZXR1cm5zIHRydWUgb24gc3VjY2Vzczwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB0byByZW1vdmU8L3BhcmFtPlxyXG4gIHByaXZhdGUgUmVtb3ZlXzAoY3RybDogTWdDb250cm9sQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5fY29udHJvbHMuUmVtb3ZlKGN0cmwpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLkNvbnRhaW5zKGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJlbW92ZXMgYSBjb250cm9sIGZyb20gdGhlIHRhYmxlIGJ5IGluZGV4Ljwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpZHggb2YgdGhlIGNvbnRyb2wgdG8gYmUgcmVtb3ZlZDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBSZW1vdmVfMShpZHg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udHJvbHMuUmVtb3ZlQXQoaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5DdHJsXCI+dGhlIGNvbnRyb2wgd2hvc2UgaW5kZXggd2UgbmVlZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW5jbHVkZVN1YnNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gaWR4IG9mIGEgY29udHJvbCBpbiB0aGUgdGFibGUsIGV4Y2x1ZGluZyBzdWJmb3JtcyBjb250cm9sPC9yZXR1cm5zPlxyXG4gIGdldENvbnRyb2xJZHgoaW5DdHJsOiBNZ0NvbnRyb2xCYXNlLCBpbmNsdWRlU3ViczogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICBsZXQgY291bnRlcjogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jb250cm9scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3RybDogTWdDb250cm9sQmFzZSA9IHRoaXMuX2NvbnRyb2xzLmdldF9JdGVtKGkpO1xyXG4gICAgICBpZiAoaW5DdHJsID09PSBjdHJsKVxyXG4gICAgICAgIHJldHVybiBjb3VudGVyO1xyXG4gICAgICBlbHNlIGlmIChpbmNsdWRlU3VicyB8fCAhY3RybC5pc1N1YmZvcm0oKSlcclxuICAgICAgICBjb3VudGVyKys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19