@magic-xpa/engine 4.801.0-dev481.243 → 4.801.0-dev481.249

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 (293) hide show
  1. package/esm2020/index.mjs +190 -0
  2. package/{esm2015/magic-xpa-engine.js → esm2020/magic-xpa-engine.mjs} +0 -0
  3. package/esm2020/src/AccessHelper.mjs +3 -0
  4. package/esm2020/src/ClientManager.mjs +403 -0
  5. package/esm2020/src/CommandsProcessorBase.mjs +58 -0
  6. package/esm2020/src/CommandsProcessorManager.mjs +26 -0
  7. package/esm2020/src/CommandsTable.mjs +163 -0
  8. package/{esm2015/src/ConstInterface.js → esm2020/src/ConstInterface.mjs} +0 -0
  9. package/{esm2015/src/CurrentClientVersion.js → esm2020/src/CurrentClientVersion.mjs} +2 -2
  10. package/{esm2015/src/FlowMonitorInterface.js → esm2020/src/FlowMonitorInterface.mjs} +0 -0
  11. package/esm2020/src/GUIManager.mjs +63 -0
  12. package/{esm2015/src/GlobalCommandsManager.js → esm2020/src/GlobalCommandsManager.mjs} +0 -0
  13. package/{esm2015/src/GuiEventsProcessor.js → esm2020/src/GuiEventsProcessor.mjs} +0 -0
  14. package/{esm2015/src/ICommandsTable.js → esm2020/src/ICommandsTable.mjs} +1 -0
  15. package/{esm2015/src/ServerConfig.js → esm2020/src/ServerConfig.mjs} +0 -0
  16. package/{esm2015/src/bridge/IGuiEvent.js → esm2020/src/bridge/IGuiEvent.mjs} +0 -0
  17. package/esm2020/src/bridge/MagicBridge.mjs +41 -0
  18. package/{esm2015/src/commands/ClientOriginatedCommandTaskTag.js → esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs} +0 -0
  19. package/{esm2015/src/commands/ClientToServer/AddUserLocateDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs} +0 -0
  20. package/{esm2015/src/commands/ClientToServer/AddUserRangeDataviewCommand.js → esm2020/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs} +0 -0
  21. package/{esm2015/src/commands/ClientToServer/AddUserSortDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs} +0 -0
  22. package/{esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js → esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs} +0 -0
  23. package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommand.mjs} +0 -0
  24. package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs} +0 -0
  25. package/{esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js → esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs} +0 -0
  26. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +278 -0
  27. package/{esm2015/src/commands/ClientToServer/CommandSerializationHelper.js → esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs} +0 -0
  28. package/{esm2015/src/commands/ClientToServer/ComputeEventCommand.js → esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs} +0 -0
  29. package/{esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js → esm2020/src/commands/ClientToServer/ContextTerminationEventCommand.mjs} +0 -0
  30. package/{esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js → esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs} +0 -0
  31. package/{esm2015/src/commands/ClientToServer/ControlItemsRefreshCommand.js → esm2020/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs} +0 -0
  32. package/{esm2015/src/commands/ClientToServer/DataViewOutputCommand.js → esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs} +0 -0
  33. package/{esm2015/src/commands/ClientToServer/DataviewCommand.js → esm2020/src/commands/ClientToServer/DataviewCommand.mjs} +0 -0
  34. package/{esm2015/src/commands/ClientToServer/EvaluateCommand.js → esm2020/src/commands/ClientToServer/EvaluateCommand.mjs} +0 -0
  35. package/{esm2015/src/commands/ClientToServer/EventCommand.js → esm2020/src/commands/ClientToServer/EventCommand.mjs} +0 -0
  36. package/{esm2015/src/commands/ClientToServer/ExecOperCommand.js → esm2020/src/commands/ClientToServer/ExecOperCommand.mjs} +0 -0
  37. package/{esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js → esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs} +0 -0
  38. package/{esm2015/src/commands/ClientToServer/GlobalParamsQueryCommand.js → esm2020/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs} +0 -0
  39. package/{esm2015/src/commands/ClientToServer/ICommandTaskTag.js → esm2020/src/commands/ClientToServer/ICommandTaskTag.mjs} +1 -0
  40. package/{esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js → esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs} +0 -0
  41. package/{esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js → esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs} +0 -0
  42. package/{esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js → esm2020/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs} +0 -0
  43. package/{esm2015/src/commands/ClientToServer/QueryCommand.js → esm2020/src/commands/ClientToServer/QueryCommand.mjs} +0 -0
  44. package/{esm2015/src/commands/ClientToServer/RecomputeCommand.js → esm2020/src/commands/ClientToServer/RecomputeCommand.mjs} +0 -0
  45. package/{esm2015/src/commands/ClientToServer/RefreshEventCommand.js → esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs} +0 -0
  46. package/{esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js → esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs} +0 -0
  47. package/{esm2015/src/commands/ClientToServer/RollbackEventCommand.js → esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs} +0 -0
  48. package/{esm2015/src/commands/ClientToServer/SelectProgramCommand.js → esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs} +0 -0
  49. package/{esm2015/src/commands/ClientToServer/SetTransactionStateDataviewCommand.js → esm2020/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs} +0 -0
  50. package/{esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js → esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs} +0 -0
  51. package/{esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js → esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs} +0 -0
  52. package/{esm2015/src/commands/ClientToServer/TransactionCommand.js → esm2020/src/commands/ClientToServer/TransactionCommand.mjs} +0 -0
  53. package/{esm2015/src/commands/ClientToServer/UnloadCommand.js → esm2020/src/commands/ClientToServer/UnloadCommand.mjs} +0 -0
  54. package/{esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js → esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs} +0 -0
  55. package/esm2020/src/commands/DataViewCommandBase.mjs +10 -0
  56. package/{esm2015/src/commands/IClientCommand.js → esm2020/src/commands/IClientCommand.mjs} +1 -0
  57. package/esm2020/src/commands/IClientTargetedCommand.mjs +9 -0
  58. package/{esm2015/src/commands/IClientToServerCommandInfo.js → esm2020/src/commands/IClientToServerCommandInfo.mjs} +1 -0
  59. package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +65 -0
  60. package/esm2020/src/commands/ServerToClient/AddLocateCommand.mjs +22 -0
  61. package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
  62. package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
  63. package/{esm2015/src/commands/ServerToClient/ClientRefreshCommand.js → esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs} +14 -17
  64. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +27 -0
  65. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
  66. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +222 -0
  67. package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +15 -0
  68. package/esm2020/src/commands/ServerToClient/ResetRangeCommand.mjs +15 -0
  69. package/esm2020/src/commands/ServerToClient/ResetSortCommand.mjs +15 -0
  70. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +37 -0
  71. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +85 -0
  72. package/{esm2015/src/commands/ServerToClient/XMLBasedCommandBuilder.js → esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs} +0 -0
  73. package/{esm2015/src/communications/IConnectionStateManager.js → esm2020/src/communications/IConnectionStateManager.mjs} +1 -0
  74. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +17 -0
  75. package/{esm2015/src/data/DataSourceIdKey.js → esm2020/src/data/DataSourceIdKey.mjs} +0 -0
  76. package/esm2020/src/data/DataView.mjs +1634 -0
  77. package/{esm2015/src/data/DataViewBase.js → esm2020/src/data/DataViewBase.mjs} +0 -0
  78. package/esm2020/src/data/DataviewManager.mjs +28 -0
  79. package/esm2020/src/data/DataviewManagerBase.mjs +15 -0
  80. package/{esm2015/src/data/DvCache.js → esm2020/src/data/DvCache.mjs} +0 -0
  81. package/esm2020/src/data/Field.mjs +645 -0
  82. package/esm2020/src/data/FieldBase.mjs +18 -0
  83. package/{esm2015/src/data/FieldsTable.js → esm2020/src/data/FieldsTable.mjs} +0 -0
  84. package/{esm2015/src/data/IRecordsTable.js → esm2020/src/data/IRecordsTable.mjs} +1 -0
  85. package/{esm2015/src/data/Key.js → esm2020/src/data/Key.mjs} +0 -0
  86. package/{esm2015/src/data/Record.js → esm2020/src/data/Record.mjs} +0 -0
  87. package/{esm2015/src/data/RecordOutOfDataViewException.js → esm2020/src/data/RecordOutOfDataViewException.mjs} +0 -0
  88. package/{esm2015/src/data/RecordsTable.js → esm2020/src/data/RecordsTable.mjs} +0 -0
  89. package/esm2020/src/data/TaskTransactionManager.mjs +103 -0
  90. package/{esm2015/src/data/XMLBasedDcValuesBuilder.js → esm2020/src/data/XMLBasedDcValuesBuilder.mjs} +0 -0
  91. package/{esm2015/src/enums.js → esm2020/src/enums.mjs} +0 -0
  92. package/esm2020/src/env/EnvVariablesTable.mjs +340 -0
  93. package/esm2020/src/env/Environment.mjs +554 -0
  94. package/{esm2015/src/env/ILanguageData.js → esm2020/src/env/ILanguageData.mjs} +1 -0
  95. package/esm2020/src/env/LanguageData.mjs +222 -0
  96. package/esm2020/src/env/MirrorString.mjs +66 -0
  97. package/{esm2015/src/event/ActionManager.js → esm2020/src/event/ActionManager.mjs} +0 -0
  98. package/esm2020/src/event/Event.mjs +1436 -0
  99. package/esm2020/src/event/EventHandler.mjs +773 -0
  100. package/{esm2015/src/event/EventHandlerPosition.js → esm2020/src/event/EventHandlerPosition.mjs} +0 -0
  101. package/esm2020/src/event/EventsManager.mjs +2983 -0
  102. package/{esm2015/src/event/IEventsManager.js → esm2020/src/event/IEventsManager.mjs} +0 -0
  103. package/{esm2015/src/event/RunTimeEvent.js → esm2020/src/event/RunTimeEvent.mjs} +0 -0
  104. package/{esm2015/src/event/RunTimeEventBase.js → esm2020/src/event/RunTimeEventBase.mjs} +0 -0
  105. package/{esm2015/src/event/UserEventsTable.js → esm2020/src/event/UserEventsTable.mjs} +0 -0
  106. package/{esm2015/src/exp/ExpTable.js → esm2020/src/exp/ExpTable.mjs} +0 -0
  107. package/esm2020/src/exp/Expression.mjs +200 -0
  108. package/{esm2015/src/exp/ExpressionDict.js → esm2020/src/exp/ExpressionDict.mjs} +0 -0
  109. package/esm2020/src/exp/ExpressionEvaluator.mjs +4373 -0
  110. package/{esm2015/src/exp/ExpressionLocalJpn.js → esm2020/src/exp/ExpressionLocalJpn.mjs} +0 -0
  111. package/esm2020/src/exp/GlobalParamsTable.mjs +85 -0
  112. package/esm2020/src/exp/YesNoExp.mjs +41 -0
  113. package/{esm2015/src/gui/CreatedFormVector.js → esm2020/src/gui/CreatedFormVector.mjs} +0 -0
  114. package/esm2020/src/gui/FormsTable.mjs +66 -0
  115. package/esm2020/src/gui/MgControl.mjs +357 -0
  116. package/esm2020/src/gui/MgForm.mjs +1195 -0
  117. package/esm2020/src/http/HttpManager.mjs +97 -0
  118. package/esm2020/src/http/client/HttpClientAsync.mjs +67 -0
  119. package/esm2020/src/http/client/HttpClientBase.mjs +148 -0
  120. package/{esm2015/src/http/client/HttpClientEvents.js → esm2020/src/http/client/HttpClientEvents.mjs} +0 -0
  121. package/esm2020/src/http/client/HttpClientSync.mjs +42 -0
  122. package/{esm2015/src/http/client/HttpUtility.js → esm2020/src/http/client/HttpUtility.mjs} +0 -0
  123. package/{esm2015/src/http/client/ICommunicationsFailureHandler.js → esm2020/src/http/client/ICommunicationsFailureHandler.mjs} +1 -0
  124. package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
  125. package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
  126. package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
  127. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +872 -0
  128. package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
  129. package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +24 -0
  130. package/{esm2015/src/remote/RemoteDataViewCommandFactory.js → esm2020/src/remote/RemoteDataViewCommandFactory.mjs} +0 -0
  131. package/esm2020/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +16 -0
  132. package/esm2020/src/remote/RemoteDataviewManager.mjs +17 -0
  133. package/esm2020/src/remote/RemoteInitDataViewCommand.mjs +11 -0
  134. package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
  135. package/esm2020/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +13 -0
  136. package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
  137. package/{esm2015/src/remote/ServerError.js → esm2020/src/remote/ServerError.mjs} +0 -0
  138. package/{esm2015/src/remote/SetTransactionStateRemoteDataViewCommand.js → esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs} +8 -11
  139. package/esm2020/src/rt/Argument.mjs +274 -0
  140. package/esm2020/src/rt/ArgumentsList.mjs +103 -0
  141. package/esm2020/src/rt/Boundary.mjs +158 -0
  142. package/{esm2015/src/rt/CompMainPrgTable.js → esm2020/src/rt/CompMainPrgTable.mjs} +0 -0
  143. package/esm2020/src/rt/DataviewHeaderBase.mjs +96 -0
  144. package/{esm2015/src/rt/DataviewHeaderFactory.js → esm2020/src/rt/DataviewHeaderFactory.mjs} +0 -0
  145. package/{esm2015/src/rt/DataviewHeaders.js → esm2020/src/rt/DataviewHeaders.mjs} +0 -0
  146. package/{esm2015/src/rt/DataviewHeadersSaxHandler.js → esm2020/src/rt/DataviewHeadersSaxHandler.mjs} +0 -0
  147. package/{esm2015/src/rt/ExecutionStack.js → esm2020/src/rt/ExecutionStack.mjs} +0 -0
  148. package/{esm2015/src/rt/ExecutionStackEntry.js → esm2020/src/rt/ExecutionStackEntry.mjs} +0 -0
  149. package/{esm2015/src/rt/HandlersTable.js → esm2020/src/rt/HandlersTable.mjs} +0 -0
  150. package/{esm2015/src/rt/IDataSourceViewDefinition.js → esm2020/src/rt/IDataSourceViewDefinition.mjs} +1 -0
  151. package/{esm2015/src/rt/IDataviewHeader.js → esm2020/src/rt/IDataviewHeader.mjs} +1 -0
  152. package/{esm2015/src/rt/IResultValue.js → esm2020/src/rt/IResultValue.mjs} +1 -0
  153. package/{esm2015/src/rt/LastFocusedManager.js → esm2020/src/rt/LastFocusedManager.mjs} +0 -0
  154. package/esm2020/src/rt/Operation.mjs +745 -0
  155. package/{esm2015/src/rt/OperationTable.js → esm2020/src/rt/OperationTable.mjs} +0 -0
  156. package/esm2020/src/rt/Recompute.mjs +355 -0
  157. package/{esm2015/src/rt/RecomputeTable.js → esm2020/src/rt/RecomputeTable.mjs} +0 -0
  158. package/esm2020/src/rt/RemoteDataviewHeader.mjs +105 -0
  159. package/{esm2015/src/rt/ResultValue.js → esm2020/src/rt/ResultValue.mjs} +0 -0
  160. package/esm2020/src/rt/TableCache.mjs +177 -0
  161. package/esm2020/src/rt/TableCacheManager.mjs +67 -0
  162. package/{esm2015/src/rt/Transaction.js → esm2020/src/rt/Transaction.mjs} +0 -0
  163. package/{esm2015/src/security/UserDetails.js → esm2020/src/security/UserDetails.mjs} +0 -0
  164. package/{esm2015/src/tasks/IMGDataCollection.js → esm2020/src/tasks/IMGDataCollection.mjs} +1 -0
  165. package/esm2020/src/tasks/MGData.mjs +552 -0
  166. package/esm2020/src/tasks/MGDataCollection.mjs +259 -0
  167. package/{esm2015/src/tasks/MenusDeserializer.js → esm2020/src/tasks/MenusDeserializer.mjs} +0 -0
  168. package/{esm2015/src/tasks/RCTimer.js → esm2020/src/tasks/RCTimer.mjs} +0 -0
  169. package/{esm2015/src/tasks/RemoteTaskService.js → esm2020/src/tasks/RemoteTaskService.mjs} +0 -0
  170. package/esm2020/src/tasks/Task.mjs +2501 -0
  171. package/{esm2015/src/tasks/TaskBase.js → esm2020/src/tasks/TaskBase.mjs} +22 -1
  172. package/esm2020/src/tasks/TaskServiceBase.mjs +25 -0
  173. package/esm2020/src/tasks/TasksTable.mjs +80 -0
  174. package/{esm2015/src/tasks/sort/Sort.js → esm2020/src/tasks/sort/Sort.mjs} +0 -0
  175. package/{esm2015/src/tasks/sort/SortCollection.js → esm2020/src/tasks/sort/SortCollection.mjs} +0 -0
  176. package/{esm2015/src/util/ConstUtils.js → esm2020/src/util/ConstUtils.mjs} +0 -0
  177. package/esm2020/src/util/FlowMonitorQueue.mjs +361 -0
  178. package/{esm2015/src/util/HeapSort.js → esm2020/src/util/HeapSort.mjs} +0 -0
  179. package/{esm2015/src/util/IMirrorXML.js → esm2020/src/util/IMirrorXML.mjs} +2 -1
  180. package/{esm2015/src/util/IServerConfig.js → esm2020/src/util/IServerConfig.mjs} +1 -0
  181. package/{esm2015/src/util/MgBlockingQueue.js → esm2020/src/util/MgBlockingQueue.mjs} +1 -0
  182. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +76 -0
  183. package/{esm2015/src/util/MgPriorityQueue.js → esm2020/src/util/MgPriorityQueue.mjs} +0 -0
  184. package/esm2020/src/util/ParamParseResult.mjs +8 -0
  185. package/esm2020/src/util/PrmMap.mjs +151 -0
  186. package/{esm2015/src/util/Process.js → esm2020/src/util/Process.mjs} +0 -0
  187. package/{esm2015/src/util/ReturnResult.js → esm2020/src/util/ReturnResult.mjs} +0 -0
  188. package/{esm2015/src/util/ReturnResultBase.js → esm2020/src/util/ReturnResultBase.mjs} +0 -0
  189. package/{esm2015/src/util/Scrambler.js → esm2020/src/util/Scrambler.mjs} +0 -0
  190. package/{esm2015/src/util/UniqueIDUtils.js → esm2020/src/util/UniqueIDUtils.mjs} +0 -0
  191. package/{esm2015/src/util/cookie.service.js → esm2020/src/util/cookie.service.mjs} +0 -0
  192. package/fesm2015/{magic-xpa-engine.js → magic-xpa-engine.mjs} +102 -5
  193. package/fesm2015/magic-xpa-engine.mjs.map +1 -0
  194. package/fesm2020/magic-xpa-engine.mjs +30705 -0
  195. package/fesm2020/magic-xpa-engine.mjs.map +1 -0
  196. package/index.d.ts +2 -0
  197. package/package.json +27 -13
  198. package/src/AccessHelper.d.ts +1 -1
  199. package/src/CommandsProcessorBase.d.ts +3 -3
  200. package/src/commands/DataViewCommandBase.d.ts +2 -2
  201. package/src/commands/IClientTargetedCommand.d.ts +1 -1
  202. package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +1 -1
  203. package/src/data/FieldBase.d.ts +3 -3
  204. package/src/env/EnvVariablesTable.d.ts +2 -15
  205. package/src/env/MirrorString.d.ts +15 -0
  206. package/src/exp/GlobalParamsTable.d.ts +2 -1
  207. package/src/http/client/HttpClientBase.d.ts +2 -2
  208. package/src/rt/DataviewHeaderBase.d.ts +1 -1
  209. package/src/tasks/TaskBase.d.ts +7 -7
  210. package/src/util/IMirrorXML.d.ts +1 -1
  211. package/src/util/ParamParseResult.d.ts +6 -0
  212. package/src/util/PrmMap.d.ts +0 -6
  213. package/bundles/magic-xpa-engine.umd.js +0 -37983
  214. package/bundles/magic-xpa-engine.umd.js.map +0 -1
  215. package/bundles/magic-xpa-engine.umd.min.js +0 -16
  216. package/bundles/magic-xpa-engine.umd.min.js.map +0 -1
  217. package/esm2015/index.js +0 -188
  218. package/esm2015/src/AccessHelper.js +0 -3
  219. package/esm2015/src/ClientManager.js +0 -412
  220. package/esm2015/src/CommandsProcessorBase.js +0 -54
  221. package/esm2015/src/CommandsProcessorManager.js +0 -31
  222. package/esm2015/src/CommandsTable.js +0 -166
  223. package/esm2015/src/GUIManager.js +0 -72
  224. package/esm2015/src/bridge/MagicBridge.js +0 -44
  225. package/esm2015/src/commands/ClientToServer/CommandFactory.js +0 -283
  226. package/esm2015/src/commands/DataViewCommandBase.js +0 -6
  227. package/esm2015/src/commands/IClientTargetedCommand.js +0 -6
  228. package/esm2015/src/commands/ServerToClient/AbortCommand.js +0 -68
  229. package/esm2015/src/commands/ServerToClient/AddLocateCommand.js +0 -25
  230. package/esm2015/src/commands/ServerToClient/AddRangeCommand.js +0 -65
  231. package/esm2015/src/commands/ServerToClient/AddSortCommand.js +0 -36
  232. package/esm2015/src/commands/ServerToClient/ClientTargetedCommandBase.js +0 -24
  233. package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +0 -48
  234. package/esm2015/src/commands/ServerToClient/OpenURLCommand.js +0 -225
  235. package/esm2015/src/commands/ServerToClient/ResetLocateCommand.js +0 -18
  236. package/esm2015/src/commands/ServerToClient/ResetRangeCommand.js +0 -18
  237. package/esm2015/src/commands/ServerToClient/ResetSortCommand.js +0 -18
  238. package/esm2015/src/commands/ServerToClient/ResultCommand.js +0 -40
  239. package/esm2015/src/commands/ServerToClient/VerifyCommand.js +0 -88
  240. package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +0 -20
  241. package/esm2015/src/data/DataView.js +0 -1692
  242. package/esm2015/src/data/DataviewManager.js +0 -31
  243. package/esm2015/src/data/DataviewManagerBase.js +0 -18
  244. package/esm2015/src/data/Field.js +0 -671
  245. package/esm2015/src/data/FieldBase.js +0 -9
  246. package/esm2015/src/data/TaskTransactionManager.js +0 -110
  247. package/esm2015/src/env/EnvVariablesTable.js +0 -408
  248. package/esm2015/src/env/Environment.js +0 -557
  249. package/esm2015/src/env/LanguageData.js +0 -229
  250. package/esm2015/src/event/Event.js +0 -1441
  251. package/esm2015/src/event/EventHandler.js +0 -786
  252. package/esm2015/src/event/EventsManager.js +0 -3106
  253. package/esm2015/src/exp/Expression.js +0 -209
  254. package/esm2015/src/exp/ExpressionEvaluator.js +0 -4440
  255. package/esm2015/src/exp/GlobalParamsTable.js +0 -84
  256. package/esm2015/src/exp/YesNoExp.js +0 -44
  257. package/esm2015/src/gui/FormsTable.js +0 -73
  258. package/esm2015/src/gui/MgControl.js +0 -424
  259. package/esm2015/src/gui/MgForm.js +0 -1291
  260. package/esm2015/src/http/HttpManager.js +0 -100
  261. package/esm2015/src/http/client/HttpClientAsync.js +0 -72
  262. package/esm2015/src/http/client/HttpClientBase.js +0 -147
  263. package/esm2015/src/http/client/HttpClientSync.js +0 -47
  264. package/esm2015/src/remote/AddUserLocateRemoteDataViewCommand.js +0 -21
  265. package/esm2015/src/remote/AddUserRangeRemoteDataViewCommand.js +0 -21
  266. package/esm2015/src/remote/AddUserSortRemoteDataViewCommand.js +0 -21
  267. package/esm2015/src/remote/RemoteCommandsProcessor.js +0 -901
  268. package/esm2015/src/remote/RemoteControlItemsRefreshCommand.js +0 -28
  269. package/esm2015/src/remote/RemoteDataViewCommandBase.js +0 -27
  270. package/esm2015/src/remote/RemoteDataViewCommandUpdateNonModifiable.js +0 -19
  271. package/esm2015/src/remote/RemoteDataviewManager.js +0 -23
  272. package/esm2015/src/remote/RemoteInitDataViewCommand.js +0 -14
  273. package/esm2015/src/remote/ResetUserLocateRemoteDataviewCommand.js +0 -20
  274. package/esm2015/src/remote/ResetUserRangeRemoteDataviewCommand.js +0 -16
  275. package/esm2015/src/remote/ResetUserSortRemoteDataviewCommand.js +0 -19
  276. package/esm2015/src/rt/Argument.js +0 -281
  277. package/esm2015/src/rt/ArgumentsList.js +0 -108
  278. package/esm2015/src/rt/Boundary.js +0 -161
  279. package/esm2015/src/rt/DataviewHeaderBase.js +0 -96
  280. package/esm2015/src/rt/Operation.js +0 -772
  281. package/esm2015/src/rt/Recompute.js +0 -372
  282. package/esm2015/src/rt/RemoteDataviewHeader.js +0 -114
  283. package/esm2015/src/rt/TableCache.js +0 -182
  284. package/esm2015/src/rt/TableCacheManager.js +0 -70
  285. package/esm2015/src/tasks/MGData.js +0 -561
  286. package/esm2015/src/tasks/MGDataCollection.js +0 -270
  287. package/esm2015/src/tasks/Task.js +0 -2601
  288. package/esm2015/src/tasks/TaskServiceBase.js +0 -30
  289. package/esm2015/src/tasks/TasksTable.js +0 -87
  290. package/esm2015/src/util/FlowMonitorQueue.js +0 -364
  291. package/esm2015/src/util/MgPriorityBlockingQueue.js +0 -79
  292. package/esm2015/src/util/PrmMap.js +0 -157
  293. package/fesm2015/magic-xpa-engine.js.map +0 -1
