@magic-xpa/engine 4.1100.0-dev4110.24 → 4.1100.0-dev4110.241
Sign up to get free protection for your applications and to get access to all the features.
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +416 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/esm2022/src/CommandsProcessorManager.mjs +26 -0
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +517 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +156 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +122 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/esm2022/src/bridge/MagicBridge.mjs +41 -0
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/BrowserEscEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ColumnSortEventCommand.mjs +26 -26
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +260 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ComputeEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +20 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +19 -19
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +37 -0
- package/esm2022/src/commands/ClientToServer/EventCommand.mjs +40 -0
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +22 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/{esm2020 → esm2022}/src/commands/ClientToServer/IndexChangeEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +23 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SelectProgramCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SubformOpenEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +30 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +1 -1
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/esm2022/src/data/Key.mjs +88 -0
- package/esm2022/src/data/Record.mjs +866 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/esm2022/src/data/TaskTransactionManager.mjs +103 -0
- package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +227 -0
- package/esm2022/src/env/MirrorString.mjs +65 -0
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2988 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +399 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/esm2022/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1224 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/esm2022/src/http/client/HttpClientBase.mjs +132 -0
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +880 -0
- package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderBase.mjs +98 -96
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
- package/esm2022/src/rt/ExecutionStack.mjs +94 -0
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/esm2022/src/rt/HandlersTable.mjs +96 -0
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/esm2022/src/rt/RecomputeTable.mjs +63 -0
- package/esm2022/src/rt/RemoteDataviewHeader.mjs +108 -0
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/esm2022/src/tasks/RemoteTaskService.mjs +45 -0
- package/esm2022/src/tasks/Task.mjs +2499 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/esm2022/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/esm2022/src/tasks/sort/SortCollection.mjs +67 -0
- package/esm2022/src/util/ConstUtils.mjs +14 -0
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/esm2022/src/util/HeapSort.mjs +70 -0
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/esm2022/src/util/cookie.service.mjs +92 -0
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29797 -29693
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +35 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +516 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +35 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +15 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +15 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +23 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +10 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +11 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +12 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +14 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +9 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +12 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +7 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +3 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +156 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +205 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +126 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +96 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsProcessorManager.mjs +0 -26
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/bridge/MagicBridge.mjs +0 -41
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/EventCommand.mjs +0 -40
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Key.mjs +0 -88
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/data/TaskTransactionManager.mjs +0 -103
- package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/env/MirrorString.mjs +0 -65
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/GlobalParamsTable.mjs +0 -85
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientBase.mjs +0 -132
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +0 -24
- package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
- package/esm2020/src/rt/ExecutionStack.mjs +0 -94
- package/esm2020/src/rt/HandlersTable.mjs +0 -96
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/RecomputeTable.mjs +0 -63
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +0 -108
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/RemoteTaskService.mjs +0 -45
- package/esm2020/src/tasks/Task.mjs +0 -2495
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TaskServiceBase.mjs +0 -25
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/tasks/sort/SortCollection.mjs +0 -67
- package/esm2020/src/util/ConstUtils.mjs +0 -14
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/HeapSort.mjs +0 -70
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/esm2020/src/util/cookie.service.mjs +0 -92
- package/fesm2015/magic-xpa-engine.mjs +0 -30835
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -0,0 +1,265 @@
|
|
1
|
+
import { ApplicationException, NNumber } from '@magic-xpa/mscorelib';
|
2
|
+
import { Logger, StorageAttribute, StorageAttributeCheck } from '@magic-xpa/utils';
|
3
|
+
import { BlobType, ExpVal, FieldDef } from '@magic-xpa/gui';
|
4
|
+
import { ConstInterface } from '../ConstInterface';
|
5
|
+
import { FieldBase } from '../data/FieldBase';
|
6
|
+
export class Argument {
|
7
|
+
_exp = null;
|
8
|
+
_fld = null;
|
9
|
+
_skip = false;
|
10
|
+
_type = '\0';
|
11
|
+
_val = null;
|
12
|
+
_valueAttr = StorageAttribute.NONE;
|
13
|
+
_valueIsNull = false;
|
14
|
+
constructor(fieldOrExpValOrSrcArg) {
|
15
|
+
if (arguments.length === 0) {
|
16
|
+
this.constructor_0();
|
17
|
+
return;
|
18
|
+
}
|
19
|
+
if (arguments.length === 1 && (fieldOrExpValOrSrcArg === null || fieldOrExpValOrSrcArg instanceof FieldBase)) {
|
20
|
+
this.constructor_1(fieldOrExpValOrSrcArg);
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
if (arguments.length === 1 && (fieldOrExpValOrSrcArg === null || fieldOrExpValOrSrcArg instanceof ExpVal)) {
|
24
|
+
this.constructor_2(fieldOrExpValOrSrcArg);
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
this.constructor_3(fieldOrExpValOrSrcArg);
|
28
|
+
}
|
29
|
+
constructor_0() {
|
30
|
+
this._type = '\0';
|
31
|
+
this._fld = null;
|
32
|
+
this._exp = null;
|
33
|
+
this._skip = false;
|
34
|
+
}
|
35
|
+
constructor_1(field) {
|
36
|
+
this._fld = field;
|
37
|
+
this._type = ConstInterface.ARG_TYPE_FIELD;
|
38
|
+
this._exp = null;
|
39
|
+
this._skip = false;
|
40
|
+
}
|
41
|
+
constructor_2(expVal) {
|
42
|
+
this._type = ConstInterface.ARG_TYPE_VALUE;
|
43
|
+
this._fld = null;
|
44
|
+
this._exp = null;
|
45
|
+
this._skip = false;
|
46
|
+
if (expVal.IsNull)
|
47
|
+
this._val = null;
|
48
|
+
else
|
49
|
+
this._val = expVal.ToMgVal();
|
50
|
+
this._valueIsNull = (this._val === null);
|
51
|
+
this._valueAttr = expVal.Attr;
|
52
|
+
}
|
53
|
+
constructor_3(srcArg) {
|
54
|
+
this._type = ConstInterface.ARG_TYPE_VALUE;
|
55
|
+
switch (srcArg._type) {
|
56
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
57
|
+
this._valueAttr = srcArg._fld.getType();
|
58
|
+
break;
|
59
|
+
case ConstInterface.ARG_TYPE_EXP:
|
60
|
+
break;
|
61
|
+
case ConstInterface.ARG_TYPE_SKIP:
|
62
|
+
this._skip = true;
|
63
|
+
break;
|
64
|
+
default:
|
65
|
+
throw new ApplicationException("in Argument.Argument(): illegal source Argument type!");
|
66
|
+
}
|
67
|
+
}
|
68
|
+
async Initialize(srcArg) {
|
69
|
+
switch (srcArg._type) {
|
70
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
71
|
+
this._val = srcArg._fld.getValue(true);
|
72
|
+
this._valueIsNull = srcArg._fld.isNull();
|
73
|
+
break;
|
74
|
+
case ConstInterface.ARG_TYPE_EXP:
|
75
|
+
let retVal = await srcArg._exp.evaluateWithResLength(255);
|
76
|
+
this._val = retVal.mgVal;
|
77
|
+
this._valueAttr = retVal.type;
|
78
|
+
this._valueIsNull = (this._val == null);
|
79
|
+
if (this._valueIsNull)
|
80
|
+
this._val = Argument.getEmptyValue((retVal.type === StorageAttribute.BLOB ||
|
81
|
+
retVal.type === StorageAttribute.BLOB_VECTOR));
|
82
|
+
break;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
fillData(arg, srcTask) {
|
86
|
+
this._type = arg[0];
|
87
|
+
let argElements = arg.substr(2);
|
88
|
+
switch (this._type) {
|
89
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
90
|
+
{
|
91
|
+
let fieldId = argElements.split(',');
|
92
|
+
let parent = NNumber.Parse(fieldId[0]);
|
93
|
+
let fldIdx = NNumber.Parse(fieldId[1]);
|
94
|
+
this._fld = srcTask.getFieldDef(parent, fldIdx);
|
95
|
+
}
|
96
|
+
break;
|
97
|
+
case ConstInterface.ARG_TYPE_EXP:
|
98
|
+
let expNum = NNumber.Parse(argElements);
|
99
|
+
this._exp = srcTask.getExpById(expNum);
|
100
|
+
break;
|
101
|
+
case ConstInterface.ARG_TYPE_SKIP:
|
102
|
+
this._skip = true;
|
103
|
+
break;
|
104
|
+
default:
|
105
|
+
Logger.Instance.WriteExceptionToLogWithMsg("in Argument.FillData() illegal type: " + arg);
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
buildXML(message) {
|
110
|
+
switch (this._type) {
|
111
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
112
|
+
message.Append("F:" + this._fld.getTask().getTaskTag() + "," + this._fld.getId());
|
113
|
+
break;
|
114
|
+
case ConstInterface.ARG_TYPE_EXP:
|
115
|
+
message.Append("E:" + this._exp.getId());
|
116
|
+
break;
|
117
|
+
case ConstInterface.ARG_TYPE_SKIP:
|
118
|
+
message.Append("X:0");
|
119
|
+
break;
|
120
|
+
default:
|
121
|
+
Logger.Instance.WriteExceptionToLogWithMsg("in Argument.buildXML() illegal type: " + this._type);
|
122
|
+
break;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
getType() {
|
126
|
+
return this._type;
|
127
|
+
}
|
128
|
+
getField() {
|
129
|
+
if (this._type === ConstInterface.ARG_TYPE_FIELD)
|
130
|
+
return this._fld;
|
131
|
+
return null;
|
132
|
+
}
|
133
|
+
getExp() {
|
134
|
+
if (this._type === ConstInterface.ARG_TYPE_EXP)
|
135
|
+
return this._exp;
|
136
|
+
return null;
|
137
|
+
}
|
138
|
+
async setValueToField(destFld) {
|
139
|
+
let val;
|
140
|
+
let isNull;
|
141
|
+
switch (this._type) {
|
142
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
143
|
+
val = this._fld.getValue(true);
|
144
|
+
val = Argument.convertArgs(val, this._fld.getType(), destFld.getType());
|
145
|
+
isNull = this._fld.isNull() || val == null;
|
146
|
+
break;
|
147
|
+
case ConstInterface.ARG_TYPE_EXP:
|
148
|
+
val = await this._exp.evaluateWithResultTypeAndLength(destFld.getType(), destFld.getSize());
|
149
|
+
isNull = (val == null);
|
150
|
+
if (isNull)
|
151
|
+
val = Argument.getEmptyValue((destFld.getType() === StorageAttribute.BLOB ||
|
152
|
+
destFld.getType() === StorageAttribute.BLOB_VECTOR));
|
153
|
+
break;
|
154
|
+
case ConstInterface.ARG_TYPE_VALUE:
|
155
|
+
val = Argument.convertArgs(this._val, this._valueAttr, destFld.getType());
|
156
|
+
isNull = this._valueIsNull || val == null;
|
157
|
+
break;
|
158
|
+
default:
|
159
|
+
return;
|
160
|
+
}
|
161
|
+
destFld.takeValFromRec();
|
162
|
+
await destFld.setValueAndStartRecompute(val, isNull, destFld.getTask().DataViewWasRetrieved, false, true);
|
163
|
+
}
|
164
|
+
static convertArgs(value, srcAttr, expectedType) {
|
165
|
+
let invalidArg = false;
|
166
|
+
switch (expectedType) {
|
167
|
+
case StorageAttribute.ALPHA:
|
168
|
+
case StorageAttribute.UNICODE:
|
169
|
+
if (srcAttr === StorageAttribute.BLOB) {
|
170
|
+
if (BlobType.isValidBlob(value))
|
171
|
+
value = BlobType.getString(value);
|
172
|
+
}
|
173
|
+
else if (!StorageAttributeCheck.IsTypeAlphaOrUnicode(srcAttr))
|
174
|
+
invalidArg = true;
|
175
|
+
break;
|
176
|
+
case StorageAttribute.NUMERIC:
|
177
|
+
case StorageAttribute.DATE:
|
178
|
+
case StorageAttribute.TIME:
|
179
|
+
if (!StorageAttributeCheck.isTypeNumeric(srcAttr))
|
180
|
+
invalidArg = true;
|
181
|
+
break;
|
182
|
+
case StorageAttribute.BLOB:
|
183
|
+
if (StorageAttributeCheck.IsTypeAlphaOrUnicode(srcAttr)) {
|
184
|
+
let contentType = srcAttr === StorageAttribute.ALPHA
|
185
|
+
? BlobType.CONTENT_TYPE_ANSI
|
186
|
+
: BlobType.CONTENT_TYPE_UNICODE;
|
187
|
+
value = BlobType.createFromString(value, contentType);
|
188
|
+
}
|
189
|
+
else if (!StorageAttributeCheck.isTypeBlob(srcAttr))
|
190
|
+
invalidArg = true;
|
191
|
+
break;
|
192
|
+
}
|
193
|
+
if (invalidArg)
|
194
|
+
value = FieldDef.getMagicDefaultValue(expectedType);
|
195
|
+
return value;
|
196
|
+
}
|
197
|
+
async getValue(expType, expSize) {
|
198
|
+
switch (this._type) {
|
199
|
+
case ConstInterface.ARG_TYPE_EXP:
|
200
|
+
this._val = await this._exp.evaluateWithResultTypeAndLength(expType, expSize);
|
201
|
+
if (this._val == null)
|
202
|
+
this._val = Argument.getEmptyValue(expType === StorageAttribute.BLOB
|
203
|
+
|| expType === StorageAttribute.BLOB_VECTOR);
|
204
|
+
break;
|
205
|
+
case ConstInterface.ARG_TYPE_FIELD:
|
206
|
+
this._val = this._fld.getValue(true);
|
207
|
+
break;
|
208
|
+
case ConstInterface.ARG_TYPE_VALUE:
|
209
|
+
break;
|
210
|
+
default:
|
211
|
+
return null;
|
212
|
+
}
|
213
|
+
return this._val;
|
214
|
+
}
|
215
|
+
skipArg() {
|
216
|
+
return this._skip;
|
217
|
+
}
|
218
|
+
fillDataByParams(paramValueAttr, paramValue, paramNull) {
|
219
|
+
this._valueAttr = paramValueAttr;
|
220
|
+
this._val = paramValue;
|
221
|
+
this._valueIsNull = paramNull;
|
222
|
+
if (this._valueAttr === StorageAttribute.SKIP) {
|
223
|
+
this._type = ConstInterface.ARG_TYPE_SKIP;
|
224
|
+
this._skip = true;
|
225
|
+
}
|
226
|
+
else {
|
227
|
+
this._type = ConstInterface.ARG_TYPE_VALUE;
|
228
|
+
}
|
229
|
+
}
|
230
|
+
static getEmptyValue(isBlob) {
|
231
|
+
return isBlob ? (BlobType.getEmptyBlobPrefix('\0') + ";") : "";
|
232
|
+
}
|
233
|
+
FillFromString(argStr) {
|
234
|
+
this._type = ConstInterface.ARG_TYPE_VALUE;
|
235
|
+
let argType = null;
|
236
|
+
if (argStr.length > 2)
|
237
|
+
argType = argStr.substr(0, 2);
|
238
|
+
switch (argType) {
|
239
|
+
case ConstInterface.REQ_ARG_ALPHA:
|
240
|
+
this._valueAttr = StorageAttribute.ALPHA;
|
241
|
+
break;
|
242
|
+
case ConstInterface.REQ_ARG_UNICODE:
|
243
|
+
this._valueAttr = StorageAttribute.UNICODE;
|
244
|
+
break;
|
245
|
+
case ConstInterface.REQ_ARG_NUMERIC:
|
246
|
+
this._valueAttr = StorageAttribute.NUMERIC;
|
247
|
+
break;
|
248
|
+
case ConstInterface.REQ_ARG_DOUBLE:
|
249
|
+
this._valueAttr = StorageAttribute.NUMERIC;
|
250
|
+
break;
|
251
|
+
case ConstInterface.REQ_ARG_LOGICAL:
|
252
|
+
this._valueAttr = StorageAttribute.BOOLEAN;
|
253
|
+
break;
|
254
|
+
case ConstInterface.REQ_ARG_NULL:
|
255
|
+
this._valueAttr = StorageAttribute.NONE;
|
256
|
+
break;
|
257
|
+
default:
|
258
|
+
this._valueAttr = StorageAttribute.ALPHA;
|
259
|
+
this._val = argStr;
|
260
|
+
return;
|
261
|
+
}
|
262
|
+
this._val = argStr.substr(2);
|
263
|
+
}
|
264
|
+
}
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L0FyZ3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsTUFBTSxPQUFPLFFBQVE7SUFDWCxJQUFJLEdBQWUsSUFBSSxDQUFDO0lBQ3hCLElBQUksR0FBYyxJQUFJLENBQUM7SUFDdkIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixLQUFLLEdBQVcsSUFBSSxDQUFDO0lBQ3JCLElBQUksR0FBVyxJQUFJLENBQUM7SUFDcEIsVUFBVSxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDckQsWUFBWSxHQUFZLEtBQUssQ0FBQztJQU10QyxZQUFZLHFCQUEyQjtRQUNyQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksSUFBSSxxQkFBcUIsWUFBWSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMxQyxPQUFPO1FBQ1Qs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M0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbkIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDaEIsS0FBSyxjQUFjLENBQUMsYUFBYTtnQkFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQyxlQUFlO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDM0MsTUFBTTtZQUNSLEtBQUssY0FBYyxDQUFDLGVBQWU7Z0JBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1IsS0FBSyxjQUFjLENBQUMsY0FBYztnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQyxlQUFlO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDM0MsTUFBTTtZQUNSLEtBQUssY0FBYyxDQUFDLFlBQVk7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUN4QyxNQUFNO1lBQ1I7Z0JBRUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUdELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgTk51bWJlciwgU3RyaW5nQnVpbGRlciB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTG9nZ2VyLCBTdG9yYWdlQXR0cmlidXRlLCBTdG9yYWdlQXR0cmlidXRlQ2hlY2t9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBCbG9iVHlwZSwgRXhwVmFsLCBGaWVsZERlZiB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cC9FeHByZXNzaW9uJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSAnLi4vZGF0YS9GaWVsZEJhc2UnO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBcmd1bWVudCB7XHJcbiAgcHJpdmF0ZSBfZXhwOiBFeHByZXNzaW9uID0gbnVsbDtcclxuICBwcml2YXRlIF9mbGQ6IEZpZWxkQmFzZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfc2tpcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9ICdcXDAnOyAvLyBGaWVsZEJhc2V8RXhwcmVzc2lvbnxWYWx1ZVxyXG4gIHByaXZhdGUgX3ZhbDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF92YWx1ZUF0dHI6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7IC8vIHRydWUgaXMgYXJndW1lbnQgaXMgb2YgdHlwZSBBUkdfVFlQRV9WQUxVRSBhbmRcclxuICBwcml2YXRlIF92YWx1ZUlzTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKGZpZWxkOiBGaWVsZEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGV4cFZhbDogRXhwVmFsKTtcclxuICBjb25zdHJ1Y3RvcihzcmNBcmc6IEFyZ3VtZW50KTtcclxuICBjb25zdHJ1Y3RvcihmaWVsZE9yRXhwVmFsT3JTcmNBcmc/OiBhbnkpIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAoZmllbGRPckV4cFZhbE9yU3JjQXJnID09PSBudWxsIHx8IGZpZWxkT3JFeHBWYWxPclNyY0FyZyBpbnN0YW5jZW9mIEZpZWxkQmFzZSkpIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKGZpZWxkT3JFeHBWYWxPclNyY0FyZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChmaWVsZE9yRXhwVmFsT3JTcmNBcmcgPT09IG51bGwgfHwgZmllbGRPckV4cFZhbE9yU3JjQXJnIGluc3RhbmNlb2YgRXhwVmFsKSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzIoZmllbGRPckV4cFZhbE9yU3JjQXJnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKGZpZWxkT3JFeHBWYWxPclNyY0FyZyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9ICdcXDAnLyonXHUwMDAwJyovO1xyXG4gICAgdGhpcy5fZmxkID0gbnVsbDtcclxuICAgIHRoaXMuX2V4cCA9IG51bGw7XHJcbiAgICB0aGlzLl9za2lwID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENUT1IgLSBjcmVhdGUgYW4gYXJndW1lbnQgZnJvbSBhIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEoZmllbGQ6IEZpZWxkQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmxkID0gZmllbGQ7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRklFTEQgLyonRicqLztcclxuICAgIHRoaXMuX2V4cCA9IG51bGw7XHJcbiAgICB0aGlzLl9za2lwID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUiB0aGF0IGNyZWF0ZXMgYSBcIlZhbHVlXCIgdHlwZSBhcmd1bWVudCBmcm9tIGEgZ2l2ZW4gRXhwcmVzc2lvbiBWYWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBWYWxcIj50aGUgc291cmNlIGV4cHJlc3Npb24gdmFsdWU8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMihleHBWYWw6IEV4cFZhbCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1ZBTFVFO1xyXG4gICAgdGhpcy5fZmxkID0gbnVsbDtcclxuICAgIHRoaXMuX2V4cCA9IG51bGw7XHJcbiAgICB0aGlzLl9za2lwID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGV4cFZhbC5Jc051bGwpXHJcbiAgICAgIHRoaXMuX3ZhbCA9IG51bGw7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3ZhbCA9IGV4cFZhbC5Ub01nVmFsKCk7XHJcblxyXG4gICAgdGhpcy5fdmFsdWVJc051bGwgPSAodGhpcy5fdmFsID09PSBudWxsKTtcclxuICAgIHRoaXMuX3ZhbHVlQXR0ciA9IGV4cFZhbC5BdHRyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgdGhhdCBjcmVhdGVzIGEgXCJWYWx1ZVwiIHR5cGUgYXJndW1lbnQgZnJvbSBhIGdpdmVuIEZpZWxkQmFzZSBvciBFeHByZXNzaW9uIHR5cGVcclxuICAvLy8gICBhcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzcmNBcmdcIj50aGUgc291cmNlIGFyZ3VtZW50PC9wYXJhbT5cclxuICBjb25zdHJ1Y3Rvcl8zKHNyY0FyZzogQXJndW1lbnQpIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9WQUxVRTtcclxuXHJcbiAgICBzd2l0Y2ggKHNyY0FyZy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEOlxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IHNyY0FyZy5fZmxkLmdldFR5cGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFA6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfU0tJUDpcclxuICAgICAgICB0aGlzLl9za2lwID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oXCJpbiBBcmd1bWVudC5Bcmd1bWVudCgpOiBpbGxlZ2FsIHNvdXJjZSBBcmd1bWVudCB0eXBlIVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBJbml0aWFsaXplKHNyY0FyZzogQXJndW1lbnQpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgc3dpdGNoIChzcmNBcmcuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9GSUVMRDpcclxuICAgICAgICB0aGlzLl92YWwgPSBzcmNBcmcuX2ZsZC5nZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICB0aGlzLl92YWx1ZUlzTnVsbCA9IHNyY0FyZy5fZmxkLmlzTnVsbCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFA6XHJcbiAgICAgICAgbGV0IHJldFZhbCA9IGF3YWl0IHNyY0FyZy5fZXhwLmV2YWx1YXRlV2l0aFJlc0xlbmd0aCgyNTUpO1xyXG4gICAgICAgIHRoaXMuX3ZhbCA9IHJldFZhbC5tZ1ZhbDtcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSByZXRWYWwudHlwZTtcclxuICAgICAgICB0aGlzLl92YWx1ZUlzTnVsbCA9ICh0aGlzLl92YWwgPT0gbnVsbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlSXNOdWxsKVxyXG4gICAgICAgICAgdGhpcy5fdmFsID0gQXJndW1lbnQuZ2V0RW1wdHlWYWx1ZSgocmV0VmFsLnR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fFxyXG4gICAgICAgICAgICByZXRWYWwudHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUikpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFBhcnNpbmcgQXJndW1lbnQgc3RyaW5nIGFuZCBmaWxsIGlubmVyIG9iamVjdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYXJnXCI+c3RyaW5nIHRvIHBhcnNlIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzcmNUYXNrXCI+b2YgdGhlIGFyZ3VtZW50IHRvIGZpbmQgZXhwcmVzc2lvbiBhcmd1bWVudCA8L3BhcmFtPlxyXG4gIHB1YmxpYyBmaWxsRGF0YShhcmc6IFN0cmluZywgc3JjVGFzazogVGFzayk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IGFyZ1swXTtcclxuICAgIGxldCBhcmdFbGVtZW50czogc3RyaW5nID0gYXJnLnN1YnN0cigyKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9GSUVMRDoge1xyXG4gICAgICAgIGxldCBmaWVsZElkOiBzdHJpbmdbXSA9IGFyZ0VsZW1lbnRzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgbGV0IHBhcmVudDogbnVtYmVyID0gIE5OdW1iZXIuUGFyc2UoZmllbGRJZFswXSk7XHJcbiAgICAgICAgbGV0IGZsZElkeDogbnVtYmVyID0gIE5OdW1iZXIuUGFyc2UoZmllbGRJZFsxXSk7XHJcbiAgICAgICAgdGhpcy5fZmxkID0gPEZpZWxkQmFzZT5zcmNUYXNrLmdldEZpZWxkRGVmKHBhcmVudCwgZmxkSWR4KTtcclxuICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFA6XHJcbiAgICAgICAgbGV0IGV4cE51bTogbnVtYmVyID0gTk51bWJlci5QYXJzZShhcmdFbGVtZW50cyk7XHJcbiAgICAgICAgdGhpcy5fZXhwID0gc3JjVGFzay5nZXRFeHBCeUlkKGV4cE51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1NLSVA6XHJcbiAgICAgICAgdGhpcy5fc2tpcCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gQXJndW1lbnQuRmlsbERhdGEoKSBpbGxlZ2FsIHR5cGU6IFwiICsgYXJnKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCB0aGUgWE1MIHN0cmluZyBmb3IgdGhlIGFyZ3VtZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1lc3NhZ2VcIj50aGUgWE1MIHN0cmluZyB0byBhcHBlbmQgdGhlIGFyZ3VtZW50IHRvPC9wYXJhbT5cclxuICBwdWJsaWMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRklFTEQ6XHJcbiAgICAgICAgbWVzc2FnZS5BcHBlbmQoXCJGOlwiICsgdGhpcy5fZmxkLmdldFRhc2soKS5nZXRUYXNrVGFnKCkgKyBcIixcIiArIHRoaXMuX2ZsZC5nZXRJZCgpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRVhQOlxyXG4gICAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiRTpcIiArIHRoaXMuX2V4cC5nZXRJZCgpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfU0tJUDpcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZChcIlg6MFwiKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gQXJndW1lbnQuYnVpbGRYTUwoKSBpbGxlZ2FsIHR5cGU6IFwiICsgdGhpcy5fdHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZvciBmaWVsZCB0eXBlIGFyZ3VtZW50cyByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RmllbGQoKTogRmllbGRCYXNlIHtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9GSUVMRClcclxuICAgICAgcmV0dXJuIHRoaXMuX2ZsZDtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZvciBleHByZXNzaW9uIHR5cGUgYXJndW1lbnRzIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGV4cHJlc3Npb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByb3RlY3RlZCBnZXRFeHAoKTogRXhwcmVzc2lvbiB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRVhQKVxyXG4gICAgICByZXR1cm4gdGhpcy5fZXhwO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB2YWx1ZSBvZiB0aGlzIGFyZ3VtZW50IHRvIGEgZ2l2ZW4gZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVzdEZsZFwiPnRoZSBkZXN0aW5hdGlvbiBmaWVsZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHB1YmxpYyBhc3luYyBzZXRWYWx1ZVRvRmllbGQoZGVzdEZsZDogRmllbGRCYXNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICBsZXQgaXNOdWxsOiBib29sZWFuO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuX2ZsZC5nZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICB2YWwgPSBBcmd1bWVudC5jb252ZXJ0QXJncyh2YWwsIHRoaXMuX2ZsZC5nZXRUeXBlKCksIGRlc3RGbGQuZ2V0VHlwZSgpKTtcclxuICAgICAgICBpc051bGwgPSB0aGlzLl9mbGQuaXNOdWxsKCkgfHwgdmFsID09IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0VYUDpcclxuICAgICAgICB2YWwgPSBhd2FpdCB0aGlzLl9leHAuZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aChkZXN0RmxkLmdldFR5cGUoKSwgZGVzdEZsZC5nZXRTaXplKCkpO1xyXG4gICAgICAgIGlzTnVsbCA9ICh2YWwgPT0gbnVsbCk7XHJcbiAgICAgICAgaWYgKGlzTnVsbClcclxuICAgICAgICAgIHZhbCA9IEFyZ3VtZW50LmdldEVtcHR5VmFsdWUoKGRlc3RGbGQuZ2V0VHlwZSgpID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0IgfHxcclxuICAgICAgICAgICAgZGVzdEZsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9WQUxVRTpcclxuICAgICAgICB2YWwgPSBBcmd1bWVudC5jb252ZXJ0QXJncyh0aGlzLl92YWwsIHRoaXMuX3ZhbHVlQXR0ciwgZGVzdEZsZC5nZXRUeXBlKCkpO1xyXG4gICAgICAgIGlzTnVsbCA9IHRoaXMuX3ZhbHVlSXNOdWxsIHx8IHZhbCA9PSBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIFVwZGF0ZSBkZXN0aW5hdGlvbiBmaWVsZCdzIF9pc05VTEwgd2l0aCB0aGUgdmFsdWUgZnJvbSByZWNvcmQuIFRoaXMgaXMgbmVlZGVkIHRvIGlkZW50aWZ5XHJcbiAgICAvLyBpZiB0aGUgdmFyaWFibGUgaXMgbW9kaWZpZWQuXHJcbiAgICBkZXN0RmxkLnRha2VWYWxGcm9tUmVjKCk7XHJcbiAgICBhd2FpdCBkZXN0RmxkLnNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUodmFsLCBpc051bGwsICg8VGFzaz5kZXN0RmxkLmdldFRhc2soKSkuRGF0YVZpZXdXYXNSZXRyaWV2ZWQsIGZhbHNlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY29udmVydHMgQWxwaGEvVW5pY29kZSB2YWx1ZXMgdG8gQmxvYiBhbmQgdmljZSB2ZXJzYS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzcmNBdHRyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJleHBlY3RlZFR5cGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXJncyh2YWx1ZTogc3RyaW5nLCBzcmNBdHRyOiBTdG9yYWdlQXR0cmlidXRlLCBleHBlY3RlZFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IGludmFsaWRBcmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKGV4cGVjdGVkVHlwZSkge1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGlmIChzcmNBdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0IpIHtcclxuICAgICAgICAgIGlmIChCbG9iVHlwZS5pc1ZhbGlkQmxvYih2YWx1ZSkpXHJcbiAgICAgICAgICAgIHZhbHVlID0gQmxvYlR5cGUuZ2V0U3RyaW5nKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIVN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZShzcmNBdHRyKSlcclxuICAgICAgICAgIGludmFsaWRBcmcgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICBpZiAoIVN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVOdW1lcmljKHNyY0F0dHIpKVxyXG4gICAgICAgICAgaW52YWxpZEFyZyA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgICBpZiAoU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHNyY0F0dHIpKSB7XHJcbiAgICAgICAgICBsZXQgY29udGVudFR5cGU6IHN0cmluZyA9IHNyY0F0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEFcclxuICAgICAgICAgICAgPyBCbG9iVHlwZS5DT05URU5UX1RZUEVfQU5TSVxyXG4gICAgICAgICAgICA6IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTklDT0RFO1xyXG4gICAgICAgICAgdmFsdWUgPSBCbG9iVHlwZS5jcmVhdGVGcm9tU3RyaW5nKHZhbHVlLCBjb250ZW50VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlQmxvYihzcmNBdHRyKSlcclxuICAgICAgICAgIGludmFsaWRBcmcgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZXJlIGlzIG1pc21hdGNoIGluIGF0dHJpYnV0ZSwgdGFrZSBkZWZhdWx0IHZhbHVlIG9mIGV4cGVjdGQgYXJndW1lbnQuXHJcbiAgICBpZiAoaW52YWxpZEFyZylcclxuICAgICAgdmFsdWUgPSBGaWVsZERlZi5nZXRNYWdpY0RlZmF1bHRWYWx1ZShleHBlY3RlZFR5cGUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB2YWx1ZSBvZiBBcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBUeXBlXCI+dHlwZSBvZiBleHBlY3RlZCB0eXBlIG9mIGV2YWx1YXRpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwU2l6ZVwiPnNpemUgb2YgZXhwZWN0ZWQgc3RyaW5nIGZyb20gZXZhbHVhdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB2YWx1ZSBvZiB0aGUgQXJndW1lbnQ8L3JldHVybnM+XHJcbiAgcHVibGljIGFzeW5jIGdldFZhbHVlKGV4cFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGV4cFNpemU6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFA6XHJcbiAgICAgICAgdGhpcy5fdmFsID0gYXdhaXQgdGhpcy5fZXhwLmV2YWx1YXRlV2l0aFJlc3VsdFR5cGVBbmRMZW5ndGgoZXhwVHlwZSwgZXhwU2l6ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5fdmFsID0gQXJndW1lbnQuZ2V0RW1wdHlWYWx1ZShleHBUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JcclxuICAgICAgICAgICAgfHwgZXhwVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEOlxyXG4gICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX2ZsZC5nZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfVkFMVUU6XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgdGhlIHNraXAgZmxhZyA8L3JldHVybnM+XHJcbiAgc2tpcEFyZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9za2lwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZpbGwgYW4gYXJndW1lbnQgZGF0YSBmcm9tIGEgcGFyYW1ldGVyIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyYW1WYWx1ZUF0dHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyYW1WYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJhbU51bGxcIj48L3BhcmFtPlxyXG4gIGZpbGxEYXRhQnlQYXJhbXMocGFyYW1WYWx1ZUF0dHI6IFN0b3JhZ2VBdHRyaWJ1dGUsIHBhcmFtVmFsdWU6IHN0cmluZywgcGFyYW1OdWxsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWx1ZUF0dHIgPSBwYXJhbVZhbHVlQXR0cjtcclxuICAgIHRoaXMuX3ZhbCA9IHBhcmFtVmFsdWU7XHJcbiAgICB0aGlzLl92YWx1ZUlzTnVsbCA9IHBhcmFtTnVsbDtcclxuXHJcbiAgICAvLyBUaGUgc2VydmVyIGluZGljYXRlcyBza2lwIG9uIGEgcGFyYW1ldGVyIGJ5IHNlbmRpbmcgREFUQV9UWVBFX1NLSVAgaW5zdGVhZCBvZiB0aGUgcmVhbCBhdHRyaWJ1dGUuXHJcbiAgICBpZiAodGhpcy5fdmFsdWVBdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLlNLSVApIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1NLSVAgLyonWCcqLztcclxuICAgICAgdGhpcy5fc2tpcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1ZBTFVFIC8qViovO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZXR1cm5zIGVtcHR5IHZhbHVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzQmxvYlwiPi0gdHJ1ZSBpcyB2YWx1ZSBpcyBmb3IgYmxvYjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RW1wdHlWYWx1ZShpc0Jsb2I6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGlzQmxvYiA/IChCbG9iVHlwZS5nZXRFbXB0eUJsb2JQcmVmaXgoJ1xcMCcpIC8qJ1x1MDAwMCcqLyArIFwiO1wiKSA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGZpbGwgdGhlIGFyZ3VtZW50IGZyb20gYSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ1N0clwiPjwvcGFyYW0+XHJcbiAgcHVibGljIEZpbGxGcm9tU3RyaW5nKGFyZ1N0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyB0eXBlIGlzIGFsd2F5cyBhIHZhbHVlXHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfVkFMVUU7XHJcblxyXG4gICAgbGV0IGFyZ1R5cGU6IHN0cmluZyA9IG51bGw7XHJcbiAgICAvLyBJZiBzdHJpbmcgaXMgc2hvcnRlciB0aGFuIDMsIGFzc3VtZSBpdCBkb2VzIG5vdCBoYXZlIGFuIGF0dHJpYnV0ZSBpZGVudGlmaWVyXHJcbiAgICBpZiAoYXJnU3RyLmxlbmd0aCA+IDIpXHJcbiAgICAgIGFyZ1R5cGUgPSBhcmdTdHIuc3Vic3RyKDAsIDIpO1xyXG5cclxuICAgIHN3aXRjaCAoYXJnVHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLlJFUV9BUkdfQUxQSEE6XHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5SRVFfQVJHX1VOSUNPREU6XHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLlJFUV9BUkdfTlVNRVJJQzpcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuUkVRX0FSR19ET1VCTEU6XHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLlJFUV9BUkdfTE9HSUNBTDpcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuUkVRX0FSR19OVUxMOlxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICAvLyBpZiBzdG9yYWdlIHR5cGUgaXMgbm90IGRlZmluZWQsIGFzc3VtZSBhbHBoYSBzdHJpbmcgYW5kIHRoZSBlbnRpcmUgc3RyaW5nIGlzIHRoZSB2YWx1ZVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE7XHJcbiAgICAgICAgdGhpcy5fdmFsID0gYXJnU3RyO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHRoZSBjYXNlIHRoZSBzdHJpbmcgaXMgdG9vIHNob3J0IHdhcyBkZWFsdCB3aXRoIGVhcmxpZXIgLSBpdCB3aWxsIGdldCB0byB0aGUgZGVmYXVsdCBjYXNlIGluIHRoZSBzd2l0Y2hcclxuICAgIC8vIGFuZCByZXR1cm4gZnJvbSB0aGVyZVxyXG4gICAgdGhpcy5fdmFsID0gYXJnU3RyLnN1YnN0cigyKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import { List } from '@magic-xpa/mscorelib';
|
2
|
+
import { Argument } from './Argument';
|
3
|
+
import { StrUtil } from '@magic-xpa/utils';
|
4
|
+
export class ArgumentsList {
|
5
|
+
_list = null;
|
6
|
+
RefreshOnString = null;
|
7
|
+
constructor(srcArgsOrExp_paramsOrArgument) {
|
8
|
+
if (arguments.length === 0) {
|
9
|
+
this.constructor_0();
|
10
|
+
return;
|
11
|
+
}
|
12
|
+
if (arguments.length === 1 && (srcArgsOrExp_paramsOrArgument === null || srcArgsOrExp_paramsOrArgument instanceof Array)) {
|
13
|
+
this.constructor_2(srcArgsOrExp_paramsOrArgument);
|
14
|
+
return;
|
15
|
+
}
|
16
|
+
this.constructor_3(srcArgsOrExp_paramsOrArgument);
|
17
|
+
}
|
18
|
+
constructor_0() {
|
19
|
+
}
|
20
|
+
async Initialize(srcArgs) {
|
21
|
+
this.constructor_0();
|
22
|
+
if (srcArgs === null)
|
23
|
+
this._list = null;
|
24
|
+
else {
|
25
|
+
this._list = new List();
|
26
|
+
for (let i = 0; i < srcArgs.getSize(); i = i + 1) {
|
27
|
+
let arg = new Argument(srcArgs.getArg(i));
|
28
|
+
await arg.Initialize(srcArgs.getArg(i));
|
29
|
+
this._list.push(arg);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
constructor_2(Exp_params) {
|
34
|
+
this.constructor_0();
|
35
|
+
let argCnt = Exp_params.length;
|
36
|
+
if (argCnt === 0)
|
37
|
+
this._list = null;
|
38
|
+
else {
|
39
|
+
this._list = new List();
|
40
|
+
for (let i = 0; i < argCnt; i = i + 1) {
|
41
|
+
this._list.push(new Argument(Exp_params[i]));
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
constructor_3(argument) {
|
46
|
+
this.Add(argument);
|
47
|
+
}
|
48
|
+
fillList(valueStr, srcTask) {
|
49
|
+
let tok = StrUtil.tokenize(valueStr, "$");
|
50
|
+
let size = tok.length;
|
51
|
+
this._list = new List();
|
52
|
+
for (let i = 0; i < size; i = i + 1) {
|
53
|
+
let argument = new Argument();
|
54
|
+
argument.fillData(tok[i], srcTask);
|
55
|
+
this._list.push(argument);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
buildListFromParams(size, attrs, vals, nulls) {
|
59
|
+
this._list = new List();
|
60
|
+
for (let i = 0; i < size; i = i + 1) {
|
61
|
+
let argument = new Argument();
|
62
|
+
argument.fillDataByParams(attrs.charAt(i), vals[i], nulls.charAt(i) !== '0');
|
63
|
+
this._list.push(argument);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
buildXML(message) {
|
67
|
+
for (let i = 0; i < this._list.length; i = i + 1) {
|
68
|
+
if (i > 0)
|
69
|
+
message.Append('$');
|
70
|
+
this._list.get_Item(i).buildXML(message);
|
71
|
+
}
|
72
|
+
}
|
73
|
+
getSize() {
|
74
|
+
return (this._list === null) ? 0 : this._list.length;
|
75
|
+
}
|
76
|
+
getArg(idx) {
|
77
|
+
if (idx < 0 || idx >= this._list.length)
|
78
|
+
return null;
|
79
|
+
return this._list.get_Item(idx);
|
80
|
+
}
|
81
|
+
async getArgValue(idx, expType, expSize) {
|
82
|
+
let arg = this.getArg(idx);
|
83
|
+
if (arg === null)
|
84
|
+
return null;
|
85
|
+
return await arg.getValue(expType, expSize);
|
86
|
+
}
|
87
|
+
FillListFromString(argsString) {
|
88
|
+
let pattern = new RegExp("(?<!\\\\),");
|
89
|
+
let array = argsString.split(pattern);
|
90
|
+
this._list = new List();
|
91
|
+
for (let i = 0; i < array.length; i = i + 1) {
|
92
|
+
let argument = new Argument();
|
93
|
+
argument.FillFromString(array[i]);
|
94
|
+
this._list.push(argument);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
Add(argument) {
|
98
|
+
if (this._list === null)
|
99
|
+
this._list = new List();
|
100
|
+
this._list.push(argument);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnRzTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvQXJndW1lbnRzTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdEMsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxNQUFNLE9BQU8sYUFBYTtJQUNoQixLQUFLLEdBQW1CLElBQUksQ0FBQztJQUlyQyxlQUFlLEdBQVcsSUFBSSxDQUFDO0lBSy9CLFlBQVksNkJBQW1DO1FBQzdDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEtBQUssSUFBSSxJQUFJLDZCQUE2QixZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekgsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2xELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFLTyxhQUFhO0lBQ3JCLENBQUM7SUFLTSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQXNCO1FBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLE9BQU8sS0FBSyxJQUFJO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2YsQ0FBQztZQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQVksQ0FBQztZQUVsQyxLQUFLLElBQUks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QUFZLENBQUM7UUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxJQUFJLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFNRCxHQUFHLENBQUMsUUFBa0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBWSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cFZhbCB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgTGlzdCwgU3RyaW5nQnVpbGRlciB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgQXJndW1lbnQgfSBmcm9tICcuL0FyZ3VtZW50JztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBUYXNrQmFzZSB9IGZyb20gJy4uL3Rhc2tzL1Rhc2tCYXNlJztcclxuaW1wb3J0IHsgU3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFyZ3VtZW50c0xpc3Qge1xyXG4gIHByaXZhdGUgX2xpc3Q6IExpc3Q8QXJndW1lbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8gU3RyaW5nIGZvciBzdWJmb3JtIGFyZ3VtZW50c1xyXG4gIC8vIE9ubHkgZm9yIG9mZmxpbmUuIEl0J3MgcmVsZXZhbnQgZm9yIGNhbGwgd2l0aCBkZXN0aW5hdGlvblxyXG4gIFJlZnJlc2hPblN0cmluZzogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihFeHBfcGFyYW1zOiBFeHBWYWxbXSk7XHJcbiAgY29uc3RydWN0b3IoYXJndW1lbnQ6IEFyZ3VtZW50KTtcclxuICBjb25zdHJ1Y3RvcihzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudD86IGFueSkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCA9PT0gbnVsbCB8fCBzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzIoc3JjQXJnc09yRXhwX3BhcmFtc09yQXJndW1lbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoc3JjQXJnc09yRXhwX3BhcmFtc09yQXJndW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SIHRoYXQgY3JlYXRlcyBhIFZBTFVFIGFyZ3VtZW50IGxpc3QgdXNpbmcgYSBnaXZlbiBhcmd1bWVudCBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgSW5pdGlhbGl6ZShzcmNBcmdzOiBBcmd1bWVudHNMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgIGlmIChzcmNBcmdzID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9saXN0ID0gbnVsbDtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3JjQXJncy5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGxldCBhcmcgPSBuZXcgQXJndW1lbnQoc3JjQXJncy5nZXRBcmcoaSkpO1xyXG4gICAgICAgIGF3YWl0IGFyZy5Jbml0aWFsaXplKHNyY0FyZ3MuZ2V0QXJnKGkpKTtcclxuICAgICAgICB0aGlzLl9saXN0LnB1c2goYXJnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgdGhhdCBjcmVhdGVzIGEgVkFMVUUgYXJndW1lbnQgbGlzdCB1c2luZyBhIGdpdmVuIGV4cHJlc3Npb24gdmFsdWUgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8yKEV4cF9wYXJhbXM6IEV4cFZhbFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgIGxldCBhcmdDbnQ6IG51bWJlciA9IEV4cF9wYXJhbXMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChhcmdDbnQgPT09IDApXHJcbiAgICAgIHRoaXMuX2xpc3QgPSBudWxsO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcmdDbnQ7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX2xpc3QucHVzaChuZXcgQXJndW1lbnQoRXhwX3BhcmFtc1tpXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENUT1IgLSBjcmVhdGUgYW4gYXJndW1lbnQgbGlzdCB3aXRoIG9uZSBzcGVjaWZpZWQgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ3VtZW50XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzMoYXJndW1lbnQ6IEFyZ3VtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLkFkZChhcmd1bWVudCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmlsbCB0aGUgYXJndW1lbnQgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVN0clwiPnN0cmluZyBpbiB0aGUgZm9ybWF0IG9mOiBcIltGOnN0cixzdHJdfFtFOnN0cl0kLi4uXCI8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjVGFza1wiPnRoZSBzb3VyY2UgdGFzayBmb3IgcGFyc2luZyBleHByZXNzaW9uIGFyZ3VtZW50czwvcGFyYW0+XHJcbiAgZmlsbExpc3QodmFsdWVTdHI6IHN0cmluZywgc3JjVGFzazogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIGxldCB0b2s6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZSh2YWx1ZVN0ciwgXCIkXCIpO1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9IHRvay5sZW5ndGg7XHJcblxyXG4gICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzaXplOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGFyZ3VtZW50OiBBcmd1bWVudCA9IG5ldyBBcmd1bWVudCgpO1xyXG4gICAgICBhcmd1bWVudC5maWxsRGF0YSh0b2tbaV0sIDxUYXNrPnNyY1Rhc2spO1xyXG4gICAgICB0aGlzLl9saXN0LnB1c2goYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkcyBhcmd1bWVudCBsaXN0IGZyb20gdGhlIGV2ZW50IHBhcmFtZXRlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2l6ZVwiPiAgIC0gYXJndW1lbnQgbnVtYmVyIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhdHRyc1wiPiAgLSBzdHJpbmcgb2YgYXR0cmlidXRlczwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxzXCI+ICAgLSB2YWx1ZSBzdHJpbmdzPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm51bGxzXCI+ICAtIGFyZ3VtZW50cyBudWxsczwvcGFyYW0+XHJcbiAgYnVpbGRMaXN0RnJvbVBhcmFtcyhzaXplOiBudW1iZXIsIGF0dHJzOiBzdHJpbmcsIHZhbHM6IHN0cmluZ1tdLCBudWxsczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHNpemU7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgYXJndW1lbnQ6IEFyZ3VtZW50ID0gbmV3IEFyZ3VtZW50KCk7XHJcbiAgICAgIGFyZ3VtZW50LmZpbGxEYXRhQnlQYXJhbXMoPFN0b3JhZ2VBdHRyaWJ1dGU+YXR0cnMuY2hhckF0KGkpLCB2YWxzW2ldLCBudWxscy5jaGFyQXQoaSkgIT09ICcwJy8qJzAnKi8pO1xyXG4gICAgICB0aGlzLl9saXN0LnB1c2goYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIHRoZSBYTUwgc3RyaW5nIGZvciB0aGUgYXJndW1lbnRzIGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWVzc2FnZVwiPnRoZSBYTUwgc3RyaW5nIHRvIGFwcGVuZCB0aGUgYXJndW1lbnRzIHRvPC9wYXJhbT5cclxuICBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fbGlzdC5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBpZiAoaSA+IDApXHJcbiAgICAgICAgbWVzc2FnZS5BcHBlbmQoJyQnKS8qJyQnKi87XHJcbiAgICAgIHRoaXMuX2xpc3QuZ2V0X0l0ZW0oaSkuYnVpbGRYTUwobWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICh0aGlzLl9saXN0ID09PSBudWxsKSA/IDAgOiB0aGlzLl9saXN0Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIGFuIGFyZ3VtZW50IGl0ZW0gZnJvbSB0aGUgbGlzdCBieSBpdHMgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0ZWQgYXJndW1lbnQ8L3BhcmFtPlxyXG4gIGdldEFyZyhpZHg6IG51bWJlcik6IEFyZ3VtZW50IHtcclxuICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLl9saXN0Lmxlbmd0aClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2xpc3QuZ2V0X0l0ZW0oaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgVmFsdWUgb2YgQXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0ZWQgYXJndW1lbnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwVHlwZVwiPnR5cGUgb2YgZXhwZWN0ZWQgdHlwZSBvZiBldmFsdWF0aW9uLCBmb3IgZXhwcmVzc2lvbiBvbmx5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFNpemVcIj5zaXplIG9mIGV4cGVjdGVkIHN0cmluZyBmcm9tIGV2YWx1YXRpb24sIGZvciBleHByZXNzaW9uIG9ubHk8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgZXZhbHVhdGVkIEFyZ3VtZW50PC9yZXR1cm5zPlxyXG4gIGFzeW5jIGdldEFyZ1ZhbHVlKGlkeDogbnVtYmVyLCBleHBUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBleHBTaXplOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgbGV0IGFyZzogQXJndW1lbnQgPSB0aGlzLmdldEFyZyhpZHgpO1xyXG4gICAgaWYgKGFyZyA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gYXdhaXQgYXJnLmdldFZhbHVlKGV4cFR5cGUsIGV4cFNpemUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBmaWxsIHRoZSBhcmd1bWVudHMgbGlzdCBmcm9tIGEgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmdzU3RyaW5nXCI+PC9wYXJhbT5cclxuICBGaWxsTGlzdEZyb21TdHJpbmcoYXJnc1N0cmluZzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gVE9ETyA6IGNoZWNrIHNpemUgb2YgYnVuZGxlIGFuZCBkZWNpZGUgd2hldGhlciB0byB1c2UgUmVnRXhwXHJcbiAgICBsZXQgcGF0dGVybiA9IG5ldyBSZWdFeHAoXCIoPzwhXFxcXFxcXFwpLFwiKTtcclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBhcmdzU3RyaW5nLnNwbGl0KHBhdHRlcm4pO1xyXG4gICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgYXJndW1lbnQ6IEFyZ3VtZW50ID0gbmV3IEFyZ3VtZW50KCk7XHJcbiAgICAgIGFyZ3VtZW50LkZpbGxGcm9tU3RyaW5nKGFycmF5W2ldKTtcclxuICAgICAgdGhpcy5fbGlzdC5wdXNoKGFyZ3VtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gYWRkIGFuIGFyZ3VtZW50IHRvIHRoZSBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmd1bWVudFwiPjwvcGFyYW0+XHJcbiAgQWRkKGFyZ3VtZW50OiBBcmd1bWVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2xpc3QgPT09IG51bGwpXHJcbiAgICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuICAgIHRoaXMuX2xpc3QucHVzaChhcmd1bWVudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -0,0 +1,152 @@
|
|
1
|
+
import { ExpressionEvaluator, NullValueException } from "../exp/ExpressionEvaluator";
|
2
|
+
import { DisplayConvertor, ExpVal } from "@magic-xpa/gui";
|
3
|
+
import { StorageAttribute, StrUtil } from "@magic-xpa/utils";
|
4
|
+
import { Char, NString } from "@magic-xpa/mscorelib";
|
5
|
+
export class Boundary {
|
6
|
+
_cacheTableFldId = 0;
|
7
|
+
_max = null;
|
8
|
+
_min = null;
|
9
|
+
_retType = StorageAttribute.NONE;
|
10
|
+
_size = 0;
|
11
|
+
_maxExpVal = null;
|
12
|
+
_minExpVal = null;
|
13
|
+
DiscardMin = false;
|
14
|
+
DiscardMax = false;
|
15
|
+
MaxEqualsMin = false;
|
16
|
+
constructor(task, minIdx, maxIdx, returnType, size, cacheTableId) {
|
17
|
+
if (arguments.length === 5)
|
18
|
+
this.constructor_0(task, minIdx, maxIdx, returnType, size);
|
19
|
+
else
|
20
|
+
this.constructor_1(task, minIdx, maxIdx, returnType, size, cacheTableId);
|
21
|
+
}
|
22
|
+
constructor_0(task, minIdx, maxIdx, returnType, size) {
|
23
|
+
this.constructor_1(task, minIdx, maxIdx, returnType, size, -1);
|
24
|
+
}
|
25
|
+
constructor_1(task, minIdx, maxIdx, returnType, size, cacheTableId) {
|
26
|
+
this._retType = returnType;
|
27
|
+
this._size = size;
|
28
|
+
this._cacheTableFldId = cacheTableId;
|
29
|
+
if (minIdx !== -1)
|
30
|
+
this._min = task.getExpById(minIdx);
|
31
|
+
if (maxIdx !== -1)
|
32
|
+
this._max = task.getExpById(maxIdx);
|
33
|
+
}
|
34
|
+
hasMinExp() {
|
35
|
+
return this._min !== null;
|
36
|
+
}
|
37
|
+
hasMaxExp() {
|
38
|
+
return this._max !== null;
|
39
|
+
}
|
40
|
+
getExpType() {
|
41
|
+
return this._retType;
|
42
|
+
}
|
43
|
+
getCacheTableFldId() {
|
44
|
+
return this._cacheTableFldId;
|
45
|
+
}
|
46
|
+
async compute(padValueWithMinMaxCharacters) {
|
47
|
+
if (this.hasMinExp()) {
|
48
|
+
let minVal = await this._min.evaluateWithResultTypeAndLength(this.getExpType(), this._size);
|
49
|
+
if (minVal !== null) {
|
50
|
+
minVal = NString.TrimEnd(minVal, new Array(0));
|
51
|
+
}
|
52
|
+
this._minExpVal = new ExpVal(this.getExpType(), minVal === null, minVal);
|
53
|
+
this.MaxEqualsMin = this.IsMaxEqualsMin();
|
54
|
+
if (!this._minExpVal.IsNull && (this._minExpVal.Attr === StorageAttribute.ALPHA || this._minExpVal.Attr === StorageAttribute.UNICODE)) {
|
55
|
+
if (padValueWithMinMaxCharacters) {
|
56
|
+
this._minExpVal.StrVal = DisplayConvertor.StringValueToMgValue(this._minExpVal.StrVal, this._minExpVal.Attr, Char.MinValue, this._size).toString();
|
57
|
+
this.MaxEqualsMin = false;
|
58
|
+
}
|
59
|
+
this._minExpVal.StrVal = StrUtil.SearchAndReplaceWildChars(this._minExpVal.StrVal, this._size, Char.MinValue);
|
60
|
+
}
|
61
|
+
this.DiscardMin = await this._min.DiscardCndRangeResult();
|
62
|
+
}
|
63
|
+
if (this.hasMaxExp()) {
|
64
|
+
let maxVal = await this._max.evaluateWithResultTypeAndLength(this.getExpType(), this._size);
|
65
|
+
this._maxExpVal = new ExpVal(this.getExpType(), maxVal === null, maxVal);
|
66
|
+
if (!this._maxExpVal.IsNull && (this._maxExpVal.Attr === StorageAttribute.ALPHA || this._maxExpVal.Attr === StorageAttribute.UNICODE)) {
|
67
|
+
if (padValueWithMinMaxCharacters) {
|
68
|
+
this._maxExpVal.StrVal = DisplayConvertor.StringValueToMgValue(this._maxExpVal.StrVal, this._maxExpVal.Attr, Char.MaxValue, this._size);
|
69
|
+
}
|
70
|
+
this._maxExpVal.StrVal = StrUtil.SearchAndReplaceWildChars(this._maxExpVal.StrVal, this._size, Char.MaxValue);
|
71
|
+
}
|
72
|
+
this.DiscardMax = await this._max.DiscardCndRangeResult();
|
73
|
+
}
|
74
|
+
}
|
75
|
+
checkRange(val, IsNull) {
|
76
|
+
let res = true;
|
77
|
+
let cmpVal = new ExpVal(this.getExpType(), IsNull, val);
|
78
|
+
if (cmpVal.IsNull && ((this.hasMinExp() && this._minExpVal.IsNull) || (this.hasMaxExp() && this._maxExpVal.IsNull))) {
|
79
|
+
res = true;
|
80
|
+
}
|
81
|
+
else {
|
82
|
+
if (this.hasMinExp()) {
|
83
|
+
if (!this._minExpVal.IsNull && !cmpVal.IsNull) {
|
84
|
+
try {
|
85
|
+
if (ExpressionEvaluator.val_cmp_any(cmpVal, this._minExpVal) < 0)
|
86
|
+
res = false;
|
87
|
+
}
|
88
|
+
catch (exception) {
|
89
|
+
if (exception instanceof NullValueException) {
|
90
|
+
res = false;
|
91
|
+
}
|
92
|
+
else
|
93
|
+
throw exception;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
else {
|
97
|
+
if (cmpVal.IsNull !== this._minExpVal.IsNull)
|
98
|
+
res = false;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
if (this.hasMaxExp() && res) {
|
102
|
+
if (!this._maxExpVal.IsNull && !cmpVal.IsNull) {
|
103
|
+
try {
|
104
|
+
if (ExpressionEvaluator.val_cmp_any(cmpVal, this._maxExpVal) > 0)
|
105
|
+
res = false;
|
106
|
+
}
|
107
|
+
catch (exception) {
|
108
|
+
if (exception instanceof NullValueException)
|
109
|
+
res = false;
|
110
|
+
else
|
111
|
+
throw exception;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
else if (cmpVal.IsNull !== this._maxExpVal.IsNull)
|
115
|
+
res = false;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
return res;
|
119
|
+
}
|
120
|
+
IsMaxEqualsMin() {
|
121
|
+
let result = false;
|
122
|
+
if (this.hasMaxExp() && this.hasMinExp()) {
|
123
|
+
if (this._min.getId() === this._max.getId()) {
|
124
|
+
if (this._retType === StorageAttribute.ALPHA || this._retType === StorageAttribute.UNICODE)
|
125
|
+
result = !this.WildCharExist();
|
126
|
+
else
|
127
|
+
result = true;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
return result;
|
131
|
+
}
|
132
|
+
WildCharExist() {
|
133
|
+
let wildChars = ["*", "?"];
|
134
|
+
let result = false;
|
135
|
+
if (!this._minExpVal.IsNull) {
|
136
|
+
let stringValue = this._minExpVal.StrVal;
|
137
|
+
for (let i = 0; i < wildChars.length; i = i + 1) {
|
138
|
+
if (stringValue.endsWith(wildChars[i])) {
|
139
|
+
result = true;
|
140
|
+
break;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
return result;
|
145
|
+
}
|
146
|
+
toString() {
|
147
|
+
return NString.Format("{{Boundary: {0}-{1}, {2}, {3}}}", [
|
148
|
+
this._max, this._max, this._retType, this._size
|
149
|
+
]);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L0JvdW5kYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ25GLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHM0QsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUtuRCxNQUFNLE9BQU8sUUFBUTtJQUNYLGdCQUFnQixHQUFXLENBQUMsQ0FBQztJQUM3QixJQUFJLEdBQWUsSUFBSSxDQUFDO0lBQ3hCLElBQUksR0FBZSxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDbkQsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixVQUFVLEdBQVcsSUFBSSxDQUFDO0lBQzFCLFVBQVUsR0FBVyxJQUFJLENBQUM7SUFFbEMsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLFlBQVksR0FBWSxLQUFLLENBQUM7SUFLOUIsWUFBWSxJQUFVLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxVQUE0QixFQUFFLElBQVksRUFBRSxZQUFxQjtRQUN2SCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFFM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFV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O29CQUUvQixNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU1PLGFBQWE7UUFDbkIsSUFBSSxTQUFTLEdBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBRzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksV0FBVyxHQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBRWpELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN2QyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNkLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUNBQWlDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFeHByZXNzaW9uRXZhbHVhdG9yLCBOdWxsVmFsdWVFeGNlcHRpb259IGZyb20gXCIuLi9leHAvRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3IsIEV4cFZhbH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtFeHByZXNzaW9ufSBmcm9tIFwiLi4vZXhwL0V4cHJlc3Npb25cIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0NoYXIsIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHJhbmdlIG9yIGxvY2F0ZSBzZWN0aW9ucyAtIGkuZS4gbWluL21heCBleHByZXNzaW9uc1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQm91bmRhcnkge1xyXG4gIHByaXZhdGUgX2NhY2hlVGFibGVGbGRJZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9tYXg6IEV4cHJlc3Npb24gPSBudWxsO1xyXG4gIHByaXZhdGUgX21pbjogRXhwcmVzc2lvbiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcmV0VHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTtcclxuICBwcml2YXRlIF9zaXplOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX21heEV4cFZhbDogRXhwVmFsID0gbnVsbDtcclxuICBwcml2YXRlIF9taW5FeHBWYWw6IEV4cFZhbCA9IG51bGw7XHJcblxyXG4gIERpc2NhcmRNaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEaXNjYXJkTWF4OiBib29sZWFuID0gZmFsc2U7XHJcbiAgTWF4RXF1YWxzTWluOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcih0YXNrOiBUYXNrLCBtaW5JZHg6IG51bWJlciwgbWF4SWR4OiBudW1iZXIsIHJldHVyblR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHNpemU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IodGFzazogVGFzaywgbWluSWR4OiBudW1iZXIsIG1heElkeDogbnVtYmVyLCByZXR1cm5UeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBzaXplOiBudW1iZXIsIGNhY2hlVGFibGVJZDogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3Rvcih0YXNrOiBUYXNrLCBtaW5JZHg6IG51bWJlciwgbWF4SWR4OiBudW1iZXIsIHJldHVyblR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHNpemU6IG51bWJlciwgY2FjaGVUYWJsZUlkPzogbnVtYmVyKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKHRhc2ssIG1pbklkeCwgbWF4SWR4LCByZXR1cm5UeXBlLCBzaXplKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHRhc2ssIG1pbklkeCwgbWF4SWR4LCByZXR1cm5UeXBlLCBzaXplLCBjYWNoZVRhYmxlSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJbnN0YW50aWF0ZXMgYSBuZXcgQm91bmRhcnkgb2JqZWN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtaW5JZHhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1heElkeFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmV0dXJuVHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2l6ZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKHRhc2s6IFRhc2ssIG1pbklkeDogbnVtYmVyLCBtYXhJZHg6IG51bWJlciwgcmV0dXJuVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgc2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEodGFzaywgbWluSWR4LCBtYXhJZHgsIHJldHVyblR5cGUsIHNpemUsIC0xKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMSh0YXNrOiBUYXNrLCBtaW5JZHg6IG51bWJlciwgbWF4SWR4OiBudW1iZXIsIHJldHVyblR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHNpemU6IG51bWJlciwgY2FjaGVUYWJsZUlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JldFR5cGUgPSByZXR1cm5UeXBlO1xyXG4gICAgdGhpcy5fc2l6ZSA9IHNpemU7XHJcbiAgICB0aGlzLl9jYWNoZVRhYmxlRmxkSWQgPSBjYWNoZVRhYmxlSWQ7XHJcbiAgICBpZiAobWluSWR4ICE9PSAtMSlcclxuICAgICAgdGhpcy5fbWluID0gdGFzay5nZXRFeHBCeUlkKG1pbklkeCk7XHJcblxyXG4gICAgaWYgKG1heElkeCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuX21heCA9IHRhc2suZ2V0RXhwQnlJZChtYXhJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8gc29tZXRpbWVzIHRoZSBtaW4gb3IgbWF4IGRvZXMgbm90IGhhdmUgYW4gZXhwcmVzc2lvblxyXG4gIGhhc01pbkV4cCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9taW4gIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBzb21ldGltZXMgdGhlIG1pbiBvciBtYXggZG9lcyBub3QgaGF2ZSBhbiBleHByZXNzaW9uXHJcbiAgaGFzTWF4RXhwKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heCAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBtaW4vbWF4IGV4cHJlc3Npb25zIHJldHVybiB0eXBlIC0gaXQgYWN0dWFsbHkgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIHRoZXkgYXJlIEFzc29jaWF0ZWQgd2l0aFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RXhwVHlwZSgpOiBTdG9yYWdlQXR0cmlidXRlIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXRUeXBlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGlkIG9mIHRoZSBjYWNoZWQgdGFibGUgZmllbGQgdGhpcyByYW5nZSBjb3JyZXNwb25kcyB0b1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q2FjaGVUYWJsZUZsZElkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVUYWJsZUZsZElkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbXB1dGVzIHRoZSBtaW4gYW5kIG1heCBleHByZXNzaW9uIHRvIGNoZWNrIHRoZWlyIHZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgY29tcHV0ZShwYWRWYWx1ZVdpdGhNaW5NYXhDaGFyYWN0ZXJzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5oYXNNaW5FeHAoKSkge1xyXG5cclxuICAgICAgLy8gZXZhbHVhdGUgdGhlIG1pbiBleHByZXNzaW9uXHJcbiAgICAgIGxldCBtaW5WYWw6IHN0cmluZyA9IGF3YWl0IHRoaXMuX21pbi5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKHRoaXMuZ2V0RXhwVHlwZSgpLCB0aGlzLl9zaXplKTtcclxuICAgICAgaWYgKG1pblZhbCAhPT0gbnVsbCkge1xyXG4gICAgICAgIG1pblZhbCA9IE5TdHJpbmcuVHJpbUVuZChtaW5WYWwsIG5ldyBBcnJheTxzdHJpbmc+KDApKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fbWluRXhwVmFsID0gbmV3IEV4cFZhbCh0aGlzLmdldEV4cFR5cGUoKSwgbWluVmFsID09PSBudWxsLCBtaW5WYWwpO1xyXG5cclxuICAgICAgLy8gY2hlY2sgYW5kIHNldCB0aGUgTWF4RXF1YWxzTWluIGJlZm9yZSB0aGUgd2lsZCBjaGFycyBhcmUgcmVwbGFjZWQgb24gdGhlIHN0cmluZyByZXN1bHRcclxuICAgICAgdGhpcy5NYXhFcXVhbHNNaW4gPSB0aGlzLklzTWF4RXF1YWxzTWluKCk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuX21pbkV4cFZhbC5Jc051bGwgJiYgKHRoaXMuX21pbkV4cFZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IHRoaXMuX21pbkV4cFZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpKSB7XHJcbiAgICAgICAgaWYgKHBhZFZhbHVlV2l0aE1pbk1heENoYXJhY3RlcnMpIHtcclxuICAgICAgICAgIHRoaXMuX21pbkV4cFZhbC5TdHJWYWwgPSBEaXNwbGF5Q29udmVydG9yLlN0cmluZ1ZhbHVlVG9NZ1ZhbHVlKHRoaXMuX21pbkV4cFZhbC5TdHJWYWwsIHRoaXMuX21pbkV4cFZhbC5BdHRyLCBDaGFyLk1pblZhbHVlLCAvKidcdTAwMDAnKi90aGlzLl9zaXplKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgdGhpcy5NYXhFcXVhbHNNaW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWluRXhwVmFsLlN0clZhbCA9IFN0clV0aWwuU2VhcmNoQW5kUmVwbGFjZVdpbGRDaGFycyh0aGlzLl9taW5FeHBWYWwuU3RyVmFsLCB0aGlzLl9zaXplLCBDaGFyLk1pblZhbHVlKS8qJ1x1MDAwMCcqLztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkRpc2NhcmRNaW4gPSBhd2FpdCB0aGlzLl9taW4uRGlzY2FyZENuZFJhbmdlUmVzdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzTWF4RXhwKCkpIHtcclxuXHJcbiAgICAgIC8vIGV2YWx1YXRlIHRoZSBtYXggZXhwcmVzc2lvblxyXG4gICAgICBsZXQgbWF4VmFsOiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9tYXguZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aCh0aGlzLmdldEV4cFR5cGUoKSwgdGhpcy5fc2l6ZSk7XHJcbiAgICAgIHRoaXMuX21heEV4cFZhbCA9IG5ldyBFeHBWYWwodGhpcy5nZXRFeHBUeXBlKCksIG1heFZhbCA9PT0gbnVsbCwgbWF4VmFsKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5fbWF4RXhwVmFsLklzTnVsbCAmJiAodGhpcy5fbWF4RXhwVmFsLkF0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgdGhpcy5fbWF4RXhwVmFsLkF0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERSkpIHtcclxuICAgICAgICBpZiAocGFkVmFsdWVXaXRoTWluTWF4Q2hhcmFjdGVycykge1xyXG4gICAgICAgICAgdGhpcy5fbWF4RXhwVmFsLlN0clZhbCA9IERpc3BsYXlDb252ZXJ0b3IuU3RyaW5nVmFsdWVUb01nVmFsdWUodGhpcy5fbWF4RXhwVmFsLlN0clZhbCwgdGhpcy5fbWF4RXhwVmFsLkF0dHIsIENoYXIuTWF4VmFsdWUgLyon77+/JyovLCB0aGlzLl9zaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWF4RXhwVmFsLlN0clZhbCA9IFN0clV0aWwuU2VhcmNoQW5kUmVwbGFjZVdpbGRDaGFycyh0aGlzLl9tYXhFeHBWYWwuU3RyVmFsLCB0aGlzLl9zaXplLCBDaGFyLk1heFZhbHVlKS8qJ++/vycqLztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkRpc2NhcmRNYXggPSBhd2FpdCB0aGlzLl9tYXguRGlzY2FyZENuZFJhbmdlUmVzdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdGhpcyBmdW5jdGlvbiBnZXRzIGEgdmFsdWUgYW5kIGNoZWNrcyB3aGV0aGVyIGl0IHNhdGlzZmllcyB0aGUgcmFuZ2Ugc2VjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj4tIHRoZSB2YWx1ZSB0byBiZSBjb21wYXJlZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGNoZWNrUmFuZ2UodmFsOiBzdHJpbmcsIElzTnVsbDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgbGV0IGNtcFZhbDogRXhwVmFsID0gbmV3IEV4cFZhbCh0aGlzLmdldEV4cFR5cGUoKSwgSXNOdWxsLCB2YWwpO1xyXG5cclxuICAgIGlmIChjbXBWYWwuSXNOdWxsICYmICgodGhpcy5oYXNNaW5FeHAoKSAmJiB0aGlzLl9taW5FeHBWYWwuSXNOdWxsKSB8fCAodGhpcy5oYXNNYXhFeHAoKSAmJiB0aGlzLl9tYXhFeHBWYWwuSXNOdWxsKSkpIHtcclxuICAgICAgcmVzID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBjaGVjayBtaW4gZXhwcmVzc2lvbiBDb21wbGlhbmNlXHJcbiAgICAgIGlmICh0aGlzLmhhc01pbkV4cCgpKSB7XHJcblxyXG4gICAgICAgIC8vIGlmIGJvdGggb2YgdGhlIGNvbXBhcmVkIHZhbHVlcyBhcmUgbm90IG51bGxcclxuICAgICAgICBpZiAoIXRoaXMuX21pbkV4cFZhbC5Jc051bGwgJiYgIWNtcFZhbC5Jc051bGwpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIHRoZSBjb21wYXJlZCB2YWx1ZSBtdXN0IGJlIGVxdWFsIG9yIGdyZWF0ZXIgdG8gdGhlIG1pbiB2YWx1ZVxyXG4gICAgICAgICAgICBpZiAoRXhwcmVzc2lvbkV2YWx1YXRvci52YWxfY21wX2FueShjbXBWYWwsIHRoaXMuX21pbkV4cFZhbCkgPCAwKVxyXG4gICAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoZXhjZXB0aW9uIGluc3RhbmNlb2YgTnVsbFZhbHVlRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY21wVmFsLklzTnVsbCAhPT0gdGhpcy5fbWluRXhwVmFsLklzTnVsbClcclxuICAgICAgICAgICAgcmVzID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGNoZWNrIG1heCBleHByZXNzaW9uIENvbXBsaWFuY2VcclxuICAgICAgaWYgKHRoaXMuaGFzTWF4RXhwKCkgJiYgcmVzKSB7XHJcbiAgICAgICAgLy8gaWYgYm90aCBvZiB0aGUgY29tcGFyZWQgdmFsdWVzIGFyZSBub3QgbnVsbFxyXG4gICAgICAgIGlmICghdGhpcy5fbWF4RXhwVmFsLklzTnVsbCAmJiAhY21wVmFsLklzTnVsbCkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gdGhlIGNvbXBhcmVkIHZhbHVlIG11c3QgYmUgZXF1YWwgb3IgZ3JlYXRlciB0byB0aGUgbWluIHZhbHVlXHJcbiAgICAgICAgICAgIGlmIChFeHByZXNzaW9uRXZhbHVhdG9yLnZhbF9jbXBfYW55KGNtcFZhbCwgdGhpcy5fbWF4RXhwVmFsKSA+IDApXHJcbiAgICAgICAgICAgICAgcmVzID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChleGNlcHRpb24gaW5zdGFuY2VvZiBOdWxsVmFsdWVFeGNlcHRpb24pXHJcbiAgICAgICAgICAgICAgcmVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGVtIGlzIG51bGwgYW5kIG51bGwgaXMgdGhlIGdyZWF0ZXN0IHZhbHVlIHRoZXJlIGlzIHdlIG11c3QgY2hlY2sgdGhhdCBtYXhFeHBWYWwgaXMgbm90IG51bGxcclxuICAgICAgICBlbHNlIGlmIChjbXBWYWwuSXNOdWxsICE9PSB0aGlzLl9tYXhFeHBWYWwuSXNOdWxsKVxyXG4gICAgICAgICAgcmVzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgdHJ1ZSBpZiBtaW4gZXhwcmVzc2lvbiBlcXVhbCB0byBtYXggZXhwcmVzc2lvbiBhbmQgbm8gd2lsZCBjaGFycyAoKiwgPykgZXhpc3QgaW4gdGhlIHJhbmdlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIElzTWF4RXF1YWxzTWluKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuaGFzTWF4RXhwKCkgJiYgdGhpcy5oYXNNaW5FeHAoKSkge1xyXG4gICAgICBpZiAodGhpcy5fbWluLmdldElkKCkgPT09IHRoaXMuX21heC5nZXRJZCgpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JldFR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgdGhpcy5fcmV0VHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFKVxyXG4gICAgICAgICAgcmVzdWx0ID0gIXRoaXMuV2lsZENoYXJFeGlzdCgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNoZWNrcyBpZiB3aWxkIGNoYXIgZXhpc3QgaW4gdG5lIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgV2lsZENoYXJFeGlzdCgpOiBib29sZWFuIHtcclxuICAgIGxldCB3aWxkQ2hhcnM6IHN0cmluZ1tdID0gW1wiKlwiLCBcIj9cIl07XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gY2hlY2sgdHJpbVxyXG4gICAgaWYgKCF0aGlzLl9taW5FeHBWYWwuSXNOdWxsKSB7XHJcbiAgICAgIGxldCBzdHJpbmdWYWx1ZTogc3RyaW5nID0gdGhpcy5fbWluRXhwVmFsLlN0clZhbDtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB3aWxkQ2hhcnMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoc3RyaW5nVmFsdWUuZW5kc1dpdGgod2lsZENoYXJzW2ldKSkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e0JvdW5kYXJ5OiB7MH0tezF9LCB7Mn0sIHszfX19XCIsIFtcclxuICAgICAgdGhpcy5fbWF4LCB0aGlzLl9tYXgsIHRoaXMuX3JldFR5cGUsIHRoaXMuX3NpemVcclxuICAgIF0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|