@cartanova/qgrid-cli 2.4.8 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +18 -11
- package/README.md +18 -11
- package/bundle/.env +0 -0
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorate.js +2 -2
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorateMetadata.js +2 -2
- package/bundle/dist/_virtual/_rolldown/runtime.js +2 -3
- package/bundle/dist/application/monit/log-buffer.js +3 -2
- package/bundle/dist/application/monit/monit.frame.js +5 -6
- package/bundle/dist/application/monit/monit.types.js +1 -2
- package/bundle/dist/application/qgrid/conv-routing.js +1 -2
- package/bundle/dist/application/qgrid/oauth.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-response-format.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +76 -47
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +1 -2
- package/bundle/dist/application/qgrid/qgrid.frame.js +73 -97
- package/bundle/dist/application/qgrid/qgrid.types.js +11 -10
- package/bundle/dist/application/qgrid/token-subscriber.js +3 -2
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -2
- package/bundle/dist/application/qgrid/tool-emulation.js +1 -2
- package/bundle/dist/application/queries.generated.js +1 -2
- package/bundle/dist/application/request-log/request-log.model.js +116 -47
- package/bundle/dist/application/request-log/request-log.types.js +1 -2
- package/bundle/dist/application/request-log-step/request-log-step.model.js +3 -4
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -2
- package/bundle/dist/application/sonamu.generated.js +14 -15
- package/bundle/dist/application/sonamu.generated.sso.js +1 -2
- package/bundle/dist/application/token/token.model.js +3 -4
- package/bundle/dist/application/token/token.types.js +1 -2
- package/bundle/dist/codex-protocol/AbsolutePathBuf.js +0 -1
- package/bundle/dist/codex-protocol/AgentPath.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/AuthMode.js +0 -1
- package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
- package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
- package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
- package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
- package/bundle/dist/codex-protocol/ContentItem.js +0 -1
- package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
- package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/FileChange.js +0 -1
- package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitSha.js +0 -1
- package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
- package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
- package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
- package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
- package/bundle/dist/codex-protocol/InputModality.js +0 -1
- package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
- package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
- package/bundle/dist/codex-protocol/ModeKind.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
- package/bundle/dist/codex-protocol/Personality.js +0 -1
- package/bundle/dist/codex-protocol/PlanType.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/RequestId.js +0 -1
- package/bundle/dist/codex-protocol/Resource.js +0 -1
- package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
- package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
- package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
- package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
- package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
- package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
- package/bundle/dist/codex-protocol/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/Settings.js +0 -1
- package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
- package/bundle/dist/codex-protocol/ThreadId.js +0 -1
- package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
- package/bundle/dist/codex-protocol/Tool.js +0 -1
- package/bundle/dist/codex-protocol/Verbosity.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
- package/bundle/dist/codex-protocol/index.js +0 -1
- package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
- package/bundle/dist/codex-protocol/v2/Account.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/Config.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
- package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
- package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
- package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
- package/bundle/dist/codex-protocol/v2/Model.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
- package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
- package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
- package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
- package/bundle/dist/i18n/en.js +1 -2
- package/bundle/dist/i18n/ko.js +1 -2
- package/bundle/dist/i18n/sd.generated.js +54 -21
- package/bundle/dist/index.js +1 -2
- package/bundle/dist/migrations/20260410171405_create__request_logs.js +1 -2
- package/bundle/dist/migrations/20260410171406_create__tokens.js +1 -2
- package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +1 -2
- package/bundle/dist/migrations/20260415113716_alter_tokens_add_ord.js +1 -2
- package/bundle/dist/migrations/20260415134649_alter_request_logs_alter1.js +1 -2
- package/bundle/dist/migrations/20260421223627_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423180818_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423182017_alter_request_logs_add2_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423183613_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +1 -2
- package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +1 -2
- package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +1 -2
- package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +1 -2
- package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +1 -2
- package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +1 -2
- package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +1 -2
- package/bundle/dist/migrations/20260630223950_alter_tokens_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105327_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105328_alter_request_log_steps_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260705140614_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260706120000_alter_request_logs_add_image_cost.js +1 -2
- package/bundle/dist/migrations/20260710090000_alter_tokens_add_weight.js +1 -2
- package/bundle/dist/migrations/20260718180824_alter_request_logs_add5_alter1.js +1 -2
- package/bundle/dist/migrations/20260718180825_alter_request_log_steps_add7_alter1.js +1 -2
- package/bundle/dist/migrations/20260722174410_alter_request_logs_alter3.js +17 -0
- package/bundle/dist/migrations/20260722174411_alter_request_log_steps_alter3.js +17 -0
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +255 -4
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +1507 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +887 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +2756 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +922 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +386 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +121 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +51 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +1317 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +561 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +40 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +272 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +27 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +77 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +381 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +51 -0
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +103 -3
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +1 -1
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +2 -3
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +4 -4
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +2 -2
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +18 -7
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +18 -3
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_2519c2e8d8013fcbc7b443879bc9da6d/node_modules/vite/dist/node/module-runner.js +1265 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -3
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +8 -8
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +5 -5
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +3 -3
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +46 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +66 -6
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +3044 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +19 -4
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/index.js +28 -0
- package/bundle/dist/server-bootstrap.js +1 -2
- package/bundle/dist/sonamu.config.js +11 -27
- package/bundle/dist/startup-migrations.js +1 -2
- package/bundle/dist/testing/fixture.js +1 -2
- package/bundle/dist/testing/global.js +6 -7
- package/bundle/dist/testing/setup-mocks.js +3 -4
- package/bundle/dist/testing/test-database-name.js +5 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +8 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +1 -2
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +1 -2
- package/bundle/dist/utils/providers/anthropic/claude-session.js +5 -7
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +1 -2
- package/bundle/dist/utils/providers/common/credentials.js +1 -2
- package/bundle/dist/utils/providers/common/model-cost.js +3 -3
- package/bundle/dist/utils/providers/common/provider-dispatcher.js +0 -1
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -2
- package/bundle/dist/utils/providers/common/strictifier.js +2 -2
- package/bundle/dist/utils/providers/common/token-picker.js +1 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -2
- package/bundle/dist/utils/providers/openai/codex-rpc.js +4 -2
- package/bundle/dist/utils/providers/openai/codex-worker.js +2 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +103 -40
- package/bundle/dist/utils/providers/openai/openai-quota.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-refresh.js +1 -2
- package/bundle/dist/utils/subset-loaders.js +1 -2
- package/bundle/src/application/monit/monit.frame.test.ts +2 -2
- package/bundle/src/application/monit/monit.frame.ts +2 -2
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +242 -8
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +97 -57
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +400 -96
- package/bundle/src/application/qgrid/qgrid.frame.ts +85 -123
- package/bundle/src/application/qgrid/qgrid.types.ts +35 -27
- package/bundle/src/application/request-log/request-log.entity.json +2 -2
- package/bundle/src/application/request-log/request-log.model.test.ts +325 -21
- package/bundle/src/application/request-log/request-log.model.ts +233 -125
- package/bundle/src/application/request-log-step/request-log-step.entity.json +2 -2
- package/bundle/src/application/sonamu.generated.http +2 -2
- package/bundle/src/application/sonamu.generated.ts +13 -13
- package/bundle/src/i18n/sd.generated.ts +83 -14
- package/bundle/src/migrations/20260722174410_alter_request_logs_alter3.ts +19 -0
- package/bundle/src/migrations/20260722174411_alter_request_log_steps_alter3.ts +19 -0
- package/bundle/src/sonamu.config.ts +5 -23
- package/bundle/src/testing/global.ts +5 -5
- package/bundle/src/testing/test-database-name.test.ts +5 -5
- package/bundle/src/testing/test-database-name.ts +9 -8
- package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +10 -6
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +9 -5
- package/bundle/src/utils/providers/anthropic/claude-session.test.ts +18 -3
- package/bundle/src/utils/providers/anthropic/claude-session.ts +4 -4
- package/bundle/src/utils/providers/common/model-cost.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.ts +1 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +440 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +143 -45
- package/bundle/web-dist/client/assets/{index-CmuPjbCl.js → index-B8Qj0LZK.js} +3 -3
- package/bundle/web-dist/client/assets/logs-C7R8Hvyy.js +1 -0
- package/bundle/web-dist/client/assets/{monit-B5Edhvy-.js → monit-Cj2KSodR.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-UPWScORY.js → routes-DI1rjqGY.js} +1 -1
- package/bundle/web-dist/client/assets/{sd.generated-DYuKzBY6.js → sd.generated-DbBC73_z.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-D_SkWOo-.js → services.generated-BWyAypSh.js} +1 -1
- package/bundle/web-dist/client/assets/{show-pRp-eZIK.js → show-B9hDSX9F.js} +2 -2
- package/bundle/web-dist/client/assets/{tokens-DJlttxCM.js → tokens-xUexYz3u.js} +1 -1
- package/bundle/web-dist/client/assets/{use-update-token-mutation-CpFGLWUl.js → use-update-token-mutation-DeDBiZiM.js} +1 -1
- package/bundle/web-dist/client/index.html +2 -2
- package/bundle/web-dist/server/assets/{lazyRouteComponent-Cu6IkL8A.js → lazyRouteComponent-BCJr868T.js} +1 -1
- package/bundle/web-dist/server/assets/{logs-Dx2knN2T.js → logs-33YNafdW.js} +32 -11
- package/bundle/web-dist/server/assets/{monit-DU6PLatf.js → monit--9mVsjNU.js} +2 -2
- package/bundle/web-dist/server/assets/{routes-CTco1oJZ.js → routes-BK3Xh1UB.js} +3 -3
- package/bundle/web-dist/server/assets/{sd.generated-qzuRe35X.js → sd.generated-C3gcvRcU.js} +1 -0
- package/bundle/web-dist/server/assets/{services.generated-C8q1M41a.js → services.generated-B2_Auwvk.js} +1 -1
- package/bundle/web-dist/server/assets/{show-B3q8_GDh.js → show-Dxxxe608.js} +15 -9
- package/bundle/web-dist/server/assets/{tokens-Bvjn15h9.js → tokens-BWPVvdfi.js} +3 -3
- package/bundle/web-dist/server/assets/{use-update-token-mutation-BlZo6swF.js → use-update-token-mutation-CNBgTysy.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +23 -23
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +18 -12
- package/package.json +6 -6
- package/skills/qgrid/SKILL.md +4 -0
- package/skills/qgrid/references/ai-sdk-provider-contract.md +28 -2
- package/skills/qgrid/references/anthropic-claude-code-runtime.md +5 -4
- package/skills/qgrid/references/cli-env-and-server-boot.md +20 -8
- package/skills/qgrid/references/decision-rationale.md +4 -0
- package/skills/qgrid/references/docs-workflow.md +10 -0
- package/skills/qgrid/references/openai-codex-runtime.md +11 -3
- package/skills/qgrid/references/provider-runtime-differences.md +3 -3
- package/skills/qgrid/references/request-log-run-lifecycle.md +46 -28
- package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +6 -0
- package/skills/qgrid/references/tool-calling-and-multiturn.md +8 -7
- package/skills/qgrid/references/verification-and-debugging.md +1 -1
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/index.js +0 -28
- package/bundle/web-dist/client/assets/logs-cXOsDli3.js +0 -1
|
@@ -1,12 +1,45 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import { SD } from "../../i18n/sd.generated.js";
|
|
3
2
|
import { requestLogLoaderQueries, requestLogSubsetQueries } from "../sonamu.generated.sso.js";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorateMetadata.js";
|
|
4
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
|
|
6
5
|
import { calculateCostUsd } from "../../utils/providers/common/model-cost.js";
|
|
7
|
-
import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
|
|
6
|
+
import { BadRequestException, BaseModelClass, NotFoundException, Puri, api, asArray, exhaustive, transactional } from "sonamu";
|
|
8
7
|
//#region src/application/request-log/request-log.model.ts
|
|
9
8
|
const MICRO_USD = 1e6;
|
|
9
|
+
const REQUEST_LOG_RUN_LOCK_CLASS_ID = 718;
|
|
10
|
+
const STEP_AGGREGATE_SELECT = {
|
|
11
|
+
input_tokens: "input_tokens",
|
|
12
|
+
output_tokens: "output_tokens",
|
|
13
|
+
cache_read_tokens: "cache_read_tokens",
|
|
14
|
+
cache_creation_tokens: "cache_creation_tokens",
|
|
15
|
+
cache_creation_5m_tokens: "cache_creation_5m_tokens",
|
|
16
|
+
cache_creation_1h_tokens: "cache_creation_1h_tokens",
|
|
17
|
+
duration_ms: "duration_ms",
|
|
18
|
+
fallback_count: "fallback_count",
|
|
19
|
+
cost_usd: "cost_usd",
|
|
20
|
+
cost_source: "cost_source"
|
|
21
|
+
};
|
|
22
|
+
function aggregateGenerateStepRows(rows) {
|
|
23
|
+
const sum = (field) => rows.reduce((total, row) => total + Number(row[field] ?? 0), 0);
|
|
24
|
+
const optionalSum = (field) => rows.some((row) => row[field] !== null && row[field] !== void 0) ? sum(field) : void 0;
|
|
25
|
+
const collapse = (field) => {
|
|
26
|
+
const values = [...new Set(rows.map((row) => row[field]).filter((value) => typeof value === "string" && value.length > 0))];
|
|
27
|
+
if (values.length === 0) return void 0;
|
|
28
|
+
return values.length === 1 ? values[0] : "mixed";
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
input_tokens: sum("input_tokens"),
|
|
32
|
+
output_tokens: sum("output_tokens"),
|
|
33
|
+
cache_read_tokens: sum("cache_read_tokens"),
|
|
34
|
+
cache_creation_tokens: sum("cache_creation_tokens"),
|
|
35
|
+
cache_creation_5m_tokens: optionalSum("cache_creation_5m_tokens"),
|
|
36
|
+
cache_creation_1h_tokens: optionalSum("cache_creation_1h_tokens"),
|
|
37
|
+
duration_ms: sum("duration_ms"),
|
|
38
|
+
fallback_count: sum("fallback_count"),
|
|
39
|
+
cost_usd: sum("cost_usd"),
|
|
40
|
+
cost_source: collapse("cost_source")
|
|
41
|
+
};
|
|
42
|
+
}
|
|
10
43
|
function isAnthropicUsageRow(row) {
|
|
11
44
|
return row.token_name?.startsWith("anthropic/") === true || row.model_name?.startsWith("claude-") === true || row.model_name?.startsWith("anthropic/claude-") === true;
|
|
12
45
|
}
|
|
@@ -104,7 +137,8 @@ var RequestLogModelClass = class extends BaseModelClass {
|
|
|
104
137
|
wdb.ubRegister("request_logs", {
|
|
105
138
|
user_prompt: params.user_prompt,
|
|
106
139
|
system_prompt: params.system_prompt ?? null,
|
|
107
|
-
|
|
140
|
+
requested_model_name: params.requested_model_name ?? null,
|
|
141
|
+
model_name: null,
|
|
108
142
|
effort: params.effort ?? null,
|
|
109
143
|
project_name: params.project_name ?? null,
|
|
110
144
|
status: "running",
|
|
@@ -163,7 +197,7 @@ var RequestLogModelClass = class extends BaseModelClass {
|
|
|
163
197
|
if (params.history !== void 0) update.history = params.history;
|
|
164
198
|
update.ttft_ms = await this.firstGenerateStepTtft(requestLogId) ?? 0;
|
|
165
199
|
if (params.cost_usd === void 0 && params.input_tokens !== void 0 && params.output_tokens !== void 0) {
|
|
166
|
-
const
|
|
200
|
+
const row = await this.getPuri("r").from("request_logs").select({ model_name: "model_name" }).where("id", requestLogId).first();
|
|
167
201
|
const effectiveModelName = params.model_name ?? row?.model_name;
|
|
168
202
|
if (effectiveModelName) {
|
|
169
203
|
const model = canonicalModelName(effectiveModelName);
|
|
@@ -195,55 +229,74 @@ var RequestLogModelClass = class extends BaseModelClass {
|
|
|
195
229
|
});
|
|
196
230
|
}
|
|
197
231
|
async firstGenerateStepTtft(requestLogId) {
|
|
198
|
-
const
|
|
232
|
+
const row = await this.getPuri("r").from("request_log_steps").select({ ttft_ms: "ttft_ms" }).where("request_log_id", requestLogId).where("type", "generate").where("ttft_ms", "!=", null).orderBy("step_index", "asc").orderBy("id", "asc").first();
|
|
199
233
|
return row?.ttft_ms === null || row?.ttft_ms === void 0 ? null : Number(row.ttft_ms);
|
|
200
234
|
}
|
|
201
235
|
async aggregateStepUsage(requestLogId) {
|
|
202
|
-
|
|
203
|
-
const sum = (field) => rows.reduce((total, row) => total + Number(row[field] ?? 0), 0);
|
|
204
|
-
const optionalSum = (field) => rows.some((row) => row[field] !== null && row[field] !== void 0) ? sum(field) : void 0;
|
|
205
|
-
const collapse = (field) => {
|
|
206
|
-
const values = [...new Set(rows.map((row) => row[field]).filter((value) => typeof value === "string" && value.length > 0))];
|
|
207
|
-
if (values.length === 0) return void 0;
|
|
208
|
-
return values.length === 1 ? values[0] : "mixed";
|
|
209
|
-
};
|
|
210
|
-
return {
|
|
211
|
-
input_tokens: sum("input_tokens"),
|
|
212
|
-
output_tokens: sum("output_tokens"),
|
|
213
|
-
cache_read_tokens: sum("cache_read_tokens"),
|
|
214
|
-
cache_creation_tokens: sum("cache_creation_tokens"),
|
|
215
|
-
cache_creation_5m_tokens: optionalSum("cache_creation_5m_tokens"),
|
|
216
|
-
cache_creation_1h_tokens: optionalSum("cache_creation_1h_tokens"),
|
|
217
|
-
duration_ms: sum("duration_ms"),
|
|
218
|
-
requested_model_name: collapse("requested_model_name"),
|
|
219
|
-
model_name: collapse("model_name"),
|
|
220
|
-
fallback_count: sum("fallback_count"),
|
|
221
|
-
cost_usd: sum("cost_usd"),
|
|
222
|
-
cost_source: collapse("cost_source")
|
|
223
|
-
};
|
|
236
|
+
return aggregateGenerateStepRows(await this.getPuri("r").from("request_log_steps").select(STEP_AGGREGATE_SELECT).where("request_log_id", requestLogId).where("type", "generate"));
|
|
224
237
|
}
|
|
225
|
-
|
|
226
|
-
|
|
238
|
+
/**
|
|
239
|
+
* Finds stale candidates, then expires each run in its own short transaction.
|
|
240
|
+
* The candidate query is only a hint; the transactional operation rechecks it
|
|
241
|
+
* after acquiring the advisory lock shared with tool follow-ups.
|
|
242
|
+
*/
|
|
243
|
+
async expireStaleToolWaitingRuns(thresholdMs, errorMessage, limit = 10) {
|
|
227
244
|
const threshold = new Date(Date.now() - thresholdMs);
|
|
228
|
-
|
|
245
|
+
const candidateIds = await this.findStaleToolWaitingRunCandidates(threshold, limit);
|
|
246
|
+
const expiredIds = [];
|
|
247
|
+
for (const requestLogId of candidateIds) if (await this.tryExpireStaleToolWaitingRun(requestLogId, threshold, errorMessage)) expiredIds.push(requestLogId);
|
|
248
|
+
return expiredIds;
|
|
229
249
|
}
|
|
230
|
-
async
|
|
231
|
-
|
|
232
|
-
return (row?.maxStep ?? -1) + 1;
|
|
250
|
+
async findStaleToolWaitingRunCandidates(threshold, limit) {
|
|
251
|
+
return (await this.getPuri("w").from("request_logs").join("request_log_steps", "request_logs.id", "request_log_steps.request_log_id").distinct("request_logs.id").select({ id: "request_logs.id" }).where("request_logs.status", "running").where("request_log_steps.type", "tool_call").where("request_log_steps.created_at", "<", threshold).where("request_log_steps.tool_result", null).where("request_log_steps.error", null).limit(limit)).map(({ id }) => id);
|
|
233
252
|
}
|
|
234
|
-
async
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
253
|
+
async tryExpireStaleToolWaitingRun(requestLogId, threshold, errorMessage) {
|
|
254
|
+
const wdb = this.getPuri("w");
|
|
255
|
+
if ((await wdb.knex.raw("SELECT pg_try_advisory_xact_lock(?, ?) AS acquired", [REQUEST_LOG_RUN_LOCK_CLASS_ID, requestLogId])).rows?.[0]?.acquired !== true) return false;
|
|
256
|
+
if (!await wdb.from("request_log_steps").select({ id: "id" }).where("request_log_id", requestLogId).where("type", "tool_call").where("created_at", "<", threshold).where("tool_result", null).where("error", null).first()) return false;
|
|
257
|
+
const aggregate = aggregateGenerateStepRows(await wdb.from("request_log_steps").select(STEP_AGGREGATE_SELECT).where("request_log_id", requestLogId).where("type", "generate"));
|
|
258
|
+
const firstTtft = await wdb.from("request_log_steps").select({ ttft_ms: "ttft_ms" }).where("request_log_id", requestLogId).where("type", "generate").where("ttft_ms", "!=", null).orderBy("step_index", "asc").orderBy("id", "asc").first();
|
|
259
|
+
return await wdb.from("request_logs").where("id", requestLogId).where("status", "running").update({
|
|
260
|
+
status: "error",
|
|
261
|
+
error_message: errorMessage,
|
|
262
|
+
input_tokens: aggregate.input_tokens,
|
|
263
|
+
output_tokens: aggregate.output_tokens,
|
|
264
|
+
cache_read_tokens: aggregate.cache_read_tokens,
|
|
265
|
+
cache_creation_tokens: aggregate.cache_creation_tokens,
|
|
266
|
+
...aggregate.cache_creation_5m_tokens !== void 0 ? { cache_creation_5m_tokens: aggregate.cache_creation_5m_tokens } : {},
|
|
267
|
+
...aggregate.cache_creation_1h_tokens !== void 0 ? { cache_creation_1h_tokens: aggregate.cache_creation_1h_tokens } : {},
|
|
268
|
+
duration_ms: aggregate.duration_ms,
|
|
269
|
+
fallback_count: aggregate.fallback_count,
|
|
270
|
+
cost_usd: aggregate.cost_usd,
|
|
271
|
+
...aggregate.cost_source !== void 0 ? { cost_source: aggregate.cost_source } : {},
|
|
272
|
+
ttft_ms: firstTtft?.ttft_ms === null || firstTtft?.ttft_ms === void 0 ? 0 : Number(firstTtft.ttft_ms)
|
|
273
|
+
}) > 0;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Applies a native qgrid tool follow-up and computes its next step index while
|
|
277
|
+
* holding the per-run advisory lock shared with stale cleanup.
|
|
278
|
+
*/
|
|
279
|
+
async continueToolRun(requestLogId, toolResults) {
|
|
280
|
+
const wdb = this.getPuri("w");
|
|
281
|
+
await wdb.knex.raw("SELECT pg_advisory_xact_lock(?, ?)", [REQUEST_LOG_RUN_LOCK_CLASS_ID, requestLogId]);
|
|
282
|
+
const run = await wdb.from("request_logs").select({ status: "status" }).where("id", requestLogId).first();
|
|
283
|
+
if (!run) throw new Error(`request log run ${requestLogId} not found`);
|
|
284
|
+
if (run.status !== "running") throw new Error(`request log run ${requestLogId} is already ${run.status}`);
|
|
285
|
+
for (const result of toolResults) await wdb.from("request_log_steps").where("request_log_id", requestLogId).where("tool_call_id", result.toolCallId).where("type", "tool_call").update(result.isError ? { error: result.output } : { tool_result: result.output });
|
|
286
|
+
return ((await wdb.from("request_log_steps").select({ max_step: Puri.max("step_index") }).where("request_log_id", requestLogId).first())?.max_step ?? -1) + 1;
|
|
242
287
|
}
|
|
243
288
|
async totalCost(params = {}) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
289
|
+
return (await this.getPuri("r").from("request_logs").where(params.token_name ? { token_name: params.token_name } : {}).select({
|
|
290
|
+
model_name: "model_name",
|
|
291
|
+
input_tokens: "input_tokens",
|
|
292
|
+
output_tokens: "output_tokens",
|
|
293
|
+
cache_read_tokens: "cache_read_tokens",
|
|
294
|
+
cache_creation_tokens: "cache_creation_tokens",
|
|
295
|
+
cache_creation_5m_tokens: "cache_creation_5m_tokens",
|
|
296
|
+
cache_creation_1h_tokens: "cache_creation_1h_tokens",
|
|
297
|
+
cost_usd: "cost_usd",
|
|
298
|
+
cost_source: "cost_source"
|
|
299
|
+
})).reduce((sum, row) => {
|
|
247
300
|
if (row.cost_source && row.cost_usd !== null) return sum + Math.max(row.cost_usd, 0) / MICRO_USD;
|
|
248
301
|
const usage = normalizedUsageForCost(row);
|
|
249
302
|
if (!usage.model) return sum + Math.max(row.cost_usd ?? 0, 0) / MICRO_USD;
|
|
@@ -297,6 +350,22 @@ __decorate([
|
|
|
297
350
|
__decorateMetadata("design:paramtypes", [Array]),
|
|
298
351
|
__decorateMetadata("design:returntype", Promise)
|
|
299
352
|
], RequestLogModelClass.prototype, "save", null);
|
|
353
|
+
__decorate([
|
|
354
|
+
transactional({ dbPreset: "w" }),
|
|
355
|
+
__decorateMetadata("design:type", Function),
|
|
356
|
+
__decorateMetadata("design:paramtypes", [
|
|
357
|
+
Number,
|
|
358
|
+
typeof Date === "undefined" ? Object : Date,
|
|
359
|
+
String
|
|
360
|
+
]),
|
|
361
|
+
__decorateMetadata("design:returntype", Promise)
|
|
362
|
+
], RequestLogModelClass.prototype, "tryExpireStaleToolWaitingRun", null);
|
|
363
|
+
__decorate([
|
|
364
|
+
transactional({ dbPreset: "w" }),
|
|
365
|
+
__decorateMetadata("design:type", Function),
|
|
366
|
+
__decorateMetadata("design:paramtypes", [Number, Array]),
|
|
367
|
+
__decorateMetadata("design:returntype", Promise)
|
|
368
|
+
], RequestLogModelClass.prototype, "continueToolRun", null);
|
|
300
369
|
__decorate([
|
|
301
370
|
api({
|
|
302
371
|
httpMethod: "POST",
|
|
@@ -310,4 +379,4 @@ const RequestLogModel = new RequestLogModelClass();
|
|
|
310
379
|
//#endregion
|
|
311
380
|
export { MICRO_USD, RequestLogModel };
|
|
312
381
|
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwaSxcbiAgYXNBcnJheSxcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgQmFzZU1vZGVsQ2xhc3MsXG4gIGV4aGF1c3RpdmUsXG4gIHR5cGUgTGlzdFJlc3VsdCxcbiAgTm90Rm91bmRFeGNlcHRpb24sXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUNvc3RVc2QgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0XCI7XG5pbXBvcnQgeyB0eXBlIFJlcXVlc3RMb2dTdWJzZXRLZXksIHR5cGUgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMsIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvXCI7XG5pbXBvcnQgeyB0eXBlIFJlcXVlc3RMb2dMaXN0UGFyYW1zLCB0eXBlIFJlcXVlc3RMb2dTYXZlUGFyYW1zIH0gZnJvbSBcIi4vcmVxdWVzdC1sb2cudHlwZXNcIjtcblxuLy8gY29zdF91c2TripQg7KCV7IiYIG1pY3JvLVVTROuhnCDsoIDsnqUuIOyLpOygnCBVU0QgPSBjb3N0X3VzZCAvIE1JQ1JPX1VTRC5cbmV4cG9ydCBjb25zdCBNSUNST19VU0QgPSAxXzAwMF8wMDA7XG5cbnR5cGUgUmVxdWVzdExvZ1VzYWdlUm93ID0ge1xuICB0b2tlbl9uYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgbW9kZWxfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGlucHV0X3Rva2VuczogbnVtYmVyO1xuICBvdXRwdXRfdG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlX3JlYWRfdG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogbnVtYmVyO1xuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM/OiBudW1iZXIgfCBudWxsO1xuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM/OiBudW1iZXIgfCBudWxsO1xuICBjb3N0X3VzZD86IG51bWJlciB8IG51bGw7XG4gIGNvc3Rfc291cmNlPzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmZ1bmN0aW9uIGlzQW50aHJvcGljVXNhZ2VSb3cocm93OiBQaWNrPFJlcXVlc3RMb2dVc2FnZVJvdywgXCJ0b2tlbl9uYW1lXCIgfCBcIm1vZGVsX25hbWVcIj4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICByb3cudG9rZW5fbmFtZT8uc3RhcnRzV2l0aChcImFudGhyb3BpYy9cIikgPT09IHRydWUgfHxcbiAgICByb3cubW9kZWxfbmFtZT8uc3RhcnRzV2l0aChcImNsYXVkZS1cIikgPT09IHRydWUgfHxcbiAgICByb3cubW9kZWxfbmFtZT8uc3RhcnRzV2l0aChcImFudGhyb3BpYy9jbGF1ZGUtXCIpID09PSB0cnVlXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbE1vZGVsTmFtZShtb2RlbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBtb2RlbE5hbWUuaW5jbHVkZXMoXCIvXCIpID8gbW9kZWxOYW1lLnNwbGl0KFwiL1wiKS5wb3AoKSEgOiBtb2RlbE5hbWU7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZWRVc2FnZUZvckNvc3Qocm93OiBSZXF1ZXN0TG9nVXNhZ2VSb3cpOiB7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBpbnB1dFRva2VuczogbnVtYmVyO1xuICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgY2FjaGVkSW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtPzogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaD86IG51bWJlcjtcbn0ge1xuICBjb25zdCBjYWNoZVJlYWQgPSByb3cuY2FjaGVfcmVhZF90b2tlbnM7XG4gIGNvbnN0IGNhY2hlQ3JlYXRpb24gPSByb3cuY2FjaGVfY3JlYXRpb25fdG9rZW5zO1xuICBjb25zdCBzdG9yZWRJbnB1dCA9IHJvdy5pbnB1dF90b2tlbnM7XG4gIGNvbnN0IGxlZ2FjeUFudGhyb3BpY1NwbGl0SW5wdXQgPVxuICAgIGlzQW50aHJvcGljVXNhZ2VSb3cocm93KSAmJiBzdG9yZWRJbnB1dCA8IGNhY2hlUmVhZCArIGNhY2hlQ3JlYXRpb247XG4gIHJldHVybiB7XG4gICAgbW9kZWw6IHJvdy5tb2RlbF9uYW1lID8gY2Fub25pY2FsTW9kZWxOYW1lKHJvdy5tb2RlbF9uYW1lKSA6IG51bGwsXG4gICAgaW5wdXRUb2tlbnM6IGxlZ2FjeUFudGhyb3BpY1NwbGl0SW5wdXQgPyBzdG9yZWRJbnB1dCArIGNhY2hlUmVhZCArIGNhY2hlQ3JlYXRpb24gOiBzdG9yZWRJbnB1dCxcbiAgICBvdXRwdXRUb2tlbnM6IHJvdy5vdXRwdXRfdG9rZW5zLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiBjYWNoZVJlYWQsXG4gICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiBjYWNoZUNyZWF0aW9uLFxuICAgIC4uLihyb3cuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zICE9PSBudWxsICYmIHJvdy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtOiByb3cuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zIH1cbiAgICAgIDoge30pLFxuICAgIC4uLihyb3cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zICE9PSBudWxsICYmIHJvdy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoOiByb3cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zIH1cbiAgICAgIDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVMZWdhY3lBbnRocm9waWNSb3c8VCBleHRlbmRzIFJlcXVlc3RMb2dVc2FnZVJvdz4ocm93OiBUKTogVCB7XG4gIC8vIOyDiCByb3cg64qUIOuLueyLnOydmCBwcm92aWRlci/qsIDqsqntkZwg67mE7Jqp7J2EIO2ZleyglSDsoIDsnqXtlZzri6QuIO2YhOyerCDqsIDqsqntkZzroZwg642u7Ja07JOw7KeAIOyViuuKlOuLpC5cbiAgaWYgKHJvdy5jb3N0X3NvdXJjZSkgcmV0dXJuIHJvdztcbiAgY29uc3QgdXNhZ2UgPSBub3JtYWxpemVkVXNhZ2VGb3JDb3N0KHJvdyk7XG4gIGlmICh1c2FnZS5pbnB1dFRva2VucyA9PT0gcm93LmlucHV0X3Rva2VucykgcmV0dXJuIHJvdztcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHsgLi4ucm93LCBpbnB1dF90b2tlbnM6IHVzYWdlLmlucHV0VG9rZW5zIH07XG4gIGlmICh1c2FnZS5tb2RlbCkge1xuICAgIG5vcm1hbGl6ZWQuY29zdF91c2QgPSBNYXRoLnJvdW5kKGNhbGN1bGF0ZUNvc3RVc2QodXNhZ2UubW9kZWwsIHVzYWdlKSAqIE1JQ1JPX1VTRCk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qXG4gIFJlcXVlc3RMb2cgTW9kZWxcbiovXG5jbGFzcyBSZXF1ZXN0TG9nTW9kZWxDbGFzcyBleHRlbmRzIEJhc2VNb2RlbENsYXNzPFxuICBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZyxcbiAgdHlwZW9mIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzLFxuICB0eXBlb2YgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXNcbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlJlcXVlc3RMb2dcIiwgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMsIHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiUmVxdWVzdExvZ1wiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZ1tUXT4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHtcbiAgICAgIGlkLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcbiAgICBpZiAoIXJvd3NbMF0pIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbihTRChcImVycm9yLmVudGl0eU5vdEZvdW5kXCIpKFwiUmVxdWVzdExvZ1wiLCBpZCkpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6IFJlcXVlc3RMb2dMaXN0UGFyYW1zLFxuICApOiBQcm9taXNlPFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nW1RdIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHtcbiAgICAgIC4uLmxpc3RQYXJhbXMsXG4gICAgICBudW06IDEsXG4gICAgICBwYWdlOiAxLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvd3NbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiUmVxdWVzdExvZ3NcIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N1YnNldEtleSwgTFAgZXh0ZW5kcyBSZXF1ZXN0TG9nTGlzdFBhcmFtcz4oXG4gICAgc3Vic2V0OiBULFxuICAgIHJhd1BhcmFtcz86IExQLFxuICApOiBQcm9taXNlPExpc3RSZXN1bHQ8TFAsIFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIG51bTogMjQsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoOiBcImlkXCIgYXMgY29uc3QsXG4gICAgICBvcmRlckJ5OiBcImlkLWRlc2NcIiBhcyBjb25zdCxcbiAgICAgIC4uLnJhd1BhcmFtcyxcbiAgICB9IHNhdGlzZmllcyBSZXF1ZXN0TG9nTGlzdFBhcmFtcztcblxuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCJyZXF1ZXN0X2xvZ3MuaWRcIiwgYXNBcnJheShwYXJhbXMuaWQpKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnRva2VuX25hbWUpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIiwgcGFyYW1zLnRva2VuX25hbWUpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMucHJvamVjdF9uYW1lX2lzX251bGwpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnByb2plY3RfbmFtZVwiLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wcm9qZWN0X25hbWVfaXNfbm90X251bGwpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnByb2plY3RfbmFtZVwiLCBcIiE9XCIsIG51bGwpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLnByb2plY3RfbmFtZSkge1xuICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsIHBhcmFtcy5wcm9qZWN0X25hbWUpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMubW9kZWxfbmFtZSkge1xuICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MubW9kZWxfbmFtZVwiLCBwYXJhbXMubW9kZWxfbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5zZWFyY2ggJiYgcGFyYW1zLmtleXdvcmQgJiYgcGFyYW1zLmtleXdvcmQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwiaWRcIikge1xuICAgICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy5pZFwiLCBOdW1iZXIocGFyYW1zLmtleXdvcmQpKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJ0b2tlbl9uYW1lXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLCBcImxpa2VcIiwgYCUke3BhcmFtcy5rZXl3b3JkfSVgKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJ1c2VyX3Byb21wdFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnVzZXJfcHJvbXB0XCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIC8vIGRlZmF1bHQgb3JkZXJCeVxuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwicmVxdWVzdF9sb2dzLmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgIEE6IChyb3cpID0+IG5vcm1hbGl6ZUxlZ2FjeUFudGhyb3BpY1Jvdyhyb3cpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zLFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHNhdmUoc3BhOiBSZXF1ZXN0TG9nU2F2ZVBhcmFtc1tdKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyByZWdpc3RlclxuICAgIHNwYS5mb3JFYWNoKChzcCkgPT4ge1xuICAgICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ3NcIiwgc3ApO1xuICAgIH0pO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICByZXR1cm4gd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRyeC51YlVwc2VydChcInJlcXVlc3RfbG9nc1wiKTtcblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSdW4gTGlmZWN5Y2xlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGFzeW5jIGNyZWF0ZVJ1bihwYXJhbXM6IHtcbiAgICB1c2VyX3Byb21wdDogc3RyaW5nO1xuICAgIHN5c3RlbV9wcm9tcHQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIG1vZGVsX25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIGVmZm9ydD86IHN0cmluZyB8IG51bGw7XG4gICAgcHJvamVjdF9uYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICBoaXN0b3J5PzogdW5rbm93bjtcbiAgICBpc19pbWFnZV9nZW5lcmF0aW9uPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcbiAgICB3ZGIudWJSZWdpc3RlcihcInJlcXVlc3RfbG9nc1wiLCB7XG4gICAgICB1c2VyX3Byb21wdDogcGFyYW1zLnVzZXJfcHJvbXB0LFxuICAgICAgc3lzdGVtX3Byb21wdDogcGFyYW1zLnN5c3RlbV9wcm9tcHQgPz8gbnVsbCxcbiAgICAgIG1vZGVsX25hbWU6IHBhcmFtcy5tb2RlbF9uYW1lID8/IG51bGwsXG4gICAgICBlZmZvcnQ6IHBhcmFtcy5lZmZvcnQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RfbmFtZTogcGFyYW1zLnByb2plY3RfbmFtZSA/PyBudWxsLFxuICAgICAgc3RhdHVzOiBcInJ1bm5pbmdcIixcbiAgICAgIHJlc3BvbnNlOiBcIlwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiAwLFxuICAgICAgb3V0cHV0X3Rva2VuczogMCxcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiAwLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiAwLFxuICAgICAgZHVyYXRpb25fbXM6IDAsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IDAsXG4gICAgICAvLyDsnbTrr7jsp4AgdHVybiDsi53rs4QoUjEzKS4gcnVuIOqyveuhnCh0b29scytpbWFnZSDsobDtlakp64+EIGF1dG8g6rK966Gc7JmAIOuPmeydvO2VmOqyjCDrp4jtgrkuXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBwYXJhbXMuaXNfaW1hZ2VfZ2VuZXJhdGlvbiA/PyBmYWxzZSxcbiAgICAgIC4uLihwYXJhbXMuaGlzdG9yeSAhPT0gdW5kZWZpbmVkID8geyBoaXN0b3J5OiBwYXJhbXMuaGlzdG9yeSBhcyB7IHR5cGU6IHN0cmluZyB9W10gfSA6IHt9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRyeC51YlVwc2VydChcInJlcXVlc3RfbG9nc1wiKTtcbiAgICAgIHJldHVybiBpZHNbMF0hO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQ6IG51bWJlciwgc3RlcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ19zdGVwc1wiLCB7IHJlcXVlc3RfbG9nX2lkOiByZXF1ZXN0TG9nSWQsIC4uLnN0ZXAgfSk7XG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKTtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IFwidG9vbF9jYWxsXCIpIHtcbiAgICAgICAgYXdhaXQgdHJ4LmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikud2hlcmUoXCJpZFwiLCByZXF1ZXN0TG9nSWQpLmluY3JlbWVudChcInRvb2xfY2FsbF9jb3VudFwiLCAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpZHNbMF0hO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmluaXNoUnVuKFxuICAgIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICAgIHBhcmFtczoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICByZXNwb25zZT86IHN0cmluZztcbiAgICAgIHRva2VuX25hbWU/OiBzdHJpbmc7XG4gICAgICBpbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gICAgICBvdXRwdXRfdG9rZW5zPzogbnVtYmVyO1xuICAgICAgY2FjaGVfcmVhZF90b2tlbnM/OiBudW1iZXI7XG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM/OiBudW1iZXI7XG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM/OiBudW1iZXIgfCBudWxsO1xuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIGR1cmF0aW9uX21zPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgbW9kZWxfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBmYWxsYmFja19jb3VudD86IG51bWJlciB8IG51bGw7XG4gICAgICBjb3N0X3VzZD86IG51bWJlciB8IG51bGw7XG4gICAgICBjb3N0X3NvdXJjZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBoaXN0b3J5PzogdW5rbm93bjtcbiAgICAgIGVycm9yX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICB0b29sX2NhbGxfY291bnQ/OiBudW1iZXI7XG4gICAgICBpbWFnZV9jb3N0X3VzZD86IG51bWJlciB8IG51bGw7XG4gICAgICBpbWFnZV9jb3N0X21ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHBhcmFtcy5zdGF0dXMgPT09IFwic3VjY2VlZGVkXCIgJiYgIXBhcmFtcy50b2tlbl9uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0b2tlbk5hbWUgaXMgcmVxdWlyZWQgZm9yIHN1Y2NlZWRlZCBydW5zXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyBpZDogcmVxdWVzdExvZ0lkLCBzdGF0dXM6IHBhcmFtcy5zdGF0dXMgfTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcInJlc3BvbnNlXCIsXG4gICAgICBcInRva2VuX25hbWVcIixcbiAgICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgICBcIm91dHB1dF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgXCJjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIFwiZHVyYXRpb25fbXNcIixcbiAgICAgIFwicmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIFwibW9kZWxfbmFtZVwiLFxuICAgICAgXCJmYWxsYmFja19jb3VudFwiLFxuICAgICAgXCJjb3N0X3VzZFwiLFxuICAgICAgXCJjb3N0X3NvdXJjZVwiLFxuICAgICAgXCJlcnJvcl9tZXNzYWdlXCIsXG4gICAgICBcInRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgXCJpbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgXCJpbWFnZV9jb3N0X21ldGhvZFwiLFxuICAgIF0gYXMgY29uc3Q7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZmllbGRzKSB7XG4gICAgICBpZiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkgdXBkYXRlW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5oaXN0b3J5ICE9PSB1bmRlZmluZWQpIHVwZGF0ZS5oaXN0b3J5ID0gcGFyYW1zLmhpc3Rvcnk7XG4gICAgdXBkYXRlLnR0ZnRfbXMgPSAoYXdhaXQgdGhpcy5maXJzdEdlbmVyYXRlU3RlcFR0ZnQocmVxdWVzdExvZ0lkKSkgPz8gMDtcblxuICAgIC8vIOyEnOuyhCBydW4g6rK966Gc64qUIHN0ZXAg7JeQ7IScIO2Zleygle2VnCBleGFjdCBjb3N0IOulvCDrhJjquLTri6QuIOyZuOu2gC9sZWdhY3kgY2FsbGVyIOqwgCDruYTsmqnsnYRcbiAgICAvLyDsg53rnrXtlZwg6rK97Jqw7JeQ66eMIOyggOyepeuQnCDrqqjrjbgrdXNhZ2Ug66GcIOqzhOyCsO2VnOuLpC5cbiAgICBpZiAoXG4gICAgICBwYXJhbXMuY29zdF91c2QgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFyYW1zLmlucHV0X3Rva2VucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYXJhbXMub3V0cHV0X3Rva2VucyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkYiA9IHRoaXMuZ2V0REIoXCJyXCIpO1xuICAgICAgY29uc3QgW3Jvd10gPSBhd2FpdCBkYihcInJlcXVlc3RfbG9nc1wiKVxuICAgICAgICAuc2VsZWN0KFwibW9kZWxfbmFtZVwiKVxuICAgICAgICAud2hlcmUoXCJpZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAgIC5saW1pdCgxKTtcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZU1vZGVsTmFtZSA9IHBhcmFtcy5tb2RlbF9uYW1lID8/IHJvdz8ubW9kZWxfbmFtZTtcbiAgICAgIGlmIChlZmZlY3RpdmVNb2RlbE5hbWUpIHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBjYW5vbmljYWxNb2RlbE5hbWUoZWZmZWN0aXZlTW9kZWxOYW1lKTtcbiAgICAgICAgY29uc3QgdXNhZ2UgPSBub3JtYWxpemVkVXNhZ2VGb3JDb3N0KHtcbiAgICAgICAgICB0b2tlbl9uYW1lOiBwYXJhbXMudG9rZW5fbmFtZSxcbiAgICAgICAgICBtb2RlbF9uYW1lOiBlZmZlY3RpdmVNb2RlbE5hbWUsXG4gICAgICAgICAgaW5wdXRfdG9rZW5zOiBwYXJhbXMuaW5wdXRfdG9rZW5zLFxuICAgICAgICAgIG91dHB1dF90b2tlbnM6IHBhcmFtcy5vdXRwdXRfdG9rZW5zLFxuICAgICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBwYXJhbXMuY2FjaGVfcmVhZF90b2tlbnMgPz8gMCxcbiAgICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHBhcmFtcy5jYWNoZV9jcmVhdGlvbl90b2tlbnMgPz8gMCxcbiAgICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHBhcmFtcy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBwYXJhbXMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zLFxuICAgICAgICB9KTtcbiAgICAgICAgdXBkYXRlLmNvc3RfdXNkID0gTWF0aC5yb3VuZChcbiAgICAgICAgICBjYWxjdWxhdGVDb3N0VXNkKG1vZGVsLCB7XG4gICAgICAgICAgICBpbnB1dFRva2VuczogdXNhZ2UuaW5wdXRUb2tlbnMsXG4gICAgICAgICAgICBvdXRwdXRUb2tlbnM6IHVzYWdlLm91dHB1dFRva2VucyxcbiAgICAgICAgICAgIGNhY2hlZElucHV0VG9rZW5zOiB1c2FnZS5jYWNoZWRJbnB1dFRva2VucyxcbiAgICAgICAgICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zLFxuICAgICAgICAgICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW06IHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtLFxuICAgICAgICAgICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg6IHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoLFxuICAgICAgICAgIH0pICogMV8wMDBfMDAwLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGUuY29zdF9zb3VyY2UgPSBcInByaWNpbmdfdGFibGVcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHdkYi51YlJlZ2lzdGVyKFwicmVxdWVzdF9sb2dzXCIsIHVwZGF0ZSk7XG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGF3YWl0IHRyeC51YlVwc2VydChcInJlcXVlc3RfbG9nc1wiKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZpcnN0R2VuZXJhdGVTdGVwVHRmdChyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRiID0gdGhpcy5nZXREQihcInJcIik7XG4gICAgY29uc3QgW3Jvd10gPSBhd2FpdCBkYihcInJlcXVlc3RfbG9nX3N0ZXBzXCIpXG4gICAgICAuc2VsZWN0KFwidHRmdF9tc1wiKVxuICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgLndoZXJlKFwidHlwZVwiLCBcImdlbmVyYXRlXCIpXG4gICAgICAud2hlcmVOb3ROdWxsKFwidHRmdF9tc1wiKVxuICAgICAgLm9yZGVyQnkoXCJzdGVwX2luZGV4XCIsIFwiYXNjXCIpXG4gICAgICAub3JkZXJCeShcImlkXCIsIFwiYXNjXCIpXG4gICAgICAubGltaXQoMSk7XG4gICAgcmV0dXJuIHJvdz8udHRmdF9tcyA9PT0gbnVsbCB8fCByb3c/LnR0ZnRfbXMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBOdW1iZXIocm93LnR0ZnRfbXMpO1xuICB9XG5cbiAgYXN5bmMgYWdncmVnYXRlU3RlcFVzYWdlKHJlcXVlc3RMb2dJZDogbnVtYmVyKTogUHJvbWlzZTx7XG4gICAgaW5wdXRfdG9rZW5zOiBudW1iZXI7XG4gICAgb3V0cHV0X3Rva2VuczogbnVtYmVyO1xuICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBudW1iZXI7XG4gICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBudW1iZXI7XG4gICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zPzogbnVtYmVyO1xuICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vucz86IG51bWJlcjtcbiAgICBkdXJhdGlvbl9tczogbnVtYmVyO1xuICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lPzogc3RyaW5nO1xuICAgIG1vZGVsX25hbWU/OiBzdHJpbmc7XG4gICAgZmFsbGJhY2tfY291bnQ6IG51bWJlcjtcbiAgICBjb3N0X3VzZDogbnVtYmVyO1xuICAgIGNvc3Rfc291cmNlPzogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwiclwiKTtcbiAgICBjb25zdCByb3dzID0gKGF3YWl0IGRiKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgIC5zZWxlY3QoXG4gICAgICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgICAgIFwib3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgICBcImNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICAgIFwiY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICAgIFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICAgIFwiZHVyYXRpb25fbXNcIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgICBcIm1vZGVsX25hbWVcIixcbiAgICAgICAgXCJmYWxsYmFja19jb3VudFwiLFxuICAgICAgICBcImNvc3RfdXNkXCIsXG4gICAgICAgIFwiY29zdF9zb3VyY2VcIixcbiAgICAgIClcbiAgICAgIC53aGVyZShcInJlcXVlc3RfbG9nX2lkXCIsIHJlcXVlc3RMb2dJZClcbiAgICAgIC53aGVyZShcInR5cGVcIiwgXCJnZW5lcmF0ZVwiKSkgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG4gICAgY29uc3Qgc3VtID0gKGZpZWxkOiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgICAgIHJvd3MucmVkdWNlKCh0b3RhbCwgcm93KSA9PiB0b3RhbCArIE51bWJlcihyb3dbZmllbGRdID8/IDApLCAwKTtcbiAgICBjb25zdCBvcHRpb25hbFN1bSA9IChmaWVsZDogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+XG4gICAgICByb3dzLnNvbWUoKHJvdykgPT4gcm93W2ZpZWxkXSAhPT0gbnVsbCAmJiByb3dbZmllbGRdICE9PSB1bmRlZmluZWQpID8gc3VtKGZpZWxkKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb2xsYXBzZSA9IChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFtcbiAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICByb3dzXG4gICAgICAgICAgICAubWFwKChyb3cpID0+IHJvd1tmaWVsZF0pXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUubGVuZ3RoID4gMCksXG4gICAgICAgICksXG4gICAgICBdO1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA9PT0gMSA/IHZhbHVlc1swXSA6IFwibWl4ZWRcIjtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dF90b2tlbnM6IHN1bShcImlucHV0X3Rva2Vuc1wiKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHN1bShcIm91dHB1dF90b2tlbnNcIiksXG4gICAgICBjYWNoZV9yZWFkX3Rva2Vuczogc3VtKFwiY2FjaGVfcmVhZF90b2tlbnNcIiksXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHN1bShcImNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuczogb3B0aW9uYWxTdW0oXCJjYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIiksXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IG9wdGlvbmFsU3VtKFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIpLFxuICAgICAgZHVyYXRpb25fbXM6IHN1bShcImR1cmF0aW9uX21zXCIpLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IGNvbGxhcHNlKFwicmVxdWVzdGVkX21vZGVsX25hbWVcIiksXG4gICAgICBtb2RlbF9uYW1lOiBjb2xsYXBzZShcIm1vZGVsX25hbWVcIiksXG4gICAgICBmYWxsYmFja19jb3VudDogc3VtKFwiZmFsbGJhY2tfY291bnRcIiksXG4gICAgICBjb3N0X3VzZDogc3VtKFwiY29zdF91c2RcIiksXG4gICAgICBjb3N0X3NvdXJjZTogY29sbGFwc2UoXCJjb3N0X3NvdXJjZVwiKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmluZFN0YWxlUnVubmluZ0lkcyh0aHJlc2hvbGRNczogbnVtYmVyLCBsaW1pdDogbnVtYmVyID0gMTApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwiclwiKTtcbiAgICBjb25zdCB0aHJlc2hvbGQgPSBuZXcgRGF0ZShEYXRlLm5vdygpIC0gdGhyZXNob2xkTXMpO1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBkYihcInJlcXVlc3RfbG9nc1wiKVxuICAgICAgLnNlbGVjdChcImlkXCIpXG4gICAgICAud2hlcmUoXCJzdGF0dXNcIiwgXCJydW5uaW5nXCIpXG4gICAgICAud2hlcmUoXCJjcmVhdGVkX2F0XCIsIFwiPFwiLCB0aHJlc2hvbGQpXG4gICAgICAubGltaXQobGltaXQpO1xuICAgIHJldHVybiByb3dzLm1hcCgocjogeyBpZDogbnVtYmVyIH0pID0+IHIuaWQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0TmV4dFN0ZXBJbmRleChyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwiclwiKTtcbiAgICBjb25zdCBbcm93XSA9IGF3YWl0IGRiKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgIC53aGVyZShcInJlcXVlc3RfbG9nX2lkXCIsIHJlcXVlc3RMb2dJZClcbiAgICAgIC5tYXgoXCJzdGVwX2luZGV4IGFzIG1heFN0ZXBcIik7XG4gICAgcmV0dXJuICgocm93IGFzIHsgbWF4U3RlcDogbnVtYmVyIHwgbnVsbCB9KT8ubWF4U3RlcCA/PyAtMSkgKyAxO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVUb29sQ2FsbChcbiAgICByZXF1ZXN0TG9nSWQ6IG51bWJlcixcbiAgICB0b29sQ2FsbElkOiBzdHJpbmcsXG4gICAgcGFyYW1zOiB7IHRvb2xfcmVzdWx0Pzogc3RyaW5nOyB0b29sX2R1cmF0aW9uX21zPzogbnVtYmVyOyBlcnJvcj86IHN0cmluZyB9LFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdHJ4XG4gICAgICAgIC5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgICAud2hlcmUoXCJ0b29sX2NhbGxfaWRcIiwgdG9vbENhbGxJZClcbiAgICAgICAgLndoZXJlKFwidHlwZVwiLCBcInRvb2xfY2FsbFwiKVxuICAgICAgICAudXBkYXRlKHtcbiAgICAgICAgICAuLi4ocGFyYW1zLnRvb2xfcmVzdWx0ICE9PSB1bmRlZmluZWQgPyB7IHRvb2xfcmVzdWx0OiBwYXJhbXMudG9vbF9yZXN1bHQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocGFyYW1zLnRvb2xfZHVyYXRpb25fbXMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB7IHRvb2xfZHVyYXRpb25fbXM6IHBhcmFtcy50b29sX2R1cmF0aW9uX21zIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIC4uLihwYXJhbXMuZXJyb3IgIT09IHVuZGVmaW5lZCA/IHsgZXJyb3I6IHBhcmFtcy5lcnJvciB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU29uYW11IGZpbmRNYW5564qUIHN1YnNldCDsoITssrQg7Lus65+8KHRleHQg7Y+s7ZWoKeydhCDtjpjsuZjtlbTshJwgYWdncmVnYXRl7JeUIOuEiOustCDrrLTqsbDsm4Ag4oaSIHJhdyBzdW0g7IKs7JqpLlxuICBhc3luYyB0b3RhbENvc3QocGFyYW1zOiB7IHRva2VuX25hbWU/OiBzdHJpbmcgfSA9IHt9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBxYiA9IHRoaXMuZ2V0REIoXCJyXCIpKFwicmVxdWVzdF9sb2dzXCIpO1xuICAgIGlmIChwYXJhbXMudG9rZW5fbmFtZSkge1xuICAgICAgcWIud2hlcmUoXCJ0b2tlbl9uYW1lXCIsIHBhcmFtcy50b2tlbl9uYW1lKTtcbiAgICB9XG4gICAgLy8g6riw7KG0IGNvc3RfdXNkIOyXkOuKlCDqs7zqsbAgQW50aHJvcGljIGNhY2hlIOqzhOyCsCDrsoTqt7jroZwg7J2M7IiY6rCAIOyggOyepeuQnCByb3cg6rCAIOyeiOydhCDsiJgg7J6I64ukLlxuICAgIC8vIO2ZlOuptCDsp5Hqs4TripQg7KCA7J6l6rCSIHN1bSDsnbQg7JWE64uI6528IO2YhOyerCDqs4TsgrDsi53snLzroZwgdXNhZ2Ug66W8IOyerOqzhOyCsO2VtCDqs7zqsbAg66Gc6re464+EIOymieyLnCDrs7TsoJXtlZzri6QuXG4gICAgY29uc3Qgcm93cyA9IChhd2FpdCBxYi5zZWxlY3QoXG4gICAgICBcIm1vZGVsX25hbWVcIixcbiAgICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgICBcIm91dHB1dF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgXCJjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIFwiY29zdF91c2RcIixcbiAgICAgIFwiY29zdF9zb3VyY2VcIixcbiAgICApKSBhcyBBcnJheTx7XG4gICAgICBtb2RlbF9uYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgICAgaW5wdXRfdG9rZW5zOiBudW1iZXI7XG4gICAgICBvdXRwdXRfdG9rZW5zOiBudW1iZXI7XG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogbnVtYmVyO1xuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBudW1iZXI7XG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IG51bWJlciB8IG51bGw7XG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IG51bWJlciB8IG51bGw7XG4gICAgICBjb3N0X3VzZDogbnVtYmVyIHwgbnVsbDtcbiAgICAgIGNvc3Rfc291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIH0+O1xuXG4gICAgcmV0dXJuIHJvd3MucmVkdWNlKChzdW0sIHJvdykgPT4ge1xuICAgICAgLy8gY29zdF9zb3VyY2Ug6rCAIOyeiOycvOuptCDsg4gg6rOE7JW97Jy866GcIO2ZleyglSDsoIDsnqXrkJwg6rCS7J2064ukLiDtlITroZzrqqjshZgv6rCA6rKpIOuzgOqyvSDsnbTtm4Tsl5Drj4RcbiAgICAgIC8vIOuLueyLnCDruYTsmqnsnYQg7Jyg7KeA7ZWc64ukLiBOVUxM7J24IGxlZ2FjeSByb3cg66eMIO2YhOyerCDqsIDqsqntkZzroZwg67O07KCV7ZWc64ukLlxuICAgICAgaWYgKHJvdy5jb3N0X3NvdXJjZSAmJiByb3cuY29zdF91c2QgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1bSArIE1hdGgubWF4KHJvdy5jb3N0X3VzZCwgMCkgLyBNSUNST19VU0Q7XG4gICAgICB9XG4gICAgICBjb25zdCB1c2FnZSA9IG5vcm1hbGl6ZWRVc2FnZUZvckNvc3Qocm93KTtcbiAgICAgIGlmICghdXNhZ2UubW9kZWwpIHJldHVybiBzdW0gKyBNYXRoLm1heChyb3cuY29zdF91c2QgPz8gMCwgMCkgLyBNSUNST19VU0Q7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBzdW0gK1xuICAgICAgICBjYWxjdWxhdGVDb3N0VXNkKHVzYWdlLm1vZGVsLCB7XG4gICAgICAgICAgaW5wdXRUb2tlbnM6IHVzYWdlLmlucHV0VG9rZW5zLFxuICAgICAgICAgIG91dHB1dFRva2VuczogdXNhZ2Uub3V0cHV0VG9rZW5zLFxuICAgICAgICAgIGNhY2hlZElucHV0VG9rZW5zOiB1c2FnZS5jYWNoZWRJbnB1dFRva2VucyxcbiAgICAgICAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM6IHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VucyxcbiAgICAgICAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0sXG4gICAgICAgICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg6IHVzYWdlLmNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczFoLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGFzeW5jIGRpc3RpbmN0UHJvamVjdE5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5nZXRQdXJpKFwiclwiKVxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIilcbiAgICAgIC5kaXN0aW5jdChcInByb2plY3RfbmFtZVwiKVxuICAgICAgLndoZXJlKFwicHJvamVjdF9uYW1lXCIsIFwiIT1cIiwgbnVsbClcbiAgICAgIC5vcmRlckJ5KFwicHJvamVjdF9uYW1lXCIsIFwiYXNjXCIpXG4gICAgICAuc2VsZWN0KHtcbiAgICAgICAgcHJvamVjdF9uYW1lOiBcInByb2plY3RfbmFtZVwiLFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHJvd3MubWFwKChyKSA9PiByLnByb2plY3RfbmFtZSEpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIGRlbChpZHM6IG51bWJlcltdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgYXdhaXQgdHJ4XG4gICAgICAgIC50YWJsZShcInJlcXVlc3RfbG9nX3N0ZXBzXCIpXG4gICAgICAgIC53aGVyZUluKFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdF9sb2dfaWRcIiwgaWRzKVxuICAgICAgICAuZGVsZXRlKCk7XG4gICAgICByZXR1cm4gdHJ4LnRhYmxlKFwicmVxdWVzdF9sb2dzXCIpLndoZXJlSW4oXCJyZXF1ZXN0X2xvZ3MuaWRcIiwgaWRzKS5kZWxldGUoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHMubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nTW9kZWwgPSBuZXcgUmVxdWVzdExvZ01vZGVsQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFpQkEsTUFBYSxZQUFZO0FBZXpCLFNBQVMsb0JBQW9CLEtBQXFFO0FBQ2hHLFFBQ0UsSUFBSSxZQUFZLFdBQVcsYUFBYSxLQUFLLFFBQzdDLElBQUksWUFBWSxXQUFXLFVBQVUsS0FBSyxRQUMxQyxJQUFJLFlBQVksV0FBVyxvQkFBb0IsS0FBSzs7QUFJeEQsU0FBUyxtQkFBbUIsV0FBMkI7QUFDckQsUUFBTyxVQUFVLFNBQVMsSUFBSSxHQUFHLFVBQVUsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFJOztBQUdqRSxTQUFTLHVCQUF1QixLQVE5QjtDQUNBLE1BQU0sWUFBWSxJQUFJO0NBQ3RCLE1BQU0sZ0JBQWdCLElBQUk7Q0FDMUIsTUFBTSxjQUFjLElBQUk7Q0FDeEIsTUFBTSw0QkFDSixvQkFBb0IsSUFBSSxJQUFJLGNBQWMsWUFBWTtBQUN4RCxRQUFPO0VBQ0wsT0FBTyxJQUFJLGFBQWEsbUJBQW1CLElBQUksV0FBVyxHQUFHO0VBQzdELGFBQWEsNEJBQTRCLGNBQWMsWUFBWSxnQkFBZ0I7RUFDbkYsY0FBYyxJQUFJO0VBQ2xCLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsR0FBSSxJQUFJLDZCQUE2QixRQUFRLElBQUksNkJBQTZCLFNBQzFFLEVBQUUsNEJBQTRCLElBQUksMEJBQTBCLEdBQzVELEVBQUU7RUFDTixHQUFJLElBQUksNkJBQTZCLFFBQVEsSUFBSSw2QkFBNkIsU0FDMUUsRUFBRSw0QkFBNEIsSUFBSSwwQkFBMEIsR0FDNUQsRUFBRTtFQUNQOztBQUdILFNBQVMsNEJBQTBELEtBQVc7QUFFNUUsS0FBSSxJQUFJLFlBQWEsUUFBTztDQUM1QixNQUFNLFFBQVEsdUJBQXVCLElBQUk7QUFDekMsS0FBSSxNQUFNLGdCQUFnQixJQUFJLGFBQWMsUUFBTztDQUNuRCxNQUFNLGFBQWE7RUFBRSxHQUFHO0VBQUssY0FBYyxNQUFNO0VBQWE7QUFDOUQsS0FBSSxNQUFNLE1BQ1IsWUFBVyxXQUFXLEtBQUssTUFBTSxpQkFBaUIsTUFBTSxPQUFPLE1BQU0sR0FBRyxVQUFVO0FBRXBGLFFBQU87O0FBTVQsSUFBTSx1QkFBTixjQUFtQyxlQUtqQztDQUNBLGNBQWM7QUFDWixRQUFNLGNBQWMseUJBQXlCLHdCQUF3Qjs7Q0FHdkUsTUFDTSxTQUNKLFFBQ0EsSUFDcUM7RUFDckMsTUFBTSxFQUFFLFNBQVMsTUFBTSxLQUFLLFNBQVMsUUFBUTtHQUMzQztHQUNBLEtBQUs7R0FDTCxNQUFNO0dBQ1AsQ0FBQztBQUNGLE1BQUksQ0FBQyxLQUFLLEdBQ1IsT0FBTSxJQUFJLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLGNBQWMsR0FBRyxDQUFDO0FBRzNFLFNBQU8sS0FBSzs7Q0FHZCxNQUFNLFFBQ0osUUFDQSxZQUM0QztFQUM1QyxNQUFNLEVBQUUsU0FBUyxNQUFNLEtBQUssU0FBUyxRQUFRO0dBQzNDLEdBQUc7R0FDSCxLQUFLO0dBQ0wsTUFBTTtHQUNQLENBQUM7QUFFRixTQUFPLEtBQUssTUFBTTs7Q0FHcEIsTUFDTSxTQUNKLFFBQ0EsV0FDcUQ7RUFDckQsTUFBTSxTQUFTO0dBQ2IsS0FBSztHQUNMLE1BQU07R0FDTixRQUFRO0dBQ1IsU0FBUztHQUNULEdBQUc7R0FDSjtFQUVELE1BQU0sRUFBRSxJQUFJLFVBQVUsTUFBTSxLQUFLLGlCQUFpQixPQUFPO0FBRXpELE1BQUksT0FBTyxHQUNULElBQUcsUUFBUSxtQkFBbUIsUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUduRCxNQUFJLE9BQU8sV0FDVCxJQUFHLE1BQU0sMkJBQTJCLE9BQU8sV0FBVztBQUd4RCxNQUFJLE9BQU8scUJBQ1QsSUFBRyxNQUFNLDZCQUE2QixLQUFLO1dBQ2xDLE9BQU8seUJBQ2hCLElBQUcsTUFBTSw2QkFBNkIsTUFBTSxLQUFLO1dBQ3hDLE9BQU8sYUFDaEIsSUFBRyxNQUFNLDZCQUE2QixPQUFPLGFBQWE7QUFHNUQsTUFBSSxPQUFPLFdBQ1QsSUFBRyxNQUFNLDJCQUEyQixPQUFPLFdBQVc7QUFHeEQsTUFBSSxPQUFPLFVBQVUsT0FBTyxXQUFXLE9BQU8sUUFBUSxTQUFTLEVBQzdELEtBQUksT0FBTyxXQUFXLEtBQ3BCLElBQUcsTUFBTSxtQkFBbUIsT0FBTyxPQUFPLFFBQVEsQ0FBQztXQUMxQyxPQUFPLFdBQVcsYUFDM0IsSUFBRyxNQUFNLDJCQUEyQixRQUFRLElBQUksT0FBTyxRQUFRLEdBQUc7V0FDekQsT0FBTyxXQUFXLGNBQzNCLElBQUcsTUFBTSw0QkFBNEIsUUFBUSxJQUFJLE9BQU8sUUFBUSxHQUFHO01BRW5FLE9BQU0sSUFBSSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxPQUFPLE9BQU8sQ0FBQztBQUtoRixNQUFJLE9BQU8sUUFFVCxLQUFJLE9BQU8sWUFBWSxVQUNyQixJQUFHLFFBQVEsbUJBQW1CLE9BQU87TUFFckMsWUFBVyxPQUFPLFFBQVE7RUFJOUIsTUFBTSxZQUFZLEtBQUssZ0JBQWdCLEVBQ3JDLElBQUksUUFBUSw0QkFBNEIsSUFBSSxFQUM3QyxDQUFDO0FBRUYsU0FBTyxLQUFLLG1CQUFtQjtHQUM3QjtHQUNBO0dBQ0E7R0FDQTtHQUNBLE9BQU87R0FDUixDQUFDOztDQUdKLE1BQ00sS0FBSyxLQUFnRDtFQUN6RCxNQUFNLE1BQU0sS0FBSyxRQUFRLElBQUk7QUFHN0IsTUFBSSxTQUFTLE9BQU87QUFDbEIsT0FBSSxXQUFXLGdCQUFnQixHQUFHO0lBQ2xDO0FBR0YsU0FBTyxJQUFJLFlBQVksT0FBTyxRQUFRO0FBR3BDLFVBRlksTUFBTSxJQUFJLFNBQVMsZUFBZTtJQUc5Qzs7Q0FLSixNQUFNLFVBQVUsUUFRSTtFQUNsQixNQUFNLE1BQU0sS0FBSyxRQUFRLElBQUk7QUFDN0IsTUFBSSxXQUFXLGdCQUFnQjtHQUM3QixhQUFhLE9BQU87R0FDcEIsZUFBZSxPQUFPLGlCQUFpQjtHQUN2QyxZQUFZLE9BQU8sY0FBYztHQUNqQyxRQUFRLE9BQU8sVUFBVTtHQUN6QixjQUFjLE9BQU8sZ0JBQWdCO0dBQ3JDLFFBQVE7R0FDUixVQUFVO0dBQ1YsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLGFBQWE7R0FDYixpQkFBaUI7R0FFakIscUJBQXFCLE9BQU8sdUJBQXVCO0dBQ25ELEdBQUksT0FBTyxZQUFZLFNBQVksRUFBRSxTQUFTLE9BQU8sU0FBK0IsR0FBRyxFQUFFO0dBQzFGLENBQUM7QUFDRixTQUFPLElBQUksWUFBWSxPQUFPLFFBQVE7QUFFcEMsV0FEWSxNQUFNLElBQUksU0FBUyxlQUFlLEVBQ25DO0lBQ1g7O0NBR0osTUFBTSxXQUFXLGNBQXNCLE1BQWdEO0VBQ3JGLE1BQU0sTUFBTSxLQUFLLFFBQVEsSUFBSTtBQUM3QixNQUFJLFdBQVcscUJBQXFCO0dBQUUsZ0JBQWdCO0dBQWMsR0FBRztHQUFNLENBQUM7QUFDOUUsU0FBTyxJQUFJLFlBQVksT0FBTyxRQUFRO0dBQ3BDLE1BQU0sTUFBTSxNQUFNLElBQUksU0FBUyxvQkFBb0I7QUFDbkQsT0FBSSxLQUFLLFNBQVMsWUFDaEIsT0FBTSxJQUFJLEtBQUssZUFBZSxDQUFDLE1BQU0sTUFBTSxhQUFhLENBQUMsVUFBVSxtQkFBbUIsRUFBRTtBQUUxRixVQUFPLElBQUk7SUFDWDs7Q0FHSixNQUFNLFVBQ0osY0FDQSxRQXNCZTtBQUNmLE1BQUksT0FBTyxXQUFXLGVBQWUsQ0FBQyxPQUFPLFdBQzNDLE9BQU0sSUFBSSxNQUFNLDJDQUEyQztFQUU3RCxNQUFNLFNBQWtDO0dBQUUsSUFBSTtHQUFjLFFBQVEsT0FBTztHQUFRO0FBcUJuRixPQUFLLE1BQU0sT0FwQkk7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDRCxDQUVDLEtBQUksT0FBTyxTQUFTLE9BQVcsUUFBTyxPQUFPLE9BQU87QUFFdEQsTUFBSSxPQUFPLFlBQVksT0FBVyxRQUFPLFVBQVUsT0FBTztBQUMxRCxTQUFPLFVBQVcsTUFBTSxLQUFLLHNCQUFzQixhQUFhLElBQUs7QUFJckUsTUFDRSxPQUFPLGFBQWEsVUFDcEIsT0FBTyxpQkFBaUIsVUFDeEIsT0FBTyxrQkFBa0IsUUFDekI7R0FFQSxNQUFNLENBQUMsT0FBTyxNQURILEtBQUssTUFBTSxJQUFJLENBQ0gsZUFBZSxDQUNuQyxPQUFPLGFBQWEsQ0FDcEIsTUFBTSxNQUFNLGFBQWEsQ0FDekIsTUFBTSxFQUFFO0dBQ1gsTUFBTSxxQkFBcUIsT0FBTyxjQUFjLEtBQUs7QUFDckQsT0FBSSxvQkFBb0I7SUFDdEIsTUFBTSxRQUFRLG1CQUFtQixtQkFBbUI7SUFDcEQsTUFBTSxRQUFRLHVCQUF1QjtLQUNuQyxZQUFZLE9BQU87S0FDbkIsWUFBWTtLQUNaLGNBQWMsT0FBTztLQUNyQixlQUFlLE9BQU87S0FDdEIsbUJBQW1CLE9BQU8scUJBQXFCO0tBQy9DLHVCQUF1QixPQUFPLHlCQUF5QjtLQUN2RCwwQkFBMEIsT0FBTztLQUNqQywwQkFBMEIsT0FBTztLQUNsQyxDQUFDO0FBQ0YsV0FBTyxXQUFXLEtBQUssTUFDckIsaUJBQWlCLE9BQU87S0FDdEIsYUFBYSxNQUFNO0tBQ25CLGNBQWMsTUFBTTtLQUNwQixtQkFBbUIsTUFBTTtLQUN6QiwwQkFBMEIsTUFBTTtLQUNoQyw0QkFBNEIsTUFBTTtLQUNsQyw0QkFBNEIsTUFBTTtLQUNuQyxDQUFDLEdBQUcsSUFDTjtBQUNELFdBQU8sY0FBYzs7O0VBSXpCLE1BQU0sTUFBTSxLQUFLLFFBQVEsSUFBSTtBQUM3QixNQUFJLFdBQVcsZ0JBQWdCLE9BQU87QUFDdEMsUUFBTSxJQUFJLFlBQVksT0FBTyxRQUFRO0FBQ25DLFNBQU0sSUFBSSxTQUFTLGVBQWU7SUFDbEM7O0NBR0osTUFBTSxzQkFBc0IsY0FBOEM7RUFFeEUsTUFBTSxDQUFDLE9BQU8sTUFESCxLQUFLLE1BQU0sSUFBSSxDQUNILG9CQUFvQixDQUN4QyxPQUFPLFVBQVUsQ0FDakIsTUFBTSxrQkFBa0IsYUFBYSxDQUNyQyxNQUFNLFFBQVEsV0FBVyxDQUN6QixhQUFhLFVBQVUsQ0FDdkIsUUFBUSxjQUFjLE1BQU0sQ0FDNUIsUUFBUSxNQUFNLE1BQU0sQ0FDcEIsTUFBTSxFQUFFO0FBQ1gsU0FBTyxLQUFLLFlBQVksUUFBUSxLQUFLLFlBQVksU0FBWSxPQUFPLE9BQU8sSUFBSSxRQUFROztDQUd6RixNQUFNLG1CQUFtQixjQWF0QjtFQUVELE1BQU0sT0FBUSxNQURILEtBQUssTUFBTSxJQUFJLENBQ0gsb0JBQW9CLENBQ3hDLE9BQ0MsZ0JBQ0EsaUJBQ0EscUJBQ0EseUJBQ0EsNEJBQ0EsNEJBQ0EsZUFDQSx3QkFDQSxjQUNBLGtCQUNBLFlBQ0EsY0FDRCxDQUNBLE1BQU0sa0JBQWtCLGFBQWEsQ0FDckMsTUFBTSxRQUFRLFdBQVc7RUFFNUIsTUFBTSxPQUFPLFVBQ1gsS0FBSyxRQUFRLE9BQU8sUUFBUSxRQUFRLE9BQU8sSUFBSSxVQUFVLEVBQUUsRUFBRSxFQUFFO0VBQ2pFLE1BQU0sZUFBZSxVQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsUUFBUSxJQUFJLFdBQVcsT0FBVSxHQUFHLElBQUksTUFBTSxHQUFHO0VBQ3JGLE1BQU0sWUFBWSxVQUFzQztHQUN0RCxNQUFNLFNBQVMsQ0FDYixHQUFHLElBQUksSUFDTCxLQUNHLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FDeEIsUUFBUSxVQUEyQixPQUFPLFVBQVUsWUFBWSxNQUFNLFNBQVMsRUFBRSxDQUNyRixDQUNGO0FBQ0QsT0FBSSxPQUFPLFdBQVcsRUFBRyxRQUFPO0FBQ2hDLFVBQU8sT0FBTyxXQUFXLElBQUksT0FBTyxLQUFLOztBQUUzQyxTQUFPO0dBQ0wsY0FBYyxJQUFJLGVBQWU7R0FDakMsZUFBZSxJQUFJLGdCQUFnQjtHQUNuQyxtQkFBbUIsSUFBSSxvQkFBb0I7R0FDM0MsdUJBQXVCLElBQUksd0JBQXdCO0dBQ25ELDBCQUEwQixZQUFZLDJCQUEyQjtHQUNqRSwwQkFBMEIsWUFBWSwyQkFBMkI7R0FDakUsYUFBYSxJQUFJLGNBQWM7R0FDL0Isc0JBQXNCLFNBQVMsdUJBQXVCO0dBQ3RELFlBQVksU0FBUyxhQUFhO0dBQ2xDLGdCQUFnQixJQUFJLGlCQUFpQjtHQUNyQyxVQUFVLElBQUksV0FBVztHQUN6QixhQUFhLFNBQVMsY0FBYztHQUNyQzs7Q0FHSCxNQUFNLG9CQUFvQixhQUFxQixRQUFnQixJQUF1QjtFQUNwRixNQUFNLEtBQUssS0FBSyxNQUFNLElBQUk7RUFDMUIsTUFBTSxZQUFZLElBQUksS0FBSyxLQUFLLEtBQUssR0FBRyxZQUFZO0FBTXBELFVBTGEsTUFBTSxHQUFHLGVBQWUsQ0FDbEMsT0FBTyxLQUFLLENBQ1osTUFBTSxVQUFVLFVBQVUsQ0FDMUIsTUFBTSxjQUFjLEtBQUssVUFBVSxDQUNuQyxNQUFNLE1BQU0sRUFDSCxLQUFLLE1BQXNCLEVBQUUsR0FBRzs7Q0FHOUMsTUFBTSxpQkFBaUIsY0FBdUM7RUFFNUQsTUFBTSxDQUFDLE9BQU8sTUFESCxLQUFLLE1BQU0sSUFBSSxDQUNILG9CQUFvQixDQUN4QyxNQUFNLGtCQUFrQixhQUFhLENBQ3JDLElBQUksd0JBQXdCO0FBQy9CLFVBQVMsS0FBb0MsV0FBVyxNQUFNOztDQUdoRSxNQUFNLGlCQUNKLGNBQ0EsWUFDQSxRQUNpQjtBQUVqQixTQURZLEtBQUssUUFBUSxJQUFJLENBQ2xCLFlBQVksT0FBTyxRQUFRO0FBYXBDLFVBWmdCLE1BQU0sSUFDbkIsS0FBSyxvQkFBb0IsQ0FDekIsTUFBTSxrQkFBa0IsYUFBYSxDQUNyQyxNQUFNLGdCQUFnQixXQUFXLENBQ2pDLE1BQU0sUUFBUSxZQUFZLENBQzFCLE9BQU87SUFDTixHQUFJLE9BQU8sZ0JBQWdCLFNBQVksRUFBRSxhQUFhLE9BQU8sYUFBYSxHQUFHLEVBQUU7SUFDL0UsR0FBSSxPQUFPLHFCQUFxQixTQUM1QixFQUFFLGtCQUFrQixPQUFPLGtCQUFrQixHQUM3QyxFQUFFO0lBQ04sR0FBSSxPQUFPLFVBQVUsU0FBWSxFQUFFLE9BQU8sT0FBTyxPQUFPLEdBQUcsRUFBRTtJQUM5RCxDQUFDO0lBRUo7O0NBSUosTUFBTSxVQUFVLFNBQWtDLEVBQUUsRUFBbUI7RUFDckUsTUFBTSxLQUFLLEtBQUssTUFBTSxJQUFJLENBQUMsZUFBZTtBQUMxQyxNQUFJLE9BQU8sV0FDVCxJQUFHLE1BQU0sY0FBYyxPQUFPLFdBQVc7QUEwQjNDLFVBdEJjLE1BQU0sR0FBRyxPQUNyQixjQUNBLGdCQUNBLGlCQUNBLHFCQUNBLHlCQUNBLDRCQUNBLDRCQUNBLFlBQ0EsY0FDRCxFQVlXLFFBQVEsS0FBSyxRQUFRO0FBRy9CLE9BQUksSUFBSSxlQUFlLElBQUksYUFBYSxLQUN0QyxRQUFPLE1BQU0sS0FBSyxJQUFJLElBQUksVUFBVSxFQUFFLEdBQUc7R0FFM0MsTUFBTSxRQUFRLHVCQUF1QixJQUFJO0FBQ3pDLE9BQUksQ0FBQyxNQUFNLE1BQU8sUUFBTyxNQUFNLEtBQUssSUFBSSxJQUFJLFlBQVksR0FBRyxFQUFFLEdBQUc7QUFDaEUsVUFDRSxNQUNBLGlCQUFpQixNQUFNLE9BQU87SUFDNUIsYUFBYSxNQUFNO0lBQ25CLGNBQWMsTUFBTTtJQUNwQixtQkFBbUIsTUFBTTtJQUN6QiwwQkFBMEIsTUFBTTtJQUNoQyw0QkFBNEIsTUFBTTtJQUNsQyw0QkFBNEIsTUFBTTtJQUNuQyxDQUFDO0tBRUgsRUFBRTs7Q0FHUCxNQUFNLHVCQUEwQztBQVM5QyxVQVJhLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FDakMsS0FBSyxlQUFlLENBQ3BCLFNBQVMsZUFBZSxDQUN4QixNQUFNLGdCQUFnQixNQUFNLEtBQUssQ0FDakMsUUFBUSxnQkFBZ0IsTUFBTSxDQUM5QixPQUFPLEVBQ04sY0FBYyxnQkFDZixDQUFDLEVBQ1EsS0FBSyxNQUFNLEVBQUUsYUFBYzs7Q0FHekMsTUFDTSxJQUFJLEtBQWdDO0FBSXhDLFFBSFksS0FBSyxRQUFRLElBQUksQ0FHbkIsWUFBWSxPQUFPLFFBQVE7QUFDbkMsU0FBTSxJQUNILE1BQU0sb0JBQW9CLENBQzFCLFFBQVEsb0NBQW9DLElBQUksQ0FDaEQsUUFBUTtBQUNYLFVBQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQyxRQUFRLG1CQUFtQixJQUFJLENBQUMsUUFBUTtJQUN6RTtBQUVGLFNBQU8sSUFBSTs7OztDQTljWixJQUFJO0VBQUUsWUFBWTtFQUFPLFNBQVMsQ0FBQyxTQUFTLGlCQUFpQjtFQUFFLGNBQWM7RUFBYyxDQUFDOzs7Ozs7Q0E4QjVGLElBQUk7RUFBRSxZQUFZO0VBQU8sU0FBUyxDQUFDLFNBQVMsaUJBQWlCO0VBQUUsY0FBYztFQUFlLENBQUM7Ozs7OztDQXNFN0YsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Q0E2VnBFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7QUFpQnZFLE1BQWEsa0JBQWtCLElBQUksc0JBQXNCIn0=
|
|
382
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwaSxcbiAgYXNBcnJheSxcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgQmFzZU1vZGVsQ2xhc3MsXG4gIGV4aGF1c3RpdmUsXG4gIHR5cGUgTGlzdFJlc3VsdCxcbiAgTm90Rm91bmRFeGNlcHRpb24sXG4gIFB1cmksXG4gIHRyYW5zYWN0aW9uYWwsXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUNvc3RVc2QgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9tb2RlbC1jb3N0XCI7XG5pbXBvcnQgeyB0eXBlIFJlcXVlc3RMb2dTdWJzZXRLZXksIHR5cGUgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMsIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvXCI7XG5pbXBvcnQgeyB0eXBlIFJlcXVlc3RMb2dMaXN0UGFyYW1zLCB0eXBlIFJlcXVlc3RMb2dTYXZlUGFyYW1zIH0gZnJvbSBcIi4vcmVxdWVzdC1sb2cudHlwZXNcIjtcblxuLy8gY29zdF91c2TripQg7KCV7IiYIG1pY3JvLVVTROuhnCDsoIDsnqUuIOyLpOygnCBVU0QgPSBjb3N0X3VzZCAvIE1JQ1JPX1VTRC5cbmV4cG9ydCBjb25zdCBNSUNST19VU0QgPSAxXzAwMF8wMDA7XG5jb25zdCBSRVFVRVNUX0xPR19SVU5fTE9DS19DTEFTU19JRCA9IDcxODtcblxudHlwZSBUb29sUmVzdWx0Q29udGludWF0aW9uID0ge1xuICB0b29sQ2FsbElkOiBzdHJpbmc7XG4gIG91dHB1dDogc3RyaW5nO1xuICBpc0Vycm9yPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgUmVxdWVzdExvZ1N0ZXBBZ2dyZWdhdGUgPSB7XG4gIGlucHV0X3Rva2VuczogbnVtYmVyO1xuICBvdXRwdXRfdG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlX3JlYWRfdG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogbnVtYmVyO1xuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM/OiBudW1iZXI7XG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vucz86IG51bWJlcjtcbiAgZHVyYXRpb25fbXM6IG51bWJlcjtcbiAgZmFsbGJhY2tfY291bnQ6IG51bWJlcjtcbiAgY29zdF91c2Q6IG51bWJlcjtcbiAgY29zdF9zb3VyY2U/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBTVEVQX0FHR1JFR0FURV9TRUxFQ1QgPSB7XG4gIGlucHV0X3Rva2VuczogXCJpbnB1dF90b2tlbnNcIixcbiAgb3V0cHV0X3Rva2VuczogXCJvdXRwdXRfdG9rZW5zXCIsXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiBcImNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJjYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gIGR1cmF0aW9uX21zOiBcImR1cmF0aW9uX21zXCIsXG4gIGZhbGxiYWNrX2NvdW50OiBcImZhbGxiYWNrX2NvdW50XCIsXG4gIGNvc3RfdXNkOiBcImNvc3RfdXNkXCIsXG4gIGNvc3Rfc291cmNlOiBcImNvc3Rfc291cmNlXCIsXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBhZ2dyZWdhdGVHZW5lcmF0ZVN0ZXBSb3dzKHJvd3M6IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlcXVlc3RMb2dTdGVwQWdncmVnYXRlIHtcbiAgY29uc3Qgc3VtID0gKGZpZWxkOiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgICByb3dzLnJlZHVjZSgodG90YWwsIHJvdykgPT4gdG90YWwgKyBOdW1iZXIocm93W2ZpZWxkXSA/PyAwKSwgMCk7XG4gIGNvbnN0IG9wdGlvbmFsU3VtID0gKGZpZWxkOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQgPT5cbiAgICByb3dzLnNvbWUoKHJvdykgPT4gcm93W2ZpZWxkXSAhPT0gbnVsbCAmJiByb3dbZmllbGRdICE9PSB1bmRlZmluZWQpID8gc3VtKGZpZWxkKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgY29sbGFwc2UgPSAoZmllbGQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gW1xuICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgcm93c1xuICAgICAgICAgIC5tYXAoKHJvdykgPT4gcm93W2ZpZWxkXSlcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUubGVuZ3RoID4gMCksXG4gICAgICApLFxuICAgIF07XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPT09IDEgPyB2YWx1ZXNbMF0gOiBcIm1peGVkXCI7XG4gIH07XG4gIHJldHVybiB7XG4gICAgaW5wdXRfdG9rZW5zOiBzdW0oXCJpbnB1dF90b2tlbnNcIiksXG4gICAgb3V0cHV0X3Rva2Vuczogc3VtKFwib3V0cHV0X3Rva2Vuc1wiKSxcbiAgICBjYWNoZV9yZWFkX3Rva2Vuczogc3VtKFwiY2FjaGVfcmVhZF90b2tlbnNcIiksXG4gICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBzdW0oXCJjYWNoZV9jcmVhdGlvbl90b2tlbnNcIiksXG4gICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBvcHRpb25hbFN1bShcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiKSxcbiAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IG9wdGlvbmFsU3VtKFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIpLFxuICAgIGR1cmF0aW9uX21zOiBzdW0oXCJkdXJhdGlvbl9tc1wiKSxcbiAgICBmYWxsYmFja19jb3VudDogc3VtKFwiZmFsbGJhY2tfY291bnRcIiksXG4gICAgY29zdF91c2Q6IHN1bShcImNvc3RfdXNkXCIpLFxuICAgIGNvc3Rfc291cmNlOiBjb2xsYXBzZShcImNvc3Rfc291cmNlXCIpLFxuICB9O1xufVxuXG50eXBlIFJlcXVlc3RMb2dVc2FnZVJvdyA9IHtcbiAgdG9rZW5fbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIG1vZGVsX25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICBpbnB1dF90b2tlbnM6IG51bWJlcjtcbiAgb3V0cHV0X3Rva2VuczogbnVtYmVyO1xuICBjYWNoZV9yZWFkX3Rva2VuczogbnVtYmVyO1xuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IG51bWJlcjtcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgY29zdF91c2Q/OiBudW1iZXIgfCBudWxsO1xuICBjb3N0X3NvdXJjZT86IHN0cmluZyB8IG51bGw7XG59O1xuXG5mdW5jdGlvbiBpc0FudGhyb3BpY1VzYWdlUm93KHJvdzogUGljazxSZXF1ZXN0TG9nVXNhZ2VSb3csIFwidG9rZW5fbmFtZVwiIHwgXCJtb2RlbF9uYW1lXCI+KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgcm93LnRva2VuX25hbWU/LnN0YXJ0c1dpdGgoXCJhbnRocm9waWMvXCIpID09PSB0cnVlIHx8XG4gICAgcm93Lm1vZGVsX25hbWU/LnN0YXJ0c1dpdGgoXCJjbGF1ZGUtXCIpID09PSB0cnVlIHx8XG4gICAgcm93Lm1vZGVsX25hbWU/LnN0YXJ0c1dpdGgoXCJhbnRocm9waWMvY2xhdWRlLVwiKSA9PT0gdHJ1ZVxuICApO1xufVxuXG5mdW5jdGlvbiBjYW5vbmljYWxNb2RlbE5hbWUobW9kZWxOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbW9kZWxOYW1lLmluY2x1ZGVzKFwiL1wiKSA/IG1vZGVsTmFtZS5zcGxpdChcIi9cIikucG9wKCkhIDogbW9kZWxOYW1lO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVkVXNhZ2VGb3JDb3N0KHJvdzogUmVxdWVzdExvZ1VzYWdlUm93KToge1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgaW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgb3V0cHV0VG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlZElucHV0VG9rZW5zOiBudW1iZXI7XG4gIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bT86IG51bWJlcjtcbiAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWg/OiBudW1iZXI7XG59IHtcbiAgY29uc3QgY2FjaGVSZWFkID0gcm93LmNhY2hlX3JlYWRfdG9rZW5zO1xuICBjb25zdCBjYWNoZUNyZWF0aW9uID0gcm93LmNhY2hlX2NyZWF0aW9uX3Rva2VucztcbiAgY29uc3Qgc3RvcmVkSW5wdXQgPSByb3cuaW5wdXRfdG9rZW5zO1xuICBjb25zdCBsZWdhY3lBbnRocm9waWNTcGxpdElucHV0ID1cbiAgICBpc0FudGhyb3BpY1VzYWdlUm93KHJvdykgJiYgc3RvcmVkSW5wdXQgPCBjYWNoZVJlYWQgKyBjYWNoZUNyZWF0aW9uO1xuICByZXR1cm4ge1xuICAgIG1vZGVsOiByb3cubW9kZWxfbmFtZSA/IGNhbm9uaWNhbE1vZGVsTmFtZShyb3cubW9kZWxfbmFtZSkgOiBudWxsLFxuICAgIGlucHV0VG9rZW5zOiBsZWdhY3lBbnRocm9waWNTcGxpdElucHV0ID8gc3RvcmVkSW5wdXQgKyBjYWNoZVJlYWQgKyBjYWNoZUNyZWF0aW9uIDogc3RvcmVkSW5wdXQsXG4gICAgb3V0cHV0VG9rZW5zOiByb3cub3V0cHV0X3Rva2VucyxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogY2FjaGVSZWFkLFxuICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogY2FjaGVDcmVhdGlvbixcbiAgICAuLi4ocm93LmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyAhPT0gbnVsbCAmJiByb3cuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogcm93LmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4ocm93LmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyAhPT0gbnVsbCAmJiByb3cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zICE9PSB1bmRlZmluZWRcbiAgICAgID8geyBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaDogcm93LmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyB9XG4gICAgICA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTGVnYWN5QW50aHJvcGljUm93PFQgZXh0ZW5kcyBSZXF1ZXN0TG9nVXNhZ2VSb3c+KHJvdzogVCk6IFQge1xuICAvLyDsg4ggcm93IOuKlCDri7nsi5zsnZggcHJvdmlkZXIv6rCA6rKp7ZGcIOu5hOyaqeydhCDtmZXsoJUg7KCA7J6l7ZWc64ukLiDtmITsnqwg6rCA6rKp7ZGc66GcIOuNruyWtOyTsOyngCDslYrripTri6QuXG4gIGlmIChyb3cuY29zdF9zb3VyY2UpIHJldHVybiByb3c7XG4gIGNvbnN0IHVzYWdlID0gbm9ybWFsaXplZFVzYWdlRm9yQ29zdChyb3cpO1xuICBpZiAodXNhZ2UuaW5wdXRUb2tlbnMgPT09IHJvdy5pbnB1dF90b2tlbnMpIHJldHVybiByb3c7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7IC4uLnJvdywgaW5wdXRfdG9rZW5zOiB1c2FnZS5pbnB1dFRva2VucyB9O1xuICBpZiAodXNhZ2UubW9kZWwpIHtcbiAgICBub3JtYWxpemVkLmNvc3RfdXNkID0gTWF0aC5yb3VuZChjYWxjdWxhdGVDb3N0VXNkKHVzYWdlLm1vZGVsLCB1c2FnZSkgKiBNSUNST19VU0QpO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKlxuICBSZXF1ZXN0TG9nIE1vZGVsXG4qL1xuY2xhc3MgUmVxdWVzdExvZ01vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzczxcbiAgUmVxdWVzdExvZ1N1YnNldEtleSxcbiAgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmcsXG4gIHR5cGVvZiByZXF1ZXN0TG9nU3Vic2V0UXVlcmllcyxcbiAgdHlwZW9mIHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzXG4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJSZXF1ZXN0TG9nXCIsIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzLCByZXF1ZXN0TG9nTG9hZGVyUXVlcmllcyk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlJlcXVlc3RMb2dcIiB9KVxuICBhc3luYyBmaW5kQnlJZDxUIGV4dGVuZHMgUmVxdWVzdExvZ1N1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGlkOiBudW1iZXIsXG4gICk6IFByb21pc2U8UmVxdWVzdExvZ1N1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlJlcXVlc3RMb2dcIiwgaWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93c1swXTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRPbmU8VCBleHRlbmRzIFJlcXVlc3RMb2dTdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiBSZXF1ZXN0TG9nTGlzdFBhcmFtcyxcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZ1tUXSB8IG51bGw+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcblxuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlJlcXVlc3RMb2dzXCIgfSlcbiAgYXN5bmMgZmluZE1hbnk8VCBleHRlbmRzIFJlcXVlc3RMb2dTdWJzZXRLZXksIExQIGV4dGVuZHMgUmVxdWVzdExvZ0xpc3RQYXJhbXM+KFxuICAgIHN1YnNldDogVCxcbiAgICByYXdQYXJhbXM/OiBMUCxcbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PExQLCBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZ1tUXT4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBudW06IDI0LFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaDogXCJpZFwiIGFzIGNvbnN0LFxuICAgICAgb3JkZXJCeTogXCJpZC1kZXNjXCIgYXMgY29uc3QsXG4gICAgICAuLi5yYXdQYXJhbXMsXG4gICAgfSBzYXRpc2ZpZXMgUmVxdWVzdExvZ0xpc3RQYXJhbXM7XG5cbiAgICBjb25zdCB7IHFiLCBvblN1YnNldDogXyB9ID0gdGhpcy5nZXRTdWJzZXRRdWVyaWVzKHN1YnNldCk7XG5cbiAgICBpZiAocGFyYW1zLmlkKSB7XG4gICAgICBxYi53aGVyZUluKFwicmVxdWVzdF9sb2dzLmlkXCIsIGFzQXJyYXkocGFyYW1zLmlkKSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50b2tlbl9uYW1lKSB7XG4gICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy50b2tlbl9uYW1lXCIsIHBhcmFtcy50b2tlbl9uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnByb2plY3RfbmFtZV9pc19udWxsKSB7XG4gICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIiwgbnVsbCk7XG4gICAgfSBlbHNlIGlmIChwYXJhbXMucHJvamVjdF9uYW1lX2lzX25vdF9udWxsKSB7XG4gICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIiwgXCIhPVwiLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5wcm9qZWN0X25hbWUpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnByb2plY3RfbmFtZVwiLCBwYXJhbXMucHJvamVjdF9uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLm1vZGVsX25hbWUpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIiwgcGFyYW1zLm1vZGVsX25hbWUpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5rZXl3b3JkICYmIHBhcmFtcy5rZXl3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImlkXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MuaWRcIiwgTnVtYmVyKHBhcmFtcy5rZXl3b3JkKSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwidG9rZW5fbmFtZVwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIiwgXCJsaWtlXCIsIGAlJHtwYXJhbXMua2V5d29yZH0lYCk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwidXNlcl9wcm9tcHRcIikge1xuICAgICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy51c2VyX3Byb21wdFwiLCBcImxpa2VcIiwgYCUke3BhcmFtcy5rZXl3b3JkfSVgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKFNEKFwiZXJyb3IudW5rbm93blNlYXJjaEZpZWxkXCIpKHBhcmFtcy5zZWFyY2gpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvcmRlckJ5XG4gICAgaWYgKHBhcmFtcy5vcmRlckJ5KSB7XG4gICAgICAvLyBkZWZhdWx0IG9yZGVyQnlcbiAgICAgIGlmIChwYXJhbXMub3JkZXJCeSA9PT0gXCJpZC1kZXNjXCIpIHtcbiAgICAgICAgcWIub3JkZXJCeShcInJlcXVlc3RfbG9ncy5pZFwiLCBcImRlc2NcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGhhdXN0aXZlKHBhcmFtcy5vcmRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7XG4gICAgICBBOiAocm93KSA9PiBub3JtYWxpemVMZWdhY3lBbnRocm9waWNSb3cocm93KSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtcyxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBzYXZlKHNwYTogUmVxdWVzdExvZ1NhdmVQYXJhbXNbXSk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gcmVnaXN0ZXJcbiAgICBzcGEuZm9yRWFjaCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwicmVxdWVzdF9sb2dzXCIsIHNwKTtcbiAgICB9KTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCJyZXF1ZXN0X2xvZ3NcIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICAvLyDilIDilIAgUnVuIExpZmVjeWNsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBhc3luYyBjcmVhdGVSdW4ocGFyYW1zOiB7XG4gICAgdXNlcl9wcm9tcHQ6IHN0cmluZztcbiAgICBzeXN0ZW1fcHJvbXB0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgZWZmb3J0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm9qZWN0X25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIGhpc3Rvcnk/OiB1bmtub3duO1xuICAgIGlzX2ltYWdlX2dlbmVyYXRpb24/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHdkYi51YlJlZ2lzdGVyKFwicmVxdWVzdF9sb2dzXCIsIHtcbiAgICAgIHVzZXJfcHJvbXB0OiBwYXJhbXMudXNlcl9wcm9tcHQsXG4gICAgICBzeXN0ZW1fcHJvbXB0OiBwYXJhbXMuc3lzdGVtX3Byb21wdCA/PyBudWxsLFxuICAgICAgLy8gcHJvdmlkZXIg7Iuk7ZaJIOyghOydtOuvgOuhnCBzZXJ2aW5nIG1vZGVs7J2AIOyVhOyngSDslYwg7IiYIOyXhuuLpC5cbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBwYXJhbXMucmVxdWVzdGVkX21vZGVsX25hbWUgPz8gbnVsbCxcbiAgICAgIG1vZGVsX25hbWU6IG51bGwsXG4gICAgICBlZmZvcnQ6IHBhcmFtcy5lZmZvcnQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RfbmFtZTogcGFyYW1zLnByb2plY3RfbmFtZSA/PyBudWxsLFxuICAgICAgc3RhdHVzOiBcInJ1bm5pbmdcIixcbiAgICAgIHJlc3BvbnNlOiBcIlwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiAwLFxuICAgICAgb3V0cHV0X3Rva2VuczogMCxcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiAwLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiAwLFxuICAgICAgZHVyYXRpb25fbXM6IDAsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IDAsXG4gICAgICAvLyDsnbTrr7jsp4AgdHVybiDsi53rs4QoUjEzKS4gcnVuIOqyveuhnCh0b29scytpbWFnZSDsobDtlakp64+EIGF1dG8g6rK966Gc7JmAIOuPmeydvO2VmOqyjCDrp4jtgrkuXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBwYXJhbXMuaXNfaW1hZ2VfZ2VuZXJhdGlvbiA/PyBmYWxzZSxcbiAgICAgIC4uLihwYXJhbXMuaGlzdG9yeSAhPT0gdW5kZWZpbmVkID8geyBoaXN0b3J5OiBwYXJhbXMuaGlzdG9yeSBhcyB7IHR5cGU6IHN0cmluZyB9W10gfSA6IHt9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRyeC51YlVwc2VydChcInJlcXVlc3RfbG9nc1wiKTtcbiAgICAgIHJldHVybiBpZHNbMF0hO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQ6IG51bWJlciwgc3RlcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ19zdGVwc1wiLCB7IHJlcXVlc3RfbG9nX2lkOiByZXF1ZXN0TG9nSWQsIC4uLnN0ZXAgfSk7XG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKTtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IFwidG9vbF9jYWxsXCIpIHtcbiAgICAgICAgYXdhaXQgdHJ4LmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikud2hlcmUoXCJpZFwiLCByZXF1ZXN0TG9nSWQpLmluY3JlbWVudChcInRvb2xfY2FsbF9jb3VudFwiLCAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpZHNbMF0hO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmluaXNoUnVuKFxuICAgIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICAgIHBhcmFtczoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICByZXNwb25zZT86IHN0cmluZztcbiAgICAgIHRva2VuX25hbWU/OiBzdHJpbmc7XG4gICAgICBpbnB1dF90b2tlbnM/OiBudW1iZXI7XG4gICAgICBvdXRwdXRfdG9rZW5zPzogbnVtYmVyO1xuICAgICAgY2FjaGVfcmVhZF90b2tlbnM/OiBudW1iZXI7XG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM/OiBudW1iZXI7XG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM/OiBudW1iZXIgfCBudWxsO1xuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIGR1cmF0aW9uX21zPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgbW9kZWxfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBmYWxsYmFja19jb3VudD86IG51bWJlciB8IG51bGw7XG4gICAgICBjb3N0X3VzZD86IG51bWJlciB8IG51bGw7XG4gICAgICBjb3N0X3NvdXJjZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBoaXN0b3J5PzogdW5rbm93bjtcbiAgICAgIGVycm9yX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICB0b29sX2NhbGxfY291bnQ/OiBudW1iZXI7XG4gICAgICBpbWFnZV9jb3N0X3VzZD86IG51bWJlciB8IG51bGw7XG4gICAgICBpbWFnZV9jb3N0X21ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHBhcmFtcy5zdGF0dXMgPT09IFwic3VjY2VlZGVkXCIgJiYgIXBhcmFtcy50b2tlbl9uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0b2tlbk5hbWUgaXMgcmVxdWlyZWQgZm9yIHN1Y2NlZWRlZCBydW5zXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyBpZDogcmVxdWVzdExvZ0lkLCBzdGF0dXM6IHBhcmFtcy5zdGF0dXMgfTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcInJlc3BvbnNlXCIsXG4gICAgICBcInRva2VuX25hbWVcIixcbiAgICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgICBcIm91dHB1dF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgXCJjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIFwiZHVyYXRpb25fbXNcIixcbiAgICAgIFwicmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIFwibW9kZWxfbmFtZVwiLFxuICAgICAgXCJmYWxsYmFja19jb3VudFwiLFxuICAgICAgXCJjb3N0X3VzZFwiLFxuICAgICAgXCJjb3N0X3NvdXJjZVwiLFxuICAgICAgXCJlcnJvcl9tZXNzYWdlXCIsXG4gICAgICBcInRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgXCJpbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgXCJpbWFnZV9jb3N0X21ldGhvZFwiLFxuICAgIF0gYXMgY29uc3Q7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZmllbGRzKSB7XG4gICAgICBpZiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkgdXBkYXRlW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5oaXN0b3J5ICE9PSB1bmRlZmluZWQpIHVwZGF0ZS5oaXN0b3J5ID0gcGFyYW1zLmhpc3Rvcnk7XG4gICAgdXBkYXRlLnR0ZnRfbXMgPSAoYXdhaXQgdGhpcy5maXJzdEdlbmVyYXRlU3RlcFR0ZnQocmVxdWVzdExvZ0lkKSkgPz8gMDtcblxuICAgIC8vIOyEnOuyhCBydW4g6rK966Gc64qUIHN0ZXAg7JeQ7IScIO2Zleygle2VnCBleGFjdCBjb3N0IOulvCDrhJjquLTri6QuIOyZuOu2gC9sZWdhY3kgY2FsbGVyIOqwgCDruYTsmqnsnYRcbiAgICAvLyDsg53rnrXtlZwg6rK97Jqw7JeQ66eMIOyggOyepeuQnCDrqqjrjbgrdXNhZ2Ug66GcIOqzhOyCsO2VnOuLpC5cbiAgICBpZiAoXG4gICAgICBwYXJhbXMuY29zdF91c2QgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFyYW1zLmlucHV0X3Rva2VucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYXJhbXMub3V0cHV0X3Rva2VucyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCByb3cgPSBhd2FpdCB0aGlzLmdldFB1cmkoXCJyXCIpXG4gICAgICAgIC5mcm9tKFwicmVxdWVzdF9sb2dzXCIpXG4gICAgICAgIC5zZWxlY3QoeyBtb2RlbF9uYW1lOiBcIm1vZGVsX25hbWVcIiB9KVxuICAgICAgICAud2hlcmUoXCJpZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAgIC5maXJzdCgpO1xuICAgICAgY29uc3QgZWZmZWN0aXZlTW9kZWxOYW1lID0gcGFyYW1zLm1vZGVsX25hbWUgPz8gcm93Py5tb2RlbF9uYW1lO1xuICAgICAgaWYgKGVmZmVjdGl2ZU1vZGVsTmFtZSkge1xuICAgICAgICBjb25zdCBtb2RlbCA9IGNhbm9uaWNhbE1vZGVsTmFtZShlZmZlY3RpdmVNb2RlbE5hbWUpO1xuICAgICAgICBjb25zdCB1c2FnZSA9IG5vcm1hbGl6ZWRVc2FnZUZvckNvc3Qoe1xuICAgICAgICAgIHRva2VuX25hbWU6IHBhcmFtcy50b2tlbl9uYW1lLFxuICAgICAgICAgIG1vZGVsX25hbWU6IGVmZmVjdGl2ZU1vZGVsTmFtZSxcbiAgICAgICAgICBpbnB1dF90b2tlbnM6IHBhcmFtcy5pbnB1dF90b2tlbnMsXG4gICAgICAgICAgb3V0cHV0X3Rva2VuczogcGFyYW1zLm91dHB1dF90b2tlbnMsXG4gICAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IHBhcmFtcy5jYWNoZV9yZWFkX3Rva2VucyA/PyAwLFxuICAgICAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogcGFyYW1zLmNhY2hlX2NyZWF0aW9uX3Rva2VucyA/PyAwLFxuICAgICAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogcGFyYW1zLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyxcbiAgICAgICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHBhcmFtcy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1cGRhdGUuY29zdF91c2QgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgIGNhbGN1bGF0ZUNvc3RVc2QobW9kZWwsIHtcbiAgICAgICAgICAgIGlucHV0VG9rZW5zOiB1c2FnZS5pbnB1dFRva2VucyxcbiAgICAgICAgICAgIG91dHB1dFRva2VuczogdXNhZ2Uub3V0cHV0VG9rZW5zLFxuICAgICAgICAgICAgY2FjaGVkSW5wdXRUb2tlbnM6IHVzYWdlLmNhY2hlZElucHV0VG9rZW5zLFxuICAgICAgICAgICAgY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zOiB1c2FnZS5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMsXG4gICAgICAgICAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bTogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zNW0sXG4gICAgICAgICAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaDogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWgsXG4gICAgICAgICAgfSkgKiAxXzAwMF8wMDAsXG4gICAgICAgICk7XG4gICAgICAgIHVwZGF0ZS5jb3N0X3NvdXJjZSA9IFwicHJpY2luZ190YWJsZVwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ3NcIiwgdXBkYXRlKTtcbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgYXdhaXQgdHJ4LnViVXBzZXJ0KFwicmVxdWVzdF9sb2dzXCIpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmlyc3RHZW5lcmF0ZVN0ZXBUdGZ0KHJlcXVlc3RMb2dJZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XG4gICAgY29uc3Qgcm93ID0gYXdhaXQgdGhpcy5nZXRQdXJpKFwiclwiKVxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKVxuICAgICAgLnNlbGVjdCh7IHR0ZnRfbXM6IFwidHRmdF9tc1wiIH0pXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19pZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAud2hlcmUoXCJ0eXBlXCIsIFwiZ2VuZXJhdGVcIilcbiAgICAgIC53aGVyZShcInR0ZnRfbXNcIiwgXCIhPVwiLCBudWxsKVxuICAgICAgLm9yZGVyQnkoXCJzdGVwX2luZGV4XCIsIFwiYXNjXCIpXG4gICAgICAub3JkZXJCeShcImlkXCIsIFwiYXNjXCIpXG4gICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gcm93Py50dGZ0X21zID09PSBudWxsIHx8IHJvdz8udHRmdF9tcyA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IE51bWJlcihyb3cudHRmdF9tcyk7XG4gIH1cblxuICBhc3luYyBhZ2dyZWdhdGVTdGVwVXNhZ2UocmVxdWVzdExvZ0lkOiBudW1iZXIpOiBQcm9taXNlPFJlcXVlc3RMb2dTdGVwQWdncmVnYXRlPiB7XG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHRoaXMuZ2V0UHVyaShcInJcIilcbiAgICAgIC5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgIC5zZWxlY3QoU1RFUF9BR0dSRUdBVEVfU0VMRUNUKVxuICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgLndoZXJlKFwidHlwZVwiLCBcImdlbmVyYXRlXCIpO1xuICAgIHJldHVybiBhZ2dyZWdhdGVHZW5lcmF0ZVN0ZXBSb3dzKHJvd3MgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBzdGFsZSBjYW5kaWRhdGVzLCB0aGVuIGV4cGlyZXMgZWFjaCBydW4gaW4gaXRzIG93biBzaG9ydCB0cmFuc2FjdGlvbi5cbiAgICogVGhlIGNhbmRpZGF0ZSBxdWVyeSBpcyBvbmx5IGEgaGludDsgdGhlIHRyYW5zYWN0aW9uYWwgb3BlcmF0aW9uIHJlY2hlY2tzIGl0XG4gICAqIGFmdGVyIGFjcXVpcmluZyB0aGUgYWR2aXNvcnkgbG9jayBzaGFyZWQgd2l0aCB0b29sIGZvbGxvdy11cHMuXG4gICAqL1xuICBhc3luYyBleHBpcmVTdGFsZVRvb2xXYWl0aW5nUnVucyhcbiAgICB0aHJlc2hvbGRNczogbnVtYmVyLFxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxMCxcbiAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHRocmVzaG9sZCA9IG5ldyBEYXRlKERhdGUubm93KCkgLSB0aHJlc2hvbGRNcyk7XG4gICAgY29uc3QgY2FuZGlkYXRlSWRzID0gYXdhaXQgdGhpcy5maW5kU3RhbGVUb29sV2FpdGluZ1J1bkNhbmRpZGF0ZXModGhyZXNob2xkLCBsaW1pdCk7XG4gICAgY29uc3QgZXhwaXJlZElkczogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlcXVlc3RMb2dJZCBvZiBjYW5kaWRhdGVJZHMpIHtcbiAgICAgIGlmIChhd2FpdCB0aGlzLnRyeUV4cGlyZVN0YWxlVG9vbFdhaXRpbmdSdW4ocmVxdWVzdExvZ0lkLCB0aHJlc2hvbGQsIGVycm9yTWVzc2FnZSkpIHtcbiAgICAgICAgZXhwaXJlZElkcy5wdXNoKHJlcXVlc3RMb2dJZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBleHBpcmVkSWRzO1xuICB9XG5cbiAgYXN5bmMgZmluZFN0YWxlVG9vbFdhaXRpbmdSdW5DYW5kaWRhdGVzKHRocmVzaG9sZDogRGF0ZSwgbGltaXQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5nZXRQdXJpKFwid1wiKVxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIilcbiAgICAgIC5qb2luKFwicmVxdWVzdF9sb2dfc3RlcHNcIiwgXCJyZXF1ZXN0X2xvZ3MuaWRcIiwgXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZXF1ZXN0X2xvZ19pZFwiKVxuICAgICAgLmRpc3RpbmN0KFwicmVxdWVzdF9sb2dzLmlkXCIpXG4gICAgICAuc2VsZWN0KHsgaWQ6IFwicmVxdWVzdF9sb2dzLmlkXCIgfSlcbiAgICAgIC53aGVyZShcInJlcXVlc3RfbG9ncy5zdGF0dXNcIiwgXCJydW5uaW5nXCIpXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsIFwidG9vbF9jYWxsXCIpXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19zdGVwcy5jcmVhdGVkX2F0XCIsIFwiPFwiLCB0aHJlc2hvbGQpXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX3Jlc3VsdFwiLCBudWxsKVxuICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIiwgbnVsbClcbiAgICAgIC5saW1pdChsaW1pdCk7XG4gICAgcmV0dXJuIHJvd3MubWFwKCh7IGlkIH0pID0+IGlkKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKHsgZGJQcmVzZXQ6IFwid1wiIH0pXG4gIGFzeW5jIHRyeUV4cGlyZVN0YWxlVG9vbFdhaXRpbmdSdW4oXG4gICAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gICAgdGhyZXNob2xkOiBEYXRlLFxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIGNvbnN0IGxvY2tSZXN1bHQgPSAoYXdhaXQgd2RiLmtuZXgucmF3KFwiU0VMRUNUIHBnX3RyeV9hZHZpc29yeV94YWN0X2xvY2soPywgPykgQVMgYWNxdWlyZWRcIiwgW1xuICAgICAgUkVRVUVTVF9MT0dfUlVOX0xPQ0tfQ0xBU1NfSUQsXG4gICAgICByZXF1ZXN0TG9nSWQsXG4gICAgXSkpIGFzIHsgcm93cz86IEFycmF5PHsgYWNxdWlyZWQ/OiBib29sZWFuIH0+IH07XG4gICAgaWYgKGxvY2tSZXN1bHQucm93cz8uWzBdPy5hY3F1aXJlZCAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gVGhlIGZvbGxvdy11cCBwYXRoIHVzZXMgdGhlIHNhbWUgd3JpdGVyIHRyYW5zYWN0aW9uIGxvY2suIFJlY2hlY2sgYWZ0ZXJcbiAgICAvLyBsb2NraW5nIHNvIGEgcmVzdWx0IGNvbW1pdHRlZCBkdXJpbmcgY2FuZGlkYXRlIGRpc2NvdmVyeSBtYWtlcyB0aGlzIGEgbm8tb3AuXG4gICAgY29uc3QgdW5yZXNvbHZlZCA9IGF3YWl0IHdkYlxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKVxuICAgICAgLnNlbGVjdCh7IGlkOiBcImlkXCIgfSlcbiAgICAgIC53aGVyZShcInJlcXVlc3RfbG9nX2lkXCIsIHJlcXVlc3RMb2dJZClcbiAgICAgIC53aGVyZShcInR5cGVcIiwgXCJ0b29sX2NhbGxcIilcbiAgICAgIC53aGVyZShcImNyZWF0ZWRfYXRcIiwgXCI8XCIsIHRocmVzaG9sZClcbiAgICAgIC53aGVyZShcInRvb2xfcmVzdWx0XCIsIG51bGwpXG4gICAgICAud2hlcmUoXCJlcnJvclwiLCBudWxsKVxuICAgICAgLmZpcnN0KCk7XG4gICAgaWYgKCF1bnJlc29sdmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwUm93cyA9IGF3YWl0IHdkYlxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKVxuICAgICAgLnNlbGVjdChTVEVQX0FHR1JFR0FURV9TRUxFQ1QpXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19pZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAud2hlcmUoXCJ0eXBlXCIsIFwiZ2VuZXJhdGVcIik7XG4gICAgY29uc3QgYWdncmVnYXRlID0gYWdncmVnYXRlR2VuZXJhdGVTdGVwUm93cyhzdGVwUm93cyBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pO1xuICAgIGNvbnN0IGZpcnN0VHRmdCA9IGF3YWl0IHdkYlxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKVxuICAgICAgLnNlbGVjdCh7IHR0ZnRfbXM6IFwidHRmdF9tc1wiIH0pXG4gICAgICAud2hlcmUoXCJyZXF1ZXN0X2xvZ19pZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAud2hlcmUoXCJ0eXBlXCIsIFwiZ2VuZXJhdGVcIilcbiAgICAgIC53aGVyZShcInR0ZnRfbXNcIiwgXCIhPVwiLCBudWxsKVxuICAgICAgLm9yZGVyQnkoXCJzdGVwX2luZGV4XCIsIFwiYXNjXCIpXG4gICAgICAub3JkZXJCeShcImlkXCIsIFwiYXNjXCIpXG4gICAgICAuZmlyc3QoKTtcblxuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB3ZGJcbiAgICAgIC5mcm9tKFwicmVxdWVzdF9sb2dzXCIpXG4gICAgICAud2hlcmUoXCJpZFwiLCByZXF1ZXN0TG9nSWQpXG4gICAgICAud2hlcmUoXCJzdGF0dXNcIiwgXCJydW5uaW5nXCIpXG4gICAgICAudXBkYXRlKHtcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXG4gICAgICAgIGVycm9yX21lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiBhZ2dyZWdhdGUuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2dyZWdhdGUub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9yZWFkX3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBhZ2dyZWdhdGUuY2FjaGVfY3JlYXRpb25fdG9rZW5zLFxuICAgICAgICAuLi4oYWdncmVnYXRlLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB7IGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogYWdncmVnYXRlLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihhZ2dyZWdhdGUuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHsgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBhZ2dyZWdhdGUuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgZHVyYXRpb25fbXM6IGFnZ3JlZ2F0ZS5kdXJhdGlvbl9tcyxcbiAgICAgICAgZmFsbGJhY2tfY291bnQ6IGFnZ3JlZ2F0ZS5mYWxsYmFja19jb3VudCxcbiAgICAgICAgY29zdF91c2Q6IGFnZ3JlZ2F0ZS5jb3N0X3VzZCxcbiAgICAgICAgLi4uKGFnZ3JlZ2F0ZS5jb3N0X3NvdXJjZSAhPT0gdW5kZWZpbmVkID8geyBjb3N0X3NvdXJjZTogYWdncmVnYXRlLmNvc3Rfc291cmNlIH0gOiB7fSksXG4gICAgICAgIHR0ZnRfbXM6XG4gICAgICAgICAgZmlyc3RUdGZ0Py50dGZ0X21zID09PSBudWxsIHx8IGZpcnN0VHRmdD8udHRmdF9tcyA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogTnVtYmVyKGZpcnN0VHRmdC50dGZ0X21zKSxcbiAgICAgIH0pO1xuICAgIHJldHVybiB1cGRhdGVkID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgbmF0aXZlIHFncmlkIHRvb2wgZm9sbG93LXVwIGFuZCBjb21wdXRlcyBpdHMgbmV4dCBzdGVwIGluZGV4IHdoaWxlXG4gICAqIGhvbGRpbmcgdGhlIHBlci1ydW4gYWR2aXNvcnkgbG9jayBzaGFyZWQgd2l0aCBzdGFsZSBjbGVhbnVwLlxuICAgKi9cbiAgQHRyYW5zYWN0aW9uYWwoeyBkYlByZXNldDogXCJ3XCIgfSlcbiAgYXN5bmMgY29udGludWVUb29sUnVuKFxuICAgIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICAgIHRvb2xSZXN1bHRzOiBUb29sUmVzdWx0Q29udGludWF0aW9uW10sXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcbiAgICBhd2FpdCB3ZGIua25leC5yYXcoXCJTRUxFQ1QgcGdfYWR2aXNvcnlfeGFjdF9sb2NrKD8sID8pXCIsIFtcbiAgICAgIFJFUVVFU1RfTE9HX1JVTl9MT0NLX0NMQVNTX0lELFxuICAgICAgcmVxdWVzdExvZ0lkLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcnVuID0gYXdhaXQgd2RiXG4gICAgICAuZnJvbShcInJlcXVlc3RfbG9nc1wiKVxuICAgICAgLnNlbGVjdCh7IHN0YXR1czogXCJzdGF0dXNcIiB9KVxuICAgICAgLndoZXJlKFwiaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgLmZpcnN0KCk7XG4gICAgaWYgKCFydW4pIHRocm93IG5ldyBFcnJvcihgcmVxdWVzdCBsb2cgcnVuICR7cmVxdWVzdExvZ0lkfSBub3QgZm91bmRgKTtcbiAgICBpZiAocnVuLnN0YXR1cyAhPT0gXCJydW5uaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcmVxdWVzdCBsb2cgcnVuICR7cmVxdWVzdExvZ0lkfSBpcyBhbHJlYWR5ICR7cnVuLnN0YXR1c31gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiB0b29sUmVzdWx0cykge1xuICAgICAgYXdhaXQgd2RiXG4gICAgICAgIC5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgICAud2hlcmUoXCJ0b29sX2NhbGxfaWRcIiwgcmVzdWx0LnRvb2xDYWxsSWQpXG4gICAgICAgIC53aGVyZShcInR5cGVcIiwgXCJ0b29sX2NhbGxcIilcbiAgICAgICAgLnVwZGF0ZShyZXN1bHQuaXNFcnJvciA/IHsgZXJyb3I6IHJlc3VsdC5vdXRwdXQgfSA6IHsgdG9vbF9yZXN1bHQ6IHJlc3VsdC5vdXRwdXQgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm93ID0gYXdhaXQgd2RiXG4gICAgICAuZnJvbShcInJlcXVlc3RfbG9nX3N0ZXBzXCIpXG4gICAgICAuc2VsZWN0KHsgbWF4X3N0ZXA6IFB1cmkubWF4KFwic3RlcF9pbmRleFwiKSB9KVxuICAgICAgLndoZXJlKFwicmVxdWVzdF9sb2dfaWRcIiwgcmVxdWVzdExvZ0lkKVxuICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIChyb3c/Lm1heF9zdGVwID8/IC0xKSArIDE7XG4gIH1cblxuICAvLyBTb25hbXUgZmluZE1hbnnripQgc3Vic2V0IOyghOyytCDsu6zrn7wodGV4dCDtj6ztlagp7J2EIO2OmOy5mO2VmOuvgOuhnCDruYTsmqkg6rOE7IKw7JeQIO2VhOyalO2VnCDsu6zrn7zrp4wg7KGw7ZqM7ZWc64ukLlxuICBhc3luYyB0b3RhbENvc3QocGFyYW1zOiB7IHRva2VuX25hbWU/OiBzdHJpbmcgfSA9IHt9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAvLyDquLDsobQgY29zdF91c2Qg7JeQ64qUIOqzvOqxsCBBbnRocm9waWMgY2FjaGUg6rOE7IKwIOuyhOq3uOuhnCDsnYzsiJjqsIAg7KCA7J6l65CcIHJvdyDqsIAg7J6I7J2EIOyImCDsnojri6QuXG4gICAgLy8g7ZmU66m0IOynkeqzhOuKlCDsoIDsnqXqsJIgc3VtIOydtCDslYTri4jrnbwg7ZiE7J6sIOqzhOyCsOyLneycvOuhnCB1c2FnZSDrpbwg7J6s6rOE7IKw7ZW0IOqzvOqxsCDroZzqt7jrj4Qg7KaJ7IucIOuztOygle2VnOuLpC5cbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5nZXRQdXJpKFwiclwiKVxuICAgICAgLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIilcbiAgICAgIC53aGVyZShwYXJhbXMudG9rZW5fbmFtZSA/IHsgdG9rZW5fbmFtZTogcGFyYW1zLnRva2VuX25hbWUgfSA6IHt9KVxuICAgICAgLnNlbGVjdCh7XG4gICAgICAgIG1vZGVsX25hbWU6IFwibW9kZWxfbmFtZVwiLFxuICAgICAgICBpbnB1dF90b2tlbnM6IFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgICAgIG91dHB1dF90b2tlbnM6IFwib3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJjYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJjYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcImNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgICBjb3N0X3VzZDogXCJjb3N0X3VzZFwiLFxuICAgICAgICBjb3N0X3NvdXJjZTogXCJjb3N0X3NvdXJjZVwiLFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gcm93cy5yZWR1Y2UoKHN1bSwgcm93KSA9PiB7XG4gICAgICAvLyBjb3N0X3NvdXJjZSDqsIAg7J6I7Jy866m0IOyDiCDqs4Tslb3snLzroZwg7ZmV7KCVIOyggOyepeuQnCDqsJLsnbTri6QuIO2UhOuhnOuqqOyFmC/qsIDqsqkg67OA6rK9IOydtO2bhOyXkOuPhFxuICAgICAgLy8g64u57IucIOu5hOyaqeydhCDsnKDsp4DtlZzri6QuIE5VTEzsnbggbGVnYWN5IHJvdyDrp4wg7ZiE7J6sIOqwgOqyqe2RnOuhnCDrs7TsoJXtlZzri6QuXG4gICAgICBpZiAocm93LmNvc3Rfc291cmNlICYmIHJvdy5jb3N0X3VzZCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gc3VtICsgTWF0aC5tYXgocm93LmNvc3RfdXNkLCAwKSAvIE1JQ1JPX1VTRDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVzYWdlID0gbm9ybWFsaXplZFVzYWdlRm9yQ29zdChyb3cpO1xuICAgICAgaWYgKCF1c2FnZS5tb2RlbCkgcmV0dXJuIHN1bSArIE1hdGgubWF4KHJvdy5jb3N0X3VzZCA/PyAwLCAwKSAvIE1JQ1JPX1VTRDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHN1bSArXG4gICAgICAgIGNhbGN1bGF0ZUNvc3RVc2QodXNhZ2UubW9kZWwsIHtcbiAgICAgICAgICBpbnB1dFRva2VuczogdXNhZ2UuaW5wdXRUb2tlbnMsXG4gICAgICAgICAgb3V0cHV0VG9rZW5zOiB1c2FnZS5vdXRwdXRUb2tlbnMsXG4gICAgICAgICAgY2FjaGVkSW5wdXRUb2tlbnM6IHVzYWdlLmNhY2hlZElucHV0VG9rZW5zLFxuICAgICAgICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zLFxuICAgICAgICAgIGNhY2hlQ3JlYXRpb25JbnB1dFRva2VuczVtOiB1c2FnZS5jYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnM1bSxcbiAgICAgICAgICBjYWNoZUNyZWF0aW9uSW5wdXRUb2tlbnMxaDogdXNhZ2UuY2FjaGVDcmVhdGlvbklucHV0VG9rZW5zMWgsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0sIDApO1xuICB9XG5cbiAgYXN5bmMgZGlzdGluY3RQcm9qZWN0TmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmdldFB1cmkoXCJyXCIpXG4gICAgICAuZnJvbShcInJlcXVlc3RfbG9nc1wiKVxuICAgICAgLmRpc3RpbmN0KFwicHJvamVjdF9uYW1lXCIpXG4gICAgICAud2hlcmUoXCJwcm9qZWN0X25hbWVcIiwgXCIhPVwiLCBudWxsKVxuICAgICAgLm9yZGVyQnkoXCJwcm9qZWN0X25hbWVcIiwgXCJhc2NcIilcbiAgICAgIC5zZWxlY3Qoe1xuICAgICAgICBwcm9qZWN0X25hbWU6IFwicHJvamVjdF9uYW1lXCIsXG4gICAgICB9KTtcbiAgICByZXR1cm4gcm93cy5tYXAoKHIpID0+IHIucHJvamVjdF9uYW1lISk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgZGVsKGlkczogbnVtYmVyW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIGF3YWl0IHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBhd2FpdCB0cnhcbiAgICAgICAgLnRhYmxlKFwicmVxdWVzdF9sb2dfc3RlcHNcIilcbiAgICAgICAgLndoZXJlSW4oXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZXF1ZXN0X2xvZ19pZFwiLCBpZHMpXG4gICAgICAgIC5kZWxldGUoKTtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCJyZXF1ZXN0X2xvZ3NcIikud2hlcmVJbihcInJlcXVlc3RfbG9ncy5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dNb2RlbCA9IG5ldyBSZXF1ZXN0TG9nTW9kZWxDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBbUJBLE1BQWEsWUFBWTtBQUN6QixNQUFNLGdDQUFnQztBQXFCdEMsTUFBTSx3QkFBd0I7Q0FDNUIsY0FBYztDQUNkLGVBQWU7Q0FDZixtQkFBbUI7Q0FDbkIsdUJBQXVCO0NBQ3ZCLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixVQUFVO0NBQ1YsYUFBYTtBQUNmO0FBRUEsU0FBUywwQkFBMEIsTUFBK0Q7Q0FDaEcsTUFBTSxPQUFPLFVBQ1gsS0FBSyxRQUFRLE9BQU8sUUFBUSxRQUFRLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO0NBQ2hFLE1BQU0sZUFBZSxVQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsUUFBUSxJQUFJLFdBQVcsTUFBUyxJQUFJLElBQUksS0FB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
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import { RequestLogBaseListParams, RequestLogBaseSchema } from "../sonamu.generated.js";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
//#region src/application/request-log/request-log.types.ts
|
|
@@ -25,4 +24,4 @@ const RequestLogSaveParams = RequestLogBaseSchema.partial({
|
|
|
25
24
|
//#endregion
|
|
26
25
|
export { HistoryItems, RequestLogListParams, RequestLogSaveParams };
|
|
27
26
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IFJlcXVlc3RMb2dCYXNlTGlzdFBhcmFtcywgUmVxdWVzdExvZ0Jhc2VTY2hlbWEgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG5leHBvcnQgY29uc3QgSGlzdG9yeUl0ZW1zID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgcm9sZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbnRlbnQ6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvdXRwdXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4pO1xuZXhwb3J0IHR5cGUgSGlzdG9yeUl0ZW1zID0gei5pbmZlcjx0eXBlb2YgSGlzdG9yeUl0ZW1zPjtcblxuLy8gUmVxdWVzdExvZyAtIExpc3RQYXJhbXNcbi8vIHByb2plY3RfbmFtZSBOVUxMIOu2hOq4sDogSVMgTlVMTOunjCDsobDtmowodW5hc3NpZ25lZCDtlYTthLApIOuYkOuKlCBJUyBOT1QgTlVMTOunjChkaXN0aW5jdCDsobDtmowpLlxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dMaXN0UGFyYW1zID0gUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zLmV4dGVuZCh7XG4gIHByb2plY3RfbmFtZV9pc19udWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwcm9qZWN0X25hbWVfaXNfbm90X251bGw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0xpc3RQYXJhbXM+O1xuXG4vLyBSZXF1ZXN0TG9nIC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTYXZlUGFyYW1zID0gUmVxdWVzdExvZ0Jhc2VTY2hlbWEucGFydGlhbCh7XG4gIGlkOiB0cnVlLFxuICBjcmVhdGVkX2F0OiB0cnVlLFxuICB0b2tlbl9uYW1lOiB0cnVlLFxuICBzdGF0dXM6IHRydWUsXG4gIGVycm9yX21lc3NhZ2U6IHRydWUsXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTYXZlUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1NhdmVQYXJhbXM+
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IFJlcXVlc3RMb2dCYXNlTGlzdFBhcmFtcywgUmVxdWVzdExvZ0Jhc2VTY2hlbWEgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG5leHBvcnQgY29uc3QgSGlzdG9yeUl0ZW1zID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgcm9sZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbnRlbnQ6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvdXRwdXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4pO1xuZXhwb3J0IHR5cGUgSGlzdG9yeUl0ZW1zID0gei5pbmZlcjx0eXBlb2YgSGlzdG9yeUl0ZW1zPjtcblxuLy8gUmVxdWVzdExvZyAtIExpc3RQYXJhbXNcbi8vIHByb2plY3RfbmFtZSBOVUxMIOu2hOq4sDogSVMgTlVMTOunjCDsobDtmowodW5hc3NpZ25lZCDtlYTthLApIOuYkOuKlCBJUyBOT1QgTlVMTOunjChkaXN0aW5jdCDsobDtmowpLlxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dMaXN0UGFyYW1zID0gUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zLmV4dGVuZCh7XG4gIHByb2plY3RfbmFtZV9pc19udWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwcm9qZWN0X25hbWVfaXNfbm90X251bGw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0xpc3RQYXJhbXM+O1xuXG4vLyBSZXF1ZXN0TG9nIC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTYXZlUGFyYW1zID0gUmVxdWVzdExvZ0Jhc2VTY2hlbWEucGFydGlhbCh7XG4gIGlkOiB0cnVlLFxuICBjcmVhdGVkX2F0OiB0cnVlLFxuICB0b2tlbl9uYW1lOiB0cnVlLFxuICBzdGF0dXM6IHRydWUsXG4gIGVycm9yX21lc3NhZ2U6IHRydWUsXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTYXZlUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1NhdmVQYXJhbXM+O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLGVBQWUsRUFBRSxNQUM1QixFQUFFLE9BQU87Q0FDUCxNQUFNLEVBQUUsT0FBTztDQUNmLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzFCLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTO0NBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzFCLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQy9CLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzdCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0FBQzlCLENBQUMsQ0FDSDtBQUtBLE1BQWEsdUJBQXVCLHlCQUF5QixPQUFPO0NBQ2xFLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVM7Q0FDM0MsMEJBQTBCLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUztBQUNqRCxDQUFDO0FBSUQsTUFBYSx1QkFBdUIscUJBQXFCLFFBQVE7Q0FDL0QsSUFBSTtDQUNKLFlBQVk7Q0FDWixZQUFZO0NBQ1osUUFBUTtDQUNSLGVBQWU7QUFDakIsQ0FBQyJ9
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import { SD } from "../../i18n/sd.generated.js";
|
|
3
2
|
import { requestLogStepLoaderQueries, requestLogStepSubsetQueries } from "../sonamu.generated.sso.js";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorateMetadata.js";
|
|
4
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
|
|
6
5
|
import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
|
|
7
6
|
//#region src/application/request-log-step/request-log-step.model.ts
|
|
8
7
|
var RequestLogStepModelClass = class extends BaseModelClass {
|
|
@@ -112,4 +111,4 @@ const RequestLogStepModel = new RequestLogStepModelClass();
|
|
|
112
111
|
//#endregion
|
|
113
112
|
export { RequestLogStepModel };
|
|
114
113
|
|
|
115
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2ctc3RlcC5tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcmVxdWVzdC1sb2ctc3RlcC9yZXF1ZXN0LWxvZy1zdGVwLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VNb2RlbENsYXNzLFxuICB0eXBlIExpc3RSZXN1bHQsXG4gIGFzQXJyYXksXG4gIE5vdEZvdW5kRXhjZXB0aW9uLFxuICBCYWRSZXF1ZXN0RXhjZXB0aW9uLFxuICBhcGksXG4gIGV4aGF1c3RpdmUsXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXksXG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzLCByZXF1ZXN0TG9nU3RlcExvYWRlclF1ZXJpZXMgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zLFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU2F2ZVBhcmFtcyxcbn0gZnJvbSBcIi4vcmVxdWVzdC1sb2ctc3RlcC50eXBlc1wiO1xuXG4vKlxuICBSZXF1ZXN0TG9nU3RlcCBNb2RlbFxuKi9cbmNsYXNzIFJlcXVlc3RMb2dTdGVwTW9kZWxDbGFzcyBleHRlbmRzIEJhc2VNb2RlbENsYXNzPFxuICBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleSxcbiAgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nLFxuICB0eXBlb2YgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzLFxuICB0eXBlb2YgcmVxdWVzdExvZ1N0ZXBMb2FkZXJRdWVyaWVzXG4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJSZXF1ZXN0TG9nU3RlcFwiLCByZXF1ZXN0TG9nU3RlcFN1YnNldFF1ZXJpZXMsIHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlJlcXVlc3RMb2dTdGVwXCIgfSlcbiAgYXN5bmMgZmluZEJ5SWQ8VCBleHRlbmRzIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3RlcFN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlJlcXVlc3RMb2dTdGVwXCIsIGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6IFJlcXVlc3RMb2dTdGVwTGlzdFBhcmFtcyxcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3RlcFN1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJSZXF1ZXN0TG9nU3RlcHNcIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXksIExQIGV4dGVuZHMgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIC8vIHBhcmFtcyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwiaWQtYXNjXCIgYXMgY29uc3QsXG4gICAgICAuLi5yYXdQYXJhbXMsXG4gICAgfSBzYXRpc2ZpZXMgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zO1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBhc0FycmF5KHBhcmFtcy5pZCkpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMucmVxdWVzdF9sb2dfaWQpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdF9sb2dfaWRcIiwgcGFyYW1zLnJlcXVlc3RfbG9nX2lkKTtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2gta2V5d29yZFxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5rZXl3b3JkICYmIHBhcmFtcy5rZXl3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImlkXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBOdW1iZXIocGFyYW1zLmtleXdvcmQpKTtcbiAgICAgICAgLy8gfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImZpZWxkXCIpIHtcbiAgICAgICAgLy8gICBxYi53aGVyZShcInJlcXVlc3RfbG9nX3N0ZXBzLmZpZWxkXCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIGlmIChwYXJhbXMub3JkZXJCeSA9PT0gXCJpZC1hc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLCBcImFzY1wiKVxuICAgICAgICAgIC5vcmRlckJ5KFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2luZGV4XCIsIFwiYXNjXCIpXG4gICAgICAgICAgLm9yZGVyQnkoXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBcImFzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgIEE6IChyb3cpID0+
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2ctc3RlcC5tb2RlbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcmVxdWVzdC1sb2ctc3RlcC9yZXF1ZXN0LWxvZy1zdGVwLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VNb2RlbENsYXNzLFxuICB0eXBlIExpc3RSZXN1bHQsXG4gIGFzQXJyYXksXG4gIE5vdEZvdW5kRXhjZXB0aW9uLFxuICBCYWRSZXF1ZXN0RXhjZXB0aW9uLFxuICBhcGksXG4gIGV4aGF1c3RpdmUsXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXksXG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzLCByZXF1ZXN0TG9nU3RlcExvYWRlclF1ZXJpZXMgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zLFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU2F2ZVBhcmFtcyxcbn0gZnJvbSBcIi4vcmVxdWVzdC1sb2ctc3RlcC50eXBlc1wiO1xuXG4vKlxuICBSZXF1ZXN0TG9nU3RlcCBNb2RlbFxuKi9cbmNsYXNzIFJlcXVlc3RMb2dTdGVwTW9kZWxDbGFzcyBleHRlbmRzIEJhc2VNb2RlbENsYXNzPFxuICBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleSxcbiAgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nLFxuICB0eXBlb2YgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzLFxuICB0eXBlb2YgcmVxdWVzdExvZ1N0ZXBMb2FkZXJRdWVyaWVzXG4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJSZXF1ZXN0TG9nU3RlcFwiLCByZXF1ZXN0TG9nU3RlcFN1YnNldFF1ZXJpZXMsIHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlJlcXVlc3RMb2dTdGVwXCIgfSlcbiAgYXN5bmMgZmluZEJ5SWQ8VCBleHRlbmRzIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3RlcFN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlJlcXVlc3RMb2dTdGVwXCIsIGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6IFJlcXVlc3RMb2dTdGVwTGlzdFBhcmFtcyxcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3RlcFN1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJSZXF1ZXN0TG9nU3RlcHNcIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXksIExQIGV4dGVuZHMgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIC8vIHBhcmFtcyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwiaWQtYXNjXCIgYXMgY29uc3QsXG4gICAgICAuLi5yYXdQYXJhbXMsXG4gICAgfSBzYXRpc2ZpZXMgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zO1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBhc0FycmF5KHBhcmFtcy5pZCkpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMucmVxdWVzdF9sb2dfaWQpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdF9sb2dfaWRcIiwgcGFyYW1zLnJlcXVlc3RfbG9nX2lkKTtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2gta2V5d29yZFxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5rZXl3b3JkICYmIHBhcmFtcy5rZXl3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImlkXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBOdW1iZXIocGFyYW1zLmtleXdvcmQpKTtcbiAgICAgICAgLy8gfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImZpZWxkXCIpIHtcbiAgICAgICAgLy8gICBxYi53aGVyZShcInJlcXVlc3RfbG9nX3N0ZXBzLmZpZWxkXCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIGlmIChwYXJhbXMub3JkZXJCeSA9PT0gXCJpZC1hc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLCBcImFzY1wiKVxuICAgICAgICAgIC5vcmRlckJ5KFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2luZGV4XCIsIFwiYXNjXCIpXG4gICAgICAgICAgLm9yZGVyQnkoXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLCBcImFzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgIEE6IChyb3cpID0+ICh7XG4gICAgICAgIC4uLnJvdyxcbiAgICAgICAgLy8g7ISc67iM7IWL67OE66GcIHZpcnR1YWwg7ZWE65OcIOqzhOyCsOuhnOyngSDstpTqsIBcbiAgICAgIH0pLFxuICAgICAgVDogKHJvdykgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXMsXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgc2F2ZShzcGE6IFJlcXVlc3RMb2dTdGVwU2F2ZVBhcmFtc1tdKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyByZWdpc3RlclxuICAgIHNwYS5mb3JFYWNoKChzcCkgPT4ge1xuICAgICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ19zdGVwc1wiLCBzcCk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgY29uc3QgaWRzID0gYXdhaXQgdHJ4LnViVXBzZXJ0KFwicmVxdWVzdF9sb2dfc3RlcHNcIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0sIGd1YXJkczogW1wiYWRtaW5cIl0gfSlcbiAgYXN5bmMgZGVsKGlkczogbnVtYmVyW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIGF3YWl0IHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICByZXR1cm4gdHJ4LnRhYmxlKFwicmVxdWVzdF9sb2dfc3RlcHNcIikud2hlcmVJbihcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsIGlkcykuZGVsZXRlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWRzLmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBNb2RlbCA9IG5ldyBSZXF1ZXN0TG9nU3RlcE1vZGVsQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBd0JBLElBQU0sMkJBQU4sY0FBdUMsZUFLckM7Q0FDQSxjQUFjO0VBQ1osTUFBTSxrQkFBa0IsNkJBQTZCLDJCQUEyQjtDQUNsRjtDQUVBLE1BQ00sU0FDSixRQUNBLElBQ3lDO0VBQ3pDLE1BQU0sRUFBRSxTQUFTLE1BQU0sS0FBSyxTQUFTLFFBQVE7R0FDM0M7R0FDQSxLQUFLO0dBQ0wsTUFBTTtFQUNSLENBQUM7RUFDRCxJQUFJLENBQUMsS0FBSyxJQUNSLE1BQU0sSUFBSSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7RUFHOUUsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxNQUFNLFFBQ0osUUFDQSxZQUNnRDtFQUNoRCxNQUFNLEVBQUUsU0FBUyxNQUFNLEtBQUssU0FBUyxRQUFRO0dBQzNDLEdBQUc7R0FDSCxLQUFLO0dBQ0wsTUFBTTtFQUNSLENBQUM7RUFFRCxPQUFPLEtBQUssTUFBTTtDQUNwQjtDQUVBLE1BQ00sU0FDSixRQUNBLFdBQ3lEO0VBRXpELE1BQU0sU0FBUztHQUNiLEtBQUs7R0FDTCxNQUFNO0dBQ04sUUFBUTtHQUNSLFNBQVM7R0FDVCxHQUFHO0VBQ0w7RUFHQSxNQUFNLEVBQUUsSUFBSSxVQUFVLE1BQU0sS0FBSyxpQkFBaUIsTUFBTTtFQUV4RCxJQUFJLE9BQU8sSUFDVCxHQUFHLFFBQVEsd0JBQXdCLFFBQVEsT0FBTyxFQUFFLENBQUM7RUFHdkQsSUFBSSxPQUFPLGdCQUNULEdBQUcsTUFBTSxvQ0FBb0MsT0FBTyxjQUFjO0VBSXBFLElBQUksT0FBTyxVQUFVLE9BQU8sV0FBVyxPQUFPLFFBQVEsU0FBUyxHQUM3RCxJQUFJLE9BQU8sV0FBVyxNQUNwQixHQUFHLE1BQU0sd0JBQXdCLE9BQU8sT0FBTyxPQUFPLENBQUM7T0FJdkQsTUFBTSxJQUFJLG9CQUFvQixHQUFHLDBCQUEwQixDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7RUFLL0UsSUFBSSxPQUFPLFNBQ1QsSUFBSSxPQUFPLFlBQVksVUFDckIsR0FBRyxRQUFRLGdDQUFnQyxLQUFLLENBQUMsQ0FDOUMsUUFBUSxxQ0FBcUMsS0FBSyxDQUFDLENBQ25ELFFBQVEsd0JBQXdCLEtBQUs7T0FFeEMsV0FBVyxPQUFPLE9BQU87RUFJN0IsTUFBTSxZQUFZLEtBQUssZ0JBQWdCO0dBQ3JDLElBQUksU0FBUyxFQUNYLEdBQUcsSUFFTDtHQUNBLElBQUksU0FBUyxFQUNYLEdBQUcsSUFDTDtFQUNGLENBQUM7RUFFRCxPQUFPLEtBQUssbUJBQW1CO0dBQzdCO0dBQ0E7R0FDQTtHQUNBO0dBQ0EsT0FBTztFQUNULENBQUM7Q0FDSDtDQUVBLE1BQ00sS0FBSyxLQUFvRDtFQUM3RCxNQUFNLE1BQU0sS0FBSyxRQUFRLEdBQUc7RUFHNUIsSUFBSSxTQUFTLE9BQU87R0FDbEIsSUFBSSxXQUFXLHFCQUFxQixFQUFFO0VBQ3hDLENBQUM7RUFHRCxPQUFPLElBQUksWUFBWSxPQUFPLFFBQVE7R0FHcEMsT0FBTyxNQUZXLElBQUksU0FBUyxtQkFBbUI7RUFHcEQsQ0FBQztDQUNIO0NBRUEsTUFDTSxJQUFJLEtBQWdDO0VBSXhDLE1BSFksS0FBSyxRQUFRLEdBR25CLENBQUEsQ0FBSSxZQUFZLE9BQU8sUUFBUTtHQUNuQyxPQUFPLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE9BQU87RUFDcEYsQ0FBQztFQUVELE9BQU8sSUFBSTtDQUNiO0FBQ0Y7O0NBNUhHLElBQUk7RUFBRSxZQUFZO0VBQU8sU0FBUyxDQUFDLFNBQVMsZ0JBQWdCO0VBQUcsY0FBYztDQUFpQixDQUFDOzs7Ozs7Q0E4Qi9GLElBQUk7RUFBRSxZQUFZO0VBQU8sU0FBUyxDQUFDLFNBQVMsZ0JBQWdCO0VBQUcsY0FBYztDQUFrQixDQUFDOzs7Ozs7Q0FrRWhHLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsbUJBQW1CO0NBQUUsQ0FBQzs7Ozs7O0NBaUJuRSxJQUFJO0VBQUUsWUFBWTtFQUFRLFNBQVMsQ0FBQyxTQUFTLG1CQUFtQjtFQUFHLFFBQVEsQ0FBQyxPQUFPO0NBQUUsQ0FBQzs7Ozs7QUFhekYsTUFBYSxzQkFBc0IsSUFBSSx5QkFBeUIifQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import { RequestLogStepBaseListParams, RequestLogStepBaseSchema } from "../sonamu.generated.js";
|
|
3
2
|
//#region src/application/request-log-step/request-log-step.types.ts
|
|
4
3
|
const RequestLogStepListParams = RequestLogStepBaseListParams;
|
|
@@ -32,4 +31,4 @@ const RequestLogStepSaveParams = RequestLogStepBaseSchema.partial({
|
|
|
32
31
|
//#endregion
|
|
33
32
|
export { RequestLogStepListParams, RequestLogStepSaveParams };
|
|
34
33
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2ctc3RlcC50eXBlcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcmVxdWVzdC1sb2ctc3RlcC9yZXF1ZXN0LWxvZy1zdGVwLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgUmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hLCBSZXF1ZXN0TG9nU3RlcEJhc2VMaXN0UGFyYW1zIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gUmVxdWVzdExvZ1N0ZXAgLSBMaXN0UGFyYW1zXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBMaXN0UGFyYW1zID0gUmVxdWVzdExvZ1N0ZXBCYXNlTGlzdFBhcmFtcztcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwTGlzdFBhcmFtcz47XG5cbi8vIFJlcXVlc3RMb2dTdGVwIC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU2F2ZVBhcmFtcyA9IFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYS5wYXJ0aWFsKHtcbiAgaWQ6IHRydWUsXG4gIGNyZWF0ZWRfYXQ6IHRydWUsXG4gIHJlcXVlc3RfbG9nX2lkOiB0cnVlLFxuICBtb2RlbF9uYW1lOiB0cnVlLFxuICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogdHJ1ZSxcbiAgZmFsbGJhY2tfY291bnQ6IHRydWUsXG4gIGlucHV0X3Rva2VuczogdHJ1ZSxcbiAgb3V0cHV0X3Rva2VuczogdHJ1ZSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHRydWUsXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogdHJ1ZSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB0cnVlLFxuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHRydWUsXG4gIGNvc3RfdXNkOiB0cnVlLFxuICBjb3N0X3NvdXJjZTogdHJ1ZSxcbiAgZHVyYXRpb25fbXM6IHRydWUsXG4gIGZpbmlzaF9yZWFzb246IHRydWUsXG4gIHJlYXNvbmluZ190ZXh0OiB0cnVlLFxuICByZWFzb25pbmdfdG9rZW5zOiB0cnVlLFxuICB0b29sX2NhbGxfaW5kZXg6IHRydWUsXG4gIHRvb2xfY2FsbF9pZDogdHJ1ZSxcbiAgdG9vbF9uYW1lOiB0cnVlLFxuICB0b29sX2FyZ3M6IHRydWUsXG4gIHRvb2xfcmVzdWx0OiB0cnVlLFxuICB0b29sX2R1cmF0aW9uX21zOiB0cnVlLFxuICBlcnJvcjogdHJ1ZSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBTYXZlUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N0ZXBTYXZlUGFyYW1zPjtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFhLDJCQUEyQjtBQUl4QyxNQUFhLDJCQUEyQix5QkFBeUIsUUFBUTtDQUN2RSxJQUFJO0NBQ0osWUFBWTtDQUNaLGdCQUFnQjtDQUNoQixZQUFZO0NBQ1osc0JBQXNCO0NBQ3RCLGdCQUFnQjtDQUNoQixjQUFjO0NBQ2QsZUFBZTtDQUNmLG1CQUFtQjtDQUNuQix1QkFBdUI7Q0FDdkIsMEJBQTBCO0NBQzFCLDBCQUEwQjtDQUMxQixVQUFVO0NBQ1YsYUFBYTtDQUNiLGFBQWE7Q0FDYixlQUFlO0NBQ2YsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtDQUNsQixpQkFBaUI7Q0FDakIsY0FBYztDQUNkLFdBQVc7Q0FDWCxXQUFXO0NBQ1gsYUFBYTtDQUNiLGtCQUFrQjtDQUNsQixPQUFPO0FBQ1QsQ0FBQyJ9
|