@@ -1,283 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { NUM_TYPE } from "@magic-xpa/gui";
3
- import { InternalInterface, StorageAttribute, ViewRefreshMode } from "@magic-xpa/utils";
4
- import { EventCommand } from "./EventCommand";
5
- import { RollbackEventCommand } from "./RollbackEventCommand";
6
- import { DataviewCommand, DataViewCommandType } from "./DataviewCommand";
7
- import { AddUserRangeDataviewCommand } from "./AddUserRangeDataviewCommand";
8
- import { AddUserSortDataViewCommand } from "./AddUserSortDataViewCommand";
9
- import { AddUserLocateDataViewCommand } from "./AddUserLocateDataViewCommand";
10
- import { SetTransactionStateDataviewCommand } from "./SetTransactionStateDataviewCommand";
11
- import { ControlItemsRefreshCommand } from "./ControlItemsRefreshCommand";
12
- import { RefreshEventCommand } from "./RefreshEventCommand";
13
- import { DataViewOutputCommand } from "./DataViewOutputCommand";
14
- import { FetchDataControlValuesEventCommand } from "./FetchDataControlValuesEventCommand";
15
- import { WriteMessageToServerLogCommand } from "./WriteMessageToServerLogCommand";
16
- import { SubformRefreshEventCommand } from "./SubformRefreshEventCommand";
17
- import { BrowserEscEventCommand } from "./BrowserEscEventCommand";
18
- import { IndexChangeEventCommand } from "./IndexChangeEventCommand";
19
- import { ColumnSortEventCommand } from "./ColumnSortEventCommand";
20
- import { RefreshScreenEventCommand } from "./RefreshScreenEventCommand";
21
- import { SubformOpenEventCommand } from "./SubformOpenEventCommand";
22
- import { ComputeEventCommand } from "./ComputeEventCommand";
23
- import { NonReversibleExitEventCommand } from "./NonReversibleExitEventCommand";
24
- import { RecomputeCommand } from "./RecomputeCommand";
25
- import { TransactionCommand } from "./TransactionCommand";
26
- import { UnloadCommand } from "./UnloadCommand";
27
- import { ExecOperCommand } from "./ExecOperCommand";
28
- import { EvaluateCommand } from "./EvaluateCommand";
29
- import { GlobalParamsQueryCommand } from "./GlobalParamsQueryCommand";
30
- import { IniputForceWriteCommand } from "./IniputForceWriteCommand";
31
- import { ContextTerminationEventCommand } from "./ContextTerminationEventCommand";
32
- import { ContextTimeoutResetCommand } from "./ContextTimeoutResetCommand";
33
- import { SelectProgramCommand } from './SelectProgramCommand';
34
- export class CommandFactory {
35
- static CreateEventCommand(taskTag, magicEvent) {
36
- let eventCommand = new EventCommand(magicEvent);
37
- eventCommand.TaskTag = taskTag;
38
- return eventCommand;
39
- }
40
- static CreateRollbackEventCommand(taskTag, rollbackType) {
41
- let cmd = new RollbackEventCommand();
42
- cmd.TaskTag = taskTag;
43
- cmd.Rollback = rollbackType;
44
- return cmd;
45
- }
46
- static CreateDataViewCommand(taskId, commandType) {
47
- let dataviewCommand = new DataviewCommand();
48
- dataviewCommand.CommandType = commandType;
49
- dataviewCommand.TaskTag = taskId;
50
- return dataviewCommand;
51
- }
52
- static CreateAddUserRangeDataviewCommand(taskId, userRange) {
53
- let addUserRangeDataviewCommand = new AddUserRangeDataviewCommand();
54
- addUserRangeDataviewCommand.TaskTag = taskId;
55
- addUserRangeDataviewCommand.Range = userRange;
56
- return addUserRangeDataviewCommand;
57
- }
58
- static CreateAddUserSortDataviewCommand(taskId, sort) {
59
- let addUserSortDataViewCommand = new AddUserSortDataViewCommand();
60
- addUserSortDataViewCommand.TaskTag = taskId;
61
- addUserSortDataViewCommand.Sort = sort;
62
- return addUserSortDataViewCommand;
63
- }
64
- static CreateAddUserLocateDataviewCommand(taskId, userRange) {
65
- let addUserLocateDataViewCommand = new AddUserLocateDataViewCommand();
66
- addUserLocateDataViewCommand.TaskTag = taskId;
67
- addUserLocateDataViewCommand.Range = userRange;
68
- return addUserLocateDataViewCommand;
69
- }
70
- static CreateSetTransactionStateDataviewCommand(taskId, transactionIsOpened) {
71
- let setTransactionStateDataviewCommand = new SetTransactionStateDataviewCommand();
72
- setTransactionStateDataviewCommand.TaskTag = taskId;
73
- setTransactionStateDataviewCommand.TransactionIsOpen = transactionIsOpened;
74
- return setTransactionStateDataviewCommand;
75
- }
76
- static CreateControlItemsRefreshCommand(taskId, controlParam) {
77
- let controlItemsRefreshCommand = new ControlItemsRefreshCommand();
78
- controlItemsRefreshCommand.TaskTag = taskId;
79
- controlItemsRefreshCommand.CommandType = DataViewCommandType.ControlItemsRefresh;
80
- controlItemsRefreshCommand.Control = controlParam;
81
- return controlItemsRefreshCommand;
82
- }
83
- static CreateInternalRefreshCommand(taskId, magicEvent, currentRecId, currentRow) {
84
- let refreshEventCommand = new RefreshEventCommand(magicEvent);
85
- refreshEventCommand.TaskTag = taskId;
86
- refreshEventCommand.RefreshMode = ViewRefreshMode.CurrentLocation;
87
- refreshEventCommand.ClientRecId = currentRecId;
88
- refreshEventCommand.IsInternalRefresh = true;
89
- refreshEventCommand.CurrentRecordRow = currentRow;
90
- return refreshEventCommand;
91
- }
92
- static CreateRealRefreshCommand(taskId, magicEvent, currentRow, argList, currentRecId) {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- let refreshEventCommand = new RefreshEventCommand(magicEvent);
95
- refreshEventCommand.TaskTag = taskId;
96
- refreshEventCommand.RefreshMode = ViewRefreshMode.CurrentLocation;
97
- refreshEventCommand.KeepUserSort = false;
98
- refreshEventCommand.ClientRecId = currentRecId;
99
- refreshEventCommand.CurrentRecordRow = currentRow;
100
- let cmd = refreshEventCommand;
101
- if (magicEvent !== InternalInterface.MG_ACT_RT_REFRESH_RECORD && argList !== null && argList.getSize() !== 0) {
102
- try {
103
- let refreshMode = new NUM_TYPE(yield argList.getArgValue(0, StorageAttribute.NUMERIC, 0));
104
- cmd.RefreshMode = refreshMode.NUM_2_LONG() + 1;
105
- }
106
- catch (e) {
107
- cmd.RefreshMode = ViewRefreshMode.CurrentLocation;
108
- }
109
- if (argList.getSize() > 1) {
110
- try {
111
- cmd.KeepUserSort = ((yield argList.getArgValue(1, StorageAttribute.BOOLEAN, 0)) === "1");
112
- }
113
- catch (e) {
114
- cmd.KeepUserSort = false;
115
- }
116
- }
117
- }
118
- return cmd;
119
- });
120
- }
121
- static CreateDataViewToDataSourceCommand(taskId, generation, taskVarNames, destinationDSNumber, destinationDSName, destinationColumns) {
122
- let dataViewOutputCommand = new DataViewOutputCommand(DataViewCommandType.DataViewToDataSource);
123
- dataViewOutputCommand.TaskTag = taskId;
124
- dataViewOutputCommand.Generation = generation;
125
- dataViewOutputCommand.TaskVarNames = taskVarNames;
126
- dataViewOutputCommand.DestinationDataSourceNumber = destinationDSNumber;
127
- dataViewOutputCommand.DestinationDataSourceName = destinationDSName;
128
- dataViewOutputCommand.DestinationColumns = destinationColumns;
129
- return dataViewOutputCommand;
130
- }
131
- static CreatecFetchDataControlValuesCommand(taskTag, controlName) {
132
- let fetchDataControlValuesEventCommand = new FetchDataControlValuesEventCommand();
133
- fetchDataControlValuesEventCommand.TaskTag = taskTag;
134
- fetchDataControlValuesEventCommand.ControlName = controlName;
135
- return fetchDataControlValuesEventCommand;
136
- }
137
- static CreateWriteMessageToServerLogCommand(taskTag, errorMessage) {
138
- let writeMessageToServerLogCommand = new WriteMessageToServerLogCommand();
139
- writeMessageToServerLogCommand.TaskTag = taskTag;
140
- writeMessageToServerLogCommand.ErrorMessage = errorMessage;
141
- return writeMessageToServerLogCommand;
142
- }
143
- static CreateSubformRefreshCommand(taskTag, subformTaskTag, explicitSubformRefresh) {
144
- let subformRefreshEventCommand = new SubformRefreshEventCommand();
145
- subformRefreshEventCommand.TaskTag = taskTag;
146
- subformRefreshEventCommand.SubformTaskTag = subformTaskTag;
147
- subformRefreshEventCommand.ExplicitSubformRefresh = explicitSubformRefresh;
148
- subformRefreshEventCommand.RefreshMode = ViewRefreshMode.UseTaskLocate;
149
- return subformRefreshEventCommand;
150
- }
151
- static CreateSubformOpenCommand(taskTag, subformDitIdx) {
152
- let subformOpenEventCommand = new SubformOpenEventCommand();
153
- subformOpenEventCommand.TaskTag = taskTag;
154
- subformOpenEventCommand.DitIdx = subformDitIdx;
155
- return subformOpenEventCommand;
156
- }
157
- static CreateScreenRefreshCommand(taskTag, topRecIdx, clientRecId) {
158
- let refreshScreenEventCommand = new RefreshScreenEventCommand();
159
- refreshScreenEventCommand.TaskTag = taskTag;
160
- refreshScreenEventCommand.TopRecIdx = topRecIdx;
161
- refreshScreenEventCommand.RefreshMode = ViewRefreshMode.CurrentLocation;
162
- refreshScreenEventCommand.ClientRecId = clientRecId;
163
- return refreshScreenEventCommand;
164
- }
165
- static CreateColumnSortCommand(taskTag, direction, ditIdx, fieldId, recId) {
166
- let columnSortEventCommand = new ColumnSortEventCommand();
167
- columnSortEventCommand.TaskTag = taskTag;
168
- columnSortEventCommand.DitIdx = ditIdx;
169
- columnSortEventCommand.FldId = fieldId + 1;
170
- columnSortEventCommand.ClientRecId = recId;
171
- columnSortEventCommand.Direction = direction;
172
- return columnSortEventCommand;
173
- }
174
- static CreateIndexChangeCommand(taskTag, recId, argList) {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- let indexChangeEventCommand = new IndexChangeEventCommand();
177
- indexChangeEventCommand.TaskTag = taskTag;
178
- indexChangeEventCommand.ClientRecId = recId;
179
- let cmd = indexChangeEventCommand;
180
- if (argList !== null && argList.getSize() !== 0) {
181
- try {
182
- let keyIndex = new NUM_TYPE(yield argList.getArgValue(0, StorageAttribute.NUMERIC, 0));
183
- cmd.KeyIndex = keyIndex.NUM_2_LONG();
184
- }
185
- catch (e) {
186
- cmd.KeyIndex = 0;
187
- }
188
- }
189
- return cmd;
190
- });
191
- }
192
- static CreateBrowserEscEventCommand(taskTag, closeSubformOnly) {
193
- let browserEscEventCommand = new BrowserEscEventCommand();
194
- browserEscEventCommand.TaskTag = taskTag;
195
- browserEscEventCommand.CloseSubformOnly = closeSubformOnly;
196
- return browserEscEventCommand;
197
- }
198
- static CreateComputeEventCommand(taskTag, subforms, clientRecId) {
199
- let computeEventCommand = new ComputeEventCommand();
200
- computeEventCommand.TaskTag = taskTag;
201
- computeEventCommand.Subforms = subforms;
202
- computeEventCommand.ClientRecId = clientRecId;
203
- return computeEventCommand;
204
- }
205
- static CreateContextTerminationEventCommand(taskTag) {
206
- let contextTerminationEventCommand = new ContextTerminationEventCommand();
207
- contextTerminationEventCommand.TaskTag = taskTag;
208
- return contextTerminationEventCommand;
209
- }
210
- static CreateContextTimeoutResetEventCommand() {
211
- let contextTimeoutResetCommand = new ContextTimeoutResetCommand();
212
- return contextTimeoutResetCommand;
213
- }
214
- static CreateNonReversibleExitCommand(taskTag, closeSubformOnly) {
215
- let nonReversibleExitEventCommand = new NonReversibleExitEventCommand();
216
- nonReversibleExitEventCommand.TaskTag = taskTag;
217
- nonReversibleExitEventCommand.CloseSubformOnly = closeSubformOnly;
218
- return nonReversibleExitEventCommand;
219
- }
220
- static CreateRecomputeCommand(taskTag, fieldId, ignoreSubformRecompute) {
221
- let recomputeCommand = new RecomputeCommand();
222
- recomputeCommand.TaskTag = taskTag;
223
- recomputeCommand.FldId = fieldId;
224
- recomputeCommand.IgnoreSubformRecompute = ignoreSubformRecompute;
225
- return recomputeCommand;
226
- }
227
- static CreateTransactionCommand(oper, taskTag, cReversibleExit, level) {
228
- let transactionCommand = new TransactionCommand();
229
- transactionCommand.TaskTag = taskTag;
230
- transactionCommand.Oper = oper;
231
- transactionCommand.ReversibleExit = cReversibleExit;
232
- transactionCommand.Level = level;
233
- return transactionCommand;
234
- }
235
- static CreateUnloadCommand() {
236
- return new UnloadCommand();
237
- }
238
- static CreateExecOperCommand(taskTag, handlerId, operIdx, ditIdx, value) {
239
- let execOperCommand = new ExecOperCommand();
240
- execOperCommand.OperIdx = operIdx;
241
- execOperCommand.TaskTag = taskTag;
242
- execOperCommand.HandlerId = handlerId;
243
- execOperCommand.DitIdx = ditIdx;
244
- let cmd = execOperCommand;
245
- if (value !== null && value.length === 0)
246
- cmd.Val = " ";
247
- else
248
- cmd.Val = value;
249
- return cmd;
250
- }
251
- static CreateSelectProgramCommand(taskTag, handlerId, operIdx, ditIdx, value) {
252
- let execOperCommand = new SelectProgramCommand();
253
- execOperCommand.OperIdx = operIdx;
254
- execOperCommand.TaskTag = taskTag;
255
- execOperCommand.HandlerId = handlerId;
256
- execOperCommand.DitIdx = ditIdx;
257
- let cmd = execOperCommand;
258
- if (value !== null && value.length === 0)
259
- cmd.Val = " ";
260
- else
261
- cmd.Val = value;
262
- return cmd;
263
- }
264
- static CreateEvaluateCommand(taskTag, expType, expIdx, expValLen, mprgCreator) {
265
- let evaluateCommand = new EvaluateCommand();
266
- evaluateCommand.TaskTag = taskTag;
267
- evaluateCommand.ExpIdx = expIdx;
268
- evaluateCommand.ExpType = expType;
269
- evaluateCommand.MprgCreator = mprgCreator;
270
- if (expValLen > 0)
271
- evaluateCommand.LengthExpVal = expValLen;
272
- return evaluateCommand;
273
- }
274
- static CreateQueryGlobalParamsCommand() {
275
- return new GlobalParamsQueryCommand();
276
- }
277
- static CreateIniputForceWriteCommand(param) {
278
- let iniputForceWriteCommand = new IniputForceWriteCommand();
279
- iniputForceWriteCommand.Text = param;
280
- return iniputForceWriteCommand;
281
- }
282
- }
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLG9CQUFvQixFQUFvQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBQyxlQUFlLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUd2RSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsc0JB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QztZQUNmLGVBQWUsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzNDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFPRCxNQUFNLENBQUMsOEJBQThCO1FBQ25DLE9BQU8sSUFBSSx3QkFBd0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFPRCxNQUFNLENBQUMsNkJBQTZCLENBQUMsS0FBYTtRQUNoRCxJQUFJLHVCQUF1QixHQUE0QixJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDckYsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNyQyxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZSwgTlVNX1RZUEV9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7SW50ZXJuYWxJbnRlcmZhY2UsIFN0b3JhZ2VBdHRyaWJ1dGUsIFZpZXdSZWZyZXNoTW9kZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtFdmVudENvbW1hbmR9IGZyb20gXCIuL0V2ZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge1JvbGxiYWNrRXZlbnRDb21tYW5kLCBSb2xsYmFja0V2ZW50Q29tbWFuZF9Sb2xsYmFja1R5cGV9IGZyb20gXCIuL1JvbGxiYWNrRXZlbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7RGF0YXZpZXdDb21tYW5kLCBEYXRhVmlld0NvbW1hbmRUeXBlfSBmcm9tIFwiLi9EYXRhdmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge1VzZXJSYW5nZX0gZnJvbSBcIi4uLy4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcbmltcG9ydCB7QWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kfSBmcm9tIFwiLi9BZGRVc2VyUmFuZ2VEYXRhdmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtTb3J0fSBmcm9tIFwiLi4vLi4vdGFza3Mvc29ydC9Tb3J0XCI7XHJcbmltcG9ydCB7QWRkVXNlclNvcnREYXRhVmlld0NvbW1hbmR9IGZyb20gXCIuL0FkZFVzZXJTb3J0RGF0YVZpZXdDb21tYW5kXCI7XHJcbmltcG9ydCB7QWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZH0gZnJvbSBcIi4vQWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZFwiO1xyXG5pbXBvcnQge1NldFRyYW5zYWN0aW9uU3RhdGVEYXRhdmlld0NvbW1hbmR9IGZyb20gXCIuL1NldFRyYW5zYWN0aW9uU3RhdGVEYXRhdmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtDb250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZH0gZnJvbSBcIi4vQ29udHJvbEl0ZW1zUmVmcmVzaENvbW1hbmRcIjtcclxuaW1wb3J0IHtSZWZyZXNoRXZlbnRDb21tYW5kfSBmcm9tIFwiLi9SZWZyZXNoRXZlbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7QXJndW1lbnRzTGlzdH0gZnJvbSBcIi4uLy4uL3J0L0FyZ3VtZW50c0xpc3RcIjtcclxuaW1wb3J0IHtEYXRhVmlld091dHB1dENvbW1hbmR9IGZyb20gXCIuL0RhdGFWaWV3T3V0cHV0Q29tbWFuZFwiO1xyXG5pbXBvcnQge0ZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmR9IGZyb20gXCIuL0ZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtXcml0ZU1lc3NhZ2VUb1NlcnZlckxvZ0NvbW1hbmR9IGZyb20gXCIuL1dyaXRlTWVzc2FnZVRvU2VydmVyTG9nQ29tbWFuZFwiO1xyXG5pbXBvcnQge1N1YmZvcm1SZWZyZXNoRXZlbnRDb21tYW5kfSBmcm9tIFwiLi9TdWJmb3JtUmVmcmVzaEV2ZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0Jyb3dzZXJFc2NFdmVudENvbW1hbmR9IGZyb20gXCIuL0Jyb3dzZXJFc2NFdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtJbmRleENoYW5nZUV2ZW50Q29tbWFuZH0gZnJvbSBcIi4vSW5kZXhDaGFuZ2VFdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtDb2x1bW5Tb3J0RXZlbnRDb21tYW5kfSBmcm9tIFwiLi9Db2x1bW5Tb3J0RXZlbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7UmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZH0gZnJvbSBcIi4vUmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge1N1YmZvcm1PcGVuRXZlbnRDb21tYW5kfSBmcm9tIFwiLi9TdWJmb3JtT3BlbkV2ZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0NvbXB1dGVFdmVudENvbW1hbmR9IGZyb20gXCIuL0NvbXB1dGVFdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtOb25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZH0gZnJvbSBcIi4vTm9uUmV2ZXJzaWJsZUV4aXRFdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtSZWNvbXB1dGVDb21tYW5kfSBmcm9tIFwiLi9SZWNvbXB1dGVDb21tYW5kXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db21tYW5kfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkNvbW1hbmRcIjtcclxuaW1wb3J0IHtVbmxvYWRDb21tYW5kfSBmcm9tIFwiLi9VbmxvYWRDb21tYW5kXCI7XHJcbmltcG9ydCB7RXhlY09wZXJDb21tYW5kfSBmcm9tIFwiLi9FeGVjT3BlckNvbW1hbmRcIjtcclxuaW1wb3J0IHtFdmFsdWF0ZUNvbW1hbmR9IGZyb20gXCIuL0V2YWx1YXRlQ29tbWFuZFwiO1xyXG5pbXBvcnQge0dsb2JhbFBhcmFtc1F1ZXJ5Q29tbWFuZH0gZnJvbSBcIi4vR2xvYmFsUGFyYW1zUXVlcnlDb21tYW5kXCI7XHJcbmltcG9ydCB7SW5pcHV0Rm9yY2VXcml0ZUNvbW1hbmR9IGZyb20gXCIuL0luaXB1dEZvcmNlV3JpdGVDb21tYW5kXCI7XHJcbmltcG9ydCB7Q29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kfSBmcm9tIFwiLi9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtDb250ZXh0VGltZW91dFJlc2V0Q29tbWFuZH0gZnJvbSBcIi4vQ29udGV4dFRpbWVvdXRSZXNldENvbW1hbmRcIjtcclxuaW1wb3J0IHsgU2VsZWN0UHJvZ3JhbUNvbW1hbmQgfSBmcm9tICcuL1NlbGVjdFByb2dyYW1Db21tYW5kJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIGZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIGNvbW1hbmRzXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBDb21tYW5kRmFjdG9yeSB7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgY3JlYXRlcyBhbiBFdmVudCBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tUYWdcIj50aGUgdGFzayBpZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtYWdpY0V2ZW50XCI+dGhlIGNvZGUgb2YgdGhlIGludGVybmFsIGV2ZW50PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+bmV3bHkgY3JlYXRlZCBjb21tYW5kLjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlRXZlbnRDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgbWFnaWNFdmVudDogbnVtYmVyKTogRXZlbnRDb21tYW5kIHtcclxuICAgIGxldCBldmVudENvbW1hbmQ6IEV2ZW50Q29tbWFuZCA9IG5ldyBFdmVudENvbW1hbmQobWFnaWNFdmVudCk7XHJcbiAgICBldmVudENvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICByZXR1cm4gZXZlbnRDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGEgZmFjdG9yeSBtZXRob2QgdGhhdCBjcmVhdGVzIGFuIEV2ZW50IGNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1RhZ1wiPnRoZSB0YXNrIGlkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNIYW5kbGVySWRcIj50aGUgaWQgb2YgdGhlIGhhbmRsZXIgd2hlcmUgZXhlY3V0aW9uIHNob3VsZCBzdGFydDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjT2JqXCI+dGhlIERJVCBpbmRleCBvZiB0aGUgY29udHJvbCB0aGF0IGhhZCB0aGUgZm9jdXMgd2hlbiB0aGUgZXZlbnQgb2NjdXJyZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWFnaWNFdmVudFwiPnRoZSBjb2RlIG9mIHRoZSBpbnRlcm5hbCBldmVudDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPm5ld2x5IGNyZWF0ZWQgY29tbWFuZC48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZVJvbGxiYWNrRXZlbnRDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgcm9sbGJhY2tUeXBlOiBSb2xsYmFja0V2ZW50Q29tbWFuZF9Sb2xsYmFja1R5cGUpOiBSb2xsYmFja0V2ZW50Q29tbWFuZCB7XHJcbiAgICBsZXQgY21kOiBSb2xsYmFja0V2ZW50Q29tbWFuZCA9IG5ldyBSb2xsYmFja0V2ZW50Q29tbWFuZCgpO1xyXG4gICAgY21kLlRhc2tUYWcgPSB0YXNrVGFnO1xyXG4gICAgY21kLlJvbGxiYWNrID0gcm9sbGJhY2tUeXBlO1xyXG4gICAgcmV0dXJuIGNtZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY3JlYXRlIGEgZ2VuZXJhbCBkYXRhdmlldyBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrSWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbW1hbmRUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVEYXRhVmlld0NvbW1hbmQodGFza0lkOiBzdHJpbmcsIGNvbW1hbmRUeXBlOiBEYXRhVmlld0NvbW1hbmRUeXBlKTogRGF0YXZpZXdDb21tYW5kIHtcclxuICAgIGxldCBkYXRhdmlld0NvbW1hbmQ6IERhdGF2aWV3Q29tbWFuZCA9IG5ldyBEYXRhdmlld0NvbW1hbmQoKTtcclxuICAgIGRhdGF2aWV3Q29tbWFuZC5Db21tYW5kVHlwZSA9IGNvbW1hbmRUeXBlO1xyXG4gICAgZGF0YXZpZXdDb21tYW5kLlRhc2tUYWcgPSB0YXNrSWQ7XHJcbiAgICByZXR1cm4gZGF0YXZpZXdDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1c2VyUmFuZ2VcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZUFkZFVzZXJSYW5nZURhdGF2aWV3Q29tbWFuZCh0YXNrSWQ6IHN0cmluZywgdXNlclJhbmdlOiBVc2VyUmFuZ2UpOiBBZGRVc2VyUmFuZ2VEYXRhdmlld0NvbW1hbmQge1xyXG4gICAgbGV0IGFkZFVzZXJSYW5nZURhdGF2aWV3Q29tbWFuZDogQWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kID0gbmV3IEFkZFVzZXJSYW5nZURhdGF2aWV3Q29tbWFuZCgpO1xyXG4gICAgYWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kLlRhc2tUYWcgPSB0YXNrSWQ7XHJcbiAgICBhZGRVc2VyUmFuZ2VEYXRhdmlld0NvbW1hbmQuUmFuZ2UgPSB1c2VyUmFuZ2U7XHJcbiAgICByZXR1cm4gYWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3JlYXRlQWRkVXNlclNvcnREYXRhdmlld0NvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXNlclJhbmdlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVBZGRVc2VyU29ydERhdGF2aWV3Q29tbWFuZCh0YXNrSWQ6IHN0cmluZywgc29ydDogU29ydCk6IEFkZFVzZXJTb3J0RGF0YVZpZXdDb21tYW5kIHtcclxuICAgIGxldCBhZGRVc2VyU29ydERhdGFWaWV3Q29tbWFuZDogQWRkVXNlclNvcnREYXRhVmlld0NvbW1hbmQgPSBuZXcgQWRkVXNlclNvcnREYXRhVmlld0NvbW1hbmQoKTtcclxuICAgIGFkZFVzZXJTb3J0RGF0YVZpZXdDb21tYW5kLlRhc2tUYWcgPSB0YXNrSWQ7XHJcbiAgICBhZGRVc2VyU29ydERhdGFWaWV3Q29tbWFuZC5Tb3J0ID0gc29ydDtcclxuICAgIHJldHVybiBhZGRVc2VyU29ydERhdGFWaWV3Q29tbWFuZDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENyZWF0ZUFkZFVzZXJMb2NhdGVEYXRhdmlld0NvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXNlclJhbmdlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVBZGRVc2VyTG9jYXRlRGF0YXZpZXdDb21tYW5kKHRhc2tJZDogc3RyaW5nLCB1c2VyUmFuZ2U6IFVzZXJSYW5nZSk6IEFkZFVzZXJMb2NhdGVEYXRhVmlld0NvbW1hbmQge1xyXG4gICAgbGV0IGFkZFVzZXJMb2NhdGVEYXRhVmlld0NvbW1hbmQ6IEFkZFVzZXJMb2NhdGVEYXRhVmlld0NvbW1hbmQgPSBuZXcgQWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZCgpO1xyXG4gICAgYWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZC5UYXNrVGFnID0gdGFza0lkO1xyXG4gICAgYWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZC5SYW5nZSA9IHVzZXJSYW5nZTtcclxuICAgIHJldHVybiBhZGRVc2VyTG9jYXRlRGF0YVZpZXdDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjcmVhdGUgYSBzZXQgdHJhbnNhY3Rpb24gc3RhdGUgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0cmFuc2FjdGlvbklzT3BlbmVkXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVTZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kKHRhc2tJZDogc3RyaW5nLCB0cmFuc2FjdGlvbklzT3BlbmVkOiBib29sZWFuKTogU2V0VHJhbnNhY3Rpb25TdGF0ZURhdGF2aWV3Q29tbWFuZCB7XHJcbiAgICBsZXQgc2V0VHJhbnNhY3Rpb25TdGF0ZURhdGF2aWV3Q29tbWFuZDogU2V0VHJhbnNhY3Rpb25TdGF0ZURhdGF2aWV3Q29tbWFuZCA9IG5ldyBTZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kKCk7XHJcbiAgICBzZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kLlRhc2tUYWcgPSB0YXNrSWQ7XHJcbiAgICBzZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kLlRyYW5zYWN0aW9uSXNPcGVuID0gdHJhbnNhY3Rpb25Jc09wZW5lZDtcclxuICAgIHJldHVybiBzZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGUgQ29udHJvbEl0ZW1zUmVmcmVzaENvbW1hbmQgdG8gcmVmZXJzaCB0aGUgZGF0YSBjb250cm9sLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sTmFtZVBhcmFtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJnZW5lcmF0aW9uUGFyYW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZUNvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kKHRhc2tJZDogc3RyaW5nLCBjb250cm9sUGFyYW06IE1nQ29udHJvbEJhc2UpOiBDb250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZCB7XHJcbiAgICBsZXQgY29udHJvbEl0ZW1zUmVmcmVzaENvbW1hbmQ6IENvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kID0gbmV3IENvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kKCk7XHJcbiAgICBjb250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZC5UYXNrVGFnID0gdGFza0lkO1xyXG4gICAgY29udHJvbEl0ZW1zUmVmcmVzaENvbW1hbmQuQ29tbWFuZFR5cGUgPSBEYXRhVmlld0NvbW1hbmRUeXBlLkNvbnRyb2xJdGVtc1JlZnJlc2g7XHJcbiAgICBjb250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZC5Db250cm9sID0gY29udHJvbFBhcmFtO1xyXG4gICAgcmV0dXJuIGNvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjcmVhdGVzIGEgcmVmcmVzaCBjb21tYW5kIHdoaWNoIHdhcyBpbml0aWF0ZWQgaW50ZXJuYWxseSwgaS5lLiBub3QgYnkgYSB1c2VyIGZ1bmN0aW9uIGNhbGxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWFnaWNFdmVudFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VycmVudFJlY0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVJbnRlcm5hbFJlZnJlc2hDb21tYW5kKHRhc2tJZDogc3RyaW5nLCBtYWdpY0V2ZW50OiBudW1iZXIsIGN1cnJlbnRSZWNJZDogbnVtYmVyLCBjdXJyZW50Um93OiBudW1iZXIpOiBSZWZyZXNoRXZlbnRDb21tYW5kIHtcclxuICAgIGxldCByZWZyZXNoRXZlbnRDb21tYW5kOiBSZWZyZXNoRXZlbnRDb21tYW5kID0gbmV3IFJlZnJlc2hFdmVudENvbW1hbmQobWFnaWNFdmVudCk7XHJcbiAgICByZWZyZXNoRXZlbnRDb21tYW5kLlRhc2tUYWcgPSB0YXNrSWQ7XHJcbiAgICByZWZyZXNoRXZlbnRDb21tYW5kLlJlZnJlc2hNb2RlID0gVmlld1JlZnJlc2hNb2RlLkN1cnJlbnRMb2NhdGlvbjtcclxuICAgIHJlZnJlc2hFdmVudENvbW1hbmQuQ2xpZW50UmVjSWQgPSBjdXJyZW50UmVjSWQ7XHJcbiAgICByZWZyZXNoRXZlbnRDb21tYW5kLklzSW50ZXJuYWxSZWZyZXNoID0gdHJ1ZTtcclxuICAgIHJlZnJlc2hFdmVudENvbW1hbmQuQ3VycmVudFJlY29yZFJvdyA9IGN1cnJlbnRSb3c7XHJcbiAgICByZXR1cm4gcmVmcmVzaEV2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjcmVhdGVzIG9ubHkgYSByZWFsIHJlZnJlc2ggZXZlbnQgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPm5ld2x5IGNyZWF0ZWQgY29tbWFuZC48L3JldHVybnM+XHJcbiAgc3RhdGljIGFzeW5jIENyZWF0ZVJlYWxSZWZyZXNoQ29tbWFuZCh0YXNrSWQ6IHN0cmluZywgbWFnaWNFdmVudDogbnVtYmVyLCBjdXJyZW50Um93OiBudW1iZXIsIGFyZ0xpc3Q6IEFyZ3VtZW50c0xpc3QsIGN1cnJlbnRSZWNJZDogbnVtYmVyKTogUHJvbWlzZTxSZWZyZXNoRXZlbnRDb21tYW5kPiB7XHJcbiAgICBsZXQgcmVmcmVzaEV2ZW50Q29tbWFuZDogUmVmcmVzaEV2ZW50Q29tbWFuZCA9IG5ldyBSZWZyZXNoRXZlbnRDb21tYW5kKG1hZ2ljRXZlbnQpO1xyXG4gICAgcmVmcmVzaEV2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza0lkO1xyXG4gICAgcmVmcmVzaEV2ZW50Q29tbWFuZC5SZWZyZXNoTW9kZSA9IFZpZXdSZWZyZXNoTW9kZS5DdXJyZW50TG9jYXRpb247XHJcbiAgICByZWZyZXNoRXZlbnRDb21tYW5kLktlZXBVc2VyU29ydCA9IGZhbHNlO1xyXG4gICAgcmVmcmVzaEV2ZW50Q29tbWFuZC5DbGllbnRSZWNJZCA9IGN1cnJlbnRSZWNJZDtcclxuICAgIHJlZnJlc2hFdmVudENvbW1hbmQuQ3VycmVudFJlY29yZFJvdyA9IGN1cnJlbnRSb3c7XHJcbiAgICBsZXQgY21kOiBSZWZyZXNoRXZlbnRDb21tYW5kID0gcmVmcmVzaEV2ZW50Q29tbWFuZDtcclxuXHJcbiAgICBpZiAobWFnaWNFdmVudCAhPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX1JFRlJFU0hfUkVDT1JEICYmIGFyZ0xpc3QgIT09IG51bGwgJiYgYXJnTGlzdC5nZXRTaXplKCkgIT09IDApIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcmVmcmVzaE1vZGU6IE5VTV9UWVBFID0gbmV3IE5VTV9UWVBFKGF3YWl0IGFyZ0xpc3QuZ2V0QXJnVmFsdWUoMCwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSk7XHJcbiAgICAgICAgY21kLlJlZnJlc2hNb2RlID0gcmVmcmVzaE1vZGUuTlVNXzJfTE9ORygpICsgMTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNtZC5SZWZyZXNoTW9kZSA9IFZpZXdSZWZyZXNoTW9kZS5DdXJyZW50TG9jYXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhcmdMaXN0LmdldFNpemUoKSA+IDEpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY21kLktlZXBVc2VyU29ydCA9IChhd2FpdCBhcmdMaXN0LmdldEFyZ1ZhbHVlKDEsIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkgPT09IFwiMVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNtZC5LZWVwVXNlclNvcnQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjbWQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ3JlYXRlRGF0YVZpZXdUb0RhdGFTb3VyY2VDb21tYW5kKHRhc2tJZDogc3RyaW5nLCBnZW5lcmF0aW9uOiBudW1iZXIsIHRhc2tWYXJOYW1lczogc3RyaW5nLCBkZXN0aW5hdGlvbkRTTnVtYmVyOiBudW1iZXIsIGRlc3RpbmF0aW9uRFNOYW1lOiBzdHJpbmcsIGRlc3RpbmF0aW9uQ29sdW1uczogc3RyaW5nKTogRGF0YVZpZXdPdXRwdXRDb21tYW5kIHtcclxuICAgIGxldCBkYXRhVmlld091dHB1dENvbW1hbmQ6IERhdGFWaWV3T3V0cHV0Q29tbWFuZCA9IG5ldyBEYXRhVmlld091dHB1dENvbW1hbmQoRGF0YVZpZXdDb21tYW5kVHlwZS5EYXRhVmlld1RvRGF0YVNvdXJjZSk7XHJcbiAgICBkYXRhVmlld091dHB1dENvbW1hbmQuVGFza1RhZyA9IHRhc2tJZDtcclxuICAgIGRhdGFWaWV3T3V0cHV0Q29tbWFuZC5HZW5lcmF0aW9uID0gZ2VuZXJhdGlvbjtcclxuICAgIGRhdGFWaWV3T3V0cHV0Q29tbWFuZC5UYXNrVmFyTmFtZXMgPSB0YXNrVmFyTmFtZXM7XHJcbiAgICBkYXRhVmlld091dHB1dENvbW1hbmQuRGVzdGluYXRpb25EYXRhU291cmNlTnVtYmVyID0gZGVzdGluYXRpb25EU051bWJlcjtcclxuICAgIGRhdGFWaWV3T3V0cHV0Q29tbWFuZC5EZXN0aW5hdGlvbkRhdGFTb3VyY2VOYW1lID0gZGVzdGluYXRpb25EU05hbWU7XHJcbiAgICBkYXRhVmlld091dHB1dENvbW1hbmQuRGVzdGluYXRpb25Db2x1bW5zID0gZGVzdGluYXRpb25Db2x1bW5zO1xyXG4gICAgcmV0dXJuIGRhdGFWaWV3T3V0cHV0Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3JlYXRlIEZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudCBjb21tYW5kIHdoaWNoIHdpbGwgZmV0Y2ggdGhlIGRhdGEgY29udHJvbCB2YWx1ZXMgZnJvbSBzZXJ2ZXIuIFRoaXMgaXMgdXNlZCB3aGlsZSBleGVjdXRpbmcgQ29udHJvbEl0ZW1zUmVmcmVzaCgpIGZ1bmN0aW9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1RhZ1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbE5hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImdlbmVyYXRpb25QYXJhbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlY0ZldGNoRGF0YUNvbnRyb2xWYWx1ZXNDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IEZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmQge1xyXG4gICAgbGV0IGZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmQ6IEZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmQgPSBuZXcgRmV0Y2hEYXRhQ29udHJvbFZhbHVlc0V2ZW50Q29tbWFuZCgpO1xyXG4gICAgZmV0Y2hEYXRhQ29udHJvbFZhbHVlc0V2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIGZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmQuQ29udHJvbE5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHJldHVybiBmZXRjaERhdGFDb250cm9sVmFsdWVzRXZlbnRDb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGUgV3JpdGVNZXNzYWdlc1RvU2VydmVyTG9nIGNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tUYWdcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVycm9yTWVzc2FnZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlV3JpdGVNZXNzYWdlVG9TZXJ2ZXJMb2dDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBXcml0ZU1lc3NhZ2VUb1NlcnZlckxvZ0NvbW1hbmQge1xyXG4gICAgbGV0IHdyaXRlTWVzc2FnZVRvU2VydmVyTG9nQ29tbWFuZDogV3JpdGVNZXNzYWdlVG9TZXJ2ZXJMb2dDb21tYW5kID0gbmV3IFdyaXRlTWVzc2FnZVRvU2VydmVyTG9nQ29tbWFuZCgpO1xyXG4gICAgd3JpdGVNZXNzYWdlVG9TZXJ2ZXJMb2dDb21tYW5kLlRhc2tUYWcgPSB0YXNrVGFnO1xyXG4gICAgd3JpdGVNZXNzYWdlVG9TZXJ2ZXJMb2dDb21tYW5kLkVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcclxuICAgIHJldHVybiB3cml0ZU1lc3NhZ2VUb1NlcnZlckxvZ0NvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ3JlYXRlU3ViZm9ybVJlZnJlc2hDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgc3ViZm9ybVRhc2tUYWc6IHN0cmluZywgZXhwbGljaXRTdWJmb3JtUmVmcmVzaDogYm9vbGVhbik6IFN1YmZvcm1SZWZyZXNoRXZlbnRDb21tYW5kIHtcclxuICAgIGxldCBzdWJmb3JtUmVmcmVzaEV2ZW50Q29tbWFuZDogU3ViZm9ybVJlZnJlc2hFdmVudENvbW1hbmQgPSBuZXcgU3ViZm9ybVJlZnJlc2hFdmVudENvbW1hbmQoKTtcclxuICAgIHN1YmZvcm1SZWZyZXNoRXZlbnRDb21tYW5kLlRhc2tUYWcgPSB0YXNrVGFnO1xyXG4gICAgc3ViZm9ybVJlZnJlc2hFdmVudENvbW1hbmQuU3ViZm9ybVRhc2tUYWcgPSBzdWJmb3JtVGFza1RhZztcclxuICAgIHN1YmZvcm1SZWZyZXNoRXZlbnRDb21tYW5kLkV4cGxpY2l0U3ViZm9ybVJlZnJlc2ggPSBleHBsaWNpdFN1YmZvcm1SZWZyZXNoO1xyXG4gICAgc3ViZm9ybVJlZnJlc2hFdmVudENvbW1hbmQuUmVmcmVzaE1vZGUgPSBWaWV3UmVmcmVzaE1vZGUuVXNlVGFza0xvY2F0ZTtcclxuICAgIHJldHVybiBzdWJmb3JtUmVmcmVzaEV2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjcmVhdGVzIGEgc3ViZm9ybSBvcGVuIGV2ZW50IGNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVTdWJmb3JtT3BlbkNvbW1hbmQodGFza1RhZzogc3RyaW5nLCBzdWJmb3JtRGl0SWR4OiBudW1iZXIpOiBTdWJmb3JtT3BlbkV2ZW50Q29tbWFuZCB7XHJcbiAgICBsZXQgc3ViZm9ybU9wZW5FdmVudENvbW1hbmQ6IFN1YmZvcm1PcGVuRXZlbnRDb21tYW5kID0gbmV3IFN1YmZvcm1PcGVuRXZlbnRDb21tYW5kKCk7XHJcbiAgICBzdWJmb3JtT3BlbkV2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIHN1YmZvcm1PcGVuRXZlbnRDb21tYW5kLkRpdElkeCA9IHN1YmZvcm1EaXRJZHg7XHJcbiAgICByZXR1cm4gc3ViZm9ybU9wZW5FdmVudENvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY3JlYXRlcyBzY3JlZW4gcmVmcmVzaCBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+bmV3bHkgY3JlYXRlZCBjb21tYW5kLjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlU2NyZWVuUmVmcmVzaENvbW1hbmQodGFza1RhZzogc3RyaW5nLCB0b3BSZWNJZHg6IG51bWJlciwgY2xpZW50UmVjSWQ6IG51bWJlcik6IFJlZnJlc2hTY3JlZW5FdmVudENvbW1hbmQge1xyXG4gICAgbGV0IHJlZnJlc2hTY3JlZW5FdmVudENvbW1hbmQ6IFJlZnJlc2hTY3JlZW5FdmVudENvbW1hbmQgPSBuZXcgUmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZCgpO1xyXG4gICAgcmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIHJlZnJlc2hTY3JlZW5FdmVudENvbW1hbmQuVG9wUmVjSWR4ID0gdG9wUmVjSWR4O1xyXG4gICAgcmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZC5SZWZyZXNoTW9kZSA9IFZpZXdSZWZyZXNoTW9kZS5DdXJyZW50TG9jYXRpb247XHJcbiAgICByZWZyZXNoU2NyZWVuRXZlbnRDb21tYW5kLkNsaWVudFJlY0lkID0gY2xpZW50UmVjSWQ7XHJcbiAgICByZXR1cm4gcmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjcmVhdGVzIGEgY29sdW1uIHNvcnQgZXZlbnQgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPm5ld2x5IGNyZWF0ZWQgY29tbWFuZC48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZUNvbHVtblNvcnRDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIsIGRpdElkeDogbnVtYmVyLCBmaWVsZElkOiBudW1iZXIsIHJlY0lkOiBudW1iZXIpOiBDb2x1bW5Tb3J0RXZlbnRDb21tYW5kIHtcclxuICAgIGxldCBjb2x1bW5Tb3J0RXZlbnRDb21tYW5kOiBDb2x1bW5Tb3J0RXZlbnRDb21tYW5kID0gbmV3IENvbHVtblNvcnRFdmVudENvbW1hbmQoKTtcclxuICAgIGNvbHVtblNvcnRFdmVudENvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBjb2x1bW5Tb3J0RXZlbnRDb21tYW5kLkRpdElkeCA9IGRpdElkeDtcclxuICAgIGNvbHVtblNvcnRFdmVudENvbW1hbmQuRmxkSWQgPSBmaWVsZElkICsgMTtcclxuICAgIGNvbHVtblNvcnRFdmVudENvbW1hbmQuQ2xpZW50UmVjSWQgPSByZWNJZDtcclxuICAgIGNvbHVtblNvcnRFdmVudENvbW1hbmQuRGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gICAgcmV0dXJuIGNvbHVtblNvcnRFdmVudENvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gICBjcmVhdGVzIGFuIEluZGV4IENoYW5nZSBldmVudCBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+bmV3bHkgY3JlYXRlZCBjb21tYW5kLjwvcmV0dXJucz5cclxuICBzdGF0aWMgYXN5bmMgQ3JlYXRlSW5kZXhDaGFuZ2VDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgcmVjSWQ6IG51bWJlciwgYXJnTGlzdDogQXJndW1lbnRzTGlzdCk6IFByb21pc2U8SW5kZXhDaGFuZ2VFdmVudENvbW1hbmQ+IHtcclxuICAgIGxldCBpbmRleENoYW5nZUV2ZW50Q29tbWFuZDogSW5kZXhDaGFuZ2VFdmVudENvbW1hbmQgPSBuZXcgSW5kZXhDaGFuZ2VFdmVudENvbW1hbmQoKTtcclxuICAgIGluZGV4Q2hhbmdlRXZlbnRDb21tYW5kLlRhc2tUYWcgPSB0YXNrVGFnO1xyXG4gICAgaW5kZXhDaGFuZ2VFdmVudENvbW1hbmQuQ2xpZW50UmVjSWQgPSByZWNJZDtcclxuICAgIGxldCBjbWQ6IEluZGV4Q2hhbmdlRXZlbnRDb21tYW5kID0gaW5kZXhDaGFuZ2VFdmVudENvbW1hbmQ7XHJcblxyXG4gICAgLy8gMSBwYXJhbWV0ZXIgOiBUaGUgbmV3IEtleSBJbmRleFxyXG4gICAgaWYgKGFyZ0xpc3QgIT09IG51bGwgJiYgYXJnTGlzdC5nZXRTaXplKCkgIT09IDApIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQga2V5SW5kZXg6IE5VTV9UWVBFID0gbmV3IE5VTV9UWVBFKGF3YWl0IGFyZ0xpc3QuZ2V0QXJnVmFsdWUoMCwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSk7XHJcbiAgICAgICAgY21kLktleUluZGV4ID0ga2V5SW5kZXguTlVNXzJfTE9ORygpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgY21kLktleUluZGV4ID0gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNtZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gRXZlbnQgY29tbWFuZFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLy8gPHBhcmFtIG5hbWU9XCJ0YXNrVGFnXCI+PC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lPVwib2JqXCI+PC9wYXJhbT5cclxuLy8vIDxwYXJhbSBuYW1lPVwiZXhpdEJ5TWVudVwiPjwvcGFyYW0+XHJcbi8vLyA8cGFyYW0gbmFtZT1cImNsb3NlU3ViZm9ybU9ubHlcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDcmVhdGVCcm93c2VyRXNjRXZlbnRDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgY2xvc2VTdWJmb3JtT25seTogYm9vbGVhbik6IEJyb3dzZXJFc2NFdmVudENvbW1hbmQge1xyXG4gICAgbGV0IGJyb3dzZXJFc2NFdmVudENvbW1hbmQ6IEJyb3dzZXJFc2NFdmVudENvbW1hbmQgPSBuZXcgQnJvd3NlckVzY0V2ZW50Q29tbWFuZCgpO1xyXG4gICAgYnJvd3NlckVzY0V2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIGJyb3dzZXJFc2NFdmVudENvbW1hbmQuQ2xvc2VTdWJmb3JtT25seSA9IGNsb3NlU3ViZm9ybU9ubHk7XHJcbiAgICByZXR1cm4gYnJvd3NlckVzY0V2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgY3JlYXRlcyBhbiBFdmVudCBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrVGFnXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvYmpcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNsaWVudFJlY0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVDb21wdXRlRXZlbnRDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgc3ViZm9ybXM6IGJvb2xlYW4sIGNsaWVudFJlY0lkOiBudW1iZXIpOiBDb21wdXRlRXZlbnRDb21tYW5kIHtcclxuICAgIGxldCBjb21wdXRlRXZlbnRDb21tYW5kOiBDb21wdXRlRXZlbnRDb21tYW5kID0gbmV3IENvbXB1dGVFdmVudENvbW1hbmQoKTtcclxuICAgIGNvbXB1dGVFdmVudENvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBjb21wdXRlRXZlbnRDb21tYW5kLlN1YmZvcm1zID0gc3ViZm9ybXM7XHJcbiAgICBjb21wdXRlRXZlbnRDb21tYW5kLkNsaWVudFJlY0lkID0gY2xpZW50UmVjSWQ7XHJcbiAgICByZXR1cm4gY29tcHV0ZUV2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIGEgZmFjdG9yeSBtZXRob2QgdGhhdCBjcmVhdGVzIHRoZSBjb250ZXh0IHRlcm1pbmF0aW9uIHJlcXVlc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tUYWdcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDcmVhdGVDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQodGFza1RhZzogc3RyaW5nKTogQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kIHtcclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IG5ldyBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQoKTtcclxuICAgIGNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIHJldHVybiBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIGR1bW15IHJlcXVlc3QgdG8gemVyby1pbiB0aGUgY29udGV4dCBpbmFjdGl2aXR5IHRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBDcmVhdGVDb250ZXh0VGltZW91dFJlc2V0RXZlbnRDb21tYW5kKCkgOiBDb250ZXh0VGltZW91dFJlc2V0Q29tbWFuZCB7XHJcbiAgICBsZXQgY29udGV4dFRpbWVvdXRSZXNldENvbW1hbmQ6IENvbnRleHRUaW1lb3V0UmVzZXRDb21tYW5kID0gbmV3IENvbnRleHRUaW1lb3V0UmVzZXRDb21tYW5kKCk7XHJcbiAgICByZXR1cm4gY29udGV4dFRpbWVvdXRSZXNldENvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBub25yZXZlcnNpYmxlIGV4aXQgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrVGFnXCI+dGhlIHRhc2sgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVOb25SZXZlcnNpYmxlRXhpdENvbW1hbmQodGFza1RhZzogc3RyaW5nLCBjbG9zZVN1YmZvcm1Pbmx5OiBib29sZWFuKTogTm9uUmV2ZXJzaWJsZUV4aXRFdmVudENvbW1hbmQge1xyXG4gICAgbGV0IG5vblJldmVyc2libGVFeGl0RXZlbnRDb21tYW5kOiBOb25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZCA9IG5ldyBOb25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZCgpO1xyXG4gICAgbm9uUmV2ZXJzaWJsZUV4aXRFdmVudENvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBub25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZC5DbG9zZVN1YmZvcm1Pbmx5ID0gY2xvc2VTdWJmb3JtT25seTtcclxuICAgIHJldHVybiBub25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIFJlY29tcHV0ZSBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tUYWdcIj50aGUgaWQgb2YgdGhlIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmllbGRJZFwiPnRoZSBpZCBvZiB0aGUgZmllbGQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVSZWNvbXB1dGVDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgZmllbGRJZDogbnVtYmVyLCBpZ25vcmVTdWJmb3JtUmVjb21wdXRlOiBib29sZWFuKTogUmVjb21wdXRlQ29tbWFuZCB7XHJcbiAgICBsZXQgcmVjb21wdXRlQ29tbWFuZDogUmVjb21wdXRlQ29tbWFuZCA9IG5ldyBSZWNvbXB1dGVDb21tYW5kKCk7XHJcbiAgICByZWNvbXB1dGVDb21tYW5kLlRhc2tUYWcgPSB0YXNrVGFnO1xyXG4gICAgcmVjb21wdXRlQ29tbWFuZC5GbGRJZCA9IGZpZWxkSWQ7XHJcbiAgICByZWNvbXB1dGVDb21tYW5kLklnbm9yZVN1YmZvcm1SZWNvbXB1dGUgPSBpZ25vcmVTdWJmb3JtUmVjb21wdXRlO1xyXG4gICAgcmV0dXJuIHJlY29tcHV0ZUNvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBUcmFuc2FjdGlvbiBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9wZXJcIj50aGUgdHlwZSBvZiBvcGVyYXRpb246IEJlZ2luLCBDb21taXQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIG9mIHRoZSB0cmFuc2FjdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjUmV2ZXJzaWJsZUV4aXRcIj50cnVlIGlmIHRoZSB0YXNrIGV4aXQgaXMgcmV2ZXJzaWJsZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsZXZlbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPm5ld2x5IGNyZWF0ZWQgY29tbWFuZC48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZVRyYW5zYWN0aW9uQ29tbWFuZChvcGVyOiBzdHJpbmcsIHRhc2tUYWc6IHN0cmluZywgY1JldmVyc2libGVFeGl0OiBib29sZWFuLCBsZXZlbDogc3RyaW5nKTogVHJhbnNhY3Rpb25Db21tYW5kIHtcclxuICAgIGxldCB0cmFuc2FjdGlvbkNvbW1hbmQ6IFRyYW5zYWN0aW9uQ29tbWFuZCA9IG5ldyBUcmFuc2FjdGlvbkNvbW1hbmQoKTtcclxuICAgIHRyYW5zYWN0aW9uQ29tbWFuZC5UYXNrVGFnID0gdGFza1RhZztcclxuICAgIHRyYW5zYWN0aW9uQ29tbWFuZC5PcGVyID0gb3BlcjtcclxuICAgIHRyYW5zYWN0aW9uQ29tbWFuZC5SZXZlcnNpYmxlRXhpdCA9IGNSZXZlcnNpYmxlRXhpdDtcclxuICAgIHRyYW5zYWN0aW9uQ29tbWFuZC5MZXZlbCA9IGxldmVsO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uQ29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGZhY3RvcnkgbWV0aG9kIHRoYXQgY3JlYXRlcyBhbiBVbmxvYWQgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPm5ld2x5IGNyZWF0ZWQgY29tbWFuZC48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZVVubG9hZENvbW1hbmQoKTogVW5sb2FkQ29tbWFuZCB7XHJcbiAgICByZXR1cm4gbmV3IFVubG9hZENvbW1hbmQoKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gRXhlY09wZXIgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrVGFnXCI+dGhlIGlkIG9mIHRoZSB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImhhbmRsZXJJZFwiPnRoZSBpZCBvZiB0aGUgaGFuZGxlciB3aGVyZSBleGVjdXRpb24gc2hvdWxkIHN0YXJ0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9wZXJJZHhcIj50aGUgb3BlcmF0aW9uIGluZGV4IGlzIHRoZSBzZXJ2ZXIgaW5kZXggaW5kaWNhdGVkIGJ5IHRoZSBvcGVyYXRpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGl0SWR4XCI+dGhlIGNvbnRyb2wgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsdWVcIj50aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVFeGVjT3BlckNvbW1hbmQodGFza1RhZzogc3RyaW5nLCBoYW5kbGVySWQ6IHN0cmluZywgb3BlcklkeDogbnVtYmVyLCBkaXRJZHg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IEV4ZWNPcGVyQ29tbWFuZCB7XHJcbiAgICBsZXQgZXhlY09wZXJDb21tYW5kOiBFeGVjT3BlckNvbW1hbmQgPSBuZXcgRXhlY09wZXJDb21tYW5kKCk7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuT3BlcklkeCA9IG9wZXJJZHg7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuSGFuZGxlcklkID0gaGFuZGxlcklkO1xyXG4gICAgZXhlY09wZXJDb21tYW5kLkRpdElkeCA9IGRpdElkeDtcclxuXHJcbiAgICBsZXQgY21kOiBFeGVjT3BlckNvbW1hbmQgPSBleGVjT3BlckNvbW1hbmQ7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUubGVuZ3RoID09PSAwKVxyXG4gICAgICBjbWQuVmFsID0gXCIgXCI7XHJcbiAgICBlbHNlXHJcbiAgICAgIGNtZC5WYWwgPSB2YWx1ZTtcclxuICAgIHJldHVybiBjbWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gU2VsZWN0IFByb2dyYW0gY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrVGFnXCI+dGhlIGlkIG9mIHRoZSB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImhhbmRsZXJJZFwiPnRoZSBpZCBvZiB0aGUgaGFuZGxlciB3aGVyZSBleGVjdXRpb24gc2hvdWxkIHN0YXJ0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9wZXJJZHhcIj50aGUgb3BlcmF0aW9uIGluZGV4IGlzIHRoZSBzZXJ2ZXIgaW5kZXggaW5kaWNhdGVkIGJ5IHRoZSBvcGVyYXRpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGl0SWR4XCI+dGhlIGNvbnRyb2wgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsdWVcIj50aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVTZWxlY3RQcm9ncmFtQ29tbWFuZCh0YXNrVGFnOiBzdHJpbmcsIGhhbmRsZXJJZDogc3RyaW5nLCBvcGVySWR4OiBudW1iZXIsIGRpdElkeDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogRXhlY09wZXJDb21tYW5kIHtcclxuICAgIGxldCBleGVjT3BlckNvbW1hbmQ6IFNlbGVjdFByb2dyYW1Db21tYW5kID0gbmV3IFNlbGVjdFByb2dyYW1Db21tYW5kKCk7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuT3BlcklkeCA9IG9wZXJJZHg7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBleGVjT3BlckNvbW1hbmQuSGFuZGxlcklkID0gaGFuZGxlcklkO1xyXG4gICAgZXhlY09wZXJDb21tYW5kLkRpdElkeCA9IGRpdElkeDtcclxuXHJcbiAgICBsZXQgY21kOiBFeGVjT3BlckNvbW1hbmQgPSBleGVjT3BlckNvbW1hbmQ7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUubGVuZ3RoID09PSAwKVxyXG4gICAgICBjbWQuVmFsID0gXCIgXCI7XHJcbiAgICBlbHNlXHJcbiAgICAgIGNtZC5WYWwgPSB2YWx1ZTtcclxuICAgIHJldHVybiBjbWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gRXZhbHVhdGUgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrVGFnXCI+dGhlIGlkIG9mIHRoZSB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFR5cGVcIj5UaGUgZXhwZWN0ZWQgdHlwZSBpcyB0aGUgZGF0YSB0eXBlIChhdHRyaWJ1dGUpIG9mIHRoZSByZXN1bHQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwSWR4XCI+ZXhwcmVzc2lvbiBpZCBhdHRyaWJ1dGVzIGFyZSBhIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFZhbExlblwiPiByZXByZXNlbnRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhbHBoYSByZXN1bHQgb3IgdGhlIG1heGltdW0gZGlnaXRzIHRvIHRoZSByaWdodCBvZiB0aGUgZGVjaW1hbCBwb2ludCwgZm9yIG51bWVyaWMgcmVzdWx0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1wcmdDcmVhdG9yXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+bmV3bHkgY3JlYXRlZCBjb21tYW5kLjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlRXZhbHVhdGVDb21tYW5kKHRhc2tUYWc6IHN0cmluZywgZXhwVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgZXhwSWR4OiBudW1iZXIsIGV4cFZhbExlbjogbnVtYmVyLCBtcHJnQ3JlYXRvcjogVGFzayk6IEV2YWx1YXRlQ29tbWFuZCB7XHJcbiAgICBsZXQgZXZhbHVhdGVDb21tYW5kOiBFdmFsdWF0ZUNvbW1hbmQgPSBuZXcgRXZhbHVhdGVDb21tYW5kKCk7XHJcbiAgICBldmFsdWF0ZUNvbW1hbmQuVGFza1RhZyA9IHRhc2tUYWc7XHJcbiAgICBldmFsdWF0ZUNvbW1hbmQuRXhwSWR4ID0gZXhwSWR4O1xyXG4gICAgZXZhbHVhdGVDb21tYW5kLkV4cFR5cGUgPSBleHBUeXBlO1xyXG4gICAgZXZhbHVhdGVDb21tYW5kLk1wcmdDcmVhdG9yID0gbXByZ0NyZWF0b3I7XHJcblxyXG4gICAgaWYgKGV4cFZhbExlbiA+IDApXHJcbiAgICAgIGV2YWx1YXRlQ29tbWFuZC5MZW5ndGhFeHBWYWwgPSBleHBWYWxMZW47XHJcbiAgICByZXR1cm4gZXZhbHVhdGVDb21tYW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZVF1ZXJ5R2xvYmFsUGFyYW1zQ29tbWFuZCgpOiBHbG9iYWxQYXJhbXNRdWVyeUNvbW1hbmQge1xyXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxQYXJhbXNRdWVyeUNvbW1hbmQoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmb3JjZSBpbmkgZmlsZSB1cGRhdGUgYnkgSU5JUHV0KClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyYW1cIj5lbnYgcGFyYW0gY2hhbmdlZCBieSBJTklQdXQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5uZXdseSBjcmVhdGVkIGNvbW1hbmQuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDcmVhdGVJbmlwdXRGb3JjZVdyaXRlQ29tbWFuZChwYXJhbTogc3RyaW5nKTogSW5pcHV0Rm9yY2VXcml0ZUNvbW1hbmQge1xyXG4gICAgbGV0IGluaXB1dEZvcmNlV3JpdGVDb21tYW5kOiBJbmlwdXRGb3JjZVdyaXRlQ29tbWFuZCA9IG5ldyBJbmlwdXRGb3JjZVdyaXRlQ29tbWFuZCgpO1xyXG4gICAgaW5pcHV0Rm9yY2VXcml0ZUNvbW1hbmQuVGV4dCA9IHBhcmFtO1xyXG4gICAgcmV0dXJuIGluaXB1dEZvcmNlV3JpdGVDb21tYW5kO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +0,0 @@
1
- export class DataViewCommandBase {
2
- constructor() {
3
- this.DataviewManager = null;
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVZpZXdDb21tYW5kQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvY29tbWFuZHMvRGF0YVZpZXdDb21tYW5kQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQWdCLG1CQUFtQjtJQUF6QztRQUtFLG9CQUFlLEdBQXdCLElBQUksQ0FBQztJQU85QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGF2aWV3TWFuYWdlckJhc2V9IGZyb20gXCIuLi9kYXRhL0RhdGF2aWV3TWFuYWdlckJhc2VcIjtcclxuaW1wb3J0IHtSZXR1cm5SZXN1bHRCYXNlfSBmcm9tIFwiLi4vdXRpbC9SZXR1cm5SZXN1bHRCYXNlXCI7XHJcblxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZGF0YSB2aWV3IGNvbW1hbmQgYmFzZVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YVZpZXdDb21tYW5kQmFzZSB7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZGF0YXZpZXcgbWFuYWdlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgRGF0YXZpZXdNYW5hZ2VyOiBEYXRhdmlld01hbmFnZXJCYXNlID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBleGVjdXRlIHRoZSBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhYnN0cmFjdCBhc3luYyBFeGVjdXRlKCk6IFByb21pc2U8UmV0dXJuUmVzdWx0QmFzZT47XHJcblxyXG59XHJcbiJdfQ==
@@ -1,6 +0,0 @@
1
- export class IClientTargetedCommand {
2
- get ShouldExecute() {
3
- return this.shouldExecute;
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNsaWVudFRhcmdldGVkQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvY29tbWFuZHMvSUNsaWVudFRhcmdldGVkQ29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQWdCLHNCQUFzQjtJQXFCMUMsSUFBSSxhQUFhO1FBRWYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFFO0lBQzdCLENBQUM7Q0FjRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gXCIuL0lDbGllbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7SVJlc3VsdFZhbHVlfSBmcm9tIFwiLi4vcnQvSVJlc3VsdFZhbHVlXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSUNsaWVudFRhcmdldGVkQ29tbWFuZCBpbXBsZW1lbnRzIElDbGllbnRDb21tYW5kIHtcclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgYSB2YWx1ZSBkZW5vdGluZyB3aGV0aGVyIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvbW1hbmQgd2lsbCBibG9ja1xyXG4gIC8vLyB0aGUgZXhlY3V0aW9uIG9mIGV2ZXJ5dGhpbmcgZWxzZSBvbiB0aGUgY2xpZW50IHVudGlsIHRoZSBjb21tYW5kIGV4ZWN1dGlvbiBlbmRzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYWJzdHJhY3QgZ2V0IElzQmxvY2tpbmcgKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyBvciBzZXRzIGEgdmFsdWUgZGVub3RpbmcgdGhlIGZyYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cclxuICAvLy8gVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgYnkgdGhlIGNvbW1hbmRzIHRhYmxlLCBiZWZvcmUgcnVubmluZyB0aGUgY29tbWFuZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEZyYW1lOiBudW1iZXI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVGhlIHRhZyBvZiB0aGUgdGFzayBpbiB3aG9zZSBjb250ZXh0IHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgVGFza1RhZzogc3RyaW5nO1xyXG5cclxuICBPYmo6IHN0cmluZztcclxuXHJcbiAgc2hvdWxkRXhlY3V0ZTogYm9vbGVhbjtcclxuICBnZXQgU2hvdWxkRXhlY3V0ZSAoKVxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLnNob3VsZEV4ZWN1dGUgO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSdW4gdGhlIGNvbW1hbmQgb24gdGhlIGNsaWVudC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1wiPjwvcGFyYW0+XHJcbiAgYWJzdHJhY3QgYXN5bmMgRXhlY3V0ZShyZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gTWFuaXB1bGF0ZXMgaW5uZXIgc3RhdGUgYWNjb3JkaW5nIHRvIGFuIFhNTCBhdHRyaWJ1dGUgdmFsdWUuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhdHRyaWJ1dGVcIj5UaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj5UaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBhcyBhIHN0cmluZyByZWFkIGZyb20gdGhlIFhNTC48L3BhcmFtPlxyXG4gIGFic3RyYWN0IEhhbmRsZUF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XHJcbn1cclxuIl19
@@ -1,68 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { ClientTargetedCommandBase } from "./ClientTargetedCommandBase";
3
- import { Debug } from "@magic-xpa/mscorelib";
4
- import { GUIManager } from "../../GUIManager";
5
- import { MgControl } from "../../gui/MgControl";
6
- import { ConstInterface } from "../../ConstInterface";
7
- import { XMLConstants } from "@magic-xpa/utils";
8
- import { LastFocusedManager } from "../../rt/LastFocusedManager";
9
- import { AccessHelper } from "../../AccessHelper";
10
- export class AbortCommand extends ClientTargetedCommandBase {
11
- constructor(taskTag) {
12
- super();
13
- this._transOwner = null;
14
- if (arguments.length === 0) {
15
- this.constructor_0();
16
- return;
17
- }
18
- this.constructor_1(taskTag);
19
- }
20
- constructor_0() {
21
- }
22
- constructor_1(taskTag) {
23
- this.TaskTag = taskTag;
24
- }
25
- Execute(res) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- let currMgdID = AccessHelper.mgDataTable.currMgdID;
28
- let task = AccessHelper.mgDataTable.GetTaskByID(this.TaskTag);
29
- if (this._transOwner !== null) {
30
- let newTransOwnerTask = AccessHelper.mgDataTable.GetTaskByID(this._transOwner);
31
- if (newTransOwnerTask !== null)
32
- newTransOwnerTask.setTransOwnerTask();
33
- }
34
- if ((task === null && AccessHelper.eventsManager.ignoreUnknownAbort()))
35
- return;
36
- Debug.Assert(task !== null);
37
- let mGData = task.getMGData();
38
- yield task.stop();
39
- mGData.abort();
40
- AccessHelper.mgDataTable.currMgdID = mGData.GetId();
41
- let form = task.getForm();
42
- GUIManager.Instance.abort(form);
43
- AccessHelper.mgDataTable.currMgdID = ((mGData.GetId() !== currMgdID || mGData.getParentMGdata() === null)
44
- ? currMgdID
45
- : mGData.getParentMGdata().GetId());
46
- if (!MgControl.validReturnToCtrl()) {
47
- let lastFocusedControl = LastFocusedManager.getLastFocusedControl();
48
- MgControl.ReturnToCtrl = lastFocusedControl;
49
- }
50
- });
51
- }
52
- HandleAttribute(attribute, value) {
53
- switch (attribute) {
54
- case ConstInterface.MG_ATTR_TRANS_OWNER:
55
- this._transOwner = value;
56
- break;
57
- default:
58
- super.HandleAttribute(attribute, value);
59
- break;
60
- }
61
- if (attribute === XMLConstants.MG_ATTR_TASKID) {
62
- let abortingTask = AccessHelper.mgDataTable.GetTaskByID(this.TaskTag);
63
- if (abortingTask != null)
64
- abortingTask.resetKnownToServer();
65
- }
66
- }
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJvcnRDb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BYm9ydENvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE1BQU0sT0FBTyxZQUFhLFNBQVEseUJBQXlCO0lBTXpELFlBQVksT0FBZ0I7UUFDMUIsS0FBSyxFQUFFLENBQUM7UUFMRixnQkFBVyxHQUFXLElBQUksQ0FBQztRQU9qQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxhQUFhO0lBQ3JCLENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZTtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUssT0FBTyxDQUFDLEdBQWlCOztZQUM3QixJQUFJLFNBQVMsR0FBVyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLElBQUksR0FBZSxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFHMUUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDN0IsSUFBSSxpQkFBaUIsR0FBZSxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNGLElBQUksaUJBQWlCLEtBQUssSUFBSTtvQkFDNUIsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUN6QztZQUdELElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLFlBQVksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDcEUsT0FBTztZQUVULEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksTUFBTSxHQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFZixZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFcEQsSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWxDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUU1RSxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ2xDLElBQUksa0JBQWtCLEdBQWMsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDL0UsU0FBUyxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQzthQUM3QztRQUNILENBQUM7S0FBQTtJQUVNLGVBQWUsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDckQsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxjQUFjLENBQUMsbUJBQW1CO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDekIsTUFBTTtZQUVSO2dCQUNFLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxNQUFNO1NBQ1Q7UUFHRCxJQUFJLFNBQVMsS0FBSyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQzdDLElBQUksWUFBWSxHQUFTLFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1RSxJQUFJLFlBQVksSUFBSSxJQUFJO2dCQUN0QixZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xpZW50VGFyZ2V0ZWRDb21tYW5kQmFzZX0gZnJvbSBcIi4vQ2xpZW50VGFyZ2V0ZWRDb21tYW5kQmFzZVwiO1xyXG5pbXBvcnQge0lSZXN1bHRWYWx1ZX0gZnJvbSBcIi4uLy4uL3J0L0lSZXN1bHRWYWx1ZVwiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi8uLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7RGVidWd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4uLy4uL3Rhc2tzL01HRGF0YVwiO1xyXG5pbXBvcnQge0dVSU1hbmFnZXJ9IGZyb20gXCIuLi8uLi9HVUlNYW5hZ2VyXCI7XHJcbmltcG9ydCB7TWdGb3JtfSBmcm9tIFwiLi4vLi4vZ3VpL01nRm9ybVwiO1xyXG5pbXBvcnQge01nQ29udHJvbH0gZnJvbSBcIi4uLy4uL2d1aS9NZ0NvbnRyb2xcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uLy4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7WE1MQ29uc3RhbnRzfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlciB9IGZyb20gXCIuLi8uLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXJcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4uLy4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFib3J0Q29tbWFuZCBleHRlbmRzIENsaWVudFRhcmdldGVkQ29tbWFuZEJhc2Uge1xyXG5cclxuICBwcml2YXRlIF90cmFuc093bmVyOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tUYWc6IHN0cmluZyk7XHJcbiAgY29uc3RydWN0b3IodGFza1RhZz86IHN0cmluZykge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHRhc2tUYWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKHRhc2tUYWc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5UYXNrVGFnID0gdGFza1RhZztcclxuICB9XHJcblxyXG4gIGFzeW5jIEV4ZWN1dGUocmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBjdXJyTWdkSUQ6IG51bWJlciA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5jdXJyTWdkSUQ7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh0aGlzLlRhc2tUYWcpO1xyXG5cclxuICAgIC8vIFBhc3MgdHJhbnNhY3Rpb24gb3duZXJzaGlwXHJcbiAgICBpZiAodGhpcy5fdHJhbnNPd25lciAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbmV3VHJhbnNPd25lclRhc2s6IFRhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodGhpcy5fdHJhbnNPd25lcik7XHJcbiAgICAgIGlmIChuZXdUcmFuc093bmVyVGFzayAhPT0gbnVsbClcclxuICAgICAgICBuZXdUcmFuc093bmVyVGFzay5zZXRUcmFuc093bmVyVGFzaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9uIHNwZWNpYWwgb2NjYXNpb25zLCB0aGUgc2VydmVyIG1heSBzZW5kIGFib3J0IGNvbW1hbmRzIG9uIHRhc2tzIHdoaWNoIHdlcmUgbm90IHBhcnNlZCB5ZXRcclxuICAgIGlmICgodGFzayA9PT0gbnVsbCAmJiBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5pZ25vcmVVbmtub3duQWJvcnQoKSkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBEZWJ1Zy5Bc3NlcnQodGFzayAhPT0gbnVsbCk7XHJcbiAgICBsZXQgbUdEYXRhOiBNR0RhdGEgPSB0YXNrLmdldE1HRGF0YSgpO1xyXG4gICAgYXdhaXQgdGFzay5zdG9wKCk7XHJcbiAgICBtR0RhdGEuYWJvcnQoKTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuY3Vyck1nZElEID0gbUdEYXRhLkdldElkKCk7XHJcblxyXG4gICAgbGV0IGZvcm0gPSA8TWdGb3JtPnRhc2suZ2V0Rm9ybSgpO1xyXG5cclxuICAgIEdVSU1hbmFnZXIuSW5zdGFuY2UuYWJvcnQoZm9ybSk7XHJcblxyXG4gICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmN1cnJNZ2RJRCA9ICgobUdEYXRhLkdldElkKCkgIT09IGN1cnJNZ2RJRCB8fCBtR0RhdGEuZ2V0UGFyZW50TUdkYXRhKCkgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjdXJyTWdkSURcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1HRGF0YS5nZXRQYXJlbnRNR2RhdGEoKS5HZXRJZCgpKTtcclxuXHJcbiAgICBpZiAoIU1nQ29udHJvbC52YWxpZFJldHVyblRvQ3RybCgpKSB7XHJcbiAgICAgIGxldCBsYXN0Rm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbCA9IExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKTtcclxuICAgICAgTWdDb250cm9sLlJldHVyblRvQ3RybCA9IGxhc3RGb2N1c2VkQ29udHJvbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYW5kbGVBdHRyaWJ1dGUoYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9UUkFOU19PV05FUjpcclxuICAgICAgICB0aGlzLl90cmFuc093bmVyID0gdmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHN1cGVyLkhhbmRsZUF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaWduYWwgdGhlIHNlcnZlciBoYXMgYWJvcnRlZCB0aGUgdGFzay5cclxuICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1RBU0tJRCkge1xyXG4gICAgICBsZXQgYWJvcnRpbmdUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHRoaXMuVGFza1RhZyk7XHJcbiAgICAgIGlmIChhYm9ydGluZ1Rhc2sgIT0gbnVsbClcclxuICAgICAgICBhYm9ydGluZ1Rhc2sucmVzZXRLbm93blRvU2VydmVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,25 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { AddRangeCommand } from "./AddRangeCommand";
3
- import { RecordUtils } from "@magic-xpa/gui";
4
- import { CommandFactory } from "../ClientToServer/CommandFactory";
5
- import { RefParam } from "@magic-xpa/mscorelib";
6
- import { AccessHelper } from "../../AccessHelper";
7
- export class AddLocateCommand extends AddRangeCommand {
8
- Execute(res) {
9
- return __awaiter(this, void 0, void 0, function* () {
10
- let task = AccessHelper.mgDataTable.GetTaskByID(this.TaskTag);
11
- let fieldDef = task.DataView.getField(this.UserRange.veeIdx - 1);
12
- let parsedLen = new RefParam(0);
13
- let command = CommandFactory.CreateAddUserLocateDataviewCommand(this.TaskTag, this.UserRange);
14
- if (!this.UserRange.nullMin)
15
- command.Range.min = RecordUtils.deSerializeItemVal(this.UserRange.min, fieldDef.getType(), fieldDef.getSize(), true, fieldDef.getType(), parsedLen);
16
- if (!this.UserRange.nullMax)
17
- command.Range.max = RecordUtils.deSerializeItemVal(this.UserRange.max, fieldDef.getType(), fieldDef.getSize(), true, fieldDef.getType(), parsedLen);
18
- yield task.DataviewManager.Execute(command);
19
- });
20
- }
21
- constructor() {
22
- super();
23
- }
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkTG9jYXRlQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQWRkTG9jYXRlQ29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBVyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtsRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQU10QyxPQUFPLENBQUMsR0FBaUI7O1lBRXBDLElBQUksSUFBSSxHQUFlLFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRSxJQUFJLFFBQVEsR0FBYSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFJLFNBQVMsR0FBcUIsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEQsSUFBSSxPQUFPLEdBQWlDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1SCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RKLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFdEosTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0tBQUE7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZGRSYW5nZUNvbW1hbmR9IGZyb20gXCIuL0FkZFJhbmdlQ29tbWFuZFwiO1xyXG5pbXBvcnQge0lSZXN1bHRWYWx1ZX0gZnJvbSBcIi4uLy4uL3J0L0lSZXN1bHRWYWx1ZVwiO1xyXG5pbXBvcnQge0ZpZWxkRGVmLCBSZWNvcmRVdGlsc30gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7QWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZH0gZnJvbSBcIi4uL0NsaWVudFRvU2VydmVyL0FkZFVzZXJMb2NhdGVEYXRhVmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0NvbW1hbmRGYWN0b3J5fSBmcm9tIFwiLi4vQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnlcIjtcclxuaW1wb3J0IHtSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0hlbHBlciB9IGZyb20gXCIuLi8uLi9BY2Nlc3NIZWxwZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIEFkZExvY2F0ZUNvbW1hbmRcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEFkZExvY2F0ZUNvbW1hbmQgZXh0ZW5kcyBBZGRSYW5nZUNvbW1hbmQge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEV4ZWN1dGUgQWRkTG9jYXRlQ29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZXhwXCI+PC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgRXhlY3V0ZShyZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHRoaXMuVGFza1RhZyk7XHJcbiAgICBsZXQgZmllbGREZWY6IEZpZWxkRGVmID0gdGFzay5EYXRhVmlldy5nZXRGaWVsZCg8bnVtYmVyPnRoaXMuVXNlclJhbmdlLnZlZUlkeCAtIDEpO1xyXG4gICAgbGV0IHBhcnNlZExlbjogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSgwKTtcclxuXHJcbiAgICBsZXQgY29tbWFuZDogQWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LkNyZWF0ZUFkZFVzZXJMb2NhdGVEYXRhdmlld0NvbW1hbmQodGhpcy5UYXNrVGFnLCB0aGlzLlVzZXJSYW5nZSk7XHJcbiAgICBpZiAoIXRoaXMuVXNlclJhbmdlLm51bGxNaW4pXHJcbiAgICAgIGNvbW1hbmQuUmFuZ2UubWluID0gUmVjb3JkVXRpbHMuZGVTZXJpYWxpemVJdGVtVmFsKHRoaXMuVXNlclJhbmdlLm1pbiwgZmllbGREZWYuZ2V0VHlwZSgpLCBmaWVsZERlZi5nZXRTaXplKCksIHRydWUsIGZpZWxkRGVmLmdldFR5cGUoKSwgcGFyc2VkTGVuKTtcclxuICAgIGlmICghdGhpcy5Vc2VyUmFuZ2UubnVsbE1heClcclxuICAgICAgY29tbWFuZC5SYW5nZS5tYXggPSBSZWNvcmRVdGlscy5kZVNlcmlhbGl6ZUl0ZW1WYWwodGhpcy5Vc2VyUmFuZ2UubWF4LCBmaWVsZERlZi5nZXRUeXBlKCksIGZpZWxkRGVmLmdldFNpemUoKSwgdHJ1ZSwgZmllbGREZWYuZ2V0VHlwZSgpLCBwYXJzZWRMZW4pO1xyXG5cclxuICAgIGF3YWl0IHRhc2suRGF0YXZpZXdNYW5hZ2VyLkV4ZWN1dGUoY29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,65 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { XmlParser } from "@magic-xpa/utils";
3
- import { RefParam } from "@magic-xpa/mscorelib";
4
- import { RecordUtils } from "@magic-xpa/gui";
5
- import { ClientTargetedCommandBase } from "./ClientTargetedCommandBase";
6
- import { CommandFactory } from "../ClientToServer/CommandFactory";
7
- import { UserRange } from "../../tasks/TaskBase";
8
- import { ConstInterface } from "../../ConstInterface";
9
- import { AccessHelper } from "../../AccessHelper";
10
- export class AddRangeCommand extends ClientTargetedCommandBase {
11
- constructor() {
12
- super();
13
- this.UserRange = null;
14
- }
15
- get ShouldExecute() {
16
- let task = AccessHelper.mgDataTable.GetTaskByID(this.TaskTag);
17
- return task.isStarted();
18
- }
19
- Execute(res) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- let task = AccessHelper.mgDataTable.GetTaskByID(this.TaskTag);
22
- let fieldDef = task.DataView.getField(this.UserRange.veeIdx - 1);
23
- let parsedLen = new RefParam(0);
24
- let command = CommandFactory.CreateAddUserRangeDataviewCommand(this.TaskTag, this.UserRange);
25
- if (!this.UserRange.nullMin)
26
- command.Range.min = RecordUtils.deSerializeItemVal(this.UserRange.min, fieldDef.getType(), fieldDef.getSize(), true, fieldDef.getType(), parsedLen);
27
- if (!this.UserRange.nullMax)
28
- command.Range.max = RecordUtils.deSerializeItemVal(this.UserRange.max, fieldDef.getType(), fieldDef.getSize(), true, fieldDef.getType(), parsedLen);
29
- yield task.DataviewManager.Execute(command);
30
- });
31
- }
32
- HandleAttribute(attribute, value) {
33
- switch (attribute) {
34
- case ConstInterface.MG_ATTR_FIELD_INDEX:
35
- if (this.UserRange == null) {
36
- this.UserRange = new UserRange();
37
- this.UserRange.nullMin = this.UserRange.nullMax = this.UserRange.discardMin = this.UserRange.discardMax = true;
38
- }
39
- this.UserRange.veeIdx = XmlParser.getInt(value);
40
- break;
41
- case ConstInterface.MG_ATTR_MIN_VALUE:
42
- this.UserRange.min = value;
43
- this.UserRange.nullMin = false;
44
- this.UserRange.discardMin = false;
45
- break;
46
- case ConstInterface.MG_ATTR_NULL_MIN_VALUE:
47
- this.UserRange.nullMin = true;
48
- this.UserRange.discardMin = false;
49
- break;
50
- case ConstInterface.MG_ATTR_NULL_MAX_VALUE:
51
- this.UserRange.nullMax = true;
52
- this.UserRange.discardMax = false;
53
- break;
54
- case ConstInterface.MG_ATTR_MAX_VALUE:
55
- this.UserRange.max = value;
56
- this.UserRange.discardMax = false;
57
- this.UserRange.nullMax = false;
58
- break;
59
- default:
60
- super.HandleAttribute(attribute, value);
61
- break;
62
- }
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkUmFuZ2VDb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BZGRSYW5nZUNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFXLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUVoRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtsRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSx5QkFBeUI7SUFHNUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhWLGNBQVMsR0FBYyxJQUFJLENBQUM7SUFJNUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxHQUFlLFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBTUssT0FBTyxDQUFDLEdBQWlCOztZQUM3QixJQUFJLElBQUksR0FBZSxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUUsSUFBSSxRQUFRLEdBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFR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QztnQkFDeEMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7UmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0ZpZWxkRGVmLCBSZWNvcmRVdGlsc30gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcblxyXG5pbXBvcnQge0NsaWVudFRhcmdldGVkQ29tbWFuZEJhc2V9IGZyb20gXCIuL0NsaWVudFRhcmdldGVkQ29tbWFuZEJhc2VcIjtcclxuaW1wb3J0IHtJUmVzdWx0VmFsdWV9IGZyb20gXCIuLi8uLi9ydC9JUmVzdWx0VmFsdWVcIjtcclxuaW1wb3J0IHtBZGRVc2VyUmFuZ2VEYXRhdmlld0NvbW1hbmR9IGZyb20gXCIuLi9DbGllbnRUb1NlcnZlci9BZGRVc2VyUmFuZ2VEYXRhdmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtDb21tYW5kRmFjdG9yeX0gZnJvbSBcIi4uL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5XCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uLy4uL3Rhc2tzL1Rhc2tcIjtcclxuaW1wb3J0IHtVc2VyUmFuZ2V9IGZyb20gXCIuLi8uLi90YXNrcy9UYXNrQmFzZVwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4uLy4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gQWRkUmFuZ2VDb21tYW5kXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBBZGRSYW5nZUNvbW1hbmQgZXh0ZW5kcyBDbGllbnRUYXJnZXRlZENvbW1hbmRCYXNlIHtcclxuICBVc2VyUmFuZ2U6IFVzZXJSYW5nZSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGdldCBTaG91bGRFeGVjdXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodGhpcy5UYXNrVGFnKTtcclxuICAgIHJldHVybiB0YXNrLmlzU3RhcnRlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBFeGVjdXRlIEFkZFJhbmdlIGNvbW1hbmQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNcIj48L3BhcmFtPlxyXG4gIGFzeW5jIEV4ZWN1dGUocmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHRoaXMuVGFza1RhZyk7XHJcbiAgICBsZXQgZmllbGREZWY6IEZpZWxkRGVmID0gdGFzay5EYXRhVmlldy5nZXRGaWVsZCg8bnVtYmVyPnRoaXMuVXNlclJhbmdlLnZlZUlkeCAtIDEpO1xyXG4gICAgbGV0IHBhcnNlZExlbjogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSgwKTtcclxuXHJcbiAgICBsZXQgY29tbWFuZDogQWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kID0gQ29tbWFuZEZhY3RvcnkuQ3JlYXRlQWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kKHRoaXMuVGFza1RhZywgdGhpcy5Vc2VyUmFuZ2UpO1xyXG4gICAgaWYgKCF0aGlzLlVzZXJSYW5nZS5udWxsTWluKVxyXG4gICAgICBjb21tYW5kLlJhbmdlLm1pbiA9IFJlY29yZFV0aWxzLmRlU2VyaWFsaXplSXRlbVZhbCh0aGlzLlVzZXJSYW5nZS5taW4sIGZpZWxkRGVmLmdldFR5cGUoKSwgZmllbGREZWYuZ2V0U2l6ZSgpLCB0cnVlLCBmaWVsZERlZi5nZXRUeXBlKCksIHBhcnNlZExlbik7XHJcbiAgICBpZiAoIXRoaXMuVXNlclJhbmdlLm51bGxNYXgpXHJcbiAgICAgIGNvbW1hbmQuUmFuZ2UubWF4ID0gUmVjb3JkVXRpbHMuZGVTZXJpYWxpemVJdGVtVmFsKHRoaXMuVXNlclJhbmdlLm1heCwgZmllbGREZWYuZ2V0VHlwZSgpLCBmaWVsZERlZi5nZXRTaXplKCksIHRydWUsIGZpZWxkRGVmLmdldFR5cGUoKSwgcGFyc2VkTGVuKTtcclxuXHJcbiAgICBhd2FpdCB0YXNrLkRhdGF2aWV3TWFuYWdlci5FeGVjdXRlKGNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBIYW5kbGUgQXR0cmlidXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhdHRyaWJ1dGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuXHJcbiAgcHVibGljIEhhbmRsZUF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0ZJRUxEX0lOREVYOlxyXG4gICAgICAgIGlmICh0aGlzLlVzZXJSYW5nZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlVzZXJSYW5nZSA9IG5ldyBVc2VyUmFuZ2UoKTtcclxuICAgICAgICAgIHRoaXMuVXNlclJhbmdlLm51bGxNaW4gPSB0aGlzLlVzZXJSYW5nZS5udWxsTWF4ID0gdGhpcy5Vc2VyUmFuZ2UuZGlzY2FyZE1pbiA9IHRoaXMuVXNlclJhbmdlLmRpc2NhcmRNYXggPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlVzZXJSYW5nZS52ZWVJZHggPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NSU5fVkFMVUU6XHJcbiAgICAgICAgdGhpcy5Vc2VyUmFuZ2UubWluID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5Vc2VyUmFuZ2UubnVsbE1pbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuVXNlclJhbmdlLmRpc2NhcmRNaW4gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9OVUxMX01JTl9WQUxVRTpcclxuICAgICAgICB0aGlzLlVzZXJSYW5nZS5udWxsTWluID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlVzZXJSYW5nZS5kaXNjYXJkTWluID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTlVMTF9NQVhfVkFMVUU6XHJcbiAgICAgICAgdGhpcy5Vc2VyUmFuZ2UubnVsbE1heCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5Vc2VyUmFuZ2UuZGlzY2FyZE1heCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX01BWF9WQUxVRTpcclxuICAgICAgICB0aGlzLlVzZXJSYW5nZS5tYXggPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLlVzZXJSYW5nZS5kaXNjYXJkTWF4ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Vc2VyUmFuZ2UubnVsbE1heCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdXBlci5IYW5kbGVBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==