@magic-xpa/engine 4.800.0 → 4.801.0-dev000.0
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.
- package/esm2020/index.mjs +190 -0
- package/{esm2015/magic-xpa-engine.js → esm2020/magic-xpa-engine.mjs} +0 -0
- package/esm2020/src/AccessHelper.mjs +3 -0
- package/esm2020/src/ClientManager.mjs +403 -0
- package/esm2020/src/CommandsProcessorBase.mjs +58 -0
- package/esm2020/src/CommandsProcessorManager.mjs +26 -0
- package/esm2020/src/CommandsTable.mjs +163 -0
- package/{esm2015/src/ConstInterface.js → esm2020/src/ConstInterface.mjs} +0 -0
- package/{esm2015/src/CurrentClientVersion.js → esm2020/src/CurrentClientVersion.mjs} +2 -2
- package/{esm2015/src/FlowMonitorInterface.js → esm2020/src/FlowMonitorInterface.mjs} +0 -0
- package/esm2020/src/GUIManager.mjs +63 -0
- package/{esm2015/src/GlobalCommandsManager.js → esm2020/src/GlobalCommandsManager.mjs} +0 -0
- package/esm2020/src/GuiEventsProcessor.mjs +171 -0
- package/{esm2015/src/ICommandsTable.js → esm2020/src/ICommandsTable.mjs} +1 -0
- package/{esm2015/src/ServerConfig.js → esm2020/src/ServerConfig.mjs} +0 -0
- package/{esm2015/src/bridge/IGuiEvent.js → esm2020/src/bridge/IGuiEvent.mjs} +0 -0
- package/esm2020/src/bridge/MagicBridge.mjs +41 -0
- package/{esm2015/src/commands/ClientOriginatedCommandTaskTag.js → esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserLocateDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserRangeDataviewCommand.js → esm2020/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserSortDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs} +0 -0
- package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +23 -0
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommand.mjs +15 -0
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
- package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +26 -0
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +278 -0
- package/{esm2015/src/commands/ClientToServer/CommandSerializationHelper.js → esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs} +0 -0
- package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +23 -0
- package/esm2020/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +21 -0
- package/esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +20 -0
- package/{esm2015/src/commands/ClientToServer/ControlItemsRefreshCommand.js → esm2020/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/DataViewOutputCommand.js → esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/DataviewCommand.js → esm2020/src/commands/ClientToServer/DataviewCommand.mjs} +2 -2
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +36 -0
- package/esm2020/src/commands/ClientToServer/EventCommand.mjs +40 -0
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +67 -0
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +22 -0
- package/{esm2015/src/commands/ClientToServer/GlobalParamsQueryCommand.js → esm2020/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ICommandTaskTag.js → esm2020/src/commands/ClientToServer/ICommandTaskTag.mjs} +1 -0
- package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +21 -0
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +23 -0
- package/esm2020/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +23 -0
- package/esm2020/src/commands/ClientToServer/QueryCommand.mjs +21 -0
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +27 -0
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +27 -0
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +24 -0
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +39 -0
- package/{esm2015/src/commands/ClientToServer/SelectProgramCommand.js → esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/SetTransactionStateDataviewCommand.js → esm2020/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs} +0 -0
- package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +21 -0
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +24 -0
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +28 -0
- package/{esm2015/src/commands/ClientToServer/UnloadCommand.js → esm2020/src/commands/ClientToServer/UnloadCommand.mjs} +0 -0
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2020/src/commands/DataViewCommandBase.mjs +10 -0
- package/{esm2015/src/commands/IClientCommand.js → esm2020/src/commands/IClientCommand.mjs} +1 -0
- package/esm2020/src/commands/IClientTargetedCommand.mjs +9 -0
- package/{esm2015/src/commands/IClientToServerCommandInfo.js → esm2020/src/commands/IClientToServerCommandInfo.mjs} +1 -0
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/esm2020/src/commands/ServerToClient/AddLocateCommand.mjs +22 -0
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/{esm2015/src/commands/ServerToClient/ClientRefreshCommand.js → esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs} +14 -17
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +27 -0
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +222 -0
- package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResetRangeCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResetSortCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +85 -0
- package/{esm2015/src/commands/ServerToClient/XMLBasedCommandBuilder.js → esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs} +0 -0
- package/{esm2015/src/communications/IConnectionStateManager.js → esm2020/src/communications/IConnectionStateManager.mjs} +1 -0
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +17 -0
- package/{esm2015/src/data/DataSourceIdKey.js → esm2020/src/data/DataSourceIdKey.mjs} +0 -0
- package/esm2020/src/data/DataView.mjs +1634 -0
- package/{esm2015/src/data/DataViewBase.js → esm2020/src/data/DataViewBase.mjs} +0 -0
- package/esm2020/src/data/DataviewManager.mjs +28 -0
- package/esm2020/src/data/DataviewManagerBase.mjs +15 -0
- package/{esm2015/src/data/DvCache.js → esm2020/src/data/DvCache.mjs} +0 -0
- package/esm2020/src/data/Field.mjs +645 -0
- package/esm2020/src/data/FieldBase.mjs +18 -0
- package/{esm2015/src/data/FieldsTable.js → esm2020/src/data/FieldsTable.mjs} +0 -0
- package/{esm2015/src/data/IRecordsTable.js → esm2020/src/data/IRecordsTable.mjs} +1 -0
- package/{esm2015/src/data/Key.js → esm2020/src/data/Key.mjs} +0 -0
- package/esm2020/src/data/Record.mjs +846 -0
- package/{esm2015/src/data/RecordOutOfDataViewException.js → esm2020/src/data/RecordOutOfDataViewException.mjs} +0 -0
- package/esm2020/src/data/RecordsTable.mjs +267 -0
- package/esm2020/src/data/TaskTransactionManager.mjs +103 -0
- package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
- package/{esm2015/src/enums.js → esm2020/src/enums.mjs} +0 -0
- package/esm2020/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2020/src/env/Environment.mjs +554 -0
- package/{esm2015/src/env/ILanguageData.js → esm2020/src/env/ILanguageData.mjs} +1 -0
- package/esm2020/src/env/LanguageData.mjs +222 -0
- package/esm2020/src/env/MirrorString.mjs +66 -0
- package/{esm2015/src/event/ActionManager.js → esm2020/src/event/ActionManager.mjs} +0 -0
- package/esm2020/src/event/Event.mjs +1436 -0
- package/esm2020/src/event/EventHandler.mjs +773 -0
- package/esm2020/src/event/EventHandlerPosition.mjs +201 -0
- package/esm2020/src/event/EventsManager.mjs +2983 -0
- package/esm2020/src/event/IEventsManager.mjs +7 -0
- package/esm2020/src/event/RunTimeEvent.mjs +406 -0
- package/{esm2015/src/event/RunTimeEventBase.js → esm2020/src/event/RunTimeEventBase.mjs} +0 -0
- package/{esm2015/src/event/UserEventsTable.js → esm2020/src/event/UserEventsTable.mjs} +0 -0
- package/{esm2015/src/exp/ExpTable.js → esm2020/src/exp/ExpTable.mjs} +0 -0
- package/esm2020/src/exp/Expression.mjs +200 -0
- package/{esm2015/src/exp/ExpressionDict.js → esm2020/src/exp/ExpressionDict.mjs} +0 -0
- package/esm2020/src/exp/ExpressionEvaluator.mjs +4373 -0
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/esm2020/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2020/src/exp/YesNoExp.mjs +41 -0
- package/{esm2015/src/gui/CreatedFormVector.js → esm2020/src/gui/CreatedFormVector.mjs} +0 -0
- package/esm2020/src/gui/FormsTable.mjs +66 -0
- package/esm2020/src/gui/MgControl.mjs +357 -0
- package/esm2020/src/gui/MgForm.mjs +1195 -0
- package/esm2020/src/http/HttpManager.mjs +97 -0
- package/esm2020/src/http/client/HttpClientAsync.mjs +67 -0
- package/esm2020/src/http/client/HttpClientBase.mjs +148 -0
- package/{esm2015/src/http/client/HttpClientEvents.js → esm2020/src/http/client/HttpClientEvents.mjs} +0 -0
- package/esm2020/src/http/client/HttpClientSync.mjs +42 -0
- package/{esm2015/src/http/client/HttpUtility.js → esm2020/src/http/client/HttpUtility.mjs} +0 -0
- package/{esm2015/src/http/client/ICommunicationsFailureHandler.js → esm2020/src/http/client/ICommunicationsFailureHandler.mjs} +1 -0
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +872 -0
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/{esm2015/src/remote/RemoteDataViewCommandFactory.js → esm2020/src/remote/RemoteDataViewCommandFactory.mjs} +0 -0
- package/esm2020/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +16 -0
- package/esm2020/src/remote/RemoteDataviewManager.mjs +17 -0
- package/esm2020/src/remote/RemoteInitDataViewCommand.mjs +11 -0
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/esm2020/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +13 -0
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/esm2020/src/remote/ServerError.mjs +44 -0
- package/{esm2015/src/remote/SetTransactionStateRemoteDataViewCommand.js → esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs} +8 -11
- package/esm2020/src/rt/Argument.mjs +274 -0
- package/esm2020/src/rt/ArgumentsList.mjs +103 -0
- package/esm2020/src/rt/Boundary.mjs +158 -0
- package/{esm2015/src/rt/CompMainPrgTable.js → esm2020/src/rt/CompMainPrgTable.mjs} +0 -0
- package/esm2020/src/rt/DataviewHeaderBase.mjs +96 -0
- package/esm2020/src/rt/DataviewHeaderFactory.mjs +7 -0
- package/{esm2015/src/rt/DataviewHeaders.js → esm2020/src/rt/DataviewHeaders.mjs} +0 -0
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +39 -0
- package/{esm2015/src/rt/ExecutionStack.js → esm2020/src/rt/ExecutionStack.mjs} +0 -0
- package/{esm2015/src/rt/ExecutionStackEntry.js → esm2020/src/rt/ExecutionStackEntry.mjs} +0 -0
- package/{esm2015/src/rt/HandlersTable.js → esm2020/src/rt/HandlersTable.mjs} +0 -0
- package/{esm2015/src/rt/IDataSourceViewDefinition.js → esm2020/src/rt/IDataSourceViewDefinition.mjs} +1 -0
- package/{esm2015/src/rt/IDataviewHeader.js → esm2020/src/rt/IDataviewHeader.mjs} +1 -0
- package/{esm2015/src/rt/IResultValue.js → esm2020/src/rt/IResultValue.mjs} +1 -0
- package/{esm2015/src/rt/LastFocusedManager.js → esm2020/src/rt/LastFocusedManager.mjs} +0 -0
- package/esm2020/src/rt/Operation.mjs +745 -0
- package/{esm2015/src/rt/OperationTable.js → esm2020/src/rt/OperationTable.mjs} +0 -0
- package/esm2020/src/rt/Recompute.mjs +355 -0
- package/{esm2015/src/rt/RecomputeTable.js → esm2020/src/rt/RecomputeTable.mjs} +0 -0
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +105 -0
- package/{esm2015/src/rt/ResultValue.js → esm2020/src/rt/ResultValue.mjs} +0 -0
- package/esm2020/src/rt/TableCache.mjs +177 -0
- package/esm2020/src/rt/TableCacheManager.mjs +67 -0
- package/esm2020/src/rt/Transaction.mjs +54 -0
- package/{esm2015/src/security/UserDetails.js → esm2020/src/security/UserDetails.mjs} +0 -0
- package/{esm2015/src/tasks/IMGDataCollection.js → esm2020/src/tasks/IMGDataCollection.mjs} +1 -0
- package/esm2020/src/tasks/MGData.mjs +552 -0
- package/esm2020/src/tasks/MGDataCollection.mjs +259 -0
- package/{esm2015/src/tasks/MenusDeserializer.js → esm2020/src/tasks/MenusDeserializer.mjs} +0 -0
- package/{esm2015/src/tasks/RCTimer.js → esm2020/src/tasks/RCTimer.mjs} +0 -0
- package/esm2020/src/tasks/RemoteTaskService.mjs +45 -0
- package/esm2020/src/tasks/Task.mjs +2501 -0
- package/{esm2015/src/tasks/TaskBase.js → esm2020/src/tasks/TaskBase.mjs} +22 -1
- package/esm2020/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2020/src/tasks/TasksTable.mjs +80 -0
- package/{esm2015/src/tasks/sort/Sort.js → esm2020/src/tasks/sort/Sort.mjs} +0 -0
- package/esm2020/src/tasks/sort/SortCollection.mjs +72 -0
- package/{esm2015/src/util/ConstUtils.js → esm2020/src/util/ConstUtils.mjs} +0 -0
- package/{esm2015/src/util/FlowMonitorQueue.js → esm2020/src/util/FlowMonitorQueue.mjs} +15 -18
- package/{esm2015/src/util/HeapSort.js → esm2020/src/util/HeapSort.mjs} +0 -0
- package/{esm2015/src/util/IMirrorXML.js → esm2020/src/util/IMirrorXML.mjs} +2 -1
- package/{esm2015/src/util/IServerConfig.js → esm2020/src/util/IServerConfig.mjs} +1 -0
- package/{esm2015/src/util/MgBlockingQueue.js → esm2020/src/util/MgBlockingQueue.mjs} +1 -0
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +76 -0
- package/{esm2015/src/util/MgPriorityQueue.js → esm2020/src/util/MgPriorityQueue.mjs} +0 -0
- package/esm2020/src/util/ParamParseResult.mjs +8 -0
- package/esm2020/src/util/PrmMap.mjs +151 -0
- package/esm2020/src/util/Process.mjs +7 -0
- package/esm2020/src/util/ReturnResult.mjs +46 -0
- package/{esm2015/src/util/ReturnResultBase.js → esm2020/src/util/ReturnResultBase.mjs} +0 -0
- package/{esm2015/src/util/Scrambler.js → esm2020/src/util/Scrambler.mjs} +0 -0
- package/{esm2015/src/util/UniqueIDUtils.js → esm2020/src/util/UniqueIDUtils.mjs} +0 -0
- package/{esm2015/src/util/cookie.service.js → esm2020/src/util/cookie.service.mjs} +0 -0
- package/fesm2015/{magic-xpa-engine.js → magic-xpa-engine.mjs} +267 -254
- package/fesm2015/magic-xpa-engine.mjs.map +1 -0
- package/fesm2020/magic-xpa-engine.mjs +30705 -0
- package/fesm2020/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/package.json +27 -13
- package/src/AccessHelper.d.ts +1 -1
- package/src/CommandsProcessorBase.d.ts +3 -3
- package/src/GuiEventsProcessor.d.ts +1 -1
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +1 -2
- package/src/commands/ClientToServer/DataviewCommand.d.ts +1 -2
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +1 -2
- package/src/commands/ClientToServer/EventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +1 -2
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +1 -2
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/QueryCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/TransactionCommand.d.ts +1 -2
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +1 -2
- package/src/commands/DataViewCommandBase.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +1 -1
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +1 -1
- package/src/data/FieldBase.d.ts +3 -3
- package/src/data/Record.d.ts +2 -9
- package/src/data/RecordsTable.d.ts +1 -2
- package/src/data/XMLBasedDcValuesBuilder.d.ts +1 -1
- package/src/env/EnvVariablesTable.d.ts +2 -15
- package/src/env/Environment.d.ts +0 -3
- package/src/env/MirrorString.d.ts +15 -0
- package/src/event/Event.d.ts +0 -3
- package/src/event/EventsManager.d.ts +7 -8
- package/src/event/IEventsManager.d.ts +5 -6
- package/src/exp/ExpressionEvaluator.d.ts +2 -2
- package/src/exp/ExpressionLocalJpn.d.ts +2 -2
- package/src/exp/GlobalParamsTable.d.ts +2 -1
- package/src/gui/MgControl.d.ts +0 -2
- package/src/gui/MgForm.d.ts +4 -4
- package/src/http/client/HttpClientAsync.d.ts +2 -2
- package/src/http/client/HttpClientBase.d.ts +3 -3
- package/src/http/client/HttpClientSync.d.ts +2 -2
- package/src/remote/RemoteCommandsProcessor.d.ts +1 -1
- package/src/rt/DataviewHeaderBase.d.ts +2 -2
- package/src/rt/DataviewHeaderFactory.d.ts +1 -1
- package/src/rt/Operation.d.ts +3 -1
- package/src/rt/RemoteDataviewHeader.d.ts +1 -2
- package/src/rt/Transaction.d.ts +1 -1
- package/src/tasks/RemoteTaskService.d.ts +2 -3
- package/src/tasks/Task.d.ts +1 -1
- package/src/tasks/TaskBase.d.ts +7 -7
- package/src/tasks/TaskServiceBase.d.ts +2 -4
- package/src/tasks/sort/SortCollection.d.ts +2 -3
- package/src/util/FlowMonitorQueue.d.ts +1 -1
- package/src/util/IMirrorXML.d.ts +1 -1
- package/src/util/ParamParseResult.d.ts +6 -0
- package/src/util/PrmMap.d.ts +0 -6
- package/src/util/Process.d.ts +1 -1
- package/bundles/magic-xpa-engine.umd.js +0 -38066
- package/bundles/magic-xpa-engine.umd.js.map +0 -1
- package/bundles/magic-xpa-engine.umd.min.js +0 -16
- package/bundles/magic-xpa-engine.umd.min.js.map +0 -1
- package/esm2015/index.js +0 -188
- package/esm2015/src/AccessHelper.js +0 -3
- package/esm2015/src/ClientManager.js +0 -412
- package/esm2015/src/CommandsProcessorBase.js +0 -54
- package/esm2015/src/CommandsProcessorManager.js +0 -31
- package/esm2015/src/CommandsTable.js +0 -166
- package/esm2015/src/GUIManager.js +0 -72
- package/esm2015/src/GuiEventsProcessor.js +0 -171
- package/esm2015/src/bridge/MagicBridge.js +0 -44
- package/esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js +0 -24
- package/esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js +0 -15
- package/esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js +0 -60
- package/esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js +0 -26
- package/esm2015/src/commands/ClientToServer/CommandFactory.js +0 -283
- package/esm2015/src/commands/ClientToServer/ComputeEventCommand.js +0 -23
- package/esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js +0 -21
- package/esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js +0 -20
- package/esm2015/src/commands/ClientToServer/EvaluateCommand.js +0 -36
- package/esm2015/src/commands/ClientToServer/EventCommand.js +0 -40
- package/esm2015/src/commands/ClientToServer/ExecOperCommand.js +0 -67
- package/esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js +0 -22
- package/esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js +0 -21
- package/esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js +0 -23
- package/esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js +0 -23
- package/esm2015/src/commands/ClientToServer/QueryCommand.js +0 -21
- package/esm2015/src/commands/ClientToServer/RecomputeCommand.js +0 -27
- package/esm2015/src/commands/ClientToServer/RefreshEventCommand.js +0 -27
- package/esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js +0 -24
- package/esm2015/src/commands/ClientToServer/RollbackEventCommand.js +0 -39
- package/esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js +0 -21
- package/esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js +0 -24
- package/esm2015/src/commands/ClientToServer/TransactionCommand.js +0 -28
- package/esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js +0 -18
- package/esm2015/src/commands/DataViewCommandBase.js +0 -6
- package/esm2015/src/commands/IClientTargetedCommand.js +0 -6
- package/esm2015/src/commands/ServerToClient/AbortCommand.js +0 -68
- package/esm2015/src/commands/ServerToClient/AddLocateCommand.js +0 -25
- package/esm2015/src/commands/ServerToClient/AddRangeCommand.js +0 -65
- package/esm2015/src/commands/ServerToClient/AddSortCommand.js +0 -36
- package/esm2015/src/commands/ServerToClient/ClientTargetedCommandBase.js +0 -24
- package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +0 -48
- package/esm2015/src/commands/ServerToClient/OpenURLCommand.js +0 -225
- package/esm2015/src/commands/ServerToClient/ResetLocateCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResetRangeCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResetSortCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResultCommand.js +0 -40
- package/esm2015/src/commands/ServerToClient/VerifyCommand.js +0 -88
- package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +0 -20
- package/esm2015/src/data/DataView.js +0 -1693
- package/esm2015/src/data/DataviewManager.js +0 -31
- package/esm2015/src/data/DataviewManagerBase.js +0 -18
- package/esm2015/src/data/Field.js +0 -672
- package/esm2015/src/data/FieldBase.js +0 -9
- package/esm2015/src/data/Record.js +0 -914
- package/esm2015/src/data/RecordsTable.js +0 -267
- package/esm2015/src/data/TaskTransactionManager.js +0 -110
- package/esm2015/src/data/XMLBasedDcValuesBuilder.js +0 -74
- package/esm2015/src/env/EnvVariablesTable.js +0 -408
- package/esm2015/src/env/Environment.js +0 -563
- package/esm2015/src/env/LanguageData.js +0 -230
- package/esm2015/src/event/Event.js +0 -1449
- package/esm2015/src/event/EventHandler.js +0 -787
- package/esm2015/src/event/EventHandlerPosition.js +0 -201
- package/esm2015/src/event/EventsManager.js +0 -3107
- package/esm2015/src/event/IEventsManager.js +0 -7
- package/esm2015/src/event/RunTimeEvent.js +0 -406
- package/esm2015/src/exp/Expression.js +0 -209
- package/esm2015/src/exp/ExpressionEvaluator.js +0 -4441
- package/esm2015/src/exp/ExpressionLocalJpn.js +0 -314
- package/esm2015/src/exp/GlobalParamsTable.js +0 -84
- package/esm2015/src/exp/YesNoExp.js +0 -44
- package/esm2015/src/gui/FormsTable.js +0 -73
- package/esm2015/src/gui/MgControl.js +0 -438
- package/esm2015/src/gui/MgForm.js +0 -1292
- package/esm2015/src/http/HttpManager.js +0 -100
- package/esm2015/src/http/client/HttpClientAsync.js +0 -72
- package/esm2015/src/http/client/HttpClientBase.js +0 -148
- package/esm2015/src/http/client/HttpClientSync.js +0 -47
- package/esm2015/src/remote/AddUserLocateRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/AddUserRangeRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/AddUserSortRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/RemoteCommandsProcessor.js +0 -903
- package/esm2015/src/remote/RemoteControlItemsRefreshCommand.js +0 -28
- package/esm2015/src/remote/RemoteDataViewCommandBase.js +0 -27
- package/esm2015/src/remote/RemoteDataViewCommandUpdateNonModifiable.js +0 -19
- package/esm2015/src/remote/RemoteDataviewManager.js +0 -23
- package/esm2015/src/remote/RemoteInitDataViewCommand.js +0 -14
- package/esm2015/src/remote/ResetUserLocateRemoteDataviewCommand.js +0 -20
- package/esm2015/src/remote/ResetUserRangeRemoteDataviewCommand.js +0 -16
- package/esm2015/src/remote/ResetUserSortRemoteDataviewCommand.js +0 -19
- package/esm2015/src/remote/ServerError.js +0 -45
- package/esm2015/src/rt/Argument.js +0 -281
- package/esm2015/src/rt/ArgumentsList.js +0 -108
- package/esm2015/src/rt/Boundary.js +0 -161
- package/esm2015/src/rt/DataviewHeaderBase.js +0 -96
- package/esm2015/src/rt/DataviewHeaderFactory.js +0 -7
- package/esm2015/src/rt/DataviewHeadersSaxHandler.js +0 -40
- package/esm2015/src/rt/Operation.js +0 -769
- package/esm2015/src/rt/Recompute.js +0 -372
- package/esm2015/src/rt/RemoteDataviewHeader.js +0 -114
- package/esm2015/src/rt/TableCache.js +0 -182
- package/esm2015/src/rt/TableCacheManager.js +0 -70
- package/esm2015/src/rt/Transaction.js +0 -54
- package/esm2015/src/tasks/MGData.js +0 -561
- package/esm2015/src/tasks/MGDataCollection.js +0 -270
- package/esm2015/src/tasks/RemoteTaskService.js +0 -45
- package/esm2015/src/tasks/Task.js +0 -2593
- package/esm2015/src/tasks/TaskServiceBase.js +0 -30
- package/esm2015/src/tasks/TasksTable.js +0 -87
- package/esm2015/src/tasks/sort/SortCollection.js +0 -72
- package/esm2015/src/util/MgPriorityBlockingQueue.js +0 -79
- package/esm2015/src/util/PrmMap.js +0 -157
- package/esm2015/src/util/Process.js +0 -7
- package/esm2015/src/util/ReturnResult.js +0 -46
- package/fesm2015/magic-xpa-engine.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var EventsAllowedType;
|
|
2
|
+
(function (EventsAllowedType) {
|
|
3
|
+
EventsAllowedType[EventsAllowedType["NONE"] = 0] = "NONE";
|
|
4
|
+
EventsAllowedType[EventsAllowedType["NON_INTERACTIVE"] = 1] = "NON_INTERACTIVE";
|
|
5
|
+
EventsAllowedType[EventsAllowedType["ALL"] = 2] = "ALL";
|
|
6
|
+
})(EventsAllowedType || (EventsAllowedType = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUV2ZW50c01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0lFdmVudHNNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sQ0FBTixJQUFZLGlCQUlYO0FBSkQsV0FBWSxpQkFBaUI7SUFDM0IseURBQUksQ0FBQTtJQUNKLCtFQUFlLENBQUE7SUFDZix1REFBRyxDQUFBO0FBQ0wsQ0FBQyxFQUpXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2UsIElHdWlFdmVudHNNYW5hZ2VyLCBJVGFzaywgS2V5Ym9hcmRJdGVtLCBNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtSdW5UaW1lRXZlbnR9IGZyb20gXCIuL1J1blRpbWVFdmVudFwiO1xyXG5pbXBvcnQge0V4ZWN1dGlvblN0YWNrRW50cnl9IGZyb20gXCIuLi9ydC9FeGVjdXRpb25TdGFja0VudHJ5XCI7XHJcbmltcG9ydCB7RXhlY3V0aW9uU3RhY2t9IGZyb20gXCIuLi9ydC9FeGVjdXRpb25TdGFja1wiO1xyXG5pbXBvcnQge0NvbXBNYWluUHJnVGFibGV9IGZyb20gXCIuLi9ydC9Db21wTWFpblByZ1RhYmxlXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2x9IGZyb20gXCIuLi9ndWkvTWdDb250cm9sXCI7XHJcbmltcG9ydCB7RXZlbnRTdWJUeXBlfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuaW1wb3J0IHtIYW5kbGVyc1RhYmxlfSBmcm9tIFwiLi4vcnQvSGFuZGxlcnNUYWJsZVwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4uL3Rhc2tzL01HRGF0YVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xyXG5cclxuZXhwb3J0IGVudW0gRXZlbnRzQWxsb3dlZFR5cGUge1xyXG4gIE5PTkUsXHJcbiAgTk9OX0lOVEVSQUNUSVZFLFxyXG4gIEFMTFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudHNNYW5hZ2VyIGV4dGVuZHMgSUd1aUV2ZW50c01hbmFnZXIge1xyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwia2JJdG1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGxhc3QgZW5hYmxlZCBhY3Rpb24gZm9yIHRoZSBzcGVjaWZpYyBrZXkgKGluIGtiSXRlbSk8L3JldHVybnM+XHJcbiAgLy8vIDxjaGVja0FjY2Vzc0tleUluTWVudXM6PiAgaWYgdG8gY2hlY2sgdGhlIGtleWJvYXJkIGluIHRoZSBtZW51IDwvY2hlY2tBY2Nlc3NLZXlJbk1lbnVzOj5cclxuICBnZXRNYXRjaGluZ0FjdGlvbiggIGtiSXRtOiBLZXlib2FyZEl0ZW0pOiBudW1iZXI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgXCJpZ25vcmUgdW5rbm93biBhYm9ydFwiIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlnbm9yZVVua25vd25BYm9ydCgpOiBib29sZWFuO1xyXG5cclxuICBnZXRMYXN0UnRFdmVudCgpOiBSdW5UaW1lRXZlbnQ7XHJcblxyXG4gIGdldE5leHRPcGVySWR4KG9wZXI6IGFueSwgY2xlYXJXaGVuRm91bmQ6IGJvb2xlYW4pOiBudW1iZXI7XHJcblxyXG4gIHB1c2hFeGVjU3RhY2sodGFza0lkOiBzdHJpbmcsIGhhbmRsZXJJZDogc3RyaW5nLCBvcGVySWR4OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICBwZXJmb3JtU3ViZm9ybUNsb3NlIChzdWJmb3JtQ3RybDogTWdDb250cm9sKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnQocnRFdnQ6IGFueSwgcmV0dXJuZWRGcm9tU2VydmVyOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgcG9wRXhlY1N0YWNrKCk6IEV4ZWN1dGlvblN0YWNrRW50cnk7XHJcblxyXG4gIGFkZFRvVGFpbChydEV2dDogUnVuVGltZUV2ZW50KTogdm9pZDtcclxuXHJcbiAgZ2V0RXhlY1N0YWNrKCk6IEV4ZWN1dGlvblN0YWNrO1xyXG5cclxuICBnZXRDb21wTWFpblByZ1RhYigpOiBDb21wTWFpblByZ1RhYmxlO1xyXG5cclxuICBoYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2soaXRhc2s6IElUYXNrLCBldmVudENvZGU6IG51bWJlcik6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIGdldEN1cnJGaWVsZCgpOiBGaWVsZDtcclxuXHJcbiAgZ2V0Q3VyclRhc2soKTogVGFzaztcclxuXHJcbiAgcHVzaE5ld0V4ZWNTdGFja3MoKTogdm9pZDtcclxuXHJcbiAgcG9wTmV3RXhlY1N0YWNrcygpOiB2b2lkO1xyXG5cclxuICBHZXRTdG9wRXhlY3V0aW9uRmxhZygpOiBib29sZWFuO1xyXG5cclxuICBnZXRDdXJyQ3RybCgpOiBNZ0NvbnRyb2w7XHJcblxyXG4gIHNldFN0b3BFeGVjdXRpb24oc3RvcDogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gIHNldFN0b3BFeGVjdXRpb24oc3RvcDogYm9vbGVhbiwgY2xlYXJTcnZyRXZlbnRzOiBib29sZWFuKTogdm9pZDtcclxuXHJcbiAgaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhUYXNrQW5kU3ViZm9ybVJlZnJlc2goaXRhc2s6IElUYXNrLCBldmVudENvZGU6IG51bWJlciwgc3ViZm9ybVJlZnJlc2g6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICByZXZlcnNlU2VydmVyRXhlY1N0YWNrKCk6IHZvaWQ7XHJcblxyXG4gIHB1c2hTZXJ2ZXJFeGVjU3RhY2sodGFza0lkOiBzdHJpbmcsIGhhbmRsZXJJZDogc3RyaW5nLCBvcGVySWR4OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICBpc0ZvcmNlRXhpdFByZVJlY29yZFVwZGF0ZSh0YXNrOiBHdWlUYXNrQmFzZSk6IGJvb2xlYW47XHJcblxyXG4gIGhhbmRsZUludGVybmFsRXZlbnRXaXRoVGFza0FuZEV2ZW50U3VidHlwZSh0YXNrOiBHdWlUYXNrQmFzZSwgZXZlbnRDb2RlOiBudW1iZXIsIGV2ZW50U3ViVHlwZTogRXZlbnRTdWJUeXBlKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhNZ0NvbnRyb2xCYXNlKGN0cmw6IE1nQ29udHJvbEJhc2UsIGV2ZW50Q29kZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRG9UYXNrTGV2ZWxSZWNvcmRTdWZmaXgodGFzazogVGFza0Jhc2UsIHJlZkRvU3VmZml4OiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8Ym9vbGVhbj4gO1xyXG5cclxuICBIYW5kbGVOb25QYXJrYWJsZUNvbnRyb2xzKGl0YXNrOiBJVGFzayk6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIEhhbmRsZVBhcmthYmlsaXR5T25Sb3dDaGFuZ2UoaXRhc2s6IElUYXNrKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRG9UYXNrTGV2ZWxSZWNvcmRQcmVmaXgodGFzazogR3VpVGFza0Jhc2UgKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgZ2V0UHJvY2Vzc2luZ1RvcE1vc3RFbmRUYXNrKCk6IGJvb2xlYW47XHJcblxyXG4gIGhhbmRsZU5vblJldmVyc2libGVFdmVudCh0YXNrOiBHdWlUYXNrQmFzZSwgZXZlbnRDb2RlOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICBoYW5kbGVFdmVudHMoYmFzZU1nRGF0YTogTUdEYXRhLCBldmVudHNUb0hhbmRsZUNudDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnRzKGhhbmRsZXJzVGFiOiBIYW5kbGVyc1RhYmxlLCBydEV2dDogUnVuVGltZUV2ZW50KTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnRzKGJhc2VNZ0RhdGFPckhhbmRsZXJzVGFiOiBhbnksIGV2ZW50c1RvSGFuZGxlQ250T3JSdEV2dDogYW55KTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgc2V0RXZlbnRTY29wZVRyYW5zKCk6IHZvaWQ7XHJcblxyXG4gIGlzRXZlbnRTY29wZVRyYW5zKCk6IGJvb2xlYW47XHJcblxyXG4gIGNsZWFyRXZlbnRTY29wZSgpOiB2b2lkO1xyXG5cclxuICBhZGRJbnRlcm5hbEV2ZW50V2l0aEl0YXNrQW5kQ29kZShpdGFzazogSVRhc2ssIGNvZGU6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIHNldFByb2Nlc3NpbmdUb3BNb3N0RW5kVGFzayhpblByb2Nlc3NpbmdUb3BNb3N0RW5kVGFzazogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gIE5vbkludGVyYWN0aXZlRXZlbnRzTG9vcChtZ0RhdGE6IE1HRGF0YSwgdGFza0Jhc2U6IEd1aVRhc2tCYXNlKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRXZlbnRzTG9vcChtZ0RhdGE6IE1HRGF0YSk6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIHNldElnbm9yZVVua25vd25BYm9ydCh2YWw6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuICBzZXRDb21wTWFpblByZ1RhYihjb21wTWFpblByZ1RhYmxlOiBDb21wTWFpblByZ1RhYmxlKTogdm9pZDtcclxuXHJcbiAgUHJvY2Vzc0Fib3J0aW5nRXJyb3IoZXg6IEFwcGxpY2F0aW9uRXhjZXB0aW9uKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgZ2V0QWxsb3dFdmVudHMoKTogRXZlbnRzQWxsb3dlZFR5cGU7XHJcblxyXG4gIHNldEFsbG93RXZlbnRzKEFsbG93RXZlbnRzOiBFdmVudHNBbGxvd2VkVHlwZSk6IHZvaWQ7XHJcblxyXG4gIHNldE5vbkludGVyYWN0aXZlQWxsb3dFdmVudHMoQWxsb3dFdmVudHM6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuICBnZXRQZW5kaW5nR3VpRXZlbnQoKTogYW55O1xyXG4gIHNldFBlbmRpbmdHdWlFdmVudChndWlFdmVudDogYW55ICk6IHZvaWQ7XHJcbiAgY2hlY2tBbmRTYXZlUm91dGVFdmVudElmQ3R4UmVtb3ZlZEZyb21TcnZyIChydEV2ZW50OiBhbnkpOiB2b2lkO1xyXG4gIENoZWNrQW5kU2hvd1NwaW5uZXIoc2hvdzogYm9vbGVhbik6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIFNwaW5uZXJTdG9wcGVkIDogU3ViamVjdDxudW1iZXI+O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { Char, Int32, List, NString } from "@magic-xpa/mscorelib";
|
|
2
|
+
import { ForceExit, InternalInterface, Priority, XMLConstants, XmlParser } from "@magic-xpa/utils";
|
|
3
|
+
import { GuiFieldBase, MgControlBase, Modifiers, PropInterface, } from "@magic-xpa/gui";
|
|
4
|
+
import { EventSubType } from "../enums";
|
|
5
|
+
import { Event } from "./Event";
|
|
6
|
+
import { ConstInterface } from "../ConstInterface";
|
|
7
|
+
import { ArgumentsList } from "../rt/ArgumentsList";
|
|
8
|
+
import { TaskBase } from "../tasks/TaskBase";
|
|
9
|
+
import { RunTimeEventBase } from "./RunTimeEventBase";
|
|
10
|
+
import { AccessHelper } from "../AccessHelper";
|
|
11
|
+
export class RunTimeEvent extends RunTimeEventBase {
|
|
12
|
+
constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
|
|
13
|
+
super();
|
|
14
|
+
this._controlsList = null;
|
|
15
|
+
this._direction = 0;
|
|
16
|
+
this._displayLine = Int32.MinValue;
|
|
17
|
+
this._eventSubType = EventSubType.Normal;
|
|
18
|
+
this._actEnableList = null;
|
|
19
|
+
this._argList = null;
|
|
20
|
+
this._ctrl = null;
|
|
21
|
+
this._dotNetObject = null;
|
|
22
|
+
this._eventFld = null;
|
|
23
|
+
this._fromServer = false;
|
|
24
|
+
this._guiTriggeredEvent = false;
|
|
25
|
+
this._immediate = false;
|
|
26
|
+
this._isIdleTimer = false;
|
|
27
|
+
this._isRealRefresh = true;
|
|
28
|
+
this._mgdId = 0;
|
|
29
|
+
this._routeParams = null;
|
|
30
|
+
this._mprgCreator = null;
|
|
31
|
+
this._priority = Priority.HIGH;
|
|
32
|
+
this._produceClick = false;
|
|
33
|
+
this._reversibleExit = true;
|
|
34
|
+
this._selectionEnd = 0;
|
|
35
|
+
this._selectionStart = 0;
|
|
36
|
+
this._sendAll = false;
|
|
37
|
+
this._task = null;
|
|
38
|
+
this._taskTag = null;
|
|
39
|
+
this._val = null;
|
|
40
|
+
this.IsSubTree = false;
|
|
41
|
+
this.IsFormFocus = false;
|
|
42
|
+
this.ActivatedFromMDIFrame = false;
|
|
43
|
+
this.PrgFlow = '\0';
|
|
44
|
+
this.CopyGlobalParams = false;
|
|
45
|
+
this.MainProgVars = null;
|
|
46
|
+
this.IgnoreSpecifiedControl = false;
|
|
47
|
+
this.LastFocusedVal = null;
|
|
48
|
+
if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase))
|
|
49
|
+
this.constructor_5(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
50
|
+
else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof MgControlBase))
|
|
51
|
+
this.constructor_6(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
52
|
+
else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase))
|
|
53
|
+
this.constructor_7(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
54
|
+
else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
|
|
55
|
+
this.constructor_8(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
56
|
+
else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
|
|
57
|
+
this.constructor_9(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
|
|
58
|
+
else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
|
|
59
|
+
this.constructor_10(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
60
|
+
else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof GuiFieldBase))
|
|
61
|
+
this.constructor_11(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
62
|
+
else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number))
|
|
63
|
+
this.constructor_12(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
64
|
+
else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
|
|
65
|
+
this.constructor_13(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
|
|
66
|
+
else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof List) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
|
|
67
|
+
this.constructor_14(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
|
|
68
|
+
else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Number))
|
|
69
|
+
this.constructor_15(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
70
|
+
else if (arguments.length === 6)
|
|
71
|
+
this.constructor_16(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
72
|
+
else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof Event) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof RunTimeEvent)) {
|
|
73
|
+
super.constructor_1(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
74
|
+
this.constructor_17(ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
|
|
75
|
+
}
|
|
76
|
+
else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
|
|
77
|
+
Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
|
|
78
|
+
}
|
|
79
|
+
set Control(value) {
|
|
80
|
+
this._ctrl = value;
|
|
81
|
+
}
|
|
82
|
+
set DisplayLine(value) {
|
|
83
|
+
this._displayLine = value;
|
|
84
|
+
}
|
|
85
|
+
get Control() {
|
|
86
|
+
return this._ctrl;
|
|
87
|
+
}
|
|
88
|
+
get ControlsList() {
|
|
89
|
+
return this._controlsList;
|
|
90
|
+
}
|
|
91
|
+
get Direction() {
|
|
92
|
+
return this._direction;
|
|
93
|
+
}
|
|
94
|
+
constructor_5(taskRef) {
|
|
95
|
+
this.init(taskRef);
|
|
96
|
+
}
|
|
97
|
+
constructor_6(taskRef, ctrlRef) {
|
|
98
|
+
this.constructor_5((ctrlRef !== null) ? ctrlRef.getForm().getTask() : taskRef);
|
|
99
|
+
this.Control = ctrlRef;
|
|
100
|
+
}
|
|
101
|
+
constructor_7(ctrlRef) {
|
|
102
|
+
this.constructor_6(null, ctrlRef);
|
|
103
|
+
if (ctrlRef !== null && super.getType() === Char.MinValue) {
|
|
104
|
+
let prop = ctrlRef.GetComputedProperty(PropInterface.PROP_TYPE_TRIGGER);
|
|
105
|
+
if (prop !== null) {
|
|
106
|
+
let xmlParser = new XmlParser(prop.GetComputedValue());
|
|
107
|
+
super.fillData(xmlParser, ctrlRef.getForm().getTask());
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
constructor_8(ctrlRef, guiTriggeredEvent) {
|
|
112
|
+
this.constructor_7(ctrlRef);
|
|
113
|
+
this._guiTriggeredEvent = guiTriggeredEvent;
|
|
114
|
+
if (guiTriggeredEvent) {
|
|
115
|
+
this._priority = Priority.LOW;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
constructor_9(ctrlRef, guiTriggeredEvent, ignoreSpecifiedControl) {
|
|
119
|
+
this.constructor_8(ctrlRef, guiTriggeredEvent);
|
|
120
|
+
this.IgnoreSpecifiedControl = ignoreSpecifiedControl;
|
|
121
|
+
}
|
|
122
|
+
constructor_10(taskref, guiTriggeredEvent) {
|
|
123
|
+
this.constructor_5(taskref);
|
|
124
|
+
this._guiTriggeredEvent = guiTriggeredEvent;
|
|
125
|
+
if (guiTriggeredEvent) {
|
|
126
|
+
this._priority = Priority.LOW;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
constructor_11(fldRef) {
|
|
130
|
+
this._eventFld = fldRef;
|
|
131
|
+
this.init((fldRef !== null) ? fldRef.getTask() : null);
|
|
132
|
+
}
|
|
133
|
+
constructor_12(ctrlRef, line) {
|
|
134
|
+
this.constructor_7(ctrlRef);
|
|
135
|
+
this._displayLine = line;
|
|
136
|
+
}
|
|
137
|
+
constructor_13(ctrlRef, line, guiTriggeredEvent) {
|
|
138
|
+
this.constructor_8(ctrlRef, guiTriggeredEvent);
|
|
139
|
+
this._displayLine = line;
|
|
140
|
+
}
|
|
141
|
+
constructor_14(ctrlRef, controlsList, guiTriggeredEvent) {
|
|
142
|
+
this.constructor_8(ctrlRef, guiTriggeredEvent);
|
|
143
|
+
this._controlsList = controlsList;
|
|
144
|
+
}
|
|
145
|
+
constructor_15(ctrlRef, direction) {
|
|
146
|
+
this.constructor_8(ctrlRef, true);
|
|
147
|
+
this._direction = direction;
|
|
148
|
+
}
|
|
149
|
+
constructor_16(ctrlRef) {
|
|
150
|
+
this.constructor_8(ctrlRef, true);
|
|
151
|
+
}
|
|
152
|
+
constructor_17(rtEvt) {
|
|
153
|
+
this._taskTag = rtEvt._taskTag;
|
|
154
|
+
this._task = rtEvt._task;
|
|
155
|
+
this.Control = rtEvt.Control;
|
|
156
|
+
this._eventFld = rtEvt._eventFld;
|
|
157
|
+
this._mgdId = rtEvt._mgdId;
|
|
158
|
+
this._displayLine = rtEvt._displayLine;
|
|
159
|
+
this._reversibleExit = rtEvt._reversibleExit;
|
|
160
|
+
this._argList = rtEvt._argList;
|
|
161
|
+
this._immediate = rtEvt._immediate;
|
|
162
|
+
this._mprgCreator = rtEvt._mprgCreator;
|
|
163
|
+
this._priority = rtEvt._priority;
|
|
164
|
+
this._guiTriggeredEvent = rtEvt._guiTriggeredEvent;
|
|
165
|
+
this._isIdleTimer = rtEvt._isIdleTimer;
|
|
166
|
+
this._val = rtEvt._val;
|
|
167
|
+
this._selectionStart = rtEvt._selectionStart;
|
|
168
|
+
this._selectionEnd = rtEvt._selectionEnd;
|
|
169
|
+
this._controlsList = rtEvt._controlsList;
|
|
170
|
+
this._direction = rtEvt._direction;
|
|
171
|
+
this._dotNetObject = rtEvt._dotNetObject;
|
|
172
|
+
this.LastFocusedVal = rtEvt.LastFocusedVal;
|
|
173
|
+
this._routeParams = rtEvt._routeParams;
|
|
174
|
+
}
|
|
175
|
+
CompareTo(obj) {
|
|
176
|
+
let otherTimeEvent = obj;
|
|
177
|
+
let otherPriority = otherTimeEvent._priority;
|
|
178
|
+
let result = otherPriority - this._priority;
|
|
179
|
+
if (result === 0)
|
|
180
|
+
result = (this._timestamp - otherTimeEvent._timestamp);
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
replicate() {
|
|
184
|
+
let runTimeEvent = new RunTimeEvent(this);
|
|
185
|
+
runTimeEvent.setTimestamp();
|
|
186
|
+
return runTimeEvent;
|
|
187
|
+
}
|
|
188
|
+
init(taskRef) {
|
|
189
|
+
this._task = (taskRef || AccessHelper.mgDataTable.getCurrMGData().getFirstTask());
|
|
190
|
+
this._taskTag = ((this._task === null) ? "" : this._task.getTaskTag());
|
|
191
|
+
this._mprgCreator = null;
|
|
192
|
+
}
|
|
193
|
+
convertParamsToArgs() {
|
|
194
|
+
this._argList = new ArgumentsList();
|
|
195
|
+
this._argList.buildListFromParams(this._parameters, this._paramAttrs, this._paramVals, this._paramNulls);
|
|
196
|
+
this._parameters = 0;
|
|
197
|
+
this._paramAttrs = null;
|
|
198
|
+
this._paramVals = null;
|
|
199
|
+
this._paramNulls = null;
|
|
200
|
+
}
|
|
201
|
+
getTask() {
|
|
202
|
+
super.findUserEvent();
|
|
203
|
+
return this._task;
|
|
204
|
+
}
|
|
205
|
+
setTask(taskRef) {
|
|
206
|
+
this._task = taskRef;
|
|
207
|
+
if (this._task !== null)
|
|
208
|
+
this._taskTag = this._task.getTaskTag();
|
|
209
|
+
else
|
|
210
|
+
this._taskTag = null;
|
|
211
|
+
}
|
|
212
|
+
setTimer(sec, mgdID, isIdle) {
|
|
213
|
+
this._type = ConstInterface.EVENT_TYPE_TIMER;
|
|
214
|
+
this._seconds = sec;
|
|
215
|
+
this._mgdId = mgdID;
|
|
216
|
+
this._isIdleTimer = isIdle;
|
|
217
|
+
}
|
|
218
|
+
setClose(mgdID, closeActCode) {
|
|
219
|
+
super.setInternal(closeActCode);
|
|
220
|
+
this._mgdId = mgdID;
|
|
221
|
+
this._guiTriggeredEvent = true;
|
|
222
|
+
}
|
|
223
|
+
getDisplayLine() {
|
|
224
|
+
return this._displayLine;
|
|
225
|
+
}
|
|
226
|
+
getMgdID() {
|
|
227
|
+
return this._mgdId;
|
|
228
|
+
}
|
|
229
|
+
getBrkLevel(flowMonitor) {
|
|
230
|
+
if (arguments.length === 0) {
|
|
231
|
+
return this.getBrkLevel_00();
|
|
232
|
+
}
|
|
233
|
+
return this.getBrkLevel_01(flowMonitor);
|
|
234
|
+
}
|
|
235
|
+
getBrkLevel_00() {
|
|
236
|
+
let level = super.getBrkLevel();
|
|
237
|
+
if (this._type === ConstInterface.EVENT_TYPE_INTERNAL) {
|
|
238
|
+
switch (this.InternalEvent) {
|
|
239
|
+
case InternalInterface.MG_ACT_CTRL_PREFIX:
|
|
240
|
+
case InternalInterface.MG_ACT_CTRL_SUFFIX:
|
|
241
|
+
case InternalInterface.MG_ACT_CTRL_VERIFICATION:
|
|
242
|
+
level += this.Control.Name;
|
|
243
|
+
break;
|
|
244
|
+
case InternalInterface.MG_ACT_VARIABLE:
|
|
245
|
+
level += this._eventFld.getVarName();
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return level;
|
|
250
|
+
}
|
|
251
|
+
getBrkLevel_01(flowMonitor) {
|
|
252
|
+
return super.getBrkLevel(flowMonitor);
|
|
253
|
+
}
|
|
254
|
+
setCtrl(newCtrl) {
|
|
255
|
+
this._ctrl = newCtrl;
|
|
256
|
+
}
|
|
257
|
+
setNonReversibleExit() {
|
|
258
|
+
this._reversibleExit = false;
|
|
259
|
+
}
|
|
260
|
+
reversibleExit() {
|
|
261
|
+
return this._reversibleExit;
|
|
262
|
+
}
|
|
263
|
+
buildXML(message) {
|
|
264
|
+
message.Append("\n " + XMLConstants.TAG_OPEN + ConstInterface.MG_TAG_EVENT);
|
|
265
|
+
if (this._type !== Char.MinValue)
|
|
266
|
+
message.Append(" " + ConstInterface.MG_ATTR_EVENTTYPE + "=\"" + this._type + "\"");
|
|
267
|
+
if (this._type === ConstInterface.EVENT_TYPE_SYSTEM && this.kbdItm != null) {
|
|
268
|
+
let modifier = this.kbdItm.getModifier();
|
|
269
|
+
if (modifier !== Modifiers.MODIFIER_NONE)
|
|
270
|
+
message.Append(" " + ConstInterface.MG_ATTR_MODIFIER + "=\"" + modifier + "\"");
|
|
271
|
+
message.Append(" " + ConstInterface.MG_ATTR_KEYCODE + "=\"" + this.kbdItm.getKeyCode() + "\"");
|
|
272
|
+
}
|
|
273
|
+
if (this.InternalEvent !== Int32.MinValue)
|
|
274
|
+
message.Append(" " + ConstInterface.MG_ATTR_INTERNALEVENT + "=\"" + this.InternalEvent + "\"");
|
|
275
|
+
if (this._seconds !== Int32.MinValue)
|
|
276
|
+
message.Append(" " + ConstInterface.MG_ATTR_SECONDS + "=\"" + this._seconds + "\"");
|
|
277
|
+
if (this.Exp != null)
|
|
278
|
+
message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this.Exp.getId() + "\"");
|
|
279
|
+
if (this._forceExit !== ForceExit.None)
|
|
280
|
+
message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this._forceExit + "\"");
|
|
281
|
+
if (this.UserEvt != null)
|
|
282
|
+
message.Append(" " + ConstInterface.MG_ATTR_USER + "=\"" + this.UserEvtTaskTag + "," + this._userEvtIdx + "\"");
|
|
283
|
+
message.Append(XMLConstants.TAG_TERM);
|
|
284
|
+
}
|
|
285
|
+
getArgList() {
|
|
286
|
+
return this._argList;
|
|
287
|
+
}
|
|
288
|
+
setArgList(aArgList) {
|
|
289
|
+
let result = this._argList === null;
|
|
290
|
+
this._argList = aArgList;
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
setRouteParamList(routeParams) {
|
|
294
|
+
this._routeParams = routeParams;
|
|
295
|
+
}
|
|
296
|
+
getRouteParamList() {
|
|
297
|
+
return this._routeParams;
|
|
298
|
+
}
|
|
299
|
+
setImmediate(val) {
|
|
300
|
+
this._immediate = val;
|
|
301
|
+
}
|
|
302
|
+
isImmediate() {
|
|
303
|
+
return this._immediate;
|
|
304
|
+
}
|
|
305
|
+
setMainPrgCreator(src) {
|
|
306
|
+
this._mprgCreator = src;
|
|
307
|
+
}
|
|
308
|
+
getMainPrgCreator() {
|
|
309
|
+
return this._mprgCreator;
|
|
310
|
+
}
|
|
311
|
+
setIsRealRefresh(val) {
|
|
312
|
+
this._isRealRefresh = val;
|
|
313
|
+
}
|
|
314
|
+
getRefreshType() {
|
|
315
|
+
return this._isRealRefresh;
|
|
316
|
+
}
|
|
317
|
+
setFromServer() {
|
|
318
|
+
this._fromServer = true;
|
|
319
|
+
}
|
|
320
|
+
resetFromServer() {
|
|
321
|
+
this._fromServer = false;
|
|
322
|
+
}
|
|
323
|
+
isFromServer() {
|
|
324
|
+
return this._fromServer;
|
|
325
|
+
}
|
|
326
|
+
isQuit() {
|
|
327
|
+
return this._eventSubType === EventSubType.CancelIsQuit;
|
|
328
|
+
}
|
|
329
|
+
RollbackInCancel() {
|
|
330
|
+
return this._eventSubType !== EventSubType.CancelWithNoRollback;
|
|
331
|
+
}
|
|
332
|
+
ExitDueToError() {
|
|
333
|
+
return this._eventSubType === EventSubType.ExitDueToError;
|
|
334
|
+
}
|
|
335
|
+
RtViewRefreshUseCurrentRow() {
|
|
336
|
+
return this._eventSubType === EventSubType.RtRefreshViewUseCurrentRow;
|
|
337
|
+
}
|
|
338
|
+
SetEventSubType(eventSubType) {
|
|
339
|
+
this._eventSubType = eventSubType;
|
|
340
|
+
}
|
|
341
|
+
getFld() {
|
|
342
|
+
return this._eventFld;
|
|
343
|
+
}
|
|
344
|
+
isGuiTriggeredEvent() {
|
|
345
|
+
return this._guiTriggeredEvent;
|
|
346
|
+
}
|
|
347
|
+
getPriority() {
|
|
348
|
+
return this._priority;
|
|
349
|
+
}
|
|
350
|
+
setPriority(priority) {
|
|
351
|
+
this._priority = priority;
|
|
352
|
+
}
|
|
353
|
+
isIdleTimer() {
|
|
354
|
+
return this._isIdleTimer;
|
|
355
|
+
}
|
|
356
|
+
getValue() {
|
|
357
|
+
return this._val;
|
|
358
|
+
}
|
|
359
|
+
setValue(val) {
|
|
360
|
+
this._val = val;
|
|
361
|
+
}
|
|
362
|
+
getStartSelection() {
|
|
363
|
+
return this._selectionStart;
|
|
364
|
+
}
|
|
365
|
+
getEndSelection() {
|
|
366
|
+
return this._selectionEnd;
|
|
367
|
+
}
|
|
368
|
+
setEditParms(start, end, text) {
|
|
369
|
+
this._selectionStart = start;
|
|
370
|
+
this._selectionEnd = end;
|
|
371
|
+
this.setValue(text);
|
|
372
|
+
}
|
|
373
|
+
isProduceClick() {
|
|
374
|
+
return this._produceClick;
|
|
375
|
+
}
|
|
376
|
+
setProduceClick(produceClick) {
|
|
377
|
+
this._produceClick = produceClick;
|
|
378
|
+
}
|
|
379
|
+
setActEnableList(actList) {
|
|
380
|
+
this._actEnableList = actList;
|
|
381
|
+
}
|
|
382
|
+
getActEnableList() {
|
|
383
|
+
return this._actEnableList;
|
|
384
|
+
}
|
|
385
|
+
isSendAll() {
|
|
386
|
+
return this._sendAll;
|
|
387
|
+
}
|
|
388
|
+
setSendAll(sendAll) {
|
|
389
|
+
this._sendAll = sendAll;
|
|
390
|
+
}
|
|
391
|
+
isBlockedByModalWindow(activeWindowData) {
|
|
392
|
+
if (activeWindowData.IsModal) {
|
|
393
|
+
let eventTask = this.getTask();
|
|
394
|
+
let baseTask = activeWindowData.getTask(0);
|
|
395
|
+
if (eventTask !== baseTask && baseTask.isDescendentOf(eventTask))
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
toString() {
|
|
401
|
+
return NString.Format("{{RTEvent {0} ({1}), type {2}{3}}}", [
|
|
402
|
+
this.getBrkLevel(), this.InternalEvent, this._type, (this._task === null) ? "" : (" on " + this._task)
|
|
403
|
+
]);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9SdW5UaW1lRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBa0IsYUFBYSxFQUFFLFNBQVMsRUFBWSxhQUFhLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBNEZoRCxZQUFZLHNDQUEyQyxFQUFFLDJGQUFpRyxFQUFFLGtGQUF3RixFQUFFLFNBQWtCLEVBQUUsS0FBYyxFQUFFLE1BQWU7UUFDdlMsS0FBSyxFQUFFLENBQUM7UUF2RkYsa0JBQWEsR0FBd0IsSUFBSSxDQUFDO1FBQzFDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsaUJBQVksR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFD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RCxJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLG9DQUFvQyxFQUFFO1lBQzFELElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDdkcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFyLCBJQ29tcGFyYWJsZSwgSW50MzIsIExpc3QsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0ZvcmNlRXhpdCwgSW50ZXJuYWxJbnRlcmZhY2UsIFByaW9yaXR5LCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtHdWlGaWVsZEJhc2UsIExhc3RGb2N1c2VkVmFsLCBNZ0NvbnRyb2xCYXNlLCBNb2RpZmllcnMsIFByb3BlcnR5LCBQcm9wSW50ZXJmYWNlLH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7RXZlbnRTdWJUeXBlfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuaW1wb3J0IHtFdmVudH0gZnJvbSBcIi4vRXZlbnRcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJndW1lbnRzTGlzdH0gZnJvbSBcIi4uL3J0L0FyZ3VtZW50c0xpc3RcIjtcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gXCIuLi90YXNrcy9NR0RhdGFcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50QmFzZX0gZnJvbSBcIi4vUnVuVGltZUV2ZW50QmFzZVwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJ1bnRpbWUgZXZlbnRzXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSdW5UaW1lRXZlbnQgZXh0ZW5kcyBSdW5UaW1lRXZlbnRCYXNlIGltcGxlbWVudHMgSUNvbXBhcmFibGUge1xyXG5cclxuICAvLyBBVFRFTlRJT04gIVxyXG4gIC8vIGFueSBjaGFuZ2UgdG8gdGhlIG1lbWJlciB2YXJpYWJsZXMgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNoYW5nZSB0byB0aGUgQ1RPUiB0aGF0XHJcbiAgLy8gZ2V0cyBvbmUgYXJndW1lbnQgb2YgdGhlIHR5cGUgJ0V2ZW50JyBhbmQgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdSdW5UaW1lRXZlbnQnLlxyXG5cclxuICBwcml2YXRlIF9jb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsOyAvLyBsaXN0IG9mIGNvbnRyb2xzXHJcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2Rpc3BsYXlMaW5lOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRTdWJUeXBlOiBFdmVudFN1YlR5cGUgPSBFdmVudFN1YlR5cGUuTm9ybWFsO1xyXG5cclxuICBwcml2YXRlIF9hY3RFbmFibGVMaXN0OiBudW1iZXJbXSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYXJnTGlzdDogQXJndW1lbnRzTGlzdCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7IC8vIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkXHJcbiAgcHJpdmF0ZSBfZG90TmV0T2JqZWN0OiBhbnkgPSBudWxsOyAvLyBvYmplY3Qga2V5IG9mIGEgY29udHJvbFxyXG4gIHByaXZhdGUgX2V2ZW50RmxkOiBHdWlGaWVsZEJhc2UgPSBudWxsOyAvLyBGb3IgdmFyaWFibGUgZXZlbnRzIC0gdGhlIGZpZWxkIG9uIHdoaWNoIHRoZSBjb250cm9sIHdhcyB0cmlnZ2VyZWRcclxuICBwcml2YXRlIF9mcm9tU2VydmVyOiBib29sZWFuID0gZmFsc2U7ICAvLyBpZiBUUlVFLCB0aGUgZXZlbnQgd2FzIGNyZWF0ZWQgb24gdGhlIHNlcnZlciBhbmQgc2VudCB0byB0aGUgY2xpZW50XHJcbiAgcHJpdmF0ZSBfZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgdHJ1ZSwgdGhlIGV2ZW50IHdhcyB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsIChpbmNsdWRlcyB0aW1lciBldmVudHMpXHJcbiAgcHJpdmF0ZSBfaW1tZWRpYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNJZGxlVGltZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1JlYWxSZWZyZXNoOiBib29sZWFuID0gdHJ1ZTsgLy8gdXNlZCBvbmx5IGluIE1HX0FDVF9WSUVXX1JFRlJFU0ggZXZlbnRzIHRvIGluZGljYXRlIGEgcmVmcmVzaCBpbnZva2VkIFNwZWNpZmljYWxseSBieSB0aGUgdXNlclxyXG4gIHByaXZhdGUgX21nZElkOiBudW1iZXIgPSAwOyAvLyBtZ2RhdGEgaWQgdGhhdCBzZW50IHRpbWVyIGV2ZW50XHJcbiAgcHJpdmF0ZSBfcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcblxyXG4gIC8vIFVzZWQgb25seSBpZiAndGFzaycgaXMgYSBtYWluIHByZy4gQSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2hcclxuICAvLyBjYXVzZWQgdGhlIG1haW4gcHJnIHRvIGJlY29tZSBhY3RpdmUgaW4gdGhlIHJ1bnRpbWUuXHJcbiAgcHJpdmF0ZSBfbXByZ0NyZWF0b3I6IFRhc2tCYXNlID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfcHJpb3JpdHk6IFByaW9yaXR5ID0gUHJpb3JpdHkuSElHSDsgLy8gcHJpb3JpdHkgb2YgZXZlbnQgZm9yIGV2ZW50cyBxdWV1ZVxyXG5cclxuICBwcml2YXRlIF9wcm9kdWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgVFJVRSwgdGhlIGV2ZW50IHNob3VsZCBwcm9kdWNlIGNsaWNrXHJcbiAgcHJpdmF0ZSBfcmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3Rpb25FbmQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uU3RhcnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc2VuZEFsbDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdGhpcyBmbGFnIGlzIHNldCBmb3Igc2VuZGluZyBhbGwgcmVjb3Jkc1xyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2tCYXNlID0gbnVsbDsgLy8gYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICBwcml2YXRlIF90YXNrVGFnOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFzayBpZCBvbiB3aGljaCB0aGUgZXZlbnQgd2FzIHRyaWdnZXJlZFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDtcclxuXHJcbiAgSXNTdWJUcmVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNGb3JtRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQWN0aXZhdGVkRnJvbU1ESUZyYW1lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgUHJnRmxvdzogc3RyaW5nID0gJ1xcMCc7XHJcbiAgQ29weUdsb2JhbFBhcmFtczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE1haW5Qcm9nVmFyczogTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuXHJcblxyXG4gIHNldCBDb250cm9sKHZhbHVlOiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICB0aGlzLl9jdHJsID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgRGlzcGxheUxpbmUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCB0aGUgY29udHJvbCBzZXQgb24gdGhlIGV2ZW50IGJlIGlnbm9yZWQuIGlmIHRydWUsIHdoZW4gcHJvY2Vzc2luZyB0aGUgZXZlbnQgd2Ugc2hvdWxkXHJcbiAgLy8vIHVzZSB0aGUgY3VycmVudCBmb2N1c2VkIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgb25lIHNldCBvbiB0aGUgZXZlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIExhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCA9IG51bGw7IC8vIHZhbHVlIG9mIGxhc3QgZWRpdGVkIGNvbnRyb2xcclxuXHJcbiAgZ2V0IENvbnRyb2xzTGlzdCgpOiBMaXN0PE1nQ29udHJvbEJhc2U+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXQgRGlyZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IodGFza1JlZjogVGFza0Jhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tSZWY6IFRhc2tCYXNlLCBjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4sIGlnbm9yZVNwZWNpZmllZENvbnRyb2w6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tyZWY6IFRhc2tCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoZmxkUmVmOiBHdWlGaWVsZEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29udHJvbHNMaXN0OiBMaXN0PE1nQ29udHJvbEJhc2U+LCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZGlyZWN0aW9uOiBudW1iZXIsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29sdW1uSGVhZGVyOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoZXZ0OiBFdmVudCwgcnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IocnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQ6IGFueSwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaz86IGFueSwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZT86IGFueSwgeU9yQ3RsSWR4PzogbnVtYmVyLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzUodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl82KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzcodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfOCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl85KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBHdWlGaWVsZEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzExKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IE51bWJlcikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTIodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMyh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaywgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgTGlzdCkgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTQodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2ssIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE1KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA2KVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE2KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIEV2ZW50KSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgUnVuVGltZUV2ZW50KSkge1xyXG4gICAgICAvLyBDYWxsIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSB0aGUgZXZlbnQgdHlwZSBhbmQgdGhlIG90aGVyIGZpZWxkc1xyXG4gICAgICBzdXBlci5jb25zdHJ1Y3Rvcl8xKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNyggY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudClcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSB0YXNrPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzUodGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdCh0YXNrUmVmKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsUmVmXCI+cmVmZXJlbmNlIHRvIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNih0YXNrUmVmOiBUYXNrQmFzZSwgY3RybFJlZjogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl81KChjdHJsUmVmICE9PSBudWxsKSA/ICg8VGFza0Jhc2U+Y3RybFJlZi5nZXRGb3JtKCkuZ2V0VGFzaygpKSA6IHRhc2tSZWYpO1xyXG4gICAgdGhpcy5Db250cm9sID0gY3RybFJlZjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzYobnVsbCwgY3RybFJlZik7XHJcbiAgICBpZiAoY3RybFJlZiAhPT0gbnVsbCAmJiBzdXBlci5nZXRUeXBlKCkgPT09IENoYXIuTWluVmFsdWUpIC8vIG5vdCBpbml0aWFsaXplZCB5ZXRcclxuICAgIHtcclxuICAgICAgLy8gb24gdGhlIGZpcnN0IHRpbWUsIGlmIGEgVFJJR0dFUiBwcm9wZXJ0eSBleGlzdHMsIHBhcnNlIHRoZSBldmVudCBhbmQgYWRkIGl0IHRvIHRoZSBjb250cm9sXHJcbiAgICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IGN0cmxSZWYuR2V0Q29tcHV0ZWRQcm9wZXJ0eShQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUklHR0VSKTtcclxuICAgICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgeG1sUGFyc2VyOiBYbWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKHByb3AuR2V0Q29tcHV0ZWRWYWx1ZSgpKTtcclxuICAgICAgICBzdXBlci5maWxsRGF0YSh4bWxQYXJzZXIsIDxUYXNrQmFzZT5jdHJsUmVmLmdldEZvcm0oKS5nZXRUYXNrKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl84KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzcoY3RybFJlZik7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IGd1aVRyaWdnZXJlZEV2ZW50O1xyXG4gICAgaWYgKGd1aVRyaWdnZXJlZEV2ZW50KSB7XHJcbiAgICAgIC8vIEV2ZW50cyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsLCBtdXN0IGJlIGV4ZWN1dGVkIGFmdGVyIGFsbFxyXG4gICAgICAvLyBvdGhlciBldmVudHMsIHRodXMgdGhheSBoYXZlIGxvdyBwcmlvcml0eTtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl85KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5JZ25vcmVTcGVjaWZpZWRDb250cm9sID0gaWdub3JlU3BlY2lmaWVkQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tyZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMCh0YXNrcmVmOiBUYXNrQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNSh0YXNrcmVmKTtcclxuICAgIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50ID0gZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgICBpZiAoZ3VpVHJpZ2dlcmVkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZmllbGQ8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTEoZmxkUmVmOiBHdWlGaWVsZEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gZmxkUmVmO1xyXG4gICAgdGhpcy5pbml0KChmbGRSZWYgIT09IG51bGwpID8gKDxUYXNrQmFzZT5mbGRSZWYuZ2V0VGFzaygpKSA6IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFJlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cmVkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+dGhlIGxpbmUgb2YgdGhlIHRhYmxlIGluIHdoaWNoIHRoZSBjb250cm9sIGlzIGxvY2F0ZWQgPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEyKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl83KGN0cmxSZWYpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNChjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBjb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4sIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fY29udHJvbHNMaXN0ID0gY29udHJvbHNMaXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNShjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gICAgdGhpcy5fZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlICk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgLSBjcmVhdGVzIGEgbmV3IHJ1biB0aW1lIGV2ZW50IGJ5IGNvcHlpbmcgdGhlIG1lbWJlciB2YXJpYWJsZXMgb2YgYSBnaXZlblxyXG4gIC8vLyAgIGV2ZW50IGFuZCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBvZiBhIGdpdmVuIHJ1biB0aW1lIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJydEV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBydW4gdGltZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNyggcnRFdnQ6IFJ1blRpbWVFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza1RhZyA9IHJ0RXZ0Ll90YXNrVGFnO1xyXG4gICAgdGhpcy5fdGFzayA9IHJ0RXZ0Ll90YXNrO1xyXG4gICAgdGhpcy5Db250cm9sID0gcnRFdnQuQ29udHJvbDtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gcnRFdnQuX2V2ZW50RmxkO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBydEV2dC5fbWdkSWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IHJ0RXZ0Ll9kaXNwbGF5TGluZTtcclxuICAgIHRoaXMuX3JldmVyc2libGVFeGl0ID0gcnRFdnQuX3JldmVyc2libGVFeGl0O1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IHJ0RXZ0Ll9hcmdMaXN0O1xyXG4gICAgdGhpcy5faW1tZWRpYXRlID0gcnRFdnQuX2ltbWVkaWF0ZTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gcnRFdnQuX21wcmdDcmVhdG9yO1xyXG4gICAgdGhpcy5fcHJpb3JpdHkgPSBydEV2dC5fcHJpb3JpdHk7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IHJ0RXZ0Ll9ndWlUcmlnZ2VyZWRFdmVudDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gcnRFdnQuX2lzSWRsZVRpbWVyO1xyXG4gICAgdGhpcy5fdmFsID0gcnRFdnQuX3ZhbDtcclxuICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0ID0gcnRFdnQuX3NlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gcnRFdnQuX3NlbGVjdGlvbkVuZDtcclxuICAgIHRoaXMuX2NvbnRyb2xzTGlzdCA9IHJ0RXZ0Ll9jb250cm9sc0xpc3Q7XHJcbiAgICB0aGlzLl9kaXJlY3Rpb24gPSBydEV2dC5fZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5fZG90TmV0T2JqZWN0ID0gcnRFdnQuX2RvdE5ldE9iamVjdDtcclxuICAgIHRoaXMuTGFzdEZvY3VzZWRWYWwgPSBydEV2dC5MYXN0Rm9jdXNlZFZhbDtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcnRFdnQuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbXBsZW1lbnRpbmcgY29tcGFyYXRvciwgdGhlIGV2ZW50cyBhcmUgY29tcGFyZWQgYnkgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENvbXBhcmVUbyhvYmo6IGFueSk6IG51bWJlciB7XHJcbiAgICBsZXQgb3RoZXJUaW1lRXZlbnQ6IFJ1blRpbWVFdmVudCA9IDxSdW5UaW1lRXZlbnQ+b2JqO1xyXG4gICAgbGV0IG90aGVyUHJpb3JpdHk6IFByaW9yaXR5ID0gb3RoZXJUaW1lRXZlbnQuX3ByaW9yaXR5O1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gb3RoZXJQcmlvcml0eSAtIHRoaXMuX3ByaW9yaXR5O1xyXG4gICAgaWYgKHJlc3VsdCA9PT0gMClcclxuICAgICAgcmVzdWx0ID0gPG51bWJlcj4odGhpcy5fdGltZXN0YW1wIC0gb3RoZXJUaW1lRXZlbnQuX3RpbWVzdGFtcCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgYSByZXBsaWNhIG9mIHRoaXMgcnVudGltZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVwbGljYXRlKCk6IFJ1blRpbWVFdmVudCB7XHJcbiAgICBsZXQgcnVuVGltZUV2ZW50OiBSdW5UaW1lRXZlbnQgPSBuZXcgUnVuVGltZUV2ZW50KHRoaXMpO1xyXG4gICAgcnVuVGltZUV2ZW50LnNldFRpbWVzdGFtcCgpO1xyXG4gICAgcmV0dXJuIHJ1blRpbWVFdmVudDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGhlbHBlciBtZXRob2QgdGhhdCBkb2VzIHNvbWUgY29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBzb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgaW5pdCh0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFzayA9ICh0YXNrUmVmIHx8ICg8TUdEYXRhPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkpLmdldEZpcnN0VGFzaygpKTtcclxuICAgIHRoaXMuX3Rhc2tUYWcgPSAoKHRoaXMuX3Rhc2sgPT09IG51bGwpID8gXCJcIiA6IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpKTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb252ZXJ0cyBwYXJhbWV0ZXJzIHRvIGFyZ3VtZW50IGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnZlcnRQYXJhbXNUb0FyZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hcmdMaXN0ID0gbmV3IEFyZ3VtZW50c0xpc3QoKTtcclxuICAgIHRoaXMuX2FyZ0xpc3QuYnVpbGRMaXN0RnJvbVBhcmFtcyh0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9wYXJhbUF0dHJzLCB0aGlzLl9wYXJhbVZhbHMsIHRoaXMuX3BhcmFtTnVsbHMpO1xyXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IDA7XHJcbiAgICB0aGlzLl9wYXJhbUF0dHJzID0gbnVsbDtcclxuICAgIHRoaXMuX3BhcmFtVmFscyA9IG51bGw7XHJcbiAgICB0aGlzLl9wYXJhbU51bGxzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgc3VwZXIuZmluZFVzZXJFdmVudCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFUYXNrXCI+LSByZWZlcmVuY2UgdG8gYSB0YXNrPC9wYXJhbT5cclxuICBzZXRUYXNrKHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrID0gdGFza1JlZjtcclxuXHJcbiAgICBpZiAodGhpcy5fdGFzayAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fdGFza1RhZyA9IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl90YXNrVGFnID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBUaW1lciBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+dGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciB0aGlzIGV2ZW50czwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJudW1iZXJXbmRcIj50aGUgbWdkYXRhIElEIGZvciB0aGUgZXZlbnQ8L3BhcmFtPlxyXG4gIHNldFRpbWVyKHNlYzogbnVtYmVyLCBtZ2RJRDogbnVtYmVyLCBpc0lkbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSIC8qJ1QnKi87XHJcbiAgICB0aGlzLl9zZWNvbmRzID0gc2VjO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBtZ2RJRDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gaXNJZGxlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdkSURcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNsb3NlQWN0Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzZXRDbG9zZShtZ2RJRDogbnVtYmVyLCBjbG9zZUFjdENvZGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc3VwZXIuc2V0SW50ZXJuYWwoY2xvc2VBY3RDb2RlKTtcclxuICAgIHRoaXMuX21nZElkID0gbWdkSUQ7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBsaW5lIGluIHRhYmxlIG9mIGNvbnRyb2wgaW4gYSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgbGluZSBudW1iZXI8L3JldHVybnM+XHJcbiAgZ2V0RGlzcGxheUxpbmUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TGluZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHdpbmRvdyAoZm9yIHRpbWVyIGV2ZW50cylcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1nZElEKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWdkSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0QnJrTGV2ZWwoKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nO1xyXG4gIGdldEJya0xldmVsKGZsb3dNb25pdG9yPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbF8wMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMDEoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxldmVsOiBzdHJpbmcgPSBzdXBlci5nZXRCcmtMZXZlbCgpO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLkludGVybmFsRXZlbnQpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGxldmVsICs9IHRoaXMuQ29udHJvbC5OYW1lO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU6XHJcbiAgICAgICAgICBsZXZlbCArPSB0aGlzLl9ldmVudEZsZC5nZXRWYXJOYW1lKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wMShmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3VwZXIuZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBuZXcgY29udHJvbCBmb3IgdGhlIHJ1bnRpbWUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3Q3RybFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgY29udHJvbCA8L3BhcmFtPlxyXG4gIHNldEN0cmwobmV3Q3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3RybCA9IG5ld0N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZyB0byBmYWxzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0Tm9uUmV2ZXJzaWJsZUV4aXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXZlcnNpYmxlRXhpdCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSByZXZlcnNpYmxlIGV4aXQgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmV2ZXJzaWJsZUV4aXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmV2ZXJzaWJsZUV4aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIEV2ZW50IHN0cmluZyBmb3IgU2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoXCJcXG4gICBcIiArIFhNTENvbnN0YW50cy5UQUdfT1BFTiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENoYXIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEUgKyBcIj1cXFwiXCIgKyB0aGlzLl90eXBlICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSAmJiB0aGlzLmtiZEl0bSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBtb2RpZmllcjogTW9kaWZpZXJzID0gdGhpcy5rYmRJdG0uZ2V0TW9kaWZpZXIoKTtcclxuICAgICAgaWYgKG1vZGlmaWVyICE9PSBNb2RpZmllcnMuTU9ESUZJRVJfTk9ORSlcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTU9ESUZJRVIgKyBcIj1cXFwiXCIgKyBtb2RpZmllciArIFwiXFxcIlwiKTtcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREUgKyBcIj1cXFwiXCIgKyB0aGlzLmtiZEl0bS5nZXRLZXlDb2RlKCkgKyBcIlxcXCJcIik7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5JbnRlcm5hbEV2ZW50ICE9PSBJbnQzMi5NaW5WYWx1ZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0lOVEVSTkFMRVZFTlQgKyBcIj1cXFwiXCIgKyB0aGlzLkludGVybmFsRXZlbnQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fc2Vjb25kcyAhPT0gSW50MzIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TRUNPTkRTICsgXCI9XFxcIlwiICsgdGhpcy5fc2Vjb25kcyArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLkV4cCAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0VYUCArIFwiPVxcXCJcIiArIHRoaXMuRXhwLmdldElkKCkgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5fZm9yY2VFeGl0ICE9PSBGb3JjZUV4aXQuTm9uZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9FWFAgKyBcIj1cXFwiXCIgKyA8c3RyaW5nPnRoaXMuX2ZvcmNlRXhpdCArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLlVzZXJFdnQgIT0gbnVsbClcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRVIgKyBcIj1cXFwiXCIgKyB0aGlzLlVzZXJFdnRUYXNrVGFnICsgXCIsXCIgKyB0aGlzLl91c2VyRXZ0SWR4ICsgXCJcXFwiXCIpO1xyXG5cclxuICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5UQUdfVEVSTSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhcmdMaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBhcmdMaXN0PC9yZXR1cm5zPlxyXG4gIGdldEFyZ0xpc3QoKTogQXJndW1lbnRzTGlzdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJnTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldEFyZ0xpc3QoYUFyZ0xpc3Q6IEFyZ3VtZW50c0xpc3QpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0aGlzLl9hcmdMaXN0ID09PSBudWxsO1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IGFBcmdMaXN0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYUFyZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHNldFJvdXRlUGFyYW1MaXN0KHJvdXRlUGFyYW1zOiBMaXN0PGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXRSb3V0ZVBhcmFtTGlzdCgpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIHZhbHVlIHRvIHRoZSBpbW1lZGlhdGUgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj50aGUgdmFsdWUgdG8gdXNlPC9wYXJhbT5cclxuICBzZXRJbW1lZGlhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbW1lZGlhdGUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGltbWVkaWF0ZSBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc0ltbWVkaWF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbW1lZGlhdGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgd2hpY2ggaXMgXCJyZXNwb25zaWJsZVwiIGZvciBhIG1haW4gcHJvZ3JhbSB0byBiZWNvbWUgYWN0aXZlLlxyXG4gIC8vLyAgIEZvciBleGFtcGxlOiBpZiB0YXNrIEEgY2FsbHMgdGFzayBCIGFuZCBCJ3MgY3RsSWR4IGlzIGRpZmZlcmVudCB0aGFuIEEncywgdGhlbiBCJ3MgbWFpblxyXG4gIC8vLyAgIHByb2dyYW0gd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSB0YXNrIGhpcmFyY2h5IHRodXMgQiBpcyBcInJlc3BvbnNpYmxlXCIgZm9yIHRoZSBtYWluIHByZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjXCI+dGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcGFyYW0+XHJcbiAgc2V0TWFpblByZ0NyZWF0b3Ioc3JjOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbXByZ0NyZWF0b3IgPSBzcmM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIHdoaWNoIGlzIFwicmVzcG9uc2libGVcIiBmb3IgYSBtYWluIHByb2dyYW0ncyBleGVjdXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIFwicmVzcG9uc2libGVcIiB0YXNrLjwvcmV0dXJucz5cclxuICBnZXRNYWluUHJnQ3JlYXRvcigpOiBUYXNrQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXByZ0NyZWF0b3I7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGlzUmVhbFJlZnJlc2ggZmxhZyB0byBhIGdpdmVuIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRJc1JlYWxSZWZyZXNoKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNSZWFsUmVmcmVzaCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB0eXBlIG9mIGEgcmVmcmVzaCBldmVudCB0cnVlIGlzIHJlYWwgcmVmcmVzaCBlLmkuIG9uZSBpbnZva2VkIGRpcmVjdGxseSBieSB0aGUgdXNlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0UmVmcmVzaFR5cGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWFsUmVmcmVzaDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBtYXJrIHRoZSBldmVudCBhcyBhbiBldmVudCB3aGljaCB3YXMgY3JlYXRlZCBieSB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRGcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZnJvbVNlcnZlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbWFyayB0aGUgZXZlbnQgYXMgYW4gZXZlbnQgd2hpY2ggd2FzIG5vdCBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlc2V0RnJvbVNlcnZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Zyb21TZXJ2ZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gYW4gaW5kaWNhdGlvbiB3aGVhdGhlciB0aGUgc2VydmVyIGNyZWF0ZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgaXNGcm9tU2VydmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zyb21TZXJ2ZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IGFuIGluZGljYXRpb24gd2hlYXRoZXIgdGhlIGV2ZW50IGlzIGEgcGFydCBvZiBxdWl0IHByb2Nlc3NcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGlzUXVpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgPT09IEV2ZW50U3ViVHlwZS5DYW5jZWxJc1F1aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5kaWNhdGVzIHRoYXQgd2UgZG8gbm90IHdhbnQgdGhlIE1HX0FDVF9DQU5DRUwgdG8gcGVyZm9ybSByb2xsYmFjay5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUm9sbGJhY2tJbkNhbmNlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgIT09IEV2ZW50U3ViVHlwZS5DYW5jZWxXaXRoTm9Sb2xsYmFjaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIHdoaWxlIGV4aXQgdGhlIHRhc2sgZHVlIGVycm9yIChjYW4gYmUgb24gYW55IGVycm9yIGluIGRhdGFiYXNlIGluIG5vbiBpbnRlcmFjdGl2ZSlcclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4aXREdWVUb0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLkV4aXREdWVUb0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluZGljYXRlcyB0aGF0IHdlIGRvIG5vdCB3YW50IHRoZSBNR19BQ1RfQ0FOQ0VMIHRvIHBlcmZvcm0gcm9sbGJhY2suXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJ0Vmlld1JlZnJlc2hVc2VDdXJyZW50Um93KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLlJ0UmVmcmVzaFZpZXdVc2VDdXJyZW50Um93O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc3ViIGV2ZW50IHR5cGUgKHVzZSBmb3IgY2FuY2VsICYgcnRfdmlld19yZWZyZXNoIGFjdGlvbilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFNldEV2ZW50U3ViVHlwZShldmVudFN1YlR5cGU6IEV2ZW50U3ViVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRTdWJUeXBlID0gZXZlbnRTdWJUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgRmllbGRCYXNlIHdob3NlIGNoYW5nZSB0cmlnZ2VyZWQgdGhpcyBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnJlZmVyZW5jZSB0byB0aGUgZmllbGQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50PC9yZXR1cm5zPlxyXG4gIGdldEZsZCgpOiBHdWlGaWVsZEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50RmxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEd1aSBFdmVudCAtIGV2ZW50IHRoYXQgd2VyZSBhZGRlZCBieSBHdWkgTGF5ZXIsIGxpa2UgY2xpY2ssIHRpbWVyLCBlY3RcclxuICAvLy8gICBGb3IgYWxsIHRoaXMgZXZlbnQgdGhlIHByaW9yaXR5IGlzIGxvd1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGZvciBHVUkgRXZlbnRzIDwvcmV0dXJucz5cclxuICBpc0d1aVRyaWdnZXJlZEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBwcmlvcml0eSA8L3JldHVybnM+XHJcbiAgZ2V0UHJpb3JpdHkoKTogUHJpb3JpdHkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByaW9yaXR5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJpb3JpdHlcIj4gPC9wYXJhbT5cclxuICBzZXRQcmlvcml0eShwcmlvcml0eTogUHJpb3JpdHkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByaW9yaXR5ID0gcHJpb3JpdHk7XHJcbiAgfVxyXG5cclxuICBpc0lkbGVUaW1lcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0lkbGVUaW1lcjtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTdGFydFNlbGVjdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblN0YXJ0O1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5kU2VsZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgc2V0RWRpdFBhcm1zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXJ0XCI+c3RhcnQgc2VsZWN0aW9uPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVuZFwiPmVuZCBzZWxlY3Rpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPnRoZSB0ZXh0IGJlaW5nIHdyaXR0ZW48L3BhcmFtPlxyXG4gIHNldEVkaXRQYXJtcyhzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gZW5kO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSh0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgZm9yIHByb2R1Y2VDbGljayBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzUHJvZHVjZUNsaWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgcHJvZHVjZSBjbGlja1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHNldFByb2R1Y2VDbGljayhwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb2R1Y2VDbGljayA9IHByb2R1Y2VDbGljaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGFjdGlvbiBsaXN0IHRvIGVuYWJsZS9kaXNhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFjdExpc3RcIj48L3BhcmFtPlxyXG4gIHNldEFjdEVuYWJsZUxpc3QoYWN0TGlzdDogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdEVuYWJsZUxpc3QgPSBhY3RMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYWN0aW9uIGxpc3QgdG8gZW5hYmxlL2Rpc2FibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0QWN0RW5hYmxlTGlzdCgpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0RW5hYmxlTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gc2VuZCBhbGwgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc1NlbmRBbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VuZEFsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgc2VuZGFsbCBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlbmRBbGxcIj4gPC9wYXJhbT5cclxuICBzZXRTZW5kQWxsKHNlbmRBbGw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbmRBbGwgPSBzZW5kQWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENoZWNrIGlmIHRoaXMgZXZlbnQgaXMgYmxvY2tlZCBieSB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cuIElmIHRoZVxyXG4gIC8vLyAgIGN1cnJlbnQgd2luZG93IGlzIG1vZGFsLCBhbmQgdGhlIGV2ZW50IGRlZmluZWQgaW4gb25lIG9mIGl0cyBhbmNlc3RvcnMsXHJcbiAgLy8vICAgdGhlIGV2ZW50IHNob3VsZCBub3QgYmUgZXhlY3V0ZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFjdGl2ZVdpbmRvd0RhdGFcIj5UaGUgTUdEYXRhIG9iamVjdCBkZXNjcmliaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdpbmRvdy48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5cclxuICAvLy8gICBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cgaXMgbW9kYWwgaXMgYVxyXG4gIC8vLyAgIGRlc2NlbmRhbnQgb2YgdGhlIGV2ZW50J3MgdGFzay4gT3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBwdWJsaWMgaXNCbG9ja2VkQnlNb2RhbFdpbmRvdyhhY3RpdmVXaW5kb3dEYXRhOiBNR0RhdGEpOiBib29sZWFuIHtcclxuICAgIGlmIChhY3RpdmVXaW5kb3dEYXRhLklzTW9kYWwpIHtcclxuICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZXZlbnQncyB0YXNrIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBhY3RpdmUgd2luZG93J3MgdGFzay5cclxuICAgICAgbGV0IGV2ZW50VGFzazogVGFza0Jhc2UgPSB0aGlzLmdldFRhc2soKTtcclxuICAgICAgbGV0IGJhc2VUYXNrOiBUYXNrQmFzZSA9IGFjdGl2ZVdpbmRvd0RhdGEuZ2V0VGFzaygwKTtcclxuICAgICAgaWYgKGV2ZW50VGFzayAhPT0gYmFzZVRhc2sgJiYgYmFzZVRhc2suaXNEZXNjZW5kZW50T2YoZXZlbnRUYXNrKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e1JURXZlbnQgezB9ICh7MX0pLCB0eXBlIHsyfXszfX19XCIsIFtcclxuICAgICAgdGhpcy5nZXRCcmtMZXZlbCgpLCB0aGlzLkludGVybmFsRXZlbnQsIHRoaXMuX3R5cGUsICh0aGlzLl90YXNrID09PSBudWxsKSA/IFwiXCIgOiAoXCIgb24gXCIgKyB0aGlzLl90YXNrKVxyXG4gICAgXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|